* [ANNOUNCE] Git v2.45.0
@ 2024-04-29 17:12 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-04-29 17:12 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.45.0 is now available at the
usual places. It is comprised of 540 non-merge commits since
v2.44.0, contributed by 96 people, 38 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.45.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.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, Kisaragi Hiu, Marcel Röthke,
Matthew Rollings, Max Gautier, mirth hickford, Paweł Dominiak,
Pi Fisher, Ralph Seichter, Richard Macklin, shejialuo, Steven
Jeuris, Thalia Archibald, Tiago Pascoal, Vincenzo Mezzela,
Vũ Tiến Hưng, Xing Xin, and Yehezkel Bernat.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Shopov, Arkadii Yakovets, Bagas Sanjaya, Beat Bolli,
brian m. carlson, Chandra Pratap, Christian Couder, Derrick
Stolee, Đoàn Trần Công Danh, Dragan Simic, Elijah Newren,
Emir SARI, Eric Sunshine, Eric W. Biederman, Ghanshyam Thakkar,
Han Young, Jakub Wilk, Jean-Noël Avila, Jeff Hostetler, Jeff
King, Jiang Xin, Johannes Schindelin, Johannes Sixt, John Cai,
Josh Steadmon, Josh Triplett, Junio C Hamano, Justin Tobler,
Karthik Nayak, Kate Golovanova, Kristoffer Haugsbakk, Kyle
Lippincott, Kyle Meyer, Linus Arver, Lumynous, Manlio Perillo,
Matthias Aßhauer, Matthias Rüster, M Hickford, Michael Lohmann,
Michael Osipov, Mike Hommey, Orgad Shaneh, Patrick Steinhardt,
Peter Hutterer, Peter Krefting, Philippe Blain, Phillip Wood,
Ralf Thielow, René Scharfe, Rubén Justo, Sergey Organov,
SZEDER Gábor, Taylor Blau, Teng Long, Ville Skyttä, Yasushi
SHOJI, 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.45 Release Notes
=======================
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 defers the decision of
whether and how to pack to the ref backend. This is used by the reftable
backend to avoid repacking of an already-optimal ref database. The new mode
is 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.
* Git writes a "waiting for your editor" message on an incomplete
line after launching an editor, and then append another error
message on the same line if the editor errors out. It now clears
the "waiting for..." line before giving the error message.
* The filename used for rejected hunks "git apply --reject" creates
was limited to PATH_MAX, which has been lifted.
* When "git bisect" reports the commit it determined to be the
culprit, we used to show it in a format that does not honor common
UI tweaks, like log.date and log.decorate. The code has been
taught to use "git show" to follow more customizations.
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-brackets> 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.
* 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.
* The code to iterate over reftable blocks has seen some optimization
to reduce memory allocation and deallocation.
* The way "git fast-import" handles paths described in its input has
been tightened up and more clearly documented.
* The cvsimport tests required that the platform understands
traditional timezone notations like CST6CDT, which has been
updated to work on those systems as long as they understand
POSIX notation with explicit tz transition dates.
* The code to format trailers have been cleaned up.
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 trailing 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 have 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 messages can fall into an
endless loop, which has been corrected.
(merge 2541cba2d6 fs/find-end-of-log-message-fix later to maint).
* Mark-up 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 used 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).
* Git 2.44 introduced a regression that makes the updated code to
barf in repositories with multi-pack index written by older
versions of Git, which has been corrected.
* When .git/rr-cache/ rerere database gets corrupted or rerere is fed to
work on a file with conflicted hunks resolved incompletely, the rerere
machinery got confused and segfaulted, which has been corrected.
(merge 167395bb47 mr/rerere-crash-fix later to maint).
* The "receive-pack" program (which responds to "git push") was not
converted to run "git maintenance --auto" when other codepaths that
used to run "git gc --auto" were updated, which has been corrected.
(merge 7bf3057d9c ps/run-auto-maintenance-in-receive-pack 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).
(merge 44bdba2fa6 rs/no-openssl-compilation-fix-on-macos later to maint).
(merge f412d72c19 yb/replay-doc-linkfix later to maint).
(merge 5da40be8d7 xx/rfc2822-date-format-in-doc later to maint).
----------------------------------------------------------------
Changes since v2.44.0 are as follows:
Ahelenia Ziemiańska (1):
grep: improve errors for unmatched ( and )
Alexander Shopov (5):
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
l10n: bg.po: Updated Bulgarian translation (5652t)
Arkadii Yakovets (1):
l10n: uk: v2.45 update
Aryan Gupta (1):
tests: modernize the test script t0010-racy-git.sh
Bagas Sanjaya (1):
l10n: po-id for 2.45
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
Emir SARI (1):
l10n: tr: Update Turkish translations
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 (18):
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
l10n: fr: v2.45.0
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
Jiang Xin (1):
l10n: TEAMS: retire l10n teams no update in 1 year
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 (64):
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
A bit more topics before -rc1
Git 2.45-rc1
Git 2.45
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 (15):
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()
format_trailer_info(): use trailer_item objects
format_trailer_info(): drop redundant unfold_value()
format_trailer_info(): append newline for non-trailer lines
trailer: begin formatting unification
trailer: finish formatting unification
mailmap: change primary address for Linus Arver
M Hickford (1):
libsecret: retrieve empty password
Marcel Röthke (1):
rerere: fix crashes due to unmatched opening conflict markers
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
Orgad Shaneh (1):
docs: remove duplicate entry and fix typo in 2.45 changelog
Patrick Steinhardt (99):
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
reftable/block: rename `block_reader_start()`
reftable/block: merge `block_iter_seek()` and `block_reader_seek()`
reftable/block: better grouping of functions
reftable/block: introduce `block_reader_release()`
reftable/block: move ownership of block reader into `struct table_iter`
reftable/reader: iterate to next block in place
reftable/block: reuse uncompressed blocks
reftable/block: open-code call to `uncompress2()`
reftable/block: reuse `zstream` state on inflation
reftable/block: avoid copying block iterators on seek
pack-bitmap: gracefully handle missing BTMP chunks
run-command: introduce function to prepare auto-maintenance process
builtin/receive-pack: convert to use git-maintenance(1)
docs: improve changelog entry for `git pack-refs --auto`
docs: address typos in Git v2.45 changelog
Peter Hutterer (1):
diff: add diff.srcPrefix and diff.dstPrefix configuration variables
Peter Krefting (2):
bisect: report the found commit with "show"
l10n: sv.po: Update Swedish translation
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'
Ralf Thielow (1):
l10n: Update German translation
Ralph Seichter (1):
config: add --comment option to add a comment
René Scharfe (32):
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
git-compat-util: fix NO_OPENSSL on current macOS
imap-send: increase command size limit
apply: avoid using fixed-size buffer in write_out_one_reject()
don't report vsnprintf(3) error as bug
Richard Macklin (1):
rebase: fix typo in autosquash documentation
Rubén Justo (18):
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
launch_editor: waiting message on error
apply: plug a leak in apply_data
add-interactive: plug a leak in get_untracked_files
add-patch: plug a leak handling the '/' command
add: plug a leak on interactive_add
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 (9):
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
Documentation/RelNotes/2.45.0.txt: fix typo
Teng Long (1):
l10n: zh_CN: for git 2.45 rounds
Thalia Archibald (8):
fast-import: tighten path unquoting
fast-import: directly use strbufs for paths
fast-import: allow unquoted empty path for root
fast-import: remove dead strbuf
fast-import: improve documentation for path quoting
fast-import: document C-style escapes for paths
fast-import: forbid escaped NUL in paths
fast-import: make comments more precise
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)
Vũ Tiến Hưng (2):
l10n: Update Vietnamese team contact
l10n: vi: Updated translation for 2.45
Xing Xin (1):
Documentation: fix typos describing date format
Yehezkel Bernat (1):
Documentation: fix linkgit reference
Yi-Jyun Pan (1):
l10n: zh-TW: Git 2.45
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
Đoàn Trần Công Danh (1):
t9604: Fix test for musl libc and new Debian
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.45.0-rc1
@ 2024-04-24 17:07 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-04-24 17:07 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.45.0-rc1 is now available for testing at
the usual places. It is comprised of 521 non-merge commits since
v2.44.0, contributed by 84 people, 36 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-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.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, Marcel Röthke, Matthew Rollings, Max Gautier,
mirth hickford, Paweł Dominiak, Pi Fisher, Ralph Seichter,
Richard Macklin, shejialuo, Steven Jeuris, Thalia Archibald,
Tiago Pascoal, Vincenzo Mezzela, Xing Xin, and Yehezkel Bernat.
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, Đoàn Trần Công Danh,
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, Orgad
Shaneh, Patrick Steinhardt, Peter Hutterer, Peter Krefting,
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 defers the decision of
whether and how to pack to the ref backend. This is used by the reftable
backend to avoid repacking of an already-optimal ref database. The new mode
is 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.
* Git writes a "waiting for your editor" message on an incomplete
line after launching an editor, and then append another error
message on the same line if the editor errors out. It now clears
the "waiting for..." line before giving the error message.
* The filename used for rejected hunks "git apply --reject" creates
was limited to PATH_MAX, which has been lifted.
* When "git bisect" reports the commit it determined to be the
culprit, we used to show it in a format that does not honor common
UI tweaks, like log.date and log.decorate. The code has been
taught to use "git show" to follow more customizations.
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-brackets> 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.
* 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.
* The code to iterate over reftable blocks has seen some optimization
to reduce memory allocation and deallocation.
* The way "git fast-import" handles paths described in its input has
been tightened up and more clearly documented.
* The cvsimport tests required that the platform understands
traditional timezone notations like CST6CDT, which has been
updated to work on those systems as long as they understand
POSIX notation with explicit tz transition dates.
* The code to format trailers have been cleaned up.
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 have 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 messages can fall into an
endless loop, which has been corrected.
(merge 2541cba2d6 fs/find-end-of-log-message-fix later to maint).
* Mark-up 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 used 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).
* Git 2.44 introduced a regression that makes the updated code to
barf in repositories with multi-pack index written by older
versions of Git, which has been corrected.
* When .git/rr-cache/ rerere database gets corrupted or rerere is fed to
work on a file with conflicted hunks resolved incompletely, the rerere
machinery got confused and segfaulted, which has been corrected.
(merge 167395bb47 mr/rerere-crash-fix later to maint).
* The "receive-pack" program (which responds to "git push") was not
converted to run "git maintenance --auto" when other codepaths that
used to run "git gc --auto" were updated, which has been corrected.
(merge 7bf3057d9c ps/run-auto-maintenance-in-receive-pack 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).
(merge 44bdba2fa6 rs/no-openssl-compilation-fix-on-macos later to maint).
(merge f412d72c19 yb/replay-doc-linkfix later to maint).
(merge 5da40be8d7 xx/rfc2822-date-format-in-doc 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 (63):
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
A bit more topics before -rc1
Git 2.45-rc1
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 (15):
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()
format_trailer_info(): use trailer_item objects
format_trailer_info(): drop redundant unfold_value()
format_trailer_info(): append newline for non-trailer lines
trailer: begin formatting unification
trailer: finish formatting unification
mailmap: change primary address for Linus Arver
M Hickford (1):
libsecret: retrieve empty password
Marcel Röthke (1):
rerere: fix crashes due to unmatched opening conflict markers
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
Orgad Shaneh (1):
docs: remove duplicate entry and fix typo in 2.45 changelog
Patrick Steinhardt (99):
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
reftable/block: rename `block_reader_start()`
reftable/block: merge `block_iter_seek()` and `block_reader_seek()`
reftable/block: better grouping of functions
reftable/block: introduce `block_reader_release()`
reftable/block: move ownership of block reader into `struct table_iter`
reftable/reader: iterate to next block in place
reftable/block: reuse uncompressed blocks
reftable/block: open-code call to `uncompress2()`
reftable/block: reuse `zstream` state on inflation
reftable/block: avoid copying block iterators on seek
pack-bitmap: gracefully handle missing BTMP chunks
run-command: introduce function to prepare auto-maintenance process
builtin/receive-pack: convert to use git-maintenance(1)
docs: improve changelog entry for `git pack-refs --auto`
docs: address typos in Git v2.45 changelog
Peter Hutterer (1):
diff: add diff.srcPrefix and diff.dstPrefix configuration variables
Peter Krefting (1):
bisect: report the found commit with "show"
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 (31):
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
git-compat-util: fix NO_OPENSSL on current macOS
imap-send: increase command size limit
apply: avoid using fixed-size buffer in write_out_one_reject()
Richard Macklin (1):
rebase: fix typo in autosquash documentation
Rubén Justo (14):
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
launch_editor: waiting message on error
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
Thalia Archibald (8):
fast-import: tighten path unquoting
fast-import: directly use strbufs for paths
fast-import: allow unquoted empty path for root
fast-import: remove dead strbuf
fast-import: improve documentation for path quoting
fast-import: document C-style escapes for paths
fast-import: forbid escaped NUL in paths
fast-import: make comments more precise
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)
Xing Xin (1):
Documentation: fix typos describing date format
Yehezkel Bernat (1):
Documentation: fix linkgit reference
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
Đoàn Trần Công Danh (1):
t9604: Fix test for musl libc and new Debian
^ permalink raw reply [relevance 3%]
* [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 v3 0/2] Allow disabling advice shown after merge conflicts
2024-03-25 10:48 0% ` Phillip Wood
@ 2024-03-25 16:57 0% ` Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2024-03-25 16:57 UTC (permalink / raw)
To: Phillip Wood
Cc: Philippe Blain via GitGitGadget, git, Elijah Newren, Phillip Wood,
Johannes Schindelin, ZheNing Hu, Kristoffer Haugsbakk,
Rubén Justo, Philippe Blain
Phillip Wood <phillip.wood123@gmail.com> writes:
> Hi Philippe
>
> On 16/03/2024 21:16, Philippe Blain via GitGitGadget wrote:
>> Changes since v2:
>> * expanded the commit messages to explain why the tests for 'git
>> rebase' do
>> not need to be adjusted
>> * adjusted the wording of the new 'advice.mergeConflict' in the doc, as
>> suggested by Kristoffer for uniformity with his series which is already
>> merged to 'master' (b09a8839a4 (Merge branch
>> 'kh/branch-ref-syntax-advice', 2024-03-15)).
>> * checked all new output manually and consequently adjusted the code in 1/2
>> to avoid a lonely 'hint: ' line.
>> * adjusted the addition in advice.h in 1/2 to put the new enum
>> alphabetically, as noticed by Rubén.
>> * added misssing newlines in 2/2 as noticed by Phillip and tweaked by
>> Junio.
>> * rebased on master (2953d95d40 (The eighth batch, 2024-03-15)), to avoid
>> conflicts in 'Documentation/config/advice.txt' due to Kristoffer's merged > series
>> [...] Note that the code path where 'git rebase --apply' stops
>> because of
>> conflicts is not covered by the tests but I tested it manually using this
>> diff:
>> diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
>> index 47534f1062..34eac2e6f4 100755
>> --- a/t/t5520-pull.sh
>> +++ b/t/t5520-pull.sh
>> @@ -374,7 +374,7 @@ test_pull_autostash_fail ()
>> echo conflicting >>seq.txt &&
>> test_tick &&
>> git commit -m "Create conflict" seq.txt &&
>> - test_must_fail git pull --rebase . seq 2>err >out &&
>> + test_must_fail git -c rebase.backend=apply pull --rebase . seq 2>err >out &&
>> test_grep "Resolve all conflicts manually" err
>> '
>
> Thanks for being so thorough, this version looks good to me
Yup, these look good. Let's mark the topic for 'next'.
Thanks, both.
^ permalink raw reply [relevance 0%]
* Re: [PATCH v3 0/2] Allow disabling advice shown after merge conflicts
2024-03-16 21:16 3% ` [PATCH v3 " Philippe Blain via GitGitGadget
2024-03-18 16:31 0% ` Junio C Hamano
@ 2024-03-25 10:48 0% ` Phillip Wood
2024-03-25 16:57 0% ` Junio C Hamano
1 sibling, 1 reply; 162+ results
From: Phillip Wood @ 2024-03-25 10:48 UTC (permalink / raw)
To: Philippe Blain via GitGitGadget, git
Cc: Elijah Newren, Phillip Wood, Johannes Schindelin, ZheNing Hu,
Kristoffer Haugsbakk, Rubén Justo, Philippe Blain
Hi Philippe
On 16/03/2024 21:16, Philippe Blain via GitGitGadget wrote:
> Changes since v2:
>
> * expanded the commit messages to explain why the tests for 'git rebase' do
> not need to be adjusted
> * adjusted the wording of the new 'advice.mergeConflict' in the doc, as
> suggested by Kristoffer for uniformity with his series which is already
> merged to 'master' (b09a8839a4 (Merge branch
> 'kh/branch-ref-syntax-advice', 2024-03-15)).
> * checked all new output manually and consequently adjusted the code in 1/2
> to avoid a lonely 'hint: ' line.
> * adjusted the addition in advice.h in 1/2 to put the new enum
> alphabetically, as noticed by Rubén.
> * added misssing newlines in 2/2 as noticed by Phillip and tweaked by
> Junio.
> * rebased on master (2953d95d40 (The eighth batch, 2024-03-15)), to avoid
> conflicts in 'Documentation/config/advice.txt' due to Kristoffer's merged > series
> [...]
> Note that the code path where 'git rebase --apply' stops because of
> conflicts is not covered by the tests but I tested it manually using this
> diff:
>
> diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
> index 47534f1062..34eac2e6f4 100755
> --- a/t/t5520-pull.sh
> +++ b/t/t5520-pull.sh
> @@ -374,7 +374,7 @@ test_pull_autostash_fail ()
> echo conflicting >>seq.txt &&
> test_tick &&
> git commit -m "Create conflict" seq.txt &&
> - test_must_fail git pull --rebase . seq 2>err >out &&
> + test_must_fail git -c rebase.backend=apply pull --rebase . seq 2>err >out &&
> test_grep "Resolve all conflicts manually" err
> '
Thanks for being so thorough, this version looks good to me
Best Wishes
Phillip
>
> Philippe Blain (2):
> sequencer: allow disabling conflict advice
> builtin/am: allow disabling conflict advice
>
> Documentation/config/advice.txt | 2 ++
> advice.c | 1 +
> advice.h | 1 +
> builtin/am.c | 14 +++++++++-----
> sequencer.c | 33 ++++++++++++++++++---------------
> t/t3501-revert-cherry-pick.sh | 1 +
> t/t3507-cherry-pick-conflict.sh | 2 ++
> t/t4150-am.sh | 8 ++++----
> t/t4254-am-corrupt.sh | 2 +-
> 9 files changed, 39 insertions(+), 25 deletions(-)
>
>
> base-commit: 2953d95d402b6bff1a59c4712f4d46f1b9ea137f
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1682%2Fphil-blain%2Fsequencer-conflict-advice-v3
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1682/phil-blain/sequencer-conflict-advice-v3
> Pull-Request: https://github.com/gitgitgadget/git/pull/1682
>
> Range-diff vs v2:
>
> 1: a2ce6fd24c2 ! 1: 6005c1e9890 sequencer: allow disabling conflict advice
> @@ Commit message
> merge conflict through a new config 'advice.mergeConflict', which is
> named generically such that it can be used by other commands eventually.
>
> + Remove that final '\n' in the first hunk in sequencer.c to avoid an
> + otherwise empty 'hint: ' line before the line 'hint: Disable this
> + message with "git config advice.mergeConflict false"' which is
> + automatically added by 'advise_if_enabled'.
> +
> Note that we use 'advise_if_enabled' for each message in the second hunk
> in sequencer.c, instead of using 'if (show_hints &&
> advice_enabled(...)', because the former instructs the user how to
> @@ Commit message
>
> Update the tests accordingly. Note that the body of the second test in
> t3507-cherry-pick-conflict.sh is enclosed in double quotes, so we must
> - escape them in the added line.
> + escape them in the added line. Note that t5520-pull.sh, which checks
> + that we display the advice for 'git rebase' (via 'git pull --rebase')
> + does not have to be updated because it only greps for a specific line in
> + the advice message.
>
> Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
>
> ## Documentation/config/advice.txt ##
> @@ Documentation/config/advice.txt: advice.*::
> - Advice on how to set your identity configuration when
> - your information is guessed from the system username and
> - domain name.
> + Shown when the user's information is guessed from the
> + system username and domain name, to tell the user how to
> + set their identity configuration.
> + mergeConflict::
> -+ Advice shown when various commands stop because of conflicts.
> ++ Shown when various commands stop because of conflicts.
> nestedTag::
> - Advice shown if a user attempts to recursively tag a tag object.
> + Shown when a user attempts to recursively tag a tag object.
> pushAlreadyExists::
>
> ## advice.c ##
> @@ advice.c: static struct {
>
> ## advice.h ##
> @@ advice.h: enum advice_type {
> + ADVICE_GRAFT_FILE_DEPRECATED,
> ADVICE_IGNORED_HOOK,
> ADVICE_IMPLICIT_IDENTITY,
> - ADVICE_NESTED_TAG,
> + ADVICE_MERGE_CONFLICT,
> + ADVICE_NESTED_TAG,
> ADVICE_OBJECT_NAME_WARNING,
> ADVICE_PUSH_ALREADY_EXISTS,
> - ADVICE_PUSH_FETCH_FIRST,
>
> ## sequencer.c ##
> @@ sequencer.c: static void print_advice(struct repository *r, int show_hint,
> @@ sequencer.c: static void print_advice(struct repository *r, int show_hint,
>
> if (msg) {
> - advise("%s\n", msg);
> -+ advise_if_enabled(ADVICE_MERGE_CONFLICT, "%s\n", msg);
> ++ advise_if_enabled(ADVICE_MERGE_CONFLICT, "%s", msg);
> /*
> * A conflict has occurred but the porcelain
> * (typically rebase --interactive) wants to take care
> 2: 3235542cc6f ! 2: 73d07c8b6a7 builtin/am: allow disabling conflict advice
> @@ Commit message
> on stderr instead of stdout. In t4150, redirect stdout to 'out' and
> stderr to 'err', since this is less confusing. In t4254, as we are
> testing a specific failure mode of 'git am', simply disable the advice.
> + Note that we are not testing that this advice is shown in 'git rebase'
> + for the apply backend since 2ac0d6273f (rebase: change the default
> + backend from "am" to "merge", 2020-02-15).
>
> + Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> + Helped-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
>
> ## builtin/am.c ##
> @@ builtin/am.c: static const char *msgnum(const struct am_state *state)
>
> - printf_ln(_("When you have resolved this problem, run \"%s --continue\"."), cmdline);
> - printf_ln(_("If you prefer to skip this patch, run \"%s --skip\" instead."), cmdline);
> -+ strbuf_addf(&sb, _("When you have resolved this problem, run \"%s --continue\"."), cmdline);
> -+ strbuf_addf(&sb, _("If you prefer to skip this patch, run \"%s --skip\" instead."), cmdline);
> ++ strbuf_addf(&sb, _("When you have resolved this problem, run \"%s --continue\".\n"), cmdline);
> ++ strbuf_addf(&sb, _("If you prefer to skip this patch, run \"%s --skip\" instead.\n"), cmdline);
>
> if (advice_enabled(ADVICE_AM_WORK_DIR) &&
> is_empty_or_missing_file(am_path(state, "patch")) &&
> !repo_index_has_changes(the_repository, NULL, NULL))
> - printf_ln(_("To record the empty patch as an empty commit, run \"%s --allow-empty\"."), cmdline);
> -+ strbuf_addf(&sb, _("To record the empty patch as an empty commit, run \"%s --allow-empty\"."), cmdline);
> ++ strbuf_addf(&sb, _("To record the empty patch as an empty commit, run \"%s --allow-empty\".\n"), cmdline);
>
> - printf_ln(_("To restore the original branch and stop patching, run \"%s --abort\"."), cmdline);
> + strbuf_addf(&sb, _("To restore the original branch and stop patching, run \"%s --abort\"."), cmdline);
>
^ permalink raw reply [relevance 0%]
* Re: [PATCH v3 0/2] Allow disabling advice shown after merge conflicts
2024-03-16 21:16 3% ` [PATCH v3 " Philippe Blain via GitGitGadget
@ 2024-03-18 16:31 0% ` Junio C Hamano
2024-03-25 10:48 0% ` Phillip Wood
1 sibling, 0 replies; 162+ results
From: Junio C Hamano @ 2024-03-18 16:31 UTC (permalink / raw)
To: Philippe Blain via GitGitGadget
Cc: git, Elijah Newren, Phillip Wood, Johannes Schindelin, ZheNing Hu,
Kristoffer Haugsbakk, Rubén Justo, Philippe Blain
"Philippe Blain via GitGitGadget" <gitgitgadget@gmail.com> writes:
> This series introduces a new config 'advice.mergeConflict' and uses it to
> allow disabling the advice shown when 'git rebase', 'git cherry-pick', 'git
> revert', 'git rebase --apply' and 'git am' stop because of conflicts.
>
> Thanks everyone for the reviews!
>
> Changes since v2:
>
> * expanded the commit messages to explain why the tests for 'git rebase' do
> not need to be adjusted
> * adjusted the wording of the new 'advice.mergeConflict' in the doc, as
> suggested by Kristoffer for uniformity with his series which is already
> merged to 'master' (b09a8839a4 (Merge branch
> 'kh/branch-ref-syntax-advice', 2024-03-15)).
> * checked all new output manually and consequently adjusted the code in 1/2
> to avoid a lonely 'hint: ' line.
> * adjusted the addition in advice.h in 1/2 to put the new enum
> alphabetically, as noticed by Rubén.
> * added misssing newlines in 2/2 as noticed by Phillip and tweaked by
> Junio.
> * rebased on master (2953d95d40 (The eighth batch, 2024-03-15)), to avoid
> conflicts in 'Documentation/config/advice.txt' due to Kristoffer's merged
> series
Looking good; will queue. Thanks.
^ permalink raw reply [relevance 0%]
* [PATCH 00/15] refs: introduce `--auto` to pack refs as needed
@ 2024-03-18 10:52 4% Patrick Steinhardt
0 siblings, 0 replies; 162+ results
From: Patrick Steinhardt @ 2024-03-18 10:52 UTC (permalink / raw)
To: git; +Cc: Derrick Stolee
[-- Attachment #1: Type: text/plain, Size: 4220 bytes --]
Hi,
right now, it is left to the caller of `refs_pack_refs()` to decide
whether or not to repack refs and how exactly to do it. This is
inefficient at times given that the caller typically has no idea whether
or not the refdb is close to optimal already. So even if the refdb is
already in a close-to-optimal state we would end up repacking all of it.
This patch series aims to address this shortcoming. It introduces a new
flag `PACK_REFS_AUTO` that tells the ref backend to repack refs as
needed. For the "files" backend we don't honor this flag yet and thus
end up behaving the exact same as if that flag wasn't set. But for the
"reftable" backend we will use the same auto-compaction algorithm that
is already used during writes to the refdb. Thus, in most of the cases
it wouldn't actually do anything except when the refdb is suboptimally
packed.
Eventually we'll probably also want to wire up heuristics for the
"files" backend to honor the `PACK_REFS_AUTO` flag. Using something like
a ratio of packed-refs size/number of loose refs might be viable. I
punted on that though as I feared that it might lead to bikeshedding and
thus distract from the main goal of this topic, which is to prepare the
ref code and relevant commands to perform optimizations as required. I'm
happy to add such a patch to this series though in case anybody feels
strongly about this.
The `PACK_REFS_AUTO` flag is exposed via a new `git pack-refs --auto`
flag. It is wired up in both `git gc --auto` and `git maintenance run
--auto`.
The series is structured as follows:
- Patches 1 - 5: Bugfixes and improvements for the reftable-specific
compaction code. These are issues that I've found while working on
this series.
- Patches 6 - 8: Refactorings to drop the `PACK_REFS_ALL` flag,
which isn't actually used by the ref backends anymore and confused
me multiple times.
- Patches 9 - 15: Handling of `PACK_REFS_ALL` in git-pack-refs(1),
git-gc(1) and git-maintenance(1).
The patch series is built on top of 2953d95d40 (The eighth batch,
2024-03-15) with "ps/reftable-stack-tempfile" at 60c4c42515
(reftable/stack: register compacted tables as tempfiles, 2024-03-07)
merged into it due to a merge conflict in "reftable/stack.c".
Patrick
PS: I polished this patch series while traveling and am still out of
office until Thursday. I'll thus only get to respond to threads that
are waiting for my input at the end of this week.
Patrick Steinhardt (15):
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`
Documentation/git-pack-refs.txt | 15 +++++-
builtin/gc.c | 86 +++++++++++++++++++--------------
builtin/pack-refs.c | 31 +++++++-----
refs.h | 20 ++++----
refs/reftable-backend.c | 11 ++++-
reftable/error.c | 4 +-
reftable/reftable-error.h | 5 +-
reftable/stack.c | 34 +++++++------
reftable/stack_test.c | 2 +-
t/helper/test-ref-store.c | 20 --------
t/oid-info/hash-info | 12 +++++
t/t0601-reffiles-pack-refs.sh | 30 ++++++++++--
t/t0610-reftable-basics.sh | 79 ++++++++++++++++++++++++++++++
t/t6500-gc.sh | 30 +++---------
14 files changed, 255 insertions(+), 124 deletions(-)
base-commit: f94fee98b456ef39a5f85fff5802f4e538a4dc7b
--
2.44.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [relevance 4%]
* [PATCH v3 0/2] Allow disabling advice shown after merge conflicts
@ 2024-03-16 21:16 3% ` Philippe Blain via GitGitGadget
2024-03-18 16:31 0% ` Junio C Hamano
2024-03-25 10:48 0% ` Phillip Wood
0 siblings, 2 replies; 162+ results
From: Philippe Blain via GitGitGadget @ 2024-03-16 21:16 UTC (permalink / raw)
To: git
Cc: Elijah Newren, Phillip Wood, Johannes Schindelin, ZheNing Hu,
Kristoffer Haugsbakk, Rubén Justo, Philippe Blain
This series introduces a new config 'advice.mergeConflict' and uses it to
allow disabling the advice shown when 'git rebase', 'git cherry-pick', 'git
revert', 'git rebase --apply' and 'git am' stop because of conflicts.
Thanks everyone for the reviews!
Changes since v2:
* expanded the commit messages to explain why the tests for 'git rebase' do
not need to be adjusted
* adjusted the wording of the new 'advice.mergeConflict' in the doc, as
suggested by Kristoffer for uniformity with his series which is already
merged to 'master' (b09a8839a4 (Merge branch
'kh/branch-ref-syntax-advice', 2024-03-15)).
* checked all new output manually and consequently adjusted the code in 1/2
to avoid a lonely 'hint: ' line.
* adjusted the addition in advice.h in 1/2 to put the new enum
alphabetically, as noticed by Rubén.
* added misssing newlines in 2/2 as noticed by Phillip and tweaked by
Junio.
* rebased on master (2953d95d40 (The eighth batch, 2024-03-15)), to avoid
conflicts in 'Documentation/config/advice.txt' due to Kristoffer's merged
series
Changes since v1:
* renamed the new advice to 'advice.mergeConflict' to make it non-sequencer
specific
* added 2/2 which uses the advice in builtin/am, which covers 'git rebase
--apply' and 'git am'
Note that the code path where 'git rebase --apply' stops because of
conflicts is not covered by the tests but I tested it manually using this
diff:
diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
index 47534f1062..34eac2e6f4 100755
--- a/t/t5520-pull.sh
+++ b/t/t5520-pull.sh
@@ -374,7 +374,7 @@ test_pull_autostash_fail ()
echo conflicting >>seq.txt &&
test_tick &&
git commit -m "Create conflict" seq.txt &&
- test_must_fail git pull --rebase . seq 2>err >out &&
+ test_must_fail git -c rebase.backend=apply pull --rebase . seq 2>err >out &&
test_grep "Resolve all conflicts manually" err
'
Philippe Blain (2):
sequencer: allow disabling conflict advice
builtin/am: allow disabling conflict advice
Documentation/config/advice.txt | 2 ++
advice.c | 1 +
advice.h | 1 +
builtin/am.c | 14 +++++++++-----
sequencer.c | 33 ++++++++++++++++++---------------
t/t3501-revert-cherry-pick.sh | 1 +
t/t3507-cherry-pick-conflict.sh | 2 ++
t/t4150-am.sh | 8 ++++----
t/t4254-am-corrupt.sh | 2 +-
9 files changed, 39 insertions(+), 25 deletions(-)
base-commit: 2953d95d402b6bff1a59c4712f4d46f1b9ea137f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1682%2Fphil-blain%2Fsequencer-conflict-advice-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1682/phil-blain/sequencer-conflict-advice-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/1682
Range-diff vs v2:
1: a2ce6fd24c2 ! 1: 6005c1e9890 sequencer: allow disabling conflict advice
@@ Commit message
merge conflict through a new config 'advice.mergeConflict', which is
named generically such that it can be used by other commands eventually.
+ Remove that final '\n' in the first hunk in sequencer.c to avoid an
+ otherwise empty 'hint: ' line before the line 'hint: Disable this
+ message with "git config advice.mergeConflict false"' which is
+ automatically added by 'advise_if_enabled'.
+
Note that we use 'advise_if_enabled' for each message in the second hunk
in sequencer.c, instead of using 'if (show_hints &&
advice_enabled(...)', because the former instructs the user how to
@@ Commit message
Update the tests accordingly. Note that the body of the second test in
t3507-cherry-pick-conflict.sh is enclosed in double quotes, so we must
- escape them in the added line.
+ escape them in the added line. Note that t5520-pull.sh, which checks
+ that we display the advice for 'git rebase' (via 'git pull --rebase')
+ does not have to be updated because it only greps for a specific line in
+ the advice message.
Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
## Documentation/config/advice.txt ##
@@ Documentation/config/advice.txt: advice.*::
- Advice on how to set your identity configuration when
- your information is guessed from the system username and
- domain name.
+ Shown when the user's information is guessed from the
+ system username and domain name, to tell the user how to
+ set their identity configuration.
+ mergeConflict::
-+ Advice shown when various commands stop because of conflicts.
++ Shown when various commands stop because of conflicts.
nestedTag::
- Advice shown if a user attempts to recursively tag a tag object.
+ Shown when a user attempts to recursively tag a tag object.
pushAlreadyExists::
## advice.c ##
@@ advice.c: static struct {
## advice.h ##
@@ advice.h: enum advice_type {
+ ADVICE_GRAFT_FILE_DEPRECATED,
ADVICE_IGNORED_HOOK,
ADVICE_IMPLICIT_IDENTITY,
- ADVICE_NESTED_TAG,
+ ADVICE_MERGE_CONFLICT,
+ ADVICE_NESTED_TAG,
ADVICE_OBJECT_NAME_WARNING,
ADVICE_PUSH_ALREADY_EXISTS,
- ADVICE_PUSH_FETCH_FIRST,
## sequencer.c ##
@@ sequencer.c: static void print_advice(struct repository *r, int show_hint,
@@ sequencer.c: static void print_advice(struct repository *r, int show_hint,
if (msg) {
- advise("%s\n", msg);
-+ advise_if_enabled(ADVICE_MERGE_CONFLICT, "%s\n", msg);
++ advise_if_enabled(ADVICE_MERGE_CONFLICT, "%s", msg);
/*
* A conflict has occurred but the porcelain
* (typically rebase --interactive) wants to take care
2: 3235542cc6f ! 2: 73d07c8b6a7 builtin/am: allow disabling conflict advice
@@ Commit message
on stderr instead of stdout. In t4150, redirect stdout to 'out' and
stderr to 'err', since this is less confusing. In t4254, as we are
testing a specific failure mode of 'git am', simply disable the advice.
+ Note that we are not testing that this advice is shown in 'git rebase'
+ for the apply backend since 2ac0d6273f (rebase: change the default
+ backend from "am" to "merge", 2020-02-15).
+ Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
+ Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
## builtin/am.c ##
@@ builtin/am.c: static const char *msgnum(const struct am_state *state)
- printf_ln(_("When you have resolved this problem, run \"%s --continue\"."), cmdline);
- printf_ln(_("If you prefer to skip this patch, run \"%s --skip\" instead."), cmdline);
-+ strbuf_addf(&sb, _("When you have resolved this problem, run \"%s --continue\"."), cmdline);
-+ strbuf_addf(&sb, _("If you prefer to skip this patch, run \"%s --skip\" instead."), cmdline);
++ strbuf_addf(&sb, _("When you have resolved this problem, run \"%s --continue\".\n"), cmdline);
++ strbuf_addf(&sb, _("If you prefer to skip this patch, run \"%s --skip\" instead.\n"), cmdline);
if (advice_enabled(ADVICE_AM_WORK_DIR) &&
is_empty_or_missing_file(am_path(state, "patch")) &&
!repo_index_has_changes(the_repository, NULL, NULL))
- printf_ln(_("To record the empty patch as an empty commit, run \"%s --allow-empty\"."), cmdline);
-+ strbuf_addf(&sb, _("To record the empty patch as an empty commit, run \"%s --allow-empty\"."), cmdline);
++ strbuf_addf(&sb, _("To record the empty patch as an empty commit, run \"%s --allow-empty\".\n"), cmdline);
- printf_ln(_("To restore the original branch and stop patching, run \"%s --abort\"."), cmdline);
+ strbuf_addf(&sb, _("To restore the original branch and stop patching, run \"%s --abort\"."), cmdline);
--
gitgitgadget
^ permalink raw reply related [relevance 3%]
* [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 4% 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 4%]
* [ANNOUNCE] Git v2.43.0-rc1
@ 2023-11-08 17:33 4% 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 4%]
* [ANNOUNCE] Git v2.43.0-rc0
@ 2023-11-02 17:36 4% 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 4%]
* [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 4% 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 4%]
* [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.37.0
@ 2022-06-27 18:22 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-06-27 18:22 UTC (permalink / raw)
To: git; +Cc: git-packagers
The latest feature release Git v2.37.0 is now available at the
usual places. It is comprised of 395 non-merge commits since
v2.36.0, contributed by 75 people, 20 of which are new faces [*].
As this cycle was shorter than usual, it is a smaller release than
usual, but the size of tarballs are about the same ;-).
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.37.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.36.0 are as follows.
Welcome to the Git development community!
Arthur Milchior, Chris Down, Daniel Li, Fernando Ramos, Frantisek
Hrbata, Garrit Franke, Gregory David, Guy Maurel, halilsen,
Huang Zou, "Ing. Martin Prantl Ph.D.", Joakim Petersen, Kevin
Locke, Khalid Masum, Kirill Frolov, Kleber Tarcísio, Laurent
Lyaudet, Siddharth Asthana, Thomas Hurst, and Yuyi Wang.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Ævar Arnfjörð Bjarmason, Alexander
Shopov, Alex Henrie, Anthony Sottile, Bagas Sanjaya, BRESSAT
Jonathan, Carlo Arenas, Carlo Marcelo Arenas Belón, Christian
Couder, COGONI Guillaume, Derrick Stolee, Dimitriy Ryazantcev,
Edmundo Carmona Antoranz, Elia Pinto, Elijah Newren, Emir SARI,
Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Jason
Yundt, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin,
Joel Holdsworth, Johannes Schindelin, Jonathan Tan, Jordi Mas,
Josh Steadmon, Junio C Hamano, Matthew John Cheetham, Matthias
Aßhauer, Matthias Rüster, Matthieu Moy, Michael J Gruber,
Miklos Vajna, Neeraj Singh, Orgad Shaneh, Peter Krefting,
Philip Oakley, Philippe Blain, Phillip Wood, Ralf Thielow,
Randall S. Becker, René Scharfe, Son Luong Ngoc, SZEDER Gábor,
Tao Klerks, Taylor Blau, Trần Ngọc Quân, Victoria Dye,
Yi-Jyun Pan, 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.37 Release Notes
=======================
UI, Workflows & Features
* "vimdiff[123]" mergetool drivers have been reimplemented with a
more generic layout mechanism.
* "git -v" and "git -h" are now understood as "git --version" and
"git --help".
* The temporary files fed to external diff command are now generated
inside a new temporary directory under the same basename.
* "git log --since=X" will stop traversal upon seeing a commit that
is older than X, but there may be commits behind it that is younger
than X when the commit was created with a faulty clock. A new
option is added to keep digging without stopping, and instead
filter out commits with timestamp older than X.
* "git -c branch.autosetupmerge=simple branch $A $B" will set the $B
as $A's upstream only when $A and $B shares the same name, and "git
-c push.default=simple" on branch $A would push to update the
branch $A at the remote $B came from. Also more places use the
sole remote, if exists, before defaulting to 'origin'.
* A new doc has been added that lists tips for tools to work with
Git's codebase.
* "git remote -v" now shows the list-objects-filter used during
fetching from the remote, if available.
* With the new http.curloptResolve configuration, the CURLOPT_RESOLVE
mechanism that allows cURL based applications to use pre-resolved
IP addresses for the requests is exposed to the scripts.
* "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.
* Deprecate non-cone mode of the sparse-checkout feature.
* Introduce a filesystem-dependent mechanism to optimize the way the
bits for many loose object files are ensured to hit the disk
platter.
* The "do not remove the directory the user started Git in" logic,
when Git cannot tell where that directory is, is disabled. Earlier
we refused to run in such a case.
* A mechanism to pack unreachable objects into a "cruft pack",
instead of ejecting them into loose form to be reclaimed later, has
been introduced.
* Update the doctype written in gitweb output to xhtml5.
* The "transfer.credentialsInURL" configuration variable controls what
happens when a URL with embedded login credential is used on either
"fetch" or "push". Credentials are currently only detected in
`remote.<name>.url` config, not `remote.<name>.pushurl`.
* "git revert" learns "--reference" option to use more human-readable
reference to the commit it reverts in the message template it
prepares for the user.
* Various error messages that talk about the removal of
"--preserve-merges" in "rebase" have been strengthened, and "rebase
--abort" learned to get out of a state that was left by an earlier
use of the option.
Performance, Internal Implementation, Development Support etc.
* The performance of the "untracked cache" feature has been improved
when "--untracked-files=<mode>" and "status.showUntrackedFiles"
are combined.
* "git stash" works better with sparse index entries.
* "git show :<path>" learned to work better with the sparse-index
feature.
* Introduce and apply coccinelle rule to discourage an explicit
comparison between a pointer and NULL, and applies the clean-up to
the maintenance track.
* Preliminary code refactoring around transport and bundle code.
* "sparse-checkout" learns to work better with the sparse-index
feature.
* A workflow change for translators are being proposed. git.pot is
no longer version controlled and it is local responsibility of
translators to generate it.
* Plug the memory leaks from the trickiest API of all, the revision
walker.
* Rename .env_array member to .env in the child_process structure.
* The fsmonitor--daemon handles even more corner cases when
watching filesystem events.
* A new bug() and BUG_if_bug() API is introduced to make it easier to
uniformly log "detect multiple bugs and abort in the end" pattern.
Fixes since v2.36
-----------------
* "git submodule update" without pathspec should silently skip an
uninitialized submodule, but it started to become noisy by mistake.
(merge 4f1ccef87c gc/submodule-update-part2 later to maint).
* "diff-tree --stdin" has been broken for about a year, but 2.36
release broke it even worse by breaking running the command with
<pathspec>, which in turn broke "gitk" and got noticed. This has
been corrected by aligning its behaviour to that of "log".
(merge f8781bfda3 jc/diff-tree-stdin-fix later to maint).
* Regression fix for 2.36 where "git name-rev" started to sometimes
reference strings after they are freed.
(merge 45a14f578e rs/name-rev-fix-free-after-use later to maint).
* "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
when showing the second and subsequent commits, which has been
corrected.
(merge 5cdb38458e jc/show-pathspec-fix later to maint).
* "git fast-export -- <pathspec>" lost the pathspec when showing the
second and subsequent commits, which has been corrected.
(merge d1c25272f5 rs/fast-export-pathspec-fix later to maint).
* "git format-patch <args> -- <pathspec>" lost the pathspec when
showing the second and subsequent commits, which has been
corrected.
(merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint).
* "git clone --origin X" leaked piece of memory that held value read
from the clone.defaultRemoteName configuration variable, which has
been plugged.
(merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint).
* Get rid of a bogus and over-eager coccinelle rule.
(merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint).
* The path taken by "git multi-pack-index" command from the end user
was compared with path internally prepared by the tool without first
normalizing, which lead to duplicated paths not being noticed,
which has been corrected.
(merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint).
* Correct choices of C compilers used in various CI jobs.
(merge 3506cae04f ab/cc-package-fixes later to maint).
* Various cleanups to "git p4".
(merge 4ff0108d9e jh/p4-various-fixups later to maint).
* The progress meter of "git blame" was showing incorrect numbers
when processing only parts of the file.
(merge e5f5d7d42e ea/progress-partial-blame later to maint).
* "git rebase --keep-base <upstream> <branch-to-rebase>" computed the
commit to rebase onto incorrectly, which has been corrected.
(merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint).
* Fix a leak of FILE * in an error codepath.
(merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint).
* Avoid problems from interaction between malloc_check and address
sanitizer.
(merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint).
* The commit summary shown after making a commit is matched to what
is given in "git status" not to use the break-rewrite heuristics.
(merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint).
* Update a few end-user facing messages around EOL conversion.
(merge c970d30c2c ah/convert-warning-message later to maint).
* Trace2 documentation updates.
(merge a6c80c313c js/trace2-doc-fixes later to maint).
* Build procedure fixup.
(merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint).
* "git pull" without "--recurse-submodules=<arg>" made
submodule.recurse take precedence over fetch.recurseSubmodules by
mistake, which has been corrected.
(merge 5819417365 gc/pull-recurse-submodules later to maint).
* "git bisect" was too silent before it is ready to start computing
the actual bisection, which has been corrected.
(merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint).
* macOS CI jobs have been occasionally flaky due to tentative version
skew between perforce and the homebrew packager. Instead of
failing the whole CI job, just let it skip the p4 tests when this
happens.
(merge f15e00b463 cb/ci-make-p4-optional later to maint).
* A bit of test framework fixes with a few fixes to issues found by
valgrind.
(merge 7c898554d7 ab/valgrind-fixes later to maint).
* "git archive --add-file=<path>" picked up the raw permission bits
from the path and propagated to zip output in some cases, without
normalization, which has been corrected (tar output did not have
this issue).
(merge 6a61661967 jc/archive-add-file-normalize-mode later to maint).
* "make coverage-report" without first running "make coverage" did
not produce any meaningful result, which has been corrected.
(merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint).
* The "--current" option of "git show-branch" should have been made
incompatible with the "--reflog" mode, but this was not enforced,
which has been corrected.
(merge 41c64ae0e7 jc/show-branch-g-current later to maint).
* "git fetch" unnecessarily failed when an unexpected optional
section appeared in the output, which has been corrected.
(merge 7709acf7be jt/fetch-peek-optional-section later to maint).
* The way "git fetch" without "--update-head-ok" ensures that HEAD in
no worktree points at any ref being updated was too wasteful, which
has been optimized a bit.
(merge f7400da800 os/fetch-check-not-current-branch later to maint).
* "git fetch --recurse-submodules" from multiple remotes (either from
a remote group, or "--all") used to make one extra "git fetch" in
the submodules, which has been corrected.
(merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint).
* With a recent update to refuse access to repositories of other
people by default, "sudo make install" and "sudo git describe"
stopped working, which has been corrected.
(merge 6b11e3d52e cb/path-owner-check-with-sudo-plus later to maint).
* The tests that ensured merges stop when interfering local changes
are present did not make sure that local changes are preserved; now
they do.
(merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint).
* Some real problems noticed by gcc 12 have been fixed, while false
positives have been worked around.
* Update the version of FreeBSD image used in Cirrus CI.
(merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint).
* The multi-pack-index code did not protect the packfile it is going
to depend on from getting removed while in use, which has been
corrected.
(merge 4090511e40 tb/midx-race-in-pack-objects later to maint).
* Teach "git repack --geometric" work better with "--keep-pack" and
avoid corrupting the repository when packsize limit is used.
(merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint).
* The documentation on the interaction between "--add-file" and
"--prefix" options of "git archive" has been improved.
(merge a75910602a rs/document-archive-prefix later to maint).
* A git subcommand like "git add -p" spawns a separate git process
while relaying its command line arguments. A pathspec with only
negative elements was mistakenly passed with an empty string, which
has been corrected.
(merge b02fdbc80a jc/all-negative-pathspec later to maint).
* With a more targeted workaround in http.c in another topic, we may
be able to lift this blanket "GCC12 dangling-pointer warning is
broken and unsalvageable" workaround.
(merge 419141e495 cb/buggy-gcc-12-workaround later to maint).
* A misconfigured 'branch..remote' led to a bug in configuration
parsing.
(merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint).
* "git -c diff.submodule=log range-diff" did not show anything for
submodules that changed in the ranges being compared, and
"git -c diff.submodule=diff range-diff" did not work correctly.
Fix this by including the "--submodule=short" output
unconditionally to be compared.
* In Git 2.36 we revamped the way how hooks are invoked. One change
that is end-user visible is that the output of a hook is no longer
directly connected to the standard output of "git" that spawns the
hook, which was noticed post release. This is getting corrected.
(merge a082345372 ab/hooks-regression-fix later to maint).
* Updating the graft information invalidates the list of parents of
in-core commit objects that used to be in the graft file.
* "git show-ref --heads" (and "--tags") still iterated over all the
refs only to discard refs outside the specified area, which has
been corrected.
(merge c0c9d35e27 tb/show-ref-optim later to maint).
* Remove redundant copying (with index v3 and older) or possible
over-reading beyond end of mmapped memory (with index v4) has been
corrected.
(merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint).
* Sample watchman interface hook sometimes failed to produce
correctly formatted JSON message, which has been corrected.
(merge 134047b500 sn/fsmonitor-missing-clock later to maint).
* Use-after-free (with another forget-to-free) fix.
(merge 323822c72b ab/remote-free-fix later to maint).
* Remove a coccinelle rule that is no longer relevant.
(merge b1299de4a1 jc/cocci-cleanup later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge e6b2582da3 cm/reftable-0-length-memset later to maint).
(merge 0b75e5bf22 ab/misc-cleanup later to maint).
(merge 52e1ab8a76 ea/rebase-code-simplify later to maint).
(merge 756d15923b sg/safe-directory-tests-and-docs later to maint).
(merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint).
(merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint).
(merge 1da312742d gf/unused-includes later to maint).
(merge 465b30a92d pb/submodule-recurse-mode-enum later to maint).
(merge 82b28c4ed8 km/t3501-use-test-helpers later to maint).
(merge 72315e431b sa/t1011-use-helpers later to maint).
(merge 95b3002201 cg/vscode-with-gdb later to maint).
(merge fbe5f6b804 tk/p4-utf8-bom later to maint).
(merge 17f273ffba tk/p4-with-explicity-sync later to maint).
(merge 944db25c60 kf/p4-multiple-remotes later to maint).
(merge b014cee8de jc/update-ozlabs-url later to maint).
(merge 4ec5008062 pb/ggg-in-mfc-doc later to maint).
(merge af845a604d tb/receive-pack-code-cleanup later to maint).
(merge 2acf4cf001 js/ci-gcc-12-fixes later to maint).
(merge 05e280c0a6 jc/http-clear-finished-pointer later to maint).
(merge 8c49d704ef fh/transport-push-leakfix later to maint).
(merge 1d232d38bd tl/ls-tree-oid-only later to maint).
(merge db7961e6a6 gc/document-config-worktree-scope later to maint).
(merge ce18a30bb7 fs/ssh-default-key-command-doc later to maint).
----------------------------------------------------------------
Changes since v2.36.0 are as follows:
Abhradeep Chakraborty (1):
builtin/remote.c: teach `-v` to list filters for promisor remotes
Alex Henrie (3):
convert: clarify line ending conversion warning
rebase: use correct base for --keep-base when a branch is given
l10n: es: update translation
Alexander Shopov (2):
name-rev: prefix annotate-stdin with '--' in message
l10n: bg.po: Updated Bulgarian translation (5367t)
Arthur Milchior (1):
l10n: README: fix typo
Bagas Sanjaya (1):
l10n: po-id for 2.37 (first batch)
COGONI Guillaume (2):
contrib/vscode/: debugging with VS Code and gdb
Documentation/ToolsForGit.txt: Tools for developing Git
Carlo Marcelo Arenas Belón (8):
reftable: avoid undefined behaviour breaking t0032
ci: make failure to find perforce more user friendly
ci: avoid brew for installing perforce
ci: reintroduce prevention from perforce being quarantined in macOS
t: regression git needs safe.directory when using sudo
git-compat-util: avoid failing dir ownership checks if running privileged
t0034: add negative tests and allow git init to mostly work under sudo
git-compat-util: allow root to access both SUDO_UID and root owned
Chris Down (2):
bisect: output state before we are ready to compute bisection
bisect: output bisect setup status in bisect log
Christian Couder (1):
http: add custom hostname to IP address resolutions
Derrick Stolee (28):
clone: die() instead of BUG() on bad refs
midx: use real paths in lookup_multi_pack_index()
multi-pack-index: use --object-dir real path
cache: use const char * for get_object_directory()
t1092: add compatibility tests for 'git show'
show: integrate with the sparse index
object-name: reject trees found in the index
object-name: diagnose trees in index properly
rev-parse: integrate with sparse index
http: make http_get_file() external
remote: move relative_url()
remote: allow relative_url() to return an absolute url
object-file: convert 'switch' back to 'if'
t1092: refactor 'sparse-index contents' test
t1092: stress test 'git sparse-checkout set'
sparse-index: create expand_index()
sparse-index: introduce partially-sparse indexes
cache-tree: implement cache_tree_find_path()
sparse-checkout: --no-sparse-index needs a full index
sparse-index: partially expand directories
sparse-index: complete partial expansion
p2000: add test for 'git sparse-checkout [add|set]'
sparse-checkout: integrate with sparse index
remote: create fetch.credentialsInUrl config
t2107: test 'git update-index --verbose'
t5329: test 'git gc --cruft' without '--prune=now'
pack-write: drop always-NULL parameter
cache-tree: remove cache_tree_find_path()
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Edmundo Carmona Antoranz (2):
blame: report correct number of lines in progress when using ranges
rebase: simplify an assignment of options.type in cmd_rebase
Elia Pinto (2):
Makefile: add a prerequisite to the coverage-report target
contrib/coccinnelle: add equals-null.cocci
Elijah Newren (9):
tests: stop assuming --no-cone is the default mode for sparse-checkout
sparse-checkout: make --cone the default
git-sparse-checkout.txt: wording updates for the cone mode default
git-sparse-checkout.txt: update docs for deprecation of 'init'
git-sparse-checkout.txt: shuffle some sections and mark as internal
git-sparse-checkout.txt: add a new EXAMPLES section
git-sparse-checkout.txt: flesh out pattern set sections a bit
git-sparse-checkout.txt: mark non-cone mode as deprecated
Documentation: some sparsity wording clarifications
Emir SARI (1):
l10n: tr: v2.37.0 round #1
Fabian Stelzer (1):
gpg docs: explain better use of ssh.defaultKeyCommand
Fangyi Zhou (3):
push: fix capitalisation of the option name autoSetupMerge
builtin/rebase: remove a redundant space in l10n string
l10n: zh_CN: v2.37.0 round 1
Fernando Ramos (4):
vimdiff: new implementation with layout support
vimdiff: integrate layout tests in the unit tests framework ('t' folder)
vimdiff: add tool documentation
mergetools: add description to all diff/merge tools
Frantisek Hrbata (3):
transport: remove unnecessary indenting in transport_push()
transport: unify return values and exit point from transport_push()
transport: free local and remote refs in transport_push()
Garrit Franke (3):
cli: add -v and -h shorthands
serve.c: remove unnecessary include
apply.c: remove unnecessary include
Glen Choo (4):
pull: do not let submodule.recurse override fetch.recurseSubmodules
remote.c: don't BUG() on 0-length branch names
remote.c: reject 0-length branch names
config: document and test the 'worktree' scope
Jason Yundt (1):
gitweb: switch to an XHTML5 DOCTYPE
Jean-Noël Avila (1):
l10n: fr v2.37 round 1
Jeff Hostetler (30):
fsm-listen-win32: handle shortnames
t7527: test FSMonitor on repos with Unicode root paths
t/helper/fsmonitor-client: create stress test
fsmonitor-settings: bare repos are incompatible with FSMonitor
fsmonitor-settings: stub in Win32-specific incompatibility checking
fsmonitor-settings: VFS for Git virtual repos are incompatible
fsmonitor-settings: stub in macOS-specific incompatibility checking
fsmonitor-settings: remote repos on macOS are incompatible
fsmonitor-settings: remote repos on Windows are incompatible
fsmonitor-settings: NTFS and FAT32 on MacOS are incompatible
unpack-trees: initialize fsmonitor_has_run_once in o->result
fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS
fsmonitor--daemon: cd out of worktree root
fsmonitor--daemon: prepare for adding health thread
fsmonitor--daemon: rename listener thread related variables
fsmonitor--daemon: stub in health thread
fsm-health-win32: add polling framework to monitor daemon health
fsm-health-win32: force shutdown daemon if worktree root moves
fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed
fsmonitor: optimize processing of directory events
t7527: FSMonitor tests for directory moves
t/perf/p7527: add perf test for builtin FSMonitor
fsmonitor: never set CE_FSMONITOR_VALID on submodules
t7527: test FSMonitor on case insensitive+preserving file system
fsmonitor: on macOS also emit NFC spelling for NFD pathname
t/helper/hexdump: add helper to print hexdump of stdin
t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd
t7527: test Unicode NFC/NFD handling on MacOS
fsmonitor--daemon: allow --super-prefix argument
t7527: improve implicit shutdown testing in fsmonitor--daemon
Jeff King (2):
perf-lib: fix missing test titles in output
bug_fl(): correctly initialize trace2 va_list
Jiang Xin (6):
Makefile: sort source files before feeding to xgettext
Makefile: generate "po/git.pot" from stable LOCALIZED_C
Makefile: remove duplicate and unwanted files in FOUND_SOURCE_FILES
po/git.pot: this is now a generated file
Makefile: add "po-update" rule to update po/XX.po
i18n: fix mismatched camelCase config variables
Joakim Petersen (2):
git-prompt: make colourization consistent
git-prompt: fix expansion of branch colour codes
Joel Holdsworth (22):
git-p4: add blank lines between functions and class definitions
git-p4: remove unneeded semicolons from statements
git-p4: indent with 4-spaces
git-p4: improve consistency of docstring formatting
git-p4: convert descriptive class and function comments into docstrings
git-p4: remove commented code
git-p4: sort and de-duplcate pylint disable list
git-p4: remove padding from lists, tuples and function arguments
git-p4: remove spaces around default arguments
git-p4: removed brackets when assigning multiple return values
git-p4: place a single space after every comma
git-p4: remove extraneous spaces before function arguments
git-p4: remove redundant backslash-continuations inside brackets
git-p4: remove spaces between dictionary keys and colons
git-p4: ensure every comment has a single #
git-p4: ensure there is a single space around all operators
git-p4: normalize indentation of lines in conditionals
git-p4: compare to singletons with "is" and "is not"
git-p4: only seperate code blocks by a single empty line
git-p4: move inline comments to line above
git-p4: seperate multiple statements onto seperate lines
git-p4: sort imports
Johannes Schindelin (36):
t2016: require the PERL prereq only when necessary
add -i: default to the built-in implementation
trace2 docs: a couple of grammar fixes
trace2 docs: "printf" is not an English word
trace2 docs: surround more terms in backticks
trace2 docs: fix a JSON formatted example
trace2 docs: clarify what `varargs` is all about
trace2 docs: add missing full stop
ci: fix code style
tests: refactor --write-junit-xml code
test(junit): avoid line feeds in XML attributes
ci/run-build-and-tests: take a more high-level view
ci: make it easier to find failed tests' logs in the GitHub workflow
ci/run-build-and-tests: add some structure to the GitHub workflow output
ci: optionally mark up output in the GitHub workflow
ci(github): skip the logs of the successful test cases
ci: use `--github-workflow-markup` in the GitHub workflow
ci(github): mention where the full logs can be found
ci: call `finalize_test_case_output` a little later
compat/win32/syslog: fix use-after-realloc
nedmalloc: avoid new compile error
dir.c: avoid "exceeds maximum object size" error with GCC v12.x
archive: optionally add "virtual" files
archive --add-virtual-file: allow paths containing colons
scalar: validate the optional enlistment argument
scalar: implement `scalar diagnose`
scalar diagnose: include disk space information
ci(github): bring back the 'print test failures' step
ci(github): use grouping also in the `win-build` job
ci(github): also mark up compile errors
fsmonitor: avoid memory leak in `fsm_settings__get_incompatible_msg()`
submodule-config: avoid memory leak
submodule--helper: avoid memory leak when fetching submodules
read_index_from(): avoid memory leak
pack-mtimes: avoid closing a bogus file descriptor
relative_url(): fix incorrect condition
Jonathan Tan (2):
fetch-pack: make unexpected peek result non-fatal
commit,shallow: unparse commits if grafts changed
Jordi Mas (1):
l10n: Update Catalan translation
Josh Steadmon (1):
run-command: don't spam trace2_child_exit()
Junio C Hamano (40):
show-branch: -g and --current are incompatible
2.36 gitk/diff-tree --stdin regression fix
Some regression fixes for 2.36
2.36 show regression fix
clone: plug a miniscule leak
cocci: drop bogus xstrdup_or_null() rule
tree-wide: apply equals-null.cocci
tree-wide: apply equals-null.cocci
tree-wide: apply equals-null.cocci
A bit more regression fixes for 2.36
Git 2.36.1
0th batch for topics from the previous cycle
SubmittingPatches: use more stable git.ozlabs.org URL
second 0th batch of topics from the previous cycle
archive: do not let on-disk mode leak to zip archives
commit: fix "author_ident" leak
fetch: do not run a redundant fetch from submodule
t6424: make sure a failed merge preserves local changes
First batch for 2.37
Second batch
Third batch
Fourth batch
revert: optionally refer to commit in the "reference" format
http.c: clear the 'finished' member once we are done with it
pathspec: correct an empty string used as a pathspec element
Fifth batch
revert: --reference should apply only to 'revert', not 'cherry-pick'
Sixth batch
Revert -Wno-error=dangling-pointer
Seventh batch
Eighth batch
cocci: retire is_null_sha1() rule
Prepare for 2.36.2
Ninth batch
Git 2.37-rc0
Fixes and updates post -rc0
Another batch of fixes before -rc1
Git 2.37-rc1
Git 2.37-rc2
Git 2.37
Kevin Locke (1):
setup: don't die if realpath(3) fails on getcwd(3)
Khalid Masum (1):
t3501: remove test -f and stop ignoring git <cmd> exit code
Kirill Frolov (1):
git-p4: fix issue with multiple perforce remotes
Kleber Tarcísio (1):
commit-graph: close file before returning NULL
Matthew John Cheetham (2):
scalar: teach `diagnose` to gather packfile info
scalar: teach `diagnose` to gather loose objects information
Matthias Rüster (2):
l10n: de.po: Update German translation
l10n: TEAMS: Change German translation team leader
Michael J Gruber (1):
detect-compiler: make detection independent of locale
Miklos Vajna (1):
log: "--since-as-filter" option is a non-terminating "--since" variant
Neeraj Singh (12):
bulk-checkin: rename 'state' variable and separate 'plugged' boolean
bulk-checkin: rebrand plug/unplug APIs as 'odb transactions'
core.fsyncmethod: batched disk flushes for loose-objects
cache-tree: use ODB transaction around writing a tree
builtin/add: add ODB transaction around add_files_to_cache
update-index: use the bulk-checkin infrastructure
unpack-objects: use the bulk-checkin infrastructure
core.fsync: use batch mode and sync loose objects by default on Windows
test-lib-functions: add parsing helpers for ls-files and ls-tree
core.fsyncmethod: tests for batch mode
core.fsyncmethod: performance tests for batch mode
t/perf: add iteration setup mechanism to perf-lib
Orgad Shaneh (2):
submodule--helper: fix initialization of warn_if_uninitialized
fetch: limit shared symref check only for local branches
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5367t0f0u)
Philip Oakley (4):
rebase.c: state preserve-merges has been removed
rebase: help users when dying with `preserve-merges`
rebase: note `preserve` merges may be a pull config option
rebase: translate a die(preserve-merges) message
Philippe Blain (8):
submodule.h: use a named enum for RECURSE_SUBMODULES_*
MyFirstContribution: add "Anatomy of a Patch Series" section
MyFirstContribution: add standalone section on cover letter
MyFirstContribution: reference "The cover letter" in "Preparing Email"
MyFirstContribution: reference "The cover letter" in GitGitGadget section
MyFirstContribution: drop PR description for GGG single-patch contributions
ci: update Cirrus-CI image to FreeBSD 12.3
range-diff: show submodule changes irrespective of diff.submodule
Phillip Wood (1):
tests: make SANITIZE=address imply TEST_NO_MALLOC_CHECK
René Scharfe (10):
commit, sequencer: turn off break_opt for commit summary
t7812: test PCRE2 whitespace bug
tempfile: add mks_tempfile_dt()
diff: use mks_tempfile_dt()
Revert "name-rev: release unused name strings"
2.36 format-patch regression fix
2.36 fast-export regression fix
archive: improve documentation of --prefix
gc: simplify --cruft description
revert: config documentation fixes
SZEDER Gábor (3):
t0033-safe-directory: check the error message without matching the trash dir
t0033-safe-directory: check when 'safe.directory' is ignored
safe.directory: document and check that it's ignored in the environment
Siddharth Asthana (1):
t1011: replace test -f with test_path_is_file
Son Luong Ngoc (1):
fsmonitor: query watchman with right valid json
Tao Klerks (8):
untracked-cache: test untracked-cache-bypassing behavior with -uall
untracked-cache: support '--untracked-files=all' if configured
git-p4: support explicit sync of arbitrary existing git-p4 refs
git-p4: preserve utf8 BOM when importing from p4 to git
branch: new autosetupmerge option 'simple' for matching branches
push: default to single remote even when not named origin
push: new config option "push.autoSetupRemote" supports "simple" push
git-p4: improve encoding handling to support inconsistent encodings
Taylor Blau (26):
builtin/receive-pack.c: remove redundant 'if'
t7703: demonstrate object corruption with pack.packSizeLimit
builtin/repack.c: ensure that `names` is sorted
Documentation/technical: add cruft-packs.txt
pack-bitmap.c: check preferred pack validity when opening MIDX bitmap
builtin/pack-objects.c: avoid redundant NULL check
builtin/pack-objects.c: ensure included `--stdin-packs` exist
builtin/pack-objects.c: ensure pack validity from MIDX bitmap objects
pack-mtimes: support reading .mtimes files
pack-write: pass 'struct packing_data' to 'stage_tmp_packfiles'
chunk-format.h: extract oid_version()
pack-mtimes: support writing pack .mtimes files
t/helper: add 'pack-mtimes' test-tool
builtin/pack-objects.c: return from create_object_entry()
builtin/pack-objects.c: --cruft without expiration
reachable: add options to add_unseen_recent_objects_to_traversal
reachable: report precise timestamps from objects in cruft packs
builtin/pack-objects.c: --cruft with expiration
builtin/repack.c: support generating a cruft pack
builtin/repack.c: allow configuring cruft pack generation
builtin/repack.c: use named flags for existing_packs
builtin/repack.c: add cruft packs to MIDX during geometric repack
builtin/gc.c: conditionally avoid pruning objects via loose
sha1-file.c: don't freshen cruft packs
builtin/show-ref.c: avoid over-iterating with --heads, --tags
Documentation/config/transfer.txt: fix typo
Trần Ngọc Quân (1):
l10n: vi(5367t): Updated translation
Victoria Dye (8):
stash: expand sparse-checkout compatibility testing
stash: integrate with sparse index
sparse-index: expose 'is_sparse_index_allowed()'
read-cache: set sparsity when index is new
stash: apply stash using 'merge_ort_nonrecursive()'
unpack-trees: preserve index sparsity
repack: respect --keep-pack with geometric repack
ci(github): avoid printing test case preamble twice
Yi-Jyun Pan (1):
l10n: zh_TW: v2.37.0 round 1
Yuyi Wang (3):
cmake: fix CMakeLists.txt on Linux
cmake: add pcre2 support
cmake: remove (_)UNICODE def on Windows in CMakeLists.txt
ZheNing Hu (1):
read-cache.c: reduce unnecessary cache entry name copying
halilsen (2):
gitk: trivial indentation fix
gitk: include y coord in recorded sash position
Ævar Arnfjörð Bjarmason (66):
run-command.h: remove always unused "clean_on_exit_handler_cbdata"
configure.ac: remove USE_PIC comment
xdiff/xmacros.h: remove unused XDL_PTRFREE
pack-bitmap-write: remove unused bitmap_reset() function
object-store.h: remove unused has_sha1_file*()
alloc.[ch]: remove alloc_report() function
t/helper/test-fast-rebase.c: don't leak "struct strbuf"
blame: use "goto cleanup" for cleanup_scoreboard()
string_list API users: use string_list_init_{no,}dup
format-patch: don't leak "extra_headers" or "ref_message_ids"
cocci: add and apply free_commit_list() rules
revision.[ch]: provide and start using a release_revisions()
revisions API users: add straightforward release_revisions()
revision.[ch]: document and move code declared around "init"
revisions API users: use release_revisions() needing REV_INFO_INIT
stash: always have the owner of "stash_info" free it
revisions API users: add "goto cleanup" for release_revisions()
revisions API users: use release_revisions() in http-push.c
revisions API users: use release_revisions() in builtin/log.c
revisions API users: use release_revisions() with UNLEAK()
revisions API users: use release_revisions() for "prune_data" users
revisions API: have release_revisions() release "commits"
revisions API: have release_revisions() release "mailmap"
revisions API: have release_revisions() release "cmdline"
revisions API: have release_revisions() release "filter"
revisions API: have release_revisions() release "grep_filter"
revisions API: have release_revisions() release "prune_data"
revisions API: clear "boundary_commits" in release_revisions()
revisions API: release "reflog_info" in release revisions()
revisions API: call diff_free(&revs->pruning) in revisions_release()
revisions API: have release_revisions() release "date_mode"
revisions API: have release_revisions() release "topo_walk_info"
revisions API: add a TODO for diff_free(&revs->diffopt)
CI: select CC based on CC_PACKAGE (again)
tests: using custom GIT_EXEC_PATH breaks --valgrind tests
log test: skip a failing mkstemp() test under valgrind
object-file: fix a unpack_loose_header() regression in 3b6a8db3b03
commit-graph.c: don't assume that stat() succeeds
ci: use https, not http to download binaries from perforce.com
connect.c: refactor sending of agent & object-format
dir API: add a generalized path_match_flags() function
fetch-pack: add a deref_without_lazy_fetch_extended()
fetch-pack: move --keep=* option filling to a function
bundle.h: make "fd" version of read_bundle_header() public
Makefile: have "make pot" not "reset --hard"
i18n CI: stop allowing non-ASCII source messages in po/git.pot
po/git.pot: don't check in result of "make pot"
Makefile: add "po-init" rule to initialize po/XX.po
l10n: Document the new l10n workflow
common-main.c: move non-trace2 exit() behavior out of trace2.c
usage.c: add a non-fatal bug() function to go with BUG()
parse-options.c: use new bug() API for optbug()
parse-options.c: use optbug() instead of BUG() "opts" check
receive-pack: use bug() and BUG_if_bug()
cache-tree.c: use bug() and BUG_if_bug()
run-command API: rename "env_array" to "env"
run-command API users: use "env" not "env_array" in comments & names
ls-tree: test for the regression in 9c4d58ff2c3
run-command: add an "ungroup" option to run_process_parallel()
remote.c: remove braces from one-statement "for"-loops
remote.c: don't dereference NULL in freeing loop
hook API: fix v2.36.0 regression: hooks should be connected to a TTY
add -i tests: mark "TODO" depending on GIT_TEST_ADD_I_USE_BUILTIN
fetch doc: note "pushurl" caveat about "credentialsInUrl", elaborate
transfer doc: move fetch.credentialsInUrl to "transfer" config namespace
tests: add LIBCURL prerequisite to tests needing libcurl
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.37.0-rc2
@ 2022-06-22 19:32 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-06-22 19:32 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.37.0-rc2 is now available for testing at
the usual places. It is comprised of 378 non-merge commits since
v2.36.0, contributed by 64 people, 19 of which are new faces [*].
Due to summer vacation season in the northern hemisphere, this cycle
is shorter than usual. We expect to tag the final 2.37 release
early next week. Hopefully we fixed all the known regressions in
2.36 without adding too many new ones.
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.37.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.36.0 are as follows.
Welcome to the Git development community!
Chris Down, Daniel Li, Fernando Ramos, Frantisek Hrbata,
Garrit Franke, Gregory David, Guy Maurel, halilsen, Huang Zou,
"Ing. Martin Prantl Ph.D.", Joakim Petersen, Kevin Locke,
Khalid Masum, Kirill Frolov, Kleber Tarcísio, Laurent Lyaudet,
Siddharth Asthana, Thomas Hurst, and Yuyi Wang.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Ævar Arnfjörð Bjarmason, Alexander
Shopov, Alex Henrie, Anthony Sottile, BRESSAT Jonathan, Carlo
Arenas, Carlo Marcelo Arenas Belón, Christian Couder, COGONI
Guillaume, Derrick Stolee, Edmundo Carmona Antoranz, Elia Pinto,
Elijah Newren, Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen
Choo, Jason Yundt, Jeff Hostetler, Jeff King, Jiang Xin, Joel
Holdsworth, Johannes Schindelin, Jonathan Tan, Josh Steadmon,
Junio C Hamano, Matthew John Cheetham, Matthias Aßhauer,
Matthieu Moy, Michael J Gruber, Miklos Vajna, Neeraj Singh,
Orgad Shaneh, Philip Oakley, Philippe Blain, Phillip Wood,
Randall S. Becker, René Scharfe, Son Luong Ngoc, SZEDER Gábor,
Tao Klerks, Taylor Blau, 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.37 Release Notes (draft)
===============================
UI, Workflows & Features
* "vimdiff[123]" mergetool drivers have been reimplemented with a
more generic layout mechanism.
* "git -v" and "git -h" are now understood as "git --version" and
"git --help".
* The temporary files fed to external diff command are now generated
inside a new temporary directory under the same basename.
* "git log --since=X" will stop traversal upon seeing a commit that
is older than X, but there may be commits behind it that is younger
than X when the commit was created with a faulty clock. A new
option is added to keep digging without stopping, and instead
filter out commits with timestamp older than X.
* "git -c branch.autosetupmerge=simple branch $A $B" will set the $B
as $A's upstream only when $A and $B shares the same name, and "git
-c push.default=simple" on branch $A would push to update the
branch $A at the remote $B came from. Also more places use the
sole remote, if exists, before defaulting to 'origin'.
* A new doc has been added that lists tips for tools to work with
Git's codebase.
* "git remote -v" now shows the list-objects-filter used during
fetching from the remote, if available.
* With the new http.curloptResolve configuration, the CURLOPT_RESOLVE
mechanism that allows cURL based applications to use pre-resolved
IP addresses for the requests is exposed to the scripts.
* "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.
* Deprecate non-cone mode of the sparse-checkout feature.
* Introduce a filesystem-dependent mechanism to optimize the way the
bits for many loose object files are ensured to hit the disk
platter.
* The "do not remove the directory the user started Git in" logic,
when Git cannot tell where that directory is, is disabled. Earlier
we refused to run in such a case.
* A mechanism to pack unreachable objects into a "cruft pack",
instead of ejecting them into loose form to be reclaimed later, has
been introduced.
* Update the doctype written in gitweb output to xhtml5.
* The "transfer.credentialsInURL" configuration variable controls what
happens when a URL with embedded login credential is used on either
"fetch" or "push". Credentials are currently only detected in
`remote.<name>.url` config, not `remote.<name>.pushurl`.
* "git revert" learns "--reference" option to use more human-readable
reference to the commit it reverts in the message template it
prepares for the user.
* Various error messages that talk about the removal of
"--preserve-merges" in "rebase" have been strengthened, and "rebase
--abort" learned to get out of a state that was left by an earlier
use of the option.
Performance, Internal Implementation, Development Support etc.
* The performance of the "untracked cache" feature has been improved
when "--untracked-files=<mode>" and "status.showUntrackedFiles"
are combined.
* "git stash" works better with sparse index entries.
* "git show :<path>" learned to work better with the sparse-index
feature.
* Introduce and apply coccinelle rule to discourage an explicit
comparison between a pointer and NULL, and applies the clean-up to
the maintenance track.
* Preliminary code refactoring around transport and bundle code.
* "sparse-checkout" learns to work better with the sparse-index
feature.
* A workflow change for translators are being proposed. git.pot is
no longer version controlled and it is local responsibility of
translators to generate it.
* Plug the memory leaks from the trickiest API of all, the revision
walker.
* Rename .env_array member to .env in the child_process structure.
* The fsmonitor--daemon handles even more corner cases when
watching filesystem events.
* A new bug() and BUG_if_bug() API is introduced to make it easier to
uniformly log "detect multiple bugs and abort in the end" pattern.
Fixes since v2.36
-----------------
* "git submodule update" without pathspec should silently skip an
uninitialized submodule, but it started to become noisy by mistake.
(merge 4f1ccef87c gc/submodule-update-part2 later to maint).
* "diff-tree --stdin" has been broken for about a year, but 2.36
release broke it even worse by breaking running the command with
<pathspec>, which in turn broke "gitk" and got noticed. This has
been corrected by aligning its behaviour to that of "log".
(merge f8781bfda3 jc/diff-tree-stdin-fix later to maint).
* Regression fix for 2.36 where "git name-rev" started to sometimes
reference strings after they are freed.
(merge 45a14f578e rs/name-rev-fix-free-after-use later to maint).
* "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
when showing the second and subsequent commits, which has been
corrected.
(merge 5cdb38458e jc/show-pathspec-fix later to maint).
* "git fast-export -- <pathspec>" lost the pathspec when showing the
second and subsequent commits, which has been corrected.
(merge d1c25272f5 rs/fast-export-pathspec-fix later to maint).
* "git format-patch <args> -- <pathspec>" lost the pathspec when
showing the second and subsequent commits, which has been
corrected.
(merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint).
* "git clone --origin X" leaked piece of memory that held value read
from the clone.defaultRemoteName configuration variable, which has
been plugged.
(merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint).
* Get rid of a bogus and over-eager coccinelle rule.
(merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint).
* The path taken by "git multi-pack-index" command from the end user
was compared with path internally prepared by the tool without first
normalizing, which lead to duplicated paths not being noticed,
which has been corrected.
(merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint).
* Correct choices of C compilers used in various CI jobs.
(merge 3506cae04f ab/cc-package-fixes later to maint).
* Various cleanups to "git p4".
(merge 4ff0108d9e jh/p4-various-fixups later to maint).
* The progress meter of "git blame" was showing incorrect numbers
when processing only parts of the file.
(merge e5f5d7d42e ea/progress-partial-blame later to maint).
* "git rebase --keep-base <upstream> <branch-to-rebase>" computed the
commit to rebase onto incorrectly, which has been corrected.
(merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint).
* Fix a leak of FILE * in an error codepath.
(merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint).
* Avoid problems from interaction between malloc_check and address
sanitizer.
(merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint).
* The commit summary shown after making a commit is matched to what
is given in "git status" not to use the break-rewrite heuristics.
(merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint).
* Update a few end-user facing messages around EOL conversion.
(merge c970d30c2c ah/convert-warning-message later to maint).
* Trace2 documentation updates.
(merge a6c80c313c js/trace2-doc-fixes later to maint).
* Build procedure fixup.
(merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint).
* "git pull" without "--recurse-submodules=<arg>" made
submodule.recurse take precedence over fetch.recurseSubmodules by
mistake, which has been corrected.
(merge 5819417365 gc/pull-recurse-submodules later to maint).
* "git bisect" was too silent before it is ready to start computing
the actual bisection, which has been corrected.
(merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint).
* macOS CI jobs have been occasionally flaky due to tentative version
skew between perforce and the homebrew packager. Instead of
failing the whole CI job, just let it skip the p4 tests when this
happens.
(merge f15e00b463 cb/ci-make-p4-optional later to maint).
* A bit of test framework fixes with a few fixes to issues found by
valgrind.
(merge 7c898554d7 ab/valgrind-fixes later to maint).
* "git archive --add-file=<path>" picked up the raw permission bits
from the path and propagated to zip output in some cases, without
normalization, which has been corrected (tar output did not have
this issue).
(merge 6a61661967 jc/archive-add-file-normalize-mode later to maint).
* "make coverage-report" without first running "make coverage" did
not produce any meaningful result, which has been corrected.
(merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint).
* The "--current" option of "git show-branch" should have been made
incompatible with the "--reflog" mode, but this was not enforced,
which has been corrected.
(merge 41c64ae0e7 jc/show-branch-g-current later to maint).
* "git fetch" unnecessarily failed when an unexpected optional
section appeared in the output, which has been corrected.
(merge 7709acf7be jt/fetch-peek-optional-section later to maint).
* The way "git fetch" without "--update-head-ok" ensures that HEAD in
no worktree points at any ref being updated was too wasteful, which
has been optimized a bit.
(merge f7400da800 os/fetch-check-not-current-branch later to maint).
* "git fetch --recurse-submodules" from multiple remotes (either from
a remote group, or "--all") used to make one extra "git fetch" in
the submodules, which has been corrected.
(merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint).
* With a recent update to refuse access to repositories of other
people by default, "sudo make install" and "sudo git describe"
stopped working, which has been corrected.
(merge 6b11e3d52e cb/path-owner-check-with-sudo-plus later to maint).
* The tests that ensured merges stop when interfering local changes
are present did not make sure that local changes are preserved; now
they do.
(merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint).
* Some real problems noticed by gcc 12 have been fixed, while false
positives have been worked around.
* Update the version of FreeBSD image used in Cirrus CI.
(merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint).
* The multi-pack-index code did not protect the packfile it is going
to depend on from getting removed while in use, which has been
corrected.
(merge 4090511e40 tb/midx-race-in-pack-objects later to maint).
* Teach "git repack --geometric" work better with "--keep-pack" and
avoid corrupting the repository when packsize limit is used.
(merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint).
* The documentation on the interaction between "--add-file" and
"--prefix" options of "git archive" has been improved.
(merge a75910602a rs/document-archive-prefix later to maint).
* A git subcommand like "git add -p" spawns a separate git process
while relaying its command line arguments. A pathspec with only
negative elements was mistakenly passed with an empty string, which
has been corrected.
(merge b02fdbc80a jc/all-negative-pathspec later to maint).
* With a more targeted workaround in http.c in another topic, we may
be able to lift this blanket "GCC12 dangling-pointer warning is
broken and unsalvageable" workaround.
(merge 419141e495 cb/buggy-gcc-12-workaround later to maint).
* A misconfigured 'branch..remote' led to a bug in configuration
parsing.
(merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint).
* "git -c diff.submodule=log range-diff" did not show anything for
submodules that changed in the ranges being compared, and
"git -c diff.submodule=diff range-diff" did not work correctly.
Fix this by including the "--submodule=short" output
unconditionally to be compared.
* In Git 2.36 we revamped the way how hooks are invoked. One change
that is end-user visible is that the output of a hook is no longer
directly connected to the standard output of "git" that spawns the
hook, which was noticed post release. This is getting corrected.
(merge a082345372 ab/hooks-regression-fix later to maint).
* Updating the graft information invalidates the list of parents of
in-core commit objects that used to be in the graft file.
* "git show-ref --heads" (and "--tags") still iterated over all the
refs only to discard refs outside the specified area, which has
been corrected.
(merge c0c9d35e27 tb/show-ref-optim later to maint).
* Remove redundant copying (with index v3 and older) or possible
over-reading beyond end of mmapped memory (with index v4) has been
corrected.
(merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint).
* Sample watchman interface hook sometimes failed to produce
correctly formatted JSON message, which has been corrected.
(merge 134047b500 sn/fsmonitor-missing-clock later to maint).
* Use-after-free (with another forget-to-free) fix.
(merge 323822c72b ab/remote-free-fix later to maint).
* Remove a coccinelle rule that is no longer relevant.
(merge b1299de4a1 jc/cocci-cleanup later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge e6b2582da3 cm/reftable-0-length-memset later to maint).
(merge 0b75e5bf22 ab/misc-cleanup later to maint).
(merge 52e1ab8a76 ea/rebase-code-simplify later to maint).
(merge 756d15923b sg/safe-directory-tests-and-docs later to maint).
(merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint).
(merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint).
(merge 1da312742d gf/unused-includes later to maint).
(merge 465b30a92d pb/submodule-recurse-mode-enum later to maint).
(merge 82b28c4ed8 km/t3501-use-test-helpers later to maint).
(merge 72315e431b sa/t1011-use-helpers later to maint).
(merge 95b3002201 cg/vscode-with-gdb later to maint).
(merge fbe5f6b804 tk/p4-utf8-bom later to maint).
(merge 17f273ffba tk/p4-with-explicity-sync later to maint).
(merge 944db25c60 kf/p4-multiple-remotes later to maint).
(merge b014cee8de jc/update-ozlabs-url later to maint).
(merge 4ec5008062 pb/ggg-in-mfc-doc later to maint).
(merge af845a604d tb/receive-pack-code-cleanup later to maint).
(merge 2acf4cf001 js/ci-gcc-12-fixes later to maint).
(merge 05e280c0a6 jc/http-clear-finished-pointer later to maint).
(merge 8c49d704ef fh/transport-push-leakfix later to maint).
(merge 1d232d38bd tl/ls-tree-oid-only later to maint).
(merge db7961e6a6 gc/document-config-worktree-scope later to maint).
(merge ce18a30bb7 fs/ssh-default-key-command-doc later to maint).
----------------------------------------------------------------
Changes since v2.36.0 are as follows:
Abhradeep Chakraborty (1):
builtin/remote.c: teach `-v` to list filters for promisor remotes
Alex Henrie (2):
convert: clarify line ending conversion warning
rebase: use correct base for --keep-base when a branch is given
Alexander Shopov (1):
name-rev: prefix annotate-stdin with '--' in message
COGONI Guillaume (2):
contrib/vscode/: debugging with VS Code and gdb
Documentation/ToolsForGit.txt: Tools for developing Git
Carlo Marcelo Arenas Belón (8):
reftable: avoid undefined behaviour breaking t0032
ci: make failure to find perforce more user friendly
ci: avoid brew for installing perforce
ci: reintroduce prevention from perforce being quarantined in macOS
t: regression git needs safe.directory when using sudo
git-compat-util: avoid failing dir ownership checks if running privileged
t0034: add negative tests and allow git init to mostly work under sudo
git-compat-util: allow root to access both SUDO_UID and root owned
Chris Down (2):
bisect: output state before we are ready to compute bisection
bisect: output bisect setup status in bisect log
Christian Couder (1):
http: add custom hostname to IP address resolutions
Derrick Stolee (28):
clone: die() instead of BUG() on bad refs
midx: use real paths in lookup_multi_pack_index()
multi-pack-index: use --object-dir real path
cache: use const char * for get_object_directory()
t1092: add compatibility tests for 'git show'
show: integrate with the sparse index
object-name: reject trees found in the index
object-name: diagnose trees in index properly
rev-parse: integrate with sparse index
http: make http_get_file() external
remote: move relative_url()
remote: allow relative_url() to return an absolute url
object-file: convert 'switch' back to 'if'
t1092: refactor 'sparse-index contents' test
t1092: stress test 'git sparse-checkout set'
sparse-index: create expand_index()
sparse-index: introduce partially-sparse indexes
cache-tree: implement cache_tree_find_path()
sparse-checkout: --no-sparse-index needs a full index
sparse-index: partially expand directories
sparse-index: complete partial expansion
p2000: add test for 'git sparse-checkout [add|set]'
sparse-checkout: integrate with sparse index
remote: create fetch.credentialsInUrl config
t2107: test 'git update-index --verbose'
t5329: test 'git gc --cruft' without '--prune=now'
pack-write: drop always-NULL parameter
cache-tree: remove cache_tree_find_path()
Edmundo Carmona Antoranz (2):
blame: report correct number of lines in progress when using ranges
rebase: simplify an assignment of options.type in cmd_rebase
Elia Pinto (2):
Makefile: add a prerequisite to the coverage-report target
contrib/coccinnelle: add equals-null.cocci
Elijah Newren (9):
tests: stop assuming --no-cone is the default mode for sparse-checkout
sparse-checkout: make --cone the default
git-sparse-checkout.txt: wording updates for the cone mode default
git-sparse-checkout.txt: update docs for deprecation of 'init'
git-sparse-checkout.txt: shuffle some sections and mark as internal
git-sparse-checkout.txt: add a new EXAMPLES section
git-sparse-checkout.txt: flesh out pattern set sections a bit
git-sparse-checkout.txt: mark non-cone mode as deprecated
Documentation: some sparsity wording clarifications
Fabian Stelzer (1):
gpg docs: explain better use of ssh.defaultKeyCommand
Fangyi Zhou (2):
push: fix capitalisation of the option name autoSetupMerge
builtin/rebase: remove a redundant space in l10n string
Fernando Ramos (4):
vimdiff: new implementation with layout support
vimdiff: integrate layout tests in the unit tests framework ('t' folder)
vimdiff: add tool documentation
mergetools: add description to all diff/merge tools
Frantisek Hrbata (3):
transport: remove unnecessary indenting in transport_push()
transport: unify return values and exit point from transport_push()
transport: free local and remote refs in transport_push()
Garrit Franke (3):
cli: add -v and -h shorthands
serve.c: remove unnecessary include
apply.c: remove unnecessary include
Glen Choo (4):
pull: do not let submodule.recurse override fetch.recurseSubmodules
remote.c: don't BUG() on 0-length branch names
remote.c: reject 0-length branch names
config: document and test the 'worktree' scope
Jason Yundt (1):
gitweb: switch to an XHTML5 DOCTYPE
Jeff Hostetler (30):
fsm-listen-win32: handle shortnames
t7527: test FSMonitor on repos with Unicode root paths
t/helper/fsmonitor-client: create stress test
fsmonitor-settings: bare repos are incompatible with FSMonitor
fsmonitor-settings: stub in Win32-specific incompatibility checking
fsmonitor-settings: VFS for Git virtual repos are incompatible
fsmonitor-settings: stub in macOS-specific incompatibility checking
fsmonitor-settings: remote repos on macOS are incompatible
fsmonitor-settings: remote repos on Windows are incompatible
fsmonitor-settings: NTFS and FAT32 on MacOS are incompatible
unpack-trees: initialize fsmonitor_has_run_once in o->result
fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS
fsmonitor--daemon: cd out of worktree root
fsmonitor--daemon: prepare for adding health thread
fsmonitor--daemon: rename listener thread related variables
fsmonitor--daemon: stub in health thread
fsm-health-win32: add polling framework to monitor daemon health
fsm-health-win32: force shutdown daemon if worktree root moves
fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed
fsmonitor: optimize processing of directory events
t7527: FSMonitor tests for directory moves
t/perf/p7527: add perf test for builtin FSMonitor
fsmonitor: never set CE_FSMONITOR_VALID on submodules
t7527: test FSMonitor on case insensitive+preserving file system
fsmonitor: on macOS also emit NFC spelling for NFD pathname
t/helper/hexdump: add helper to print hexdump of stdin
t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd
t7527: test Unicode NFC/NFD handling on MacOS
fsmonitor--daemon: allow --super-prefix argument
t7527: improve implicit shutdown testing in fsmonitor--daemon
Jeff King (2):
perf-lib: fix missing test titles in output
bug_fl(): correctly initialize trace2 va_list
Jiang Xin (6):
Makefile: sort source files before feeding to xgettext
Makefile: generate "po/git.pot" from stable LOCALIZED_C
Makefile: remove duplicate and unwanted files in FOUND_SOURCE_FILES
po/git.pot: this is now a generated file
Makefile: add "po-update" rule to update po/XX.po
i18n: fix mismatched camelCase config variables
Joakim Petersen (2):
git-prompt: make colourization consistent
git-prompt: fix expansion of branch colour codes
Joel Holdsworth (22):
git-p4: add blank lines between functions and class definitions
git-p4: remove unneeded semicolons from statements
git-p4: indent with 4-spaces
git-p4: improve consistency of docstring formatting
git-p4: convert descriptive class and function comments into docstrings
git-p4: remove commented code
git-p4: sort and de-duplcate pylint disable list
git-p4: remove padding from lists, tuples and function arguments
git-p4: remove spaces around default arguments
git-p4: removed brackets when assigning multiple return values
git-p4: place a single space after every comma
git-p4: remove extraneous spaces before function arguments
git-p4: remove redundant backslash-continuations inside brackets
git-p4: remove spaces between dictionary keys and colons
git-p4: ensure every comment has a single #
git-p4: ensure there is a single space around all operators
git-p4: normalize indentation of lines in conditionals
git-p4: compare to singletons with "is" and "is not"
git-p4: only seperate code blocks by a single empty line
git-p4: move inline comments to line above
git-p4: seperate multiple statements onto seperate lines
git-p4: sort imports
Johannes Schindelin (36):
t2016: require the PERL prereq only when necessary
add -i: default to the built-in implementation
trace2 docs: a couple of grammar fixes
trace2 docs: "printf" is not an English word
trace2 docs: surround more terms in backticks
trace2 docs: fix a JSON formatted example
trace2 docs: clarify what `varargs` is all about
trace2 docs: add missing full stop
ci: fix code style
tests: refactor --write-junit-xml code
test(junit): avoid line feeds in XML attributes
ci/run-build-and-tests: take a more high-level view
ci: make it easier to find failed tests' logs in the GitHub workflow
ci/run-build-and-tests: add some structure to the GitHub workflow output
ci: optionally mark up output in the GitHub workflow
ci(github): skip the logs of the successful test cases
ci: use `--github-workflow-markup` in the GitHub workflow
ci(github): mention where the full logs can be found
ci: call `finalize_test_case_output` a little later
compat/win32/syslog: fix use-after-realloc
nedmalloc: avoid new compile error
dir.c: avoid "exceeds maximum object size" error with GCC v12.x
archive: optionally add "virtual" files
archive --add-virtual-file: allow paths containing colons
scalar: validate the optional enlistment argument
scalar: implement `scalar diagnose`
scalar diagnose: include disk space information
ci(github): bring back the 'print test failures' step
ci(github): use grouping also in the `win-build` job
ci(github): also mark up compile errors
fsmonitor: avoid memory leak in `fsm_settings__get_incompatible_msg()`
submodule-config: avoid memory leak
submodule--helper: avoid memory leak when fetching submodules
read_index_from(): avoid memory leak
pack-mtimes: avoid closing a bogus file descriptor
relative_url(): fix incorrect condition
Jonathan Tan (2):
fetch-pack: make unexpected peek result non-fatal
commit,shallow: unparse commits if grafts changed
Josh Steadmon (1):
run-command: don't spam trace2_child_exit()
Junio C Hamano (39):
show-branch: -g and --current are incompatible
2.36 gitk/diff-tree --stdin regression fix
Some regression fixes for 2.36
2.36 show regression fix
clone: plug a miniscule leak
cocci: drop bogus xstrdup_or_null() rule
tree-wide: apply equals-null.cocci
tree-wide: apply equals-null.cocci
tree-wide: apply equals-null.cocci
A bit more regression fixes for 2.36
Git 2.36.1
0th batch for topics from the previous cycle
SubmittingPatches: use more stable git.ozlabs.org URL
second 0th batch of topics from the previous cycle
archive: do not let on-disk mode leak to zip archives
commit: fix "author_ident" leak
fetch: do not run a redundant fetch from submodule
t6424: make sure a failed merge preserves local changes
First batch for 2.37
Second batch
Third batch
Fourth batch
revert: optionally refer to commit in the "reference" format
http.c: clear the 'finished' member once we are done with it
pathspec: correct an empty string used as a pathspec element
Fifth batch
revert: --reference should apply only to 'revert', not 'cherry-pick'
Sixth batch
Revert -Wno-error=dangling-pointer
Seventh batch
Eighth batch
cocci: retire is_null_sha1() rule
Prepare for 2.36.2
Ninth batch
Git 2.37-rc0
Fixes and updates post -rc0
Another batch of fixes before -rc1
Git 2.37-rc1
Git 2.37-rc2
Kevin Locke (1):
setup: don't die if realpath(3) fails on getcwd(3)
Khalid Masum (1):
t3501: remove test -f and stop ignoring git <cmd> exit code
Kirill Frolov (1):
git-p4: fix issue with multiple perforce remotes
Kleber Tarcísio (1):
commit-graph: close file before returning NULL
Matthew John Cheetham (2):
scalar: teach `diagnose` to gather packfile info
scalar: teach `diagnose` to gather loose objects information
Michael J Gruber (1):
detect-compiler: make detection independent of locale
Miklos Vajna (1):
log: "--since-as-filter" option is a non-terminating "--since" variant
Neeraj Singh (12):
bulk-checkin: rename 'state' variable and separate 'plugged' boolean
bulk-checkin: rebrand plug/unplug APIs as 'odb transactions'
core.fsyncmethod: batched disk flushes for loose-objects
cache-tree: use ODB transaction around writing a tree
builtin/add: add ODB transaction around add_files_to_cache
update-index: use the bulk-checkin infrastructure
unpack-objects: use the bulk-checkin infrastructure
core.fsync: use batch mode and sync loose objects by default on Windows
test-lib-functions: add parsing helpers for ls-files and ls-tree
core.fsyncmethod: tests for batch mode
core.fsyncmethod: performance tests for batch mode
t/perf: add iteration setup mechanism to perf-lib
Orgad Shaneh (2):
submodule--helper: fix initialization of warn_if_uninitialized
fetch: limit shared symref check only for local branches
Philip Oakley (4):
rebase.c: state preserve-merges has been removed
rebase: help users when dying with `preserve-merges`
rebase: note `preserve` merges may be a pull config option
rebase: translate a die(preserve-merges) message
Philippe Blain (8):
submodule.h: use a named enum for RECURSE_SUBMODULES_*
MyFirstContribution: add "Anatomy of a Patch Series" section
MyFirstContribution: add standalone section on cover letter
MyFirstContribution: reference "The cover letter" in "Preparing Email"
MyFirstContribution: reference "The cover letter" in GitGitGadget section
MyFirstContribution: drop PR description for GGG single-patch contributions
ci: update Cirrus-CI image to FreeBSD 12.3
range-diff: show submodule changes irrespective of diff.submodule
Phillip Wood (1):
tests: make SANITIZE=address imply TEST_NO_MALLOC_CHECK
René Scharfe (9):
commit, sequencer: turn off break_opt for commit summary
t7812: test PCRE2 whitespace bug
tempfile: add mks_tempfile_dt()
diff: use mks_tempfile_dt()
Revert "name-rev: release unused name strings"
2.36 format-patch regression fix
2.36 fast-export regression fix
archive: improve documentation of --prefix
gc: simplify --cruft description
SZEDER Gábor (3):
t0033-safe-directory: check the error message without matching the trash dir
t0033-safe-directory: check when 'safe.directory' is ignored
safe.directory: document and check that it's ignored in the environment
Siddharth Asthana (1):
t1011: replace test -f with test_path_is_file
Son Luong Ngoc (1):
fsmonitor: query watchman with right valid json
Tao Klerks (8):
untracked-cache: test untracked-cache-bypassing behavior with -uall
untracked-cache: support '--untracked-files=all' if configured
git-p4: support explicit sync of arbitrary existing git-p4 refs
git-p4: preserve utf8 BOM when importing from p4 to git
branch: new autosetupmerge option 'simple' for matching branches
push: default to single remote even when not named origin
push: new config option "push.autoSetupRemote" supports "simple" push
git-p4: improve encoding handling to support inconsistent encodings
Taylor Blau (25):
builtin/receive-pack.c: remove redundant 'if'
t7703: demonstrate object corruption with pack.packSizeLimit
builtin/repack.c: ensure that `names` is sorted
Documentation/technical: add cruft-packs.txt
pack-bitmap.c: check preferred pack validity when opening MIDX bitmap
builtin/pack-objects.c: avoid redundant NULL check
builtin/pack-objects.c: ensure included `--stdin-packs` exist
builtin/pack-objects.c: ensure pack validity from MIDX bitmap objects
pack-mtimes: support reading .mtimes files
pack-write: pass 'struct packing_data' to 'stage_tmp_packfiles'
chunk-format.h: extract oid_version()
pack-mtimes: support writing pack .mtimes files
t/helper: add 'pack-mtimes' test-tool
builtin/pack-objects.c: return from create_object_entry()
builtin/pack-objects.c: --cruft without expiration
reachable: add options to add_unseen_recent_objects_to_traversal
reachable: report precise timestamps from objects in cruft packs
builtin/pack-objects.c: --cruft with expiration
builtin/repack.c: support generating a cruft pack
builtin/repack.c: allow configuring cruft pack generation
builtin/repack.c: use named flags for existing_packs
builtin/repack.c: add cruft packs to MIDX during geometric repack
builtin/gc.c: conditionally avoid pruning objects via loose
sha1-file.c: don't freshen cruft packs
builtin/show-ref.c: avoid over-iterating with --heads, --tags
Victoria Dye (8):
stash: expand sparse-checkout compatibility testing
stash: integrate with sparse index
sparse-index: expose 'is_sparse_index_allowed()'
read-cache: set sparsity when index is new
stash: apply stash using 'merge_ort_nonrecursive()'
unpack-trees: preserve index sparsity
repack: respect --keep-pack with geometric repack
ci(github): avoid printing test case preamble twice
Yuyi Wang (3):
cmake: fix CMakeLists.txt on Linux
cmake: add pcre2 support
cmake: remove (_)UNICODE def on Windows in CMakeLists.txt
ZheNing Hu (1):
read-cache.c: reduce unnecessary cache entry name copying
halilsen (2):
gitk: trivial indentation fix
gitk: include y coord in recorded sash position
Ævar Arnfjörð Bjarmason (66):
run-command.h: remove always unused "clean_on_exit_handler_cbdata"
configure.ac: remove USE_PIC comment
xdiff/xmacros.h: remove unused XDL_PTRFREE
pack-bitmap-write: remove unused bitmap_reset() function
object-store.h: remove unused has_sha1_file*()
alloc.[ch]: remove alloc_report() function
t/helper/test-fast-rebase.c: don't leak "struct strbuf"
blame: use "goto cleanup" for cleanup_scoreboard()
string_list API users: use string_list_init_{no,}dup
format-patch: don't leak "extra_headers" or "ref_message_ids"
cocci: add and apply free_commit_list() rules
revision.[ch]: provide and start using a release_revisions()
revisions API users: add straightforward release_revisions()
revision.[ch]: document and move code declared around "init"
revisions API users: use release_revisions() needing REV_INFO_INIT
stash: always have the owner of "stash_info" free it
revisions API users: add "goto cleanup" for release_revisions()
revisions API users: use release_revisions() in http-push.c
revisions API users: use release_revisions() in builtin/log.c
revisions API users: use release_revisions() with UNLEAK()
revisions API users: use release_revisions() for "prune_data" users
revisions API: have release_revisions() release "commits"
revisions API: have release_revisions() release "mailmap"
revisions API: have release_revisions() release "cmdline"
revisions API: have release_revisions() release "filter"
revisions API: have release_revisions() release "grep_filter"
revisions API: have release_revisions() release "prune_data"
revisions API: clear "boundary_commits" in release_revisions()
revisions API: release "reflog_info" in release revisions()
revisions API: call diff_free(&revs->pruning) in revisions_release()
revisions API: have release_revisions() release "date_mode"
revisions API: have release_revisions() release "topo_walk_info"
revisions API: add a TODO for diff_free(&revs->diffopt)
CI: select CC based on CC_PACKAGE (again)
tests: using custom GIT_EXEC_PATH breaks --valgrind tests
log test: skip a failing mkstemp() test under valgrind
object-file: fix a unpack_loose_header() regression in 3b6a8db3b03
commit-graph.c: don't assume that stat() succeeds
ci: use https, not http to download binaries from perforce.com
connect.c: refactor sending of agent & object-format
dir API: add a generalized path_match_flags() function
fetch-pack: add a deref_without_lazy_fetch_extended()
fetch-pack: move --keep=* option filling to a function
bundle.h: make "fd" version of read_bundle_header() public
Makefile: have "make pot" not "reset --hard"
i18n CI: stop allowing non-ASCII source messages in po/git.pot
po/git.pot: don't check in result of "make pot"
Makefile: add "po-init" rule to initialize po/XX.po
l10n: Document the new l10n workflow
common-main.c: move non-trace2 exit() behavior out of trace2.c
usage.c: add a non-fatal bug() function to go with BUG()
parse-options.c: use new bug() API for optbug()
parse-options.c: use optbug() instead of BUG() "opts" check
receive-pack: use bug() and BUG_if_bug()
cache-tree.c: use bug() and BUG_if_bug()
run-command API: rename "env_array" to "env"
run-command API users: use "env" not "env_array" in comments & names
ls-tree: test for the regression in 9c4d58ff2c3
run-command: add an "ungroup" option to run_process_parallel()
remote.c: remove braces from one-statement "for"-loops
remote.c: don't dereference NULL in freeing loop
hook API: fix v2.36.0 regression: hooks should be connected to a TTY
add -i tests: mark "TODO" depending on GIT_TEST_ADD_I_USE_BUILTIN
fetch doc: note "pushurl" caveat about "credentialsInUrl", elaborate
transfer doc: move fetch.credentialsInUrl to "transfer" config namespace
tests: add LIBCURL prerequisite to tests needing libcurl
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.37.0-rc1
@ 2022-06-18 1:55 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-06-18 1:55 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.37.0-rc1 is now available for testing at
the usual places. It is comprised of 373 non-merge commits since
v2.36.0, contributed by 62 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.37.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.36.0 are as follows.
Welcome to the Git development community!
Chris Down, Daniel Li, Fernando Ramos, Frantisek Hrbata,
Garrit Franke, Gregory David, Guy Maurel, halilsen, Huang Zou,
"Ing. Martin Prantl Ph.D.", Kevin Locke, Khalid Masum, Kirill
Frolov, Kleber Tarcísio, Laurent Lyaudet, Siddharth Asthana,
Thomas Hurst, and Yuyi Wang.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Ævar Arnfjörð Bjarmason, Alex Henrie,
Anthony Sottile, BRESSAT Jonathan, Carlo Arenas, Carlo Marcelo
Arenas Belón, Christian Couder, COGONI Guillaume, Derrick
Stolee, Edmundo Carmona Antoranz, Elia Pinto, Elijah Newren,
Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Jason
Yundt, Jeff Hostetler, Jeff King, Jiang Xin, Joel Holdsworth,
Johannes Schindelin, Jonathan Tan, Josh Steadmon, Junio C Hamano,
Matthew John Cheetham, Matthias Aßhauer, Matthieu Moy, Michael J
Gruber, Miklos Vajna, Neeraj Singh, Orgad Shaneh, Philip Oakley,
Philippe Blain, Phillip Wood, Randall S. Becker, René Scharfe,
Son Luong Ngoc, SZEDER Gábor, Tao Klerks, Taylor Blau, 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.37 Release Notes (draft)
===============================
UI, Workflows & Features
* "vimdiff[123]" mergetool drivers have been reimplemented with a
more generic layout mechanism.
* "git -v" and "git -h" are now understood as "git --version" and
"git --help".
* The temporary files fed to external diff command are now generated
inside a new temporary directory under the same basename.
* "git log --since=X" will stop traversal upon seeing a commit that
is older than X, but there may be commits behind it that is younger
than X when the commit was created with a faulty clock. A new
option is added to keep digging without stopping, and instead
filter out commits with timestamp older than X.
* "git -c branch.autosetupmerge=simple branch $A $B" will set the $B
as $A's upstream only when $A and $B shares the same name, and "git
-c push.default=simple" on branch $A would push to update the
branch $A at the remote $B came from. Also more places use the
sole remote, if exists, before defaulting to 'origin'.
* A new doc has been added that lists tips for tools to work with
Git's codebase.
* "git remote -v" now shows the list-objects-filter used during
fetching from the remote, if available.
* With the new http.curloptResolve configuration, the CURLOPT_RESOLVE
mechanism that allows cURL based applications to use pre-resolved
IP addresses for the requests is exposed to the scripts.
* "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.
* Deprecate non-cone mode of the sparse-checkout feature.
* Introduce a filesystem-dependent mechanism to optimize the way the
bits for many loose object files are ensured to hit the disk
platter.
* The "do not remove the directory the user started Git in" logic,
when Git cannot tell where that directory is, is disabled. Earlier
we refused to run in such a case.
* A mechanism to pack unreachable objects into a "cruft pack",
instead of ejecting them into loose form to be reclaimed later, has
been introduced.
* Update the doctype written in gitweb output to xhtml5.
* The "transfer.credentialsInURL" configuration variable controls what
happens when a URL with embedded login credential is used on either
"fetch" or "push". Credentials are currently only detected in
`remote.<name>.url` config, not `remote.<name>.pushurl`.
* "git revert" learns "--reference" option to use more human-readable
reference to the commit it reverts in the message template it
prepares for the user.
* Various error messages that talk about the removal of
"--preserve-merges" in "rebase" have been strengthened, and "rebase
--abort" learned to get out of a state that was left by an earlier
use of the option.
Performance, Internal Implementation, Development Support etc.
* The performance of the "untracked cache" feature has been improved
when "--untracked-files=<mode>" and "status.showUntrackedFiles"
are combined.
* "git stash" works better with sparse index entries.
* "git show :<path>" learned to work better with the sparse-index
feature.
* Introduce and apply coccinelle rule to discourage an explicit
comparison between a pointer and NULL, and applies the clean-up to
the maintenance track.
* Preliminary code refactoring around transport and bundle code.
* "sparse-checkout" learns to work better with the sparse-index
feature.
* A workflow change for translators are being proposed. git.pot is
no longer version controlled and it is local responsibility of
translators to generate it.
* Plug the memory leaks from the trickiest API of all, the revision
walker.
* Rename .env_array member to .env in the child_process structure.
* The fsmonitor--daemon handles even more corner cases when
watching filesystem events.
* A new bug() and BUG_if_bug() API is introduced to make it easier to
uniformly log "detect multiple bugs and abort in the end" pattern.
Fixes since v2.36
-----------------
* "git submodule update" without pathspec should silently skip an
uninitialized submodule, but it started to become noisy by mistake.
(merge 4f1ccef87c gc/submodule-update-part2 later to maint).
* "diff-tree --stdin" has been broken for about a year, but 2.36
release broke it even worse by breaking running the command with
<pathspec>, which in turn broke "gitk" and got noticed. This has
been corrected by aligning its behaviour to that of "log".
(merge f8781bfda3 jc/diff-tree-stdin-fix later to maint).
* Regression fix for 2.36 where "git name-rev" started to sometimes
reference strings after they are freed.
(merge 45a14f578e rs/name-rev-fix-free-after-use later to maint).
* "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
when showing the second and subsequent commits, which has been
corrected.
(merge 5cdb38458e jc/show-pathspec-fix later to maint).
* "git fast-export -- <pathspec>" lost the pathspec when showing the
second and subsequent commits, which has been corrected.
(merge d1c25272f5 rs/fast-export-pathspec-fix later to maint).
* "git format-patch <args> -- <pathspec>" lost the pathspec when
showing the second and subsequent commits, which has been
corrected.
(merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint).
* "git clone --origin X" leaked piece of memory that held value read
from the clone.defaultRemoteName configuration variable, which has
been plugged.
(merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint).
* Get rid of a bogus and over-eager coccinelle rule.
(merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint).
* The path taken by "git multi-pack-index" command from the end user
was compared with path internally prepared by the tool without first
normalizing, which lead to duplicated paths not being noticed,
which has been corrected.
(merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint).
* Correct choices of C compilers used in various CI jobs.
(merge 3506cae04f ab/cc-package-fixes later to maint).
* Various cleanups to "git p4".
(merge 4ff0108d9e jh/p4-various-fixups later to maint).
* The progress meter of "git blame" was showing incorrect numbers
when processing only parts of the file.
(merge e5f5d7d42e ea/progress-partial-blame later to maint).
* "git rebase --keep-base <upstream> <branch-to-rebase>" computed the
commit to rebase onto incorrectly, which has been corrected.
(merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint).
* Fix a leak of FILE * in an error codepath.
(merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint).
* Avoid problems from interaction between malloc_check and address
sanitizer.
(merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint).
* The commit summary shown after making a commit is matched to what
is given in "git status" not to use the break-rewrite heuristics.
(merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint).
* Update a few end-user facing messages around EOL conversion.
(merge c970d30c2c ah/convert-warning-message later to maint).
* Trace2 documentation updates.
(merge a6c80c313c js/trace2-doc-fixes later to maint).
* Build procedure fixup.
(merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint).
* "git pull" without "--recurse-submodules=<arg>" made
submodule.recurse take precedence over fetch.recurseSubmodules by
mistake, which has been corrected.
(merge 5819417365 gc/pull-recurse-submodules later to maint).
* "git bisect" was too silent before it is ready to start computing
the actual bisection, which has been corrected.
(merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint).
* macOS CI jobs have been occasionally flaky due to tentative version
skew between perforce and the homebrew packager. Instead of
failing the whole CI job, just let it skip the p4 tests when this
happens.
(merge f15e00b463 cb/ci-make-p4-optional later to maint).
* A bit of test framework fixes with a few fixes to issues found by
valgrind.
(merge 7c898554d7 ab/valgrind-fixes later to maint).
* "git archive --add-file=<path>" picked up the raw permission bits
from the path and propagated to zip output in some cases, without
normalization, which has been corrected (tar output did not have
this issue).
(merge 6a61661967 jc/archive-add-file-normalize-mode later to maint).
* "make coverage-report" without first running "make coverage" did
not produce any meaningful result, which has been corrected.
(merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint).
* The "--current" option of "git show-branch" should have been made
incompatible with the "--reflog" mode, but this was not enforced,
which has been corrected.
(merge 41c64ae0e7 jc/show-branch-g-current later to maint).
* "git fetch" unnecessarily failed when an unexpected optional
section appeared in the output, which has been corrected.
(merge 7709acf7be jt/fetch-peek-optional-section later to maint).
* The way "git fetch" without "--update-head-ok" ensures that HEAD in
no worktree points at any ref being updated was too wasteful, which
has been optimized a bit.
(merge f7400da800 os/fetch-check-not-current-branch later to maint).
* "git fetch --recurse-submodules" from multiple remotes (either from
a remote group, or "--all") used to make one extra "git fetch" in
the submodules, which has been corrected.
(merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint).
* With a recent update to refuse access to repositories of other
people by default, "sudo make install" and "sudo git describe"
stopped working, which has been corrected.
(merge 6b11e3d52e cb/path-owner-check-with-sudo-plus later to maint).
* The tests that ensured merges stop when interfering local changes
are present did not make sure that local changes are preserved; now
they do.
(merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint).
* Some real problems noticed by gcc 12 have been fixed, while false
positives have been worked around.
* Update the version of FreeBSD image used in Cirrus CI.
(merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint).
* The multi-pack-index code did not protect the packfile it is going
to depend on from getting removed while in use, which has been
corrected.
(merge 4090511e40 tb/midx-race-in-pack-objects later to maint).
* Teach "git repack --geometric" work better with "--keep-pack" and
avoid corrupting the repository when packsize limit is used.
(merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint).
* The documentation on the interaction between "--add-file" and
"--prefix" options of "git archive" has been improved.
(merge a75910602a rs/document-archive-prefix later to maint).
* A git subcommand like "git add -p" spawns a separate git process
while relaying its command line arguments. A pathspec with only
negative elements was mistakenly passed with an empty string, which
has been corrected.
(merge b02fdbc80a jc/all-negative-pathspec later to maint).
* With a more targeted workaround in http.c in another topic, we may
be able to lift this blanket "GCC12 dangling-pointer warning is
broken and unsalvageable" workaround.
(merge 419141e495 cb/buggy-gcc-12-workaround later to maint).
* A misconfigured 'branch..remote' led to a bug in configuration
parsing.
(merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint).
* "git -c diff.submodule=log range-diff" did not show anything for
submodules that changed in the ranges being compared, and
"git -c diff.submodule=diff range-diff" did not work correctly.
Fix this by including the "--submodule=short" output
unconditionally to be compared.
* In Git 2.36 we revamped the way how hooks are invoked. One change
that is end-user visible is that the output of a hook is no longer
directly connected to the standard output of "git" that spawns the
hook, which was noticed post release. This is getting corrected.
(merge a082345372 ab/hooks-regression-fix later to maint).
* Updating the graft information invalidates the list of parents of
in-core commit objects that used to be in the graft file.
* "git show-ref --heads" (and "--tags") still iterated over all the
refs only to discard refs outside the specified area, which has
been corrected.
(merge c0c9d35e27 tb/show-ref-optim later to maint).
* Remove redundant copying (with index v3 and older) or possible
over-reading beyond end of mmapped memory (with index v4) has been
corrected.
(merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint).
* Sample watchman interface hook sometimes failed to produce
correctly formatted JSON message, which has been corrected.
(merge 134047b500 sn/fsmonitor-missing-clock later to maint).
* Use-after-free (with another forget-to-free) fix.
(merge 323822c72b ab/remote-free-fix later to maint).
* Remove a coccinelle rule that is no longer relevant.
(merge b1299de4a1 jc/cocci-cleanup later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge e6b2582da3 cm/reftable-0-length-memset later to maint).
(merge 0b75e5bf22 ab/misc-cleanup later to maint).
(merge 52e1ab8a76 ea/rebase-code-simplify later to maint).
(merge 756d15923b sg/safe-directory-tests-and-docs later to maint).
(merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint).
(merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint).
(merge 1da312742d gf/unused-includes later to maint).
(merge 465b30a92d pb/submodule-recurse-mode-enum later to maint).
(merge 82b28c4ed8 km/t3501-use-test-helpers later to maint).
(merge 72315e431b sa/t1011-use-helpers later to maint).
(merge 95b3002201 cg/vscode-with-gdb later to maint).
(merge fbe5f6b804 tk/p4-utf8-bom later to maint).
(merge 17f273ffba tk/p4-with-explicity-sync later to maint).
(merge 944db25c60 kf/p4-multiple-remotes later to maint).
(merge b014cee8de jc/update-ozlabs-url later to maint).
(merge 4ec5008062 pb/ggg-in-mfc-doc later to maint).
(merge af845a604d tb/receive-pack-code-cleanup later to maint).
(merge 2acf4cf001 js/ci-gcc-12-fixes later to maint).
(merge 05e280c0a6 jc/http-clear-finished-pointer later to maint).
(merge 8c49d704ef fh/transport-push-leakfix later to maint).
(merge 1d232d38bd tl/ls-tree-oid-only later to maint).
(merge db7961e6a6 gc/document-config-worktree-scope later to maint).
(merge ce18a30bb7 fs/ssh-default-key-command-doc later to maint).
----------------------------------------------------------------
Changes since v2.36.0 are as follows:
Abhradeep Chakraborty (1):
builtin/remote.c: teach `-v` to list filters for promisor remotes
Alex Henrie (2):
convert: clarify line ending conversion warning
rebase: use correct base for --keep-base when a branch is given
COGONI Guillaume (2):
contrib/vscode/: debugging with VS Code and gdb
Documentation/ToolsForGit.txt: Tools for developing Git
Carlo Marcelo Arenas Belón (8):
reftable: avoid undefined behaviour breaking t0032
ci: make failure to find perforce more user friendly
ci: avoid brew for installing perforce
ci: reintroduce prevention from perforce being quarantined in macOS
t: regression git needs safe.directory when using sudo
git-compat-util: avoid failing dir ownership checks if running privileged
t0034: add negative tests and allow git init to mostly work under sudo
git-compat-util: allow root to access both SUDO_UID and root owned
Chris Down (2):
bisect: output state before we are ready to compute bisection
bisect: output bisect setup status in bisect log
Christian Couder (1):
http: add custom hostname to IP address resolutions
Derrick Stolee (28):
clone: die() instead of BUG() on bad refs
midx: use real paths in lookup_multi_pack_index()
multi-pack-index: use --object-dir real path
cache: use const char * for get_object_directory()
t1092: add compatibility tests for 'git show'
show: integrate with the sparse index
object-name: reject trees found in the index
object-name: diagnose trees in index properly
rev-parse: integrate with sparse index
http: make http_get_file() external
remote: move relative_url()
remote: allow relative_url() to return an absolute url
object-file: convert 'switch' back to 'if'
t1092: refactor 'sparse-index contents' test
t1092: stress test 'git sparse-checkout set'
sparse-index: create expand_index()
sparse-index: introduce partially-sparse indexes
cache-tree: implement cache_tree_find_path()
sparse-checkout: --no-sparse-index needs a full index
sparse-index: partially expand directories
sparse-index: complete partial expansion
p2000: add test for 'git sparse-checkout [add|set]'
sparse-checkout: integrate with sparse index
remote: create fetch.credentialsInUrl config
t2107: test 'git update-index --verbose'
t5329: test 'git gc --cruft' without '--prune=now'
pack-write: drop always-NULL parameter
cache-tree: remove cache_tree_find_path()
Edmundo Carmona Antoranz (2):
blame: report correct number of lines in progress when using ranges
rebase: simplify an assignment of options.type in cmd_rebase
Elia Pinto (2):
Makefile: add a prerequisite to the coverage-report target
contrib/coccinnelle: add equals-null.cocci
Elijah Newren (9):
tests: stop assuming --no-cone is the default mode for sparse-checkout
sparse-checkout: make --cone the default
git-sparse-checkout.txt: wording updates for the cone mode default
git-sparse-checkout.txt: update docs for deprecation of 'init'
git-sparse-checkout.txt: shuffle some sections and mark as internal
git-sparse-checkout.txt: add a new EXAMPLES section
git-sparse-checkout.txt: flesh out pattern set sections a bit
git-sparse-checkout.txt: mark non-cone mode as deprecated
Documentation: some sparsity wording clarifications
Fabian Stelzer (1):
gpg docs: explain better use of ssh.defaultKeyCommand
Fangyi Zhou (2):
push: fix capitalisation of the option name autoSetupMerge
builtin/rebase: remove a redundant space in l10n string
Fernando Ramos (4):
vimdiff: new implementation with layout support
vimdiff: integrate layout tests in the unit tests framework ('t' folder)
vimdiff: add tool documentation
mergetools: add description to all diff/merge tools
Frantisek Hrbata (3):
transport: remove unnecessary indenting in transport_push()
transport: unify return values and exit point from transport_push()
transport: free local and remote refs in transport_push()
Garrit Franke (3):
cli: add -v and -h shorthands
serve.c: remove unnecessary include
apply.c: remove unnecessary include
Glen Choo (4):
pull: do not let submodule.recurse override fetch.recurseSubmodules
remote.c: don't BUG() on 0-length branch names
remote.c: reject 0-length branch names
config: document and test the 'worktree' scope
Jason Yundt (1):
gitweb: switch to an XHTML5 DOCTYPE
Jeff Hostetler (30):
fsm-listen-win32: handle shortnames
t7527: test FSMonitor on repos with Unicode root paths
t/helper/fsmonitor-client: create stress test
fsmonitor-settings: bare repos are incompatible with FSMonitor
fsmonitor-settings: stub in Win32-specific incompatibility checking
fsmonitor-settings: VFS for Git virtual repos are incompatible
fsmonitor-settings: stub in macOS-specific incompatibility checking
fsmonitor-settings: remote repos on macOS are incompatible
fsmonitor-settings: remote repos on Windows are incompatible
fsmonitor-settings: NTFS and FAT32 on MacOS are incompatible
unpack-trees: initialize fsmonitor_has_run_once in o->result
fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS
fsmonitor--daemon: cd out of worktree root
fsmonitor--daemon: prepare for adding health thread
fsmonitor--daemon: rename listener thread related variables
fsmonitor--daemon: stub in health thread
fsm-health-win32: add polling framework to monitor daemon health
fsm-health-win32: force shutdown daemon if worktree root moves
fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed
fsmonitor: optimize processing of directory events
t7527: FSMonitor tests for directory moves
t/perf/p7527: add perf test for builtin FSMonitor
fsmonitor: never set CE_FSMONITOR_VALID on submodules
t7527: test FSMonitor on case insensitive+preserving file system
fsmonitor: on macOS also emit NFC spelling for NFD pathname
t/helper/hexdump: add helper to print hexdump of stdin
t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd
t7527: test Unicode NFC/NFD handling on MacOS
fsmonitor--daemon: allow --super-prefix argument
t7527: improve implicit shutdown testing in fsmonitor--daemon
Jeff King (2):
perf-lib: fix missing test titles in output
bug_fl(): correctly initialize trace2 va_list
Jiang Xin (6):
Makefile: sort source files before feeding to xgettext
Makefile: generate "po/git.pot" from stable LOCALIZED_C
Makefile: remove duplicate and unwanted files in FOUND_SOURCE_FILES
po/git.pot: this is now a generated file
Makefile: add "po-update" rule to update po/XX.po
i18n: fix mismatched camelCase config variables
Joel Holdsworth (22):
git-p4: add blank lines between functions and class definitions
git-p4: remove unneeded semicolons from statements
git-p4: indent with 4-spaces
git-p4: improve consistency of docstring formatting
git-p4: convert descriptive class and function comments into docstrings
git-p4: remove commented code
git-p4: sort and de-duplcate pylint disable list
git-p4: remove padding from lists, tuples and function arguments
git-p4: remove spaces around default arguments
git-p4: removed brackets when assigning multiple return values
git-p4: place a single space after every comma
git-p4: remove extraneous spaces before function arguments
git-p4: remove redundant backslash-continuations inside brackets
git-p4: remove spaces between dictionary keys and colons
git-p4: ensure every comment has a single #
git-p4: ensure there is a single space around all operators
git-p4: normalize indentation of lines in conditionals
git-p4: compare to singletons with "is" and "is not"
git-p4: only seperate code blocks by a single empty line
git-p4: move inline comments to line above
git-p4: seperate multiple statements onto seperate lines
git-p4: sort imports
Johannes Schindelin (36):
t2016: require the PERL prereq only when necessary
add -i: default to the built-in implementation
trace2 docs: a couple of grammar fixes
trace2 docs: "printf" is not an English word
trace2 docs: surround more terms in backticks
trace2 docs: fix a JSON formatted example
trace2 docs: clarify what `varargs` is all about
trace2 docs: add missing full stop
ci: fix code style
tests: refactor --write-junit-xml code
test(junit): avoid line feeds in XML attributes
ci/run-build-and-tests: take a more high-level view
ci: make it easier to find failed tests' logs in the GitHub workflow
ci/run-build-and-tests: add some structure to the GitHub workflow output
ci: optionally mark up output in the GitHub workflow
ci(github): skip the logs of the successful test cases
ci: use `--github-workflow-markup` in the GitHub workflow
ci(github): mention where the full logs can be found
ci: call `finalize_test_case_output` a little later
compat/win32/syslog: fix use-after-realloc
nedmalloc: avoid new compile error
dir.c: avoid "exceeds maximum object size" error with GCC v12.x
archive: optionally add "virtual" files
archive --add-virtual-file: allow paths containing colons
scalar: validate the optional enlistment argument
scalar: implement `scalar diagnose`
scalar diagnose: include disk space information
ci(github): bring back the 'print test failures' step
ci(github): use grouping also in the `win-build` job
ci(github): also mark up compile errors
fsmonitor: avoid memory leak in `fsm_settings__get_incompatible_msg()`
submodule-config: avoid memory leak
submodule--helper: avoid memory leak when fetching submodules
read_index_from(): avoid memory leak
pack-mtimes: avoid closing a bogus file descriptor
relative_url(): fix incorrect condition
Jonathan Tan (2):
fetch-pack: make unexpected peek result non-fatal
commit,shallow: unparse commits if grafts changed
Josh Steadmon (1):
run-command: don't spam trace2_child_exit()
Junio C Hamano (38):
show-branch: -g and --current are incompatible
2.36 gitk/diff-tree --stdin regression fix
Some regression fixes for 2.36
2.36 show regression fix
clone: plug a miniscule leak
cocci: drop bogus xstrdup_or_null() rule
tree-wide: apply equals-null.cocci
tree-wide: apply equals-null.cocci
tree-wide: apply equals-null.cocci
A bit more regression fixes for 2.36
Git 2.36.1
0th batch for topics from the previous cycle
SubmittingPatches: use more stable git.ozlabs.org URL
second 0th batch of topics from the previous cycle
archive: do not let on-disk mode leak to zip archives
commit: fix "author_ident" leak
fetch: do not run a redundant fetch from submodule
t6424: make sure a failed merge preserves local changes
First batch for 2.37
Second batch
Third batch
Fourth batch
revert: optionally refer to commit in the "reference" format
http.c: clear the 'finished' member once we are done with it
pathspec: correct an empty string used as a pathspec element
Fifth batch
revert: --reference should apply only to 'revert', not 'cherry-pick'
Sixth batch
Revert -Wno-error=dangling-pointer
Seventh batch
Eighth batch
cocci: retire is_null_sha1() rule
Prepare for 2.36.2
Ninth batch
Git 2.37-rc0
Fixes and updates post -rc0
Another batch of fixes before -rc1
Git 2.37-rc1
Kevin Locke (1):
setup: don't die if realpath(3) fails on getcwd(3)
Khalid Masum (1):
t3501: remove test -f and stop ignoring git <cmd> exit code
Kirill Frolov (1):
git-p4: fix issue with multiple perforce remotes
Kleber Tarcísio (1):
commit-graph: close file before returning NULL
Matthew John Cheetham (2):
scalar: teach `diagnose` to gather packfile info
scalar: teach `diagnose` to gather loose objects information
Michael J Gruber (1):
detect-compiler: make detection independent of locale
Miklos Vajna (1):
log: "--since-as-filter" option is a non-terminating "--since" variant
Neeraj Singh (12):
bulk-checkin: rename 'state' variable and separate 'plugged' boolean
bulk-checkin: rebrand plug/unplug APIs as 'odb transactions'
core.fsyncmethod: batched disk flushes for loose-objects
cache-tree: use ODB transaction around writing a tree
builtin/add: add ODB transaction around add_files_to_cache
update-index: use the bulk-checkin infrastructure
unpack-objects: use the bulk-checkin infrastructure
core.fsync: use batch mode and sync loose objects by default on Windows
test-lib-functions: add parsing helpers for ls-files and ls-tree
core.fsyncmethod: tests for batch mode
core.fsyncmethod: performance tests for batch mode
t/perf: add iteration setup mechanism to perf-lib
Orgad Shaneh (2):
submodule--helper: fix initialization of warn_if_uninitialized
fetch: limit shared symref check only for local branches
Philip Oakley (4):
rebase.c: state preserve-merges has been removed
rebase: help users when dying with `preserve-merges`
rebase: note `preserve` merges may be a pull config option
rebase: translate a die(preserve-merges) message
Philippe Blain (8):
submodule.h: use a named enum for RECURSE_SUBMODULES_*
MyFirstContribution: add "Anatomy of a Patch Series" section
MyFirstContribution: add standalone section on cover letter
MyFirstContribution: reference "The cover letter" in "Preparing Email"
MyFirstContribution: reference "The cover letter" in GitGitGadget section
MyFirstContribution: drop PR description for GGG single-patch contributions
ci: update Cirrus-CI image to FreeBSD 12.3
range-diff: show submodule changes irrespective of diff.submodule
Phillip Wood (1):
tests: make SANITIZE=address imply TEST_NO_MALLOC_CHECK
René Scharfe (8):
commit, sequencer: turn off break_opt for commit summary
t7812: test PCRE2 whitespace bug
tempfile: add mks_tempfile_dt()
diff: use mks_tempfile_dt()
Revert "name-rev: release unused name strings"
2.36 format-patch regression fix
2.36 fast-export regression fix
archive: improve documentation of --prefix
SZEDER Gábor (3):
t0033-safe-directory: check the error message without matching the trash dir
t0033-safe-directory: check when 'safe.directory' is ignored
safe.directory: document and check that it's ignored in the environment
Siddharth Asthana (1):
t1011: replace test -f with test_path_is_file
Son Luong Ngoc (1):
fsmonitor: query watchman with right valid json
Tao Klerks (8):
untracked-cache: test untracked-cache-bypassing behavior with -uall
untracked-cache: support '--untracked-files=all' if configured
git-p4: support explicit sync of arbitrary existing git-p4 refs
git-p4: preserve utf8 BOM when importing from p4 to git
branch: new autosetupmerge option 'simple' for matching branches
push: default to single remote even when not named origin
push: new config option "push.autoSetupRemote" supports "simple" push
git-p4: improve encoding handling to support inconsistent encodings
Taylor Blau (25):
builtin/receive-pack.c: remove redundant 'if'
t7703: demonstrate object corruption with pack.packSizeLimit
builtin/repack.c: ensure that `names` is sorted
Documentation/technical: add cruft-packs.txt
pack-bitmap.c: check preferred pack validity when opening MIDX bitmap
builtin/pack-objects.c: avoid redundant NULL check
builtin/pack-objects.c: ensure included `--stdin-packs` exist
builtin/pack-objects.c: ensure pack validity from MIDX bitmap objects
pack-mtimes: support reading .mtimes files
pack-write: pass 'struct packing_data' to 'stage_tmp_packfiles'
chunk-format.h: extract oid_version()
pack-mtimes: support writing pack .mtimes files
t/helper: add 'pack-mtimes' test-tool
builtin/pack-objects.c: return from create_object_entry()
builtin/pack-objects.c: --cruft without expiration
reachable: add options to add_unseen_recent_objects_to_traversal
reachable: report precise timestamps from objects in cruft packs
builtin/pack-objects.c: --cruft with expiration
builtin/repack.c: support generating a cruft pack
builtin/repack.c: allow configuring cruft pack generation
builtin/repack.c: use named flags for existing_packs
builtin/repack.c: add cruft packs to MIDX during geometric repack
builtin/gc.c: conditionally avoid pruning objects via loose
sha1-file.c: don't freshen cruft packs
builtin/show-ref.c: avoid over-iterating with --heads, --tags
Victoria Dye (8):
stash: expand sparse-checkout compatibility testing
stash: integrate with sparse index
sparse-index: expose 'is_sparse_index_allowed()'
read-cache: set sparsity when index is new
stash: apply stash using 'merge_ort_nonrecursive()'
unpack-trees: preserve index sparsity
repack: respect --keep-pack with geometric repack
ci(github): avoid printing test case preamble twice
Yuyi Wang (3):
cmake: fix CMakeLists.txt on Linux
cmake: add pcre2 support
cmake: remove (_)UNICODE def on Windows in CMakeLists.txt
ZheNing Hu (1):
read-cache.c: reduce unnecessary cache entry name copying
halilsen (2):
gitk: trivial indentation fix
gitk: include y coord in recorded sash position
Ævar Arnfjörð Bjarmason (66):
run-command.h: remove always unused "clean_on_exit_handler_cbdata"
configure.ac: remove USE_PIC comment
xdiff/xmacros.h: remove unused XDL_PTRFREE
pack-bitmap-write: remove unused bitmap_reset() function
object-store.h: remove unused has_sha1_file*()
alloc.[ch]: remove alloc_report() function
t/helper/test-fast-rebase.c: don't leak "struct strbuf"
blame: use "goto cleanup" for cleanup_scoreboard()
string_list API users: use string_list_init_{no,}dup
format-patch: don't leak "extra_headers" or "ref_message_ids"
cocci: add and apply free_commit_list() rules
revision.[ch]: provide and start using a release_revisions()
revisions API users: add straightforward release_revisions()
revision.[ch]: document and move code declared around "init"
revisions API users: use release_revisions() needing REV_INFO_INIT
stash: always have the owner of "stash_info" free it
revisions API users: add "goto cleanup" for release_revisions()
revisions API users: use release_revisions() in http-push.c
revisions API users: use release_revisions() in builtin/log.c
revisions API users: use release_revisions() with UNLEAK()
revisions API users: use release_revisions() for "prune_data" users
revisions API: have release_revisions() release "commits"
revisions API: have release_revisions() release "mailmap"
revisions API: have release_revisions() release "cmdline"
revisions API: have release_revisions() release "filter"
revisions API: have release_revisions() release "grep_filter"
revisions API: have release_revisions() release "prune_data"
revisions API: clear "boundary_commits" in release_revisions()
revisions API: release "reflog_info" in release revisions()
revisions API: call diff_free(&revs->pruning) in revisions_release()
revisions API: have release_revisions() release "date_mode"
revisions API: have release_revisions() release "topo_walk_info"
revisions API: add a TODO for diff_free(&revs->diffopt)
CI: select CC based on CC_PACKAGE (again)
tests: using custom GIT_EXEC_PATH breaks --valgrind tests
log test: skip a failing mkstemp() test under valgrind
object-file: fix a unpack_loose_header() regression in 3b6a8db3b03
commit-graph.c: don't assume that stat() succeeds
ci: use https, not http to download binaries from perforce.com
connect.c: refactor sending of agent & object-format
dir API: add a generalized path_match_flags() function
fetch-pack: add a deref_without_lazy_fetch_extended()
fetch-pack: move --keep=* option filling to a function
bundle.h: make "fd" version of read_bundle_header() public
Makefile: have "make pot" not "reset --hard"
i18n CI: stop allowing non-ASCII source messages in po/git.pot
po/git.pot: don't check in result of "make pot"
Makefile: add "po-init" rule to initialize po/XX.po
l10n: Document the new l10n workflow
common-main.c: move non-trace2 exit() behavior out of trace2.c
usage.c: add a non-fatal bug() function to go with BUG()
parse-options.c: use new bug() API for optbug()
parse-options.c: use optbug() instead of BUG() "opts" check
receive-pack: use bug() and BUG_if_bug()
cache-tree.c: use bug() and BUG_if_bug()
run-command API: rename "env_array" to "env"
run-command API users: use "env" not "env_array" in comments & names
ls-tree: test for the regression in 9c4d58ff2c3
run-command: add an "ungroup" option to run_process_parallel()
remote.c: remove braces from one-statement "for"-loops
remote.c: don't dereference NULL in freeing loop
hook API: fix v2.36.0 regression: hooks should be connected to a TTY
add -i tests: mark "TODO" depending on GIT_TEST_ADD_I_USE_BUILTIN
fetch doc: note "pushurl" caveat about "credentialsInUrl", elaborate
transfer doc: move fetch.credentialsInUrl to "transfer" config namespace
tests: add LIBCURL prerequisite to tests needing libcurl
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.37.0-rc0
@ 2022-06-14 1:46 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2022-06-14 1:46 UTC (permalink / raw)
To: git; +Cc: git-packagers
An early preview release Git v2.37.0-rc0 is now available for
testing at the usual places. It is comprised of 339 non-merge
commits since v2.36.0, contributed by 59 people, 18 of which are
new faces [*]. There are a few topics that we may want to merge
before the final release, which will be in -rc1 that is planned to
be tagged at around the end of the 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.37.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.36.0 are as follows.
Welcome to the Git development community!
Chris Down, Daniel Li, Fernando Ramos, Frantisek Hrbata,
Garrit Franke, Gregory David, Guy Maurel, halilsen, Huang Zou,
"Ing. Martin Prantl Ph.D.", Kevin Locke, Khalid Masum, Kirill
Frolov, Kleber Tarcísio, Laurent Lyaudet, Siddharth Asthana,
Thomas Hurst, and Yuyi Wang.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Ævar Arnfjörð Bjarmason, Alex Henrie,
Anthony Sottile, BRESSAT Jonathan, Carlo Arenas, Carlo Marcelo
Arenas Belón, Christian Couder, COGONI Guillaume, Derrick
Stolee, Edmundo Carmona Antoranz, Elia Pinto, Elijah Newren,
Eric Sunshine, Glen Choo, Jason Yundt, Jeff Hostetler, Jeff King,
Jiang Xin, Joel Holdsworth, Johannes Schindelin, Jonathan Tan,
Josh Steadmon, Junio C Hamano, Matthew John Cheetham, Matthias
Aßhauer, Matthieu Moy, Michael J Gruber, Miklos Vajna, Neeraj
Singh, Orgad Shaneh, Philippe Blain, Phillip Wood, Randall
S. Becker, René Scharfe, Son Luong Ngoc, SZEDER Gábor, Tao
Klerks, Taylor Blau, 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.37 Release Notes (draft)
===============================
UI, Workflows & Features
* "vimdiff[123]" mergetool drivers have been reimplemented with a
more generic layout mechanism.
* "git -v" and "git -h" are now understood as "git --version" and
"git --help".
* The temporary files fed to external diff command are now generated
inside a new temporary directory under the same basename.
* "git log --since=X" will stop traversal upon seeing a commit that
is older than X, but there may be commits behind it that is younger
than X when the commit was created with a faulty clock. A new
option is added to keep digging without stopping, and instead
filter out commits with timestamp older than X.
* "git -c branch.autosetupmerge=simple branch $A $B" will set the $B
as $A's upstream only when $A and $B shares the same name, and "git
-c push.default=simple" on branch $A would push to update the
branch $A at the remote $B came from. Also more places use the
sole remote, if exists, before defaulting to 'origin'.
* A new doc has been added that lists tips for tools to work with
Git's codebase.
* "git remote -v" now shows the list-objects-filter used during
fetching from the remote, if available.
* With the new http.curloptResolve configuration, the CURLOPT_RESOLVE
mechanism that allows cURL based applications to use pre-resolved
IP addresses for the requests is exposed to the scripts.
* "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.
* Deprecate non-cone mode of the sparse-checkout feature.
* Introduce a filesystem-dependent mechanism to optimize the way the
bits for many loose object files are ensured to hit the disk
platter.
* The "do not remove the directory the user started Git in" logic,
when Git cannot tell where that directory is, is disabled. Earlier
we refused to run in such a case.
* A mechanism to pack unreachable objects into a "cruft pack",
instead of ejecting them into loose form to be reclaimed later, has
been introduced.
* Update the doctype written in gitweb output to xhtml5.
* The "fetch.credentialsInUrl" configuration variable controls what
happens when a URL with embedded login credential is used.
Performance, Internal Implementation, Development Support etc.
* The performance of the "untracked cache" feature has been improved
when "--untracked-files=<mode>" and "status.showUntrackedFiles"
are combined.
* "git stash" works better with sparse index entries.
* "git show :<path>" learned to work better with the sparse-index
feature.
* Introduce and apply coccinelle rule to discourage an explicit
comparison between a pointer and NULL, and applies the clean-up to
the maintenance track.
* Preliminary code refactoring around transport and bundle code.
* "sparse-checkout" learns to work better with the sparse-index
feature.
* A workflow change for translators are being proposed. git.pot is
no longer version controlled and it is local responsibility of
translaters to generate it.
* Plug the memory leaks from the trickiest API of all, the revision
walker.
* Rename .env_array member to .env in the child_process structure.
* More fsmonitor--daemon.
* A new bug() and BUG_if_bug() API is introduced to make it easier to
uniformly log "detect multiple bugs and abort in the end" pattern.
Fixes since v2.36
-----------------
* "git submodule update" without pathspec should silently skip an
uninitialized submodule, but it started to become noisy by mistake.
(merge 4f1ccef87c gc/submodule-update-part2 later to maint).
* "diff-tree --stdin" has been broken for about a year, but 2.36
release broke it even worse by breaking running the command with
<pathspec>, which in turn broke "gitk" and got noticed. This has
been corrected by aligning its behaviour to that of "log".
(merge f8781bfda3 jc/diff-tree-stdin-fix later to maint).
* Regression fix for 2.36 where "git name-rev" started to sometimes
reference strings after they are freed.
(merge 45a14f578e rs/name-rev-fix-free-after-use later to maint).
* "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
when showing the second and subsequent commits, which has been
corrected.
(merge 5cdb38458e jc/show-pathspec-fix later to maint).
* "git fast-export -- <pathspec>" lost the pathspec when showing the
second and subsequent commits, which has been corrected.
(merge d1c25272f5 rs/fast-export-pathspec-fix later to maint).
* "git format-patch <args> -- <pathspec>" lost the pathspec when
showing the second and subsequent commits, which has been
corrected.
(merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint).
* "git clone --origin X" leaked piece of memory that held value read
from the clone.defaultRemoteName configuration variable, which has
been plugged.
(merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint).
* Get rid of a bogus and over-eager coccinelle rule.
(merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint).
* The path taken by "git multi-pack-index" command from the end user
was compared with path internally prepared by the tool withut first
normalizing, which lead to duplicated paths not being noticed,
which has been corrected.
(merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint).
* Correct choices of C compilers used in various CI jobs.
(merge 3506cae04f ab/cc-package-fixes later to maint).
* Various cleanups to "git p4".
(merge 4ff0108d9e jh/p4-various-fixups later to maint).
* The progress meter of "git blame" was showing incorrect numbers
when processing only parts of the file.
(merge e5f5d7d42e ea/progress-partial-blame later to maint).
* "git rebase --keep-base <upstream> <branch-to-rebase>" computed the
commit to rebase onto incorrectly, which has been corrected.
(merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint).
* Fix a leak of FILE * in an error codepath.
(merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint).
* Avoid problems from interaction between malloc_check and address
sanitizer.
(merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint).
* The commit summary shown after making a commit is matched to what
is given in "git status" not to use the break-rewrite heuristics.
(merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint).
* Update a few end-user facing messages around eol conversion.
(merge c970d30c2c ah/convert-warning-message later to maint).
* Trace2 documentation updates.
(merge a6c80c313c js/trace2-doc-fixes later to maint).
* Build procedure fixup.
(merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint).
* "git pull" without "--recurse-submodules=<arg>" made
submodule.recurse take precedence over fetch.recurseSubmodules by
mistake, which has been corrected.
(merge 5819417365 gc/pull-recurse-submodules later to maint).
* "git bisect" was too silent before it is ready to start computing
the actual bisection, which has been corrected.
(merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint).
* macOS CI jobs have been occasionally flaky due to tentative version
skew between perforce and the homebrew packager. Instead of
failing the whole CI job, just let it skip the p4 tests when this
happens.
(merge f15e00b463 cb/ci-make-p4-optional later to maint).
* A bit of test framework fixes with a few fixes to issues found by
valgrind.
(merge 7c898554d7 ab/valgrind-fixes later to maint).
* "git archive --add-file=<path>" picked up the raw permission bits
from the path and propagated to zip output in some cases, without
normalization, which has been corrected (tar output did not have
this issue).
(merge 6a61661967 jc/archive-add-file-normalize-mode later to maint).
* "make coverage-report" without first running "make coverage" did
not produce any meaningful result, which has been corrected.
(merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint).
* The "--current" option of "git show-branch" should have been made
incompatible with the "--reflog" mode, but this was not enforced,
which has been corrected.
(merge 41c64ae0e7 jc/show-branch-g-current later to maint).
* "git fetch" unnecessarily failed when an unexpected optional
section appeared in the output, which has been corrected.
(merge 7709acf7be jt/fetch-peek-optional-section later to maint).
* The way "git fetch" without "--update-head-ok" ensures that HEAD in
no worktree points at any ref being updated was too wasteful, which
has been optimized a bit.
(merge f7400da800 os/fetch-check-not-current-branch later to maint).
* "git fetch --recurse-submodules" from multiple remotes (either from
a remote group, or "--all") used to make one extra "git fetch" in
the submodules, which has been corrected.
(merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint).
* With a recent update to refuse access to repositories of other
people by default, "sudo make install" and "sudo git describe"
stopped working. This series intends to loosen it while keeping
the safety.
(merge b9063afda1 cb/path-owner-check-with-sudo later to maint).
* The tests that ensured merges stop when interfering local changes
are present did not make sure that local changes are preserved; now
they do.
(merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint).
* Some real problems noticed by gcc 12 have been fixed, while false
positives have been worked around.
* Update the version of FreeBSD image used in Cirrus CI.
(merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint).
* The multi-pack-index code did not protect the packfile it is going
to depend on from getting removed while in use, which has been
corrected.
(merge 4090511e40 tb/midx-race-in-pack-objects later to maint).
* Teach "git repack --geometric" work better with "--keep-pack" and
avoid corrupting the repository when packsize limit is used.
(merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint).
* The documentation on the interaction between "--add-file" and
"--prefix" options of "git archive" has been improved.
(merge a75910602a rs/document-archive-prefix later to maint).
* A git subcommand like "git add -p" spawns a separate git process
while relaying its command line arguments. A pathspec with only
negative elements was mistakenly passed with an empty string, which
has been corrected.
(merge b02fdbc80a jc/all-negative-pathspec later to maint).
* With a more targetted workaround in http.c in another topic, we may
be able to lift this blanket "GCC12 dangling-pointer warning is
broken and unsalvageable" workaround.
(merge 419141e495 cb/buggy-gcc-12-workaround later to maint).
* A misconfigured 'branch..remote' led to a bug in configuration
parsing.
(merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint).
* "git -c diff.submodule=log range-diff" did not show anything for
submodules that changed in the ranges being compared, and
"git -c diff.submodule=diff range-diff" did not work correctly.
Fix this by including the "--submodule=short" output
unconditionally to be compared.
* In Git 2.36 we revamped the way how hooks are invoked. One change
that is end-user visible is that the output of a hook is no longer
directly connected to the standard output of "git" that spawns the
hook, which was noticed post release. This is getting corrected.
(merge a082345372 ab/hooks-regression-fix later to maint).
* Updating the graft information invalidates the list of parents of
in-core commit objects that used to be in the graft file.
* "git show-ref --heads" (and "--tags") still iterated over all the
refs only to discard refs outside the specified area, which has
been corrected.
(merge c0c9d35e27 tb/show-ref-optim later to maint).
* Remove redundant copying (with index v3 and older) or possible
over-reading beyond end of mmapped memory (with index v4) has been
corrected.
(merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint).
* Sample watchman interface hook sometimes failed to produce
correctly formatted JSON message, which has been corrected.
(merge 134047b500 sn/fsmonitor-missing-clock later to maint).
* Use-after-free (with another forget-to-free) fix.
(merge 323822c72b ab/remote-free-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge e6b2582da3 cm/reftable-0-length-memset later to maint).
(merge 0b75e5bf22 ab/misc-cleanup later to maint).
(merge 52e1ab8a76 ea/rebase-code-simplify later to maint).
(merge 756d15923b sg/safe-directory-tests-and-docs later to maint).
(merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint).
(merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint).
(merge 1da312742d gf/unused-includes later to maint).
(merge 465b30a92d pb/submodule-recurse-mode-enum later to maint).
(merge 82b28c4ed8 km/t3501-use-test-helpers later to maint).
(merge 72315e431b sa/t1011-use-helpers later to maint).
(merge 95b3002201 cg/vscode-with-gdb later to maint).
(merge fbe5f6b804 tk/p4-utf8-bom later to maint).
(merge 17f273ffba tk/p4-with-explicity-sync later to maint).
(merge 944db25c60 kf/p4-multiple-remotes later to maint).
(merge b014cee8de jc/update-ozlabs-url later to maint).
(merge 4ec5008062 pb/ggg-in-mfc-doc later to maint).
(merge af845a604d tb/receive-pack-code-cleanup later to maint).
(merge 2acf4cf001 js/ci-gcc-12-fixes later to maint).
(merge 05e280c0a6 jc/http-clear-finished-pointer later to maint).
(merge 8c49d704ef fh/transport-push-leakfix later to maint).
(merge 1d232d38bd tl/ls-tree-oid-only later to maint).
(merge db7961e6a6 gc/document-config-worktree-scope later to maint).
----------------------------------------------------------------
Changes since v2.36.0 are as follows:
Abhradeep Chakraborty (1):
builtin/remote.c: teach `-v` to list filters for promisor remotes
Alex Henrie (2):
convert: clarify line ending conversion warning
rebase: use correct base for --keep-base when a branch is given
COGONI Guillaume (2):
contrib/vscode/: debugging with VS Code and gdb
Documentation/ToolsForGit.txt: Tools for developing Git
Carlo Marcelo Arenas Belón (7):
reftable: avoid undefined behaviour breaking t0032
ci: make failure to find perforce more user friendly
ci: avoid brew for installing perforce
ci: reintroduce prevention from perforce being quarantined in macOS
t: regression git needs safe.directory when using sudo
git-compat-util: avoid failing dir ownership checks if running privileged
t0034: add negative tests and allow git init to mostly work under sudo
Chris Down (2):
bisect: output state before we are ready to compute bisection
bisect: output bisect setup status in bisect log
Christian Couder (1):
http: add custom hostname to IP address resolutions
Derrick Stolee (24):
clone: die() instead of BUG() on bad refs
midx: use real paths in lookup_multi_pack_index()
multi-pack-index: use --object-dir real path
cache: use const char * for get_object_directory()
t1092: add compatibility tests for 'git show'
show: integrate with the sparse index
object-name: reject trees found in the index
object-name: diagnose trees in index properly
rev-parse: integrate with sparse index
http: make http_get_file() external
remote: move relative_url()
remote: allow relative_url() to return an absolute url
object-file: convert 'switch' back to 'if'
t1092: refactor 'sparse-index contents' test
t1092: stress test 'git sparse-checkout set'
sparse-index: create expand_index()
sparse-index: introduce partially-sparse indexes
cache-tree: implement cache_tree_find_path()
sparse-checkout: --no-sparse-index needs a full index
sparse-index: partially expand directories
sparse-index: complete partial expansion
p2000: add test for 'git sparse-checkout [add|set]'
sparse-checkout: integrate with sparse index
remote: create fetch.credentialsInUrl config
Edmundo Carmona Antoranz (2):
blame: report correct number of lines in progress when using ranges
rebase: simplify an assignment of options.type in cmd_rebase
Elia Pinto (2):
Makefile: add a prerequisite to the coverage-report target
contrib/coccinnelle: add equals-null.cocci
Elijah Newren (9):
tests: stop assuming --no-cone is the default mode for sparse-checkout
sparse-checkout: make --cone the default
git-sparse-checkout.txt: wording updates for the cone mode default
git-sparse-checkout.txt: update docs for deprecation of 'init'
git-sparse-checkout.txt: shuffle some sections and mark as internal
git-sparse-checkout.txt: add a new EXAMPLES section
git-sparse-checkout.txt: flesh out pattern set sections a bit
git-sparse-checkout.txt: mark non-cone mode as deprecated
Documentation: some sparsity wording clarifications
Fernando Ramos (4):
vimdiff: new implementation with layout support
vimdiff: integrate layout tests in the unit tests framework ('t' folder)
vimdiff: add tool documentation
mergetools: add description to all diff/merge tools
Frantisek Hrbata (3):
transport: remove unnecessary indenting in transport_push()
transport: unify return values and exit point from transport_push()
transport: free local and remote refs in transport_push()
Garrit Franke (3):
cli: add -v and -h shorthands
serve.c: remove unnecessary include
apply.c: remove unnecessary include
Glen Choo (4):
pull: do not let submodule.recurse override fetch.recurseSubmodules
remote.c: don't BUG() on 0-length branch names
remote.c: reject 0-length branch names
config: document and test the 'worktree' scope
Jason Yundt (1):
gitweb: switch to an XHTML5 DOCTYPE
Jeff Hostetler (30):
fsm-listen-win32: handle shortnames
t7527: test FSMonitor on repos with Unicode root paths
t/helper/fsmonitor-client: create stress test
fsmonitor-settings: bare repos are incompatible with FSMonitor
fsmonitor-settings: stub in Win32-specific incompatibility checking
fsmonitor-settings: VFS for Git virtual repos are incompatible
fsmonitor-settings: stub in macOS-specific incompatibility checking
fsmonitor-settings: remote repos on macOS are incompatible
fsmonitor-settings: remote repos on Windows are incompatible
fsmonitor-settings: NTFS and FAT32 on MacOS are incompatible
unpack-trees: initialize fsmonitor_has_run_once in o->result
fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS
fsmonitor--daemon: cd out of worktree root
fsmonitor--daemon: prepare for adding health thread
fsmonitor--daemon: rename listener thread related variables
fsmonitor--daemon: stub in health thread
fsm-health-win32: add polling framework to monitor daemon health
fsm-health-win32: force shutdown daemon if worktree root moves
fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed
fsmonitor: optimize processing of directory events
t7527: FSMonitor tests for directory moves
t/perf/p7527: add perf test for builtin FSMonitor
fsmonitor: never set CE_FSMONITOR_VALID on submodules
t7527: test FSMonitor on case insensitive+preserving file system
fsmonitor: on macOS also emit NFC spelling for NFD pathname
t/helper/hexdump: add helper to print hexdump of stdin
t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd
t7527: test Unicode NFC/NFD handling on MacOS
fsmonitor--daemon: allow --super-prefix argument
t7527: improve implicit shutdown testing in fsmonitor--daemon
Jiang Xin (5):
Makefile: sort source files before feeding to xgettext
Makefile: generate "po/git.pot" from stable LOCALIZED_C
Makefile: remove duplicate and unwanted files in FOUND_SOURCE_FILES
po/git.pot: this is now a generated file
Makefile: add "po-update" rule to update po/XX.po
Joel Holdsworth (22):
git-p4: add blank lines between functions and class definitions
git-p4: remove unneeded semicolons from statements
git-p4: indent with 4-spaces
git-p4: improve consistency of docstring formatting
git-p4: convert descriptive class and function comments into docstrings
git-p4: remove commented code
git-p4: sort and de-duplcate pylint disable list
git-p4: remove padding from lists, tuples and function arguments
git-p4: remove spaces around default arguments
git-p4: removed brackets when assigning multiple return values
git-p4: place a single space after every comma
git-p4: remove extraneous spaces before function arguments
git-p4: remove redundant backslash-continuations inside brackets
git-p4: remove spaces between dictionary keys and colons
git-p4: ensure every comment has a single #
git-p4: ensure there is a single space around all operators
git-p4: normalize indentation of lines in conditionals
git-p4: compare to singletons with "is" and "is not"
git-p4: only seperate code blocks by a single empty line
git-p4: move inline comments to line above
git-p4: seperate multiple statements onto seperate lines
git-p4: sort imports
Johannes Schindelin (27):
t2016: require the PERL prereq only when necessary
add -i: default to the built-in implementation
trace2 docs: a couple of grammar fixes
trace2 docs: "printf" is not an English word
trace2 docs: surround more terms in backticks
trace2 docs: fix a JSON formatted example
trace2 docs: clarify what `varargs` is all about
trace2 docs: add missing full stop
ci: fix code style
tests: refactor --write-junit-xml code
test(junit): avoid line feeds in XML attributes
ci/run-build-and-tests: take a more high-level view
ci: make it easier to find failed tests' logs in the GitHub workflow
ci/run-build-and-tests: add some structure to the GitHub workflow output
ci: optionally mark up output in the GitHub workflow
ci(github): skip the logs of the successful test cases
ci: use `--github-workflow-markup` in the GitHub workflow
ci(github): mention where the full logs can be found
ci: call `finalize_test_case_output` a little later
compat/win32/syslog: fix use-after-realloc
nedmalloc: avoid new compile error
dir.c: avoid "exceeds maximum object size" error with GCC v12.x
archive: optionally add "virtual" files
archive --add-virtual-file: allow paths containing colons
scalar: validate the optional enlistment argument
scalar: implement `scalar diagnose`
scalar diagnose: include disk space information
Jonathan Tan (2):
fetch-pack: make unexpected peek result non-fatal
commit,shallow: unparse commits if grafts changed
Josh Steadmon (1):
run-command: don't spam trace2_child_exit()
Junio C Hamano (32):
show-branch: -g and --current are incompatible
2.36 gitk/diff-tree --stdin regression fix
Some regression fixes for 2.36
2.36 show regression fix
clone: plug a miniscule leak
cocci: drop bogus xstrdup_or_null() rule
tree-wide: apply equals-null.cocci
tree-wide: apply equals-null.cocci
tree-wide: apply equals-null.cocci
A bit more regression fixes for 2.36
Git 2.36.1
0th batch for topics from the previous cycle
SubmittingPatches: use more stable git.ozlabs.org URL
second 0th batch of topics from the previous cycle
archive: do not let on-disk mode leak to zip archives
commit: fix "author_ident" leak
fetch: do not run a redundant fetch from submodule
t6424: make sure a failed merge preserves local changes
First batch for 2.37
Second batch
Third batch
Fourth batch
http.c: clear the 'finished' member once we are done with it
pathspec: correct an empty string used as a pathspec element
Fifth batch
Sixth batch
Revert -Wno-error=dangling-pointer
Seventh batch
Eighth batch
Prepare for 2.36.2
Ninth batch
Git 2.37-rc0
Kevin Locke (1):
setup: don't die if realpath(3) fails on getcwd(3)
Khalid Masum (1):
t3501: remove test -f and stop ignoring git <cmd> exit code
Kirill Frolov (1):
git-p4: fix issue with multiple perforce remotes
Kleber Tarcísio (1):
commit-graph: close file before returning NULL
Matthew John Cheetham (2):
scalar: teach `diagnose` to gather packfile info
scalar: teach `diagnose` to gather loose objects information
Michael J Gruber (1):
detect-compiler: make detection independent of locale
Miklos Vajna (1):
log: "--since-as-filter" option is a non-terminating "--since" variant
Neeraj Singh (12):
bulk-checkin: rename 'state' variable and separate 'plugged' boolean
bulk-checkin: rebrand plug/unplug APIs as 'odb transactions'
core.fsyncmethod: batched disk flushes for loose-objects
cache-tree: use ODB transaction around writing a tree
builtin/add: add ODB transaction around add_files_to_cache
update-index: use the bulk-checkin infrastructure
unpack-objects: use the bulk-checkin infrastructure
core.fsync: use batch mode and sync loose objects by default on Windows
test-lib-functions: add parsing helpers for ls-files and ls-tree
core.fsyncmethod: tests for batch mode
t/perf: add iteration setup mechanism to perf-lib
core.fsyncmethod: performance tests for batch mode
Orgad Shaneh (2):
submodule--helper: fix initialization of warn_if_uninitialized
fetch: limit shared symref check only for local branches
Philippe Blain (8):
submodule.h: use a named enum for RECURSE_SUBMODULES_*
MyFirstContribution: add "Anatomy of a Patch Series" section
MyFirstContribution: add standalone section on cover letter
MyFirstContribution: reference "The cover letter" in "Preparing Email"
MyFirstContribution: reference "The cover letter" in GitGitGadget section
MyFirstContribution: drop PR description for GGG single-patch contributions
ci: update Cirrus-CI image to FreeBSD 12.3
range-diff: show submodule changes irrespective of diff.submodule
Phillip Wood (1):
tests: make SANITIZE=address imply TEST_NO_MALLOC_CHECK
René Scharfe (8):
commit, sequencer: turn off break_opt for commit summary
t7812: test PCRE2 whitespace bug
tempfile: add mks_tempfile_dt()
diff: use mks_tempfile_dt()
Revert "name-rev: release unused name strings"
2.36 format-patch regression fix
2.36 fast-export regression fix
archive: improve documentation of --prefix
SZEDER Gábor (3):
t0033-safe-directory: check the error message without matching the trash dir
t0033-safe-directory: check when 'safe.directory' is ignored
safe.directory: document and check that it's ignored in the environment
Siddharth Asthana (1):
t1011: replace test -f with test_path_is_file
Son Luong Ngoc (1):
fsmonitor: query watchman with right valid json
Tao Klerks (8):
untracked-cache: test untracked-cache-bypassing behavior with -uall
untracked-cache: support '--untracked-files=all' if configured
git-p4: support explicit sync of arbitrary existing git-p4 refs
git-p4: preserve utf8 BOM when importing from p4 to git
branch: new autosetupmerge option 'simple' for matching branches
push: default to single remote even when not named origin
push: new config option "push.autoSetupRemote" supports "simple" push
git-p4: improve encoding handling to support inconsistent encodings
Taylor Blau (25):
builtin/receive-pack.c: remove redundant 'if'
t7703: demonstrate object corruption with pack.packSizeLimit
builtin/repack.c: ensure that `names` is sorted
Documentation/technical: add cruft-packs.txt
pack-bitmap.c: check preferred pack validity when opening MIDX bitmap
builtin/pack-objects.c: avoid redundant NULL check
builtin/pack-objects.c: ensure included `--stdin-packs` exist
builtin/pack-objects.c: ensure pack validity from MIDX bitmap objects
pack-mtimes: support reading .mtimes files
pack-write: pass 'struct packing_data' to 'stage_tmp_packfiles'
chunk-format.h: extract oid_version()
pack-mtimes: support writing pack .mtimes files
t/helper: add 'pack-mtimes' test-tool
builtin/pack-objects.c: return from create_object_entry()
builtin/pack-objects.c: --cruft without expiration
reachable: add options to add_unseen_recent_objects_to_traversal
reachable: report precise timestamps from objects in cruft packs
builtin/pack-objects.c: --cruft with expiration
builtin/repack.c: support generating a cruft pack
builtin/repack.c: allow configuring cruft pack generation
builtin/repack.c: use named flags for existing_packs
builtin/repack.c: add cruft packs to MIDX during geometric repack
builtin/gc.c: conditionally avoid pruning objects via loose
sha1-file.c: don't freshen cruft packs
builtin/show-ref.c: avoid over-iterating with --heads, --tags
Victoria Dye (8):
stash: expand sparse-checkout compatibility testing
stash: integrate with sparse index
sparse-index: expose 'is_sparse_index_allowed()'
read-cache: set sparsity when index is new
stash: apply stash using 'merge_ort_nonrecursive()'
unpack-trees: preserve index sparsity
repack: respect --keep-pack with geometric repack
ci(github): avoid printing test case preamble twice
Yuyi Wang (3):
cmake: fix CMakeLists.txt on Linux
cmake: add pcre2 support
cmake: remove (_)UNICODE def on Windows in CMakeLists.txt
ZheNing Hu (1):
read-cache.c: reduce unnecessary cache entry name copying
halilsen (2):
gitk: trivial indentation fix
gitk: include y coord in recorded sash position
Ævar Arnfjörð Bjarmason (62):
run-command.h: remove always unused "clean_on_exit_handler_cbdata"
configure.ac: remove USE_PIC comment
xdiff/xmacros.h: remove unused XDL_PTRFREE
pack-bitmap-write: remove unused bitmap_reset() function
object-store.h: remove unused has_sha1_file*()
alloc.[ch]: remove alloc_report() function
t/helper/test-fast-rebase.c: don't leak "struct strbuf"
blame: use "goto cleanup" for cleanup_scoreboard()
string_list API users: use string_list_init_{no,}dup
format-patch: don't leak "extra_headers" or "ref_message_ids"
cocci: add and apply free_commit_list() rules
revision.[ch]: provide and start using a release_revisions()
revisions API users: add straightforward release_revisions()
revision.[ch]: document and move code declared around "init"
revisions API users: use release_revisions() needing REV_INFO_INIT
stash: always have the owner of "stash_info" free it
revisions API users: add "goto cleanup" for release_revisions()
revisions API users: use release_revisions() in http-push.c
revisions API users: use release_revisions() in builtin/log.c
revisions API users: use release_revisions() with UNLEAK()
revisions API users: use release_revisions() for "prune_data" users
revisions API: have release_revisions() release "commits"
revisions API: have release_revisions() release "mailmap"
revisions API: have release_revisions() release "cmdline"
revisions API: have release_revisions() release "filter"
revisions API: have release_revisions() release "grep_filter"
revisions API: have release_revisions() release "prune_data"
revisions API: clear "boundary_commits" in release_revisions()
revisions API: release "reflog_info" in release revisions()
revisions API: call diff_free(&revs->pruning) in revisions_release()
revisions API: have release_revisions() release "date_mode"
revisions API: have release_revisions() release "topo_walk_info"
revisions API: add a TODO for diff_free(&revs->diffopt)
CI: select CC based on CC_PACKAGE (again)
tests: using custom GIT_EXEC_PATH breaks --valgrind tests
log test: skip a failing mkstemp() test under valgrind
object-file: fix a unpack_loose_header() regression in 3b6a8db3b03
commit-graph.c: don't assume that stat() succeeds
ci: use https, not http to download binaries from perforce.com
connect.c: refactor sending of agent & object-format
dir API: add a generalized path_match_flags() function
fetch-pack: add a deref_without_lazy_fetch_extended()
fetch-pack: move --keep=* option filling to a function
bundle.h: make "fd" version of read_bundle_header() public
Makefile: have "make pot" not "reset --hard"
i18n CI: stop allowing non-ASCII source messages in po/git.pot
po/git.pot: don't check in result of "make pot"
Makefile: add "po-init" rule to initialize po/XX.po
l10n: Document the new l10n workflow
common-main.c: move non-trace2 exit() behavior out of trace2.c
usage.c: add a non-fatal bug() function to go with BUG()
parse-options.c: use new bug() API for optbug()
parse-options.c: use optbug() instead of BUG() "opts" check
receive-pack: use bug() and BUG_if_bug()
cache-tree.c: use bug() and BUG_if_bug()
run-command API: rename "env_array" to "env"
run-command API users: use "env" not "env_array" in comments & names
ls-tree: test for the regression in 9c4d58ff2c3
run-command: add an "ungroup" option to run_process_parallel()
remote.c: remove braces from one-statement "for"-loops
remote.c: don't dereference NULL in freeing loop
hook API: fix v2.36.0 regression: hooks should be connected to a TTY
^ 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%]
* [PATCH v9 00/30] Builtin FSMonitor Part 2
2022-03-24 16:49 2% ` [PATCH v8 00/30] " Jeff Hostetler via GitGitGadget
@ 2022-03-25 18:02 3% ` Jeff Hostetler via GitGitGadget
2022-03-25 19:02 0% ` rsbecker
0 siblings, 1 reply; 162+ results
From: Jeff Hostetler via GitGitGadget @ 2022-03-25 18:02 UTC (permalink / raw)
To: git
Cc: Bagas Sanjaya, Ævar Arnfjörð Bjarmason,
Jeff Hostetler, Eric Sunshine, Johannes Schindelin, Tao Klerks,
rsbecker, Jeff Hostetler
Here is V9 of Part 2 of my builtin FSMonitor series. This version addresses
bash style issues in t7527 raised on V8. These changes do not require a new
version of Part 3.
Here is a range-diff from V8 to V9 relative to 715d08a9e5 (The eighth batch,
2022-02-25).
1: e98373f997 = 1: e98373f997 fsmonitor: enhance existing comments, clarify trivial response handling
2: ab68b94417 = 2: ab68b94417 fsmonitor-ipc: create client routines for git-fsmonitor--daemon
3: e04c7301f2 = 3: e04c7301f2 fsmonitor: config settings are repository-specific
4: ea02ba25d8 = 4: ea02ba25d8 fsmonitor: use IPC to query the builtin FSMonitor daemon
5: 6ab7db9cb7 = 5: 6ab7db9cb7 fsmonitor: document builtin fsmonitor
6: 0ce8ae3f2c = 6: 0ce8ae3f2c fsmonitor--daemon: add a built-in fsmonitor daemon
7: 4624ce2fa4 = 7: 4624ce2fa4 fsmonitor--daemon: implement 'stop' and 'status' commands
8: a29fe7266a = 8: a29fe7266a compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
9: 2f8a42fdb9 = 9: 2f8a42fdb9 compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
10: f07800690e = 10: f07800690e fsmonitor--daemon: implement 'run' command
11: a6a39a3306 = 11: a6a39a3306 fsmonitor--daemon: implement 'start' command
12: d62e338d00 = 12: d62e338d00 fsmonitor--daemon: add pathname classification
13: 53e06b4ae5 = 13: 53e06b4ae5 fsmonitor--daemon: define token-ids
14: 39f43fabe0 = 14: 39f43fabe0 fsmonitor--daemon: create token-based changed path cache
15: 239558e34f = 15: 239558e34f compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
16: 14b775e9d8 = 16: 14b775e9d8 compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
17: 55bd7aee06 = 17: 55bd7aee06 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
18: c43009124f = 18: c43009124f fsmonitor--daemon: implement handle_client callback
19: ed338777b5 = 19: ed338777b5 help: include fsmonitor--daemon feature flag in version info
20: c99bac29d4 = 20: c99bac29d4 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
21: c8709da945 ! 21: bc94e379b0 t7527: create test for fsmonitor--daemon
@@ Commit message
t7527: create test for fsmonitor--daemon
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
- Signed-off-by: Junio C Hamano <gitster@pobox.com>
## t/t7527-builtin-fsmonitor.sh (new) ##
@@
@@ t/t7527-builtin-fsmonitor.sh (new)
+ rm -rf $1
+}
+
-+is_value () {
-+ test -n "$1" && test "${1::1}" != "-"
-+}
-+
+start_daemon () {
-+ r= &&
-+ tf= &&
-+ t2= &&
-+ tk= &&
++ r= tf= t2= tk= &&
+
+ while test "$#" -ne 0
+ do
+ case "$1" in
+ -C)
-+ shift;
-+ is_value $1 || BUG "error: -C requires value"
-+ r="-C $1"
++ r="-C ${2?}"
+ shift
+ ;;
+ --tf)
-+ shift;
-+ is_value $1 || BUG "error: --tf requires value"
-+ tf="$1"
++ tf="${2?}"
+ shift
+ ;;
+ --t2)
-+ shift;
-+ is_value $1 || BUG "error: --t2 requires value"
-+ t2="$1"
++ t2="${2?}"
+ shift
+ ;;
+ --tk)
-+ shift;
-+ is_value $1 || BUG "error: --tk requires value"
-+ tk="$1"
++ tk="${2?}"
+ shift
+ ;;
-+ *)
++ -*)
+ BUG "error: unknown option: '$1'"
+ ;;
++ *)
++ BUG "error: unbound argument: '$1'"
++ ;;
+ esac
++ shift
+ done &&
+
+ (
22: cc39ecf10a = 22: 06d56d3a73 t/perf: avoid copying builtin fsmonitor files into test repo
23: 2bb3eb8476 = 23: 2dd0215127 t/helper/test-chmtime: skip directories on Windows
24: bab9a9b080 = 24: bb88cddc13 t/perf/p7519: fix coding style
25: 2dd06ad2f7 = 25: 50c2afaa49 t/perf/p7519: speed up test on Windows
26: 6eaa5765ae = 26: 5b18e3b692 t/perf/p7519: add fsmonitor--daemon test cases
27: 30957f3930 = 27: 899c23f63c fsmonitor--daemon: periodically truncate list of modified files
28: c8ca2a1727 = 28: 597a7192f9 fsmonitor--daemon: use a cookie file to sync with file system
29: 4caf1d89b8 = 29: 68a05fd289 fsmonitor: force update index after large responses
30: f87a1eba69 = 30: 5eb696daba t7527: test status with untracked-cache and fsmonitor--daemon
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
.gitignore | 1 +
Documentation/config/core.txt | 60 +-
Documentation/git-fsmonitor--daemon.txt | 75 ++
Documentation/git-update-index.txt | 8 +-
Makefile | 17 +
builtin.h | 1 +
builtin/fsmonitor--daemon.c | 1479 +++++++++++++++++++++++
builtin/update-index.c | 7 +-
cache.h | 1 -
compat/fsmonitor/fsm-darwin-gcc.h | 92 ++
compat/fsmonitor/fsm-listen-darwin.c | 427 +++++++
compat/fsmonitor/fsm-listen-win32.c | 586 +++++++++
compat/fsmonitor/fsm-listen.h | 49 +
config.c | 14 -
config.h | 1 -
config.mak.uname | 20 +
contrib/buildsystems/CMakeLists.txt | 10 +
environment.c | 1 -
fsmonitor--daemon.h | 166 +++
fsmonitor-ipc.c | 171 +++
fsmonitor-ipc.h | 48 +
fsmonitor-settings.c | 114 ++
fsmonitor-settings.h | 21 +
fsmonitor.c | 216 +++-
fsmonitor.h | 15 +-
git.c | 1 +
help.c | 4 +
repo-settings.c | 1 +
repository.h | 3 +
t/README | 4 +-
t/helper/test-chmtime.c | 15 +
t/helper/test-fsmonitor-client.c | 116 ++
t/helper/test-tool.c | 1 +
t/helper/test-tool.h | 1 +
t/perf/p7519-fsmonitor.sh | 68 +-
t/perf/perf-lib.sh | 2 +-
t/t7527-builtin-fsmonitor.sh | 609 ++++++++++
t/test-lib.sh | 7 +
38 files changed, 4326 insertions(+), 106 deletions(-)
create mode 100644 Documentation/git-fsmonitor--daemon.txt
create mode 100644 builtin/fsmonitor--daemon.c
create mode 100644 compat/fsmonitor/fsm-darwin-gcc.h
create mode 100644 compat/fsmonitor/fsm-listen-darwin.c
create mode 100644 compat/fsmonitor/fsm-listen-win32.c
create mode 100644 compat/fsmonitor/fsm-listen.h
create mode 100644 fsmonitor--daemon.h
create mode 100644 fsmonitor-ipc.c
create mode 100644 fsmonitor-ipc.h
create mode 100644 fsmonitor-settings.c
create mode 100644 fsmonitor-settings.h
create mode 100644 t/helper/test-fsmonitor-client.c
create mode 100755 t/t7527-builtin-fsmonitor.sh
base-commit: 715d08a9e51251ad8290b181b6ac3b9e1f9719d7
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1041%2Fjeffhostetler%2Fbuiltin-fsmonitor-part2-v9
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1041/jeffhostetler/builtin-fsmonitor-part2-v9
Pull-Request: https://github.com/gitgitgadget/git/pull/1041
Range-diff vs v8:
1: e98373f997f = 1: e98373f997f fsmonitor: enhance existing comments, clarify trivial response handling
2: ab68b944173 = 2: ab68b944173 fsmonitor-ipc: create client routines for git-fsmonitor--daemon
3: e04c7301f24 = 3: e04c7301f24 fsmonitor: config settings are repository-specific
4: ea02ba25d8f = 4: ea02ba25d8f fsmonitor: use IPC to query the builtin FSMonitor daemon
5: 6ab7db9cb76 = 5: 6ab7db9cb76 fsmonitor: document builtin fsmonitor
6: 0ce8ae3f2cf = 6: 0ce8ae3f2cf fsmonitor--daemon: add a built-in fsmonitor daemon
7: 4624ce2fa47 = 7: 4624ce2fa47 fsmonitor--daemon: implement 'stop' and 'status' commands
8: a29fe7266a4 = 8: a29fe7266a4 compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
9: 2f8a42fdb93 = 9: 2f8a42fdb93 compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
10: f07800690ee = 10: f07800690ee fsmonitor--daemon: implement 'run' command
11: a6a39a3306d = 11: a6a39a3306d fsmonitor--daemon: implement 'start' command
12: d62e338d008 = 12: d62e338d008 fsmonitor--daemon: add pathname classification
13: 53e06b4ae5d = 13: 53e06b4ae5d fsmonitor--daemon: define token-ids
14: 39f43fabe02 = 14: 39f43fabe02 fsmonitor--daemon: create token-based changed path cache
15: 239558e34ff = 15: 239558e34ff compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
16: 14b775e9d8b = 16: 14b775e9d8b compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
17: 55bd7aee06c = 17: 55bd7aee06c compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
18: c43009124fb = 18: c43009124fb fsmonitor--daemon: implement handle_client callback
19: ed338777b56 = 19: ed338777b56 help: include fsmonitor--daemon feature flag in version info
20: c99bac29d42 = 20: c99bac29d42 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
21: c8709da9457 ! 21: bc94e379b03 t7527: create test for fsmonitor--daemon
@@ Commit message
t7527: create test for fsmonitor--daemon
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
- Signed-off-by: Junio C Hamano <gitster@pobox.com>
## t/t7527-builtin-fsmonitor.sh (new) ##
@@
@@ t/t7527-builtin-fsmonitor.sh (new)
+ rm -rf $1
+}
+
-+is_value () {
-+ test -n "$1" && test "${1::1}" != "-"
-+}
-+
+start_daemon () {
-+ r= &&
-+ tf= &&
-+ t2= &&
-+ tk= &&
++ r= tf= t2= tk= &&
+
+ while test "$#" -ne 0
+ do
+ case "$1" in
+ -C)
-+ shift;
-+ is_value $1 || BUG "error: -C requires value"
-+ r="-C $1"
++ r="-C ${2?}"
+ shift
+ ;;
+ --tf)
-+ shift;
-+ is_value $1 || BUG "error: --tf requires value"
-+ tf="$1"
++ tf="${2?}"
+ shift
+ ;;
+ --t2)
-+ shift;
-+ is_value $1 || BUG "error: --t2 requires value"
-+ t2="$1"
++ t2="${2?}"
+ shift
+ ;;
+ --tk)
-+ shift;
-+ is_value $1 || BUG "error: --tk requires value"
-+ tk="$1"
++ tk="${2?}"
+ shift
+ ;;
-+ *)
++ -*)
+ BUG "error: unknown option: '$1'"
+ ;;
++ *)
++ BUG "error: unbound argument: '$1'"
++ ;;
+ esac
++ shift
+ done &&
+
+ (
22: cc39ecf10ae = 22: 06d56d3a733 t/perf: avoid copying builtin fsmonitor files into test repo
23: 2bb3eb84767 = 23: 2dd02151278 t/helper/test-chmtime: skip directories on Windows
24: bab9a9b0802 = 24: bb88cddc137 t/perf/p7519: fix coding style
25: 2dd06ad2f71 = 25: 50c2afaa49e t/perf/p7519: speed up test on Windows
26: 6eaa5765ae1 = 26: 5b18e3b6926 t/perf/p7519: add fsmonitor--daemon test cases
27: 30957f3930e = 27: 899c23f63c3 fsmonitor--daemon: periodically truncate list of modified files
28: c8ca2a17277 = 28: 597a7192f94 fsmonitor--daemon: use a cookie file to sync with file system
29: 4caf1d89b84 = 29: 68a05fd2892 fsmonitor: force update index after large responses
30: f87a1eba693 = 30: 5eb696daba2 t7527: test status with untracked-cache and fsmonitor--daemon
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* RE: [PATCH v9 00/30] Builtin FSMonitor Part 2
2022-03-25 18:02 3% ` [PATCH v9 " Jeff Hostetler via GitGitGadget
@ 2022-03-25 19:02 0% ` rsbecker
0 siblings, 0 replies; 162+ results
From: rsbecker @ 2022-03-25 19:02 UTC (permalink / raw)
To: 'Jeff Hostetler via GitGitGadget', git
Cc: 'Bagas Sanjaya',
'Ævar Arnfjörð Bjarmason',
'Jeff Hostetler', 'Eric Sunshine',
'Johannes Schindelin', 'Tao Klerks',
'Jeff Hostetler'
On March 25, 2022 2:03 PM, Jeff Hostetler wrote:
>Here is V9 of Part 2 of my builtin FSMonitor series. This version addresses bash
>style issues in t7527 raised on V8. These changes do not require a new version of
>Part 3.
>
>Here is a range-diff from V8 to V9 relative to 715d08a9e5 (The eighth batch, 2022-
>02-25).
>
> 1: e98373f997 = 1: e98373f997 fsmonitor: enhance existing comments, clarify
>trivial response handling
> 2: ab68b94417 = 2: ab68b94417 fsmonitor-ipc: create client routines for git-
>fsmonitor--daemon
> 3: e04c7301f2 = 3: e04c7301f2 fsmonitor: config settings are repository-specific
> 4: ea02ba25d8 = 4: ea02ba25d8 fsmonitor: use IPC to query the builtin FSMonitor
>daemon
> 5: 6ab7db9cb7 = 5: 6ab7db9cb7 fsmonitor: document builtin fsmonitor
> 6: 0ce8ae3f2c = 6: 0ce8ae3f2c fsmonitor--daemon: add a built-in fsmonitor
>daemon
> 7: 4624ce2fa4 = 7: 4624ce2fa4 fsmonitor--daemon: implement 'stop' and 'status'
>commands
> 8: a29fe7266a = 8: a29fe7266a compat/fsmonitor/fsm-listen-win32: stub in
>backend for Windows
> 9: 2f8a42fdb9 = 9: 2f8a42fdb9 compat/fsmonitor/fsm-listen-darwin: stub in
>backend for Darwin
>10: f07800690e = 10: f07800690e fsmonitor--daemon: implement 'run' command
>11: a6a39a3306 = 11: a6a39a3306 fsmonitor--daemon: implement 'start' command
>12: d62e338d00 = 12: d62e338d00 fsmonitor--daemon: add pathname
>classification
>13: 53e06b4ae5 = 13: 53e06b4ae5 fsmonitor--daemon: define token-ids
>14: 39f43fabe0 = 14: 39f43fabe0 fsmonitor--daemon: create token-based
>changed path cache
>15: 239558e34f = 15: 239558e34f compat/fsmonitor/fsm-listen-win32: implement
>FSMonitor backend on Windows
>16: 14b775e9d8 = 16: 14b775e9d8 compat/fsmonitor/fsm-listen-darwin: add
>MacOS header files for FSEvent
>17: 55bd7aee06 = 17: 55bd7aee06 compat/fsmonitor/fsm-listen-darwin:
>implement FSEvent listener on MacOS
>18: c43009124f = 18: c43009124f fsmonitor--daemon: implement handle_client
>callback
>19: ed338777b5 = 19: ed338777b5 help: include fsmonitor--daemon feature flag in
>version info
>20: c99bac29d4 = 20: c99bac29d4 t/helper/fsmonitor-client: create IPC client to
>talk to FSMonitor Daemon
>21: c8709da945 ! 21: bc94e379b0 t7527: create test for fsmonitor--daemon
> @@ Commit message
> t7527: create test for fsmonitor--daemon
>
> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
> - Signed-off-by: Junio C Hamano <gitster@pobox.com>
>
> ## t/t7527-builtin-fsmonitor.sh (new) ##
> @@
> @@ t/t7527-builtin-fsmonitor.sh (new)
> + rm -rf $1
> +}
> +
> -+is_value () {
> -+ test -n "$1" && test "${1::1}" != "-"
> -+}
> -+
> +start_daemon () {
> -+ r= &&
> -+ tf= &&
> -+ t2= &&
> -+ tk= &&
> ++ r= tf= t2= tk= &&
> +
> + while test "$#" -ne 0
> + do
> + case "$1" in
> + -C)
> -+ shift;
> -+ is_value $1 || BUG "error: -C requires value"
> -+ r="-C $1"
> ++ r="-C ${2?}"
> + shift
> + ;;
> + --tf)
> -+ shift;
> -+ is_value $1 || BUG "error: --tf requires value"
> -+ tf="$1"
> ++ tf="${2?}"
> + shift
> + ;;
> + --t2)
> -+ shift;
> -+ is_value $1 || BUG "error: --t2 requires value"
> -+ t2="$1"
> ++ t2="${2?}"
> + shift
> + ;;
> + --tk)
> -+ shift;
> -+ is_value $1 || BUG "error: --tk requires value"
> -+ tk="$1"
> ++ tk="${2?}"
> + shift
> + ;;
> -+ *)
> ++ -*)
> + BUG "error: unknown option: '$1'"
> + ;;
> ++ *)
> ++ BUG "error: unbound argument: '$1'"
> ++ ;;
> + esac
> ++ shift
> + done &&
> +
> + (
>22: cc39ecf10a = 22: 06d56d3a73 t/perf: avoid copying builtin fsmonitor files into
>test repo
>23: 2bb3eb8476 = 23: 2dd0215127 t/helper/test-chmtime: skip directories on
>Windows
>24: bab9a9b080 = 24: bb88cddc13 t/perf/p7519: fix coding style
>25: 2dd06ad2f7 = 25: 50c2afaa49 t/perf/p7519: speed up test on Windows
>26: 6eaa5765ae = 26: 5b18e3b692 t/perf/p7519: add fsmonitor--daemon test
>cases
>27: 30957f3930 = 27: 899c23f63c fsmonitor--daemon: periodically truncate list of
>modified files
>28: c8ca2a1727 = 28: 597a7192f9 fsmonitor--daemon: use a cookie file to sync with
>file system
>29: 4caf1d89b8 = 29: 68a05fd289 fsmonitor: force update index after large
>responses
>30: f87a1eba69 = 30: 5eb696daba t7527: test status with untracked-cache and
>fsmonitor--daemon
>
>
>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
>
> .gitignore | 1 +
> Documentation/config/core.txt | 60 +-
> Documentation/git-fsmonitor--daemon.txt | 75 ++
> Documentation/git-update-index.txt | 8 +-
> Makefile | 17 +
> builtin.h | 1 +
> builtin/fsmonitor--daemon.c | 1479 +++++++++++++++++++++++
> builtin/update-index.c | 7 +-
> cache.h | 1 -
> compat/fsmonitor/fsm-darwin-gcc.h | 92 ++
> compat/fsmonitor/fsm-listen-darwin.c | 427 +++++++
> compat/fsmonitor/fsm-listen-win32.c | 586 +++++++++
> compat/fsmonitor/fsm-listen.h | 49 +
> config.c | 14 -
> config.h | 1 -
> config.mak.uname | 20 +
> contrib/buildsystems/CMakeLists.txt | 10 +
> environment.c | 1 -
> fsmonitor--daemon.h | 166 +++
> fsmonitor-ipc.c | 171 +++
> fsmonitor-ipc.h | 48 +
> fsmonitor-settings.c | 114 ++
> fsmonitor-settings.h | 21 +
> fsmonitor.c | 216 +++-
> fsmonitor.h | 15 +-
> git.c | 1 +
> help.c | 4 +
> repo-settings.c | 1 +
> repository.h | 3 +
> t/README | 4 +-
> t/helper/test-chmtime.c | 15 +
> t/helper/test-fsmonitor-client.c | 116 ++
> t/helper/test-tool.c | 1 +
> t/helper/test-tool.h | 1 +
> t/perf/p7519-fsmonitor.sh | 68 +-
> t/perf/perf-lib.sh | 2 +-
> t/t7527-builtin-fsmonitor.sh | 609 ++++++++++
> t/test-lib.sh | 7 +
> 38 files changed, 4326 insertions(+), 106 deletions(-) create mode 100644
>Documentation/git-fsmonitor--daemon.txt
> create mode 100644 builtin/fsmonitor--daemon.c create mode 100644
>compat/fsmonitor/fsm-darwin-gcc.h create mode 100644 compat/fsmonitor/fsm-
>listen-darwin.c
> create mode 100644 compat/fsmonitor/fsm-listen-win32.c
> create mode 100644 compat/fsmonitor/fsm-listen.h create mode 100644
>fsmonitor--daemon.h create mode 100644 fsmonitor-ipc.c create mode 100644
>fsmonitor-ipc.h create mode 100644 fsmonitor-settings.c create mode 100644
>fsmonitor-settings.h create mode 100644 t/helper/test-fsmonitor-client.c create
>mode 100755 t/t7527-builtin-fsmonitor.sh
>
>
>base-commit: 715d08a9e51251ad8290b181b6ac3b9e1f9719d7
>Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-
>1041%2Fjeffhostetler%2Fbuiltin-fsmonitor-part2-v9
>Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-
>1041/jeffhostetler/builtin-fsmonitor-part2-v9
>Pull-Request: https://github.com/gitgitgadget/git/pull/1041
>
>Range-diff vs v8:
>
> 1: e98373f997f = 1: e98373f997f fsmonitor: enhance existing comments, clarify
>trivial response handling
> 2: ab68b944173 = 2: ab68b944173 fsmonitor-ipc: create client routines for git-
>fsmonitor--daemon
> 3: e04c7301f24 = 3: e04c7301f24 fsmonitor: config settings are repository-
>specific
> 4: ea02ba25d8f = 4: ea02ba25d8f fsmonitor: use IPC to query the builtin
>FSMonitor daemon
> 5: 6ab7db9cb76 = 5: 6ab7db9cb76 fsmonitor: document builtin fsmonitor
> 6: 0ce8ae3f2cf = 6: 0ce8ae3f2cf fsmonitor--daemon: add a built-in fsmonitor
>daemon
> 7: 4624ce2fa47 = 7: 4624ce2fa47 fsmonitor--daemon: implement 'stop' and
>'status' commands
> 8: a29fe7266a4 = 8: a29fe7266a4 compat/fsmonitor/fsm-listen-win32: stub in
>backend for Windows
> 9: 2f8a42fdb93 = 9: 2f8a42fdb93 compat/fsmonitor/fsm-listen-darwin: stub in
>backend for Darwin
> 10: f07800690ee = 10: f07800690ee fsmonitor--daemon: implement 'run'
>command
> 11: a6a39a3306d = 11: a6a39a3306d fsmonitor--daemon: implement 'start'
>command
> 12: d62e338d008 = 12: d62e338d008 fsmonitor--daemon: add pathname
>classification
> 13: 53e06b4ae5d = 13: 53e06b4ae5d fsmonitor--daemon: define token-ids
> 14: 39f43fabe02 = 14: 39f43fabe02 fsmonitor--daemon: create token-based
>changed path cache
> 15: 239558e34ff = 15: 239558e34ff compat/fsmonitor/fsm-listen-win32:
>implement FSMonitor backend on Windows
> 16: 14b775e9d8b = 16: 14b775e9d8b compat/fsmonitor/fsm-listen-darwin: add
>MacOS header files for FSEvent
> 17: 55bd7aee06c = 17: 55bd7aee06c compat/fsmonitor/fsm-listen-darwin:
>implement FSEvent listener on MacOS
> 18: c43009124fb = 18: c43009124fb fsmonitor--daemon: implement handle_client
>callback
> 19: ed338777b56 = 19: ed338777b56 help: include fsmonitor--daemon feature
>flag in version info
> 20: c99bac29d42 = 20: c99bac29d42 t/helper/fsmonitor-client: create IPC client to
>talk to FSMonitor Daemon
> 21: c8709da9457 ! 21: bc94e379b03 t7527: create test for fsmonitor--daemon
> @@ Commit message
> t7527: create test for fsmonitor--daemon
>
> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
> - Signed-off-by: Junio C Hamano <gitster@pobox.com>
>
> ## t/t7527-builtin-fsmonitor.sh (new) ##
> @@
> @@ t/t7527-builtin-fsmonitor.sh (new)
> + rm -rf $1
> +}
> +
> -+is_value () {
> -+ test -n "$1" && test "${1::1}" != "-"
> -+}
> -+
> +start_daemon () {
> -+ r= &&
> -+ tf= &&
> -+ t2= &&
> -+ tk= &&
> ++ r= tf= t2= tk= &&
> +
> + while test "$#" -ne 0
> + do
> + case "$1" in
> + -C)
> -+ shift;
> -+ is_value $1 || BUG "error: -C requires value"
> -+ r="-C $1"
> ++ r="-C ${2?}"
> + shift
> + ;;
> + --tf)
> -+ shift;
> -+ is_value $1 || BUG "error: --tf requires value"
> -+ tf="$1"
> ++ tf="${2?}"
> + shift
> + ;;
> + --t2)
> -+ shift;
> -+ is_value $1 || BUG "error: --t2 requires value"
> -+ t2="$1"
> ++ t2="${2?}"
> + shift
> + ;;
> + --tk)
> -+ shift;
> -+ is_value $1 || BUG "error: --tk requires value"
> -+ tk="$1"
> ++ tk="${2?}"
> + shift
> + ;;
> -+ *)
> ++ -*)
> + BUG "error: unknown option: '$1'"
> + ;;
> ++ *)
> ++ BUG "error: unbound argument: '$1'"
> ++ ;;
> + esac
> ++ shift
> + done &&
> +
> + (
> 22: cc39ecf10ae = 22: 06d56d3a733 t/perf: avoid copying builtin fsmonitor files
>into test repo
> 23: 2bb3eb84767 = 23: 2dd02151278 t/helper/test-chmtime: skip directories on
>Windows
> 24: bab9a9b0802 = 24: bb88cddc137 t/perf/p7519: fix coding style
> 25: 2dd06ad2f71 = 25: 50c2afaa49e t/perf/p7519: speed up test on Windows
> 26: 6eaa5765ae1 = 26: 5b18e3b6926 t/perf/p7519: add fsmonitor--daemon test
>cases
> 27: 30957f3930e = 27: 899c23f63c3 fsmonitor--daemon: periodically truncate list
>of modified files
> 28: c8ca2a17277 = 28: 597a7192f94 fsmonitor--daemon: use a cookie file to sync
>with file system
> 29: 4caf1d89b84 = 29: 68a05fd2892 fsmonitor: force update index after large
>responses
> 30: f87a1eba693 = 30: 5eb696daba2 t7527: test status with untracked-cache and
>fsmonitor--daemon
So that we can plan for next time, would you mind giving some thought to what would be required for Linux and whether it makes sense to extend this. No urgency, but I would not mind participating - assuming my $DAYJOB lets me. I have a backlog for git that I need to get done first anyway.
Kind Regards,
Randall
^ permalink raw reply [relevance 0%]
* [PATCH v8 00/30] Builtin FSMonitor Part 2
2022-03-22 17:59 1% ` [PATCH v7 00/29] " Jeff Hostetler via GitGitGadget
@ 2022-03-24 16:49 2% ` Jeff Hostetler via GitGitGadget
2022-03-25 18:02 3% ` [PATCH v9 " Jeff Hostetler via GitGitGadget
0 siblings, 1 reply; 162+ results
From: Jeff Hostetler via GitGitGadget @ 2022-03-24 16:49 UTC (permalink / raw)
To: git
Cc: Bagas Sanjaya, Ævar Arnfjörð Bjarmason,
Jeff Hostetler, Eric Sunshine, Johannes Schindelin, Tao Klerks,
Jeff Hostetler
Here is V8 of Part 2 of my builtin FSMonitor series. This contains last
minute comments on V7. I'll also send an updated version of Part 3 that
builds upon this version.
Here is a range-diff from V7 to V8 relative to 715d08a9e5 (The eighth batch,
2022-02-25). Changes since V7 can be summarized as:
* [] Improved arg checking in start_daemon() in t7527.
* [] Switch start_daemon() args to use double-dash keywords.
* [] Split out coding style changes in p7519 into separate commit from
speed up changes.
* [] Disabled some of the matrix tests in t7527 concerning the untracked
cache.
* [] Other minor style cleanups.
1: e98373f997 = 1: e98373f997 fsmonitor: enhance existing comments, clarify trivial response handling
2: ab68b94417 = 2: ab68b94417 fsmonitor-ipc: create client routines for git-fsmonitor--daemon
3: e04c7301f2 = 3: e04c7301f2 fsmonitor: config settings are repository-specific
4: ea02ba25d8 = 4: ea02ba25d8 fsmonitor: use IPC to query the builtin FSMonitor daemon
5: 6ab7db9cb7 = 5: 6ab7db9cb7 fsmonitor: document builtin fsmonitor
6: 0ce8ae3f2c = 6: 0ce8ae3f2c fsmonitor--daemon: add a built-in fsmonitor daemon
7: 4624ce2fa4 = 7: 4624ce2fa4 fsmonitor--daemon: implement 'stop' and 'status' commands
8: a29fe7266a = 8: a29fe7266a compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
9: 2f8a42fdb9 = 9: 2f8a42fdb9 compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
10: f07800690e = 10: f07800690e fsmonitor--daemon: implement 'run' command
11: a6a39a3306 = 11: a6a39a3306 fsmonitor--daemon: implement 'start' command
12: d62e338d00 = 12: d62e338d00 fsmonitor--daemon: add pathname classification
13: 53e06b4ae5 = 13: 53e06b4ae5 fsmonitor--daemon: define token-ids
14: 39f43fabe0 = 14: 39f43fabe0 fsmonitor--daemon: create token-based changed path cache
15: 239558e34f = 15: 239558e34f compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
16: 14b775e9d8 = 16: 14b775e9d8 compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
17: 55bd7aee06 = 17: 55bd7aee06 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
18: 1f4b5209bf ! 18: c43009124f fsmonitor--daemon: implement handle_client callback
@@ builtin/fsmonitor--daemon.c: void fsmonitor_force_resync(struct fsmonitor_daemon
+ trace2_data_intmax("fsmonitor", the_repository,
+ "response/trivial", 1);
+
-+ strbuf_release(&response_token);
-+ strbuf_release(&requested_token_id);
-+ return 0;
++ goto cleanup;
+ }
+
+ /*
@@ builtin/fsmonitor--daemon.c: void fsmonitor_force_resync(struct fsmonitor_daemon
+ trace2_data_intmax("fsmonitor", the_repository, "response/count/files", count);
+ trace2_data_intmax("fsmonitor", the_repository, "response/count/duplicates", duplicates);
+
++cleanup:
+ strbuf_release(&response_token);
+ strbuf_release(&requested_token_id);
+ strbuf_release(&payload);
19: 8cf62c9fc6 = 19: ed338777b5 help: include fsmonitor--daemon feature flag in version info
20: 1bd74a8159 = 20: c99bac29d4 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
21: 4a920d0b54 ! 21: c8709da945 t7527: create test for fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh (new)
+ rm -rf $1
+}
+
++is_value () {
++ test -n "$1" && test "${1::1}" != "-"
++}
++
+start_daemon () {
+ r= &&
+ tf= &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+ case "$1" in
+ -C)
+ shift;
-+ test "$#" -ne 0 || BUG "error: -C requires arg"
++ is_value $1 || BUG "error: -C requires value"
+ r="-C $1"
+ shift
+ ;;
-+ -tf)
++ --tf)
+ shift;
-+ test "$#" -ne 0 || BUG "error: -tf requires arg"
++ is_value $1 || BUG "error: --tf requires value"
+ tf="$1"
+ shift
+ ;;
-+ -t2)
++ --t2)
+ shift;
-+ test "$#" -ne 0 || BUG "error: -t2 requires arg"
++ is_value $1 || BUG "error: --t2 requires value"
+ t2="$1"
+ shift
+ ;;
-+ -tk)
++ --tk)
+ shift;
-+ test "$#" -ne 0 || BUG "error: -tk requires arg"
++ is_value $1 || BUG "error: --tk requires value"
+ tk="$1"
+ shift
+ ;;
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'edit some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ edit_files &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'create some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ create_files &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'delete some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ delete_files &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'rename some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ rename_files &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'rename directory' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ mv dirtorename dirrenamed &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'file changes to directory' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ file_to_directory &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'directory changes to a file' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ directory_to_file &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_flush &&
+
-+ start_daemon -C test_flush -tf "$PWD/.git/trace_daemon" -tk true &&
++ start_daemon -C test_flush --tf "$PWD/.git/trace_daemon" --tk true &&
+
+ # The daemon should have an initial token with no events in _0 and
+ # then a few (probably platform-specific number of) events in _1.
@@ t/t7527-builtin-fsmonitor.sh (new)
+ git -C wt-base worktree add ../wt-secondary &&
+
+ start_daemon -C wt-secondary \
-+ -tf "$PWD/trace_wt_secondary" \
-+ -t2 "$PWD/trace2_wt_secondary" &&
++ --tf "$PWD/trace_wt_secondary" \
++ --t2 "$PWD/trace2_wt_secondary" &&
+
+ git -C wt-secondary fsmonitor--daemon stop &&
+ test_must_fail git -C wt-secondary fsmonitor--daemon status
22: c925a9a745 = 22: cc39ecf10a t/perf: avoid copying builtin fsmonitor files into test repo
23: 5b3381c223 = 23: 2bb3eb8476 t/helper/test-chmtime: skip directories on Windows
-: ---------- > 24: bab9a9b080 t/perf/p7519: fix coding style
24: 803a540cc0 ! 25: 2dd06ad2f7 t/perf/p7519: speed up test on Windows
@@ Commit message
Signed-off-by: Junio C Hamano <gitster@pobox.com>
## t/perf/p7519-fsmonitor.sh ##
-@@ t/perf/p7519-fsmonitor.sh: then
- fi
- fi
-
--trace_start() {
-+trace_start () {
- if test -n "$GIT_PERF_7519_TRACE"
- then
- name="$1"
-@@ t/perf/p7519-fsmonitor.sh: trace_start() {
- fi
- }
-
--trace_stop() {
-+trace_stop () {
- if test -n "$GIT_PERF_7519_TRACE"
- then
- unset GIT_TRACE2_PERF
+@@ t/perf/p7519-fsmonitor.sh: trace_stop () {
fi
}
+touch_files () {
-+ n=$1
-+ d="$n"_files
++ n=$1 &&
++ d="$n"_files &&
+
-+ (cd $d ; test_seq 1 $n | xargs touch )
++ (cd $d && test_seq 1 $n | xargs touch )
+}
+
test_expect_success "one time repo setup" '
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
git add 1_file 10_files 100_files 1000_files 10000_files &&
git commit -qm "Add files" &&
-@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
- fi
- '
-
--setup_for_fsmonitor() {
-+setup_for_fsmonitor () {
- # set INTEGRATION_SCRIPT depending on the environment
- if test -n "$INTEGRATION_PATH"
- then
-@@ t/perf/p7519-fsmonitor.sh: test_perf_w_drop_caches () {
- test_perf "$@"
- }
-
--test_fsmonitor_suite() {
-+test_fsmonitor_suite () {
- if test -n "$INTEGRATION_SCRIPT"; then
- DESC="fsmonitor=$(basename $INTEGRATION_SCRIPT)"
- else
-@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite() {
+@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite () {
# Update the mtimes on upto 100k files to make status think
# that they are dirty. For simplicity, omit any files with
25: d5ca2df31c = 26: 6eaa5765ae t/perf/p7519: add fsmonitor--daemon test cases
26: 42631259e8 = 27: 30957f3930 fsmonitor--daemon: periodically truncate list of modified files
27: f256c3cbe8 = 28: c8ca2a1727 fsmonitor--daemon: use a cookie file to sync with file system
28: 08af8296f9 = 29: 4caf1d89b8 fsmonitor: force update index after large responses
29: e6cf84dc8e ! 30: f87a1eba69 t7527: test status with untracked-cache and fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
+ fsm=$2 &&
+ fn=$3 &&
+
++ if test $uc = true && test $fsm = false
++ then
++ # The untracked-cache is buggy when FSMonitor is
++ # DISABLED, so skip the tests for this matrix
++ # combination.
++ #
++ # We've observed random, occasional test failures on
++ # Windows and MacOS when the UC is turned on and FSM
++ # is turned off. These are rare, but they do happen
++ # indicating that it is probably a race condition within
++ # the untracked cache itself.
++ #
++ # It usually happens when a test does F/D trickery and
++ # then the NEXT test fails because of extra status
++ # output from stale UC data from the previous test.
++ #
++ # Since FSMonitor is not involved in the error, skip
++ # the tests for this matrix combination.
++ #
++ return 0
++ fi &&
++
+ test_expect_success "Matrix[uc:$uc][fsm:$fsm] $fn" '
+ matrix_clean_up_repo &&
+ $fn &&
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
.gitignore | 1 +
Documentation/config/core.txt | 60 +-
Documentation/git-fsmonitor--daemon.txt | 75 ++
Documentation/git-update-index.txt | 8 +-
Makefile | 17 +
builtin.h | 1 +
builtin/fsmonitor--daemon.c | 1479 +++++++++++++++++++++++
builtin/update-index.c | 7 +-
cache.h | 1 -
compat/fsmonitor/fsm-darwin-gcc.h | 92 ++
compat/fsmonitor/fsm-listen-darwin.c | 427 +++++++
compat/fsmonitor/fsm-listen-win32.c | 586 +++++++++
compat/fsmonitor/fsm-listen.h | 49 +
config.c | 14 -
config.h | 1 -
config.mak.uname | 20 +
contrib/buildsystems/CMakeLists.txt | 10 +
environment.c | 1 -
fsmonitor--daemon.h | 166 +++
fsmonitor-ipc.c | 171 +++
fsmonitor-ipc.h | 48 +
fsmonitor-settings.c | 114 ++
fsmonitor-settings.h | 21 +
fsmonitor.c | 216 +++-
fsmonitor.h | 15 +-
git.c | 1 +
help.c | 4 +
repo-settings.c | 1 +
repository.h | 3 +
t/README | 4 +-
t/helper/test-chmtime.c | 15 +
t/helper/test-fsmonitor-client.c | 116 ++
t/helper/test-tool.c | 1 +
t/helper/test-tool.h | 1 +
t/perf/p7519-fsmonitor.sh | 68 +-
t/perf/perf-lib.sh | 2 +-
t/t7527-builtin-fsmonitor.sh | 620 ++++++++++
t/test-lib.sh | 7 +
38 files changed, 4337 insertions(+), 106 deletions(-)
create mode 100644 Documentation/git-fsmonitor--daemon.txt
create mode 100644 builtin/fsmonitor--daemon.c
create mode 100644 compat/fsmonitor/fsm-darwin-gcc.h
create mode 100644 compat/fsmonitor/fsm-listen-darwin.c
create mode 100644 compat/fsmonitor/fsm-listen-win32.c
create mode 100644 compat/fsmonitor/fsm-listen.h
create mode 100644 fsmonitor--daemon.h
create mode 100644 fsmonitor-ipc.c
create mode 100644 fsmonitor-ipc.h
create mode 100644 fsmonitor-settings.c
create mode 100644 fsmonitor-settings.h
create mode 100644 t/helper/test-fsmonitor-client.c
create mode 100755 t/t7527-builtin-fsmonitor.sh
base-commit: 715d08a9e51251ad8290b181b6ac3b9e1f9719d7
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1041%2Fjeffhostetler%2Fbuiltin-fsmonitor-part2-v8
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1041/jeffhostetler/builtin-fsmonitor-part2-v8
Pull-Request: https://github.com/gitgitgadget/git/pull/1041
Range-diff vs v7:
1: e98373f997f = 1: e98373f997f fsmonitor: enhance existing comments, clarify trivial response handling
2: ab68b944173 = 2: ab68b944173 fsmonitor-ipc: create client routines for git-fsmonitor--daemon
3: e04c7301f24 = 3: e04c7301f24 fsmonitor: config settings are repository-specific
4: ea02ba25d8f = 4: ea02ba25d8f fsmonitor: use IPC to query the builtin FSMonitor daemon
5: 6ab7db9cb76 = 5: 6ab7db9cb76 fsmonitor: document builtin fsmonitor
6: 0ce8ae3f2cf = 6: 0ce8ae3f2cf fsmonitor--daemon: add a built-in fsmonitor daemon
7: 4624ce2fa47 = 7: 4624ce2fa47 fsmonitor--daemon: implement 'stop' and 'status' commands
8: a29fe7266a4 = 8: a29fe7266a4 compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
9: 2f8a42fdb93 = 9: 2f8a42fdb93 compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
10: f07800690ee = 10: f07800690ee fsmonitor--daemon: implement 'run' command
11: a6a39a3306d = 11: a6a39a3306d fsmonitor--daemon: implement 'start' command
12: d62e338d008 = 12: d62e338d008 fsmonitor--daemon: add pathname classification
13: 53e06b4ae5d = 13: 53e06b4ae5d fsmonitor--daemon: define token-ids
14: 39f43fabe02 = 14: 39f43fabe02 fsmonitor--daemon: create token-based changed path cache
15: 239558e34ff = 15: 239558e34ff compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
16: 14b775e9d8b = 16: 14b775e9d8b compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
17: 55bd7aee06c = 17: 55bd7aee06c compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
18: 1f4b5209bf6 ! 18: c43009124fb fsmonitor--daemon: implement handle_client callback
@@ builtin/fsmonitor--daemon.c: void fsmonitor_force_resync(struct fsmonitor_daemon
+ trace2_data_intmax("fsmonitor", the_repository,
+ "response/trivial", 1);
+
-+ strbuf_release(&response_token);
-+ strbuf_release(&requested_token_id);
-+ return 0;
++ goto cleanup;
+ }
+
+ /*
@@ builtin/fsmonitor--daemon.c: void fsmonitor_force_resync(struct fsmonitor_daemon
+ trace2_data_intmax("fsmonitor", the_repository, "response/count/files", count);
+ trace2_data_intmax("fsmonitor", the_repository, "response/count/duplicates", duplicates);
+
++cleanup:
+ strbuf_release(&response_token);
+ strbuf_release(&requested_token_id);
+ strbuf_release(&payload);
19: 8cf62c9fc6f = 19: ed338777b56 help: include fsmonitor--daemon feature flag in version info
20: 1bd74a81593 = 20: c99bac29d42 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
21: 4a920d0b54a ! 21: c8709da9457 t7527: create test for fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh (new)
+ rm -rf $1
+}
+
++is_value () {
++ test -n "$1" && test "${1::1}" != "-"
++}
++
+start_daemon () {
+ r= &&
+ tf= &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+ case "$1" in
+ -C)
+ shift;
-+ test "$#" -ne 0 || BUG "error: -C requires arg"
++ is_value $1 || BUG "error: -C requires value"
+ r="-C $1"
+ shift
+ ;;
-+ -tf)
++ --tf)
+ shift;
-+ test "$#" -ne 0 || BUG "error: -tf requires arg"
++ is_value $1 || BUG "error: --tf requires value"
+ tf="$1"
+ shift
+ ;;
-+ -t2)
++ --t2)
+ shift;
-+ test "$#" -ne 0 || BUG "error: -t2 requires arg"
++ is_value $1 || BUG "error: --t2 requires value"
+ t2="$1"
+ shift
+ ;;
-+ -tk)
++ --tk)
+ shift;
-+ test "$#" -ne 0 || BUG "error: -tk requires arg"
++ is_value $1 || BUG "error: --tk requires value"
+ tk="$1"
+ shift
+ ;;
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'edit some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ edit_files &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'create some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ create_files &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'delete some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ delete_files &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'rename some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ rename_files &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'rename directory' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ mv dirtorename dirrenamed &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'file changes to directory' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ file_to_directory &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'directory changes to a file' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ start_daemon -tf "$PWD/.git/trace" &&
++ start_daemon --tf "$PWD/.git/trace" &&
+
+ directory_to_file &&
+
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_flush &&
+
-+ start_daemon -C test_flush -tf "$PWD/.git/trace_daemon" -tk true &&
++ start_daemon -C test_flush --tf "$PWD/.git/trace_daemon" --tk true &&
+
+ # The daemon should have an initial token with no events in _0 and
+ # then a few (probably platform-specific number of) events in _1.
@@ t/t7527-builtin-fsmonitor.sh (new)
+ git -C wt-base worktree add ../wt-secondary &&
+
+ start_daemon -C wt-secondary \
-+ -tf "$PWD/trace_wt_secondary" \
-+ -t2 "$PWD/trace2_wt_secondary" &&
++ --tf "$PWD/trace_wt_secondary" \
++ --t2 "$PWD/trace2_wt_secondary" &&
+
+ git -C wt-secondary fsmonitor--daemon stop &&
+ test_must_fail git -C wt-secondary fsmonitor--daemon status
22: c925a9a7459 = 22: cc39ecf10ae t/perf: avoid copying builtin fsmonitor files into test repo
23: 5b3381c223e = 23: 2bb3eb84767 t/helper/test-chmtime: skip directories on Windows
-: ----------- > 24: bab9a9b0802 t/perf/p7519: fix coding style
24: 803a540cc00 ! 25: 2dd06ad2f71 t/perf/p7519: speed up test on Windows
@@ Commit message
Signed-off-by: Junio C Hamano <gitster@pobox.com>
## t/perf/p7519-fsmonitor.sh ##
-@@ t/perf/p7519-fsmonitor.sh: then
- fi
- fi
-
--trace_start() {
-+trace_start () {
- if test -n "$GIT_PERF_7519_TRACE"
- then
- name="$1"
-@@ t/perf/p7519-fsmonitor.sh: trace_start() {
- fi
- }
-
--trace_stop() {
-+trace_stop () {
- if test -n "$GIT_PERF_7519_TRACE"
- then
- unset GIT_TRACE2_PERF
+@@ t/perf/p7519-fsmonitor.sh: trace_stop () {
fi
}
+touch_files () {
-+ n=$1
-+ d="$n"_files
++ n=$1 &&
++ d="$n"_files &&
+
-+ (cd $d ; test_seq 1 $n | xargs touch )
++ (cd $d && test_seq 1 $n | xargs touch )
+}
+
test_expect_success "one time repo setup" '
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
git add 1_file 10_files 100_files 1000_files 10000_files &&
git commit -qm "Add files" &&
-@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
- fi
- '
-
--setup_for_fsmonitor() {
-+setup_for_fsmonitor () {
- # set INTEGRATION_SCRIPT depending on the environment
- if test -n "$INTEGRATION_PATH"
- then
-@@ t/perf/p7519-fsmonitor.sh: test_perf_w_drop_caches () {
- test_perf "$@"
- }
-
--test_fsmonitor_suite() {
-+test_fsmonitor_suite () {
- if test -n "$INTEGRATION_SCRIPT"; then
- DESC="fsmonitor=$(basename $INTEGRATION_SCRIPT)"
- else
-@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite() {
+@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite () {
# Update the mtimes on upto 100k files to make status think
# that they are dirty. For simplicity, omit any files with
25: d5ca2df31c8 = 26: 6eaa5765ae1 t/perf/p7519: add fsmonitor--daemon test cases
26: 42631259e89 = 27: 30957f3930e fsmonitor--daemon: periodically truncate list of modified files
27: f256c3cbe8b = 28: c8ca2a17277 fsmonitor--daemon: use a cookie file to sync with file system
28: 08af8296f96 = 29: 4caf1d89b84 fsmonitor: force update index after large responses
29: e6cf84dc8eb ! 30: f87a1eba693 t7527: test status with untracked-cache and fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
+ fsm=$2 &&
+ fn=$3 &&
+
++ if test $uc = true && test $fsm = false
++ then
++ # The untracked-cache is buggy when FSMonitor is
++ # DISABLED, so skip the tests for this matrix
++ # combination.
++ #
++ # We've observed random, occasional test failures on
++ # Windows and MacOS when the UC is turned on and FSM
++ # is turned off. These are rare, but they do happen
++ # indicating that it is probably a race condition within
++ # the untracked cache itself.
++ #
++ # It usually happens when a test does F/D trickery and
++ # then the NEXT test fails because of extra status
++ # output from stale UC data from the previous test.
++ #
++ # Since FSMonitor is not involved in the error, skip
++ # the tests for this matrix combination.
++ #
++ return 0
++ fi &&
++
+ test_expect_success "Matrix[uc:$uc][fsm:$fsm] $fn" '
+ matrix_clean_up_repo &&
+ $fn &&
--
gitgitgadget
^ permalink raw reply [relevance 2%]
* [PATCH v7 00/29] Builtin FSMonitor Part 2
@ 2022-03-22 17:59 1% ` Jeff Hostetler via GitGitGadget
2022-03-24 16:49 2% ` [PATCH v8 00/30] " Jeff Hostetler via GitGitGadget
0 siblings, 1 reply; 162+ results
From: Jeff Hostetler via GitGitGadget @ 2022-03-22 17:59 UTC (permalink / raw)
To: git
Cc: Bagas Sanjaya, Ævar Arnfjörð Bjarmason,
Jeff Hostetler, Eric Sunshine, Johannes Schindelin, Tao Klerks,
Jeff Hostetler
Here is V7 of Part 2 of my builtin FSmonitor series. This version squashes
in the fixups from Part 2.5 and any other last minute suggestions. I'll send
an updated version of Part 3 that builds upon this version.
Here is a range-diff from V6 to V7 relative to 715d08a9e5 (The eighth batch,
2022-02-25). Changes since V6 can be summarized as: (1) Adding/removing
"_()" on die() and error() messages. (2) Splitting GCC-specific declarations
for MacOS FSEvents into a separate header file. (3) Enhancing the
"start_daemon()" function in t7527 to take keyword args and reduce some code
duplication in unit tests. (4) Fixing "&&" chains in the tests. (5) Other
minor style cleanups.
$ git range-diff eight..builtin-fsmonitor-part2-v6 eight..builtin-fsmonitor-part2
1: 10a34082fc = 1: e98373f997 fsmonitor: enhance existing comments, clarify trivial response handling
2: e1c946af2c ! 2: ab68b94417 fsmonitor-ipc: create client routines for git-fsmonitor--daemon
@@ fsmonitor-ipc.c (new)
+ state = ipc_client_try_connect(fsmonitor_ipc__get_path(), &options,
+ &connection);
+ if (state != IPC_STATE__LISTENING) {
-+ die("fsmonitor--daemon is not running");
++ die(_("fsmonitor--daemon is not running"));
+ return -1;
+ }
+
@@ fsmonitor-ipc.c (new)
+ ipc_client_close_connection(connection);
+
+ if (ret == -1) {
-+ die("could not send '%s' command to fsmonitor--daemon", c);
++ die(_("could not send '%s' command to fsmonitor--daemon"), c);
+ return -1;
+ }
+
3: ae622a517c ! 3: e04c7301f2 fsmonitor: config settings are repository-specific
@@ fsmonitor-settings.c (new)
+ return;
+
+ CALLOC_ARRAY(s, 1);
++ s->mode = FSMONITOR_MODE_DISABLED;
+
+ r->settings.fsmonitor = s;
+
-+ fsm_settings__set_disabled(r);
-+
+ /*
+ * Overload the existing "core.fsmonitor" config setting (which
+ * has historically been either unset or a hook pathname) to
4: 55974867da = 4: ea02ba25d8 fsmonitor: use IPC to query the builtin FSMonitor daemon
5: ce42d5bbaf = 5: 6ab7db9cb7 fsmonitor: document builtin fsmonitor
6: 9ce938c69b = 6: 0ce8ae3f2c fsmonitor--daemon: add a built-in fsmonitor daemon
7: 3bd7e6a051 = 7: 4624ce2fa4 fsmonitor--daemon: implement 'stop' and 'status' commands
8: 92d3e54da7 = 8: a29fe7266a compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
9: f121922127 = 9: 2f8a42fdb9 compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
10: a3f94627cf ! 10: f07800690e fsmonitor--daemon: implement 'run' command
@@ builtin/fsmonitor--daemon.c: static int do_as_client__status(void)
+ * common error case.
+ */
+ if (fsmonitor_ipc__get_state() == IPC_STATE__LISTENING)
-+ die("fsmonitor--daemon is already running '%s'",
++ die(_("fsmonitor--daemon is already running '%s'"),
+ the_repository->worktree);
+
+ if (fsmonitor__announce_startup) {
11: 8de40b0fe8 ! 11: a6a39a3306 fsmonitor--daemon: implement 'start' command
@@ builtin/fsmonitor--daemon.c: static int try_to_run_foreground_daemon(void)
+ * immediately exited).
+ */
+ if (fsmonitor_ipc__get_state() == IPC_STATE__LISTENING)
-+ die("fsmonitor--daemon is already running '%s'",
++ die(_("fsmonitor--daemon is already running '%s'"),
+ the_repository->worktree);
+
+ if (fsmonitor__announce_startup) {
@@ builtin/fsmonitor--daemon.c: static int try_to_run_foreground_daemon(void)
+ default:
+ case SBGR_ERROR:
+ case SBGR_CB_ERROR:
-+ return error("daemon failed to start");
++ return error(_("daemon failed to start"));
+
+ case SBGR_TIMEOUT:
-+ return error("daemon not online yet");
++ return error(_("daemon not online yet"));
+
+ case SBGR_DIED:
-+ return error("daemon terminated");
++ return error(_("daemon terminated"));
+ }
+}
+
12: e5d419b1ea = 12: d62e338d00 fsmonitor--daemon: add pathname classification
13: c2f3668a86 = 13: 53e06b4ae5 fsmonitor--daemon: define token-ids
14: bd492d13fb = 14: 39f43fabe0 fsmonitor--daemon: create token-based changed path cache
15: 6b5b3d0822 ! 15: 239558e34f compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
@@ compat/fsmonitor/fsm-listen-win32.c
+ if (len > 0)
+ goto normalize;
+ if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-+ error("[GLE %ld] could not convert path to UTF-8: '%.*ls'",
++ error(_("[GLE %ld] could not convert path to UTF-8: '%.*ls'"),
+ GetLastError(),
+ (int)(info->FileNameLength / sizeof(WCHAR)),
+ info->FileName);
@@ compat/fsmonitor/fsm-listen-win32.c
+ if (watch->is_active)
+ return 0;
+
-+ error("ReadDirectoryChangedW failed on '%s' [GLE %ld]",
++ error(_("ReadDirectoryChangedW failed on '%s' [GLE %ld]"),
+ watch->path.buf, GetLastError());
+ return -1;
+}
@@ compat/fsmonitor/fsm-listen-win32.c
+ * sure it is worth it.
+ */
+
-+ error("GetOverlappedResult failed on '%s' [GLE %ld]",
++ error(_("GetOverlappedResult failed on '%s' [GLE %ld]"),
+ watch->path.buf, gle);
+ return -1;
+}
16: cdef9730b3 ! 16: 14b775e9d8 compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
@@ Commit message
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
- ## compat/fsmonitor/fsm-listen-darwin.c ##
+ ## compat/fsmonitor/fsm-darwin-gcc.h (new) ##
@@
++#ifndef FSM_DARWIN_GCC_H
++#define FSM_DARWIN_GCC_H
++
+#ifndef __clang__
+/*
+ * It is possible to #include CoreFoundation/CoreFoundation.h when compiling
@@ compat/fsmonitor/fsm-listen-darwin.c
+void FSEventStreamStop(FSEventStreamRef stream);
+void FSEventStreamInvalidate(FSEventStreamRef stream);
+void FSEventStreamRelease(FSEventStreamRef stream);
++
++#endif /* !clang */
++#endif /* FSM_DARWIN_GCC_H */
+
+ ## compat/fsmonitor/fsm-listen-darwin.c ##
+@@
++#ifndef __clang__
++#include "fsm-darwin-gcc.h"
+#else
-+/*
-+ * Let Apple's headers declare `isalnum()` first, before
-+ * Git's headers override it via a constant
-+ */
-+#include <string.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
++
++#ifndef AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER
++/*
++ * This enum value was added in 10.13 to:
++ *
++ * /Applications/Xcode.app/Contents/Developer/Platforms/ \
++ * MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/ \
++ * Library/Frameworks/CoreServices.framework/Frameworks/ \
++ * FSEvents.framework/Versions/Current/Headers/FSEvents.h
++ *
++ * If we're compiling against an older SDK, this symbol won't be
++ * present. Silently define it here so that we don't have to ifdef
++ * the logging or masking below. This should be harmless since older
++ * versions of macOS won't ever emit this FS event anyway.
++ */
++#define kFSEventStreamEventFlagItemCloned 0x00400000
++#endif
+#endif
+
#include "cache.h"
17: aabfebd3a4 ! 17: 55bd7aee06 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
@@ Commit message
Signed-off-by: Junio C Hamano <gitster@pobox.com>
## compat/fsmonitor/fsm-listen-darwin.c ##
-@@ compat/fsmonitor/fsm-listen-darwin.c: void FSEventStreamRelease(FSEventStreamRef stream);
+@@
#include "cache.h"
#include "fsmonitor.h"
#include "fsm-listen.h"
@@ compat/fsmonitor/fsm-listen-darwin.c: void FSEventStreamRelease(FSEventStreamRef
+ return 0;
+
+failed:
-+ error("Unable to create FSEventStream.");
++ error(_("Unable to create FSEventStream."));
+
+ FREE_AND_NULL(state->backend_data);
return -1;
@@ compat/fsmonitor/fsm-listen-darwin.c: void FSEventStreamRelease(FSEventStreamRef
+ data->stream_scheduled = 1;
+
+ if (!FSEventStreamStart(data->stream)) {
-+ error("Failed to start the FSEventStream");
++ error(_("Failed to start the FSEventStream"));
+ goto force_error_stop_without_loop;
+ }
+ data->stream_started = 1;
18: 0896e72e2b = 18: 1f4b5209bf fsmonitor--daemon: implement handle_client callback
19: bc240a9e66 ! 19: 8cf62c9fc6 help: include fsmonitor--daemon feature flag in version info
@@ t/test-lib.sh: test_lazy_prereq SHA1 '
+# Does this platform support `git fsmonitor--daemon`
+#
+test_lazy_prereq FSMONITOR_DAEMON '
-+ git version --build-options | grep "feature:" | grep "fsmonitor--daemon"
++ git version --build-options >output &&
++ grep "feature: fsmonitor--daemon" output
+'
20: 2b563c240e ! 20: 1bd74a8159 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
@@ t/helper/test-fsmonitor-client.c (new)
+
+ ret = fsmonitor_ipc__send_query(token, &answer);
+ if (ret < 0)
-+ die(_("could not query fsmonitor--daemon"));
++ die("could not query fsmonitor--daemon");
+
+ write_in_full(1, answer.buf, answer.len);
+ strbuf_release(&answer);
@@ t/helper/test-fsmonitor-client.c (new)
+ const char *token = NULL;
+
+ const char * const fsmonitor_client_usage[] = {
-+ N_("test-helper fsmonitor-client query [<token>]"),
-+ N_("test-helper fsmonitor-client flush"),
++ "test-tool fsmonitor-client query [<token>]",
++ "test-tool fsmonitor-client flush",
+ NULL,
+ };
+
+ struct option options[] = {
-+ OPT_STRING(0, "token", &token, N_("token"),
-+ N_("command token to send to the server")),
++ OPT_STRING(0, "token", &token, "token",
++ "command token to send to the server"),
+ OPT_END()
+ };
+
-+ if (argc < 2)
-+ usage_with_options(fsmonitor_client_usage, options);
++ argc = parse_options(argc, argv, NULL, options, fsmonitor_client_usage, 0);
+
-+ if (argc == 2 && !strcmp(argv[1], "-h"))
++ if (argc != 1)
+ usage_with_options(fsmonitor_client_usage, options);
+
-+ subcmd = argv[1];
-+ argv--;
-+ argc++;
-+
-+ argc = parse_options(argc, argv, NULL, options, fsmonitor_client_usage, 0);
++ subcmd = argv[0];
+
+ setup_git_directory();
+
21: db8809da08 ! 21: 4a920d0b54 t7527: create test for fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh (new)
+fi
+
+stop_daemon_delete_repo () {
-+ r=$1
-+ git -C $r fsmonitor--daemon stop >/dev/null 2>/dev/null
++ r=$1 &&
++ test_might_fail git -C $r fsmonitor--daemon stop &&
+ rm -rf $1
-+ return 0
+}
+
+start_daemon () {
-+ case "$#" in
-+ 1) r="-C $1";;
-+ *) r="";
-+ esac
++ r= &&
++ tf= &&
++ t2= &&
++ tk= &&
++
++ while test "$#" -ne 0
++ do
++ case "$1" in
++ -C)
++ shift;
++ test "$#" -ne 0 || BUG "error: -C requires arg"
++ r="-C $1"
++ shift
++ ;;
++ -tf)
++ shift;
++ test "$#" -ne 0 || BUG "error: -tf requires arg"
++ tf="$1"
++ shift
++ ;;
++ -t2)
++ shift;
++ test "$#" -ne 0 || BUG "error: -t2 requires arg"
++ t2="$1"
++ shift
++ ;;
++ -tk)
++ shift;
++ test "$#" -ne 0 || BUG "error: -tk requires arg"
++ tk="$1"
++ shift
++ ;;
++ *)
++ BUG "error: unknown option: '$1'"
++ ;;
++ esac
++ done &&
+
-+ git $r fsmonitor--daemon start || return $?
-+ git $r fsmonitor--daemon status || return $?
-+
-+ return 0
++ (
++ if test -n "$tf"
++ then
++ GIT_TRACE_FSMONITOR="$tf"
++ export GIT_TRACE_FSMONITOR
++ fi &&
++
++ if test -n "$t2"
++ then
++ GIT_TRACE2_PERF="$t2"
++ export GIT_TRACE2_PERF
++ fi &&
++
++ if test -n "$tk"
++ then
++ GIT_TEST_FSMONITOR_TOKEN="$tk"
++ export GIT_TEST_FSMONITOR_TOKEN
++ fi &&
++
++ git $r fsmonitor--daemon start &&
++ git $r fsmonitor--daemon status
++ )
+}
+
+# Is a Trace2 data event present with the given catetory and key?
+# We do not care what the value is.
+#
+have_t2_data_event () {
-+ c=$1
-+ k=$2
++ c=$1 &&
++ k=$2 &&
+
+ grep -e '"event":"data".*"category":"'"$c"'".*"key":"'"$k"'"'
+}
@@ t/t7527-builtin-fsmonitor.sh (new)
+ test_when_finished "stop_daemon_delete_repo test_explicit" &&
+
+ git init test_explicit &&
-+ start_daemon test_explicit &&
++ start_daemon -C test_explicit &&
+
+ git -C test_explicit fsmonitor--daemon stop &&
+ test_must_fail git -C test_explicit fsmonitor--daemon status
@@ t/t7527-builtin-fsmonitor.sh (new)
+ # but this test case is only concerned with whether the daemon was
+ # implicitly started.)
+
-+ GIT_TRACE2_EVENT="$(pwd)/.git/trace" \
++ GIT_TRACE2_EVENT="$PWD/.git/trace" \
+ test-tool -C test_implicit fsmonitor-client query --token 0 >actual &&
+ nul_to_q <actual >actual.filtered &&
+ grep "builtin:" actual.filtered &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_implicit_1 &&
+
-+ start_daemon test_implicit_1 &&
++ start_daemon -C test_implicit_1 &&
+
+ # deleting the .git directory will implicitly stop the daemon.
+ rm -rf test_implicit_1/.git &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_implicit_2 &&
+
-+ start_daemon test_implicit_2 &&
++ start_daemon -C test_implicit_2 &&
+
+ # renaming the .git directory will implicitly stop the daemon.
+ mv test_implicit_2/.git test_implicit_2/.xxx &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_multiple &&
+
-+ start_daemon test_multiple &&
++ start_daemon -C test_multiple &&
+
+ test_must_fail git -C test_multiple fsmonitor--daemon start 2>actual &&
+ grep "fsmonitor--daemon is already running" actual &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+# This is here in case something else fails first.
+#
+redundant_stop_daemon () {
-+ git fsmonitor--daemon stop
-+ return 0
++ test_might_fail git fsmonitor--daemon stop
+}
+
+test_expect_success 'update-index implicitly starts daemon' '
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ test_must_fail git fsmonitor--daemon status &&
+
-+ GIT_TRACE2_EVENT="$(pwd)/.git/trace_implicit_1" \
++ GIT_TRACE2_EVENT="$PWD/.git/trace_implicit_1" \
+ git update-index --fsmonitor &&
+
+ git fsmonitor--daemon status &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ test_must_fail git fsmonitor--daemon status &&
+
-+ GIT_TRACE2_EVENT="$(pwd)/.git/trace_implicit_2" \
++ GIT_TRACE2_EVENT="$PWD/.git/trace_implicit_2" \
+ git status >actual &&
+
+ git fsmonitor--daemon status &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+'
+
+edit_files () {
-+ echo 1 >modified
-+ echo 2 >dir1/modified
-+ echo 3 >dir2/modified
++ echo 1 >modified &&
++ echo 2 >dir1/modified &&
++ echo 3 >dir2/modified &&
+ >dir1/untracked
+}
+
+delete_files () {
-+ rm -f delete
-+ rm -f dir1/delete
++ rm -f delete &&
++ rm -f dir1/delete &&
+ rm -f dir2/delete
+}
+
+create_files () {
-+ echo 1 >new
-+ echo 2 >dir1/new
++ echo 1 >new &&
++ echo 2 >dir1/new &&
+ echo 3 >dir2/new
+}
+
+rename_files () {
-+ mv rename renamed
-+ mv dir1/rename dir1/renamed
++ mv rename renamed &&
++ mv dir1/rename dir1/renamed &&
+ mv dir2/rename dir2/renamed
+}
+
+file_to_directory () {
-+ rm -f delete
-+ mkdir delete
++ rm -f delete &&
++ mkdir delete &&
+ echo 1 >delete/new
+}
+
+directory_to_file () {
-+ rm -rf dir1
++ rm -rf dir1 &&
+ echo 1 >dir1
+}
+
-+verify_status () {
-+ git status >actual &&
-+ GIT_INDEX_FILE=.git/fresh-index git read-tree master &&
-+ GIT_INDEX_FILE=.git/fresh-index git -c core.fsmonitor=false status >expect &&
-+ test_cmp expect actual &&
-+ echo HELLO AFTER &&
-+ cat .git/trace &&
-+ echo HELLO AFTER
-+}
-+
+# The next few test cases confirm that our fsmonitor daemon sees each type
+# of OS filesystem notification that we care about. At this layer we just
+# ensure we are getting the OS notifications and do not try to confirm what
@@ t/t7527-builtin-fsmonitor.sh (new)
+# daemon) because these commands might implicitly restart the daemon.
+
+clean_up_repo_and_stop_daemon () {
-+ git reset --hard HEAD
-+ git clean -fd
-+ git fsmonitor--daemon stop
++ git reset --hard HEAD &&
++ git clean -fd &&
++ test_might_fail git fsmonitor--daemon stop &&
+ rm -f .git/trace
+}
+
+test_expect_success 'edit some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ edit_files &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1/modified$" .git/trace &&
+ grep "^event: dir2/modified$" .git/trace &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'create some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ create_files &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1/new$" .git/trace &&
+ grep "^event: dir2/new$" .git/trace &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'delete some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ delete_files &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1/delete$" .git/trace &&
+ grep "^event: dir2/delete$" .git/trace &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'rename some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ rename_files &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1/rename$" .git/trace &&
+ grep "^event: dir2/rename$" .git/trace &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'rename directory' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ mv dirtorename dirrenamed &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dirtorename/*$" .git/trace &&
+ grep "^event: dirrenamed/*$" .git/trace
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'file changes to directory' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ file_to_directory &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: delete$" .git/trace &&
+ grep "^event: delete/new$" .git/trace
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'directory changes to a file' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ directory_to_file &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1$" .git/trace
+'
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_flush &&
+
-+ (
-+ GIT_TEST_FSMONITOR_TOKEN=true &&
-+ export GIT_TEST_FSMONITOR_TOKEN &&
-+
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace_daemon" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon test_flush
-+ ) &&
++ start_daemon -C test_flush -tf "$PWD/.git/trace_daemon" -tk true &&
+
+ # The daemon should have an initial token with no events in _0 and
+ # then a few (probably platform-specific number of) events in _1.
@@ t/t7527-builtin-fsmonitor.sh (new)
+ test-tool -C test_flush fsmonitor-client query --token "builtin:test_00000001:0" >actual_0 &&
+ nul_to_q <actual_0 >actual_q0 &&
+
-+ touch test_flush/file_1 &&
-+ touch test_flush/file_2 &&
++ >test_flush/file_1 &&
++ >test_flush/file_2 &&
+
+ test-tool -C test_flush fsmonitor-client query --token "builtin:test_00000001:0" >actual_1 &&
+ nul_to_q <actual_1 >actual_q1 &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ grep "^builtin:test_00000002:0Q$" actual_q2 &&
+
-+ touch test_flush/file_3 &&
++ >test_flush/file_3 &&
+
+ test-tool -C test_flush fsmonitor-client query --token "builtin:test_00000002:0" >actual_3 &&
+ nul_to_q <actual_3 >actual_q3 &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'worktree with .git file' '
+ git -C wt-base worktree add ../wt-secondary &&
+
-+ (
-+ GIT_TRACE2_PERF="$(pwd)/trace2_wt_secondary" &&
-+ export GIT_TRACE2_PERF &&
-+
-+ GIT_TRACE_FSMONITOR="$(pwd)/trace_wt_secondary" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon wt-secondary
-+ ) &&
++ start_daemon -C wt-secondary \
++ -tf "$PWD/trace_wt_secondary" \
++ -t2 "$PWD/trace2_wt_secondary" &&
+
+ git -C wt-secondary fsmonitor--daemon stop &&
+ test_must_fail git -C wt-secondary fsmonitor--daemon status
22: 15bd5aaff3 = 22: c925a9a745 t/perf: avoid copying builtin fsmonitor files into test repo
23: 4cb97918d2 = 23: 5b3381c223 t/helper/test-chmtime: skip directories on Windows
24: a70748b464 ! 24: 803a540cc0 t/perf/p7519: speed up test on Windows
@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite() {
head -100000 | \
grep -v \" | \
- sed '\''s/\(.\)/\\\1/g'\'' | \
-+ egrep -v " ." | \
++ grep -v " ." | \
xargs test-tool chmtime -300 &&
git status
'
25: b0c9c9c7a4 ! 25: d5ca2df31c t/perf/p7519: add fsmonitor--daemon test cases
@@ Commit message
Signed-off-by: Junio C Hamano <gitster@pobox.com>
## t/perf/p7519-fsmonitor.sh ##
+@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
+ fi
+ '
+
+-setup_for_fsmonitor () {
++setup_for_fsmonitor_hook () {
+ # set INTEGRATION_SCRIPT depending on the environment
+ if test -n "$INTEGRATION_PATH"
+ then
@@ t/perf/p7519-fsmonitor.sh: test_perf_w_drop_caches () {
}
@@ t/perf/p7519-fsmonitor.sh: test_perf_w_drop_caches () {
+ if test -n "$USE_FSMONITOR_DAEMON"
+ then
+ DESC="builtin fsmonitor--daemon"
-+ elif test -n "$INTEGRATION_SCRIPT"; then
++ elif test -n "$INTEGRATION_SCRIPT"
++ then
DESC="fsmonitor=$(basename $INTEGRATION_SCRIPT)"
else
DESC="fsmonitor=disabled"
+@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite () {
+ trace_start fsmonitor-watchman
+ if test -n "$GIT_PERF_7519_FSMONITOR"; then
+ for INTEGRATION_PATH in $GIT_PERF_7519_FSMONITOR; do
+- test_expect_success "setup for fsmonitor $INTEGRATION_PATH" 'setup_for_fsmonitor'
++ test_expect_success "setup for fsmonitor $INTEGRATION_PATH" 'setup_for_fsmonitor_hook'
+ test_fsmonitor_suite
+ done
+ else
+- test_expect_success "setup for fsmonitor" 'setup_for_fsmonitor'
++ test_expect_success "setup for fsmonitor hook" 'setup_for_fsmonitor_hook'
+ test_fsmonitor_suite
+ fi
+
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "setup without fsmonitor" '
test_fsmonitor_suite
trace_stop
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "setup without fsmonitor" '
+then
+ USE_FSMONITOR_DAEMON=t
+
-+ trace_start fsmonitor--daemon--server
-+ git fsmonitor--daemon start
++ test_expect_success "setup for builtin fsmonitor" '
++ trace_start fsmonitor--daemon--server &&
++ git fsmonitor--daemon start &&
+
-+ trace_start fsmonitor--daemon--client
++ trace_start fsmonitor--daemon--client &&
+
-+ git config core.fsmonitor true
-+ git update-index --fsmonitor
++ git config core.fsmonitor true &&
++ git update-index --fsmonitor
++ '
+
+ test_fsmonitor_suite
+
26: 64a5b74167 = 26: 42631259e8 fsmonitor--daemon: periodically truncate list of modified files
27: 5b06eb5d0e ! 27: f256c3cbe8 fsmonitor--daemon: use a cookie file to sync with file system
@@ builtin/fsmonitor--daemon.c: static int do_as_client__status(void)
+enum fsmonitor_cookie_item_result {
+ FCIR_ERROR = -1, /* could not create cookie file ? */
-+ FCIR_INIT = 0,
++ FCIR_INIT,
+ FCIR_SEEN,
+ FCIR_ABORT,
+};
+
+struct fsmonitor_cookie_item {
+ struct hashmap_entry entry;
-+ const char *name;
++ char *name;
+ enum fsmonitor_cookie_item_result result;
+};
+
@@ builtin/fsmonitor--daemon.c: static int do_as_client__status(void)
+ * that the listener thread has seen it.
+ */
+ fd = open(cookie_pathname.buf, O_WRONLY | O_CREAT | O_EXCL, 0600);
-+ if (fd >= 0) {
-+ close(fd);
-+ unlink(cookie_pathname.buf);
-+
-+ /*
-+ * Technically, this is an infinite wait (well, unless another
-+ * thread sends us an abort). I'd like to change this to
-+ * use `pthread_cond_timedwait()` and return an error/timeout
-+ * and let the caller do the trivial response thing, but we
-+ * don't have that routine in our thread-utils.
-+ *
-+ * After extensive beta testing I'm not really worried about
-+ * this. Also note that the above open() and unlink() calls
-+ * will cause at least two FS events on that path, so the odds
-+ * of getting stuck are pretty slim.
-+ */
-+ while (cookie->result == FCIR_INIT)
-+ pthread_cond_wait(&state->cookies_cond,
-+ &state->main_lock);
-+ } else {
++ if (fd < 0) {
+ error_errno(_("could not create fsmonitor cookie '%s'"),
+ cookie->name);
+
+ cookie->result = FCIR_ERROR;
++ goto done;
+ }
+
++ /*
++ * Technically, close() and unlink() can fail, but we don't
++ * care here. We only created the file to trigger a watch
++ * event from the FS to know that when we're up to date.
++ */
++ close(fd);
++ unlink(cookie_pathname.buf);
++
++ /*
++ * Technically, this is an infinite wait (well, unless another
++ * thread sends us an abort). I'd like to change this to
++ * use `pthread_cond_timedwait()` and return an error/timeout
++ * and let the caller do the trivial response thing, but we
++ * don't have that routine in our thread-utils.
++ *
++ * After extensive beta testing I'm not really worried about
++ * this. Also note that the above open() and unlink() calls
++ * will cause at least two FS events on that path, so the odds
++ * of getting stuck are pretty slim.
++ */
++ while (cookie->result == FCIR_INIT)
++ pthread_cond_wait(&state->cookies_cond,
++ &state->main_lock);
++
++done:
+ hashmap_remove(&state->cookies, &cookie->entry, NULL);
+
+ result = cookie->result;
+
-+ free((char*)cookie->name);
++ free(cookie->name);
+ free(cookie);
+ strbuf_release(&cookie_pathname);
+
28: 1fd5439de0 = 28: 08af8296f9 fsmonitor: force update index after large responses
29: 6fc1430285 ! 29: e6cf84dc8e t7527: test status with untracked-cache and fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
+}
+
+matrix_try () {
-+ uc=$1
-+ fsm=$2
-+ fn=$3
++ uc=$1 &&
++ fsm=$2 &&
++ fn=$3 &&
+
+ test_expect_success "Matrix[uc:$uc][fsm:$fsm] $fn" '
+ matrix_clean_up_repo &&
30: b915b95cc2 < -: ---------- update-index: convert fsmonitor warnings to advise
Jeff Hostetler (29):
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: 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
.gitignore | 1 +
Documentation/config/core.txt | 60 +-
Documentation/git-fsmonitor--daemon.txt | 75 ++
Documentation/git-update-index.txt | 8 +-
Makefile | 17 +
builtin.h | 1 +
builtin/fsmonitor--daemon.c | 1480 +++++++++++++++++++++++
builtin/update-index.c | 7 +-
cache.h | 1 -
compat/fsmonitor/fsm-darwin-gcc.h | 92 ++
compat/fsmonitor/fsm-listen-darwin.c | 427 +++++++
compat/fsmonitor/fsm-listen-win32.c | 586 +++++++++
compat/fsmonitor/fsm-listen.h | 49 +
config.c | 14 -
config.h | 1 -
config.mak.uname | 20 +
contrib/buildsystems/CMakeLists.txt | 10 +
environment.c | 1 -
fsmonitor--daemon.h | 166 +++
fsmonitor-ipc.c | 171 +++
fsmonitor-ipc.h | 48 +
fsmonitor-settings.c | 114 ++
fsmonitor-settings.h | 21 +
fsmonitor.c | 216 +++-
fsmonitor.h | 15 +-
git.c | 1 +
help.c | 4 +
repo-settings.c | 1 +
repository.h | 3 +
t/README | 4 +-
t/helper/test-chmtime.c | 15 +
t/helper/test-fsmonitor-client.c | 116 ++
t/helper/test-tool.c | 1 +
t/helper/test-tool.h | 1 +
t/perf/p7519-fsmonitor.sh | 68 +-
t/perf/perf-lib.sh | 2 +-
t/t7527-builtin-fsmonitor.sh | 594 +++++++++
t/test-lib.sh | 7 +
38 files changed, 4312 insertions(+), 106 deletions(-)
create mode 100644 Documentation/git-fsmonitor--daemon.txt
create mode 100644 builtin/fsmonitor--daemon.c
create mode 100644 compat/fsmonitor/fsm-darwin-gcc.h
create mode 100644 compat/fsmonitor/fsm-listen-darwin.c
create mode 100644 compat/fsmonitor/fsm-listen-win32.c
create mode 100644 compat/fsmonitor/fsm-listen.h
create mode 100644 fsmonitor--daemon.h
create mode 100644 fsmonitor-ipc.c
create mode 100644 fsmonitor-ipc.h
create mode 100644 fsmonitor-settings.c
create mode 100644 fsmonitor-settings.h
create mode 100644 t/helper/test-fsmonitor-client.c
create mode 100755 t/t7527-builtin-fsmonitor.sh
base-commit: 715d08a9e51251ad8290b181b6ac3b9e1f9719d7
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1041%2Fjeffhostetler%2Fbuiltin-fsmonitor-part2-v7
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1041/jeffhostetler/builtin-fsmonitor-part2-v7
Pull-Request: https://github.com/gitgitgadget/git/pull/1041
Range-diff vs v6:
1: 10a34082fcc = 1: e98373f997f fsmonitor: enhance existing comments, clarify trivial response handling
2: e1c946af2c5 ! 2: ab68b944173 fsmonitor-ipc: create client routines for git-fsmonitor--daemon
@@ fsmonitor-ipc.c (new)
+ state = ipc_client_try_connect(fsmonitor_ipc__get_path(), &options,
+ &connection);
+ if (state != IPC_STATE__LISTENING) {
-+ die("fsmonitor--daemon is not running");
++ die(_("fsmonitor--daemon is not running"));
+ return -1;
+ }
+
@@ fsmonitor-ipc.c (new)
+ ipc_client_close_connection(connection);
+
+ if (ret == -1) {
-+ die("could not send '%s' command to fsmonitor--daemon", c);
++ die(_("could not send '%s' command to fsmonitor--daemon"), c);
+ return -1;
+ }
+
3: ae622a517cf ! 3: e04c7301f24 fsmonitor: config settings are repository-specific
@@ fsmonitor-settings.c (new)
+ return;
+
+ CALLOC_ARRAY(s, 1);
++ s->mode = FSMONITOR_MODE_DISABLED;
+
+ r->settings.fsmonitor = s;
+
-+ fsm_settings__set_disabled(r);
-+
+ /*
+ * Overload the existing "core.fsmonitor" config setting (which
+ * has historically been either unset or a hook pathname) to
4: 55974867da5 = 4: ea02ba25d8f fsmonitor: use IPC to query the builtin FSMonitor daemon
5: ce42d5bbaf6 = 5: 6ab7db9cb76 fsmonitor: document builtin fsmonitor
6: 9ce938c69b5 = 6: 0ce8ae3f2cf fsmonitor--daemon: add a built-in fsmonitor daemon
7: 3bd7e6a051e = 7: 4624ce2fa47 fsmonitor--daemon: implement 'stop' and 'status' commands
8: 92d3e54da7f = 8: a29fe7266a4 compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
9: f1219221270 = 9: 2f8a42fdb93 compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
10: a3f94627cf6 ! 10: f07800690ee fsmonitor--daemon: implement 'run' command
@@ builtin/fsmonitor--daemon.c: static int do_as_client__status(void)
+ * common error case.
+ */
+ if (fsmonitor_ipc__get_state() == IPC_STATE__LISTENING)
-+ die("fsmonitor--daemon is already running '%s'",
++ die(_("fsmonitor--daemon is already running '%s'"),
+ the_repository->worktree);
+
+ if (fsmonitor__announce_startup) {
11: 8de40b0fe8b ! 11: a6a39a3306d fsmonitor--daemon: implement 'start' command
@@ builtin/fsmonitor--daemon.c: static int try_to_run_foreground_daemon(void)
+ * immediately exited).
+ */
+ if (fsmonitor_ipc__get_state() == IPC_STATE__LISTENING)
-+ die("fsmonitor--daemon is already running '%s'",
++ die(_("fsmonitor--daemon is already running '%s'"),
+ the_repository->worktree);
+
+ if (fsmonitor__announce_startup) {
@@ builtin/fsmonitor--daemon.c: static int try_to_run_foreground_daemon(void)
+ default:
+ case SBGR_ERROR:
+ case SBGR_CB_ERROR:
-+ return error("daemon failed to start");
++ return error(_("daemon failed to start"));
+
+ case SBGR_TIMEOUT:
-+ return error("daemon not online yet");
++ return error(_("daemon not online yet"));
+
+ case SBGR_DIED:
-+ return error("daemon terminated");
++ return error(_("daemon terminated"));
+ }
+}
+
12: e5d419b1ea0 = 12: d62e338d008 fsmonitor--daemon: add pathname classification
13: c2f3668a866 = 13: 53e06b4ae5d fsmonitor--daemon: define token-ids
14: bd492d13fb1 = 14: 39f43fabe02 fsmonitor--daemon: create token-based changed path cache
15: 6b5b3d08227 ! 15: 239558e34ff compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
@@ compat/fsmonitor/fsm-listen-win32.c
+ if (len > 0)
+ goto normalize;
+ if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-+ error("[GLE %ld] could not convert path to UTF-8: '%.*ls'",
++ error(_("[GLE %ld] could not convert path to UTF-8: '%.*ls'"),
+ GetLastError(),
+ (int)(info->FileNameLength / sizeof(WCHAR)),
+ info->FileName);
@@ compat/fsmonitor/fsm-listen-win32.c
+ if (watch->is_active)
+ return 0;
+
-+ error("ReadDirectoryChangedW failed on '%s' [GLE %ld]",
++ error(_("ReadDirectoryChangedW failed on '%s' [GLE %ld]"),
+ watch->path.buf, GetLastError());
+ return -1;
+}
@@ compat/fsmonitor/fsm-listen-win32.c
+ * sure it is worth it.
+ */
+
-+ error("GetOverlappedResult failed on '%s' [GLE %ld]",
++ error(_("GetOverlappedResult failed on '%s' [GLE %ld]"),
+ watch->path.buf, gle);
+ return -1;
+}
16: cdef9730b3f ! 16: 14b775e9d8b compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
@@ Commit message
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
- ## compat/fsmonitor/fsm-listen-darwin.c ##
+ ## compat/fsmonitor/fsm-darwin-gcc.h (new) ##
@@
++#ifndef FSM_DARWIN_GCC_H
++#define FSM_DARWIN_GCC_H
++
+#ifndef __clang__
+/*
+ * It is possible to #include CoreFoundation/CoreFoundation.h when compiling
@@ compat/fsmonitor/fsm-listen-darwin.c
+void FSEventStreamStop(FSEventStreamRef stream);
+void FSEventStreamInvalidate(FSEventStreamRef stream);
+void FSEventStreamRelease(FSEventStreamRef stream);
++
++#endif /* !clang */
++#endif /* FSM_DARWIN_GCC_H */
+
+ ## compat/fsmonitor/fsm-listen-darwin.c ##
+@@
++#ifndef __clang__
++#include "fsm-darwin-gcc.h"
+#else
-+/*
-+ * Let Apple's headers declare `isalnum()` first, before
-+ * Git's headers override it via a constant
-+ */
-+#include <string.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
++
++#ifndef AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER
++/*
++ * This enum value was added in 10.13 to:
++ *
++ * /Applications/Xcode.app/Contents/Developer/Platforms/ \
++ * MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/ \
++ * Library/Frameworks/CoreServices.framework/Frameworks/ \
++ * FSEvents.framework/Versions/Current/Headers/FSEvents.h
++ *
++ * If we're compiling against an older SDK, this symbol won't be
++ * present. Silently define it here so that we don't have to ifdef
++ * the logging or masking below. This should be harmless since older
++ * versions of macOS won't ever emit this FS event anyway.
++ */
++#define kFSEventStreamEventFlagItemCloned 0x00400000
++#endif
+#endif
+
#include "cache.h"
17: aabfebd3a41 ! 17: 55bd7aee06c compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
@@ Commit message
Signed-off-by: Junio C Hamano <gitster@pobox.com>
## compat/fsmonitor/fsm-listen-darwin.c ##
-@@ compat/fsmonitor/fsm-listen-darwin.c: void FSEventStreamRelease(FSEventStreamRef stream);
+@@
#include "cache.h"
#include "fsmonitor.h"
#include "fsm-listen.h"
@@ compat/fsmonitor/fsm-listen-darwin.c: void FSEventStreamRelease(FSEventStreamRef
+ return 0;
+
+failed:
-+ error("Unable to create FSEventStream.");
++ error(_("Unable to create FSEventStream."));
+
+ FREE_AND_NULL(state->backend_data);
return -1;
@@ compat/fsmonitor/fsm-listen-darwin.c: void FSEventStreamRelease(FSEventStreamRef
+ data->stream_scheduled = 1;
+
+ if (!FSEventStreamStart(data->stream)) {
-+ error("Failed to start the FSEventStream");
++ error(_("Failed to start the FSEventStream"));
+ goto force_error_stop_without_loop;
+ }
+ data->stream_started = 1;
18: 0896e72e2b8 = 18: 1f4b5209bf6 fsmonitor--daemon: implement handle_client callback
19: bc240a9e665 ! 19: 8cf62c9fc6f help: include fsmonitor--daemon feature flag in version info
@@ t/test-lib.sh: test_lazy_prereq SHA1 '
+# Does this platform support `git fsmonitor--daemon`
+#
+test_lazy_prereq FSMONITOR_DAEMON '
-+ git version --build-options | grep "feature:" | grep "fsmonitor--daemon"
++ git version --build-options >output &&
++ grep "feature: fsmonitor--daemon" output
+'
20: 2b563c240eb ! 20: 1bd74a81593 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
@@ t/helper/test-fsmonitor-client.c (new)
+
+ ret = fsmonitor_ipc__send_query(token, &answer);
+ if (ret < 0)
-+ die(_("could not query fsmonitor--daemon"));
++ die("could not query fsmonitor--daemon");
+
+ write_in_full(1, answer.buf, answer.len);
+ strbuf_release(&answer);
@@ t/helper/test-fsmonitor-client.c (new)
+ const char *token = NULL;
+
+ const char * const fsmonitor_client_usage[] = {
-+ N_("test-helper fsmonitor-client query [<token>]"),
-+ N_("test-helper fsmonitor-client flush"),
++ "test-tool fsmonitor-client query [<token>]",
++ "test-tool fsmonitor-client flush",
+ NULL,
+ };
+
+ struct option options[] = {
-+ OPT_STRING(0, "token", &token, N_("token"),
-+ N_("command token to send to the server")),
++ OPT_STRING(0, "token", &token, "token",
++ "command token to send to the server"),
+ OPT_END()
+ };
+
-+ if (argc < 2)
-+ usage_with_options(fsmonitor_client_usage, options);
++ argc = parse_options(argc, argv, NULL, options, fsmonitor_client_usage, 0);
+
-+ if (argc == 2 && !strcmp(argv[1], "-h"))
++ if (argc != 1)
+ usage_with_options(fsmonitor_client_usage, options);
+
-+ subcmd = argv[1];
-+ argv--;
-+ argc++;
-+
-+ argc = parse_options(argc, argv, NULL, options, fsmonitor_client_usage, 0);
++ subcmd = argv[0];
+
+ setup_git_directory();
+
21: db8809da089 ! 21: 4a920d0b54a t7527: create test for fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh (new)
+fi
+
+stop_daemon_delete_repo () {
-+ r=$1
-+ git -C $r fsmonitor--daemon stop >/dev/null 2>/dev/null
++ r=$1 &&
++ test_might_fail git -C $r fsmonitor--daemon stop &&
+ rm -rf $1
-+ return 0
+}
+
+start_daemon () {
-+ case "$#" in
-+ 1) r="-C $1";;
-+ *) r="";
-+ esac
++ r= &&
++ tf= &&
++ t2= &&
++ tk= &&
++
++ while test "$#" -ne 0
++ do
++ case "$1" in
++ -C)
++ shift;
++ test "$#" -ne 0 || BUG "error: -C requires arg"
++ r="-C $1"
++ shift
++ ;;
++ -tf)
++ shift;
++ test "$#" -ne 0 || BUG "error: -tf requires arg"
++ tf="$1"
++ shift
++ ;;
++ -t2)
++ shift;
++ test "$#" -ne 0 || BUG "error: -t2 requires arg"
++ t2="$1"
++ shift
++ ;;
++ -tk)
++ shift;
++ test "$#" -ne 0 || BUG "error: -tk requires arg"
++ tk="$1"
++ shift
++ ;;
++ *)
++ BUG "error: unknown option: '$1'"
++ ;;
++ esac
++ done &&
+
-+ git $r fsmonitor--daemon start || return $?
-+ git $r fsmonitor--daemon status || return $?
-+
-+ return 0
++ (
++ if test -n "$tf"
++ then
++ GIT_TRACE_FSMONITOR="$tf"
++ export GIT_TRACE_FSMONITOR
++ fi &&
++
++ if test -n "$t2"
++ then
++ GIT_TRACE2_PERF="$t2"
++ export GIT_TRACE2_PERF
++ fi &&
++
++ if test -n "$tk"
++ then
++ GIT_TEST_FSMONITOR_TOKEN="$tk"
++ export GIT_TEST_FSMONITOR_TOKEN
++ fi &&
++
++ git $r fsmonitor--daemon start &&
++ git $r fsmonitor--daemon status
++ )
+}
+
+# Is a Trace2 data event present with the given catetory and key?
+# We do not care what the value is.
+#
+have_t2_data_event () {
-+ c=$1
-+ k=$2
++ c=$1 &&
++ k=$2 &&
+
+ grep -e '"event":"data".*"category":"'"$c"'".*"key":"'"$k"'"'
+}
@@ t/t7527-builtin-fsmonitor.sh (new)
+ test_when_finished "stop_daemon_delete_repo test_explicit" &&
+
+ git init test_explicit &&
-+ start_daemon test_explicit &&
++ start_daemon -C test_explicit &&
+
+ git -C test_explicit fsmonitor--daemon stop &&
+ test_must_fail git -C test_explicit fsmonitor--daemon status
@@ t/t7527-builtin-fsmonitor.sh (new)
+ # but this test case is only concerned with whether the daemon was
+ # implicitly started.)
+
-+ GIT_TRACE2_EVENT="$(pwd)/.git/trace" \
++ GIT_TRACE2_EVENT="$PWD/.git/trace" \
+ test-tool -C test_implicit fsmonitor-client query --token 0 >actual &&
+ nul_to_q <actual >actual.filtered &&
+ grep "builtin:" actual.filtered &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_implicit_1 &&
+
-+ start_daemon test_implicit_1 &&
++ start_daemon -C test_implicit_1 &&
+
+ # deleting the .git directory will implicitly stop the daemon.
+ rm -rf test_implicit_1/.git &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_implicit_2 &&
+
-+ start_daemon test_implicit_2 &&
++ start_daemon -C test_implicit_2 &&
+
+ # renaming the .git directory will implicitly stop the daemon.
+ mv test_implicit_2/.git test_implicit_2/.xxx &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_multiple &&
+
-+ start_daemon test_multiple &&
++ start_daemon -C test_multiple &&
+
+ test_must_fail git -C test_multiple fsmonitor--daemon start 2>actual &&
+ grep "fsmonitor--daemon is already running" actual &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+# This is here in case something else fails first.
+#
+redundant_stop_daemon () {
-+ git fsmonitor--daemon stop
-+ return 0
++ test_might_fail git fsmonitor--daemon stop
+}
+
+test_expect_success 'update-index implicitly starts daemon' '
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ test_must_fail git fsmonitor--daemon status &&
+
-+ GIT_TRACE2_EVENT="$(pwd)/.git/trace_implicit_1" \
++ GIT_TRACE2_EVENT="$PWD/.git/trace_implicit_1" \
+ git update-index --fsmonitor &&
+
+ git fsmonitor--daemon status &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ test_must_fail git fsmonitor--daemon status &&
+
-+ GIT_TRACE2_EVENT="$(pwd)/.git/trace_implicit_2" \
++ GIT_TRACE2_EVENT="$PWD/.git/trace_implicit_2" \
+ git status >actual &&
+
+ git fsmonitor--daemon status &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+'
+
+edit_files () {
-+ echo 1 >modified
-+ echo 2 >dir1/modified
-+ echo 3 >dir2/modified
++ echo 1 >modified &&
++ echo 2 >dir1/modified &&
++ echo 3 >dir2/modified &&
+ >dir1/untracked
+}
+
+delete_files () {
-+ rm -f delete
-+ rm -f dir1/delete
++ rm -f delete &&
++ rm -f dir1/delete &&
+ rm -f dir2/delete
+}
+
+create_files () {
-+ echo 1 >new
-+ echo 2 >dir1/new
++ echo 1 >new &&
++ echo 2 >dir1/new &&
+ echo 3 >dir2/new
+}
+
+rename_files () {
-+ mv rename renamed
-+ mv dir1/rename dir1/renamed
++ mv rename renamed &&
++ mv dir1/rename dir1/renamed &&
+ mv dir2/rename dir2/renamed
+}
+
+file_to_directory () {
-+ rm -f delete
-+ mkdir delete
++ rm -f delete &&
++ mkdir delete &&
+ echo 1 >delete/new
+}
+
+directory_to_file () {
-+ rm -rf dir1
++ rm -rf dir1 &&
+ echo 1 >dir1
+}
+
-+verify_status () {
-+ git status >actual &&
-+ GIT_INDEX_FILE=.git/fresh-index git read-tree master &&
-+ GIT_INDEX_FILE=.git/fresh-index git -c core.fsmonitor=false status >expect &&
-+ test_cmp expect actual &&
-+ echo HELLO AFTER &&
-+ cat .git/trace &&
-+ echo HELLO AFTER
-+}
-+
+# The next few test cases confirm that our fsmonitor daemon sees each type
+# of OS filesystem notification that we care about. At this layer we just
+# ensure we are getting the OS notifications and do not try to confirm what
@@ t/t7527-builtin-fsmonitor.sh (new)
+# daemon) because these commands might implicitly restart the daemon.
+
+clean_up_repo_and_stop_daemon () {
-+ git reset --hard HEAD
-+ git clean -fd
-+ git fsmonitor--daemon stop
++ git reset --hard HEAD &&
++ git clean -fd &&
++ test_might_fail git fsmonitor--daemon stop &&
+ rm -f .git/trace
+}
+
+test_expect_success 'edit some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ edit_files &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1/modified$" .git/trace &&
+ grep "^event: dir2/modified$" .git/trace &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'create some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ create_files &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1/new$" .git/trace &&
+ grep "^event: dir2/new$" .git/trace &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'delete some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ delete_files &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1/delete$" .git/trace &&
+ grep "^event: dir2/delete$" .git/trace &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'rename some files' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ rename_files &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1/rename$" .git/trace &&
+ grep "^event: dir2/rename$" .git/trace &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'rename directory' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ mv dirtorename dirrenamed &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dirtorename/*$" .git/trace &&
+ grep "^event: dirrenamed/*$" .git/trace
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'file changes to directory' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ file_to_directory &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: delete$" .git/trace &&
+ grep "^event: delete/new$" .git/trace
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'directory changes to a file' '
+ test_when_finished clean_up_repo_and_stop_daemon &&
+
-+ (
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon
-+ ) &&
++ start_daemon -tf "$PWD/.git/trace" &&
+
+ directory_to_file &&
+
-+ test-tool fsmonitor-client query --token 0 >/dev/null 2>&1 &&
++ test-tool fsmonitor-client query --token 0 &&
+
+ grep "^event: dir1$" .git/trace
+'
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ git init test_flush &&
+
-+ (
-+ GIT_TEST_FSMONITOR_TOKEN=true &&
-+ export GIT_TEST_FSMONITOR_TOKEN &&
-+
-+ GIT_TRACE_FSMONITOR="$(pwd)/.git/trace_daemon" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon test_flush
-+ ) &&
++ start_daemon -C test_flush -tf "$PWD/.git/trace_daemon" -tk true &&
+
+ # The daemon should have an initial token with no events in _0 and
+ # then a few (probably platform-specific number of) events in _1.
@@ t/t7527-builtin-fsmonitor.sh (new)
+ test-tool -C test_flush fsmonitor-client query --token "builtin:test_00000001:0" >actual_0 &&
+ nul_to_q <actual_0 >actual_q0 &&
+
-+ touch test_flush/file_1 &&
-+ touch test_flush/file_2 &&
++ >test_flush/file_1 &&
++ >test_flush/file_2 &&
+
+ test-tool -C test_flush fsmonitor-client query --token "builtin:test_00000001:0" >actual_1 &&
+ nul_to_q <actual_1 >actual_q1 &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+
+ grep "^builtin:test_00000002:0Q$" actual_q2 &&
+
-+ touch test_flush/file_3 &&
++ >test_flush/file_3 &&
+
+ test-tool -C test_flush fsmonitor-client query --token "builtin:test_00000002:0" >actual_3 &&
+ nul_to_q <actual_3 >actual_q3 &&
@@ t/t7527-builtin-fsmonitor.sh (new)
+test_expect_success 'worktree with .git file' '
+ git -C wt-base worktree add ../wt-secondary &&
+
-+ (
-+ GIT_TRACE2_PERF="$(pwd)/trace2_wt_secondary" &&
-+ export GIT_TRACE2_PERF &&
-+
-+ GIT_TRACE_FSMONITOR="$(pwd)/trace_wt_secondary" &&
-+ export GIT_TRACE_FSMONITOR &&
-+
-+ start_daemon wt-secondary
-+ ) &&
++ start_daemon -C wt-secondary \
++ -tf "$PWD/trace_wt_secondary" \
++ -t2 "$PWD/trace2_wt_secondary" &&
+
+ git -C wt-secondary fsmonitor--daemon stop &&
+ test_must_fail git -C wt-secondary fsmonitor--daemon status
22: 15bd5aaff36 = 22: c925a9a7459 t/perf: avoid copying builtin fsmonitor files into test repo
23: 4cb97918d20 = 23: 5b3381c223e t/helper/test-chmtime: skip directories on Windows
24: a70748b4640 ! 24: 803a540cc00 t/perf/p7519: speed up test on Windows
@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite() {
head -100000 | \
grep -v \" | \
- sed '\''s/\(.\)/\\\1/g'\'' | \
-+ egrep -v " ." | \
++ grep -v " ." | \
xargs test-tool chmtime -300 &&
git status
'
25: b0c9c9c7a40 ! 25: d5ca2df31c8 t/perf/p7519: add fsmonitor--daemon test cases
@@ Commit message
Signed-off-by: Junio C Hamano <gitster@pobox.com>
## t/perf/p7519-fsmonitor.sh ##
+@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
+ fi
+ '
+
+-setup_for_fsmonitor () {
++setup_for_fsmonitor_hook () {
+ # set INTEGRATION_SCRIPT depending on the environment
+ if test -n "$INTEGRATION_PATH"
+ then
@@ t/perf/p7519-fsmonitor.sh: test_perf_w_drop_caches () {
}
@@ t/perf/p7519-fsmonitor.sh: test_perf_w_drop_caches () {
+ if test -n "$USE_FSMONITOR_DAEMON"
+ then
+ DESC="builtin fsmonitor--daemon"
-+ elif test -n "$INTEGRATION_SCRIPT"; then
++ elif test -n "$INTEGRATION_SCRIPT"
++ then
DESC="fsmonitor=$(basename $INTEGRATION_SCRIPT)"
else
DESC="fsmonitor=disabled"
+@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite () {
+ trace_start fsmonitor-watchman
+ if test -n "$GIT_PERF_7519_FSMONITOR"; then
+ for INTEGRATION_PATH in $GIT_PERF_7519_FSMONITOR; do
+- test_expect_success "setup for fsmonitor $INTEGRATION_PATH" 'setup_for_fsmonitor'
++ test_expect_success "setup for fsmonitor $INTEGRATION_PATH" 'setup_for_fsmonitor_hook'
+ test_fsmonitor_suite
+ done
+ else
+- test_expect_success "setup for fsmonitor" 'setup_for_fsmonitor'
++ test_expect_success "setup for fsmonitor hook" 'setup_for_fsmonitor_hook'
+ test_fsmonitor_suite
+ fi
+
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "setup without fsmonitor" '
test_fsmonitor_suite
trace_stop
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "setup without fsmonitor" '
+then
+ USE_FSMONITOR_DAEMON=t
+
-+ trace_start fsmonitor--daemon--server
-+ git fsmonitor--daemon start
++ test_expect_success "setup for builtin fsmonitor" '
++ trace_start fsmonitor--daemon--server &&
++ git fsmonitor--daemon start &&
+
-+ trace_start fsmonitor--daemon--client
++ trace_start fsmonitor--daemon--client &&
+
-+ git config core.fsmonitor true
-+ git update-index --fsmonitor
++ git config core.fsmonitor true &&
++ git update-index --fsmonitor
++ '
+
+ test_fsmonitor_suite
+
26: 64a5b741670 = 26: 42631259e89 fsmonitor--daemon: periodically truncate list of modified files
27: 5b06eb5d0e6 ! 27: f256c3cbe8b fsmonitor--daemon: use a cookie file to sync with file system
@@ builtin/fsmonitor--daemon.c: static int do_as_client__status(void)
+enum fsmonitor_cookie_item_result {
+ FCIR_ERROR = -1, /* could not create cookie file ? */
-+ FCIR_INIT = 0,
++ FCIR_INIT,
+ FCIR_SEEN,
+ FCIR_ABORT,
+};
+
+struct fsmonitor_cookie_item {
+ struct hashmap_entry entry;
-+ const char *name;
++ char *name;
+ enum fsmonitor_cookie_item_result result;
+};
+
@@ builtin/fsmonitor--daemon.c: static int do_as_client__status(void)
+ * that the listener thread has seen it.
+ */
+ fd = open(cookie_pathname.buf, O_WRONLY | O_CREAT | O_EXCL, 0600);
-+ if (fd >= 0) {
-+ close(fd);
-+ unlink(cookie_pathname.buf);
-+
-+ /*
-+ * Technically, this is an infinite wait (well, unless another
-+ * thread sends us an abort). I'd like to change this to
-+ * use `pthread_cond_timedwait()` and return an error/timeout
-+ * and let the caller do the trivial response thing, but we
-+ * don't have that routine in our thread-utils.
-+ *
-+ * After extensive beta testing I'm not really worried about
-+ * this. Also note that the above open() and unlink() calls
-+ * will cause at least two FS events on that path, so the odds
-+ * of getting stuck are pretty slim.
-+ */
-+ while (cookie->result == FCIR_INIT)
-+ pthread_cond_wait(&state->cookies_cond,
-+ &state->main_lock);
-+ } else {
++ if (fd < 0) {
+ error_errno(_("could not create fsmonitor cookie '%s'"),
+ cookie->name);
+
+ cookie->result = FCIR_ERROR;
++ goto done;
+ }
+
++ /*
++ * Technically, close() and unlink() can fail, but we don't
++ * care here. We only created the file to trigger a watch
++ * event from the FS to know that when we're up to date.
++ */
++ close(fd);
++ unlink(cookie_pathname.buf);
++
++ /*
++ * Technically, this is an infinite wait (well, unless another
++ * thread sends us an abort). I'd like to change this to
++ * use `pthread_cond_timedwait()` and return an error/timeout
++ * and let the caller do the trivial response thing, but we
++ * don't have that routine in our thread-utils.
++ *
++ * After extensive beta testing I'm not really worried about
++ * this. Also note that the above open() and unlink() calls
++ * will cause at least two FS events on that path, so the odds
++ * of getting stuck are pretty slim.
++ */
++ while (cookie->result == FCIR_INIT)
++ pthread_cond_wait(&state->cookies_cond,
++ &state->main_lock);
++
++done:
+ hashmap_remove(&state->cookies, &cookie->entry, NULL);
+
+ result = cookie->result;
+
-+ free((char*)cookie->name);
++ free(cookie->name);
+ free(cookie);
+ strbuf_release(&cookie_pathname);
+
28: 1fd5439de03 = 28: 08af8296f96 fsmonitor: force update index after large responses
29: 6fc1430285f ! 29: e6cf84dc8eb t7527: test status with untracked-cache and fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
+}
+
+matrix_try () {
-+ uc=$1
-+ fsm=$2
-+ fn=$3
++ uc=$1 &&
++ fsm=$2 &&
++ fn=$3 &&
+
+ test_expect_success "Matrix[uc:$uc][fsm:$fsm] $fn" '
+ matrix_clean_up_repo &&
30: b915b95cc2f < -: ----------- update-index: convert fsmonitor warnings to advise
--
gitgitgadget
^ permalink raw reply [relevance 1%]
* Re: [PATCH 3/7] commit-graph: start parsing generation v2 (again)
2022-03-01 14:06 0% ` Derrick Stolee
@ 2022-03-01 14:53 0% ` Patrick Steinhardt
0 siblings, 0 replies; 162+ results
From: Patrick Steinhardt @ 2022-03-01 14:53 UTC (permalink / raw)
To: Derrick Stolee
Cc: Derrick Stolee via GitGitGadget, git, me, gitster,
abhishekkumar8222
[-- Attachment #1: Type: text/plain, Size: 8014 bytes --]
On Tue, Mar 01, 2022 at 09:06:44AM -0500, Derrick Stolee wrote:
> On 3/1/2022 5:35 AM, Patrick Steinhardt wrote:
> > On Tue, Mar 01, 2022 at 10:46:14AM +0100, Patrick Steinhardt wrote:
> >> On Mon, Feb 28, 2022 at 01:44:01PM -0500, Derrick Stolee wrote:
> >>> On 2/28/2022 11:59 AM, Patrick Steinhardt wrote:
> >>>> On Mon, Feb 28, 2022 at 11:23:38AM -0500, Derrick Stolee wrote:
> >>>>> On 2/28/2022 10:18 AM, Patrick Steinhardt wrote:
> >>>>>> I haven't yet found the time to dig deeper into why this is happening.
> >>>>>> While the repository is publicly accessible at [1], unfortunately the
> >>>>>> bug seems to be triggered by a commit that's only kept alive by an
> >>>>>> internal reference.
> >>>>>>
> >>>>>> Patrick
> >>>>>>
> >>>>>> [1]: https://gitlab.com/gitlab-com/www-gitlab-com.git
> >>>>>
> >>>>> Thanks for including this information. Just to be clear: did you
> >>>>> include patch 4 in your tests, or not? Patch 4 includes a fix
> >>>>> related to overflow values, so it would be helpful to know if you
> >>>>> found a _different_ bug or if it is the same one.
> >>>>>
> >>>>> Thanks,
> >>>>> -Stolee
> >>>>
> >>>> I initially only applied the first three patches, but after having hit
> >>>> the fatal error I also applied the rest of this series to have a look at
> >>>> whether it is indeed fixed already by one of your later patches. The
> >>>> error remains the same though.
> >>>
> >>> Thanks for this extra context. Is this a commit-graph that you wrote
> >>> with the first three patches and then you get an error when reading it?
> >>>
> >>> Do you get the same error when deleting that file and rewriting it with
> >>> all patches included?
> >>>
> >>> Thanks,
> >>> -Stolee
> >>
> >> Yes, I do. I've applied all four patches from v2 on top of 715d08a9e5
> >> (The eighth batch, 2022-02-25) and still get the same results:
> >>
> >> $ find objects/info/commit-graphs/
> >> objects/info/commit-graphs/
> >> objects/info/commit-graphs/graph-607e641165f3e83a82d5b14af4e611bf2a688f35.graph
> >> objects/info/commit-graphs/commit-graph-chain
> >> objects/info/commit-graphs/graph-5f357c7573c0075d42d82b28e660bc3eac01bfe8.graph
> >> objects/info/commit-graphs/graph-e0c12ead1b61c7c30720ae372e8a9f98d95dfb2d.graph
> >> objects/info/commit-graphs/graph-c96723b133c2d81106a01ecd7a8773bb2ef6c2e1.graph
> >>
> >> $ git commit-graph verify
> >> fatal: commit-graph requires overflow generation data but has none
> >>
> >> $ git commit-graph write
> >> Finding commits for commit graph among packed objects: 100% (10235119/10235119), done.
> >> Expanding reachable commits in commit graph: 2197197, done.
> >> Finding extra edges in commit graph: 100% (2197197/2197197), done.
> >> fatal: commit-graph requires overflow generation data but has none
> >>
> >> $ rm -rf objects/info/commit-graphs/
> >>
> >> $ git commit-graph write
> >> Finding commits for commit graph among packed objects: 100% (10235119/10235119), done.
> >> Expanding reachable commits in commit graph: 2197197, done.
> >> Finding extra edges in commit graph: 100% (2197197/2197197), done.
> >> fatal: commit-graph requires overflow generation data but has none)
> >>
> >> So even generating them completely anew doesn't seem to generate the
> >> overflow generation data.
> >>
> >> Patrick
> >
> > I stand corrected. I forgot that the repository at hand was connected to
> > another one via `objects/info/alternates`. If I prune commit-graphs from
> > that alternate, too, then it works alright with your patches.
>
> OK, thanks. That clarifies the situation.
>
> I ordered the patches such that the fix in patch 4 could be immediately
> testable, which is not the case without patch 3. However, it does leave
> this temporary state where information can be incorrect if only a subset
> of the series is applied.
>
> > This makes me wonder how such a bugfix should be handled though. As this
> > series is right now, users will be faced with repository corruption as
> > soon as they upgrade their Git version to one that contains this patch
> > series. This corruption needs manual action: they have to go into the
> > repository, delete the commit-graphs and then optionally create new
> > ones.
> >
> > This is not a good user experience, and it's worse on the server-side
> > where we now have a timeframe where all commit-graphs are potentially
> > corrupt. This effectively leads to us being unable to serve those repos
> > at all until we have rewritten the commit-graphs because all commands
> > which make use of the commit-graph will now die:
> >
> > $ git log
> > fatal: commit-graph requires overflow generation data but has none
> >
> > So the question is whether this is a change that needs to be rolled out
> > over multiple releases. First we'd get in the bug fix such that we write
> > correct commit-graphs, and after this fix has been released we can also
> > release the fix that starts to actually parse the generation. This
> > ensures there's a grace period during which we can hopefully correct the
> > data on-disk such that users are not faced with failures.
>
> You are right that we need to be careful here, but I also think that
> previous versions of Git always wrote the correct data. Here is my
> thought process:
>
> 1. To get this bug, we need to have parsed the corrected commit date
> from an existing commit-graph in order to under-count the number
> of overflow values.
>
> 2. Before this series, Git versions were not parsing the corrected
> commit date, so they recompute the corrected commit date every
> time the commit-graph is written, getting the proper count of
> overflow values.
>
> For these reasons, data written by previous versions of Git are
> correct and can be trusted without a staged release.
>
> Does this make sense? Or, do you experience a different result when
> you build commit-graphs with a released Git version and then when
> writing on top with all patches applied?
Just to verify my understanding: you claim that the bug I was hitting
shouldn't be encountered in the wild when the release , but
only if one were to write a commit-graph with the intermediate stafe
until patch 3/4 of your patch series?
Hum. I have re-verified, and this indeed seems to play out. So I must've
accidentally ran all my testing with the state generated without the
final patch which fixes the corruption. I do see lots of the following
warnings, but overall I can verify and write the commit-graph just fine:
commit-graph generation for commit c80a42de8803e2d77818d0c82f88e748d7f9425f is 1623362063 < 1623362139
Thanks for your patience, and sorry for the noise :)
> > The better alternative would probably be to just gracefully handle
> > commit-graphs which are corrupted in such a way. Can we maybe just
> > continue to not parse generations in case we find that the commit-graph
> > doesn't have overflow generation data?
> >
> > This is more of a general issue though: commit-graphs are an auxiliary
> > cache that is not required for proper operation at all. If we fail to
> > parse it, then Git shouldn't die but instead fail gracefully just ignore
> > it. Furthermore, if we notice that graphs are corrupt when we try to
> > write new ones, we may just delete the corrupt versions automatically
> > and generate completely new ones.
>
> You are right that we can be better about failures here and report
> and error instead of a die(). Especially in this case, we could just
> revert to topological levels instead of throwing out the commit-graph
> entirely.
>
> This seems like something for another series, so we can be sure to
> audit all cases of fatal errors when parsing the commit-graph so we
> catch all of them and do the "best" thing in each case.
I agree.
Patrick
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [relevance 0%]
* Re: [PATCH 3/7] commit-graph: start parsing generation v2 (again)
2022-03-01 10:35 0% ` Patrick Steinhardt
@ 2022-03-01 14:06 0% ` Derrick Stolee
2022-03-01 14:53 0% ` Patrick Steinhardt
0 siblings, 1 reply; 162+ results
From: Derrick Stolee @ 2022-03-01 14:06 UTC (permalink / raw)
To: Patrick Steinhardt
Cc: Derrick Stolee via GitGitGadget, git, me, gitster,
abhishekkumar8222
On 3/1/2022 5:35 AM, Patrick Steinhardt wrote:
> On Tue, Mar 01, 2022 at 10:46:14AM +0100, Patrick Steinhardt wrote:
>> On Mon, Feb 28, 2022 at 01:44:01PM -0500, Derrick Stolee wrote:
>>> On 2/28/2022 11:59 AM, Patrick Steinhardt wrote:
>>>> On Mon, Feb 28, 2022 at 11:23:38AM -0500, Derrick Stolee wrote:
>>>>> On 2/28/2022 10:18 AM, Patrick Steinhardt wrote:
>>>>>> I haven't yet found the time to dig deeper into why this is happening.
>>>>>> While the repository is publicly accessible at [1], unfortunately the
>>>>>> bug seems to be triggered by a commit that's only kept alive by an
>>>>>> internal reference.
>>>>>>
>>>>>> Patrick
>>>>>>
>>>>>> [1]: https://gitlab.com/gitlab-com/www-gitlab-com.git
>>>>>
>>>>> Thanks for including this information. Just to be clear: did you
>>>>> include patch 4 in your tests, or not? Patch 4 includes a fix
>>>>> related to overflow values, so it would be helpful to know if you
>>>>> found a _different_ bug or if it is the same one.
>>>>>
>>>>> Thanks,
>>>>> -Stolee
>>>>
>>>> I initially only applied the first three patches, but after having hit
>>>> the fatal error I also applied the rest of this series to have a look at
>>>> whether it is indeed fixed already by one of your later patches. The
>>>> error remains the same though.
>>>
>>> Thanks for this extra context. Is this a commit-graph that you wrote
>>> with the first three patches and then you get an error when reading it?
>>>
>>> Do you get the same error when deleting that file and rewriting it with
>>> all patches included?
>>>
>>> Thanks,
>>> -Stolee
>>
>> Yes, I do. I've applied all four patches from v2 on top of 715d08a9e5
>> (The eighth batch, 2022-02-25) and still get the same results:
>>
>> $ find objects/info/commit-graphs/
>> objects/info/commit-graphs/
>> objects/info/commit-graphs/graph-607e641165f3e83a82d5b14af4e611bf2a688f35.graph
>> objects/info/commit-graphs/commit-graph-chain
>> objects/info/commit-graphs/graph-5f357c7573c0075d42d82b28e660bc3eac01bfe8.graph
>> objects/info/commit-graphs/graph-e0c12ead1b61c7c30720ae372e8a9f98d95dfb2d.graph
>> objects/info/commit-graphs/graph-c96723b133c2d81106a01ecd7a8773bb2ef6c2e1.graph
>>
>> $ git commit-graph verify
>> fatal: commit-graph requires overflow generation data but has none
>>
>> $ git commit-graph write
>> Finding commits for commit graph among packed objects: 100% (10235119/10235119), done.
>> Expanding reachable commits in commit graph: 2197197, done.
>> Finding extra edges in commit graph: 100% (2197197/2197197), done.
>> fatal: commit-graph requires overflow generation data but has none
>>
>> $ rm -rf objects/info/commit-graphs/
>>
>> $ git commit-graph write
>> Finding commits for commit graph among packed objects: 100% (10235119/10235119), done.
>> Expanding reachable commits in commit graph: 2197197, done.
>> Finding extra edges in commit graph: 100% (2197197/2197197), done.
>> fatal: commit-graph requires overflow generation data but has none)
>>
>> So even generating them completely anew doesn't seem to generate the
>> overflow generation data.
>>
>> Patrick
>
> I stand corrected. I forgot that the repository at hand was connected to
> another one via `objects/info/alternates`. If I prune commit-graphs from
> that alternate, too, then it works alright with your patches.
OK, thanks. That clarifies the situation.
I ordered the patches such that the fix in patch 4 could be immediately
testable, which is not the case without patch 3. However, it does leave
this temporary state where information can be incorrect if only a subset
of the series is applied.
> This makes me wonder how such a bugfix should be handled though. As this
> series is right now, users will be faced with repository corruption as
> soon as they upgrade their Git version to one that contains this patch
> series. This corruption needs manual action: they have to go into the
> repository, delete the commit-graphs and then optionally create new
> ones.
>
> This is not a good user experience, and it's worse on the server-side
> where we now have a timeframe where all commit-graphs are potentially
> corrupt. This effectively leads to us being unable to serve those repos
> at all until we have rewritten the commit-graphs because all commands
> which make use of the commit-graph will now die:
>
> $ git log
> fatal: commit-graph requires overflow generation data but has none
>
> So the question is whether this is a change that needs to be rolled out
> over multiple releases. First we'd get in the bug fix such that we write
> correct commit-graphs, and after this fix has been released we can also
> release the fix that starts to actually parse the generation. This
> ensures there's a grace period during which we can hopefully correct the
> data on-disk such that users are not faced with failures.
You are right that we need to be careful here, but I also think that
previous versions of Git always wrote the correct data. Here is my
thought process:
1. To get this bug, we need to have parsed the corrected commit date
from an existing commit-graph in order to under-count the number
of overflow values.
2. Before this series, Git versions were not parsing the corrected
commit date, so they recompute the corrected commit date every
time the commit-graph is written, getting the proper count of
overflow values.
For these reasons, data written by previous versions of Git are
correct and can be trusted without a staged release.
Does this make sense? Or, do you experience a different result when
you build commit-graphs with a released Git version and then when
writing on top with all patches applied?
> The better alternative would probably be to just gracefully handle
> commit-graphs which are corrupted in such a way. Can we maybe just
> continue to not parse generations in case we find that the commit-graph
> doesn't have overflow generation data?
>
> This is more of a general issue though: commit-graphs are an auxiliary
> cache that is not required for proper operation at all. If we fail to
> parse it, then Git shouldn't die but instead fail gracefully just ignore
> it. Furthermore, if we notice that graphs are corrupt when we try to
> write new ones, we may just delete the corrupt versions automatically
> and generate completely new ones.
You are right that we can be better about failures here and report
and error instead of a die(). Especially in this case, we could just
revert to topological levels instead of throwing out the commit-graph
entirely.
This seems like something for another series, so we can be sure to
audit all cases of fatal errors when parsing the commit-graph so we
catch all of them and do the "best" thing in each case.
Thanks,
-Stolee
^ permalink raw reply [relevance 0%]
* Re: [PATCH 3/7] commit-graph: start parsing generation v2 (again)
2022-03-01 9:46 6% ` Patrick Steinhardt
@ 2022-03-01 10:35 0% ` Patrick Steinhardt
2022-03-01 14:06 0% ` Derrick Stolee
0 siblings, 1 reply; 162+ results
From: Patrick Steinhardt @ 2022-03-01 10:35 UTC (permalink / raw)
To: Derrick Stolee
Cc: Derrick Stolee via GitGitGadget, git, me, gitster,
abhishekkumar8222
[-- Attachment #1: Type: text/plain, Size: 5268 bytes --]
On Tue, Mar 01, 2022 at 10:46:14AM +0100, Patrick Steinhardt wrote:
> On Mon, Feb 28, 2022 at 01:44:01PM -0500, Derrick Stolee wrote:
> > On 2/28/2022 11:59 AM, Patrick Steinhardt wrote:
> > > On Mon, Feb 28, 2022 at 11:23:38AM -0500, Derrick Stolee wrote:
> > >> On 2/28/2022 10:18 AM, Patrick Steinhardt wrote:
> > >>> I haven't yet found the time to dig deeper into why this is happening.
> > >>> While the repository is publicly accessible at [1], unfortunately the
> > >>> bug seems to be triggered by a commit that's only kept alive by an
> > >>> internal reference.
> > >>>
> > >>> Patrick
> > >>>
> > >>> [1]: https://gitlab.com/gitlab-com/www-gitlab-com.git
> > >>
> > >> Thanks for including this information. Just to be clear: did you
> > >> include patch 4 in your tests, or not? Patch 4 includes a fix
> > >> related to overflow values, so it would be helpful to know if you
> > >> found a _different_ bug or if it is the same one.
> > >>
> > >> Thanks,
> > >> -Stolee
> > >
> > > I initially only applied the first three patches, but after having hit
> > > the fatal error I also applied the rest of this series to have a look at
> > > whether it is indeed fixed already by one of your later patches. The
> > > error remains the same though.
> >
> > Thanks for this extra context. Is this a commit-graph that you wrote
> > with the first three patches and then you get an error when reading it?
> >
> > Do you get the same error when deleting that file and rewriting it with
> > all patches included?
> >
> > Thanks,
> > -Stolee
>
> Yes, I do. I've applied all four patches from v2 on top of 715d08a9e5
> (The eighth batch, 2022-02-25) and still get the same results:
>
> $ find objects/info/commit-graphs/
> objects/info/commit-graphs/
> objects/info/commit-graphs/graph-607e641165f3e83a82d5b14af4e611bf2a688f35.graph
> objects/info/commit-graphs/commit-graph-chain
> objects/info/commit-graphs/graph-5f357c7573c0075d42d82b28e660bc3eac01bfe8.graph
> objects/info/commit-graphs/graph-e0c12ead1b61c7c30720ae372e8a9f98d95dfb2d.graph
> objects/info/commit-graphs/graph-c96723b133c2d81106a01ecd7a8773bb2ef6c2e1.graph
>
> $ git commit-graph verify
> fatal: commit-graph requires overflow generation data but has none
>
> $ git commit-graph write
> Finding commits for commit graph among packed objects: 100% (10235119/10235119), done.
> Expanding reachable commits in commit graph: 2197197, done.
> Finding extra edges in commit graph: 100% (2197197/2197197), done.
> fatal: commit-graph requires overflow generation data but has none
>
> $ rm -rf objects/info/commit-graphs/
>
> $ git commit-graph write
> Finding commits for commit graph among packed objects: 100% (10235119/10235119), done.
> Expanding reachable commits in commit graph: 2197197, done.
> Finding extra edges in commit graph: 100% (2197197/2197197), done.
> fatal: commit-graph requires overflow generation data but has none)
>
> So even generating them completely anew doesn't seem to generate the
> overflow generation data.
>
> Patrick
I stand corrected. I forgot that the repository at hand was connected to
another one via `objects/info/alternates`. If I prune commit-graphs from
that alternate, too, then it works alright with your patches.
This makes me wonder how such a bugfix should be handled though. As this
series is right now, users will be faced with repository corruption as
soon as they upgrade their Git version to one that contains this patch
series. This corruption needs manual action: they have to go into the
repository, delete the commit-graphs and then optionally create new
ones.
This is not a good user experience, and it's worse on the server-side
where we now have a timeframe where all commit-graphs are potentially
corrupt. This effectively leads to us being unable to serve those repos
at all until we have rewritten the commit-graphs because all commands
which make use of the commit-graph will now die:
$ git log
fatal: commit-graph requires overflow generation data but has none
So the question is whether this is a change that needs to be rolled out
over multiple releases. First we'd get in the bug fix such that we write
correct commit-graphs, and after this fix has been released we can also
release the fix that starts to actually parse the generation. This
ensures there's a grace period during which we can hopefully correct the
data on-disk such that users are not faced with failures.
The better alternative would probably be to just gracefully handle
commit-graphs which are corrupted in such a way. Can we maybe just
continue to not parse generations in case we find that the commit-graph
doesn't have overflow generation data?
This is more of a general issue though: commit-graphs are an auxiliary
cache that is not required for proper operation at all. If we fail to
parse it, then Git shouldn't die but instead fail gracefully just ignore
it. Furthermore, if we notice that graphs are corrupt when we try to
write new ones, we may just delete the corrupt versions automatically
and generate completely new ones.
Patrick
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [relevance 0%]
* Re: [PATCH 3/7] commit-graph: start parsing generation v2 (again)
@ 2022-03-01 9:46 6% ` Patrick Steinhardt
2022-03-01 10:35 0% ` Patrick Steinhardt
0 siblings, 1 reply; 162+ results
From: Patrick Steinhardt @ 2022-03-01 9:46 UTC (permalink / raw)
To: Derrick Stolee
Cc: Derrick Stolee via GitGitGadget, git, me, gitster,
abhishekkumar8222
[-- Attachment #1: Type: text/plain, Size: 2978 bytes --]
On Mon, Feb 28, 2022 at 01:44:01PM -0500, Derrick Stolee wrote:
> On 2/28/2022 11:59 AM, Patrick Steinhardt wrote:
> > On Mon, Feb 28, 2022 at 11:23:38AM -0500, Derrick Stolee wrote:
> >> On 2/28/2022 10:18 AM, Patrick Steinhardt wrote:
> >>> I haven't yet found the time to dig deeper into why this is happening.
> >>> While the repository is publicly accessible at [1], unfortunately the
> >>> bug seems to be triggered by a commit that's only kept alive by an
> >>> internal reference.
> >>>
> >>> Patrick
> >>>
> >>> [1]: https://gitlab.com/gitlab-com/www-gitlab-com.git
> >>
> >> Thanks for including this information. Just to be clear: did you
> >> include patch 4 in your tests, or not? Patch 4 includes a fix
> >> related to overflow values, so it would be helpful to know if you
> >> found a _different_ bug or if it is the same one.
> >>
> >> Thanks,
> >> -Stolee
> >
> > I initially only applied the first three patches, but after having hit
> > the fatal error I also applied the rest of this series to have a look at
> > whether it is indeed fixed already by one of your later patches. The
> > error remains the same though.
>
> Thanks for this extra context. Is this a commit-graph that you wrote
> with the first three patches and then you get an error when reading it?
>
> Do you get the same error when deleting that file and rewriting it with
> all patches included?
>
> Thanks,
> -Stolee
Yes, I do. I've applied all four patches from v2 on top of 715d08a9e5
(The eighth batch, 2022-02-25) and still get the same results:
$ find objects/info/commit-graphs/
objects/info/commit-graphs/
objects/info/commit-graphs/graph-607e641165f3e83a82d5b14af4e611bf2a688f35.graph
objects/info/commit-graphs/commit-graph-chain
objects/info/commit-graphs/graph-5f357c7573c0075d42d82b28e660bc3eac01bfe8.graph
objects/info/commit-graphs/graph-e0c12ead1b61c7c30720ae372e8a9f98d95dfb2d.graph
objects/info/commit-graphs/graph-c96723b133c2d81106a01ecd7a8773bb2ef6c2e1.graph
$ git commit-graph verify
fatal: commit-graph requires overflow generation data but has none
$ git commit-graph write
Finding commits for commit graph among packed objects: 100% (10235119/10235119), done.
Expanding reachable commits in commit graph: 2197197, done.
Finding extra edges in commit graph: 100% (2197197/2197197), done.
fatal: commit-graph requires overflow generation data but has none
$ rm -rf objects/info/commit-graphs/
$ git commit-graph write
Finding commits for commit graph among packed objects: 100% (10235119/10235119), done.
Expanding reachable commits in commit graph: 2197197, done.
Finding extra edges in commit graph: 100% (2197197/2197197), done.
fatal: commit-graph requires overflow generation data but has none)
So even generating them completely anew doesn't seem to generate the
overflow generation data.
Patrick
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [relevance 6%]
* Re: [PATCH 06/13] submodule--helper: get remote names from any repository
2022-03-01 2:46 6% ` Junio C Hamano
@ 2022-03-01 4:26 0% ` Glen Choo
0 siblings, 0 replies; 162+ results
From: Glen Choo @ 2022-03-01 4:26 UTC (permalink / raw)
To: Junio C Hamano
Cc: git, Atharva Raykar, Emily Shaffer,
Ævar Arnfjörð Bjarmason, Josh Steadmon,
Christian Couder, Shourya Shukla
Junio C Hamano <gitster@pobox.com> writes:
> Glen Choo <chooglen@google.com> writes:
>
>> + struct ref_store *store = get_main_ref_store(repo);
>> + int ignore_errno;
>> + const char *refname = refs_resolve_ref_unsafe(store, "HEAD", 0, NULL,
>> + NULL, &ignore_errno);
>
> Given that 00/13 says this series is based on 715d08a9 (The eighth
> batch, 2022-02-25), which includes 03bdcfcc (Merge branch
> 'ab/no-errno-from-resolve-ref-unsafe', 2022-02-11), I think the
> above two lines are result of incorrect rebasing or something.
>
> Have you compiled after you rebased?
It turns out that I didn't.. I got complacent after doing this merge a
few times.
> It seems that after applying the band-aid below, t7406 seems to fail
> for two of its tests, too, but if this were not even compiled, that
> is to be expected X-<.
This is an even sillier mistake.. patch 12 accidentally includes some
tests from es/superproject-aware-submodules (probably a bad merge
conflict resolution).
>
>
>
> builtin/submodule--helper.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git c/builtin/submodule--helper.c w/builtin/submodule--helper.c
> index ea88f39fb4..21401ad99e 100644
> --- c/builtin/submodule--helper.c
> +++ w/builtin/submodule--helper.c
> @@ -36,9 +36,7 @@ static char *repo_get_default_remote(struct repository *repo)
> char *dest = NULL, *ret;
> struct strbuf sb = STRBUF_INIT;
> struct ref_store *store = get_main_ref_store(repo);
> - int ignore_errno;
> - const char *refname = refs_resolve_ref_unsafe(store, "HEAD", 0, NULL,
> - NULL, &ignore_errno);
> + const char *refname = refs_resolve_ref_unsafe(store, "HEAD", 0, NULL, NULL);
>
> if (!refname)
> die(_("No such ref: %s"), "HEAD");
^ permalink raw reply [relevance 0%]
* Re: [PATCH 06/13] submodule--helper: get remote names from any repository
@ 2022-03-01 2:46 6% ` Junio C Hamano
2022-03-01 4:26 0% ` Glen Choo
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2022-03-01 2:46 UTC (permalink / raw)
To: Glen Choo
Cc: git, Atharva Raykar, Emily Shaffer,
Ævar Arnfjörð Bjarmason, Josh Steadmon,
Christian Couder, Shourya Shukla
Glen Choo <chooglen@google.com> writes:
> + struct ref_store *store = get_main_ref_store(repo);
> + int ignore_errno;
> + const char *refname = refs_resolve_ref_unsafe(store, "HEAD", 0, NULL,
> + NULL, &ignore_errno);
Given that 00/13 says this series is based on 715d08a9 (The eighth
batch, 2022-02-25), which includes 03bdcfcc (Merge branch
'ab/no-errno-from-resolve-ref-unsafe', 2022-02-11), I think the
above two lines are result of incorrect rebasing or something.
Have you compiled after you rebased?
It seems that after applying the band-aid below, t7406 seems to fail
for two of its tests, too, but if this were not even compiled, that
is to be expected X-<.
builtin/submodule--helper.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git c/builtin/submodule--helper.c w/builtin/submodule--helper.c
index ea88f39fb4..21401ad99e 100644
--- c/builtin/submodule--helper.c
+++ w/builtin/submodule--helper.c
@@ -36,9 +36,7 @@ static char *repo_get_default_remote(struct repository *repo)
char *dest = NULL, *ret;
struct strbuf sb = STRBUF_INIT;
struct ref_store *store = get_main_ref_store(repo);
- int ignore_errno;
- const char *refname = refs_resolve_ref_unsafe(store, "HEAD", 0, NULL,
- NULL, &ignore_errno);
+ const char *refname = refs_resolve_ref_unsafe(store, "HEAD", 0, NULL, NULL);
if (!refname)
die(_("No such ref: %s"), "HEAD");
^ permalink raw reply related [relevance 6%]
* [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%]
* What's cooking in git.git (Sep 2021, #07; Thu, 23)
@ 2021-09-23 23:22 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-09-23 23:22 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 eighth batch is out.
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/gc-remove-unused-call (2021-09-12) 1 commit
(merged to 'next' on 2021-09-13 at 14f69ed198)
+ gc: remove unused launchctl_get_uid() call
Code clean-up.
* ab/http-drop-old-curl-plus (2021-09-13) 9 commits
(merged to 'next' on 2021-09-15 at 16aaab36f1)
+ http: don't hardcode the value of CURL_SOCKOPT_OK
+ http: centralize the accounting of libcurl dependencies
+ http: correct curl version check for CURLOPT_PINNEDPUBLICKEY
+ http: correct version check for CURL_HTTP_VERSION_2
+ http: drop support for curl < 7.18.0 (again)
+ Makefile: drop support for curl < 7.9.8 (again)
+ INSTALL: mention that we need libcurl 7.19.4 or newer to build
+ INSTALL: reword and copy-edit the "libcurl" section
+ INSTALL: don't mention the "curl" executable at all
Conditional compilation around versions of libcURL has been
straightened out.
* ab/retire-option-argument (2021-09-12) 4 commits
(merged to 'next' on 2021-09-15 at 0bd7ce1161)
+ parse-options API: remove OPTION_ARGUMENT feature
+ difftool: use run_command() API in run_file_diff()
+ difftool: prepare "diff" cmdline in cmd_difftool()
+ difftool: prepare "struct child_process" in cmd_difftool()
(this branch is used by da/difftool.)
An oddball OPTION_ARGUMENT feature has been removed from the
parse-options API.
* ab/test-tool-run-command-cleanup (2021-09-12) 1 commit
(merged to 'next' on 2021-09-13 at 086310d0f4)
+ test-tool run-command: fix flip-flop init pattern
Code clean-up.
* ab/unused-script-helpers (2021-09-12) 4 commits
(merged to 'next' on 2021-09-15 at 14e6b0f26e)
+ test-lib: remove unused $_x40 and $_z40 variables
+ git-bisect: remove unused SHA-1 $x40 shell variable
+ git-sh-setup: remove unused "pull with rebase" message
+ git-submodule: remove unused is_zero_oid() function
Code clean-up.
* cb/plug-leaks-in-alloca-emu-users (2021-09-16) 2 commits
(merged to 'next' on 2021-09-16 at 2eecae2de3)
+ t0000: avoid masking git exit value through pipes
+ tree-diff: fix leak when not HAVE_ALLOCA_H
Leakfix.
* cb/unix-sockets-with-windows (2021-09-14) 3 commits
(merged to 'next' on 2021-09-16 at e2921332ef)
+ git-compat-util: include declaration for unix sockets in windows
+ credential-cache: check for windows specific errors
+ t0301: fixes for windows compatibility
Adjust credential-cache helper to Windows.
* en/am-abort-fix (2021-09-10) 3 commits
(merged to 'next' on 2021-09-13 at 11f3d2dc90)
+ am: fix incorrect exit status on am fail to abort
+ t4151: add a few am --abort tests
+ git-am.txt: clarify --abort behavior
(this branch is used by en/removing-untracked-fixes.)
When "git am --abort" fails to abort correctly, it still exited
with exit status of 0, which has been corrected.
* en/tests-cleanup-leftover-untracked (2021-09-12) 1 commit
(merged to 'next' on 2021-09-13 at cf38118205)
+ tests: remove leftover untracked files
Test clean-up.
* jk/http-server-protocol-versions (2021-09-10) 5 commits
(merged to 'next' on 2021-09-13 at 9174cd6d37)
+ docs/protocol-v2: point readers transport config discussion
+ docs/git: discuss server-side config for GIT_PROTOCOL
+ docs/http-backend: mention v2 protocol
+ http-backend: handle HTTP_GIT_PROTOCOL CGI variable
+ t5551: test v2-to-v0 http protocol fallback
Taking advantage of the CGI interface, http-backend has been
updated to enable protocol v2 automatically when the other side
asks for it.
* jk/strvec-typefix (2021-09-12) 1 commit
(merged to 'next' on 2021-09-13 at e07858581d)
+ strvec: use size_t to store nr and alloc
Correct nr and alloc members of strvec struct to be of type size_t.
* jt/submodule-name-to-gitdir (2021-09-15) 1 commit
(merged to 'next' on 2021-09-16 at c658fbfdb8)
+ submodule: extract path to submodule gitdir func
Code refactoring.
* kz/revindex-comment-fix (2021-09-15) 1 commit
(merged to 'next' on 2021-09-16 at b4797add3a)
+ pack-revindex.h: correct the time complexity descriptions
Header comment fix.
* ma/doc-git-version (2021-09-14) 1 commit
(merged to 'next' on 2021-09-16 at 54a6a3f8b5)
+ documentation: add documentation for 'git version'
Doc update.
* ma/help-w-check-for-requested-page (2021-09-14) 1 commit
(merged to 'next' on 2021-09-16 at 292dd7174d)
+ help: make sure local html page exists before calling external processes
The error in "git help no-such-git-command" is handled better.
* mr/bisect-in-c-4 (2021-09-13) 6 commits
(merged to 'next' on 2021-09-15 at 2af7f048d4)
+ bisect--helper: retire `--bisect-next-check` subcommand
+ bisect--helper: reimplement `bisect_run` shell function in C
+ bisect--helper: reimplement `bisect_visualize()` shell function in C
+ run-command: make `exists_in_PATH()` non-static
+ t6030-bisect-porcelain: add test for bisect visualize
+ t6030-bisect-porcelain: add tests to control bisect run exit cases
Rewrite of "git bisect" in C continues.
* po/git-config-doc-mentions-help-c (2021-09-13) 1 commit
(merged to 'next' on 2021-09-13 at bddbd5c25d)
+ doc: config, tell readers of `git help --config`
Doc update.
* ps/update-ref-batch-flush (2021-09-15) 2 commits
(merged to 'next' on 2021-09-15 at 39a69141e3)
+ t1400: avoid SIGPIPE race condition on fifo
(merged to 'next' on 2021-09-10 at 4ae19a5f34)
+ update-ref: fix streaming of status updates
"git update-ref --stdin" failed to flush its output as needed,
which potentially led the conversation to a deadlock.
* rs/drop-core-compression-vars (2021-09-12) 1 commit
(merged to 'next' on 2021-09-13 at 3bd06626c3)
+ compression: drop write-only core_compression_* variables
Code clean-up.
* rs/packfile-bad-object-list-in-oidset (2021-09-12) 5 commits
(merged to 'next' on 2021-09-13 at 80e72f5f97)
+ packfile: use oidset for bad objects
+ packfile: convert has_packed_and_bad() to object_id
+ packfile: convert mark_bad_packed_object() to object_id
+ midx: inline nth_midxed_pack_entry()
+ oidset: make oidset_size() an inline function
Replace a handcrafted data structure used to keep track of bad
objects in the packfile API by an oidset.
* rs/use-xopen-in-index-pack (2021-09-10) 1 commit
(merged to 'next' on 2021-09-16 at 186eaaae56)
+ index-pack: use xopen in init_thread
Code clean-up.
--------------------------------------------------
[New Topics]
* ab/make-clean-depend-dirs (2021-09-22) 1 commit
- Makefile: clean .depend dirs under COMPUTE_HEADER_DEPENDENCIES != yes
"make clean" has been updated to remove leftover .depend/
directories, even when it is not told to use them to compute header
dependencies.
Will merge to 'next'.
* bs/ls-files-opt-help-text-update (2021-09-22) 1 commit
- ls-files: use imperative mood for -X and -z option description
Help test for "ls-files" options have been updated.
Will merge to 'next'.
* cb/make-compdb-fix (2021-09-22) 1 commit
- Makefile: avoid breaking compilation database generation with DEVELOPER
Adjust to recent change to use -pedantic for developer builds.
Will merge to 'next'.
* ds/perf-test-built-path-fix (2021-09-22) 1 commit
- t/perf/run: fix bin-wrappers computation
Perf test fix.
Will merge to 'next'.
* gc/doc-first-contribution-reroll (2021-09-22) 1 commit
- MyFirstContribution: Document --range-diff option when writing v2
Doc update.
Will merge to 'next'.
* jk/grep-haystack-is-read-only (2021-09-22) 5 commits
- grep: store grep_source buffer as const
- grep: mark "haystack" buffers as const
- grep: stop modifying buffer in grep_source_1()
- grep: stop modifying buffer in show_line()
- grep: stop modifying buffer in strip_timestamp
(this branch is used by hm/paint-hits-in-log-grep.)
Code clean-up in the "grep" machinery.
Will merge to 'next'.
* jk/http-redact-fix (2021-09-22) 1 commit
- http: match headers case-insensitively when redacting
Sensitive data in the HTTP trace were supposed to be redacted, but
we failed to do so in HTTP/2 requests.
Will merge to 'next'.
* js/win-lazyload-buildfix (2021-09-23) 2 commits
- lazyload.h: use an even more generic function pointer than FARPROC
- lazyload.h: fix warnings about mismatching function pointer types
Compilation fix.
Will merge to 'next'.
* ab/auto-depend-with-pedantic (2021-09-22) 1 commit
- Makefile: make COMPUTE_HEADER_DEPENDENCIES=auto work with DEVOPTS=pedantic
Improve build procedure for developers.
Will merge to 'next'.
* ab/make-sparse-for-real (2021-09-22) 1 commit
- Makefile: make the "sparse" target non-.PHONY
Prevent "make sparse" from running for the source files that
haven't been modified.
* bs/difftool-msg-tweak (2021-09-22) 1 commit
- difftool: fix word spacing in the usage strings
Message tweak.
Will merge to 'next'.
* ew/midx-doc-update (2021-09-23) 1 commit
- doc/technical: update note about core.multiPackIndex
Doc tweak.
Will merge to 'next'.
* jt/no-abuse-alternate-odb-for-submodules (2021-09-22) 10 commits
- submodule: trace adding submodule ODB as alternate
- refs: change refs_for_each_ref_in() to take repo
- submodule: pass repo to check_has_commit()
- object-file: only register submodule ODB if needed
- merge-{ort,recursive}: remove add_submodule_odb()
- refs: teach refs_for_each_ref() arbitrary repos
- refs iterator: support non-the_repository advance
- refs: add repo paramater to _iterator_peel()
- refs: make _advance() check struct repo, not flag
- Merge branch 'jt/add-submodule-odb-clean-up' into jt/no-abuse-alternate-odb-for-submodules
(this branch uses jt/add-submodule-odb-clean-up.)
Follow through the work to use the repo interface to access
submodule objects in-process, instead of abusing the alternate
object database interface.
* tp/send-email-completion (2021-09-22) 3 commits
- send-email docs: add format-patch options
- send-email: move bash completions to core script
- send-email: terminate --git-completion-helper with LF
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.
* hm/paint-hits-in-log-grep (2021-09-23) 3 commits
- pretty: colorize pattern matches in commit messages
- grep: refactor next_match() and match_one_pattern() for external use
- Merge branch 'jk/grep-haystack-is-read-only' into hm/paint-hits-in-log-grep
(this branch uses jk/grep-haystack-is-read-only.)
"git log --grep=string --author=name" learns to highlight hits just
like "git grep string" does.
--------------------------------------------------
[Stalled]
* ab/pack-objects-stdin (2021-07-09) 5 commits
- pack-objects.c: make use of REV_INFO_STDIN_LINE_PROCESS
- pack-objects.c: do stdin parsing via revision.c's API
- revision.[ch]: add a "handle_stdin_line" API
- revision.h: refactor "disable_stdin" and "read_from_stdin"
- upload-pack: run is_repository_shallow() before setup_revisions()
Introduce handle_stdin_line callback to revision API and uses it.
Expecting a reroll.
* es/superproject-aware-submodules (2021-08-19) 5 commits
. fixup! introduce submodule.superprojectGitDir record
. 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).
Kicked out of 'seen' tentatively to see how well a conflicting
ar/submodule-update topic fares.
* ab/fsck-unexpected-type (2021-09-22) 17 commits
- fsck: report invalid object type-path combinations
- fsck: don't hard die on invalid object types
- object-file.c: stop dying in parse_loose_header()
- object-file.c: return ULHR_TOO_LONG on "header too long"
- object-file.c: use "enum" return type for unpack_loose_header()
- object-file.c: simplify unpack_loose_short_header()
- object-file.c: make parse_loose_header_extended() public
- object-file.c: return -1, not "status" from unpack_loose_header()
- object-file.c: don't set "typep" when returning non-zero
- cat-file tests: test for current --allow-unknown-type behavior
- cat-file tests: add corrupt loose object test
- cat-file tests: test for missing/bogus object with -t, -s and -p
- cat-file tests: move bogus_* variable declarations earlier
- fsck tests: test for garbage appended to a loose object
- fsck tests: test current hash/type mismatch behavior
- fsck tests: refactor one test to use a sub-repo
- fsck tests: add test for fsck-ing an unknown type
"git fsck" has been taught to report mismatch between expected and
actual types of an object better.
Needs review.
--------------------------------------------------
[Cooking]
* ab/repo-settings-cleanup (2021-09-22) 5 commits
- repository.h: don't use a mix of int and bitfields
- repo-settings.c: simplify the setup
- read-cache & fetch-negotiator: check "enum" values in switch()
- environment.c: remove test-specific "ignore_untracked..." variable
- wrapper.c: add x{un,}setenv(), and use xsetenv() in environment.c
Code cleanup.
Will merge to 'next'.
* ah/connect-parse-feature-v0-fix (2021-09-23) 1 commit
- connect: also update offset for features without values
Protocol v0 clients can get stuck parsing a malformed feature line.
Will merge to 'next'.
* ah/unreak-revisions (2021-09-20) 2 commits
- log: UNLEAK original pending objects
- log: UNLEAK rev to silence a large number of leaks
Mark a few structures with UNLEAK() to help leak detection CI jobs.
Will merge to 'next'.
* ar/submodule-update (2021-09-20) 8 commits
- submodule--helper: rename helper functions
- submodule--helper: remove unused helpers
- submodule--helper: remove update-clone subcommand
- submodule: move core cmd_update() logic to C
- submodule--helper: refactor get_submodule_displaypath()
- submodule--helper: rename helpers for update-clone
- submodule--helper: get remote names from any repository
- submodule--helper: split up ensure_core_worktree()
Rewrite of "git submodule update" in C.
Expecting a reroll.
Stomps on a handful of other topics and comes with an overly large step.
* da/difftool (2021-09-23) 4 commits
- difftool: add a missing space to the run_dir_diff() comments
- difftool: create a tmpdir path without repeated slashes
- Merge branch 'da/difftool-dir-diff-symlink-fix' into da/difftool
- Merge branch 'ab/retire-option-argument' into da/difftool
(this branch uses da/difftool-dir-diff-symlink-fix.)
Code clean-up in "git difftool".
Will merge to 'next'?
* da/difftool-dir-diff-symlink-fix (2021-09-23) 1 commit
- difftool: fix symlink-file writing in dir-diff mode
(this branch is used by da/difftool.)
"git difftool --dir-diff" mishandled symbolic links.
Will merge to 'next'.
* en/removing-untracked-fixes (2021-09-20) 7 commits
- Documentation: call out commands that nuke untracked files/directories
- Comment important codepaths regarding nuking untracked files/dirs
- unpack-trees: avoid nuking untracked dir in way of locally deleted file
- unpack-trees: avoid nuking untracked dir in way of unmerged file
- Split unpack_trees 'reset' flag into two for untracked handling
- t2500: add various tests for nuking untracked files
- Merge branch 'en/am-abort-fix' into en/removing-untracked-fixes
Various fixes in code paths that move untracked files away to make room.
* en/typofixes (2021-09-20) 2 commits
(merged to 'next' on 2021-09-20 at 48648dafa3)
+ merge-ort: fix completely wrong comment
+ trace2.h: fix trivial comment typo
Typofixes.
Will merge to 'master'.
* ks/submodule-add-message-fix (2021-09-20) 1 commit
- submodule--helper: fix incorrect newlines in an error message
Message regression fix.
Will merge to 'next'.
* tb/commit-graph-usage-fix (2021-09-22) 2 commits
- builtin/multi-pack-index.c: disable top-level --[no-]progress
- builtin/commit-graph.c: don't accept common --[no-]progress
Regression fix for "git commit-graph" command line parsing.
Will merge to 'next'.
* ws/refer-to-forkpoint-config-in-rebase-doc (2021-09-20) 1 commit
- Document `rebase.forkpoint` in rebase man page
Doc update.
Will merge to 'next'?
* jk/clone-unborn-head-in-bare (2021-09-20) 1 commit
(merged to 'next' on 2021-09-20 at 93c93b8d51)
+ clone: handle unborn branch in bare repos
"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.
Will merge to 'master'.
* jk/reduce-malloc-in-v2-servers (2021-09-15) 12 commits
(merged to 'next' on 2021-09-16 at 40cfe41efc)
+ ls-refs: reject unknown arguments
+ serve: reject commands used as capabilities
+ serve: reject bogus v2 "command=ls-refs=foo"
+ docs/protocol-v2: clarify some ls-refs ref-prefix details
+ ls-refs: ignore very long ref-prefix counts
+ serve: drop "keys" strvec
+ serve: provide "receive" function for session-id capability
+ serve: provide "receive" function for object-format capability
+ serve: add "receive" method for v2 capabilities table
+ serve: return capability "value" from get_capability()
+ serve: rename is_command() to parse_command()
+ Merge branch 'ab/serve-cleanup' into jk/reduce-malloc-in-v2-servers
Code cleanup to limit memory consumption and tighten protocol
message parsing.
Will merge to 'master'.
* ns/batched-fsync (2021-09-22) 6 commits
- core.fsyncobjectfiles: performance tests for add and stash
- core.fsyncobjectfiles: tests for batch mode
- update-index: use the bulk-checkin infrastructure
- core.fsyncobjectfiles: add windows support for batch mode
- core.fsyncobjectfiles: batched disk flushes
- bulk-checkin: rename 'state' variable and separate 'plugged' boolean
The "core.fsyncobjectfiles" configuration variable can now be set
to "batch" for improved performance.
* jh/builtin-fsmonitor-part1 (2021-09-20) 7 commits
- t/helper/simple-ipc: convert test-simple-ipc to use start_bg_command
- run-command: create start_bg_command
- simple-ipc/ipc-win32: add Windows ACL to named pipe
- simple-ipc/ipc-win32: add trace2 debugging
- simple-ipc: move definition of ipc_active_state outside of ifdef
- simple-ipc: preparations for supporting binary messages.
- trace2: add trace2_child_ready() to report on background children
Built-in fsmonitor (part 1).
* cb/cvsserver (2021-09-16) 3 commits
(merged to 'next' on 2021-09-23 at 98f5f3f9cf)
+ Documentation: cleanup git-cvsserver
+ git-cvsserver: protect against NULL in crypt(3)
+ git-cvsserver: use crypt correctly to compare password hashes
"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).
Will merge to 'master'.
* cb/unicode-14 (2021-09-17) 1 commit
(merged to 'next' on 2021-09-20 at 7873b310ad)
+ unicode: update the width tables to Unicode 14
The unicode character width table (used for output alignment) has
been updated.
Will merge to 'master'.
* ab/align-parse-options-help (2021-09-22) 4 commits
- parse-options: properly align continued usage output
- git rev-parse --parseopt tests: add more usagestr tests
- send-pack: properly use parse_options() API for usage string
- parse-options API users: align usage output in C-strings
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.
Will merge to 'next'?
* ab/help-config-vars (2021-09-23) 9 commits
- help: move column config discovery to help.c library
- help / completion: make "git help" do the hard work
- help tests: test --config-for-completion option & output
- help: simplify by moving to OPT_CMDMODE()
- help: correct logic error in combining --all and --guides
- help: correct logic error in combining --all and --config
- help tests: add test for --config output
- help: correct usage & behavior of "git help --guides"
- help: correct the usage string in -h and documentation
Teach "git help -c" into helping the command line completion of
configuration variables.
Will merge to 'next'?
* tb/repack-write-midx (2021-09-16) 8 commits
- builtin/repack.c: pass `--refs-snapshot` when writing bitmaps
- builtin/repack.c: make largest pack preferred
- builtin/repack.c: support writing a MIDX while repacking
- builtin/repack.c: extract showing progress to a variable
- builtin/repack.c: keep track of existing packs unconditionally
- midx: preliminary support for `--refs-snapshot`
- builtin/multi-pack-index.c: support `--stdin-packs` mode
- midx: expose `write_midx_file_only()` publicly
"git repack" has been taught to generate multi-pack reachability
bitmaps.
Will merge to 'next'?
* ds/add-rm-with-sparse-index (2021-09-22) 14 commits
- advice: update message to suggest '--sparse'
- mv: refuse to move sparse paths
- rm: skip sparse paths with missing SKIP_WORKTREE
- rm: add --sparse option
- add: update --renormalize to skip sparse paths
- add: update --chmod to skip sparse paths
- add: implement the --sparse option
- add: skip tracked paths outside sparse-checkout cone
- add: fail when adding an untracked sparse file
- dir: fix pattern matching on dirs
- dir: select directories correctly
- dir: extract directory-matching logic
- t1092: behavior for adding sparse files
- t3705: test that 'sparse_entry' is unstaged
"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.
* tb/midx-write-propagate-namehash (2021-09-17) 7 commits
- t5326: test propagating hashcache values
- p5326: generate pack bitmaps before writing the MIDX bitmap
- p5326: don't set core.multiPackIndex unnecessarily
- p5326: create missing 'perf-tag' tag
- midx.c: respect 'pack.writeBitmapHashcache' when writing bitmaps
- pack-bitmap.c: propagate namehash values from existing bitmaps
- t/helper/test-bitmap.c: add 'dump-hashes' mode
"git multi-pack-index write --bitmap" learns to propagate the
hashcache from original bitmap to resulting bitmap.
Will merge to 'next'?
* pw/rebase-of-a-tag-fix (2021-09-22) 10 commits
- rebase: dereference tags
- rebase: use lookup_commit_reference_by_name()
- rebase: use our standard error return value
- t3407: rework rebase --quit tests
- t3407: strengthen rebase --abort tests
- t3407: use test_path_is_missing
- t3407: rename a variable
- t3407: use test_cmp_rev
- t3407: use test_commit
- t3407: run tests in $TEST_DIRECTORY
"git rebase <upstream> <tag>" failed when aborted in the middle, as
it mistakenly tried to write the tag object instead of peeling it
to HEAD.
Will merge to 'next'?
* en/zdiff3 (2021-09-20) 2 commits
- update documentation for new zdiff3 conflictStyle
- xdiff: implement a zealous diff3, or "zdiff3"
"Zealous diff3" style of merge conflict presentation has been added.
* en/stash-df-fix (2021-09-10) 3 commits
(merged to 'next' on 2021-09-20 at 513c11fb11)
+ stash: restore untracked files AFTER restoring tracked files
+ stash: avoid feeding directories to update-index
+ t3903: document a pair of directory/file bugs
Fix "git stash" corner case where the tentative change involves
changing a directory to a file (or vice versa).
Will merge to 'master'.
* jt/add-submodule-odb-clean-up (2021-09-09) 3 commits
- revision: remove "submodule" from opt struct
- repository: support unabsorbed in repo_submodule_init
- submodule: remove unnecessary unabsorbed fallback
(this branch is used by jt/no-abuse-alternate-odb-for-submodules.)
More code paths that uses the hack to add submodule's object
database to the set of alternate object store have been cleaned up.
Will merge to 'next'.
* jx/ci-l10n (2021-09-09) 1 commit
(merged to 'next' on 2021-09-23 at b2d7f5eecb)
+ ci: new github-action for git-l10n code review
CI help for l10n.
Will merge to 'master'.
* js/scalar (2021-09-14) 15 commits
- scalar: accept -C and -c options before the subcommand
- scalar: implement the `version` command
- scalar: implement the `delete` command
- scalar: teach 'reconfigure' to optionally handle all registered enlistments
- scalar: allow reconfiguring an existing enlistment
- scalar: implement the `run` command
- scalar: teach 'clone' to support the --single-branch option
- scalar: implement the `clone` subcommand
- scalar: implement 'scalar list'
- scalar: let 'unregister' handle a deleted enlistment directory gracefully
- scalar: 'unregister' stops background maintenance
- scalar: 'register' sets recommended config and starts maintenance
- scalar: create test infrastructure
- scalar: start documenting the command
- scalar: create a rudimentary executable
Add pieces from "scalar" to contrib/.
* ab/sanitize-leak-ci (2021-09-23) 2 commits
- tests: add a test mode for SANITIZE=leak, run it in CI
- Makefile: add SANITIZE=leak flag to GIT-BUILD-OPTIONS
CI learns to run the leak sanitizer builds.
Will merge to 'next'?
* ms/customizable-ident-expansion (2021-09-01) 1 commit
- keyword expansion: make "$Id$" string configurable
Instead of "$Id$", user-specified string (like $FreeBSD$) can be
used as an in-blob placeholder for keyword expansion.
* js/retire-preserve-merges (2021-09-07) 11 commits
(merged to 'next' on 2021-09-10 at f645ffd7a3)
+ sequencer: restrict scope of a formerly public function
+ rebase: remove a no-longer-used function
+ rebase: stop mentioning the -p option in comments
+ rebase: remove obsolete code comment
+ rebase: drop the internal `rebase--interactive` command
+ git-svn: drop support for `--preserve-merges`
+ rebase: drop support for `--preserve-merges`
+ pull: remove support for `--rebase=preserve`
+ tests: stop testing `git rebase --preserve-merges`
+ remote: warn about unhandled branch.<name>.rebase values
+ t5520: do not use `pull.rebase=preserve`
The "--preserve-merges" option of "git rebase" has been removed.
Will cook in 'next'.
* en/remerge-diff (2021-08-31) 7 commits
- doc/diff-options: explain the new --remerge-diff option
- show, log: provide a --remerge-diff capability
- tmp-objdir: new API for creating and removing primary object dirs
- merge-ort: capture and print ll-merge warnings in our preferred fashion
- ll-merge: add API for capturing warnings in a strbuf instead of stderr
- merge-ort: add ability to record conflict messages in a file
- merge-ort: mark a few more conflict messages as omittable
A new presentation for two-parent merge "--remerge-diff" can be
used to show the difference between mechanical (and possibly
conflicted) merge results and the recorded resolution.
* sg/test-split-index-fix (2021-09-07) 7 commits
- read-cache: fix GIT_TEST_SPLIT_INDEX
- tests: disable GIT_TEST_SPLIT_INDEX for sparse index tests
- read-cache: look for shared index files next to the index, too
- t1600-index: disable GIT_TEST_SPLIT_INDEX
- t1600-index: don't run git commands upstream of a pipe
- t1600-index: remove unnecessary redirection
- Merge branch 'ds/sparse-index-ignored-files' into sg/test-split-index-fix
Test updates.
Will merge to 'next'?
* ab/refs-errno-cleanup (2021-08-25) 4 commits
- refs: make errno output explicit for refs_resolve_ref_unsafe
- refs: explicitly return failure_errno from parse_loose_ref_contents
- branch tests: test for errno propagating on failing read
- refs: add failure_errno to refs_read_raw_ref() signature
(this branch uses ab/refs-files-cleanup and hn/refs-errno-cleanup.)
The "remainder" of hn/refs-errno-cleanup topic.
* ab/lib-subtest (2021-09-22) 9 commits
- test-lib tests: get rid of copy/pasted mock test code
- test-lib tests: assert 1 exit code, not non-zero
- test-lib tests: refactor common part of check_sub_test_lib_test*()
- test-lib tests: avoid subshell for "test_cmp" for readability
- test-lib tests: don't provide a description for the sub-tests
- test-lib tests: split up "write and run" into two functions
- test-lib tests: move "run_sub_test" to a new lib-subtest.sh
- Merge branch 'ps/t0000-output-directory-fix' into ab/lib-subtest
- Merge branch 'jk/t0000-subtests-fix' into ab/lib-subtest
Updates to the tests in t0000 to test the test framework.
* ab/only-single-progress-at-once (2021-09-22) 8 commits
- progress.c: add & assert a "global_progress" variable
- pack-bitmap-write.c: add a missing stop_progress()
- progress.c: add temporary variable from progress struct
- progress.c: stop eagerly fflush(stderr) when not a terminal
- progress.c: call progress_interval() from progress_test_force_update()
- progress.c: move signal handler functions lower
- progress.c tests: test some invalid usage
- progress.c tests: make start/stop verbs on stdin
Further tweaks on progress API.
* fs/ssh-signing (2021-09-10) 9 commits
- ssh signing: test that gpg fails for unknown keys
- ssh signing: tests for logs, tags & push certs
- ssh signing: duplicate t7510 tests for commits
- ssh signing: verify signatures using ssh-keygen
- ssh signing: provide a textual signing_key_id
- ssh signing: retrieve a default key from ssh-agent
- ssh signing: add ssh key format and signing code
- ssh signing: add test prereqs
- ssh signing: preliminary refactoring and clean-up
Use ssh public crypto for object and push-cert signing.
On hold.
cf. <pull.1041.v8.git.git.1631304462.gitgitgadget@gmail.com>
cf. <532d97e7-8c91-df6a-6d90-70668256f513@gigacodes.de>
* cf/fetch-set-upstream-while-detached (2021-07-06) 1 commit
- fetch: fix segfault on --set-upstream while on a detached HEAD
"git fetch --set-upstream" while on detached HEAD segfaulted
instead of noticing that such an operation did not make sense.
Expecting a reroll.
cf. <xmqqsg0ri5mq.fsf@gitster.g>
* pw/diff-color-moved-fix (2021-08-05) 13 commits
- diff: drop unused options parameter from cmp_in_block_with_wsd()
- diff --color-moved: intern strings
- diff: use designated initializers for emitted_diff_symbol
- diff --color-moved-ws=allow-indentation-change: improve hash lookups
- diff --color-moved: stop clearing potential moved blocks
- diff --color-moved: shrink potential moved blocks as we go
- diff --color-moved: unify moved block growth functions
- diff --color-moved: call comparison function directly
- diff --color-moved-ws=allow-indentation-change: simplify and optimize
- diff: simplify allow-indentation-change delta calculation
- diff --color-moved: avoid false short line matches and bad zerba coloring
- diff --color-moved=zebra: fix alternate coloring
- diff --color-moved: add perf tests
Originally merged to 'next' on 2021-08-05
Long-overdue correctness and performance update to "diff
--color-moved" feature.
Expecting a reroll.
cf. <8bec1a6d-5052-50c3-4100-e6348289d581@gmail.com>
* hn/reftable (2021-09-10) 20 commits
- fixup! reftable: implement stack, a mutable database of reftable files.
- Add "test-tool dump-reftable" command.
- reftable: add dump utility
- reftable: implement stack, a mutable database of reftable files.
- reftable: implement refname validation
- reftable: add merged table view
- reftable: add a heap-based priority queue for reftable records
- reftable: reftable file level tests
- reftable: read reftable files
- reftable: generic interface to tables
- reftable: write reftable files
- reftable: a generic binary tree implementation
- reftable: reading/writing blocks
- Provide zlib's uncompress2 from compat/zlib-compat.c
- 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: RFC: add LICENSE
- hash.h: provide constants for the hash IDs
The "reftable" backend for the refs API, without integrating into
the refs subsystem.
Will merge to 'next'?
* ab/refs-files-cleanup (2021-08-25) 13 commits
(merged to 'next' on 2021-09-23 at eb5668523f)
+ refs/files: remove unused "errno != ENOTDIR" condition
+ refs/files: remove unused "errno == EISDIR" code
+ refs/files: remove unused "oid" in lock_ref_oid_basic()
+ refs API: remove OID argument to reflog_expire()
+ reflog expire: don't lock reflogs using previously seen OID
+ refs/files: add a comment about refs_reflog_exists() call
+ refs: make repo_dwim_log() accept a NULL oid
+ refs/debug: re-indent argument list for "prepare"
+ refs/files: remove unused "skip" in lock_raw_ref() too
+ refs/files: remove unused "extras/skip" in lock_ref_oid_basic()
+ refs: drop unused "flags" parameter to lock_ref_oid_basic()
+ refs/files: remove unused REF_DELETING in lock_ref_oid_basic()
+ refs/packet: add missing BUG() invocations to reflog callbacks
(this branch is used by ab/refs-errno-cleanup and hn/refs-errno-cleanup.)
Continued work on top of the hn/refs-errno-cleanup topic.
Will merge to 'master'.
* hn/refs-errno-cleanup (2021-08-25) 4 commits
(merged to 'next' on 2021-09-23 at 502e6b6b08)
+ refs: make errno output explicit for read_raw_ref_fn
+ refs/files-backend: stop setting errno from lock_ref_oid_basic
+ refs: remove EINVAL errno output from specification of read_raw_ref_fn
+ refs file backend: move raceproof_create_file() here
(this branch is used by ab/refs-errno-cleanup; uses ab/refs-files-cleanup.)
Futz with the way 'errno' is relied on in the refs API to carry the
failure modes up the call chain.
Will merge to 'master'.
--------------------------------------------------
[Discarded]
* ao/p4-avoid-decoding (2021-04-12) 2 commits
. git-p4: do not decode data from perforce by default
. git-p4: avoid decoding more data from perforce
"git p4" in Python-2 days used to accept a lot more kinds of data
from Perforce server as uninterrupted byte sequence, but after
switching to Python-3, too many things are expected to be in UTF-8,
which broke traditional use cases.
Have been stalled for too long.
cf. <20210504220153.1d9f0cb2@ado-tr>
* tv/p4-fallback-encoding (2021-04-30) 1 commit
. git-p4: git-p4.fallbackEncoding to specify non UTF-8 charset
"git p4" learns the fallbackEncoding configuration variable to
safely accept changeset descriptions that aren't written in UTF-8.
Have been stalled for too long.
cf. <CAKu1iLUaLuAZWqjNK4tfhhR=YaSt4MdQ+90ZY-JcEh_SeHyYCw@mail.gmail.com>
* jh/builtin-fsmonitor (2021-09-03) 37 commits
. fixup! fsmonitor--daemon: implement handle_client callback
. SQUASH??? https://github.com/git/git/runs/3438543601?check_suite_focus=true#step:5:136
. BANDAID: sparse fixes
. t7527: test FS event reporing on MacOS WRT case and Unicode
. fsmonitor: handle shortname for .git
. t7527: test status with untracked-cache and fsmonitor--daemon
. fsmonitor: force update index after large responses
. fsmonitor: enhance existing comments
. fsmonitor--daemon: use a cookie file to sync with file system
. fsmonitor--daemon: periodically truncate list of modified files
. t7527: create test for fsmonitor--daemon
. t/perf/p7519: add fsmonitor--daemon test cases
. t/perf: avoid copying builtin fsmonitor files into test repo
. t/perf/p7519: speed up test using "test-tool touch"
. t/helper/test-touch: add helper to touch a series of files
. fsmonitor--daemon: implement handle_client callback
. fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS
. fsmonitor-fs-listen-macos: add macos header files for FSEvent
. fsmonitor-fs-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: do not try to operate on bare repos
. fsmonitor--daemon: implement 'start' command
. fsmonitor--daemon: implement 'run' command
. fsmonitor-fs-listen-macos: stub in backend for MacOS
. fsmonitor-fs-listen-win32: stub in backend for Windows
. t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
. fsmonitor--daemon: implement 'stop' and 'status' commands
. fsmonitor--daemon: add a built-in fsmonitor daemon
. fsmonitor: use IPC to query the builtin FSMonitor daemon
. fsmonitor: config settings are repository-specific
. help: include fsmonitor--daemon feature flag in version info
. fsmonitor-ipc: create client routines for git-fsmonitor--daemon
. fsmonitor--daemon: update fsmonitor documentation
. fsmonitor--daemon: man page
. simple-ipc: preparations for supporting binary messages.
An attempt to write and ship with a watchman equivalent tailored
for our use.
Will be rerolled in pieces.
* ab/config-based-hooks-base (2021-09-09) 36 commits
. hooks: fix a TOCTOU in "did we run a hook?" heuristic
. receive-pack: convert receive hooks to hook.h
. post-update: use hook.h library
. receive-pack: convert 'update' hook to hook.h
. hooks: allow callers to capture output
. run-command: allow capturing of collated output
. reference-transaction: use hook.h to run hooks
. hook tests: use a modern style for "pre-push" tests
. hook tests: test for exact "pre-push" hook input
. transport: convert pre-push hook to hook.h
. hook: convert 'post-rewrite' hook in sequencer.c to hook.h
. hook: provide stdin by string_list or callback
. run-command: add stdin callback for parallelization
. am: convert 'post-rewrite' hook to hook.h
. hook: support passing stdin to hooks
. run-command: allow stdin for run_processes_parallel
. run-command: remove old run_hook_{le,ve}() hook API
. receive-pack: convert push-to-checkout hook to hook.h
. read-cache: convert post-index-change to use hook.h
. commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
. git-p4: use 'git hook' to run hooks
. send-email: use 'git hook run' for 'sendemail-validate'
. git hook run: add an --ignore-missing flag
. merge: convert post-merge to use hook.h
. hooks: convert 'post-checkout' hook to hook library
. am: convert applypatch to use hook.h
. rebase: convert pre-rebase to use hook.h
. gc: use hook library for pre-auto-gc hook
. hook: add 'run' subcommand
. hook-list.h: add a generated list of hooks, like config-list.h
. hook.c users: use "hook_exists()" instead of "find_hook()"
. hook.c: add a hook_exists() wrapper and use it in bugreport.c
. hook.[ch]: move find_hook() from run-command.c to hook.c
. Makefile: remove an out-of-date comment
. Makefile: stop hardcoding {command,config}-list.h
. Makefile: mark "check" target as .PHONY
(this branch is used by es/config-based-hooks.)
Restructuring of (a subset of) Emily's config-based-hooks series,
to demonstrate that a series can be presented as a more logical and
focused progression.
Will be rerolled in pieces.
* es/config-based-hooks (2021-09-09) 6 commits
. hook: allow out-of-repo 'git hook' invocations
. hook: include hooks from the config
. hook: introduce "git hook list"
. hook: allow parallel hook execution
. fixup! hook: run a list of hooks instead
. hook: run a list of hooks instead
(this branch uses ab/config-based-hooks-base.)
Revamp the hooks subsystem to allow multiple of them to trigger
upon the same event and control via the configuration variables.
^ permalink raw reply [relevance 2%]
* [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.32.0
@ 2021-06-06 12:40 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-06-06 12:40 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.32.0 is now available at the
usual places. It is comprised of 617 non-merge commits since
v2.31.0, contributed by 100 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.32.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.31.0 are as
follows. Welcome to the Git development community!
Adam Sharafeddine, Alexey Roslyakov, Andrey Bienkowski,
Atharva Raykar, Bruno Albuquerque, Chinmoy Chakraborty,
Christopher Schenk, Dan Moseley, David Emett, Dmitry Torilov,
Fabien Terrani, Firmin Martin, Georgios Kontaxis, Jason Gore,
Jerry Zhang, Joachim Kuebart, Joseph Vusich, Josh Soref,
Julien Richard, Li Linchao, Louis Sautier, Luke Shumaker,
Matheus Tavares Bernardino, Nicholas Clark, Peter Oliver,
Renato Botelho, rlespinasse, Robert Foss, RyotaK, Sardorbek
Imomaliev, Tom Saeger, Vincent Tam, Will Chandler, Wolfgang
Müller, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Shopov,
Alex Henrie, Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian
m. carlson, Charvi Mendiratta, Christian Couder, Christopher Diaz
Riveros, Daniel Santos, David Aguilar, Dennis Ameling, Denton
Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
Emir Sarı, Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin,
Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes
Schindelin, Johannes Sixt, John Szakmeister, Jonathan Nieder,
Jonathan Tan, Jordi Mas, Junio C Hamano, Kyle Meyer, Lénaïc
Huard, Luke Diamand, Marc Branchaud, Martin Ågren, Matheus
Tavares, Matthias Rüster, Nguyễn Thái Ngọc Duy, Nipunn
Koorapati, Øystein Walle, Patrick Steinhardt, Peter Krefting,
Phillip Wood, Rafael Silva, Ralf Thielow, Ramkumar Ramachandra,
Ramsay Jones, Randall S. Becker, René Scharfe, Sergey Organov,
Shubham Verma, Son Luong Ngoc, SZEDER Gábor, Taylor Blau,
Todd Zullinger, Torsten Bögershausen, Trần Ngọc Quân,
Trygve Aaberge, Ville Skyttä, Yi-Jyun Pan, 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.32 Release Notes
======================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* "git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
(merge b548f0f156 en/dir-traversal later to maint).
* The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
* The bash prompt script (in contrib/) did not work under "set -u".
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
* The "chainlint" feature in the test framework is a handy way to
catch common mistakes in writing new tests, but tends to get
expensive. An knob to selectively disable it has been introduced
to help running tests that the developer has not modified.
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
* The "rev-parse" command did not diagnose the lack of argument to
"--path-format" option, which was introduced in v2.31 era, which
has been corrected.
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (2):
merge-ort: split "distinct types" message into two translatable messages
l10n: Update Catalan translation
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5204t)
Alexey Roslyakov (1):
l10n: ru.po: fix typo in Russian translation
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (6):
INSTALL: note on using Asciidoctor to build doc
l10n: id: po-id for 2.32.0 (round 1)
l10n: README: document git-po-helper
l10n: README: document "core translation"
l10n: README: document l10n conventions
l10n: README: note on fuzzy translations
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Diaz Riveros (1):
l10n: es: 2.32.0 round 1
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
Daniel Santos (2):
l10n: pt_PT: add Portuguese translations part 2
l10n: pt_PT: add Portuguese translations part 3
David Aguilar (1):
contrib/completion: fix zsh completion regression from 59d85a2a05
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (14):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
stash show: use stash.showIncludeUntracked even when diff options given
Derrick Stolee (58):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
dir: update stale description of treat_directory()
sparse-index: fix uninitialized jump
t1092: use GIT_PROGRESS_DELAY for consistent results
dir: update stale description of treat_directory()
Elijah Newren (50):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
dir: convert trace calls to trace2 equivalents
dir: report number of visited directories and paths with trace2
ls-files: error out on -i unless -o or -c are specified
t7300: add testcase showing unnecessary traversal into ignored directory
t3001, t7300: add testcase showcasing missed directory traversal
dir: avoid unnecessary traversal into ignored directory
dir: traverse into untracked directories if they may have ignored subfiles
dir: introduce readdir_skip_dot_and_dotdot() helper
git-prompt: work under set -u
dir: introduce readdir_skip_dot_and_dotdot() helper
Emir Sarı (1):
l10n: tr: v2.32.0-r1
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Eric Wong (1):
remote-curl: fix clone on sha256 repos
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jean-Noël Avila (1):
l10n: fr: v2.32.0 round 1
Jeff Hostetler (14):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
simple-ipc: correct ifdefs when NO_PTHREADS is defined
Jeff King (43):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
t: avoid sed-based chain-linting in some expensive cases
t5551: test http interaction with credential helpers
Revert "remote-curl: fall back to basic auth if Negotiate fails"
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Jiang Xin (4):
l10n: git.pot: v2.32.0 round 1 (126 new, 26 removed)
l10n: fix typos in po/TEAMS
l10n: README: add file extention ".md"
l10n: zh_CN: for git v2.32.0 l10n round 1
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
Johannes Sixt (1):
t9001-send-email.sh: fix expected absolute paths on Windows
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Jordi Mas (1):
l10n: Update Catalan translation
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (34):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
A handful more topics before -rc1
Git 2.32-rc1
t1092: revert the "-1" hack for emulating "no progress meter"
Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
Revert "dir: update stale description of treat_directory()"
Git 2.32-rc2
Git 2.32-rc3
fsync(): be prepared to see EINTR
Git 2.32
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (32):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
checkout-index: add parallel checkout support
parallel-checkout: add tests related to .gitattributes
parallel-checkout: add tests for basic operations
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
init: fix bug regarding ~/ expansion in init.templateDir
t2080: fix cp invocation to copy symlinks instead of following them
Matthias Rüster (1):
l10n: de.po: Update German translation for Git v2.32.0
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5204t0f0u)
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (13):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
parallel-checkout: avoid dash local bug in tests
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Todd Zullinger (1):
t7500: remove non-existant C_LOCALE_OUTPUT prereq
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Trần Ngọc Quân (1):
l10n: vi.po(5204t): Updated Vietnamese translation for v2.32.0
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Vincent Tam (1):
l10n: fr.po fixed inconsistencies
Will Chandler (1):
refs: cleanup directories when deleting packed ref
Wolfgang Müller (1):
rev-parse: fix segfault with missing --path-format argument
Yi-Jyun Pan (2):
l10n: zh_TW.po: v2.32.0 round 1 (11 untranslated)
l10n: zh_TW.po: localized
ZheNing Hu (8):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
ref-filter: fix read invalid union member bug
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
rlespinasse (1):
l10n: fr: fixed inconsistencies
Ævar Arnfjörð Bjarmason (97):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Makefile: don't re-define PERL_DEFINES
Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
perl: use mock i18n functions under NO_GETTEXT=Y
Makefile: make PERL_DEFINES recursively expanded
send-email: fix missing error message regression
send-email: don't needlessly abs_path() the core.hooksPath
send-email: move "hooks_path" invocation to git-send-email.perl
pack-objects: move static inline from a header to the sole consumer
builtin/fsck.c: don't conflate "int" and "enum" in callback
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.32.0-rc3
@ 2021-06-02 8:29 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-06-02 8:29 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.32.0-rc3 is now available for testing at
the usual places. It is comprised of 589 non-merge commits since
v2.31.0, contributed by 84 people, 31 of which are new faces [*].
A couple of small last-minute regression fixes are in, relative to
the previouss release candidate. Hopefully we can tag the final
this weekend.
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.32.0-rc3' 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.31.0 are as follows.
Welcome to the Git development community!
Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrzej
Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson, Charvi
Mendiratta, Christian Couder, David Aguilar, Dennis Ameling,
Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin,
Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
John Szakmeister, Jonathan Nieder, Jonathan Tan, Junio C Hamano,
Kyle Meyer, Lénaïc Huard, Luke Diamand, Marc Branchaud,
Martin Ågren, Matheus Tavares, Nguyễn Thái Ngọc Duy,
Nipunn Koorapati, Øystein Walle, Patrick Steinhardt, Phillip
Wood, Rafael Silva, Ramkumar Ramachandra, Ramsay Jones, Randall
S. Becker, René Scharfe, Sergey Organov, Shubham Verma, Son
Luong Ngoc, SZEDER Gábor, Taylor Blau, Todd Zullinger, Torsten
Bögershausen, Trygve Aaberge, Ville Skyttä, and ZheNing Hu.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* "git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
(merge b548f0f156 en/dir-traversal later to maint).
* The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
* The bash prompt script (in contrib/) did not work under "set -u".
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
* The "chainlint" feature in the test framework is a handy way to
catch common mistakes in writing new tests, but tends to get
expensive. An knob to selectively disable it has been introduced
to help running tests that the developer has not modified.
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
* The "rev-parse" command did not diagnose the lack of argument to
"--path-format" option, which was introduced in v2.31 era, which
has been corrected.
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (1):
merge-ort: split "distinct types" message into two translatable messages
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (1):
INSTALL: note on using Asciidoctor to build doc
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
David Aguilar (1):
contrib/completion: fix zsh completion regression from 59d85a2a05
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (14):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
stash show: use stash.showIncludeUntracked even when diff options given
Derrick Stolee (58):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
dir: update stale description of treat_directory()
sparse-index: fix uninitialized jump
t1092: use GIT_PROGRESS_DELAY for consistent results
dir: update stale description of treat_directory()
Elijah Newren (50):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
dir: convert trace calls to trace2 equivalents
dir: report number of visited directories and paths with trace2
ls-files: error out on -i unless -o or -c are specified
t7300: add testcase showing unnecessary traversal into ignored directory
t3001, t7300: add testcase showcasing missed directory traversal
dir: avoid unnecessary traversal into ignored directory
dir: traverse into untracked directories if they may have ignored subfiles
dir: introduce readdir_skip_dot_and_dotdot() helper
git-prompt: work under set -u
dir: introduce readdir_skip_dot_and_dotdot() helper
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Eric Wong (1):
remote-curl: fix clone on sha256 repos
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jeff Hostetler (14):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
simple-ipc: correct ifdefs when NO_PTHREADS is defined
Jeff King (43):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
t: avoid sed-based chain-linting in some expensive cases
t5551: test http interaction with credential helpers
Revert "remote-curl: fall back to basic auth if Negotiate fails"
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
Johannes Sixt (1):
t9001-send-email.sh: fix expected absolute paths on Windows
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (32):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
A handful more topics before -rc1
Git 2.32-rc1
t1092: revert the "-1" hack for emulating "no progress meter"
Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
Revert "dir: update stale description of treat_directory()"
Git 2.32-rc2
Git 2.32-rc3
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (32):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
checkout-index: add parallel checkout support
parallel-checkout: add tests related to .gitattributes
parallel-checkout: add tests for basic operations
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
init: fix bug regarding ~/ expansion in init.templateDir
t2080: fix cp invocation to copy symlinks instead of following them
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (12):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Todd Zullinger (1):
t7500: remove non-existant C_LOCALE_OUTPUT prereq
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Will Chandler (1):
refs: cleanup directories when deleting packed ref
Wolfgang Müller (1):
rev-parse: fix segfault with missing --path-format argument
ZheNing Hu (8):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
ref-filter: fix read invalid union member bug
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
Ævar Arnfjörð Bjarmason (97):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Makefile: don't re-define PERL_DEFINES
Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
perl: use mock i18n functions under NO_GETTEXT=Y
Makefile: make PERL_DEFINES recursively expanded
send-email: fix missing error message regression
send-email: don't needlessly abs_path() the core.hooksPath
send-email: move "hooks_path" invocation to git-send-email.perl
pack-objects: move static inline from a header to the sole consumer
builtin/fsck.c: don't conflate "int" and "enum" in callback
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.32.0-rc2
@ 2021-05-28 6:13 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-05-28 6:13 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers, lwn
A release candidate Git v2.32.0-rc2 is now available for testing at
the usual places. It is comprised of 586 non-merge commits since
v2.31.0, contributed by 83 people, 31 of which are new faces [*].
There have been a handful of regression found since v2.32.0-rc0 was
tagged, and this has fixes to them. https://tinyurl.com/gitCal says
that we plan to have another release candidate mid next week, but we
may go straight to the final 2.32 instead. Let's see how this one
fares before deciding.
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.32.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.31.0 are as follows.
Welcome to the Git development community!
Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson,
Charvi Mendiratta, Christian Couder, Dennis Ameling, Denton Liu,
Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren, Eric
Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin, Jeff Hostetler,
Jeff King, Johannes Schindelin, Johannes Sixt, John Szakmeister,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kyle Meyer,
Lénaïc Huard, Luke Diamand, Marc Branchaud, Martin Ågren,
Matheus Tavares, Nguyễn Thái Ngọc Duy, Nipunn Koorapati,
Øystein Walle, Patrick Steinhardt, Phillip Wood, Rafael Silva,
Ramkumar Ramachandra, Ramsay Jones, Randall S. Becker, René
Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc, SZEDER
Gábor, Taylor Blau, Todd Zullinger, Torsten Bögershausen,
Trygve Aaberge, Ville Skyttä, and ZheNing Hu.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* "git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
(merge b548f0f156 en/dir-traversal later to maint).
* The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
* The bash prompt script (in contrib/) did not work under "set -u".
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
* The "chainlint" feature in the test framework is a handy way to
catch common mistakes in writing new tests, but tends to get
expensive. An knob to selectively disable it has been introduced
to help running tests that the developer has not modified.
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
* The "rev-parse" command did not diagnose the lack of argument to
"--path-format" option, which was introduced in v2.31 era, which
has been corrected.
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (1):
merge-ort: split "distinct types" message into two translatable messages
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (1):
INSTALL: note on using Asciidoctor to build doc
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (14):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
stash show: use stash.showIncludeUntracked even when diff options given
Derrick Stolee (58):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
dir: update stale description of treat_directory()
sparse-index: fix uninitialized jump
t1092: use GIT_PROGRESS_DELAY for consistent results
dir: update stale description of treat_directory()
Elijah Newren (50):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
dir: convert trace calls to trace2 equivalents
dir: report number of visited directories and paths with trace2
ls-files: error out on -i unless -o or -c are specified
t7300: add testcase showing unnecessary traversal into ignored directory
t3001, t7300: add testcase showcasing missed directory traversal
dir: avoid unnecessary traversal into ignored directory
dir: traverse into untracked directories if they may have ignored subfiles
dir: introduce readdir_skip_dot_and_dotdot() helper
git-prompt: work under set -u
dir: introduce readdir_skip_dot_and_dotdot() helper
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Eric Wong (1):
remote-curl: fix clone on sha256 repos
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jeff Hostetler (14):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
simple-ipc: correct ifdefs when NO_PTHREADS is defined
Jeff King (43):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
t: avoid sed-based chain-linting in some expensive cases
t5551: test http interaction with credential helpers
Revert "remote-curl: fall back to basic auth if Negotiate fails"
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
Johannes Sixt (1):
t9001-send-email.sh: fix expected absolute paths on Windows
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (31):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
A handful more topics before -rc1
Git 2.32-rc1
t1092: revert the "-1" hack for emulating "no progress meter"
Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
Revert "dir: update stale description of treat_directory()"
Git 2.32-rc2
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (32):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
checkout-index: add parallel checkout support
parallel-checkout: add tests related to .gitattributes
parallel-checkout: add tests for basic operations
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
init: fix bug regarding ~/ expansion in init.templateDir
t2080: fix cp invocation to copy symlinks instead of following them
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (12):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Todd Zullinger (1):
t7500: remove non-existant C_LOCALE_OUTPUT prereq
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Will Chandler (1):
refs: cleanup directories when deleting packed ref
Wolfgang Müller (1):
rev-parse: fix segfault with missing --path-format argument
ZheNing Hu (8):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
ref-filter: fix read invalid union member bug
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
Ævar Arnfjörð Bjarmason (96):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Makefile: don't re-define PERL_DEFINES
Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
perl: use mock i18n functions under NO_GETTEXT=Y
Makefile: make PERL_DEFINES recursively expanded
send-email: fix missing error message regression
send-email: don't needlessly abs_path() the core.hooksPath
send-email: move "hooks_path" invocation to git-send-email.perl
pack-objects: move static inline from a header to the sole consumer
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.32.0-rc1
@ 2021-05-22 14:21 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-05-22 14:21 UTC (permalink / raw)
To: git
A release candidate Git v2.32.0-rc1 is now available for testing at
the usual places. It is comprised of 572 non-merge commits since
v2.31.0, contributed by 82 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.32.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.31.0 are as follows.
Welcome to the Git development community!
Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson,
Charvi Mendiratta, Christian Couder, Dennis Ameling, Denton
Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin, Jeff
Hostetler, Jeff King, Johannes Schindelin, John Szakmeister,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kyle Meyer,
Lénaïc Huard, Luke Diamand, Marc Branchaud, Martin Ågren,
Matheus Tavares, Nguyễn Thái Ngọc Duy, Nipunn Koorapati,
Øystein Walle, Patrick Steinhardt, Phillip Wood, Rafael Silva,
Ramkumar Ramachandra, Ramsay Jones, Randall S. Becker, René
Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc, SZEDER
Gábor, Taylor Blau, Todd Zullinger, Torsten Bögershausen,
Trygve Aaberge, Ville Skyttä, and ZheNing Hu.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* "git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
(merge b548f0f156 en/dir-traversal later to maint).
* The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
* The bash prompt script (in contrib/) did not work under "set -u".
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
* The "chainlint" feature in the test framework is a handy way to
catch common mistakes in writing new tests, but tends to get
expensive. An knob to selectively disable it has been introduced
to help running tests that the developer has not modified.
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
* The "rev-parse" command did not diagnose the lack of argument to
"--path-format" option, which was introduced in v2.31 era, which
has been corrected.
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (1):
merge-ort: split "distinct types" message into two translatable messages
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (1):
INSTALL: note on using Asciidoctor to build doc
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (14):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
stash show: use stash.showIncludeUntracked even when diff options given
Derrick Stolee (56):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
dir: update stale description of treat_directory()
sparse-index: fix uninitialized jump
Elijah Newren (49):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
dir: convert trace calls to trace2 equivalents
dir: report number of visited directories and paths with trace2
ls-files: error out on -i unless -o or -c are specified
t7300: add testcase showing unnecessary traversal into ignored directory
t3001, t7300: add testcase showcasing missed directory traversal
dir: avoid unnecessary traversal into ignored directory
dir: traverse into untracked directories if they may have ignored subfiles
dir: introduce readdir_skip_dot_and_dotdot() helper
git-prompt: work under set -u
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Eric Wong (1):
remote-curl: fix clone on sha256 repos
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jeff Hostetler (14):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
simple-ipc: correct ifdefs when NO_PTHREADS is defined
Jeff King (43):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
t: avoid sed-based chain-linting in some expensive cases
t5551: test http interaction with credential helpers
Revert "remote-curl: fall back to basic auth if Negotiate fails"
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (27):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
A handful more topics before -rc1
Git 2.32-rc1
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (30):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
checkout-index: add parallel checkout support
parallel-checkout: add tests for basic operations
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
parallel-checkout: add tests related to .gitattributes
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (12):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Todd Zullinger (1):
t7500: remove non-existant C_LOCALE_OUTPUT prereq
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Will Chandler (1):
refs: cleanup directories when deleting packed ref
Wolfgang Müller (1):
rev-parse: fix segfault with missing --path-format argument
ZheNing Hu (8):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
ref-filter: fix read invalid union member bug
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
Ævar Arnfjörð Bjarmason (92):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Makefile: don't re-define PERL_DEFINES
Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
perl: use mock i18n functions under NO_GETTEXT=Y
Makefile: make PERL_DEFINES recursively expanded
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.32.0-rc0
@ 2021-05-17 7:06 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-05-17 7:06 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.32.0-rc0 is now available for
testing at the usual places. It is comprised of 545 non-merge
commits since v2.31.0, contributed by 76 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.32.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.31.0 are as follows.
Welcome to the Git development community!
Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
Martin, Georgios Kontaxis, Jerry Zhang, Joachim Kuebart, Joseph
Vusich, Josh Soref, Julien Richard, Li Linchao, Louis Sautier,
Luke Shumaker, Nicholas Clark, Peter Oliver, Renato Botelho,
Robert Foss, RyotaK, Sardorbek Imomaliev, Tom Saeger, Will
Chandler, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrzej
Hunt, Bagas Sanjaya, brian m. carlson, Charvi Mendiratta,
Christian Couder, Dennis Ameling, Denton Liu, Derrick Stolee,
Đoàn Trần Công Danh, Elijah Newren, Eric Sunshine,
Han-Wen Nienhuys, Han Xin, Jeff Hostetler, Jeff King, Johannes
Schindelin, John Szakmeister, Jonathan Nieder, Jonathan Tan,
Junio C Hamano, Kyle Meyer, Lénaïc Huard, Luke Diamand,
Marc Branchaud, Martin Ågren, Matheus Tavares, Nguyễn Thái
Ngọc Duy, Nipunn Koorapati, Øystein Walle, Patrick Steinhardt,
Phillip Wood, Rafael Silva, Ramkumar Ramachandra, Ramsay Jones,
René Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc,
SZEDER Gábor, Taylor Blau, Torsten Bögershausen, Trygve
Aaberge, Ville Skyttä, and ZheNing Hu.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* When accessing a server with a URL like https://user:pass@site/, we
did not to fall back to the basic authentication with the
credential material embedded in the URL after the "Negotiate"
authentication failed. Now we do.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (1):
merge-ort: split "distinct types" message into two translatable messages
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (1):
INSTALL: note on using Asciidoctor to build doc
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (13):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
Derrick Stolee (54):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
Elijah Newren (40):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jeff Hostetler (13):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
Jeff King (40):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (25):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (30):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
checkout-index: add parallel checkout support
parallel-checkout: add tests for basic operations
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
parallel-checkout: add tests related to .gitattributes
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (12):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Will Chandler (1):
refs: cleanup directories when deleting packed ref
ZheNing Hu (7):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
Ævar Arnfjörð Bjarmason (87):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [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%]
* [PATCH v2 1/2] t/perf: handle worktrees as test repos
@ 2021-02-26 7:11 5% ` Jeff King
0 siblings, 0 replies; 162+ results
From: Jeff King @ 2021-02-26 7:11 UTC (permalink / raw)
To: git; +Cc: Derrick Stolee, Junio C Hamano, Johannes Schindelin
The perf suite gets confused when test_perf_default_repo is pointed at a
worktree (which includes when it is run from within a worktree at all,
since the default is to use the current repository).
Here's an example:
$ git worktree add ~/foo
Preparing worktree (new branch 'foo')
HEAD is now at 328c109303 The eighth batch
$ cd ~/foo
$ make
[...build output...]
$ cd t/perf
$ ./p0000-perf-lib-sanity.sh -v -i
[...]
perf 1 - test_perf_default_repo works:
running:
foo=$(git rev-parse HEAD) &&
test_export foo
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
The problem is that we didn't copy all of the necessary files from the
source repository (in this case we got HEAD, but we have no refs!). We
discover the git-dir with "rev-parse --git-dir", but this points to the
worktree's partial repository in .../.git/worktrees/foo.
That partial repository has a "commondir" file which points to the main
repository, where the actual refs are stored, but we don't copy it. This
is the correct thing to do, though! If we did copy it, then our scratch
test repo would be pointing back to the original main repo, and any ref
updates we made in the tests would impact that original repo.
Instead, we need to either:
1. Make a scratch copy of the original main repo (in addition to the
worktree repo), and point the scratch worktree repo's commondir at
it. This preserves the original relationship, but it's doubtful any
script really cares (if they are testing worktree performance,
they'd probably make their own worktrees). And it's trickier to get
right.
2. Collapse the main and worktree repos into a single scratch repo.
This can be done by copying everything from both, preferring any
files from the worktree repo.
This patch does the second one. With this applied, the example above
results in p0000 running successfully.
Reported-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Jeff King <peff@peff.net>
---
t/perf/perf-lib.sh | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index e385c6896f..1226be4005 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -70,27 +70,40 @@ test_perf_do_repo_symlink_config_ () {
test_have_prereq SYMLINKS || git config core.symlinks false
}
+test_perf_copy_repo_contents () {
+ for stuff in "$1"/*
+ do
+ case "$stuff" in
+ */objects|*/hooks|*/config|*/commondir)
+ ;;
+ *)
+ cp -R "$stuff" "$repo/.git/" || exit 1
+ ;;
+ esac
+ done
+}
+
test_perf_create_repo_from () {
test "$#" = 2 ||
BUG "not 2 parameters to test-create-repo"
repo="$1"
source="$2"
source_git="$("$MODERN_GIT" -C "$source" rev-parse --git-dir)"
objects_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-path objects)"
+ common_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-common-dir)"
mkdir -p "$repo/.git"
(
cd "$source" &&
{ cp -Rl "$objects_dir" "$repo/.git/" 2>/dev/null ||
cp -R "$objects_dir" "$repo/.git/"; } &&
- for stuff in "$source_git"/*; do
- case "$stuff" in
- */objects|*/hooks|*/config|*/commondir)
- ;;
- *)
- cp -R "$stuff" "$repo/.git/" || exit 1
- ;;
- esac
- done
+
+ # common_dir must come first here, since we want source_git to
+ # take precedence and overwrite any overlapping files
+ test_perf_copy_repo_contents "$common_dir"
+ if test "$source_git" != "$common_dir"
+ then
+ test_perf_copy_repo_contents "$source_git"
+ fi
) &&
(
cd "$repo" &&
--
2.31.0.rc0.520.ge7c5201139
^ permalink raw reply related [relevance 5%]
* [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%]
* What's cooking in git.git (Feb 2021, #03; Wed, 17)
@ 2021-02-18 2:11 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2021-02-18 2:11 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 eighth batch of topics are in 'master'.
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/tests-various-fixup (2021-01-23) 10 commits
(merged to 'next' on 2021-02-01 at a604a6e217)
+ rm tests: actually test for SIGPIPE in SIGPIPE test
+ archive tests: use a cheaper "zipinfo -h" invocation to get header
+ upload-pack tests: avoid a non-zero "grep" exit status
+ 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: explicitly test HEAD and index differences
+ cache-tree tests: use a sub-shell with less indirection
+ cache-tree tests: remove unused $2 parameter
+ cache-tree tests: refactor for modern test style
Various test updates.
* en/merge-ort-perf (2021-01-23) 6 commits
(merged to 'next' on 2021-02-01 at ca3c07579b)
+ merge-ort: begin performance work; instrument with trace2_region_* calls
+ merge-ort: ignore the directory rename split conflict for now
+ merge-ort: fix massive leak
+ 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/ort-directory-rename.)
The "ort" merge strategy.
* en/ort-directory-rename (2021-01-20) 18 commits
(merged to 'next' on 2021-02-01 at 5c1cdd13a1)
+ 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.)
ORT merge strategy learns to infer "renamed directory" while
merging.
* jk/complete-branch-force-delete (2021-02-03) 3 commits
(merged to 'next' on 2021-02-03 at 6454bb89b5)
+ doc/git-branch: fix awkward wording for "-c"
+ completion: handle other variants of "branch -m"
+ completion: treat "branch -D" the same way as "branch -d"
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.
* jv/upload-pack-filter-spec-quotefix (2021-02-02) 2 commits
(merged to 'next' on 2021-02-03 at 2e34f74e3a)
+ t5544: clarify 'hook works with partial clone' test
(merged to 'next' on 2021-01-31 at 789bf4154e)
+ upload-pack.c: fix filter spec quoting bug
Fix in passing custom args from "git clone" to "upload-pack" on the
other side.
* tb/ci-run-cocci-with-18.04 (2021-02-08) 1 commit
(merged to 'next' on 2021-02-09 at c50bc53527)
+ .github/workflows/main.yml: run static-analysis on bionic
The version of Ubuntu Linux used by default at GitHub Actions CI
has been updated to one that lack coccinelle; until it gets fixed,
work it around by sticking to the previous release (18.04).
* tb/pack-revindex-on-disk (2021-01-28) 10 commits
(merged to 'next' on 2021-02-01 at bd6a780213)
+ t5325: check both on-disk and in-memory reverse index
+ 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
+ builtin/index-pack.c: allow stripping arbitrary extensions
+ pack-write.c: prepare to write 'pack-*.rev' files
+ packfile: prepare for the existence of '*.rev' files
(this branch is used by tb/reverse-midx.)
Introduce an on-disk file to record revindex for packdata, which
traditionally was always created on the fly and only in-core.
* tb/precompose-prefix-too (2021-02-03) 1 commit
(merged to 'next' on 2021-02-05 at 1dd43136b1)
+ MacOS: precompose_argv_prefix()
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.
--------------------------------------------------
[New Topics]
* tb/reverse-midx (2021-02-10) 9 commits
- pack-revindex: write multi-pack reverse indexes
- pack-write.c: extract 'write_rev_file_order'
- pack-revindex: read multi-pack reverse indexes
- Documentation/technical: describe multi-pack reverse indexes
- midx: make some functions non-static
- midx: keep track of the checksum
- midx: don't free midx_name early
- midx: allow marking a pack as preferred
- t/helper/test-read-midx.c: add '--show-objects'
An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* ab/detox-gettext-tests (2021-02-10) 4 commits
- tests: remove most uses of test_i18ncmp
- tests: remove last uses of C_LOCALE_OUTPUT
- tests: remove most uses of C_LOCALE_OUTPUT
- tests: remove last uses of GIT_TEST_GETTEXT_POISON=false
Removal of GIT_TEST_GETTEXT_POISON continues.
Will merge to 'next'.
* ab/diff-deferred-free (2021-02-11) 2 commits
(merged to 'next' on 2021-02-12 at 5e24106122)
+ diff: plug memory leak from regcomp() on {log,diff} -I
+ diff: add an API for deferred freeing
A small memleak in "diff -I<regexp>" has been corrected.
Will merge to 'master'.
* ak/config-bad-bool-error (2021-02-11) 1 commit
(merged to 'next' on 2021-02-12 at 76784be663)
+ config: improve error message for boolean config
The error message given when a configuration variable that is
expected to have a boolean value has been improved.
Will merge to 'master'.
* jc/diffcore-rotate (2021-02-16) 1 commit
- diff: --{rotate,skip}-to=<path>
"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.
Will merge to 'next'.
* js/commit-graph-warning (2021-02-11) 1 commit
(merged to 'next' on 2021-02-12 at e9faad550a)
+ commit-graph: when incompatible with graphs, indicate why
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.
Will merge to 'master'.
* js/reflog-expire-stale-fix (2021-02-11) 1 commit
(merged to 'next' on 2021-02-12 at 899034efca)
+ reflog expire --stale-fix: be generous about missing objects
"git reflog expire --stale-fix" can be used to repair the reflog by
removing entries that refer to objects that have been pruned away,
but was not careful to tolerate missing objects.
Will merge to 'master'.
* mz/doc-notes-are-not-anchors (2021-02-10) 1 commit
- docs: clarify that refs/notes/ do not keep the attached objects alive
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.
Will merge to 'next'.
* en/diffcore-rename (2021-02-15) 8 commits
- merge-ort: call diffcore_rename() directly
- gitdiffcore doc: mention new preliminary step for rename detection
- diffcore-rename: guide inexact rename detection based on basenames
- diffcore-rename: complete find_basename_matches()
- diffcore-rename: compute basenames of source and dest candidates
- t4001: add a test comparing basename similarity and content similarity
- diffcore-rename: filter rename_src list when possible
- diffcore-rename: no point trying to find a match better than exact
Performance optimization work on the rename detection continues.
Will merge to 'next'.
* ab/pickaxe-pcre2 (2021-02-16) 24 commits
- pickaxe -G: don't special-case create/delete
- pickaxe -G: terminate early on matching lines
- xdiff-interface: support early exit in xdiff_outf()
- xdiff-interface: allow early return from xdiff_emit_{line,hunk}_fn
- pickaxe -S: slightly optimize contains()
- pickaxe: rename variables in has_changes() for brevity
- pickaxe -S: support content with NULs under --pickaxe-regex
- pickaxe: assert that we must have a needle under -G or -S
- pickaxe: refactor function selection in diffcore-pickaxe()
- perf: add performance test for pickaxe
- pickaxe/style: consolidate declarations and assignments
- diff.h: move pickaxe fields together again
- pickaxe: die when --find-object and --pickaxe-all are combined
- pickaxe: die when -G and --pickaxe-regex are combined
- pickaxe tests: test for -G, -S and --find-object incompatibility
- pickaxe tests: add test for "log -S" not being a regex
- pickaxe tests: add test for diffgrep_consume() internals
- pickaxe tests: refactor to use test_commit --append --printf
- test-lib functions: add --printf option to test_commit
- test-lib-functions: reword "test_commit --append" docs
- test-lib-functions: document and test test_commit --no-tag
- grep/pcre2 tests: reword comments referring to kwset
- Merge branch 'jk/rev-list-disk-usage' into ab/pickaxe-pcre2
- Merge branch 'ab/test-lib' into ab/pickaxe-pcre2
(this branch uses ab/test-lib and jk/rev-list-disk-usage.)
* cm/rebase-i-fixup-amend-reword (2021-02-17) 6 commits
- doc/git-commit: add documentation for fixup[amend|reword] options
- t3437: use --fixup with options to create amend! commit
- t7500: add tests for --fixup[amend|reword] options
- commit: add a reword suboption to --fixup
- commit: add amend suboption to --fixup to create amend! commit
- sequencer: export subject_length()
(this branch uses cm/rebase-i and cm/rebase-i-updates.)
"git commit --fixup" learns to optionally create "amend!" and
"reword!" commits, that use the log message in "fixup" commit
as the message of the resulting commit.
* dl/stash-show-untracked (2021-02-16) 4 commits
- SQUASH???
- SQUASH???
- stash show: learn stash.showIncludeUntracked
- stash show: teach --include-untracked and --only-untracked
(this branch uses dl/stash-cleanup.)
"git stash show" learned to optionally show untracked part of the
stash.
* es/config-hooks-part-1 (2021-02-16) 17 commits
- 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
(this branch is used by es/config-hooks.)
A way to specify hooks in the configuration files is introduced.
Will merge to 'next'.
* jh/fsmonitor-prework (2021-02-16) 11 commits
- fsmonitor: refactor initialization of fsmonitor_last_update token
- fsmonitor: allow all entries for a folder to be invalidated
- fsmonitor: log FSMN token when reading and writing the index
- fsmonitor: log invocation of FSMonitor hook to trace2
- read-cache: log the number of scanned files to trace2
- read-cache: log the number of lstat calls to trace2
- preload-index: log the number of lstat calls to trace2
- p7519: add trace logging during perf test
- p7519: move watchman cleanup earlier in the test
- p7519: fix watchman watch-list test on Windows
- p7519: do not rely on "xargs -d" in test
Preliminary changes to fsmonitor integration.
Will merge to 'next'.
* jk/open-dotgitx-with-nofollow (2021-02-16) 6 commits
- mailmap: do not respect symlinks for in-tree .mailmap
- exclude: do not respect symlinks for in-tree .gitignore
- attr: do not respect symlinks for in-tree .gitattributes
- exclude: add flags parameter to add_patterns()
- attr: convert "macro_ok" into a flags field
- add open_nofollow() helper
It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* js/doc-proto-v2-response-end (2021-02-17) 1 commit
- doc: fix naming of response-end-pkt
Docfix.
Will merge to 'next'.
* ma/doc-markup-fix (2021-02-17) 2 commits
- gitmailmap.txt: fix rendering of e-mail addresses
- rev-list-options.txt: fix rendering of bonus paragraph
Docfix.
Will merge to 'next'.
* rs/blame-optim (2021-02-17) 1 commit
- blame: remove unnecessary use of get_commit_info()
Optimization in "git blame"
Will merge to 'next'.
* rs/pretty-describe (2021-02-17) 2 commits
- pretty: add merge and exclude options to %(describe)
- pretty: add %(describe)
"git log --format='...'" learned "%(describe)" placeholder.
--------------------------------------------------
[Stalled]
* ab/make-cleanup (2021-02-01) 6 commits
- Makefile: add {program,xdiff,test,git}-objs & objects targets
- Makefile: split OBJECTS into OBJECTS and GIT_OBJS
- Makefile: sort OBJECTS assignment for subsequent change
- Makefile: split up long OBJECTS line
- Makefile: guard against TEST_OBJS in the environment
- Makefile: remove "all" on "$(FUZZ_OBJS)"
Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
Expecting a reroll (or retraction)
cf. <YBuZVfnc0ECuoKkK@coredump.intra.peff.net>
cf. <xmqq1rdzjuaa.fsf@gitster.c.googlers.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>
* 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
The resolve and octopus merge strategy backends have been rewritten
in C.
Got enough review comments to get updated.
--------------------------------------------------
[Cooking]
* js/range-diff-one-side-only (2021-02-06) 6 commits
(merged to 'next' on 2021-02-08 at 8c35ed8523)
+ range-diff: offer --left-only/--right-only options
+ range-diff: move the diffopt initialization down one layer
+ range-diff: combine all options in a single data structure
+ range-diff: simplify code spawning `git log`
+ range-diff: libify the read_patches() function again
+ range-diff: avoid leaking memory in two error code paths
The "git range-diff" command learned "--(left|right)-only" option
to show only one side of the compared range.
Will merge to 'master'.
* cm/rebase-i-updates (2021-02-10) 11 commits
(merged to 'next' on 2021-02-12 at e29227780b)
+ doc/rebase -i: fix typo in the documentation of 'fixup' command
+ t/t3437: fixup the test 'multiple fixup -c opens editor once'
+ t/t3437: use named commits in the tests
+ t/t3437: simplify and document the test helpers
+ t/t3437: check the author date of fixed up commit
+ t/t3437: remove the dependency of 'expected-message' file from tests
+ t/t3437: fixup here-docs in the 'setup' test
+ t/lib-rebase: update the documentation of FAKE_LINES
+ rebase -i: clarify and fix 'fixup -c' rebase-todo help
+ sequencer: rename a few functions
+ sequencer: fixup the datatype of the 'flag' argument
(this branch is used by cm/rebase-i-fixup-amend-reword; uses cm/rebase-i.)
Follow-up fixes to "cm/rebase-i" topic.
Will merge to 'master', together with "cm/rebase-i".
* cw/pack-vs-bigfilethreashold (2021-02-09) 2 commits
- fixup! doc: mention bigFileThreshold for packing
- doc: mention bigFileThreshold for packing
Doc update.
Expecting a reroll.
cf. <F63929A8-7BC9-43A7-9E7B-118433F62588@gmx.ch>
* ds/maintenance-pack-refs (2021-02-09) 2 commits
(merged to 'next' on 2021-02-11 at 36f56bc9ec)
+ maintenance: incremental strategy runs pack-refs weekly
+ maintenance: add pack-refs task
"git maintenance" tool learned a new "pack-refs" maintenance task.
Will merge to 'master'.
* jk/mailmap-only-at-root (2021-02-10) 1 commit
(merged to 'next' on 2021-02-10 at fbd122fd6c)
+ mailmap: only look for .mailmap in work tree
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.
Will merge to 'master'.
* jk/rev-list-disk-usage (2021-02-11) 2 commits
(merged to 'next' on 2021-02-11 at 6fb701f287)
+ rev-list: add --disk-usage option for calculating disk usage
+ t: add --no-tag option to test_commit
(this branch is used by ab/pickaxe-pcre2.)
"git rev-list" command learned "--disk-usage" option.
Will merge to 'master'.
* jt/trace2-BUG (2021-02-09) 1 commit
(merged to 'next' on 2021-02-09 at 94911ad676)
+ usage: trace2 BUG() invocations
Even though invocations of "die()" were logged to the trace2
system, "BUG()"s were not, which has been corrected.
Will merge to 'master'.
* mt/checkout-index-corner-cases (2021-02-16) 2 commits
- checkout-index: omit entries with no tempname from --temp output
- write_entry(): fix misuses of `path` in error messages
The error codepath around the "--temp/--prefix" feature of "git
checkout-index" has been improved.
Will merge to 'next'.
* mt/grep-cached-untracked (2021-02-09) 1 commit
(merged to 'next' on 2021-02-10 at e1fca79104)
+ grep: error out if --untracked is used with --cached
"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.
Will merge to 'master'.
* ab/test-lib (2021-02-12) 11 commits
(merged to 'next' on 2021-02-12 at 666a0422dc)
+ test-lib-functions: assert correct parameter count
+ test-lib-functions: remove bug-inducing "diagnostics" helper param
+ test libs: rename "diff-lib" to "lib-diff"
+ t/.gitattributes: sort lines
+ test-lib-functions: move function to lib-bitmap.sh
+ test libs: rename gitweb-lib.sh to lib-gitweb.sh
+ test libs: rename bundle helper to "lib-bundle.sh"
+ test-lib-functions: remove generate_zero_bytes() wrapper
+ test-lib-functions: move test_set_index_version() to its user
+ test lib: change "error" to "BUG" as appropriate
+ test-lib: remove check_var_migration
(this branch is used by ab/pickaxe-pcre2.)
Test framework clean-up.
Will merge to 'master'.
* dl/stash-cleanup (2021-02-11) 7 commits
(merged to 'next' on 2021-02-11 at ae1cde1380)
+ stash: declare ref_stash as an array
+ t3905: use test_cmp() to check file contents
+ t3905: replace test -s with test_file_not_empty
+ t3905: remove nested git in command substitution
+ t3905: move all commands into test cases
+ t3905: remove spaces after redirect operators
+ git-stash.txt: be explicit about subcommand options
(this branch is used by dl/stash-show-untracked.)
Documentation, code and test clean-up around "git stash".
Will merge to 'master'.
This is an early part of a topic that added a new feature to the
command, but the implementation is expected to need a handful of
iterations; I split the preparatory part up to fast-track it.
* ew/rev-parse-since-test (2021-02-10) 1 commit
(merged to 'next' on 2021-02-11 at 2490918be8)
+ t1500: ensure current --since= behavior remains
Test to make sure "git rev-parse one-thing one-thing" gives
the same thing twice (when one-thing is --since=X).
Will merge to 'master'.
* js/fsck-name-objects-fix (2021-02-10) 2 commits
(merged to 'next' on 2021-02-10 at 79afd7ebdc)
+ fsck --name-objects: be more careful parsing generation numbers
+ t1450: robustify `remove_object()`
Fix "git fsck --name-objects" which apparently has not been used by
anybody who is motivated enough to report breakage.
Will merge to 'master'.
* sv/t7001-modernize (2021-02-11) 10 commits
- 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: avoid using `cd` outside of subshells
- t7001: remove whitespace after redirect operators
- t7001: modernize subshell formatting
- t7001: remove unnecessary blank lines
- t7001: indent with TABs instead of spaces
- t7001: modernize test formatting
Test script modernization.
Expecting the final version with corrected author attribution.
* mt/grep-sparse-checkout (2021-02-09) 1 commit
- grep: honor sparse-checkout on working tree searches
"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>
* ds/commit-graph-genno-fix (2021-02-01) 6 commits
(merged to 'next' on 2021-02-03 at b3a9e11efb)
+ commit-graph: prepare commit graph
+ commit-graph: be extra careful about mixed generations
+ commit-graph: compute generations separately
+ commit-graph: validate layers for generation data
+ commit-graph: always parse before commit_graph_data_at()
+ commit-graph: use repo_parse_commit
(this branch uses ak/corrected-commit-date; is tangled with ds/chunked-file-api and ds/merge-base-independent.)
Fix incremental update of commit-graph file around corrected commit
date data.
Will merge to 'master', together with "ak/corrected-commit-date".
* jh/simple-ipc (2021-02-17) 12 commits
- t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
- simple-ipc: add Unix domain socket implementation
- unix-socket: create `unix_stream_server__listen_with_lock()`
- unix-socket: disallow chdir() when creating unix domain sockets
- unix-socket: add backlog size option to unix_stream_listen()
- unix-socket: elimiate static unix_stream_socket() helper function
- simple-ipc: add win32 implementation
- simple-ipc: design documentation for new IPC mechanism
- pkt-line: add options argument to read_packetized_to_strbuf()
- pkt-line: (optionally) libify the packet readers
- pkt-line: do not issue flush packets in write_packetized_*()
- pkt-line: eliminate the need for static buffer in packet_write_gently()
A simple IPC interface gets introduced to build services like
fsmonitor on top.
* ab/pager-exit-log (2021-02-01) 4 commits
(merged to 'next' on 2021-02-12 at ffe9f2d364)
+ pager: properly log pager exit code when signalled
+ run-command: add braces for "if" block in wait_or_whine()
+ pager: test for exit code with and without SIGPIPE
+ pager: refactor wait_for_pager() function
When a pager spawned by us exited, the trace log did not record its
exit status correctly, which has been corrected.
Will merge to 'master'.
The original "what should we do with SIGPIPE?" question remains, though.
* ta/hash-function-transition-doc (2021-02-05) 6 commits
(merged to 'next' on 2021-02-12 at f620f3cfd3)
+ doc: use https links
+ doc hash-function-transition: move rationale upwards
+ doc hash-function-transition: fix incomplete sentence
+ doc hash-function-transition: use upper case consistently
+ doc hash-function-transition: use SHA-1 and SHA-256 consistently
+ doc hash-function-transition: fix asciidoc output
Update formatting and grammar of the hash transition plan
documentation, plus some updates.
Will merge to 'master'.
* ds/chunked-file-api (2021-02-05) 17 commits
- chunk-format: add technical docs
- chunk-format: restore duplicate chunk checks
- midx: use 64-bit multiplication for chunk sizes
- midx: use chunk-format read API
- commit-graph: use chunk-format read API
- chunk-format: create read chunk API
- midx: use chunk-format API in write_midx_internal()
- midx: drop chunk progress during write
- midx: return success/failure in chunk write methods
- midx: add num_large_offsets to write_midx_context
- midx: add pack_perm to write_midx_context
- midx: add entries to write_midx_context
- midx: use context in write_midx_pack_names()
- midx: rename pack_info to write_midx_context
- commit-graph: use chunk-format write API
- chunk-format: create chunk format write API
- commit-graph: anonymize data in chunk_write_fn
(this branch uses ak/corrected-commit-date; is tangled with ds/commit-graph-genno-fix and ds/merge-base-independent.)
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 rebust.
Getting there.
* ds/merge-base-independent (2021-02-01) 5 commits
- commit-reach: stale commits may prune generation further
- commit-reach: use heuristic in remove_redundant()
- commit-reach: move compare_commits_by_gen
- commit-reach: use one walk in remove_redundant()
- commit-reach: reduce requirements for remove_redundant()
(this branch uses ak/corrected-commit-date; is tangled with ds/chunked-file-api and ds/commit-graph-genno-fix.)
The code to implement "git merge-base --independent" was poorly
done and was kept from the very beginning of the feature.
* hv/trailer-formatting (2021-02-15) 4 commits
- ref-filter: use pretty.c logic for trailers
- pretty.c: capture invalid trailer argument
- pretty.c: refactor trailer logic to `format_set_trailers_options()`
- t6300: use function to test trailer options
The logic to handle "trailer" related placeholders in the
"--format=" mechanisms in the "log" family and "for-each-ref"
family is getting unified.
Ready for 'next'?
* sh/mergetool-hideresolved (2021-02-09) 3 commits
(merged to 'next' on 2021-02-09 at c3ed19b2ec)
+ mergetool: add per-tool support and overrides for the hideResolved flag
+ mergetool: break setup_tool out into separate initialization function
+ mergetool: add hideResolved 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.
Will merge to 'master'.
* cm/rebase-i (2021-01-29) 9 commits
(merged to 'next' on 2021-02-01 at 4f9aa6cec3)
+ doc/git-rebase: add documentation for fixup [-C|-c] options
+ rebase -i: teach --autosquash to work with amend!
+ t3437: test script for fixup [-C|-c] options in interactive rebase
+ rebase -i: add fixup [-C | -c] command
+ sequencer: use const variable for commit message comments
+ sequencer: pass todo_item to do_pick_commit()
+ rebase -i: comment out squash!/fixup! subjects from squash message
+ sequencer: factor out code to append squash message
+ rebase -i: only write fixup-message when it's needed
(this branch is used by cm/rebase-i-fixup-amend-reword and cm/rebase-i-updates.)
"rebase -i" is getting cleaned up and also enhanced.
Will merge to 'master', together with "cm/rebase-i-updates".
* tb/geometric-repack (2021-02-03) 8 commits
- builtin/repack.c: add '--geometric' option
- packfile: add kept-pack cache for find_kept_pack_entry()
- builtin/pack-objects.c: rewrite honor-pack-keep logic
- p5303: measure time to repack with keep
- p5303: add missing &&-chains
- builtin/pack-objects.c: add '--stdin-packs' option
- revision: learn '--no-kept-objects'
- packfile: introduce 'find_kept_pack_entry()'
"git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* ah/rebase-no-fork-point-config (2021-01-21) 1 commit
- rebase: add a config option for --no-fork-point
"git rebase --[no-]fork-point" gained a configuration variable
rebase.forkPoint so that users do not have to keep specifying a
non-default setting.
Expecting a reroll to update its tests.
cf. <CAMMLpeTDNLUz9UVnL3aVK=J7X50Sq8L-OVGaoEsT5AY6EQON-g@mail.gmail.com>
* js/range-diff-wo-dotdot (2021-02-06) 3 commits
(merged to 'next' on 2021-02-08 at 9ae8b46d99)
+ range-diff(docs): explain how to specify commit ranges
+ range-diff/format-patch: handle commit ranges other than A..B
+ range-diff/format-patch: refactor check for commit range
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.
Will merge to 'master'.
* jx/t5411-unique-filenames (2021-01-22) 2 commits
(merged to 'next' on 2021-02-11 at bc5c67f70f)
+ t5411: refactor check of refs using test_cmp_refs
+ t5411: use different out file to prevent overwriting
Avoid individual tests in t5411 from getting affected by each other
by forcing them to use separate output files during the test.
Will merge to 'master'.
* jt/transfer-fsck-across-packs (2021-01-25) 5 commits
- SQUASH??? test fix
- fetch-pack: print and use dangling .gitmodules
- fetch-pack: with packfile URIs, use index-pack arg
- http-fetch: allow custom index-pack args
- http: allow custom index-pack args
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.
Expecting an update.
* bc/signed-objects-with-both-hashes (2021-02-10) 6 commits
(merged to 'next' on 2021-02-11 at 391cc85104)
+ 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
+ ref-filter: switch some uses of unsigned long to size_t
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.
Will merge to 'master'.
* ak/corrected-commit-date (2021-01-18) 11 commits
(merged to 'next' on 2021-01-26 at deae33ec7d)
+ 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
(this branch is used by ds/chunked-file-api, ds/commit-graph-genno-fix and ds/merge-base-independent.)
The commit-graph learned to use corrected commit dates instead of
the generation number to help topological revision traversal.
Will merge to 'master', together with "ds/commit-graph-genno-fix".
* mr/bisect-in-c-4 (2021-02-03) 7 commits
(merged to 'next' on 2021-02-05 at ea18026619)
+ 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.
Will merge to 'master'.
* jt/clone-unborn-head (2021-02-05) 3 commits
(merged to 'next' on 2021-02-08 at 3ba9f80e7f)
+ clone: respect remote unborn HEAD
+ connect, transport: encapsulate arg in struct
+ 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.
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.
* es/config-hooks (2021-02-16) 17 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
(this branch uses es/config-hooks-part-1.)
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.
--------------------------------------------------
[Discarded]
* 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.
Retracted for now.
cf. <a6906459-3a93-ecad-c460-b6c763819389@gmail.com>
* 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.
Superseded by the sh/mergetool-hideresolved topic.
* mt/rm-sparse-checkout (2020-12-08) 11 commits
. rm: honor sparse checkout patterns
. 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
"git rm" follows suit to "git grep" to ignore paths outside the
sparsity pattern when the sparse checkout feature is in use.
Discarded for now, as it depends on an old iteration of
mt/grep-sparse-checkout topic.
* 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.*
Stalled for too long with breakage.
Seems to break tests on Windows
* 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.
Stalled for too long with breakage.
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>
^ permalink raw reply [relevance 1%]
* [PATCH v2 0/1] blame: remove unnecessary use of get_commit_info()
2021-02-16 16:31 7% [PATCH 0/1] blame: remove unnecessary use of get_commit_info() Rafael Silva
2021-02-16 18:35 0% ` Derrick Stolee
@ 2021-02-17 14:54 6% ` Rafael Silva
2021-02-17 14:54 6% ` [PATCH v2 1/1] " Rafael Silva
1 sibling, 1 reply; 162+ results
From: Rafael Silva @ 2021-02-17 14:54 UTC (permalink / raw)
To: git
Cc: Derrick Stolee, Taylor Blau, Stefan Beller, Junio C Hamano,
Rafael Silva
Thanks Taylor, Derrick and Junio for reviewing v1. I've updated the
patch's message to include one of the performance reports that was
previously only on the cover-letter as suggested.
Rafael Silva (1):
blame: remove unnecessary use of get_commit_info()
builtin/blame.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
Range-diff against v1:
1: e0c698370e ! 1: 4d70ce9545 blame: remove unnecessary use of get_commit_info()
@@ Commit message
structure and remove the internal call to get_commit_info() thus
cleaning up and optimizing the code path.
+ Enabling Git's trace2 API in order to record the execution time for
+ every call to determine_line_heat() function:
+
+ + trace2_region_enter("blame", "determine_line_heat", the_repository);
+ determine_line_heat(ent, &default_color);
+ + trace2_region_enter("blame", "determine_line_heat", the_repository);
+
+ Then, running `git blame` for "kernel/fork.c" in linux.git and summing
+ all the execution time for every call (around 1.3k calls) resulted in
+ 2.6x faster execution (best out 3):
+
+ git built from 328c109303 (The eighth batch, 2021-02-12) = 42ms
+ git built from 328c109303 + this change = 16ms
+
Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
## builtin/blame.c ##
--
2.30.1.850.g2d41e9e789
^ permalink raw reply [relevance 6%]
* [PATCH v2 1/1] blame: remove unnecessary use of get_commit_info()
2021-02-17 14:54 6% ` [PATCH v2 " Rafael Silva
@ 2021-02-17 14:54 6% ` Rafael Silva
0 siblings, 0 replies; 162+ results
From: Rafael Silva @ 2021-02-17 14:54 UTC (permalink / raw)
To: git
Cc: Derrick Stolee, Taylor Blau, Stefan Beller, Junio C Hamano,
Rafael Silva
When `git blame --color-by-age`, the determine_line_heat() is called to
select how to color the output based on the commit's author date. It
uses the get_commit_info() to parse the information into a `commit_info`
structure, however, this is actually unnecessary because the
determine_line_heat() caller also does the same.
Instead, let's change the determine_line_heat() to take a `commit_info`
structure and remove the internal call to get_commit_info() thus
cleaning up and optimizing the code path.
Enabling Git's trace2 API in order to record the execution time for
every call to determine_line_heat() function:
+ trace2_region_enter("blame", "determine_line_heat", the_repository);
determine_line_heat(ent, &default_color);
+ trace2_region_enter("blame", "determine_line_heat", the_repository);
Then, running `git blame` for "kernel/fork.c" in linux.git and summing
all the execution time for every call (around 1.3k calls) resulted in
2.6x faster execution (best out 3):
git built from 328c109303 (The eighth batch, 2021-02-12) = 42ms
git built from 328c109303 + this change = 16ms
Signed-off-by: Rafael Silva <rafaeloliveira.cs@gmail.com>
---
builtin/blame.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/builtin/blame.c b/builtin/blame.c
index b66e938022..641523ff9a 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -425,13 +425,11 @@ static void setup_default_color_by_age(void)
parse_color_fields("blue,12 month ago,white,1 month ago,red");
}
-static void determine_line_heat(struct blame_entry *ent, const char **dest_color)
+static void determine_line_heat(struct commit_info *ci, const char **dest_color)
{
int i = 0;
- struct commit_info ci;
- get_commit_info(ent->suspect->commit, &ci, 1);
- while (i < colorfield_nr && ci.author_time > colorfield[i].hop)
+ while (i < colorfield_nr && ci->author_time > colorfield[i].hop)
i++;
*dest_color = colorfield[i].col;
@@ -453,7 +451,7 @@ static void emit_other(struct blame_scoreboard *sb, struct blame_entry *ent, int
cp = blame_nth_line(sb, ent->lno);
if (opt & OUTPUT_SHOW_AGE_WITH_COLOR) {
- determine_line_heat(ent, &default_color);
+ determine_line_heat(&ci, &default_color);
color = default_color;
reset = GIT_COLOR_RESET;
}
--
2.30.1.850.g2d41e9e789
^ permalink raw reply related [relevance 6%]
* Re: [PATCH] t/perf: handle worktrees as test repos
2021-02-16 20:12 4% [PATCH] t/perf: handle worktrees as test repos Jeff King
@ 2021-02-16 21:13 0% ` Johannes Schindelin
0 siblings, 0 replies; 162+ results
From: Johannes Schindelin @ 2021-02-16 21:13 UTC (permalink / raw)
To: Jeff King; +Cc: git, Derrick Stolee
Hi Peff,
On Tue, 16 Feb 2021, Jeff King wrote:
> The perf suite gets confused when test_perf_default_repo is pointed at a
> worktree (which includes when it is run from within a worktree at all,
> since the default is to use the current repository).
>
> Here's an example:
>
> $ git worktree add ~/foo
> Preparing worktree (new branch 'foo')
> HEAD is now at 328c109303 The eighth batch
> $ cd ~/foo
> $ make
> [...build output...]
> $ cd t/perf
> $ ./p0000-perf-lib-sanity.sh -v -i
> [...]
> perf 1 - test_perf_default_repo works:
> running:
> foo=$(git rev-parse HEAD) &&
> test_export foo
>
> fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
> Use '--' to separate paths from revisions, like this:
> 'git <command> [<revision>...] -- [<file>...]'
>
> The problem is that we didn't copy all of the necessary files from the
> source repository (in this case we got HEAD, but we have no refs!). We
> discover the git-dir with "rev-parse --git-dir", but this points to the
> worktree's partial repository in .../.git/worktrees/foo.
>
> That partial repository has a "commondir" file which points to the main
> repository, where the actual refs are stored, but we don't copy it. This
> is the correct thing to do, though! If we did copy it, then our scratch
> test repo would be pointing back to the original main repo, and any ref
> updates we made in the tests would impact that original repo.
>
> Instead, we need to either:
>
> 1. Make a scratch copy of the original main repo (in addition to the
> worktree repo), and point the scratch worktree repo's commondir at
> it. This preserves the original relationship, but it's doubtful any
> script really cares (if they are testing worktree performance,
> they'd probably make their own worktrees). And it's trickier to get
> right.
>
> 2. Collapse the main and worktree repos into a single scratch repo.
> This can be done by copying everything from both, preferring any
> files from the worktree repo.
>
> This patch does the second one. With this applied, the example above
> results in p0000 running successfully.
>
> Reported-by: Derrick Stolee <dstolee@microsoft.com>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
I think you'll also need the equivalent of:
-- snip --
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index 22d727cef83..0949c360ec4 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -84,7 +84,7 @@ test_perf_create_repo_from () {
cp -R "$objects_dir" "$repo/.git/"; } &&
for stuff in "$source_git"/*; do
case "$stuff" in
- */objects|*/hooks|*/config|*/commondir)
+ */objects|*/hooks|*/config|*/commondir|*/gitdir)
;;
*)
cp -R "$stuff" "$repo/.git/" || exit 1
-- snap --
> Having written that, it occurs to me that an even simpler solution is to
> just always use the commondir as the source of the scratch repo. It does
> not produce the same outcome, but the point is generally just to find a
> suitable starting point for a repository. Grabbing the main repo instead
> of one of its worktrees is probably OK for most tests.
Good point: we probably also need to exclude `*/worktrees/*`, but that is
a bit trickier as we would not want to exclude, say,
`refs/heads/worktrees/cleanup`.
Ciao,
Dscho
>
> t/perf/perf-lib.sh | 31 ++++++++++++++++++++++---------
> 1 file changed, 22 insertions(+), 9 deletions(-)
>
> diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
> index e385c6896f..1226be4005 100644
> --- a/t/perf/perf-lib.sh
> +++ b/t/perf/perf-lib.sh
> @@ -70,27 +70,40 @@ test_perf_do_repo_symlink_config_ () {
> test_have_prereq SYMLINKS || git config core.symlinks false
> }
>
> +test_perf_copy_repo_contents () {
> + for stuff in "$1"/*
> + do
> + case "$stuff" in
> + */objects|*/hooks|*/config|*/commondir)
> + ;;
> + *)
> + cp -R "$stuff" "$repo/.git/" || exit 1
> + ;;
> + esac
> + done
> +}
> +
> test_perf_create_repo_from () {
> test "$#" = 2 ||
> BUG "not 2 parameters to test-create-repo"
> repo="$1"
> source="$2"
> source_git="$("$MODERN_GIT" -C "$source" rev-parse --git-dir)"
> objects_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-path objects)"
> + common_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-common-dir)"
> mkdir -p "$repo/.git"
> (
> cd "$source" &&
> { cp -Rl "$objects_dir" "$repo/.git/" 2>/dev/null ||
> cp -R "$objects_dir" "$repo/.git/"; } &&
> - for stuff in "$source_git"/*; do
> - case "$stuff" in
> - */objects|*/hooks|*/config|*/commondir)
> - ;;
> - *)
> - cp -R "$stuff" "$repo/.git/" || exit 1
> - ;;
> - esac
> - done
> +
> + # common_dir must come first here, since we want source_git to
> + # take precedence and overwrite any overlapping files
> + test_perf_copy_repo_contents "$common_dir"
> + if test "$source_git" != "$common_dir"
> + then
> + test_perf_copy_repo_contents "$source_git"
> + fi
> ) &&
> (
> cd "$repo" &&
> --
> 2.30.1.989.g5e01c2f281
>
>
^ permalink raw reply related [relevance 0%]
* [PATCH] t/perf: handle worktrees as test repos
@ 2021-02-16 20:12 4% Jeff King
2021-02-16 21:13 0% ` Johannes Schindelin
0 siblings, 1 reply; 162+ results
From: Jeff King @ 2021-02-16 20:12 UTC (permalink / raw)
To: git; +Cc: Derrick Stolee
The perf suite gets confused when test_perf_default_repo is pointed at a
worktree (which includes when it is run from within a worktree at all,
since the default is to use the current repository).
Here's an example:
$ git worktree add ~/foo
Preparing worktree (new branch 'foo')
HEAD is now at 328c109303 The eighth batch
$ cd ~/foo
$ make
[...build output...]
$ cd t/perf
$ ./p0000-perf-lib-sanity.sh -v -i
[...]
perf 1 - test_perf_default_repo works:
running:
foo=$(git rev-parse HEAD) &&
test_export foo
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
The problem is that we didn't copy all of the necessary files from the
source repository (in this case we got HEAD, but we have no refs!). We
discover the git-dir with "rev-parse --git-dir", but this points to the
worktree's partial repository in .../.git/worktrees/foo.
That partial repository has a "commondir" file which points to the main
repository, where the actual refs are stored, but we don't copy it. This
is the correct thing to do, though! If we did copy it, then our scratch
test repo would be pointing back to the original main repo, and any ref
updates we made in the tests would impact that original repo.
Instead, we need to either:
1. Make a scratch copy of the original main repo (in addition to the
worktree repo), and point the scratch worktree repo's commondir at
it. This preserves the original relationship, but it's doubtful any
script really cares (if they are testing worktree performance,
they'd probably make their own worktrees). And it's trickier to get
right.
2. Collapse the main and worktree repos into a single scratch repo.
This can be done by copying everything from both, preferring any
files from the worktree repo.
This patch does the second one. With this applied, the example above
results in p0000 running successfully.
Reported-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Jeff King <peff@peff.net>
---
Having written that, it occurs to me that an even simpler solution is to
just always use the commondir as the source of the scratch repo. It does
not produce the same outcome, but the point is generally just to find a
suitable starting point for a repository. Grabbing the main repo instead
of one of its worktrees is probably OK for most tests.
t/perf/perf-lib.sh | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index e385c6896f..1226be4005 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -70,27 +70,40 @@ test_perf_do_repo_symlink_config_ () {
test_have_prereq SYMLINKS || git config core.symlinks false
}
+test_perf_copy_repo_contents () {
+ for stuff in "$1"/*
+ do
+ case "$stuff" in
+ */objects|*/hooks|*/config|*/commondir)
+ ;;
+ *)
+ cp -R "$stuff" "$repo/.git/" || exit 1
+ ;;
+ esac
+ done
+}
+
test_perf_create_repo_from () {
test "$#" = 2 ||
BUG "not 2 parameters to test-create-repo"
repo="$1"
source="$2"
source_git="$("$MODERN_GIT" -C "$source" rev-parse --git-dir)"
objects_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-path objects)"
+ common_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-common-dir)"
mkdir -p "$repo/.git"
(
cd "$source" &&
{ cp -Rl "$objects_dir" "$repo/.git/" 2>/dev/null ||
cp -R "$objects_dir" "$repo/.git/"; } &&
- for stuff in "$source_git"/*; do
- case "$stuff" in
- */objects|*/hooks|*/config|*/commondir)
- ;;
- *)
- cp -R "$stuff" "$repo/.git/" || exit 1
- ;;
- esac
- done
+
+ # common_dir must come first here, since we want source_git to
+ # take precedence and overwrite any overlapping files
+ test_perf_copy_repo_contents "$common_dir"
+ if test "$source_git" != "$common_dir"
+ then
+ test_perf_copy_repo_contents "$source_git"
+ fi
) &&
(
cd "$repo" &&
--
2.30.1.989.g5e01c2f281
^ permalink raw reply related [relevance 4%]
* Re: [PATCH 0/1] blame: remove unnecessary use of get_commit_info()
2021-02-16 16:31 7% [PATCH 0/1] blame: remove unnecessary use of get_commit_info() Rafael Silva
@ 2021-02-16 18:35 0% ` Derrick Stolee
2021-02-17 14:54 6% ` [PATCH v2 " Rafael Silva
1 sibling, 0 replies; 162+ results
From: Derrick Stolee @ 2021-02-16 18:35 UTC (permalink / raw)
To: Rafael Silva, git; +Cc: Stefan Beller, Junio C Hamano
On 2/16/2021 11:31 AM, Rafael Silva wrote:
> Running Git PERF suite in linux.git, I've got a subtle performance
> improvement for some runs:
>
> # git.328c109303 - compiled git from commit 328c109303
> # git.blame-patched - compiled git from commit 328c109303 + this patch
> Test git.328c109303 git.blame-patched
> -------------------------------------------------------------------------------------
> blame --color-by-age kernel/fork.c 1.96(1.81+0.15) 1.95(1.80+0.14) -0.5%
> blame --color-by-age kernel/sys.c 1.67(1.53+0.13) 1.66(1.52+0.14) -0.6%
> blame --color-by-age mm/slab.c 2.16(2.00+0.16) 2.15(1.99+0.15) -0.5%
> blame --color-by-age lib/packing.c 0.20(0.14+0.05) 0.20(0.14+0.05) +0.0%
> blame --color-by-age drivers/cdrom/cdrom.c 1.62(1.46+0.15) 1.62(1.46+0.15) +0.0%
> blame --color-by-age crypto/crypto_engine.c 0.37(0.29+0.06) 0.36(0.28+0.06) -2.7%
> blame --color-by-age net/ipv4/ip_forward.c 1.49(1.35+0.13) 1.48(1.34+0.13) -0.7%
Have you updated the commit-graph with changed-path Bloom filters in
your copy of linux.git before running the perf tests? You might get
smaller numbers overall (both sides) but make the difference for this
patch be more pronounced:
git commit-graph write --reachable --changed-paths
> To dig a little deeper, I enabled the Git's trace2 API to record every
> call to the determine_line_heat() function:
>
> ...
> + trace2_region_enter("blame", "determine_line_heat", the_repository);
> determine_line_heat(ent, &default_color);
> + trace2_region_enter("blame", "determine_line_heat", the_repository);
> ...
>
> Then, running `blame` for "kernel/fork.c` and _summing_ all the execution
> time for every call (around 1.3k calls) resulted in 2.6x faster execution
> (best out 3):
>
> git built from 328c109303 (The eighth batch, 2021-02-12) = 42ms
> git built from 328c109303 + this patch = 16ms
This is a good way to demonstrate the change. Definitely worthwhile for
demonstrating the value of the patch. I'll second Taylor's request that
this performance data goes in the commit message so we can see the details
in the future.
Thanks,
-Stolee
^ permalink raw reply [relevance 0%]
* [PATCH 0/1] blame: remove unnecessary use of get_commit_info()
@ 2021-02-16 16:31 7% Rafael Silva
2021-02-16 18:35 0% ` Derrick Stolee
2021-02-17 14:54 6% ` [PATCH v2 " Rafael Silva
0 siblings, 2 replies; 162+ results
From: Rafael Silva @ 2021-02-16 16:31 UTC (permalink / raw)
To: git; +Cc: Stefan Beller, Junio C Hamano, Rafael Silva
This patch is a code cleanup and consequently a micro optimization in
determine_heat_line().
When `blame`ing with --color-by-age, the determine_line_heat() calls the
get_commit_info() to parse the commit's information. However, it turns
out this is actually unnecessary because its caller also does the same.
We can instead, pass the already parsed `commit_info` and remove the
internal call to get_commit_info().
The performance optimization made by this patch is relatively small as
get_commit_info() doesn't perform any heavy-load operations. So, the
performance improvements is not that exciting, not at least until you
enter the ms/μs realm. Nevertheless I thought the code cleanup is
still valid and the optimization is a bonus.
... digging into the the performance improvements, for those
who are curious ...
Running Git PERF suite in linux.git, I've got a subtle performance
improvement for some runs:
# git.328c109303 - compiled git from commit 328c109303
# git.blame-patched - compiled git from commit 328c109303 + this patch
Test git.328c109303 git.blame-patched
-------------------------------------------------------------------------------------
blame --color-by-age kernel/fork.c 1.96(1.81+0.15) 1.95(1.80+0.14) -0.5%
blame --color-by-age kernel/sys.c 1.67(1.53+0.13) 1.66(1.52+0.14) -0.6%
blame --color-by-age mm/slab.c 2.16(2.00+0.16) 2.15(1.99+0.15) -0.5%
blame --color-by-age lib/packing.c 0.20(0.14+0.05) 0.20(0.14+0.05) +0.0%
blame --color-by-age drivers/cdrom/cdrom.c 1.62(1.46+0.15) 1.62(1.46+0.15) +0.0%
blame --color-by-age crypto/crypto_engine.c 0.37(0.29+0.06) 0.36(0.28+0.06) -2.7%
blame --color-by-age net/ipv4/ip_forward.c 1.49(1.35+0.13) 1.48(1.34+0.13) -0.7%
To dig a little deeper, I enabled the Git's trace2 API to record every
call to the determine_line_heat() function:
...
+ trace2_region_enter("blame", "determine_line_heat", the_repository);
determine_line_heat(ent, &default_color);
+ trace2_region_enter("blame", "determine_line_heat", the_repository);
...
Then, running `blame` for "kernel/fork.c` and _summing_ all the execution
time for every call (around 1.3k calls) resulted in 2.6x faster execution
(best out 3):
git built from 328c109303 (The eighth batch, 2021-02-12) = 42ms
git built from 328c109303 + this patch = 16ms
Of course, this is on the milliseconds :).
Lastly, to get a better picture of the performance change, I computed
all the determine_line_heat()'s execution time, for all 3 calls, into
a distribution graph. The execution time is converted to microseconds
for ease of understanding:
# git built from 328c109303 (The eighth batch, 2021-02-12)
Time in μs 0.0 ~ 9.0 |
Time in μs 10.0 ~ 19.0 | *
Time in μs 20.0 ~ 29.0 | *****************
Time in μs 30.0 ~ 39.0 | *****************
Time in μs 40.0 ~ 49.0 | **
Time in μs 50.0 ~ 59.0 | *
Time in μs 60.0 ~ 69.0 | *
Time in μs 70.0 ~ 79.0 | *
Time in μs 80.0 ~ 89.0 | *
Time in μs 90.0 ~ 99.0 | *
Time in μs 100.0 ~ 109.0 | *
Time in μs 110.0 ~ 119.0 | *
Time in μs 120.0 ~ 129.0 |
Time in μs 130.0 ~ 139.0 | *
[N: 3915 | Median: 30.0 | Min: 19.0 | Max: 137.0]
# git built from 328c109303 + this patch
Time in μs 0.0 ~ 9.0 |
Time in μs 10.0 ~ 19.0 | *************************************
Time in μs 20.0 ~ 29.0 | *
Time in μs 30.0 ~ 39.0 | *
Time in μs 40.0 ~ 49.0 | *
Time in μs 50.0 ~ 59.0 | *
Time in μs 60.0 ~ 69.0 | *
Time in μs 70.0 ~ 79.0 | *
Time in μs 80.0 ~ 89.0 | *
Time in μs 90.0 ~ 99.0 |
... [ zero's omitted ] ...
Time in μs 150.0 ~ 159.0 |
Time in μs 160.0 ~ 169.0 | *
[N: 3915 | Median: 12.0 | Min: 10.0 | Max: 167.0]
Note: A "*" represent hundreds counter. One "*" is used
for any count between 1 and 99. (i.e: 23 = "*", 99 = "*",
100 = "**", 199 = "**", 200 = "***", etc).
With the changes introduced by this patch, the determine_line_heat()
mostly finishes its execution between 10μs and 19μs compared with the
current implementation that mostly finished around 20μs and 39μs.
Rafael Silva (1):
blame: remove unnecessary use of get_commit_info()
builtin/blame.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
--
2.30.1.842.gf6373b1729
^ permalink raw reply [relevance 7%]
* [ANNOUNCE] Git v2.30.0
@ 2020-12-28 19:09 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-12-28 19:09 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.30.0 is now available at the
usual places. It comprises 495 non-merge commits since
v2.29.0, contributed by 83 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.30.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 patches weren't in v2.29.0 are as follows.
Welcome to the Git development community!
Alexey, Amanda Shafack, Arusekk, Baptiste Fontaine, Bradley
M. Kuhn, Caleb Tillman, Charvi Mendiratta, Daniel Duvall,
Daniel Gurney, Dennis Ameling, Javier Spagnoletti, Jinoh Kang,
Joey Salazar, Konrad Borowski, m4sk1n, Marlon Rac Cambasis,
Martin Schön, Michał Kępień, Nate Avers, Nipunn Koorapati,
Rafael Silva, Robert Karszniewicz, Samuel Čavoj, Sean Barag,
Sibo Dong, Simão Afonso, Sohom Datta, Thomas Koutcher, and
Victor Engmark.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Spiers, Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex
Vandiver, Arnout Engelen, brian m. carlson, Christian Couder,
Chris. Webster, David Aguilar, Denton Liu, Derrick Stolee,
Dimitriy Ryazantcev, Đoàn Trần Công Danh, Drew DeVault,
Elijah Newren, Emily Shaffer, Emir Sarı, Eric Sunshine, Felipe
Contreras, Han-Wen Nienhuys, Jean-Noël Avila, Jeff Hostetler,
Jeff King, Jiang Xin, Johannes Berg, Johannes Schindelin,
Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano,
Kyle Meyer, Martin Ågren, Matheus Tavares, Matthias Rüster,
Nicolas Morey-Chaisemartin, Patrick Steinhardt, Peter Kaestle,
Peter Krefting, Philippe Blain, Phillip Wood, Pranit Bauva,
Pratyush Yadav, Ramsay Jones, Randall S. Becker, René Scharfe,
Sergey Organov, Serg Tereshchenko, Srinidhi Kaushik, Stefan
Haller, Štěpán Němec, SZEDER Gábor, Taylor Blau, Trần
Ngọc Quân, and Yi-Jyun Pan.
----------------------------------------------------------------
Git 2.30 Release Notes
======================
Updates since v2.29
-------------------
UI, Workflows & Features
* Userdiff for PHP update.
* Userdiff for Rust update.
* Userdiff for CSS update.
* The command line completion script (in contrib/) learned that "git
stash show" takes the options "git diff" takes.
* "git worktree list" now shows if each worktree is locked. This
possibly may open us to show other kinds of states in the future.
* "git maintenance", an extended big brother of "git gc", continues
to evolve.
* "git push --force-with-lease[=<ref>]" can easily be misused to lose
commits unless the user takes good care of their own "git fetch".
A new option "--force-if-includes" attempts to ensure that what is
being force-pushed was created after examining the commit at the
tip of the remote ref that is about to be force-replaced.
* "git clone" learned clone.defaultremotename configuration variable
to customize what nickname to use to call the remote the repository
was cloned from.
* "git checkout" learned to use checkout.guess configuration variable
and enable/disable its "--[no-]guess" option accordingly.
* "git resurrect" script (in contrib/) learned that the object names
may be longer than 40-hex depending on the hash function in use.
* "git diff A...B" learned "git diff --merge-base A B", which is a
longer short-hand to say the same thing.
* A sample 'push-to-checkout' hook, that performs the same as
what the built-in default action does, has been added.
* "git diff" family of commands learned the "-I<regex>" option to
ignore hunks whose changed lines all match the given pattern.
* The userdiff pattern learned to identify the function definition in
POSIX shells and bash.
* "git checkout-index" did not consistently signal an error with its
exit status, but now it does.
* 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. We are now
more lenient and accept a line with lone CR on it as a blank line,
too.
* Exit codes from "git remote add" etc. were not usable by scripted
callers, but now they are.
* "git archive" now allows compression level higher than "-9"
when generating tar.gz output.
* Zsh autocompletion (in contrib/) update.
* The maximum length of output filenames "git format-patch" creates
has become configurable (used to be capped at 64).
* "git rev-parse" learned the "--end-of-options" to help scripts to
safely take a parameter that is supposed to be a revision, e.g.
"git rev-parse --verify -q --end-of-options $rev".
* The command line completion script (in contrib/) learned to expand
commands that are alias of alias.
* "git update-ref --stdin" learns to take multiple transactions in a
single session.
* Various subcommands of "git config" that take value_regex
learned the "--literal-value" option to take the value_regex option
as a literal string.
* The transport layer was taught to optionally exchange the session
ID assigned by the trace2 subsystem during fetch/push transactions.
* "git imap-send" used to ignore configuration variables like
core.askpass; this has been corrected.
* "git $cmd $args", when $cmd is not a recognised subcommand, by
default tries to see if $cmd is a typo of an existing subcommand
and optionally executes the corrected command if there is only one
possibility, depending on the setting of help.autocorrect; the
users can now disable the whole thing, including the cycles spent
to find a likely typo, by setting the configuration variable to
'never'.
* "@" sometimes worked (e.g. "git push origin @:there") as a part of
a refspec element, but "git push origin @" did not work, which has
been corrected.
Performance, Internal Implementation, Development Support etc.
* Use "git archive" more to produce the release tarball.
* GitHub Actions automated test improvement to skip tests on a tree
identical to what has already been tested.
* Test-coverage for running commit-graph task "git maintenance" has
been extended.
* 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.
* Adjust tests so that they won't scream when the default initial
branch name is different from 'master'.
* Rewriting "git bisect" in C continues.
* More preliminary tests have been added to document desired outcomes
of various "directory rename" situations.
* Micro clean-up of a couple of test scripts.
* "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.
* The code to detect premature EOF in the sideband demultiplexer has
been cleaned up.
* "git fetch --depth=<n>" over the stateless RPC / smart HTTP
transport handled EOF from the client poorly at the server end.
* A specialization of hashmap that uses a string as key has been
introduced. Hopefully it will see wider use over time.
* "git bisect start/next" in a large span of history spends a lot of
time trying to come up with exactly the half-way point; this can be
optimized by stopping when we see a commit that is close enough to
the half-way point.
* A lazily defined test prerequisite can now be defined in terms of
another lazily defined test prerequisite.
* Expectation for the original contributor after responding to a
review comment to use the explanation in a patch update has been
described.
* Multiple "credential-store" backends can race to lock the same
file, causing everybody else but one to fail---reattempt locking
with some timeout to reduce the rate of the failure.
* "git-parse-remote" shell script library outlived its usefulness.
* Like die() and error(), a call to warning() will also trigger a
trace2 event.
* Use of non-reentrant localtime() has been removed.
* Non-reentrant time-related library functions and ctime/asctime with
awkward calling interfaces are banned from the codebase.
Fixes since v2.29
-----------------
* In 2.29, "--committer-date-is-author-date" option of "rebase" and
"am" subcommands lost the e-mail address by mistake, which has been
corrected.
(merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint).
* "git checkout -p A...B [-- <path>]" did not work, even though the
same command without "-p" correctly used the merge-base between
commits A and B.
(merge 35166b1fb5 dl/checkout-p-merge-base later to maint).
* 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.
(merge 712b0377db js/avoid-split-sideband-message later to maint).
* "git fast-import" wasted a lot of memory when many marks were in use.
(merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint).
* 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.
(merge 262d5ad5a5 es/test-cmp-typocatcher later to maint).
* 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.
(merge 85102ac71b ds/commit-graph-merging-fix later to maint).
* The meaning of a Signed-off-by trailer can vary from project to
project; this and also what it means to this project has been
clarified in the documentation.
(merge 3abd4a67d9 bk/sob-dco later to maint).
* "git credential' didn't honor the core.askPass configuration
variable (among other things), which has been corrected.
(merge 567ad2c0f9 tk/credential-config later to maint).
* Dev support to catch a tentative definition of a variable in our C
code as an error.
(merge 5539183622 jk/no-common later to maint).
* "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.
(merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint).
* "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).
(merge b0f266de11 jt/apply-reverse-twice later to maint).
* A recent oid->hash conversion missed one spot, breaking "git svn".
(merge 03bb366de4 bc/svn-hash-oid-fix later to maint).
* The documentation on the "--abbrev=<n>" option did not say the
output may be longer than "<n>" hexdigits, which has been
clarified.
(merge cda34e0d0c jc/abbrev-doc later to maint).
* "git p4" now honors init.defaultBranch configuration.
(merge 1b09d1917f js/p4-default-branch later to maint).
* 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).
(merge c779386182 jc/sequencer-stopped-sha-simplify later to maint).
* The code to see if "git stash drop" can safely remove refs/stash
has been made more careful.
(merge 4f44c5659b rs/empty-reflog-check-fix later to maint).
* "git log -L<range>:<path>" is documented to take no pathspec, but
this was not enforced by the command line option parser, which has
been corrected.
(merge 39664cb0ac jc/line-log-takes-no-pathspec later to maint).
* "git format-patch --output=there" did not work as expected and
instead crashed. The option is now supported.
(merge dc1672dd10 jk/format-patch-output later to maint).
* Define ARM64 compiled with MSVC to be little-endian.
(merge 0c038fc65a dg/bswap-msvc later to maint).
* "git rebase -i" did not store ORIG_HEAD correctly.
(merge 8843302307 pw/rebase-i-orig-head later to maint).
* "git blame -L :funcname -- path" did not work well for a path for
which a userdiff driver is defined.
* "make DEVELOPER=1 sparse" used to run sparse and let it emit
warnings; now such warnings will cause an error.
(merge 521dc56270 jc/sparse-error-for-developer-build later to maint).
* "git blame --ignore-revs-file=<file>" learned to ignore a
non-existent object name in the input, instead of complaining.
(merge c714d05875 jc/blame-ignore-fix later to maint).
* Running "git diff" while allowing external diff in a state with
unmerged paths used to segfault, which has been corrected.
(merge d66851806f jk/diff-release-filespec-fix later to maint).
* Build configuration cleanup.
(merge b990f02fd8 ab/config-mak-uname-simplify later to maint).
* Fix regression introduced when nvimdiff support in mergetool was added.
(merge 12026f46e7 pd/mergetool-nvimdiff later to maint).
* The exchange between receive-pack and proc-receive hook did not
carefully check for errors.
* The code was not prepared to deal with pack .idx file that is
larger than 4GB.
(merge 81c4c5cf2e jk/4gb-idx later to maint).
* Since jgit does not yet work with SHA-256 repositories, mark the
tests that use it not to run unless we are testing with ShA-1
repositories.
(merge ea699b4adc sg/t5310-jgit-wants-sha1 later to maint).
* Config parser fix for "git notes".
(merge 45fef1599a na/notes-displayref-is-not-boolean later to maint).
* Move a definition of compatibility wrapper from cache.h to
git-compat-util.h
(merge a76b138daa hn/sleep-millisec-decl later to maint).
* Error message fix.
(merge eaf5341538 km/stash-error-message-fix later to maint).
* "git pull --rebase --recurse-submodules" checked for local changes
in a wrong range and failed to run correctly when it should.
(merge 5176f20ffe pb/pull-rebase-recurse-submodules later to maint).
* "git push" that is killed may leave a pack-objects process behind,
still computing to find a good compression, wasting cycles. This
has been corrected.
(merge 8b59935114 jk/stop-pack-objects-when-push-is-killed later to maint).
* "git fetch" that is killed may leave a pack-objects process behind,
still computing to find a good compression, wasting cycles. This
has been corrected.
(merge 309a4028e7 jk/stop-pack-objects-when-fetch-is-killed later to maint).
* "git add -i" failed to honor custom colors configured to show
patches, which has been corrected.
(merge 96386faa03 js/add-i-color-fix later to maint).
* Processes that access packdata while the .idx file gets removed
(e.g. while repacking) did not fail or fall back gracefully as they
could.
(merge 506ec2fbda tb/idx-midx-race-fix later to maint).
* "git apply" adjusted the permission bits of working-tree files and
directories according to core.sharedRepository setting by mistake and
for a long time, which has been corrected.
(merge eb3c027e17 mt/do-not-use-scld-in-working-tree later to maint).
* "fetch-pack" could pass NULL pointer to unlink(2) when it sees an
invalid filename; the error checking has been tightened to make
this impossible.
(merge 6031af387e rs/fetch-pack-invalid-lockfile later to maint).
* "git maintenance run/start/stop" needed to be run in a repository
to hold the lockfile they use, but didn't make sure they are
actually in a repository, which has been corrected.
* The glossary described a branch as an "active" line of development,
which is misleading---a stale and non-moving branch is still a
branch.
(merge eef1ceabd8 so/glossary-branch-is-not-necessarily-active later to maint).
* Newer versions of xsltproc can assign IDs in HTML documents it
generates in a consistent manner. Use the feature to help format
HTML version of the user manual reproducibly.
(merge 3569e11d69 ae/doc-reproducible-html later to maint).
* Tighten error checking in the codepath that responds to "git fetch".
(merge d43a21bdbb jk/check-config-parsing-error-in-upload-pack later to maint).
* "git pack-redundant" when there is only one packfile used to crash,
which has been corrected.
(merge 0696232390 jx/pack-redundant-on-single-pack later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint).
(merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint).
(merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint).
(merge 6db29ab213 jk/fast-import-marks-cleanup later to maint).
(merge e5cf6d3df4 nk/dir-c-comment-update later to maint).
(merge 5710dcce74 jk/report-fn-typedef later to maint).
(merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint).
(merge 4e1bee9a99 js/t7006-cleanup later to maint).
(merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint).
(merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint).
(merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint).
(merge 9542d56379 sd/prompt-local-variable later to maint).
(merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint).
(merge b7e20b4373 mc/typofix later to maint).
(merge f6bcd9a8a4 js/test-whitespace-fixes later to maint).
(merge 53b67a801b js/test-file-size later to maint).
(merge 970909c2a7 rs/hashwrite-be64 later to maint).
(merge 5a923bb1f0 ma/list-object-filter-opt-msgfix later to maint).
(merge 1c3e412916 rs/archive-plug-leak-refname later to maint).
(merge d44e5267ea rs/plug-diff-cache-leak later to maint).
(merge 793c1464d3 ab/gc-keep-base-option later to maint).
(merge b86339b12b mt/worktree-error-message-fix later to maint).
(merge e01ae2a4a7 js/pull-rebase-use-advise later to maint).
(merge e63d774242 sn/config-doc-typofix later to maint).
(merge 08e9df2395 jk/multi-line-indent-style-fix later to maint).
(merge e66590348a da/vs-build-iconv-fix later to maint).
(merge 7fe07275be js/cmake-extra-built-ins-fix later to maint).
(merge 633eebe142 jb/midx-doc-update later to maint).
(merge 5885367e8f jh/index-v2-doc-on-fsmn later to maint).
(merge 14639a4779 jc/compat-util-setitimer-fix later to maint).
(merge 56f56ac50b ab/unreachable-break later to maint).
(merge 731d578b4f rb/nonstop-config-mak-uname-update later to maint).
(merge f4698738f9 es/perf-export-fix later to maint).
(merge 773c694142 nk/refspecs-negative-fix later to maint).
----------------------------------------------------------------
Changes since v2.29.0 are as follows:
Adam Spiers (1):
hook: add sample template for push-to-checkout
Alex Vandiver (2):
dir.c: fix comments to agree with argument name
fsmonitor: use fsmonitor data in `git diff`
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5037t)
Alexey (1):
completion: fix zsh installation instructions
Amanda Shafack (1):
t2200,t9832: avoid using 'git' upstream in a pipe
Arnout Engelen (1):
doc: make HTML manual reproducible
Arusekk (1):
l10n: pl.po: add translation and set team leader
Baptiste Fontaine (1):
l10n: fr.po Fix a typo
Bradley M. Kuhn (2):
Documentation: clarify and expand description of --signoff
Documentation: stylistically normalize references to Signed-off-by:
Caleb Tillman (1):
t0000: use test_path_is_file instead of "test -f"
Charvi Mendiratta (5):
t7101,t7102,t7201: modernize test formatting
t7102,t7201: remove unnecessary blank spaces in test body
t7102,t7201: remove whitespace after redirect operator
t7201: use 'git -C' to avoid subshell
t7201: put each command on a separate line
Chris. Webster (1):
ci: github action - add check for whitespace errors
Christian Couder (1):
filter-branch doc: fix filter-repo typo
Daniel Duvall (1):
upload-pack: allow stateless client EOF just prior to haves
Daniel Gurney (2):
compat/bswap.h: simplify MSVC endianness detection
compat/bswap.h: don't assume MSVC is little-endian
David Aguilar (1):
git-gui: ssh-askpass: add a checkbox to show the input text
Dennis Ameling (1):
ci(vs-build): stop passing the iconv library location explicitly
Denton Liu (18):
t4068: remove unnecessary >tmp
git-diff-index.txt: make --cached description a proper sentence
git-diff.txt: backtick quote command text
contrib/completion: extract common diff/difftool options
diff-lib: accept option flags in run_diff_index()
diff-lib: define diff_get_merge_base()
t4068: add --merge-base tests
builtin/diff-index: learn --merge-base
builtin/diff-tree: learn --merge-base
contrib/completion: complete `git diff --merge-base`
Documentation/config/checkout: replace sq with backticks
builtin/checkout: fix `git checkout -p HEAD...` bug
Doc: document "A...B" form for <tree-ish> in checkout and switch
add-patch: add NEEDSWORK about comparing commits
t2016: add a NEEDSWORK about the PERL prerequisite
checkout: learn to respect checkout.guess
contrib/git-resurrect.sh: indent with tabs
contrib/git-resurrect.sh: use hash-agnostic OID pattern
Derrick Stolee (28):
maintenance: add prefetch task
maintenance: add loose-objects task
maintenance: create auto condition for loose-objects
midx: enable core.multiPackIndex by default
midx: use start_delayed_progress()
maintenance: add incremental-repack task
maintenance: auto-size incremental-repack batch
maintenance: add incremental-repack auto condition
maintenance: optionally skip --auto process
maintenance: add --schedule option and config
for-each-repo: run subcommands on configured repos
maintenance: add [un]register subcommands
maintenance: add start/stop subcommands
maintenance: test commit-graph auto condition
commit-graph: ignore duplicates when merging layers
commit-graph: don't write commit-graph when disabled
maintenance: core.commitGraph=false prevents writes
maintenance: create maintenance.strategy config
maintenance: use 'incremental' strategy by default
maintenance: add troubleshooting guide to docs
config: convert multi_replace to flags
config: replace 'value_regex' with 'value_pattern'
t1300: test "set all" mode with value-pattern
t1300: add test for --replace-all with value-pattern
config: add --fixed-value option, un-implemented
config: plumb --fixed-value into config API
config: implement --fixed-value with --get*
maintenance: use 'git config --fixed-value'
Dimitriy Ryazantcev (1):
git-gui: update Russian translation
Drew DeVault (1):
help.c: help.autocorrect=never means "do not compute suggestions"
Elijah Newren (37):
hashmap: add usage documentation explaining hashmap_free[_entries]()
directory-rename-detection.txt: update references to regression tests
t6423: more involved directory rename test
t6423: update directory rename detection tests with new rule
t6423: more involved rules for renaming directories into each other
t7518: fix flaky grep invocation
test-lib: allow selecting tests by substring/glob with --run
t6006, t6012: adjust tests to use 'setup' instead of synonyms
test-lib: reduce verbosity of skipped tests
sequencer: remove duplicate rollback_lock_file() call
t/: new helper for tests that pass with ort but fail with recursive
merge tests: expect improved directory/file conflict handling in ort
t6416: correct expectation for rename/rename(1to2) + directory/file
t6404, t6423: expect improved rename/delete handling in ort backend
t6423: expect improved conflict markers labels in the ort backend
merge tests: expect slight differences in output for recursive vs. ort
t6423, t6436: note improved ort handling with dirty files
t6423: note improved ort handling with untracked files
t6423: add more details about direct resolution of directories
merge-ort: barebones API of new merge strategy with empty implementation
merge-ort-wrappers: new convience wrappers to mimic the old merge API
fast-rebase: demonstrate merge-ort's API via new test-tool command
hashmap: adjust spacing to fix argument alignment
hashmap: allow re-use after hashmap_free()
hashmap: introduce a new hashmap_partial_clear()
hashmap: provide deallocation function names
strmap: new utility functions
merge,rebase,revert: select ort or recursive by config or environment
strmap: add more utility functions
strmap: enable faster clearing and reusing of strmaps
strmap: add functions facilitating use as a string->int map
strmap: split create_entry() out of strmap_put()
strmap: add a strset sub-type
strmap: enable allocations to come from a mem_pool
strmap: take advantage of FLEXPTR_ALLOC_STR when relevant
Use new HASHMAP_INIT macro to simplify hashmap initialization
shortlog: use strset from strmap.h
Emily Shaffer (1):
MyFirstContribution: clarify asciidoc dependency
Emir Sarı (2):
l10n: tr: v2.30.0-r1
l10n: tr: v2.30.0-r2
Eric Sunshine (1):
t/perf: fix test_export() failure with BSD `sed`
Felipe Contreras (41):
completion: zsh: fix __gitcomp_direct()
completion: zsh: fix name due to broken autoloading
completion: zsh: fix bash script extension
completion: zsh: reorganize install instructions
completion: zsh: fix for directories with spaces
completion: zsh: update slave script locations
completion: prompt: fix color for Zsh
completion: zsh: fix for command aliasing
completion: bash: synchronize zsh wrapper
completion: bash: remove zsh wrapper
completion: zsh: fix completion for --no-.. options
completion: fix conflict with bashcomp
completion: zsh: add missing direct_append
completion: zsh: fix splitting of words
completion: zsh: simplify compadd functions
completion: zsh: simplify direct compadd
completion: zsh: trivial cleanup
completion: zsh: simplify nl_append
completion: zsh: simplify file_direct
completion: zsh: shuffle functions around
completion: zsh: refactor command completion
completion: zsh: improve command tags
completion: zsh: add alias descriptions
completion: zsh: trivial simplification
completion: zsh: add simple version check
completion: bash: trivial cleanup
completion: bash: cleanup cygwin check
completion: bash: remove old compat wrappers
zsh: update copyright notices
completion: bash: support recursive aliases
completion: bash: check for alias loop
completion: bash: improve alias loop detection
tests: push: improve cleanup of HEAD tests
tests: push: trivial cleanup
refspec: make @ a synonym of HEAD
refspec: trivial cleanup
.gitignore: remove dangling file
test: completion: fix typos
tests: lib-functions: trivial style cleanups
completion: zsh: fix file completion regression
completion: bash: fix gitk alias regression
Han-Wen Nienhuys (1):
move sleep_millisec to git-compat-util.h
Javier Spagnoletti (1):
userdiff: PHP: catch "abstract" and "final" functions
Jean-Noël Avila (3):
l10n: fr fix misleading message
l10n: fr.po: v2.30.0 rnd 1
l10n: fr.po v2.30.0 rnd 2
Jeff Hostetler (1):
index-format.txt: document v2 format of file system monitor extension
Jeff King (44):
fast-import: fix over-allocation of marks storage
usage: define a type for a reporting function
config.mak.dev: build with -fno-common
fast-import: remove duplicated option-parsing line
perl: check for perl warnings while running tests
t3436: check --committer-date-is-author-date result more carefully
am: fix broken email with --committer-date-is-author-date
rebase: fix broken email with --committer-date-is-author-date
am, sequencer: stop parsing our own committer ident
test-pkt-line: drop colon from sideband identity
checkout-index: drop error message from empty --stage=all
checkout-index: propagate errors to exit code
sideband: diagnose more sideband anomalies
format-patch: refactor output selection
format-patch: tie file-opening logic to output_directory
format-patch: support --output option
rev-parse: don't accept options after dashdash
rev-parse: put all options under the "-" check
rev-parse: handle --end-of-options
compute pack .idx byte offsets using size_t
use size_t to store pack .idx byte offsets
fsck: correctly compute checksums on idx files larger than 4GB
block-sha1: take a size_t length parameter
packfile: detect overflow in .idx file size checks
repack: make "exts" array available outside cmd_repack()
send-pack: kill pack-objects helper on signal or exit
submodule: fix fetch_in_submodule logic
upload-pack: kill pack-objects helper on signal or exit
banned.h: mark non-reentrant gmtime, etc as banned
t7900: speed up expensive test
gitignore: drop duplicate entry for git-sh-i18n
banned.h: mark ctime_r() and asctime_r() as banned
Makefile: mark git-maintenance as a builtin
upload-pack: propagate return value from object filter config callback
style: indent multiline "if" conditions to align
oid-array.h: drop sha1 mention from header guard
t0064: drop sha1 mention from filename
t0064: make duplicate tests more robust
cache.h: move hash/oid functions to hash.h
oid-array: make sort function public
oid-array: provide a for-loop iterator
commit-graph: drop count_distinct_commits() function
commit-graph: replace packed_oid_list with oid_array
commit-graph: use size_t for array allocation and indexing
Jiang Xin (7):
t5411: new helper filter_out_user_friendly_and_stable_output
receive-pack: gently write messages to proc-receive
receive-pack: use default version 0 for proc-receive
l10n: git.pot: v2.30.0 round 1 (70 new, 45 removed)
pack-redundant: fix crash when one packfile in repo
l10n: git.pot: v2.30.0 round 2 (1 new, 2 removed)
l10n: zh_CN: for git v2.30.0 l10n round 1 and 2
Jinoh Kang (2):
diff: allow passing NULL to diff_free_filespec_data()
t7800: simplify difftool test
Joey Salazar (1):
t7006: Use test_path_is_* functions in test script
Johannes Berg (1):
docs: multi-pack-index: remove note about future 'verify' work
Johannes Schindelin (75):
ci: work around old records of GitHub runs
ci: make the "skip-if-redundant" check more defensive
sideband: avoid reporting incomplete sideband messages
sideband: report unhandled incomplete sideband messages as bugs
SKIP_DASHED_BUILT_INS: do not skip the bin/ programs
fmt-merge-msg: also suppress "into main" by default
t9801: use `--` in preparation for default branch rename
tests: start moving to a different default main branch name
t6200: adjust suppression pattern to also match "main"
t5703: adjust a test case for the upcoming default branch name
t3200: prepare for `main` being shorter than `master`
t9902: prepare a test for the upcoming default branch name
tests: prepare aligned mentions of the default branch name
t1400: prepare for `main` being default branch name
t5411: start using the default branch name "main"
t5411: start adjusting the support files for init.defaultBranch=main
t5411: adjust the remaining support files for init.defaultBranch=main
t5411: finish preparing for `main` being the default branch name
t5515: use `main` as the name of the main branch for testing (part 1)
t5515: use `main` as the name of the main branch for testing (part 2)
t5515: use `main` as the name of the main branch for testing (part 3)
t5515: use `main` as the name of the main branch for testing (conclusion)
t2402: fix typo
ci: make the whitespace checker more robust
tests: consolidate the `file_size` function into `test-lib-functions.sh`
ci: avoid using the deprecated `set-env` construct
p4: respect init.defaultBranch
t1004: insert missing "branch" in a message
t3406: indent with tabs, not spaces
t3427: adjust stale comment
t5400,t5402: consistently indent with tabs, not with spaces
t5570: remove trailing padding
t9603: use tabs for indentation
add -i (built-in): do show an error message for incorrect inputs
add -i (built-in): send error messages to stderr
add -p (built-in): imitate `xdl_format_hunk_hdr()` generating hunk headers
add -i: use `reset_color` consistently
add -i (built-in): prevent the `reset` "color" from being configured
add -i (built-in): use correct names to load color.diff.* config
mergetools/bc: add `bc4` to the alias list for Beyond Compare
mergetool: avoid letting `list_tool_variants` break user-defined setups
add -p (built-in): do not color the progress indicator separately
add -i (built-in): use the same indentation as the Perl version
add -i (Perl version): color header to match the C version
add -p: prefer color.diff.context over color.diff.plain
add -i: verify in the tests that colors can be overridden
t2106: adjust style to the current conventions
t2106: make test independent of the current main branch name
t2106: ensure that the checkout fails for the expected reason
t3040: remove stale note
t1309: use a neutral branch name in the `onbranch` test cases
t4015: let the test pass with any default branch name
pull: colorize the hint about setting `pull.rebase`
t3404: do not depend on any specific default branch name
t5526: avoid depending on a specific default branch name
t5526: drop the prereq expecting the default branch name `main`
cmake: determine list of extra built-ins dynamically
t6300: avoid using the default name of the initial branch
t7064: avoid relying on a specific default branch name
init: document `init.defaultBranch` better
branch -m: allow renaming a yet-unborn branch
get_default_branch_name(): prepare for showing some advice
init: provide useful advice about init.defaultBranch
t1400: use `main` as initial branch name
t3200: finish transitioning to the initial branch name `main`
t3201: finalize transitioning to using the branch name `main`
t3203: complete the transition to using the branch name `main`
t3205: finalize transitioning to using the branch name `main`
t5505: finalize transitioning to using the branch name `main`
t5510: use `main` as initial branch name
t5703: use `main` as initial branch name
t6302: use `main` as initial branch name
t9902: use `main` as initial branch name
tests: drop the `PREPARE_FOR_MAIN_BRANCH` prereq
checkout -p: handle tree arguments correctly again
Jonathan Tan (3):
apply: when -R, also reverse list of sections
sequencer: tolerate abbreviated stopped-sha file
usage: add trace2 entry upon warning()
Jordi Mas (2):
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Steadmon (13):
docs: new capability to advertise session IDs
docs: new transfer.advertiseSID option
trace2: add a public function for getting the SID
upload-pack: advertise session ID in v0 capabilities
receive-pack: advertise session ID in v0 capabilities
serve: advertise session ID in v2 capabilities
transport: log received server session ID
fetch-pack: advertise session ID in capabilities
upload-pack, serve: log received client session ID
send-pack: advertise session ID in capabilities
receive-pack: log received client session ID
t7900: fix typo: "test_execpt_success"
t7900: use --fixed-value in git-maintenance tests
Junio C Hamano (35):
doc: preparatory clean-up of description on the sign-off option
SubmittingPatches: clarify DCO is our --signoff rule
Revert "test_cmp: diagnose incorrect arguments"
t7102: prepare expected output inside test_expect_* block
Git 2.29.1
other small fixes for 2.29.2
SubmittingPatches: clarify the purpose of the final resend
First batch
Git 2.29.2
Second batch
Makefile: enable -Wsparse-error for DEVELOPER build
Third batch
log: diagnose -L used with pathspec as an error
doc: clarify that --abbrev=<n> is about the minimum length
Fourth batch
format-patch: make output filename configurable
Fifth batch
ci: avoid `set-env` construct in print-test-failures.sh
Sixth batch
Seventh batch
MyFirstContribition: answering questions is not the end of the story
config doc: value-pattern is not necessarily a regexp
Eighth batch
Ninth batch
Revert "submodules: fix of regression on fetching of non-init subsub-repo"
Tenth batch
Eleventh batch
Git 2.30-rc0
strmap: make callers of strmap_remove() to call it in void context
compat-util: pretend that stub setitimer() always succeeds
diff: correct interaction between --exit-code and -I<pattern>
Another batch before 2.30-rc1
Git 2.30-rc1
Git 2.30-rc2
Git 2.30
Konrad Borowski (1):
userdiff: recognize 'macro_rules!' as starting a Rust function block
Kyle Meyer (1):
stash: add missing space to an error message
Marlon Rac Cambasis (1):
doc: fixing two trivial typos in Documentation/
Martin Schön (1):
git-gui: use commit message template
Martin Ågren (8):
list-objects-filter-options: fix function name in BUG
grep: don't set up a "default" repo for grep
grep: use designated initializers for `grep_defaults`
grep: copy struct in one fell swoop
MyFirstObjectWalk: drop `init_walken_defaults()`
git-maintenance.txt: add missing word
gc: fix handling of crontab magic markers
t7900-maintenance: test for magic markers
Matheus Tavares (2):
worktree: fix order of arguments in error message
apply: don't use core.sharedRepository to create working tree files
Matthias Rüster (1):
l10n: de.po: Update German translation for Git 2.30.0
Michał Kępień (2):
merge-base, xdiff: zero out xpparam_t structures
diff: add -I<regex> that ignores matching changes
Nate Avers (2):
notes.c: fix a segfault in notes_display_config()
t3301: test proper exit response to no-value notes.displayRef.
Nicolas Morey-Chaisemartin (1):
imap-send: parse default git config
Nipunn Koorapati (19):
t/perf/README: elaborate on output format
t/perf/p7519-fsmonitor.sh: warm cache on first git status
t/perf: add fsmonitor perf test for git diff
perf lint: add make test-lint to perf tests
p7519-fsmonitor: refactor to avoid code duplication
p7519-fsmonitor: add a git add benchmark
t/perf/fsmonitor: separate one time repo initialization
t/perf/fsmonitor: move watchman setup to one-time-repo-setup
t/perf/fsmonitor: improve error message if typoing hook name
t/perf/fsmonitor: factor description out for readability
t/perf/fsmonitor: shorten DESC to basename
t/perf/fsmonitor: silence initial git commit
t/perf/fsmonitor: factor setup for fsmonitor into function
t/perf/fsmonitor: initialize test with git reset
t/perf/fsmonitor: perf comparison of multiple fsmonitor integrations
t/perf/fsmonitor: add benchmark for dirty status
perf/fsmonitor: use test_must_be_empty helper
negative-refspec: fix segfault on : refspec
negative-refspec: improve comment on query_matches_negative_refspec
Patrick Steinhardt (4):
t1400: avoid touching refs on filesystem
update-ref: allow creation of multiple transactions
p1400: use `git-update-ref --stdin` to test multiple transactions
update-ref: disallow "start" for ongoing transactions
Peter Kaestle (1):
submodules: fix of regression on fetching of non-init subsub-repo
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (5038t0f0u)
l10n: sv.po: Update Swedish translation (5037t0f0u)
Philippe Blain (15):
ref-filter: handle CRLF at end-of-line more gracefully
log, show: add tests for messages containing CRLF
doc: log, gitk: move '-L' description to 'line-range-options.txt'
doc: line-range: improve formatting
blame-options.txt: also mention 'funcname' in '-L' description
doc: add more pointers to gitattributes(5) for userdiff
line-log: mention both modes in 'blame' and 'log' short help
blame: enable funcname blaming with userdiff driver
blame: simplify 'setup_scoreboard' interface
blame: simplify 'setup_blame_bloom_data' interface
pull --rebase: compute rebase arguments in separate function
t5572: add notes on a peculiar test
t5572: describe '--rebase' tests a little more
pull: check for local submodule modifications with the right range
git.txt: fix typos in 'linkgit' macro invocation
Phillip Wood (4):
rebase -i: stop overwriting ORIG_HEAD buffer
rebase -i: use struct object_id rather than looking up commit
rebase -i: use struct object_id when writing state
rebase -i: simplify get_revision_ranges()
Pranit Bauva (7):
bisect--helper: finish porting `bisect_start()` to C
bisect--helper: retire `--bisect-clean-state` subcommand
bisect--helper: retire `--next-all` subcommand
bisect--helper: reimplement `bisect_state` & `bisect_head` shell functions in C
bisect--helper: retire `--check-expected-revs` subcommand
bisect--helper: retire `--write-terms` subcommand
bisect--helper: retire `--bisect-autostart` subcommand
Pratyush Yadav (1):
git-gui: Only touch GITGUI_MSG when needed
Rafael Silva (2):
worktree: teach `list` to annotate locked worktree
maintenance: fix SEGFAULT when no repository
Ramsay Jones (6):
Documentation/Makefile: conditionally include doc.dep
Documentation/Makefile: conditionally include ../GIT-VERSION-FILE
gitweb/Makefile: conditionally include ../GIT-VERSION-FILE
Makefile: don't try to clean old debian build product
Makefile: don't use a versioned temp distribution directory
Makefile: conditionally include GIT-VERSION-FILE
Randall S. Becker (1):
config.mak.uname: remove old NonStop compatibility settings
René Scharfe (19):
Makefile: use git init/add/commit/archive for dist-doc
Makefile: remove the unused variable TAR_DIST_EXTRA_OPTS
grep: handle deref_tag() returning NULL
blame: handle deref_tag() returning NULL
line-log: handle deref_tag() returning NULL
object: allow clear_commit_marks_all to handle any repo
bisect: clear flags in passed repository
stash: simplify reflog emptiness check
pack-write: use hashwrite_be32() instead of double-buffering array
archive: support compression levels beyond 9
blame: silently ignore invalid ignore file objects
csum-file: add hashwrite_be64()
midx: use hashwrite_be64()
pack-write: use hashwrite_be64()
diff-lib: plug minor memory leaks in do_diff_cache()
archive: release refname after use
gc: fix cast in compare_tasks_by_selection()
fetch-pack: disregard invalid pack lockfiles
gitignore: remove entry for git serve
Robert Karszniewicz (2):
git-completion.bash: __git_diff_common_options: add --[no-]patch
git-completion.bash: stash-show: complete $__git_diff_common_options
SZEDER Gábor (4):
bisect: loosen halfway() check for a large number of commits
t5310-pack-bitmaps: skip JGit tests with SHA256
tests: make sure nested lazy prereqs work reliably
tests: fix description of 'test_set_prereq'
Samuel Čavoj (3):
sequencer: fix gpg option passed to merge subcommand
sequencer: pass explicit --no-gpg-sign to merge
t3435: add tests for rebase -r GPG signing
Sean Barag (7):
clone: add tests for --template and some disallowed option pairs
clone: use more conventional config/option layering
remote: add tests for add and rename with invalid names
refs: consolidate remote name validation
clone: validate --origin option before use
clone: read new remote name from remote_name instead of option_origin
clone: allow configurable default for `-o`/`--origin`
Serg Tereshchenko (1):
git-gui: Fix selected text colors
Sergey Organov (2):
doc/diff-options: fix out of place mentions of '--patch/-p'
glossary: improve "branch" definition
Sibo Dong (1):
git-prompt.sh: localize `option` in __git_ps1_show_upstream
Simão Afonso (1):
crendential-store: use timeout when locking file
Sohom Datta (1):
userdiff: expand detected chunk headers for css
Srinidhi Kaushik (3):
push: add reflog check for "--force-if-includes"
push: parse and set flag for "--force-if-includes"
t, doc: update tests, reference for "--force-if-includes"
Stefan Haller (2):
git-gui: fix colored label backgrounds when using themed widgets
git-gui: use gray background for inactive text widgets
Taylor Blau (7):
builtin/repack.c: keep track of what pack-objects wrote
builtin/repack.c: don't move existing packs out of the way
packfile.c: protect against disappearing indexes
midx.c: protect against disappearing packs
builtin/bugreport.c: use thread-safe localtime_r()
builtin/clone.c: don't ignore transport_fetch_refs() errors
upload-pack.c: don't free allowed_filters util pointers
Thomas Koutcher (1):
credential: load default config
Trần Ngọc Quân (1):
l10n: vi.po(5037t): v2.30.0 rnd 2
Victor Engmark (1):
userdiff: support Bash
Yi-Jyun Pan (1):
l10n: zh_TW.po: v2.30.0 round 2 (1 untranslated)
brian m. carlson (1):
svn: use correct variable name for short OID
m4sk1n (1):
l10n: pl.po: started Polish translation
Ævar Arnfjörð Bjarmason (9):
remote: add meaningful exit code on missing/existing
config.mak.uname: remove unused the NO_R_TO_GCC_LINKER flag
config.mak.uname: remove unused NEEDS_SSL_WITH_CURL flag
submodule: use "fetch" logic instead of custom remote discovery
submodule: remove sh function in favor of helper
parse-remote: remove this now-unused library
gc docs: change --keep-base-pack to --keep-largest-pack
gc: rename keep_base_pack variable for --keep-largest-pack
style: do not "break" in switch() after "return"
Đoàn Trần Công Danh (1):
doc: mention Python 3.x supports
Štěpán Němec (1):
config.txt: fix a typo (backslash != backquote)
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.30.0-rc1
@ 2020-12-19 4:34 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-12-19 4:34 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.30.0-rc1 is now available for testing
at the usual places. It is comprised of 455 non-merge commits
since v2.29.0, contributed by 72 people, 26 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.30.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.29.0 are as follows.
Welcome to the Git development community!
Alexey, Amanda Shafack, Bradley M. Kuhn, Caleb Tillman, Charvi
Mendiratta, Daniel Duvall, Daniel Gurney, Dennis Ameling, Javier
Spagnoletti, Jinoh Kang, Joey Salazar, Konrad Borowski, Marlon
Rac Cambasis, Martin Schön, Michał Kępień, Nate Avers,
Nipunn Koorapati, Rafael Silva, Robert Karszniewicz, Samuel
Čavoj, Sean Barag, Sibo Dong, Simão Afonso, Sohom Datta,
Thomas Koutcher, and Victor Engmark.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Spiers, Ævar Arnfjörð Bjarmason, Alex Vandiver, Arnout
Engelen, brian m. carlson, Christian Couder, Chris. Webster,
David Aguilar, Denton Liu, Derrick Stolee, Dimitriy Ryazantcev,
Đoàn Trần Công Danh, Drew DeVault, Elijah Newren,
Emily Shaffer, Eric Sunshine, Felipe Contreras, Han-Wen
Nienhuys, Jeff Hostetler, Jeff King, Jiang Xin, Johannes
Berg, Johannes Schindelin, Jonathan Tan, Josh Steadmon,
Junio C Hamano, Kyle Meyer, Martin Ågren, Matheus Tavares,
Nicolas Morey-Chaisemartin, Patrick Steinhardt, Peter Kaestle,
Philippe Blain, Phillip Wood, Pranit Bauva, Pratyush Yadav,
Ramsay Jones, Randall S. Becker, René Scharfe, Sergey Organov,
Serg Tereshchenko, Srinidhi Kaushik, Stefan Haller, Štěpán
Němec, SZEDER Gábor, and Taylor Blau.
----------------------------------------------------------------
Git 2.30 Release Notes (draft)
==============================
Updates since v2.29
-------------------
UI, Workflows & Features
* Userdiff for PHP update.
* Userdiff for Rust update.
* Userdiff for CSS update.
* The command line completion script (in contrib/) learned that "git
stash show" takes the options "git diff" takes.
* "git worktree list" now shows if each worktree is locked. This
possibly may open us to show other kinds of states in the future.
* "git maintenance", an extended big brother of "git gc", continues
to evolve.
* "git push --force-with-lease[=<ref>]" can easily be misused to lose
commits unless the user takes good care of their own "git fetch".
A new option "--force-if-includes" attempts to ensure that what is
being force-pushed was created after examining the commit at the
tip of the remote ref that is about to be force-replaced.
* "git clone" learned clone.defaultremotename configuration variable
to customize what nickname to use to call the remote the repository
was cloned from.
* "git checkout" learned to use checkout.guess configuration variable
and enable/disable its "--[no-]guess" option accordingly.
* "git resurrect" script (in contrib/) learned that the object names
may be longer than 40-hex depending on the hash function in use.
* "git diff A...B" learned "git diff --merge-base A B", which is a
longer short-hand to say the same thing.
* A sample 'push-to-checkout' hook, that performs the same as
what the built-in default action does, has been added.
* "git diff" family of commands learned the "-I<regex>" option to
ignore hunks whose changed lines all match the given pattern.
* The userdiff pattern learned to identify the function definition in
POSIX shells and bash.
* "git checkout-index" did not consistently signal an error with its
exit status, but now it does.
* 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. We are now
more lenient and accept a line with lone CR on it as a blank line,
too.
* Exit codes from "git remote add" etc. were not usable by scripted
callers, but now they are.
* "git archive" now allows compression level higher than "-9"
when generating tar.gz output.
* Zsh autocompletion (in contrib/) update.
* The maximum length of output filenames "git format-patch" creates
has become configurable (used to be capped at 64).
* "git rev-parse" learned the "--end-of-options" to help scripts to
safely take a parameter that is supposed to be a revision, e.g.
"git rev-parse --verify -q --end-of-options $rev".
* The command line completion script (in contrib/) learned to expand
commands that are alias of alias.
* "git update-ref --stdin" learns to take multiple transactions in a
single session.
* Various subcommands of "git config" that takes value_regex
learn the "--literal-value" option to take the value_regex option
as a literal string.
* The transport layer was taught to optionally exchange the session
ID assigned by the trace2 subsystem during fetch/push transactions.
* "git imap-send" used to ignore configuration variables like
core.askpass; this has been corrected.
* "git $cmd $args", when $cmd is not a recognised subcommand, by
default tries to see if $cmd is a typo of an existing subcommand
and optionally executes the corrected command if there is only one
possibility, depending on the setting of help.autocorrect; the
users can now disable the whole thing, including the cycles spent
to find a likely typo, by setting the configuration variable to
'never'.
* "@" sometimes worked (e.g. "git push origin @:there") as a part of
a refspec element, but "git push origin @" did not work, which has
been corrected.
Performance, Internal Implementation, Development Support etc.
* Use "git archive" more to produce the release tarball.
* GitHub Actions automated test improvement to skip tests on a tree
identical to what has already been tested.
* Test-coverage for running commit-graph task "git maintenance" has
been extended.
* 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.
* Adjust tests so that they won't scream when the default initial
branch name is changed to 'main'.
* Rewriting "git bisect" in C continues.
* More preliminary tests have been added to document desired outcome
of various "directory rename" situations.
* Micro clean-up of a couple of test scripts.
* "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.
* The code to detect premature EOF in the sideband demultiplexer has
been cleaned up.
* Test scripts are being prepared to transition of the default branch
name to 'main'.
* "git fetch --depth=<n>" over the stateless RPC / smart HTTP
transport handled EOF from the client poorly at the server end.
* A specialization of hashmap that uses a string as key has been
introduced. Hopefully it will see wider use over time.
* "git bisect start/next" in a large span of history spends a lot of
time trying to come up with exactly the half-way point; this can be
optimized by stopping when we see a commit that is close enough to
the half-way point.
* A lazily defined test prerequisite can now be defined in terms of
another lazily defined test prerequisite.
* Expectation for the original contributor after responding to a
review comment to use the explanation in a patch update has been
described.
* Multiple "credential-store" backends can race to lock the same
file, causing everybody else but one to fail---reattempt locking
with some timeout to reduce the rate of the failure.
* "git-parse-remote" shell script library outlived its usefulness.
* Like die() and error(), a call to warning() will also trigger a
trace2 event.
* Use of non-reentrant localtime() has been removed.
* Non-reentrant time-related library functions and ctime/asctime with
awkward calling interfaces are banned from the codebase.
Fixes since v2.29
-----------------
* In 2.29, "--committer-date-is-author-date" option of "rebase" and
"am" subcommands lost the e-mail address by mistake, which has been
corrected.
(merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint).
* "git checkout -p A...B [-- <path>]" did not work, even though the
same command without "-p" correctly used the merge-base between
commits A and B.
(merge 35166b1fb5 dl/checkout-p-merge-base later to maint).
* 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.
(merge 712b0377db js/avoid-split-sideband-message later to maint).
* "git fast-import" wasted a lot of memory when many marks were in use.
(merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint).
* 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.
(merge 262d5ad5a5 es/test-cmp-typocatcher later to maint).
* 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.
(merge 85102ac71b ds/commit-graph-merging-fix later to maint).
* The meaning of a Signed-off-by trailer can vary from project to
project; this and also what it means to this project has been
clarified in the documentation.
(merge 3abd4a67d9 bk/sob-dco later to maint).
* "git credential' didn't honor the core.askPass configuration
variable (among other things), which has been corrected.
(merge 567ad2c0f9 tk/credential-config later to maint).
* Dev support to catch a tentative definition of a variable in our C
code as an error.
(merge 5539183622 jk/no-common later to maint).
* "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.
(merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint).
* "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).
(merge b0f266de11 jt/apply-reverse-twice later to maint).
* A recent oid->hash conversion missed one spot, breaking "git svn".
(merge 03bb366de4 bc/svn-hash-oid-fix later to maint).
* The documentation on the "--abbrev=<n>" option did not say the
output may be longer than "<n>" hexdigits, which has been
clarified.
(merge cda34e0d0c jc/abbrev-doc later to maint).
* "git p4" now honors init.defaultBranch configuration.
(merge 1b09d1917f js/p4-default-branch later to maint).
* 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).
(merge c779386182 jc/sequencer-stopped-sha-simplify later to maint).
* The code to see if "git stash drop" can safely remove refs/stash
has been made more carerful.
(merge 4f44c5659b rs/empty-reflog-check-fix later to maint).
* "git log -L<range>:<path>" is documented to take no pathspec, but
this was not enforced by the command line option parser, which has
been corrected.
(merge 39664cb0ac jc/line-log-takes-no-pathspec later to maint).
* "git format-patch --output=there" did not work as expected and
instead crashed. The option is now supported.
(merge dc1672dd10 jk/format-patch-output later to maint).
* Define ARM64 compiled with MSVC to be little-endian.
(merge 0c038fc65a dg/bswap-msvc later to maint).
* "git rebase -i" did not store ORIG_HEAD correctly.
(merge 8843302307 pw/rebase-i-orig-head later to maint).
* "git blame -L :funcname -- path" did not work well for a path for
which a userdiff driver is defined.
* "make DEVELOPER=1 sparse" used to run sparse and let it emit
warnings; now such warnings will cause an error.
(merge 521dc56270 jc/sparse-error-for-developer-build later to maint).
* "git blame --ignore-revs-file=<file>" learned to ignore a
non-existent object name in the input, instead of complaining.
(merge c714d05875 jc/blame-ignore-fix later to maint).
* Running "git diff" while allowing external diff in a state with
unmerged paths used to segfault, which has been corrected.
(merge d66851806f jk/diff-release-filespec-fix later to maint).
* Build configuration cleanup.
(merge b990f02fd8 ab/config-mak-uname-simplify later to maint).
* Fix regression introduced when nvimdiff support in mergetool was added.
(merge 12026f46e7 pd/mergetool-nvimdiff later to maint).
* The exchange between receive-pack and proc-receive hook did not
carefully check for errors.
* The code was not prepared to deal with pack .idx file that is
larger than 4GB.
(merge 81c4c5cf2e jk/4gb-idx later to maint).
* Since jgit does not yet work with SHA-256 repositories, mark the
tests that uses it not to run unless we are testing with ShA-1
repositories.
(merge ea699b4adc sg/t5310-jgit-wants-sha1 later to maint).
* Config parser fix for "git notes".
(merge 45fef1599a na/notes-displayref-is-not-boolean later to maint).
* Move a definition of compatibility wrapper from cache.h to
git-compat-util.h
(merge a76b138daa hn/sleep-millisec-decl later to maint).
* Error message fix.
(merge eaf5341538 km/stash-error-message-fix later to maint).
* "git pull --rebase --recurse-submodules" checked for local changes
in a wrong range and failed to run correctly when it should.
(merge 5176f20ffe pb/pull-rebase-recurse-submodules later to maint).
* "git push" that is killed may leave a pack-objects process behind,
still computing to find a good compression, wasting cycles. This
has been corrected.
(merge 8b59935114 jk/stop-pack-objects-when-push-is-killed later to maint).
* "git fetch" that is killed may leave a pack-objects process behind,
still computing to find a good compression, wasting cycles. This
has been corrected.
(merge 309a4028e7 jk/stop-pack-objects-when-fetch-is-killed later to maint).
* "git add -i" failed to honor custom colors configured to show
patches, which has been corrected.
(merge 96386faa03 js/add-i-color-fix later to maint).
* Processes that access packdata while the .idx file gets removed
(e.g. while repacking) did not fail or fall back gracefully as they
could.
(merge 506ec2fbda tb/idx-midx-race-fix later to maint).
* "git apply" adjusted the permission bits of working-tree files and
directories according core.sharedRepository setting by mistake and
for a long time, which has been corrected.
(merge eb3c027e17 mt/do-not-use-scld-in-working-tree later to maint).
* "fetch-pack" could pass NULL pointer to unlink(2) when it sees an
invalid filename; the error checking has been tightened to make
this impossible.
(merge 6031af387e rs/fetch-pack-invalid-lockfile later to maint).
* "git maintenance run/start/stop" needed to be run in a repository
to hold the lockfile they use, but didn't make sure they are
actually in a repository, which has been corrected.
* The glossary described a branch as an "active" line of development,
which is misleading---a stale and non-moving branch is still a
branch.
(merge eef1ceabd8 so/glossary-branch-is-not-necessarily-active later to maint).
* Newer versions of xsltproc can assign IDs in HTML documents it
generates in a consistent manner. Use the feature to help format
HTML version of the user manual reproducibly.
(merge 3569e11d69 ae/doc-reproducible-html later to maint).
* Tighten error checking in the codepath that responds to "git fetch".
(merge d43a21bdbb jk/check-config-parsing-error-in-upload-pack later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint).
(merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint).
(merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint).
(merge 6db29ab213 jk/fast-import-marks-cleanup later to maint).
(merge e5cf6d3df4 nk/dir-c-comment-update later to maint).
(merge 5710dcce74 jk/report-fn-typedef later to maint).
(merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint).
(merge 4e1bee9a99 js/t7006-cleanup later to maint).
(merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint).
(merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint).
(merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint).
(merge 9542d56379 sd/prompt-local-variable later to maint).
(merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint).
(merge b7e20b4373 mc/typofix later to maint).
(merge f6bcd9a8a4 js/test-whitespace-fixes later to maint).
(merge 53b67a801b js/test-file-size later to maint).
(merge 970909c2a7 rs/hashwrite-be64 later to maint).
(merge 5a923bb1f0 ma/list-object-filter-opt-msgfix later to maint).
(merge 1c3e412916 rs/archive-plug-leak-refname later to maint).
(merge d44e5267ea rs/plug-diff-cache-leak later to maint).
(merge 793c1464d3 ab/gc-keep-base-option later to maint).
(merge b86339b12b mt/worktree-error-message-fix later to maint).
(merge e01ae2a4a7 js/pull-rebase-use-advise later to maint).
(merge e63d774242 sn/config-doc-typofix later to maint).
(merge 08e9df2395 jk/multi-line-indent-style-fix later to maint).
(merge e66590348a da/vs-build-iconv-fix later to maint).
(merge 7fe07275be js/cmake-extra-built-ins-fix later to maint).
(merge 633eebe142 jb/midx-doc-update later to maint).
(merge 5885367e8f jh/index-v2-doc-on-fsmn later to maint).
(merge 14639a4779 jc/compat-util-setitimer-fix later to maint).
(merge 56f56ac50b ab/unreachable-break later to maint).
(merge 731d578b4f rb/nonstop-config-mak-uname-update later to maint).
(merge f4698738f9 es/perf-export-fix later to maint).
----------------------------------------------------------------
Changes since v2.29.0 are as follows:
Adam Spiers (1):
hook: add sample template for push-to-checkout
Alex Vandiver (2):
dir.c: fix comments to agree with argument name
fsmonitor: use fsmonitor data in `git diff`
Alexey (1):
completion: fix zsh installation instructions
Amanda Shafack (1):
t2200,t9832: avoid using 'git' upstream in a pipe
Arnout Engelen (1):
doc: make HTML manual reproducible
Bradley M. Kuhn (2):
Documentation: clarify and expand description of --signoff
Documentation: stylistically normalize references to Signed-off-by:
Caleb Tillman (1):
t0000: use test_path_is_file instead of "test -f"
Charvi Mendiratta (5):
t7101,t7102,t7201: modernize test formatting
t7102,t7201: remove unnecessary blank spaces in test body
t7102,t7201: remove whitespace after redirect operator
t7201: use 'git -C' to avoid subshell
t7201: put each command on a separate line
Chris. Webster (1):
ci: github action - add check for whitespace errors
Christian Couder (1):
filter-branch doc: fix filter-repo typo
Daniel Duvall (1):
upload-pack: allow stateless client EOF just prior to haves
Daniel Gurney (2):
compat/bswap.h: simplify MSVC endianness detection
compat/bswap.h: don't assume MSVC is little-endian
David Aguilar (1):
git-gui: ssh-askpass: add a checkbox to show the input text
Dennis Ameling (1):
ci(vs-build): stop passing the iconv library location explicitly
Denton Liu (18):
t4068: remove unnecessary >tmp
git-diff-index.txt: make --cached description a proper sentence
git-diff.txt: backtick quote command text
contrib/completion: extract common diff/difftool options
diff-lib: accept option flags in run_diff_index()
diff-lib: define diff_get_merge_base()
t4068: add --merge-base tests
builtin/diff-index: learn --merge-base
builtin/diff-tree: learn --merge-base
contrib/completion: complete `git diff --merge-base`
Documentation/config/checkout: replace sq with backticks
builtin/checkout: fix `git checkout -p HEAD...` bug
Doc: document "A...B" form for <tree-ish> in checkout and switch
add-patch: add NEEDSWORK about comparing commits
t2016: add a NEEDSWORK about the PERL prerequisite
checkout: learn to respect checkout.guess
contrib/git-resurrect.sh: indent with tabs
contrib/git-resurrect.sh: use hash-agnostic OID pattern
Derrick Stolee (28):
maintenance: add prefetch task
maintenance: add loose-objects task
maintenance: create auto condition for loose-objects
midx: enable core.multiPackIndex by default
midx: use start_delayed_progress()
maintenance: add incremental-repack task
maintenance: auto-size incremental-repack batch
maintenance: add incremental-repack auto condition
maintenance: optionally skip --auto process
maintenance: add --schedule option and config
for-each-repo: run subcommands on configured repos
maintenance: add [un]register subcommands
maintenance: add start/stop subcommands
maintenance: test commit-graph auto condition
commit-graph: ignore duplicates when merging layers
commit-graph: don't write commit-graph when disabled
maintenance: core.commitGraph=false prevents writes
maintenance: create maintenance.strategy config
maintenance: use 'incremental' strategy by default
maintenance: add troubleshooting guide to docs
config: convert multi_replace to flags
config: replace 'value_regex' with 'value_pattern'
t1300: test "set all" mode with value-pattern
t1300: add test for --replace-all with value-pattern
config: add --fixed-value option, un-implemented
config: plumb --fixed-value into config API
config: implement --fixed-value with --get*
maintenance: use 'git config --fixed-value'
Dimitriy Ryazantcev (1):
git-gui: update Russian translation
Drew DeVault (1):
help.c: help.autocorrect=never means "do not compute suggestions"
Elijah Newren (37):
hashmap: add usage documentation explaining hashmap_free[_entries]()
directory-rename-detection.txt: update references to regression tests
t6423: more involved directory rename test
t6423: update directory rename detection tests with new rule
t6423: more involved rules for renaming directories into each other
t7518: fix flaky grep invocation
test-lib: allow selecting tests by substring/glob with --run
t6006, t6012: adjust tests to use 'setup' instead of synonyms
test-lib: reduce verbosity of skipped tests
sequencer: remove duplicate rollback_lock_file() call
t/: new helper for tests that pass with ort but fail with recursive
merge tests: expect improved directory/file conflict handling in ort
t6416: correct expectation for rename/rename(1to2) + directory/file
t6404, t6423: expect improved rename/delete handling in ort backend
t6423: expect improved conflict markers labels in the ort backend
merge tests: expect slight differences in output for recursive vs. ort
t6423, t6436: note improved ort handling with dirty files
t6423: note improved ort handling with untracked files
t6423: add more details about direct resolution of directories
merge-ort: barebones API of new merge strategy with empty implementation
merge-ort-wrappers: new convience wrappers to mimic the old merge API
fast-rebase: demonstrate merge-ort's API via new test-tool command
hashmap: adjust spacing to fix argument alignment
hashmap: allow re-use after hashmap_free()
hashmap: introduce a new hashmap_partial_clear()
hashmap: provide deallocation function names
strmap: new utility functions
merge,rebase,revert: select ort or recursive by config or environment
strmap: add more utility functions
strmap: enable faster clearing and reusing of strmaps
strmap: add functions facilitating use as a string->int map
strmap: split create_entry() out of strmap_put()
strmap: add a strset sub-type
strmap: enable allocations to come from a mem_pool
strmap: take advantage of FLEXPTR_ALLOC_STR when relevant
Use new HASHMAP_INIT macro to simplify hashmap initialization
shortlog: use strset from strmap.h
Emily Shaffer (1):
MyFirstContribution: clarify asciidoc dependency
Eric Sunshine (1):
t/perf: fix test_export() failure with BSD `sed`
Felipe Contreras (41):
completion: zsh: fix __gitcomp_direct()
completion: zsh: fix name due to broken autoloading
completion: zsh: fix bash script extension
completion: zsh: reorganize install instructions
completion: zsh: fix for directories with spaces
completion: zsh: update slave script locations
completion: prompt: fix color for Zsh
completion: zsh: fix for command aliasing
completion: bash: synchronize zsh wrapper
completion: bash: remove zsh wrapper
completion: zsh: fix completion for --no-.. options
completion: fix conflict with bashcomp
completion: zsh: add missing direct_append
completion: zsh: fix splitting of words
completion: zsh: simplify compadd functions
completion: zsh: simplify direct compadd
completion: zsh: trivial cleanup
completion: zsh: simplify nl_append
completion: zsh: simplify file_direct
completion: zsh: shuffle functions around
completion: zsh: refactor command completion
completion: zsh: improve command tags
completion: zsh: add alias descriptions
completion: zsh: trivial simplification
completion: zsh: add simple version check
completion: bash: trivial cleanup
completion: bash: cleanup cygwin check
completion: bash: remove old compat wrappers
zsh: update copyright notices
completion: bash: support recursive aliases
completion: bash: check for alias loop
completion: bash: improve alias loop detection
tests: push: improve cleanup of HEAD tests
tests: push: trivial cleanup
refspec: make @ a synonym of HEAD
refspec: trivial cleanup
.gitignore: remove dangling file
test: completion: fix typos
tests: lib-functions: trivial style cleanups
completion: zsh: fix file completion regression
completion: bash: fix gitk alias regression
Han-Wen Nienhuys (1):
move sleep_millisec to git-compat-util.h
Javier Spagnoletti (1):
userdiff: PHP: catch "abstract" and "final" functions
Jeff Hostetler (1):
index-format.txt: document v2 format of file system monitor extension
Jeff King (44):
fast-import: fix over-allocation of marks storage
usage: define a type for a reporting function
config.mak.dev: build with -fno-common
fast-import: remove duplicated option-parsing line
perl: check for perl warnings while running tests
t3436: check --committer-date-is-author-date result more carefully
am: fix broken email with --committer-date-is-author-date
rebase: fix broken email with --committer-date-is-author-date
am, sequencer: stop parsing our own committer ident
test-pkt-line: drop colon from sideband identity
checkout-index: drop error message from empty --stage=all
checkout-index: propagate errors to exit code
sideband: diagnose more sideband anomalies
format-patch: refactor output selection
format-patch: tie file-opening logic to output_directory
format-patch: support --output option
rev-parse: don't accept options after dashdash
rev-parse: put all options under the "-" check
rev-parse: handle --end-of-options
compute pack .idx byte offsets using size_t
use size_t to store pack .idx byte offsets
fsck: correctly compute checksums on idx files larger than 4GB
block-sha1: take a size_t length parameter
packfile: detect overflow in .idx file size checks
repack: make "exts" array available outside cmd_repack()
send-pack: kill pack-objects helper on signal or exit
submodule: fix fetch_in_submodule logic
upload-pack: kill pack-objects helper on signal or exit
banned.h: mark non-reentrant gmtime, etc as banned
t7900: speed up expensive test
gitignore: drop duplicate entry for git-sh-i18n
banned.h: mark ctime_r() and asctime_r() as banned
Makefile: mark git-maintenance as a builtin
upload-pack: propagate return value from object filter config callback
style: indent multiline "if" conditions to align
oid-array.h: drop sha1 mention from header guard
t0064: drop sha1 mention from filename
t0064: make duplicate tests more robust
cache.h: move hash/oid functions to hash.h
oid-array: make sort function public
oid-array: provide a for-loop iterator
commit-graph: drop count_distinct_commits() function
commit-graph: replace packed_oid_list with oid_array
commit-graph: use size_t for array allocation and indexing
Jiang Xin (3):
t5411: new helper filter_out_user_friendly_and_stable_output
receive-pack: gently write messages to proc-receive
receive-pack: use default version 0 for proc-receive
Jinoh Kang (2):
diff: allow passing NULL to diff_free_filespec_data()
t7800: simplify difftool test
Joey Salazar (1):
t7006: Use test_path_is_* functions in test script
Johannes Berg (1):
docs: multi-pack-index: remove note about future 'verify' work
Johannes Schindelin (63):
ci: work around old records of GitHub runs
ci: make the "skip-if-redundant" check more defensive
sideband: avoid reporting incomplete sideband messages
sideband: report unhandled incomplete sideband messages as bugs
SKIP_DASHED_BUILT_INS: do not skip the bin/ programs
fmt-merge-msg: also suppress "into main" by default
t9801: use `--` in preparation for default branch rename
tests: start moving to a different default main branch name
t6200: adjust suppression pattern to also match "main"
t5703: adjust a test case for the upcoming default branch name
t3200: prepare for `main` being shorter than `master`
t9902: prepare a test for the upcoming default branch name
tests: prepare aligned mentions of the default branch name
t1400: prepare for `main` being default branch name
t5411: start using the default branch name "main"
t5411: start adjusting the support files for init.defaultBranch=main
t5411: adjust the remaining support files for init.defaultBranch=main
t5411: finish preparing for `main` being the default branch name
t5515: use `main` as the name of the main branch for testing (part 1)
t5515: use `main` as the name of the main branch for testing (part 2)
t5515: use `main` as the name of the main branch for testing (part 3)
t5515: use `main` as the name of the main branch for testing (conclusion)
t2402: fix typo
ci: make the whitespace checker more robust
tests: consolidate the `file_size` function into `test-lib-functions.sh`
ci: avoid using the deprecated `set-env` construct
p4: respect init.defaultBranch
t1004: insert missing "branch" in a message
t3406: indent with tabs, not spaces
t3427: adjust stale comment
t5400,t5402: consistently indent with tabs, not with spaces
t5570: remove trailing padding
t9603: use tabs for indentation
add -i (built-in): do show an error message for incorrect inputs
add -i (built-in): send error messages to stderr
add -p (built-in): imitate `xdl_format_hunk_hdr()` generating hunk headers
add -i: use `reset_color` consistently
add -i (built-in): prevent the `reset` "color" from being configured
add -i (built-in): use correct names to load color.diff.* config
mergetools/bc: add `bc4` to the alias list for Beyond Compare
mergetool: avoid letting `list_tool_variants` break user-defined setups
add -p (built-in): do not color the progress indicator separately
add -i (built-in): use the same indentation as the Perl version
add -i (Perl version): color header to match the C version
add -p: prefer color.diff.context over color.diff.plain
add -i: verify in the tests that colors can be overridden
t2106: adjust style to the current conventions
t2106: make test independent of the current main branch name
t2106: ensure that the checkout fails for the expected reason
t3040: remove stale note
t1309: use a neutral branch name in the `onbranch` test cases
t4015: let the test pass with any default branch name
pull: colorize the hint about setting `pull.rebase`
t3404: do not depend on any specific default branch name
t5526: avoid depending on a specific default branch name
t5526: drop the prereq expecting the default branch name `main`
cmake: determine list of extra built-ins dynamically
t6300: avoid using the default name of the initial branch
t7064: avoid relying on a specific default branch name
init: document `init.defaultBranch` better
branch -m: allow renaming a yet-unborn branch
get_default_branch_name(): prepare for showing some advice
init: provide useful advice about init.defaultBranch
Jonathan Tan (3):
apply: when -R, also reverse list of sections
sequencer: tolerate abbreviated stopped-sha file
usage: add trace2 entry upon warning()
Josh Steadmon (13):
docs: new capability to advertise session IDs
docs: new transfer.advertiseSID option
trace2: add a public function for getting the SID
upload-pack: advertise session ID in v0 capabilities
receive-pack: advertise session ID in v0 capabilities
serve: advertise session ID in v2 capabilities
transport: log received server session ID
fetch-pack: advertise session ID in capabilities
upload-pack, serve: log received client session ID
send-pack: advertise session ID in capabilities
receive-pack: log received client session ID
t7900: fix typo: "test_execpt_success"
t7900: use --fixed-value in git-maintenance tests
Junio C Hamano (33):
doc: preparatory clean-up of description on the sign-off option
SubmittingPatches: clarify DCO is our --signoff rule
Revert "test_cmp: diagnose incorrect arguments"
t7102: prepare expected output inside test_expect_* block
Git 2.29.1
other small fixes for 2.29.2
SubmittingPatches: clarify the purpose of the final resend
First batch
Git 2.29.2
Second batch
Makefile: enable -Wsparse-error for DEVELOPER build
Third batch
log: diagnose -L used with pathspec as an error
doc: clarify that --abbrev=<n> is about the minimum length
Fourth batch
format-patch: make output filename configurable
Fifth batch
ci: avoid `set-env` construct in print-test-failures.sh
Sixth batch
Seventh batch
MyFirstContribition: answering questions is not the end of the story
config doc: value-pattern is not necessarily a regexp
Eighth batch
Ninth batch
Revert "submodules: fix of regression on fetching of non-init subsub-repo"
Tenth batch
Eleventh batch
Git 2.30-rc0
strmap: make callers of strmap_remove() to call it in void context
compat-util: pretend that stub setitimer() always succeeds
diff: correct interaction between --exit-code and -I<pattern>
Another batch before 2.30-rc1
Git 2.30-rc1
Konrad Borowski (1):
userdiff: recognize 'macro_rules!' as starting a Rust function block
Kyle Meyer (1):
stash: add missing space to an error message
Marlon Rac Cambasis (1):
doc: fixing two trivial typos in Documentation/
Martin Schön (1):
git-gui: use commit message template
Martin Ågren (5):
list-objects-filter-options: fix function name in BUG
grep: don't set up a "default" repo for grep
grep: use designated initializers for `grep_defaults`
grep: copy struct in one fell swoop
MyFirstObjectWalk: drop `init_walken_defaults()`
Matheus Tavares (2):
worktree: fix order of arguments in error message
apply: don't use core.sharedRepository to create working tree files
Michał Kępień (2):
merge-base, xdiff: zero out xpparam_t structures
diff: add -I<regex> that ignores matching changes
Nate Avers (2):
notes.c: fix a segfault in notes_display_config()
t3301: test proper exit response to no-value notes.displayRef.
Nicolas Morey-Chaisemartin (1):
imap-send: parse default git config
Nipunn Koorapati (17):
t/perf/README: elaborate on output format
t/perf/p7519-fsmonitor.sh: warm cache on first git status
t/perf: add fsmonitor perf test for git diff
perf lint: add make test-lint to perf tests
p7519-fsmonitor: refactor to avoid code duplication
p7519-fsmonitor: add a git add benchmark
t/perf/fsmonitor: separate one time repo initialization
t/perf/fsmonitor: move watchman setup to one-time-repo-setup
t/perf/fsmonitor: improve error message if typoing hook name
t/perf/fsmonitor: factor description out for readability
t/perf/fsmonitor: shorten DESC to basename
t/perf/fsmonitor: silence initial git commit
t/perf/fsmonitor: factor setup for fsmonitor into function
t/perf/fsmonitor: initialize test with git reset
t/perf/fsmonitor: perf comparison of multiple fsmonitor integrations
t/perf/fsmonitor: add benchmark for dirty status
perf/fsmonitor: use test_must_be_empty helper
Patrick Steinhardt (4):
t1400: avoid touching refs on filesystem
update-ref: allow creation of multiple transactions
p1400: use `git-update-ref --stdin` to test multiple transactions
update-ref: disallow "start" for ongoing transactions
Peter Kaestle (1):
submodules: fix of regression on fetching of non-init subsub-repo
Philippe Blain (14):
ref-filter: handle CRLF at end-of-line more gracefully
log, show: add tests for messages containing CRLF
doc: log, gitk: move '-L' description to 'line-range-options.txt'
doc: line-range: improve formatting
blame-options.txt: also mention 'funcname' in '-L' description
doc: add more pointers to gitattributes(5) for userdiff
line-log: mention both modes in 'blame' and 'log' short help
blame: enable funcname blaming with userdiff driver
blame: simplify 'setup_scoreboard' interface
blame: simplify 'setup_blame_bloom_data' interface
pull --rebase: compute rebase arguments in separate function
t5572: add notes on a peculiar test
t5572: describe '--rebase' tests a little more
pull: check for local submodule modifications with the right range
Phillip Wood (4):
rebase -i: stop overwriting ORIG_HEAD buffer
rebase -i: use struct object_id rather than looking up commit
rebase -i: use struct object_id when writing state
rebase -i: simplify get_revision_ranges()
Pranit Bauva (7):
bisect--helper: finish porting `bisect_start()` to C
bisect--helper: retire `--bisect-clean-state` subcommand
bisect--helper: retire `--next-all` subcommand
bisect--helper: reimplement `bisect_state` & `bisect_head` shell functions in C
bisect--helper: retire `--check-expected-revs` subcommand
bisect--helper: retire `--write-terms` subcommand
bisect--helper: retire `--bisect-autostart` subcommand
Pratyush Yadav (1):
git-gui: Only touch GITGUI_MSG when needed
Rafael Silva (2):
worktree: teach `list` to annotate locked worktree
maintenance: fix SEGFAULT when no repository
Ramsay Jones (6):
Documentation/Makefile: conditionally include doc.dep
Documentation/Makefile: conditionally include ../GIT-VERSION-FILE
gitweb/Makefile: conditionally include ../GIT-VERSION-FILE
Makefile: don't try to clean old debian build product
Makefile: don't use a versioned temp distribution directory
Makefile: conditionally include GIT-VERSION-FILE
Randall S. Becker (1):
config.mak.uname: remove old NonStop compatibility settings
René Scharfe (19):
Makefile: use git init/add/commit/archive for dist-doc
Makefile: remove the unused variable TAR_DIST_EXTRA_OPTS
grep: handle deref_tag() returning NULL
blame: handle deref_tag() returning NULL
line-log: handle deref_tag() returning NULL
object: allow clear_commit_marks_all to handle any repo
bisect: clear flags in passed repository
stash: simplify reflog emptiness check
pack-write: use hashwrite_be32() instead of double-buffering array
archive: support compression levels beyond 9
blame: silently ignore invalid ignore file objects
csum-file: add hashwrite_be64()
midx: use hashwrite_be64()
pack-write: use hashwrite_be64()
diff-lib: plug minor memory leaks in do_diff_cache()
archive: release refname after use
gc: fix cast in compare_tasks_by_selection()
fetch-pack: disregard invalid pack lockfiles
gitignore: remove entry for git serve
Robert Karszniewicz (2):
git-completion.bash: __git_diff_common_options: add --[no-]patch
git-completion.bash: stash-show: complete $__git_diff_common_options
SZEDER Gábor (4):
bisect: loosen halfway() check for a large number of commits
t5310-pack-bitmaps: skip JGit tests with SHA256
tests: make sure nested lazy prereqs work reliably
tests: fix description of 'test_set_prereq'
Samuel Čavoj (3):
sequencer: fix gpg option passed to merge subcommand
sequencer: pass explicit --no-gpg-sign to merge
t3435: add tests for rebase -r GPG signing
Sean Barag (7):
clone: add tests for --template and some disallowed option pairs
clone: use more conventional config/option layering
remote: add tests for add and rename with invalid names
refs: consolidate remote name validation
clone: validate --origin option before use
clone: read new remote name from remote_name instead of option_origin
clone: allow configurable default for `-o`/`--origin`
Serg Tereshchenko (1):
git-gui: Fix selected text colors
Sergey Organov (2):
doc/diff-options: fix out of place mentions of '--patch/-p'
glossary: improve "branch" definition
Sibo Dong (1):
git-prompt.sh: localize `option` in __git_ps1_show_upstream
Simão Afonso (1):
crendential-store: use timeout when locking file
Sohom Datta (1):
userdiff: expand detected chunk headers for css
Srinidhi Kaushik (3):
push: add reflog check for "--force-if-includes"
push: parse and set flag for "--force-if-includes"
t, doc: update tests, reference for "--force-if-includes"
Stefan Haller (2):
git-gui: fix colored label backgrounds when using themed widgets
git-gui: use gray background for inactive text widgets
Taylor Blau (7):
builtin/repack.c: keep track of what pack-objects wrote
builtin/repack.c: don't move existing packs out of the way
packfile.c: protect against disappearing indexes
midx.c: protect against disappearing packs
builtin/bugreport.c: use thread-safe localtime_r()
builtin/clone.c: don't ignore transport_fetch_refs() errors
upload-pack.c: don't free allowed_filters util pointers
Thomas Koutcher (1):
credential: load default config
Victor Engmark (1):
userdiff: support Bash
brian m. carlson (1):
svn: use correct variable name for short OID
Ævar Arnfjörð Bjarmason (9):
remote: add meaningful exit code on missing/existing
config.mak.uname: remove unused the NO_R_TO_GCC_LINKER flag
config.mak.uname: remove unused NEEDS_SSL_WITH_CURL flag
submodule: use "fetch" logic instead of custom remote discovery
submodule: remove sh function in favor of helper
parse-remote: remove this now-unused library
gc docs: change --keep-base-pack to --keep-largest-pack
gc: rename keep_base_pack variable for --keep-largest-pack
style: do not "break" in switch() after "return"
Đoàn Trần Công Danh (1):
doc: mention Python 3.x supports
Štěpán Němec (1):
config.txt: fix a typo (backslash != backquote)
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.30.0-rc0
@ 2020-12-14 20:00 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-12-14 20:00 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.30.0-rc0 is now available for
testing at the usual places. It is comprised of 413 non-merge
commits since v2.29.0, contributed by 60 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.30.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.29.0 are as follows.
Welcome to the Git development community!
Alexey, Amanda Shafack, Bradley M. Kuhn, Caleb Tillman, Charvi
Mendiratta, Daniel Duvall, Daniel Gurney, Dennis Ameling, Javier
Spagnoletti, Jinoh Kang, Joey Salazar, Konrad Borowski, Marlon
Rac Cambasis, Michał Kępień, Nate Avers, Nipunn Koorapati,
Rafael Silva, Robert Karszniewicz, Samuel Čavoj, Sean Barag,
Sibo Dong, Simão Afonso, Sohom Datta, Thomas Koutcher, and
Victor Engmark.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Spiers, Ævar Arnfjörð Bjarmason, Alex Vandiver, Arnout
Engelen, brian m. carlson, Christian Couder, Chris. Webster,
Denton Liu, Derrick Stolee, Drew DeVault, Elijah Newren,
Emily Shaffer, Felipe Contreras, Han-Wen Nienhuys, Jeff King,
Jiang Xin, Johannes Schindelin, Jonathan Tan, Josh Steadmon,
Junio C Hamano, Kyle Meyer, Martin Ågren, Matheus Tavares,
Nicolas Morey-Chaisemartin, Patrick Steinhardt, Peter Kaestle,
Philippe Blain, Phillip Wood, Pranit Bauva, René Scharfe,
Sergey Organov, Srinidhi Kaushik, Štěpán Němec, SZEDER
Gábor, and Taylor Blau.
----------------------------------------------------------------
Git 2.30 Release Notes (draft)
==============================
Updates since v2.29
-------------------
UI, Workflows & Features
* Userdiff for PHP update.
* Userdiff for Rust update.
* Userdiff for CSS update.
* The command line completion script (in contrib/) learned that "git
stash show" takes the options "git diff" takes.
* "git worktree list" now shows if each worktree is locked. This
possibly may open us to show other kinds of states in the future.
* "git maintenance", an extended big brother of "git gc", continues
to evolve.
* "git push --force-with-lease[=<ref>]" can easily be misused to lose
commits unless the user takes good care of their own "git fetch".
A new option "--force-if-includes" attempts to ensure that what is
being force-pushed was created after examining the commit at the
tip of the remote ref that is about to be force-replaced.
* "git clone" learned clone.defaultremotename configuration variable
to customize what nickname to use to call the remote the repository
was cloned from.
* "git checkout" learned to use checkout.guess configuration variable
and enable/disable its "--[no-]guess" option accordingly.
* "git resurrect" script (in contrib/) learned that the object names
may be longer than 40-hex depending on the hash function in use.
* "git diff A...B" learned "git diff --merge-base A B", which is a
longer short-hand to say the same thing.
* A sample 'push-to-checkout' hook, that performs the same as
what the built-in default action does, has been added.
* "git diff" family of commands learned the "-I<regex>" option to
ignore hunks whose changed lines all match the given pattern.
* The userdiff pattern learned to identify the function definition in
POSIX shells and bash.
* "git checkout-index" did not consistently signal an error with its
exit status, but now it does.
* 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. We are now
more lenient and accept a line with lone CR on it as a blank line,
too.
* Exit codes from "git remote add" etc. were not usable by scripted
callers, but now they are.
* "git archive" now allows compression level higher than "-9"
when generating tar.gz output.
* Zsh autocompletion (in contrib/) update.
* The maximum length of output filenames "git format-patch" creates
has become configurable (used to be capped at 64).
* "git rev-parse" learned the "--end-of-options" to help scripts to
safely take a parameter that is supposed to be a revision, e.g.
"git rev-parse --verify -q --end-of-options $rev".
* The command line completion script (in contrib/) learned to expand
commands that are alias of alias.
* "git update-ref --stdin" learns to take multiple transactions in a
single session.
* Various subcommands of "git config" that takes value_regex
learn the "--literal-value" option to take the value_regex option
as a literal string.
* The transport layer was taught to optionally exchange the session
ID assigned by the trace2 subsystem during fetch/push transactions.
* "git imap-send" used to ignore configuration variables like
core.askpass; this has been corrected.
* "git $cmd $args", when $cmd is not a recognised subcommand, by
default tries to see if $cmd is a typo of an existing subcommand
and optionally executes the corrected command if there is only one
possibility, depending on the setting of help.autocorrect; the
users can now disable the whole thing, including the cycles spent
to find a likely typo, by setting the configuration variable to
'never'.
* "@" sometimes worked (e.g. "git push origin @:there") as a part of
a refspec element, but "git push origin @" did not work, which has
been corrected.
Performance, Internal Implementation, Development Support etc.
* Use "git archive" more to produce the release tarball.
* GitHub Actions automated test improvement to skip tests on a tree
identical to what has already been tested.
* Test-coverage for running commit-graph task "git maintenance" has
been extended.
* 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.
* Adjust tests so that they won't scream when the default initial
branch name is changed to 'main'.
* Rewriting "git bisect" in C continues.
* More preliminary tests have been added to document desired outcome
of various "directory rename" situations.
* Micro clean-up of a couple of test scripts.
* "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.
* The code to detect premature EOF in the sideband demultiplexer has
been cleaned up.
* Test scripts are being prepared to transition of the default branch
name to 'main'.
* "git fetch --depth=<n>" over the stateless RPC / smart HTTP
transport handled EOF from the client poorly at the server end.
* A specialization of hashmap that uses a string as key has been
introduced. Hopefully it will see wider use over time.
* "git bisect start/next" in a large span of history spends a lot of
time trying to come up with exactly the half-way point; this can be
optimized by stopping when we see a commit that is close enough to
the half-way point.
* A lazily defined test prerequisite can now be defined in terms of
another lazily defined test prerequisite.
* Expectation for the original contributor after responding to a
review comment to use the explanation in a patch update has been
described.
* Multiple "credential-store" backends can race to lock the same
file, causing everybody else but one to fail---reattempt locking
with some timeout to reduce the rate of the failure.
* "git-parse-remote" shell script library outlived its usefulness.
* Like die() and error(), a call to warning() will also trigger a
trace2 event.
* Use of non-reentrant localtime() has been removed.
* Non-reentrant time-related library functions and ctime/asctime with
awkward calling interfaces are banned from the codebase.
Fixes since v2.29
-----------------
* In 2.29, "--committer-date-is-author-date" option of "rebase" and
"am" subcommands lost the e-mail address by mistake, which has been
corrected.
(merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint).
* "git checkout -p A...B [-- <path>]" did not work, even though the
same command without "-p" correctly used the merge-base between
commits A and B.
(merge 35166b1fb5 dl/checkout-p-merge-base later to maint).
* 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.
(merge 712b0377db js/avoid-split-sideband-message later to maint).
* "git fast-import" wasted a lot of memory when many marks were in use.
(merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint).
* 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.
(merge 262d5ad5a5 es/test-cmp-typocatcher later to maint).
* 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.
(merge 85102ac71b ds/commit-graph-merging-fix later to maint).
* The meaning of a Signed-off-by trailer can vary from project to
project; this and also what it means to this project has been
clarified in the documentation.
(merge 3abd4a67d9 bk/sob-dco later to maint).
* "git credential' didn't honor the core.askPass configuration
variable (among other things), which has been corrected.
(merge 567ad2c0f9 tk/credential-config later to maint).
* Dev support to catch a tentative definition of a variable in our C
code as an error.
(merge 5539183622 jk/no-common later to maint).
* "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.
(merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint).
* "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).
(merge b0f266de11 jt/apply-reverse-twice later to maint).
* A recent oid->hash conversion missed one spot, breaking "git svn".
(merge 03bb366de4 bc/svn-hash-oid-fix later to maint).
* The documentation on the "--abbrev=<n>" option did not say the
output may be longer than "<n>" hexdigits, which has been
clarified.
(merge cda34e0d0c jc/abbrev-doc later to maint).
* "git p4" now honors init.defaultBranch configuration.
(merge 1b09d1917f js/p4-default-branch later to maint).
* 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).
(merge c779386182 jc/sequencer-stopped-sha-simplify later to maint).
* The code to see if "git stash drop" can safely remove refs/stash
has been made more carerful.
(merge 4f44c5659b rs/empty-reflog-check-fix later to maint).
* "git log -L<range>:<path>" is documented to take no pathspec, but
this was not enforced by the command line option parser, which has
been corrected.
(merge 39664cb0ac jc/line-log-takes-no-pathspec later to maint).
* "git format-patch --output=there" did not work as expected and
instead crashed. The option is now supported.
(merge dc1672dd10 jk/format-patch-output later to maint).
* Define ARM64 compiled with MSVC to be little-endian.
(merge 0c038fc65a dg/bswap-msvc later to maint).
* "git rebase -i" did not store ORIG_HEAD correctly.
(merge 8843302307 pw/rebase-i-orig-head later to maint).
* "git blame -L :funcname -- path" did not work well for a path for
which a userdiff driver is defined.
* "make DEVELOPER=1 sparse" used to run sparse and let it emit
warnings; now such warnings will cause an error.
(merge 521dc56270 jc/sparse-error-for-developer-build later to maint).
* "git blame --ignore-revs-file=<file>" learned to ignore a
non-existent object name in the input, instead of complaining.
(merge c714d05875 jc/blame-ignore-fix later to maint).
* Running "git diff" while allowing external diff in a state with
unmerged paths used to segfault, which has been corrected.
(merge d66851806f jk/diff-release-filespec-fix later to maint).
* Build configuration cleanup.
(merge b990f02fd8 ab/config-mak-uname-simplify later to maint).
* Fix regression introduced when nvimdiff support in mergetool was added.
(merge 12026f46e7 pd/mergetool-nvimdiff later to maint).
* The exchange between receive-pack and proc-receive hook did not
carefully check for errors.
* The code was not prepared to deal with pack .idx file that is
larger than 4GB.
(merge 81c4c5cf2e jk/4gb-idx later to maint).
* Since jgit does not yet work with SHA-256 repositories, mark the
tests that uses it not to run unless we are testing with ShA-1
repositories.
(merge ea699b4adc sg/t5310-jgit-wants-sha1 later to maint).
* Config parser fix for "git notes".
(merge 45fef1599a na/notes-displayref-is-not-boolean later to maint).
* Move a definition of compatibility wrapper from cache.h to
git-compat-util.h
(merge a76b138daa hn/sleep-millisec-decl later to maint).
* Error message fix.
(merge eaf5341538 km/stash-error-message-fix later to maint).
* "git pull --rebase --recurse-submodules" checked for local changes
in a wrong range and failed to run correctly when it should.
(merge 5176f20ffe pb/pull-rebase-recurse-submodules later to maint).
* "git push" that is killed may leave a pack-objects process behind,
still computing to find a good compression, wasting cycles. This
has been corrected.
(merge 8b59935114 jk/stop-pack-objects-when-push-is-killed later to maint).
* "git fetch" that is killed may leave a pack-objects process behind,
still computing to find a good compression, wasting cycles. This
has been corrected.
(merge 309a4028e7 jk/stop-pack-objects-when-fetch-is-killed later to maint).
* "git add -i" failed to honor custom colors configured to show
patches, which has been corrected.
(merge 96386faa03 js/add-i-color-fix later to maint).
* Processes that access packdata while the .idx file gets removed
(e.g. while repacking) did not fail or fall back gracefully as they
could.
(merge 506ec2fbda tb/idx-midx-race-fix later to maint).
* "git apply" adjusted the permission bits of working-tree files and
directories according core.sharedRepository setting by mistake and
for a long time, which has been corrected.
(merge eb3c027e17 mt/do-not-use-scld-in-working-tree later to maint).
* "fetch-pack" could pass NULL pointer to unlink(2) when it sees an
invalid filename; the error checking has been tightened to make
this impossible.
(merge 6031af387e rs/fetch-pack-invalid-lockfile later to maint).
* "git maintenance run/start/stop" needed to be run in a repository
to hold the lockfile they use, but didn't make sure they are
actually in a repository, which has been corrected.
* The glossary described a branch as an "active" line of development,
which is misleading---a stale and non-moving branch is still a
branch.
(merge eef1ceabd8 so/glossary-branch-is-not-necessarily-active later to maint).
* Newer versions of xsltproc can assign IDs in HTML documents it
generates in a consistent manner. Use the feature to help format
HTML version of the user manual reproducibly.
(merge 3569e11d69 ae/doc-reproducible-html later to maint).
* Tighten error checking in the codepath that responds to "git fetch".
(merge d43a21bdbb jk/check-config-parsing-error-in-upload-pack later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint).
(merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint).
(merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint).
(merge 6db29ab213 jk/fast-import-marks-cleanup later to maint).
(merge e5cf6d3df4 nk/dir-c-comment-update later to maint).
(merge 5710dcce74 jk/report-fn-typedef later to maint).
(merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint).
(merge 4e1bee9a99 js/t7006-cleanup later to maint).
(merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint).
(merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint).
(merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint).
(merge 9542d56379 sd/prompt-local-variable later to maint).
(merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint).
(merge b7e20b4373 mc/typofix later to maint).
(merge f6bcd9a8a4 js/test-whitespace-fixes later to maint).
(merge 53b67a801b js/test-file-size later to maint).
(merge 970909c2a7 rs/hashwrite-be64 later to maint).
(merge 5a923bb1f0 ma/list-object-filter-opt-msgfix later to maint).
(merge 1c3e412916 rs/archive-plug-leak-refname later to maint).
(merge d44e5267ea rs/plug-diff-cache-leak later to maint).
(merge 793c1464d3 ab/gc-keep-base-option later to maint).
(merge b86339b12b mt/worktree-error-message-fix later to maint).
(merge e01ae2a4a7 js/pull-rebase-use-advise later to maint).
(merge e63d774242 sn/config-doc-typofix later to maint).
(merge 08e9df2395 jk/multi-line-indent-style-fix later to maint).
(merge e66590348a da/vs-build-iconv-fix later to maint).
(merge 7fe07275be js/cmake-extra-built-ins-fix later to maint).
----------------------------------------------------------------
Changes since v2.29.0 are as follows:
Adam Spiers (1):
hook: add sample template for push-to-checkout
Alex Vandiver (2):
dir.c: fix comments to agree with argument name
fsmonitor: use fsmonitor data in `git diff`
Alexey (1):
completion: fix zsh installation instructions
Amanda Shafack (1):
t2200,t9832: avoid using 'git' upstream in a pipe
Arnout Engelen (1):
doc: make HTML manual reproducible
Bradley M. Kuhn (2):
Documentation: clarify and expand description of --signoff
Documentation: stylistically normalize references to Signed-off-by:
Caleb Tillman (1):
t0000: use test_path_is_file instead of "test -f"
Charvi Mendiratta (5):
t7101,t7102,t7201: modernize test formatting
t7102,t7201: remove unnecessary blank spaces in test body
t7102,t7201: remove whitespace after redirect operator
t7201: use 'git -C' to avoid subshell
t7201: put each command on a separate line
Chris. Webster (1):
ci: github action - add check for whitespace errors
Christian Couder (1):
filter-branch doc: fix filter-repo typo
Daniel Duvall (1):
upload-pack: allow stateless client EOF just prior to haves
Daniel Gurney (2):
compat/bswap.h: simplify MSVC endianness detection
compat/bswap.h: don't assume MSVC is little-endian
Dennis Ameling (1):
ci(vs-build): stop passing the iconv library location explicitly
Denton Liu (18):
t4068: remove unnecessary >tmp
git-diff-index.txt: make --cached description a proper sentence
git-diff.txt: backtick quote command text
contrib/completion: extract common diff/difftool options
diff-lib: accept option flags in run_diff_index()
diff-lib: define diff_get_merge_base()
t4068: add --merge-base tests
builtin/diff-index: learn --merge-base
builtin/diff-tree: learn --merge-base
contrib/completion: complete `git diff --merge-base`
Documentation/config/checkout: replace sq with backticks
builtin/checkout: fix `git checkout -p HEAD...` bug
Doc: document "A...B" form for <tree-ish> in checkout and switch
add-patch: add NEEDSWORK about comparing commits
t2016: add a NEEDSWORK about the PERL prerequisite
checkout: learn to respect checkout.guess
contrib/git-resurrect.sh: indent with tabs
contrib/git-resurrect.sh: use hash-agnostic OID pattern
Derrick Stolee (28):
maintenance: add prefetch task
maintenance: add loose-objects task
maintenance: create auto condition for loose-objects
midx: enable core.multiPackIndex by default
midx: use start_delayed_progress()
maintenance: add incremental-repack task
maintenance: auto-size incremental-repack batch
maintenance: add incremental-repack auto condition
maintenance: optionally skip --auto process
maintenance: add --schedule option and config
for-each-repo: run subcommands on configured repos
maintenance: add [un]register subcommands
maintenance: add start/stop subcommands
maintenance: test commit-graph auto condition
commit-graph: ignore duplicates when merging layers
commit-graph: don't write commit-graph when disabled
maintenance: core.commitGraph=false prevents writes
maintenance: create maintenance.strategy config
maintenance: use 'incremental' strategy by default
maintenance: add troubleshooting guide to docs
config: convert multi_replace to flags
config: replace 'value_regex' with 'value_pattern'
t1300: test "set all" mode with value-pattern
t1300: add test for --replace-all with value-pattern
config: add --fixed-value option, un-implemented
config: plumb --fixed-value into config API
config: implement --fixed-value with --get*
maintenance: use 'git config --fixed-value'
Drew DeVault (1):
help.c: help.autocorrect=never means "do not compute suggestions"
Elijah Newren (37):
hashmap: add usage documentation explaining hashmap_free[_entries]()
directory-rename-detection.txt: update references to regression tests
t6423: more involved directory rename test
t6423: update directory rename detection tests with new rule
t6423: more involved rules for renaming directories into each other
t7518: fix flaky grep invocation
test-lib: allow selecting tests by substring/glob with --run
t6006, t6012: adjust tests to use 'setup' instead of synonyms
test-lib: reduce verbosity of skipped tests
sequencer: remove duplicate rollback_lock_file() call
t/: new helper for tests that pass with ort but fail with recursive
merge tests: expect improved directory/file conflict handling in ort
t6416: correct expectation for rename/rename(1to2) + directory/file
t6404, t6423: expect improved rename/delete handling in ort backend
t6423: expect improved conflict markers labels in the ort backend
merge tests: expect slight differences in output for recursive vs. ort
t6423, t6436: note improved ort handling with dirty files
t6423: note improved ort handling with untracked files
t6423: add more details about direct resolution of directories
merge-ort: barebones API of new merge strategy with empty implementation
merge-ort-wrappers: new convience wrappers to mimic the old merge API
fast-rebase: demonstrate merge-ort's API via new test-tool command
hashmap: adjust spacing to fix argument alignment
hashmap: allow re-use after hashmap_free()
hashmap: introduce a new hashmap_partial_clear()
hashmap: provide deallocation function names
strmap: new utility functions
merge,rebase,revert: select ort or recursive by config or environment
strmap: add more utility functions
strmap: enable faster clearing and reusing of strmaps
strmap: add functions facilitating use as a string->int map
strmap: split create_entry() out of strmap_put()
strmap: add a strset sub-type
strmap: enable allocations to come from a mem_pool
strmap: take advantage of FLEXPTR_ALLOC_STR when relevant
Use new HASHMAP_INIT macro to simplify hashmap initialization
shortlog: use strset from strmap.h
Emily Shaffer (1):
MyFirstContribution: clarify asciidoc dependency
Felipe Contreras (41):
completion: zsh: fix __gitcomp_direct()
completion: zsh: fix name due to broken autoloading
completion: zsh: fix bash script extension
completion: zsh: reorganize install instructions
completion: zsh: fix for directories with spaces
completion: zsh: update slave script locations
completion: prompt: fix color for Zsh
completion: zsh: fix for command aliasing
completion: bash: synchronize zsh wrapper
completion: bash: remove zsh wrapper
completion: zsh: fix completion for --no-.. options
completion: fix conflict with bashcomp
completion: zsh: add missing direct_append
completion: zsh: fix splitting of words
completion: zsh: simplify compadd functions
completion: zsh: simplify direct compadd
completion: zsh: trivial cleanup
completion: zsh: simplify nl_append
completion: zsh: simplify file_direct
completion: zsh: shuffle functions around
completion: zsh: refactor command completion
completion: zsh: improve command tags
completion: zsh: add alias descriptions
completion: zsh: trivial simplification
completion: zsh: add simple version check
completion: bash: trivial cleanup
completion: bash: cleanup cygwin check
completion: bash: remove old compat wrappers
zsh: update copyright notices
completion: bash: support recursive aliases
completion: bash: check for alias loop
completion: bash: improve alias loop detection
tests: push: improve cleanup of HEAD tests
tests: push: trivial cleanup
refspec: make @ a synonym of HEAD
refspec: trivial cleanup
.gitignore: remove dangling file
test: completion: fix typos
tests: lib-functions: trivial style cleanups
completion: zsh: fix file completion regression
completion: bash: fix gitk alias regression
Han-Wen Nienhuys (1):
move sleep_millisec to git-compat-util.h
Javier Spagnoletti (1):
userdiff: PHP: catch "abstract" and "final" functions
Jeff King (35):
fast-import: fix over-allocation of marks storage
usage: define a type for a reporting function
config.mak.dev: build with -fno-common
fast-import: remove duplicated option-parsing line
perl: check for perl warnings while running tests
t3436: check --committer-date-is-author-date result more carefully
am: fix broken email with --committer-date-is-author-date
rebase: fix broken email with --committer-date-is-author-date
am, sequencer: stop parsing our own committer ident
test-pkt-line: drop colon from sideband identity
checkout-index: drop error message from empty --stage=all
checkout-index: propagate errors to exit code
sideband: diagnose more sideband anomalies
format-patch: refactor output selection
format-patch: tie file-opening logic to output_directory
format-patch: support --output option
rev-parse: don't accept options after dashdash
rev-parse: put all options under the "-" check
rev-parse: handle --end-of-options
compute pack .idx byte offsets using size_t
use size_t to store pack .idx byte offsets
fsck: correctly compute checksums on idx files larger than 4GB
block-sha1: take a size_t length parameter
packfile: detect overflow in .idx file size checks
repack: make "exts" array available outside cmd_repack()
send-pack: kill pack-objects helper on signal or exit
submodule: fix fetch_in_submodule logic
upload-pack: kill pack-objects helper on signal or exit
banned.h: mark non-reentrant gmtime, etc as banned
t7900: speed up expensive test
gitignore: drop duplicate entry for git-sh-i18n
banned.h: mark ctime_r() and asctime_r() as banned
Makefile: mark git-maintenance as a builtin
upload-pack: propagate return value from object filter config callback
style: indent multiline "if" conditions to align
Jiang Xin (3):
t5411: new helper filter_out_user_friendly_and_stable_output
receive-pack: gently write messages to proc-receive
receive-pack: use default version 0 for proc-receive
Jinoh Kang (2):
diff: allow passing NULL to diff_free_filespec_data()
t7800: simplify difftool test
Joey Salazar (1):
t7006: Use test_path_is_* functions in test script
Johannes Schindelin (57):
ci: work around old records of GitHub runs
ci: make the "skip-if-redundant" check more defensive
sideband: avoid reporting incomplete sideband messages
sideband: report unhandled incomplete sideband messages as bugs
SKIP_DASHED_BUILT_INS: do not skip the bin/ programs
fmt-merge-msg: also suppress "into main" by default
t9801: use `--` in preparation for default branch rename
tests: start moving to a different default main branch name
t6200: adjust suppression pattern to also match "main"
t5703: adjust a test case for the upcoming default branch name
t3200: prepare for `main` being shorter than `master`
t9902: prepare a test for the upcoming default branch name
tests: prepare aligned mentions of the default branch name
t1400: prepare for `main` being default branch name
t5411: start using the default branch name "main"
t5411: start adjusting the support files for init.defaultBranch=main
t5411: adjust the remaining support files for init.defaultBranch=main
t5411: finish preparing for `main` being the default branch name
t5515: use `main` as the name of the main branch for testing (part 1)
t5515: use `main` as the name of the main branch for testing (part 2)
t5515: use `main` as the name of the main branch for testing (part 3)
t5515: use `main` as the name of the main branch for testing (conclusion)
t2402: fix typo
ci: make the whitespace checker more robust
tests: consolidate the `file_size` function into `test-lib-functions.sh`
ci: avoid using the deprecated `set-env` construct
p4: respect init.defaultBranch
t1004: insert missing "branch" in a message
t3406: indent with tabs, not spaces
t3427: adjust stale comment
t5400,t5402: consistently indent with tabs, not with spaces
t5570: remove trailing padding
t9603: use tabs for indentation
add -i (built-in): do show an error message for incorrect inputs
add -i (built-in): send error messages to stderr
add -p (built-in): imitate `xdl_format_hunk_hdr()` generating hunk headers
add -i: use `reset_color` consistently
add -i (built-in): prevent the `reset` "color" from being configured
add -i (built-in): use correct names to load color.diff.* config
mergetools/bc: add `bc4` to the alias list for Beyond Compare
mergetool: avoid letting `list_tool_variants` break user-defined setups
add -p (built-in): do not color the progress indicator separately
add -i (built-in): use the same indentation as the Perl version
add -i (Perl version): color header to match the C version
add -p: prefer color.diff.context over color.diff.plain
add -i: verify in the tests that colors can be overridden
t2106: adjust style to the current conventions
t2106: make test independent of the current main branch name
t2106: ensure that the checkout fails for the expected reason
t3040: remove stale note
t1309: use a neutral branch name in the `onbranch` test cases
t4015: let the test pass with any default branch name
pull: colorize the hint about setting `pull.rebase`
t3404: do not depend on any specific default branch name
t5526: avoid depending on a specific default branch name
t5526: drop the prereq expecting the default branch name `main`
cmake: determine list of extra built-ins dynamically
Jonathan Tan (3):
apply: when -R, also reverse list of sections
sequencer: tolerate abbreviated stopped-sha file
usage: add trace2 entry upon warning()
Josh Steadmon (12):
docs: new capability to advertise session IDs
docs: new transfer.advertiseSID option
trace2: add a public function for getting the SID
upload-pack: advertise session ID in v0 capabilities
receive-pack: advertise session ID in v0 capabilities
serve: advertise session ID in v2 capabilities
transport: log received server session ID
fetch-pack: advertise session ID in capabilities
upload-pack, serve: log received client session ID
send-pack: advertise session ID in capabilities
receive-pack: log received client session ID
t7900: fix typo: "test_execpt_success"
Junio C Hamano (28):
doc: preparatory clean-up of description on the sign-off option
SubmittingPatches: clarify DCO is our --signoff rule
Revert "test_cmp: diagnose incorrect arguments"
t7102: prepare expected output inside test_expect_* block
Git 2.29.1
other small fixes for 2.29.2
SubmittingPatches: clarify the purpose of the final resend
First batch
Git 2.29.2
Second batch
Makefile: enable -Wsparse-error for DEVELOPER build
Third batch
log: diagnose -L used with pathspec as an error
doc: clarify that --abbrev=<n> is about the minimum length
Fourth batch
format-patch: make output filename configurable
Fifth batch
ci: avoid `set-env` construct in print-test-failures.sh
Sixth batch
Seventh batch
MyFirstContribition: answering questions is not the end of the story
config doc: value-pattern is not necessarily a regexp
Eighth batch
Ninth batch
Revert "submodules: fix of regression on fetching of non-init subsub-repo"
Tenth batch
Eleventh batch
Git 2.30-rc0
Konrad Borowski (1):
userdiff: recognize 'macro_rules!' as starting a Rust function block
Kyle Meyer (1):
stash: add missing space to an error message
Marlon Rac Cambasis (1):
doc: fixing two trivial typos in Documentation/
Martin Ågren (5):
list-objects-filter-options: fix function name in BUG
grep: don't set up a "default" repo for grep
grep: use designated initializers for `grep_defaults`
grep: copy struct in one fell swoop
MyFirstObjectWalk: drop `init_walken_defaults()`
Matheus Tavares (2):
worktree: fix order of arguments in error message
apply: don't use core.sharedRepository to create working tree files
Michał Kępień (2):
merge-base, xdiff: zero out xpparam_t structures
diff: add -I<regex> that ignores matching changes
Nate Avers (2):
notes.c: fix a segfault in notes_display_config()
t3301: test proper exit response to no-value notes.displayRef.
Nicolas Morey-Chaisemartin (1):
imap-send: parse default git config
Nipunn Koorapati (17):
t/perf/README: elaborate on output format
t/perf/p7519-fsmonitor.sh: warm cache on first git status
t/perf: add fsmonitor perf test for git diff
perf lint: add make test-lint to perf tests
p7519-fsmonitor: refactor to avoid code duplication
p7519-fsmonitor: add a git add benchmark
t/perf/fsmonitor: separate one time repo initialization
t/perf/fsmonitor: move watchman setup to one-time-repo-setup
t/perf/fsmonitor: improve error message if typoing hook name
t/perf/fsmonitor: factor description out for readability
t/perf/fsmonitor: shorten DESC to basename
t/perf/fsmonitor: silence initial git commit
t/perf/fsmonitor: factor setup for fsmonitor into function
t/perf/fsmonitor: initialize test with git reset
t/perf/fsmonitor: perf comparison of multiple fsmonitor integrations
t/perf/fsmonitor: add benchmark for dirty status
perf/fsmonitor: use test_must_be_empty helper
Patrick Steinhardt (4):
t1400: avoid touching refs on filesystem
update-ref: allow creation of multiple transactions
p1400: use `git-update-ref --stdin` to test multiple transactions
update-ref: disallow "start" for ongoing transactions
Peter Kaestle (1):
submodules: fix of regression on fetching of non-init subsub-repo
Philippe Blain (14):
ref-filter: handle CRLF at end-of-line more gracefully
log, show: add tests for messages containing CRLF
doc: log, gitk: move '-L' description to 'line-range-options.txt'
doc: line-range: improve formatting
blame-options.txt: also mention 'funcname' in '-L' description
doc: add more pointers to gitattributes(5) for userdiff
line-log: mention both modes in 'blame' and 'log' short help
blame: enable funcname blaming with userdiff driver
blame: simplify 'setup_scoreboard' interface
blame: simplify 'setup_blame_bloom_data' interface
pull --rebase: compute rebase arguments in separate function
t5572: add notes on a peculiar test
t5572: describe '--rebase' tests a little more
pull: check for local submodule modifications with the right range
Phillip Wood (4):
rebase -i: stop overwriting ORIG_HEAD buffer
rebase -i: use struct object_id rather than looking up commit
rebase -i: use struct object_id when writing state
rebase -i: simplify get_revision_ranges()
Pranit Bauva (7):
bisect--helper: finish porting `bisect_start()` to C
bisect--helper: retire `--bisect-clean-state` subcommand
bisect--helper: retire `--next-all` subcommand
bisect--helper: reimplement `bisect_state` & `bisect_head` shell functions in C
bisect--helper: retire `--check-expected-revs` subcommand
bisect--helper: retire `--write-terms` subcommand
bisect--helper: retire `--bisect-autostart` subcommand
Rafael Silva (2):
worktree: teach `list` to annotate locked worktree
maintenance: fix SEGFAULT when no repository
René Scharfe (19):
Makefile: use git init/add/commit/archive for dist-doc
Makefile: remove the unused variable TAR_DIST_EXTRA_OPTS
grep: handle deref_tag() returning NULL
blame: handle deref_tag() returning NULL
line-log: handle deref_tag() returning NULL
object: allow clear_commit_marks_all to handle any repo
bisect: clear flags in passed repository
stash: simplify reflog emptiness check
pack-write: use hashwrite_be32() instead of double-buffering array
archive: support compression levels beyond 9
blame: silently ignore invalid ignore file objects
csum-file: add hashwrite_be64()
midx: use hashwrite_be64()
pack-write: use hashwrite_be64()
diff-lib: plug minor memory leaks in do_diff_cache()
archive: release refname after use
gc: fix cast in compare_tasks_by_selection()
fetch-pack: disregard invalid pack lockfiles
gitignore: remove entry for git serve
Robert Karszniewicz (2):
git-completion.bash: __git_diff_common_options: add --[no-]patch
git-completion.bash: stash-show: complete $__git_diff_common_options
SZEDER Gábor (4):
bisect: loosen halfway() check for a large number of commits
t5310-pack-bitmaps: skip JGit tests with SHA256
tests: make sure nested lazy prereqs work reliably
tests: fix description of 'test_set_prereq'
Samuel Čavoj (3):
sequencer: fix gpg option passed to merge subcommand
sequencer: pass explicit --no-gpg-sign to merge
t3435: add tests for rebase -r GPG signing
Sean Barag (7):
clone: add tests for --template and some disallowed option pairs
clone: use more conventional config/option layering
remote: add tests for add and rename with invalid names
refs: consolidate remote name validation
clone: validate --origin option before use
clone: read new remote name from remote_name instead of option_origin
clone: allow configurable default for `-o`/`--origin`
Sergey Organov (2):
doc/diff-options: fix out of place mentions of '--patch/-p'
glossary: improve "branch" definition
Sibo Dong (1):
git-prompt.sh: localize `option` in __git_ps1_show_upstream
Simão Afonso (1):
crendential-store: use timeout when locking file
Sohom Datta (1):
userdiff: expand detected chunk headers for css
Srinidhi Kaushik (3):
push: add reflog check for "--force-if-includes"
push: parse and set flag for "--force-if-includes"
t, doc: update tests, reference for "--force-if-includes"
Taylor Blau (5):
builtin/repack.c: keep track of what pack-objects wrote
builtin/repack.c: don't move existing packs out of the way
packfile.c: protect against disappearing indexes
midx.c: protect against disappearing packs
builtin/bugreport.c: use thread-safe localtime_r()
Thomas Koutcher (1):
credential: load default config
Victor Engmark (1):
userdiff: support Bash
brian m. carlson (1):
svn: use correct variable name for short OID
Ævar Arnfjörð Bjarmason (8):
remote: add meaningful exit code on missing/existing
config.mak.uname: remove unused the NO_R_TO_GCC_LINKER flag
config.mak.uname: remove unused NEEDS_SSL_WITH_CURL flag
submodule: use "fetch" logic instead of custom remote discovery
submodule: remove sh function in favor of helper
parse-remote: remove this now-unused library
gc docs: change --keep-base-pack to --keep-largest-pack
gc: rename keep_base_pack variable for --keep-largest-pack
Štěpán Němec (1):
config.txt: fix a typo (backslash != backquote)
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.29.0
@ 2020-10-19 18:13 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-10-19 18:13 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.29.0 is now available at the
usual places. It is comprised of 627 non-merge commits since
v2.28.0, contributed by 89 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.29.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.28.0 are as follows.
Welcome to the Git development community!
Aaron Lipman, Adrian Moennich, Ákos Uzonyi, Antti Keränen,
Christian Schlack, Conor Davis, Daniel Santos, Eric Huber, Evan
Gates, Han Xin, Hugo Locurcio, Kyohei Kadota, Lin Sun, Nikita
Leonov, Noam Yorav-Raphael, pudinha, Raymond E. Pasco, Ryan
Zoeller, Samanta Navarro, Serg Tereshchenko, Sibi Siddharthan,
Simon Legner, Steve Kemp, and Theodore Dubois.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alessandro Menti,
Alexander Shopov, Alex Henrie, Alex Riesen, Andrei Rybak,
Beat Bolli, Ben Wijen, brian m. carlson, Christian Couder,
Chris Torek, Danny Lin, Denton Liu, Derrick Stolee, Đoàn
Trần Công Danh, Drew DeVault, Edmundo Carmona Antoranz,
Elijah Newren, Emily Shaffer, Emir Sarı, Eric Sunshine,
Han-Wen Nienhuys, Hariom Verma, Jacob Keller, Jean-Noël
Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes Berg,
Johannes Schindelin, Johannes Sixt, Jonathan Tan, Jordi Mas,
Junio C Hamano, Kazuhiro Kato, Luke Diamand, Martin Ågren,
Matheus Tavares, Matthew Rogers, Matthias Rüster, Michael
Forney, Michal Privoznik, Miriam Rubio, Orgad Shaneh, Patrick
Steinhardt, Paul Mackerras, Peter Krefting, Philippe Blain,
Phillip Wood, Pranit Bauva, Prathamesh Chavan, Pratyush Yadav,
René Scharfe, Rohit Ashiwal, Sergey Organov, Shourya Shukla,
Stefan Dotterweich, Stefan Haller, SZEDER Gábor, Taylor Blau,
Thomas Guyot-Sionnest, Trần Ngọc Quân, Yi-Jyun Pan, and
Роман Донченко.
----------------------------------------------------------------
Git 2.29 Release Notes
======================
Updates since v2.28
-------------------
UI, Workflows & Features
* "git help log" has been enhanced by sharing more material from the
documentation for the underlying "git rev-list" command.
* "git for-each-ref --format=<>" learned %(contents:size).
* "git merge" learned to selectively omit " into <branch>" at the end
of the title of default merge message with merge.suppressDest
configuration.
* The component to respond to "git fetch" request is made more
configurable to selectively allow or reject object filtering
specification used for partial cloning.
* Stop when "sendmail.*" configuration variables are defined, which
could be a mistaken attempt to define "sendemail.*" variables.
* The existing backends for "git mergetool" based on variants of vim
have been refactored and then support for "nvim" has been added.
* "git bisect" learns the "--first-parent" option to find the first
breakage along the first-parent chain.
* "git log --first-parent -p" showed patches only for single-parent
commits on the first-parent chain; the "--first-parent" option has
been made to imply "-m". Use "--no-diff-merges" to restore the
previous behaviour to omit patches for merge commits.
* The commit labels used to explain each side of conflicted hunks
placed by the sequencer machinery have been made more readable by
humans.
* The "--batch-size" option of "git multi-pack-index repack" command
is now used to specify that very small packfiles are collected into
one until the total size roughly exceeds it.
* The recent addition of SHA-256 support is marked as experimental in
the documentation.
* "git fetch" learned --no-write-fetch-head option to avoid writing
the FETCH_HEAD file.
* Command line completion (in contrib/) usually omits redundant,
deprecated and/or dangerous options from its output; it learned to
optionally include all of them.
* The output from the "diff" family of the commands had abbreviated
object names of blobs involved in the patch, but its length was not
affected by the --abbrev option. Now it is.
* "git worktree" gained a "repair" subcommand to help users recover
after moving the worktrees or repository manually without telling
Git. Also, "git init --separate-git-dir" no longer corrupts
administrative data related to linked worktrees.
* The "--format=" option to the "for-each-ref" command and friends
learned a few more tricks, e.g. the ":short" suffix that applies to
"objectname" now also can be used for "parent", "tree", etc.
* "git worktree add" learns that the "-d" is a synonym to "--detach"
option to create a new worktree without being on a branch.
* "format-patch --range-diff=<prev> <origin>..HEAD" has been taught
not to ignore <origin> when <prev> is a single version.
* "add -p" now allows editing paths that were only added in intent.
* The 'meld' backend of the "git mergetool" learned to give the
underlying 'meld' the '--auto-merge' option, which would help
reduce the amount of text that requires manual merging.
* "git for-each-ref" and friends that list refs used to allow only
one --merged or --no-merged to filter them; they learned to take
combination of both kind of filtering.
* "git maintenance", a "git gc"'s big brother, has been introduced to
take care of more repository maintenance tasks, not limited to the
object database cleaning.
* "git receive-pack" that accepts requests by "git push" learned to
outsource most of the ref updates to the new "proc-receive" hook.
* "git push" that wants to be atomic and wants to send push
certificate learned not to prepare and sign the push certificate
when it fails the local check (hence due to atomicity it is known
that no certificate is needed).
* "git commit-graph write" learned to limit the number of bloom
filters that are computed from scratch with the --max-new-filters
option.
* The transport protocol v2 has become the default again.
* The installation procedure learned to optionally omit "git-foo"
executable files for each 'foo' built-in subcommand, which are only
required by old timers that still rely on the age old promise that
prepending "git --exec-path" output to PATH early in their script
will keep the "git-foo" calls they wrote working.
* The command line completion (in contrib/) learned that "git restore
-s <TAB>" is often followed by a refname.
* "git shortlog" has been taught to group commits by the contents of
the trailer lines, like "Reviewed-by:", "Coauthored-by:", etc.
* "git archive" learns the "--add-file" option to include untracked
files into a snapshot from a tree-ish.
* "git fetch" and "git push" support negative refspecs.
* "git format-patch" learns to take "whenAble" as a possible value
for the format.useAutoBase configuration variable to become no-op
when the automatically computed base does not make sense.
* Credential helpers are now allowed to terminate lines with CRLF
line ending, as well as LF line ending.
Performance, Internal Implementation, Development Support etc.
* The changed-path Bloom filter is improved using ideas from an
independent implementation.
* Updates to the changed-paths bloom filter.
* The test framework has been updated so that most tests will run
with predictable (artificial) timestamps.
* Preliminary clean-up of the refs API in preparation for adding a
new refs backend "reftable".
* Dev support to limit the use of test_must_fail to only git commands.
* While packing many objects in a repository with a promissor remote,
lazily fetching missing objects from the promissor remote one by
one may be inefficient---the code now attempts to fetch all the
missing objects in batch (obviously this won't work for a lazy
clone that lazily fetches tree objects as you cannot even enumerate
what blobs are missing until you learn which trees are missing).
* The pretend-object mechanism checks if the given object already
exists in the object store before deciding to keep the data
in-core, but the check would have triggered lazy fetching of such
an object from a promissor remote.
* The argv_array API is useful for not just managing argv but any
"vector" (NULL-terminated array) of strings, and has seen adoption
to a certain degree. It has been renamed to "strvec" to reduce the
barrier to adoption.
* The final leg of SHA-256 transition plus doc updates. Note that
there is no interoperability between SHA-1 and SHA-256
repositories yet.
* CMake support to build with MSVC for Windows bypassing the Makefile.
* A new helper function has_object() has been introduced to make it
easier to mark object existence checks that do and don't want to
trigger lazy fetches, and a few such checks are converted using it.
* A no-op replacement function implemented as a C preprocessor macro
does not perform as good a job as one implemented as a "static
inline" function in catching errors in parameters; replace the
former with the latter in <git-compat-util.h> header.
* Test framework update.
(merge d572f52a64 es/test-cmp-typocatcher later to maint).
* Updates to "git merge" tests, in preparation for a new merge
strategy backend.
* midx and commit-graph files now use the byte defined in their file
format specification for identifying the hash function used for
object names.
* The FETCH_HEAD is now always read from the filesystem regardless of
the ref backend in use, as its format is much richer than the
normal refs, and written directly by "git fetch" as a plain file..
* An unused binary has been discarded, and and a bunch of commands
have been turned into into built-in.
* A handful of places in in-tree code still relied on being able to
execute the git subcommands, especially built-ins, in "git-foo"
form, which have been corrected.
* When a packfile is removed by "git repack", multi-pack-index gets
cleared; the code was taught to do so less aggressively by first
checking if the midx actually refers to a pack that no longer
exists.
* Internal API clean-up to handle two options "diff-index" and "log"
have, which happen to share the same short form, more sensibly.
* The "add -i/-p" machinery has been written in C but it is not used
by default yet. It is made default to those who are participating
in feature.experimental experiment.
* Allow maintainers to tweak $(TAR) invocations done while making
distribution tarballs.
* "git index-pack" learned to resolve deltified objects with greater
parallelism.
* "diff-highlight" (in contrib/) had a logic to flush its output upon
seeing a blank line but the way it detected a blank line was broken.
* The logic to skip testing on the tagged commit and the tag itself
was not quite consistent which led to failure of Windows test
tasks. It has been revamped to consistently skip revisions that
have already been tested, based on the tree object of the revision.
Fixes since v2.28
-----------------
* The "mediawiki" remote backend which lives in contrib/mw-to-git/
and is not built with git by default, had an RCE bug allowing a
malicious MediaWiki server operator to inject arbitrary commands
for execution by a cloning client. This has been fixed.
The bug was discovered and reported by Joern Schneeweisz of GitLab
to the git-security mailing list. Its practical impact due to the
obscurity of git-remote-mediawiki was deemed small enough to forgo
a dedicated security release.
* "git clone --separate-git-dir=$elsewhere" used to stomp on the
contents of the existing directory $elsewhere, which has been
taught to fail when $elsewhere is not an empty directory.
(merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).
* With the base fix to 2.27 regresion, any new extensions in a v0
repository would still be silently honored, which is not quite
right. Instead, complain and die loudly.
(merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint).
* Fetching from a lazily cloned repository resulted at the server
side in attempts to lazy fetch objects that the client side has,
many of which will not be available from the third-party anyway.
(merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint).
* Fix to an ancient bug caused by an over-eager attempt for
optimization.
(merge a98f7fb366 rs/add-index-entry-optim-fix later to maint).
* Pushing a ref whose name contains non-ASCII character with the
"--force-with-lease" option did not work over smart HTTP protocol,
which has been corrected.
(merge cd85b447bf bc/push-cas-cquoted-refname later to maint).
* "git mv src dst", when src is an unmerged path, errored out
correctly but with an incorrect error message to claim that src is
not tracked, which has been clarified.
(merge 9b906af657 ct/mv-unmerged-path-error later to maint).
* Fix to a regression introduced during 2.27 cycle.
(merge cada7308ad en/fill-directory-exponential later to maint).
* Command line completion (in contrib/) update.
(merge 688b87c81b mp/complete-show-color-moved later to maint).
* All "mergy" operations that internally use the merge-recursive
machinery should honor the merge.renormalize configuration, but
many of them didn't.
* Doc cleanup around "worktree".
(merge dc9c144be5 es/worktree-doc-cleanups later to maint).
* The "git blame --first-parent" option was not documented, but now
it is.
(merge 11bc12ae1e rp/blame-first-parent-doc later to maint).
* The logic to find the ref transaction hook script attempted to
cache the path to the found hook without realizing that it needed
to keep a copied value, as the API it used returned a transitory
buffer space. This has been corrected.
(merge 09b2aa30c9 ps/ref-transaction-hook later to maint).
* Recent versions of "git diff-files" shows a diff between the index
and the working tree for "intent-to-add" paths as a "new file"
patch; "git apply --cached" should be able to take "git diff-files"
and should act as an equivalent to "git add" for the path, but the
command failed to do so for such a path.
(merge 4c025c667e rp/apply-cached-with-i-t-a later to maint).
* "git diff [<tree-ish>] $path" for a $path that is marked with i-t-a
bit was not showing the mode bits from the working tree.
(merge cb0dd22b82 rp/ita-diff-modefix later to maint).
* Ring buffer with size 4 used for bin-hex translation resulted in a
wrong object name in the sequencer's todo output, which has been
corrected.
(merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint).
* When given more than one target line ranges, "git blame -La,b
-Lc,d" was over-eager to coalesce groups of original lines and
showed incorrect results, which has been corrected.
(merge c2ebaa27d6 jk/blame-coalesce-fix later to maint).
* The regexp to identify the function boundary for FORTRAN programs
has been updated.
(merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint).
* A few end-user facing messages have been updated to be
hash-algorithm agnostic.
(merge 4279000d3e jc/object-names-are-not-sha-1 later to maint).
* "unlink" emulation on MinGW has been optimized.
(merge 680e0b4524 jh/mingw-unlink later to maint).
* The purpose of "git init --separate-git-dir" is to initialize a
new project with the repository separate from the working tree,
or, in the case of an existing project, to move the repository
(the .git/ directory) out of the working tree. It does not make
sense to use --separate-git-dir with a bare repository for which
there is no working tree, so disallow its use with bare
repositories.
(merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint).
* "ls-files -o" mishandled the top-level directory of another git
working tree that hangs in the current git working tree.
(merge ab282aa548 en/dir-nonbare-embedded later to maint).
* Fix some incorrect UNLEAK() annotations.
(merge 3e19816dc0 jk/unleak-fixes later to maint).
* Use more buffered I/O where we used to call many small write(2)s.
(merge a698d67b08 rs/more-buffered-io later to maint).
* The patch-id computation did not ignore the "incomplete last line"
marker like whitespaces.
(merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint).
* Updates into a lazy/partial clone with a submodule did not work
well with transfer.fsckobjects set.
* The parser for "git for-each-ref --format=..." was too loose when
parsing the "%(trailers...)" atom, and forgot that "trailers" and
"trailers:<modifiers>" are the only two allowed forms, which has
been corrected.
(merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint).
* Long ago, we decided to use 3 threads by default when running the
index-pack task in parallel, which has been adjusted a bit upwards.
(merge fbff95b67f jk/index-pack-w-more-threads later to maint).
* "git restore/checkout --no-overlay" with wildcarded pathspec
mistakenly removed matching paths in subdirectories, which has been
corrected.
(merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint).
* The description of --cached/--index options in "git apply --help"
has been updated.
(merge d064702be3 rp/apply-cached-doc later to maint).
* Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and
running "git log --ignore-missing $ZERO_OID" fell back to start
digging from HEAD; it has been corrected to become a no-op, like
"git log --tags=no-tag-matches-this-pattern" does.
(merge 04a0e98515 jk/rev-input-given-fix later to maint).
* Various callers of run_command API have been modernized.
(merge afbdba391e jc/run-command-use-embedded-args later to maint).
* List of options offered and accepted by "git add -i/-p" were
inconsistent, which have been corrected.
(merge ce910287e7 pw/add-p-allowed-options-fix later to maint).
* "git diff --stat -w" showed 0-line changes for paths whose changes
were only whitespaces, which was not intuitive. We now omit such
paths from the stat output.
(merge 1cf3d5db9b mr/diff-hide-stat-wo-textual-change later to maint).
* It was possible for xrealloc() to send a non-NULL pointer that has
been freed, which has been fixed.
(merge 6479ea4a8a jk/xrealloc-avoid-use-after-free later to maint).
* "git status" has trouble showing where it came from by interpreting
reflog entries that record certain events, e.g. "checkout @{u}", and
gives a hard/fatal error. Even though it inherently is impossible
to give a correct answer because the reflog entries lose some
information (e.g. "@{u}" does not record what branch the user was
on hence which branch 'the upstream' needs to be computed, and even
if the record were available, the relationship between branches may
have changed), at least hide the error and allow "status" to show its
output.
* "git status --short" quoted a path with SP in it when tracked, but
not those that are untracked, ignored or unmerged. They are all
shown quoted consistently.
* "git diff/show" on a change that involves a submodule used to read
the information on commits in the submodule from a wrong repository
and gave a wrong information when the commit-graph is involved.
(merge 85a1ec2c32 mf/submodule-summary-with-correct-repository later to maint).
* Unlike "git config --local", "git config --worktree" did not fail
early and cleanly when started outside a git repository.
(merge 378fe5fc3d mt/config-fail-nongit-early later to maint).
* There is a logic to estimate how many objects are in the
repository, which is meant to run once per process invocation, but
it ran every time the estimated value was requested.
(merge 67bb65de5d jk/dont-count-existing-objects-twice later to maint).
* "git remote set-head" that failed still said something that hints
the operation went through, which was misleading.
(merge 5a07c6c3c2 cs/don-t-pretend-a-failed-remote-set-head-succeeded later to maint).
* "git fetch --all --ipv4/--ipv6" forgot to pass the protocol options
to instances of the "git fetch" that talk to individual remotes,
which has been corrected.
(merge 4e735c1326 ar/fetch-ipversion-in-all later to maint).
* The "unshelve" subcommand of "git p4" incorrectly used commit^N
where it meant to say commit~N to name the Nth generation
ancestor, which has been corrected.
(merge 0acbf5997f ld/p4-unshelve-fix later to maint).
* "git clone" that clones from SHA-1 repository, while
GIT_DEFAULT_HASH set to use SHA-256 already, resulted in an
unusable repository that half-claims to be SHA-256 repository
with SHA-1 objects and refs. This has been corrected.
* Adjust sample hooks for hash algorithm other than SHA-1.
(merge d8d3d632f4 dl/zero-oid-in-hooks later to maint).
* "git range-diff" showed incorrect diffstat, which has been
corrected.
* Earlier we taught "git pull" to warn when the user does not say the
histories need to be merged, rebased or accepts only fast-
forwarding, but the warning triggered for those who have set the
pull.ff configuration variable.
(merge 54200cef86 ah/pull later to maint).
* Compilation fix around type punning.
(merge 176380fd11 jk/drop-unaligned-loads later to maint).
* "git blame --ignore-rev/--ignore-revs-file" failed to validate
their input are valid revision, and failed to take into account
that the user may want to give an annotated tag instead of a
commit, which has been corrected.
(merge 610e2b9240 jc/blame-ignore-fix later to maint).
* "git bisect start X Y", when X and Y are not valid committish
object names, should take X and Y as pathspec, but didn't.
(merge 73c6de06af cc/bisect-start-fix later to maint).
* The explanation of the "scissors line" has been clarified.
(merge 287416dba6 eg/mailinfo-doc-scissors later to maint).
* A race that leads to an access to a free'd data was corrected in
the codepath that reads pack files.
(merge bda959c476 mt/delta-base-cache-races later to maint).
* in_merge_bases_many(), a way to see if a commit is reachable from
any commit in a set of commits, was totally broken when the
commit-graph feature was in use, which has been corrected.
(merge 8791bf1841 ds/in-merge-bases-many-optim-bug later to maint).
* "git submodule update --quiet" did not squelch underlying "rebase"
and "pull" commands.
(merge 3ad0401e9e td/submodule-update-quiet later to maint).
* The lazy fetching done internally to make missing objects available
in a partial clone incorrectly made permanent damage to the partial
clone filter in the repository, which has been corrected.
* "log -c --find-object=X" did not work well to find a merge that
involves a change to an object X from only one parent.
(merge 957876f17d jk/diff-cc-oidfind-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 84544f2ea3 sk/typofixes later to maint).
(merge b17f411ab5 ar/help-guides-doc later to maint).
(merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint).
(merge 861c4ce141 en/typofixes later to maint).
(merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint).
(merge e2bfa50ac3 jb/doc-packfile-name later to maint).
(merge 918d8ff780 es/worktree-cleanup later to maint).
(merge dc156bc31f ma/t1450-quotefix later to maint).
(merge 56e743426b en/merge-recursive-comment-fixes later to maint).
(merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint).
(merge de20baf2c9 ny/notes-doc-sample-update later to maint).
(merge f649aaaf82 so/rev-parser-errormessage-fix later to maint).
(merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint).
(merge ac900fddb7 ma/stop-progress-null-fix later to maint).
(merge e767963ab6 rs/upload-pack-sigchain-fix later to maint).
(merge a831908599 rs/preserve-merges-unused-code-removal later to maint).
(merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint).
(merge 847b37271e pb/set-url-docfix later to maint).
(merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint).
(merge ce820cbd58 dl/subtree-docs later to maint).
(merge 55fe225dde jk/leakfix later to maint).
(merge ee22a29215 so/pretty-abbrev-doc later to maint).
(merge 3100fd5588 jc/post-checkout-doc later to maint).
(merge 17bae89476 pb/doc-external-diff-env later to maint).
(merge 27ed6ccc12 jk/worktree-check-clean-leakfix later to maint).
(merge 1302badd16 ea/blame-use-oideq later to maint).
(merge e6d5a11fed al/t3200-back-on-a-branch later to maint).
(merge 324efcf6b6 pw/add-p-leakfix later to maint).
(merge 1c6ffb546b jk/add-i-fixes later to maint).
(merge e40e936551 cd/commit-graph-doc later to maint).
(merge 0512eabd91 jc/sequencer-stopped-sha-simplify later to maint).
(merge d01141de5a so/combine-diff-simplify later to maint).
(merge 3be01e5ab1 sn/fast-import-doc later to maint).
----------------------------------------------------------------
Changes since v2.28.0 are as follows:
Aaron Lipman (12):
t6030: modernize "git bisect run" tests
rev-list: allow bisect and first-parent flags
cmd_bisect__helper: defer parsing no-checkout flag
bisect: introduce first-parent flag
bisect: combine args passed to find_bisection()
bisect: add first-parent option to documentation
t3200: clean side effect of git checkout --orphan
t3201: test multiple branch filter combinations
Doc: cover multiple contains/no-contains filters
ref-filter: allow merged and no-merged filters
ref-filter: make internal reachable-filter API more precise
Doc: prefer more specific file name
Adrian Moennich (1):
ci: fix inconsistent indentation
Alban Gruin (1):
t6300: fix issues related to %(contents:size)
Alessandro Menti (2):
l10n: it.po: update the Italian translation for Git 2.29.0 round 1
l10n: it.po: update the Italian translation
Alex Henrie (1):
pull: don't warn if pull.ff has been set
Alex Riesen (1):
fetch: pass --ipv4 and --ipv6 options to sub-fetches
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5013t)
Andrei Rybak (1):
git-help.txt: fix mentions of option --guides
Antti Keränen (1):
rebase -i: fix possibly wrong onto hash in todo
Beat Bolli (1):
gitk: rename "commit summary" to "commit reference"
Ben Wijen (1):
git clone: don't clone into non-empty directory
Chris Torek (1):
git-mv: improve error message for conflicted file
Christian Couder (4):
Documentation: clarify %(contents:XXXX) doc
t6300: test refs pointing to tree and blob
ref-filter: add support for %(contents:size)
bisect: don't use invalid oid as rev when starting
Christian Schlack (1):
remote: don't show success message when set-head fails
Conor Davis (1):
commit-graph-format.txt: fix no-parent value
Daniel Santos (2):
l10n: Portuguese translation team has changed. Wohoo!
l10n: pt_PT: make on po/pt_PT.po
Danny Lin (2):
contrib/subtree: fix "unsure" for --message in the document
contrib/subtree: document 'push' does not take '--squash'
Denton Liu (13):
t3701: stop using `env` in force_color()
t5324: reorder `run_with_limited_open_files test_might_fail`
t7107: don't use test_must_fail()
t9834: remove use of `test_might_fail p4`
t9400: don't use test_must_fail with cvs
test-lib-functions: restrict test_must_fail usage
contrib/completion: complete options that take refs for format-patch
hooks--pre-push.sample: modernize script
hooks--pre-push.sample: use hash-agnostic zero OID
hooks--update.sample: use hash-agnostic zero OID
gitk: replace tabs with spaces
compat/mingw.h: drop extern from function declaration
Makefile: ASCII-sort += lists
Derrick Stolee (22):
commit-graph: place bloom_settings in context
commit-graph: change test to die on parse, not load
bloom: fix logic in get_bloom_filter()
commit-graph: persist existence of changed-paths
revision.c: fix whitespace
multi-pack-index: repack batches below --batch-size
t/README: document GIT_TEST_DEFAULT_HASH
commit-graph: use the "hash version" byte
multi-pack-index: use hash version byte
bloom/diff: properly short-circuit on max_changes
maintenance: create basic maintenance runner
maintenance: add --quiet option
maintenance: replace run_auto_gc()
maintenance: initialize task array
maintenance: add commit-graph task
maintenance: add --task option
maintenance: take a lock on the objects directory
maintenance: create maintenance.<task>.enabled config
maintenance: use pointers to check --auto
maintenance: add auto condition for commit-graph task
maintenance: add trace2 regions for task execution
commit-reach: fix in_merge_bases_many bug
Drew DeVault (1):
git-send-email: die if sendmail.* config is set
Edmundo Carmona Antoranz (1):
blame.c: replace instance of !oidcmp for oideq
Elijah Newren (26):
Remove doubled words in various comments
hashmap: fix typo in usage docs
merge-recursive: fix unclear and outright wrong comments
t6038: make tests fail for the right reason
t6038: remove problematic test
merge: make merge.renormalize work for all uses of merge machinery
checkout: support renormalization with checkout -m <paths>
Collect merge-related tests to t64xx
t6418: tighten delete/normalize conflict testcase
t6422: fix bad check against missing file
t6416, t6422: fix incorrect untracked file count
t6423: fix test setup for a couple tests
t6422: fix multiple errors with the mod6 test expectations
t6416, t6423: clarify some comments and fix some typos
t6423: add an explanation about why one of the tests does not pass
t6422, t6426: be more flexible for add/add conflicts involving renames
t642[23]: be more flexible for add/add conflicts involving pair renames
t6425: be more flexible with rename/delete conflict messages
t3000: fix some test description typos
dir: avoid prematurely marking nonbare repositories as matches
sequencer: avoid garbled merge machinery messages due to commit labels
mem-pool: add convenience functions for strdup and strndup
mem-pool: use more standard initialization and finalization
mem-pool: use consistent pool variable name
dir: make clear_directory() free all relevant memory
dir: fix problematic API to avoid memory leaks
Emily Shaffer (1):
Revert "contrib: subtree: adjust test to change in fmt-merge-msg"
Emir Sarı (2):
l10n: tr: v2.29.0 round 1
l10n: tr: v2.29.0 round 2
Eric Huber (1):
gitk: Preserve window dimensions on exit when not using ttk themes
Eric Sunshine (22):
worktree: drop pointless strbuf_release()
worktree: drop unused code from get_linked_worktree()
worktree: drop bogus and unnecessary path munging
worktree: retire special-case normalization of main worktree path
git-worktree.txt: employ fixed-width typeface consistently
git-worktree.txt: consistently use term "working tree"
git-worktree.txt: fix minor grammatical issues
git-worktree.txt: make start of new sentence more obvious
git-worktree.txt: link to man pages when citing other Git commands
test_cmp: diagnose incorrect arguments
init: disallow --separate-git-dir with bare repository
worktree: add skeleton "repair" command
worktree: teach "repair" to fix worktree back-links to main worktree
worktree: teach "repair" to fix outgoing links to worktrees
init: teach --separate-git-dir to repair linked worktrees
init: make --separate-git-dir work from within linked worktree
git-checkout.txt: document -d short option for --detach
worktree: teach `add` to recognize -d as shorthand for --detach
git-worktree.txt: discuss branch-based vs. throwaway worktrees
diff: move show_interdiff() from its own file to diff-lib
diff-lib: tighten show_interdiff()'s interface
format-patch: use 'origin' as start of current-series-range when known
Evan Gates (1):
Doc: show example scissors line
Han Xin (1):
send-pack: run GPG after atomic push checking
Han-Wen Nienhuys (17):
lib-t6000.sh: write tag using git-update-ref
t3432: use git-reflog to inspect the reflog for HEAD
bisect: treat BISECT_HEAD as a pseudo ref
t1400: use git rev-parse for testing PSEUDOREF existence
Modify pseudo refs through ref backend storage
Make HEAD a PSEUDOREF rather than PER_WORKTREE.
refs: move the logic to add \t to reflog to the files backend
refs: split off reading loose ref data in separate function
refs: fix comment about submodule ref_stores
refs: move gitdir into base ref_store
refs: read FETCH_HEAD and MERGE_HEAD generically
refs: make refs_ref_exists public
sequencer: treat CHERRY_PICK_HEAD as a pseudo ref
builtin/commit: suggest update-ref for pseudoref removal
sequencer: treat REVERT_HEAD as a pseudo ref
refs: move REF_LOG_ONLY to refs-internal.h
refs: add GIT_TRACE_REFS debugging mechanism
Hariom Verma (10):
t6300: unify %(trailers) and %(contents:trailers) tests
ref-filter: 'contents:trailers' show error if `:` is missing
ref-filter: support different email formats
ref-filter: refactor `grab_objectname()`
ref-filter: modify error messages in `grab_objectname()`
ref-filter: rename `objectname` related functions and fields
ref-filter: add `short` modifier to 'tree' atom
ref-filter: add `short` modifier to 'parent' atom
pretty: refactor `format_sanitized_subject()`
ref-filter: add `sanitize` option for 'subject' atom
Hugo Locurcio (1):
bisect: swap command-line options in documentation
Jacob Keller (4):
refspec: fix documentation referring to refspec_item
refspec: make sure stack refspec_item variables are zeroed
refspec: add support for negative refspecs
format-patch: teach format.useAutoBase "whenAble" option
Jean-Noël Avila (6):
l10n: fr: v2.29.0 rnd 1
git-bisect-lk2009: make continuation of list indented
doc: use linkgit macro where needed.
doc: git-remote fix ups
doc: fix the bnf like style of some commands
l10n: fr: v2.29.0 rnd 2
Jeff Hostetler (1):
mingw: improve performance of mingw_unlink()
Jeff King (82):
t6000: use test_tick consistently
t9700: loosen ident timezone regex
t5539: make timestamp requirements more explicit
t9100: explicitly unset GIT_COMMITTER_DATE
test-lib: set deterministic default author/committer date
t9100: stop depending on commit timestamps
verify_repository_format(): complain about new extensions in v0 repo
argv-array: use size_t for count and alloc
argv-array: rename to strvec
strvec: rename files from argv-array to strvec
quote: rename sq_dequote_to_argv_array to mention strvec
strvec: convert builtin/ callers away from argv_array name
strvec: convert more callers away from argv_array name
strvec: convert remaining callers away from argv_array name
strvec: fix indentation in renamed calls
strvec: update documention to avoid argv_array
strvec: drop argv_array compatibility layer
log: drop "--cc implies -m" logic
revision: add "--no-diff-merges" option to counteract "-m"
log: enable "-m" automatically with "--first-parent"
doc/git-log: move "Diff Formatting" from rev-list-options
doc/git-log: drop "-r" diff option
doc/git-log: move "-t" into diff-options list
doc/git-log: clarify handling of merge commit diffs
strvec: rename struct fields
config: work around gcc-10 -Wstringop-overflow warning
revision: avoid out-of-bounds read/write on empty pathspec
revision: avoid leak when preparing bloom filter for "/"
t5616: use test_i18ngrep for upload-pack errors
sideband: mark "remote error:" prefix for translation
t1416: avoid hard-coded sha1 ids
t8003: check output of coalesced blame
t8003: factor setup out of coalesce test
blame: only coalesce lines that are adjacent in result
Makefile: drop builtins from MSVC pdb list
make credential helpers builtins
make git-bugreport a builtin
make git-fast-import a builtin
drop vcs-svn experiment
stop calling UNLEAK() before die()
ls-remote: simplify UNLEAK() usage
clear_pattern_list(): clear embedded hashmaps
submodule--helper: use strbuf_release() to free strbufs
checkout: fix leak of non-existent branch names
config: fix leaks from git_config_get_string_const()
config: drop git_config_get_string_const()
config: fix leak in git_config_get_expiry_in_days()
submodule--helper: fix leak of core.worktree value
p5302: disable thread-count parameter tests by default
p5302: count up to online-cpus for thread tests
index-pack: adjust default threading cap
revision: set rev_input_given in handle_revision_arg()
worktree: fix leak in check_clean_worktree()
xrealloc: do not reuse pointer freed by zero-length realloc()
add-patch: fix inverted return code of repo_read_index()
add--interactive.perl: specify --no-color explicitly
packfile: actually set approximate_object_count_valid
diff-highlight: correctly match blank lines for flush
bswap.h: drop unaligned loads
Revert "fast-export: use local array to store anonymized oid"
shortlog: change "author" variables to "ident"
protocol: re-enable v2 protocol by default
shortlog: add grouping option
trailer: add interface for iterating over commit trailers
shortlog: match commit trailers with --group
shortlog: de-duplicate trailer values
shortlog: rename parse_stdin_ident()
shortlog: parse trailer idents
shortlog: allow multiple groups to be specified
convert: drop unused crlf_action from check_global_conv_flags_eol()
drop unused argc parameters
env--helper: write to opt->value in parseopt helper
assert PARSE_OPT_NONEG in parse-options callbacks
push: drop unused repo argument to do_push()
sequencer: drop repository argument from run_git_commit()
sparse-checkout: fill in some options boilerplate
test-advise: check argument count with argc instead of argv
sequencer: handle ignore_footer when parsing trailers
dir.c: drop unused "untracked" from treat_path_fast()
combine-diff: handle --find-object in multitree code path
index-pack: restore "resolving deltas" progress meter
index-pack: drop type_cas mutex
Jiang Xin (13):
transport: not report a non-head push as a branch
t5411: add basic test cases for proc-receive hook
receive-pack: add new proc-receive hook
receive-pack: feed report options to post-receive
New capability "report-status-v2" for git-push
doc: add document for capability report-status-v2
receive-pack: new config receive.procReceiveRefs
t5411: test updates of remote-tracking branches
transport: parse report options for tracking refs
doc: add documentation for the proc-receive hook
l10n: git.pot: v2.29.0 round 1 (124 new, 42 removed)
l10n: git.pot: v2.29.0 round 2 (1 new, 1 removed)
l10n: zh_CN: for git v2.29.0 l10n round 1 and 2
Johannes Berg (2):
pack-write/docs: update regarding pack naming
docs: commit-graph: fix some whitespace in the diagram
Johannes Schindelin (26):
t3404: prepare 'short SHA-1 collision' tests for SHA-256
ci: fix indentation of the `ci-config` job
ci: avoid ugly "failure" in the `ci-config` job
t/test-terminal: avoid non-inclusive language
fast-export: avoid using unnecessary language in a code comment
t3200: avoid variations of the `master` branch name
msvc: copy the correct `.pdb` files in the Makefile target `install`
Optionally skip linking/copying the built-ins
ci: stop linking built-ins to the dashed versions
cmake: ignore files generated by CMake as run in Visual Studio
tests: avoid variations of the `master` branch name
t9902: avoid using the branch name `master`
cmake: do find Git for Windows' shell interpreter
cmake: ensure that the `vcpkg` packages are found on Windows
cmake: fall back to using `vcpkg`'s `msgfmt.exe` on Windows
cmake: quote the path accurately when editing `test-lib.sh`
cmake (Windows): let the `.dll` files be found when running the tests
cmake (Windows): complain when encountering an unknown compiler
cmake (Windows): initialize vcpkg/build dependencies automatically
cmake (Windows): recommend using Visual Studio's built-in CMake support
GitHub workflow: automatically follow minor updates of setup-msbuild
help: do not expect built-in commands to be hardlinked
t1415: avoid using `main` as ref name
tests: avoid using the branch name `main`
ci: skip GitHub workflow runs for already-tested commits/trees
ci: do not skip tagged revisions in GitHub workflows
Johannes Sixt (1):
gitk: Un-hide selection in areas with non-default background color
Jonathan Tan (33):
upload-pack: do not lazy-fetch "have" objects
pack-objects: refactor to oid_object_info_extended
pack-objects: prefetch objects to be packed
sha1-file: make pretend_object_file() not prefetch
sha1-file: introduce no-lazy-fetch has_object()
apply: do not lazy fetch when applying binary
pack-objects: no fetch when allow-{any,promisor}
fsck: do not lazy fetch known non-promisor object
negotiator/noop: add noop fetch negotiator
fetch: allow refspecs specified through stdin
fetch: avoid reading submodule config until needed
fetch: only populate existing_refs if needed
fetch-pack: do not lazy-fetch during ref iteration
promisor-remote: lazy-fetch objects in subprocess
fetch-pack: remove no_dependents code
fetch-pack: in partial clone, pass --promisor
Documentation: deltaBaseCacheLimit is per-thread
index-pack: remove redundant parameter
index-pack: unify threaded and unthreaded code
index-pack: remove redundant child field
index-pack: calculate {ref,ofs}_{first,last} early
index-pack: make resolve_delta() assume base data
(various): document from_promisor parameter
fetch-pack: document only_packfile in get_pack()
fetch-pack: make packfile URIs work with transfer.fsckobjects
fetch: no FETCH_HEAD display if --no-write-fetch-head
sha1-name: replace unsigned int with option struct
refs: move dwim_ref() to header file
wt-status: tolerate dangling marks
index-pack: make quantum of work smaller
promisor-remote: remove unused variable
fetch: do not override partial clone filter
index-pack: make get_base_data() comment clearer
Jordi Mas (1):
l10n: Update Catalan translation
Junio C Hamano (52):
gitk: be prepared to be run in a bare repository
reflog: cleanse messages in the refs.c layer
Revert "fmt-merge-msg: stop treating `master` specially"
fmt-merge-msg: allow merge destination to be omitted again
First batch post 2.28
The second batch -- mostly minor typofixes
Third batch
Fourth batch
Documentation: don't hardcode command categories twice
compat-util: type-check parameters of no-op replacement functions
Fifth batch
Sixth batch
Seventh batch
messages: avoid SHA-1 in end-user facing messages
Eighth batch
fetch: optionally allow disabling FETCH_HEAD update
Ninth batch
ident: say whose identity is missing when giving user.name hint
Tenth batch
t3436: do not run git-merge-recursive in dashed form
transport-helper: do not run git-remote-ext etc. in dashed form
cvsexportcommit: do not run git programs in dashed form
run_command: teach API users to use embedded 'args' more
credential-cache: use child_process.args
Eleventh batch
doc: clarify how exit status of post-checkout hook is used
Twelfth batch
Thirteenth batch
add -i: use the built-in version when feature.experimental is set
Makefile: allow extra tweaking of distribution tarball
Fourteenth batch
quote_path: rename quote_path_relative() to quote_path()
quote_path: give flags parameter to quote_path()
quote_path: optionally allow quoting a path with SP in it
quote_path: code clarification
wt-status: consistently quote paths in "status --short" output
quote: rename misnamed sq_lookup[] to cq_lookup[]
quote: turn 'nodq' parameter into a set of flags
Fifteenth batch
Sixteenth batch
t8013: minimum preparatory clean-up
blame: validate and peel the object names on the ignore list
t1506: rev-parse A..B and A...B
sequencer: stop abbreviating stopped-sha file
Seventeenth batch
Eighteenth batch
hashmap_for_each_entry(): workaround MSVC's runtime check failure #3
Nineteenth batch
Git 2.29-rc0
Git 2.29-rc1
Git 2.29-rc2
Git 2.29
Kazuhiro Kato (1):
gitk: fix branch name encoding error
Kyohei Kadota (1):
Fit to Plan 9's ANSI/POSIX compatibility layer
Lin Sun (1):
mergetool: allow auto-merge for meld to follow the vim-diff behavior
Luke Diamand (2):
git-p4 unshelve: adding a commit breaks git-p4 unshelve
git-p4: use HEAD~$n to find parent commit for unshelve
Martin Ågren (19):
dir: check pathspecs before returning `path_excluded`
t1450: fix quoting of NUL byte when corrupting pack
t: don't spuriously close and reopen quotes
t4104: modernize and simplify quoting
progress: don't dereference before checking for NULL
http-protocol.txt: document SHA-256 "want"/"have" format
index-format.txt: document SHA-256 index format
protocol-capabilities.txt: clarify "allow-x-sha1-in-want" re SHA-256
shallow.txt: document SHA-256 shallow format
Documentation: mark `--object-format=sha256` as experimental
wt-status: replace sha1 mentions with oid
wt-status: print to s->fp, not stdout
wt-status: introduce wt_status_state_free_buffers()
worktree: inline `worktree_ref()` into its only caller
worktree: update renamed variable in comment
worktree: rename copy-pasted variable
worktree: use skip_prefix to parse target
config/fmt-merge-msg.txt: drop space in quote
config/uploadpack.txt: fix typo in `--filter=tree:<n>`
Matheus Tavares (4):
checkout_entry(): remove unreachable error() call
config: complain about --worktree outside of a git repo
packfile: fix race condition on unpack_entry()
packfile: fix memory leak in add_delta_base_cache()
Matthew Rogers (1):
diff: teach --stat to ignore uninteresting modifications
Matthias Rüster (1):
l10n: de.po: Update German translation for Git 2.29.0
Michael Forney (2):
revision: use repository from rev_info when parsing commits
submodule: use submodule repository when preparing summary
Michal Privoznik (1):
completion: add show --color-moved[-ws]
Miriam Rubio (4):
bisect--helper: BUG() in cmd_*() on invalid subcommand
bisect--helper: use '-res' in 'cmd_bisect__helper' return
bisect--helper: introduce new `write_in_file()` function
bisect: call 'clear_commit_marks_all()' in 'bisect_next_all()'
Nikita Leonov (1):
credential: treat CR/LF as line endings in the credential protocol
Noam Yorav-Raphael (1):
docs: improve the example that illustrates git-notes path names
Orgad Shaneh (5):
vcbuild: fix library name for expat with make MSVC=1
vcbuild: fix batch file name in README
fetch: do not look for submodule changes in unchanged refs
submodule: suppress checking for file name and ref ambiguity for object ids
contrib/buildsystems: fix expat library name for generated vcxproj
Patrick Steinhardt (2):
refs: fix interleaving hook calls with reference-transaction hook
refs: remove lookup cache for reference-transaction hook
Paul Mackerras (1):
gitk: Resize panes correctly when reducing window size
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5013t0f0u)
Philippe Blain (19):
git-log.txt: add links to 'rev-list' and 'diff' docs
revisions.txt: describe 'rev1 rev2 ...' meaning for ranges
git-rev-list.txt: fix Asciidoc syntax
git-rev-list.txt: tweak wording in set operations
git-rev-list.txt: move description to separate file
git-log.txt: include rev-list-description.txt
command-list.txt: add missing 'gitcredentials' and 'gitremote-helpers'
help: drop usage of 'common' and 'useful' for guides
git.txt: add list of guides
fetch, pull doc: correct description of '--set-upstream'
userdiff: add tests for Fortran xfuncname regex
userdiff: improve Fortran xfuncname regex
git-imap-send.txt: don't duplicate 'Examples' sections
git-imap-send.txt: do verify SSL certificate for gmail.com
git-imap-send.txt: add note about localized Gmail folders
doc: mention GIT_SEQUENCE_EDITOR and 'sequence.editor' more
git.txt: correct stale 'GIT_EXTERNAL_DIFF' description
Makefile: add support for generating JSON compilation database
gitsubmodules doc: invoke 'ls-files' with '--recurse-submodules'
Phillip Wood (7):
add -p: use ALLOC_GROW_BY instead of ALLOW_GROW
add -p: fix checking of user input
am: stop exporting GIT_COMMITTER_DATE
rebase -i: support --committer-date-is-author-date
rebase -i: support --ignore-date
add -p: fix memory leak
add -p: fix editing of intent-to-add paths
Pranit Bauva (2):
bisect--helper: reimplement `bisect_autostart` shell function in C
bisect--helper: reimplement `bisect_next` and `bisect_auto_next` shell functions in C
Prathamesh Chavan (1):
submodule: port submodule subcommand 'summary' from shell to C
Raymond E. Pasco (6):
apply: allow "new file" patches on i-t-a entries
blame-options.txt: document --first-parent option
apply: make i-t-a entries never match worktree
t4140: test apply with i-t-a paths
diff-lib: use worktree mode in diffs from i-t-a entries
git-apply.txt: update descriptions of --cached, --index
René Scharfe (21):
read-cache: remove bogus shortcut
grep: avoid using oid_to_hex() with parse_object_or_die()
bisect: use oid_to_hex_r() instead of memcpy()+oid_to_hex()
upload-pack: remove superfluous sigchain_pop() call
rebase: remove unused function reschedule_last_action
connected: use buffered I/O to talk to rev-list
midx: use buffered I/O to talk to pack-objects
upload-pack: use buffered I/O to talk to rev-list
patch-id: ignore newline at end of file in diff_flush_patch_id()
checkout, restore: make pathspec recursive
read-cache: fix mem-pool allocation for multi-threaded index loading
push: release strbufs used for refspec formatting
refspec: add and use refspec_appendf()
fast-import: use write_pack_header()
midx: use hashwrite_u8() in write_midx_header()
pack-bitmap-write: use hashwrite_be32() in write_hash_cache()
pack-write: use hashwrite_be32() in write_idx_file()
archive: read short blobs in archive.c::write_archive_entry()
archive: add --add-file
Makefile: use git-archive --add-file
ref-filter: plug memory leak in reach_filter()
Rohit Ashiwal (2):
rebase -i: add --ignore-whitespace flag
rebase: add --reset-author-date
Ryan Zoeller (2):
parse-options: add --git-completion-helper-all
completion: add GIT_COMPLETION_SHOW_ALL env var
SZEDER Gábor (15):
tree-walk.c: don't match submodule entries for 'submod/anything'
commit-graph: fix parsing the Chunk Lookup table
commit-graph-format.txt: all multi-byte numbers are in network byte order
commit-slab: add a function to deep free entries on the slab
diff.h: drop diff_tree_oid() & friends' return value
commit-graph: clean up #includes
commit-graph: simplify parse_commit_graph() #1
commit-graph: simplify parse_commit_graph() #2
commit-graph: simplify write_commit_graph_file() #1
commit-graph: simplify write_commit_graph_file() #2
commit-graph: unify the signatures of all write_graph_chunk_*() functions
commit-graph: simplify chunk writes into loop
commit-graph: check chunk sizes after writing
commit-graph: check all leading directories in changed path Bloom filters
ci: use absolute PYTHON_PATH in the Linux jobs
Samanta Navarro (1):
fast-import: fix typo in documentation
Serg Tereshchenko (2):
git-gui: fix mixed tabs and spaces; prefer tabs
git-gui: improve dark mode support
Sergey Organov (9):
revision: fix die() message for "--unpacked="
revision: change "--diff-merges" option to require parameter
doc/git-log: describe --diff-merges=off
t/t4013: add test for --diff-merges=off
pretty-options.txt: fix --no-abbrev-commit description
revision: add separate field for "-m" of "diff-index -m"
log_tree_diff: get rid of code duplication for first_parent_only
log_tree_diff: get rid of extra check for NULL
diff: get rid of redundant 'dense' argument
Shourya Shukla (11):
submodule: remove extra line feeds between callback struct and macro
submodule: rename helper functions to avoid ambiguity
t7421: introduce a test script for verifying 'summary' output
t7401: modernize style
t7401: use 'short' instead of 'verify' and cut in rev-parse calls
t7401: change syntax of test_i18ncmp calls for clarity
t7401: change indentation for enhanced readability
t7401: add a NEEDSWORK
submodule: eliminate unused parameters from print_submodule_summary()
submodule: fix style in function definition
t7421: eliminate 'grep' check in t7421.4 for mingw compatibility
Sibi Siddharthan (8):
Introduce CMake support for configuring Git
cmake: generate the shell/perl/python scripts and templates, translations
cmake: installation support for git
cmake: support for testing git with ctest
cmake: support for testing git when building out of the source tree
cmake: support for building git on windows with mingw
cmake: support for building git on windows with msvc and clang.
ci: modification of main.yml to use cmake for vs-build job
Simon Legner (1):
remote-mediawiki: fix duplicate revisions being imported
Stefan Dotterweich (1):
gitk: add diff lines background colors
Stefan Haller (1):
git-gui: blame: prevent tool tips from sticking around after Command-Tab
Steve Kemp (1):
comment: fix spelling mistakes inside comments
Taylor Blau (18):
revision: empty pathspecs should not use Bloom filters
list_objects_filter_options: introduce 'list_object_filter_config_name'
upload-pack.c: allow banning certain object filter(s)
upload-pack.c: introduce 'uploadpackfilter.tree.maxDepth'
builtin/repack.c: invalidate MIDX only when necessary
midx: traverse the local MIDX first
commit-graph: introduce 'get_bloom_filter_settings()'
t4216: use an '&&'-chain
commit-graph: pass a 'struct repository *' in more places
t/helper/test-read-graph.c: prepare repo settings
commit-graph: respect 'commitGraph.readChangedPaths'
commit-graph.c: store maximum changed paths
bloom: split 'get_bloom_filter()' in two
bloom: use provided 'struct bloom_filter_settings'
bloom: encode out-of-bounds filters as non-empty
commit-graph: rename 'split_commit_graph_opts'
builtin/commit-graph.c: introduce '--max-new-filters=<n>'
commit-graph: introduce 'commitGraph.maxNewFilters'
Theodore Dubois (1):
submodule update: silence underlying merge/rebase with "--quiet"
Thomas Guyot-Sionnest (1):
diff: fix modified lines stats with --stat and --numstat
Trần Ngọc Quân (1):
l10n: vi(5013t): Updated translation for v2.29.0 rd2
Yi-Jyun Pan (1):
l10n: zh_TW.po: v2.29.0 round 2 (2 untranslated)
brian m. carlson (48):
remote-curl: make --force-with-lease work with non-ASCII ref names
t: make test-bloom initialize repository
t1001: use $ZERO_OID
t3305: make hash agnostic
t6100: make hash size independent
t6101: make hash size independent
t6301: make hash size independent
t6500: specify test values for SHA-256
t6501: avoid hard-coded objects
t7003: compute appropriate length constant
t7063: make hash size independent
t7201: abstract away SHA-1-specific constants
t7102: abstract away SHA-1-specific constants
t7400: make hash size independent
t7405: make hash size independent
t7506: avoid checking for SHA-1-specific constants
t7508: use $ZERO_OID instead of hard-coded constant
t8002: make hash size independent
t8003: make hash size independent
t8011: make hash size independent
t9300: abstract away SHA-1-specific constants
t9300: use $ZERO_OID instead of hard-coded object ID
t9301: make hash size independent
t9350: make hash size independent
t9500: ensure that algorithm info is preserved in config
t9700: make hash size independent
t5308: make test work with SHA-256
t0410: mark test with SHA1 prerequisite
http-fetch: set up git directory before parsing pack hashes
builtin/verify-pack: implement an --object-format option
bundle: add new version for use with SHA-256
setup: add support for reading extensions.objectformat
repository: enable SHA-256 support by default
t: add test_oid option to select hash algorithm
t: allow testing different hash algorithms via environment
t: make SHA1 prerequisite depend on default hash
ci: run tests with SHA-256
docs: add documentation for extensions.objectFormat
t: remove test_oid_init in tests
git-cvsexportcommit: support Perl before 5.10.1
docs: document SHA-256 pack and indices
docs: fix step in transition plan
t4013: improve diff-post-processor logic
po: add missing letter for French message
docs: explain why squash merges are broken with long-running branches
docs: explain why reverts are not always applied on merge
docs: explain how to deal with files that are always modified
builtin/clone: avoid failure with GIT_DEFAULT_HASH
pudinha (2):
mergetool--lib: improve support for vimdiff-style tool variants
mergetools: add support for nvimdiff (neovim) family
Ákos Uzonyi (2):
completion: use "prev" variable instead of introducing "prevword"
completion: complete refs after 'git restore -s'
Ævar Arnfjörð Bjarmason (17):
remote-mediawiki doc: correct link to GitHub project
remote-mediawiki doc: link to MediaWiki's current version
remote-mediawiki doc: don't hardcode Debian PHP versions
remote-mediawiki tests: use the login/password variables
remote-mediawiki tests: use a 10 character password
remote-mediawiki tests: use test_cmp in tests
remote-mediawiki tests: change `[]` to `test`
remote-mediawiki tests: use "$dir/" instead of "$dir."
remote-mediawiki tests: use a more idiomatic dispatch table
remote-mediawiki tests: replace deprecated Perl construct
remote-mediawiki tests: use inline PerlIO for readability
remote-mediawiki tests: use CLI installer
remote-mediawiki tests: annotate failing tests
remote-mediawiki: provide a list form of run_git()
remote-mediawiki: convert to quoted run_git() invocation
remote-mediawiki: annotate unquoted uses of run_git()
remote-mediawiki: use "sh" to eliminate unquoted commands
Đoàn Trần Công Danh (2):
diff: index-line: respect --abbrev in object's name
t5534: split stdout and stderr redirection
Роман Донченко (2):
gitk: don't highlight files after submodules as submodules
gitk: fix the context menu not appearing in the presence of submodule diffs
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.29.0-rc1
@ 2020-10-09 15:58 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-10-09 15:58 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.29.0-rc1 is now available for testing
at the usual places. It is comprised of 605 non-merge commits
since v2.28.0, contributed by 77 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.29.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.28.0 are as follows.
Welcome to the Git development community!
Aaron Lipman, Adrian Moennich, Ákos Uzonyi, Antti Keränen,
Christian Schlack, Conor Davis, Eric Huber, Evan Gates, Han
Xin, Hugo Locurcio, Kyohei Kadota, Lin Sun, Nikita Leonov,
Noam Yorav-Raphael, pudinha, Raymond E. Pasco, Ryan Zoeller,
Samanta Navarro, Sibi Siddharthan, Simon Legner, Steve Kemp,
and Theodore Dubois.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alex Henrie, Alex
Riesen, Andrei Rybak, Beat Bolli, Ben Wijen, brian m. carlson,
Christian Couder, Chris Torek, Danny Lin, Denton Liu, Derrick
Stolee, Đoàn Trần Công Danh, Drew DeVault, Edmundo Carmona
Antoranz, Elijah Newren, Emily Shaffer, Eric Sunshine, Han-Wen
Nienhuys, Hariom Verma, Jacob Keller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jiang Xin, Johannes Berg, Johannes
Schindelin, Johannes Sixt, Jonathan Tan, Junio C Hamano,
Kazuhiro Kato, Luke Diamand, Martin Ågren, Matheus Tavares,
Matthew Rogers, Michael Forney, Michal Privoznik, Miriam Rubio,
Orgad Shaneh, Patrick Steinhardt, Paul Mackerras, Philippe
Blain, Phillip Wood, Pranit Bauva, Prathamesh Chavan, René
Scharfe, Rohit Ashiwal, Sergey Organov, Shourya Shukla, Stefan
Dotterweich, SZEDER Gábor, Taylor Blau, Thomas Guyot-Sionnest,
and Роман Донченко.
----------------------------------------------------------------
Git 2.29 Release Notes (draft)
==============================
Updates since v2.28
-------------------
UI, Workflows & Features
* "git help log" has been enhanced by sharing more material from the
documentation for the underlying "git rev-list" command.
* "git for-each-ref --format=<>" learned %(contents:size).
* "git merge" learned to selectively omit " into <branch>" at the end
of the title of default merge message with merge.suppressDest
configuration.
* The component to respond to "git fetch" request is made more
configurable to selectively allow or reject object filtering
specification used for partial cloning.
* Stop when "sendmail.*" configuration variables are defined, which
could be a mistaken attempt to define "sendemail.*" variables.
* The existing backends for "git mergetool" based on variants of vim
have been refactored and then support for "nvim" has been added.
* "git bisect" learns the "--first-parent" option to find the first
breakage along the first-parent chain.
* "git log --first-parent -p" showed patches only for single-parent
commits on the first-parent chain; the "--first-parent" option has
been made to imply "-m". Use "--no-diff-merges" to restore the
previous behaviour to omit patches for merge commits.
* The commit labels used to explain each side of conflicted hunks
placed by the sequencer machinery have been made more readable by
humans.
* The "--batch-size" option of "git multi-pack-index repack" command
is now used to specify that very small packfiles are collected into
one until the total size roughly exceeds it.
* The recent addition of SHA-256 support is marked as experimental in
the documentation.
* "git fetch" learned --no-write-fetch-head option to avoid writing
the FETCH_HEAD file.
* Command line completion (in contrib/) usually omits redundant,
deprecated and/or dangerous options from its output; it learned to
optionally include all of them.
* The output from the "diff" family of the commands had abbreviated
object names of blobs involved in the patch, but its length was not
affected by the --abbrev option. Now it is.
* "git worktree" gained a "repair" subcommand to help users recover
after moving the worktrees or repository manually without telling
Git. Also, "git init --separate-git-dir" no longer corrupts
administrative data related to linked worktrees.
* The "--format=" option to the "for-each-ref" command and friends
learned a few more tricks, e.g. the ":short" suffix that applies to
"objectname" now also can be used for "parent", "tree", etc.
* "git worktree add" learns that the "-d" is a synonym to "--detach"
option to create a new worktree without being on a branch.
* "format-patch --range-diff=<prev> <origin>..HEAD" has been taught
not to ignore <origin> when <prev> is a single version.
* "add -p" now allows editing paths that were only added in intent.
* The 'meld' backend of the "git mergetool" learned to give the
underlying 'meld' the '--auto-merge' option, which would help
reduce the amount of text that requires manual merging.
* "git for-each-ref" and friends that list refs used to allow only
one --merged or --no-merged to filter them; they learned to take
combination of both kind of filtering.
* "git maintenance", a "git gc"'s big brother, has been introduced to
take care of more repository maintenance tasks, not limited to the
object database cleaning.
* "git receive-pack" that accepts requests by "git push" learned to
outsource most of the ref updates to the new "proc-receive" hook.
* "git push" that wants to be atomic and wants to send push
certificate learned not to prepare and sign the push certificate
when it fails the local check (hence due to atomicity it is known
that no certificate is needed).
* "git commit-graph write" learned to limit the number of bloom
filters that are computed from scratch with the --max-new-filters
option.
* The transport protocol v2 has become the default again.
* The installation procedure learned to optionally omit "git-foo"
executable files for each 'foo' built-in subcommand, which are only
required by old timers that still rely on the age old promise that
prepending "git --exec-path" output to PATH early in their script
will keep the "git-foo" calls they wrote working.
* The command line completion (in contrib/) learned that "git restore
-s <TAB>" is often followed by a refname.
* "git shortlog" has been taught to group commits by the contents of
the trailer lines, like "Reviewed-by:", "Coauthored-by:", etc.
* "git archive" learns the "--add-file" option to include untracked
files into a snapshot from a tree-ish.
* "git fetch" and "git push" support negative refspecs.
* "git format-patch" learns to take "whenAble" as a possible value
for the format.useAutoBase configuration variable to become no-op
when the automatically computed base does not make sense.
* Credential helpers are now allowed to terminate lines with CRLF
line ending, as well as LF line ending.
Performance, Internal Implementation, Development Support etc.
* The changed-path Bloom filter is improved using ideas from an
independent implementation.
* Updates to the changed-paths bloom filter.
* The test framework has been updated so that most tests will run
with predictable (artificial) timestamps.
* Preliminary clean-up of the refs API in preparation for adding a
new refs backend "reftable".
* Dev support to limit the use of test_must_fail to only git commands.
* While packing many objects in a repository with a promissor remote,
lazily fetching missing objects from the promissor remote one by
one may be inefficient---the code now attempts to fetch all the
missing objects in batch (obviously this won't work for a lazy
clone that lazily fetches tree objects as you cannot even enumerate
what blobs are missing until you learn which trees are missing).
* The pretend-object mechanism checks if the given object already
exists in the object store before deciding to keep the data
in-core, but the check would have triggered lazy fetching of such
an object from a promissor remote.
* The argv_array API is useful for not just managing argv but any
"vector" (NULL-terminated array) of strings, and has seen adoption
to a certain degree. It has been renamed to "strvec" to reduce the
barrier to adoption.
* The final leg of SHA-256 transition plus doc updates. Note that
there is no interoperability between SHA-1 and SHA-256
repositories yet.
* CMake support to build with MSVC for Windows bypassing the Makefile.
* A new helper function has_object() has been introduced to make it
easier to mark object existence checks that do and don't want to
trigger lazy fetches, and a few such checks are converted using it.
* A no-op replacement function implemented as a C preprocessor macro
does not perform as good a job as one implemented as a "static
inline" function in catching errors in parameters; replace the
former with the latter in <git-compat-util.h> header.
* Test framework update.
(merge d572f52a64 es/test-cmp-typocatcher later to maint).
* Updates to "git merge" tests, in preparation for a new merge
strategy backend.
* midx and commit-graph files now use the byte defined in their file
format specification for identifying the hash function used for
object names.
* The FETCH_HEAD is now always read from the filesystem regardless of
the ref backend in use, as its format is much richer than the
normal refs, and written directly by "git fetch" as a plain file..
* An unused binary has been discarded, and and a bunch of commands
have been turned into into built-in.
* A handful of places in in-tree code still relied on being able to
execute the git subcommands, especially built-ins, in "git-foo"
form, which have been corrected.
* When a packfile is removed by "git repack", multi-pack-index gets
cleared; the code was taught to do so less aggressively by first
checking if the midx actually refers to a pack that no longer
exists.
* Internal API clean-up to handle two options "diff-index" and "log"
have, which happen to share the same short form, more sensibly.
* The "add -i/-p" machinery has been written in C but it is not used
by default yet. It is made default to those who are participating
in feature.experimental experiment.
* Allow maintainers to tweak $(TAR) invocations done while making
distribution tarballs.
* "git index-pack" learned to resolve deltified objects with greater
parallelism.
* "diff-highlight" (in contrib/) had a logic to flush its output upon
seeing a blank line but the way it detected a blank line was broken.
* The logic to skip testing on the tagged commit and the tag itself
was not quite consistent which led to failure of Windows test
tasks. It has been revamped to consistently skip revisions that
have already been tested, based on the tree object of the revision.
Fixes since v2.28
-----------------
* The "mediawiki" remote backend which lives in contrib/mw-to-git/
and is not built with git by default, had an RCE bug allowing a
malicious MediaWiki server operator to inject arbitrary commands
for execution by a cloning client. This has been fixed.
The bug was discovered and reported by Joern Schneeweisz of GitLab
to the git-security mailing list. Its practical impact due to the
obscurity of git-remote-mediawiki was deemed small enough to forgo
a dedicated security release.
* "git clone --separate-git-dir=$elsewhere" used to stomp on the
contents of the existing directory $elsewhere, which has been
taught to fail when $elsewhere is not an empty directory.
(merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).
* With the base fix to 2.27 regresion, any new extensions in a v0
repository would still be silently honored, which is not quite
right. Instead, complain and die loudly.
(merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint).
* Fetching from a lazily cloned repository resulted at the server
side in attempts to lazy fetch objects that the client side has,
many of which will not be available from the third-party anyway.
(merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint).
* Fix to an ancient bug caused by an over-eager attempt for
optimization.
(merge a98f7fb366 rs/add-index-entry-optim-fix later to maint).
* Pushing a ref whose name contains non-ASCII character with the
"--force-with-lease" option did not work over smart HTTP protocol,
which has been corrected.
(merge cd85b447bf bc/push-cas-cquoted-refname later to maint).
* "git mv src dst", when src is an unmerged path, errored out
correctly but with an incorrect error message to claim that src is
not tracked, which has been clarified.
(merge 9b906af657 ct/mv-unmerged-path-error later to maint).
* Fix to a regression introduced during 2.27 cycle.
(merge cada7308ad en/fill-directory-exponential later to maint).
* Command line completion (in contrib/) update.
(merge 688b87c81b mp/complete-show-color-moved later to maint).
* All "mergy" operations that internally use the merge-recursive
machinery should honor the merge.renormalize configuration, but
many of them didn't.
* Doc cleanup around "worktree".
(merge dc9c144be5 es/worktree-doc-cleanups later to maint).
* The "git blame --first-parent" option was not documented, but now
it is.
(merge 11bc12ae1e rp/blame-first-parent-doc later to maint).
* The logic to find the ref transaction hook script attempted to
cache the path to the found hook without realizing that it needed
to keep a copied value, as the API it used returned a transitory
buffer space. This has been corrected.
(merge 09b2aa30c9 ps/ref-transaction-hook later to maint).
* Recent versions of "git diff-files" shows a diff between the index
and the working tree for "intent-to-add" paths as a "new file"
patch; "git apply --cached" should be able to take "git diff-files"
and should act as an equivalent to "git add" for the path, but the
command failed to do so for such a path.
(merge 4c025c667e rp/apply-cached-with-i-t-a later to maint).
* "git diff [<tree-ish>] $path" for a $path that is marked with i-t-a
bit was not showing the mode bits from the working tree.
(merge cb0dd22b82 rp/ita-diff-modefix later to maint).
* Ring buffer with size 4 used for bin-hex translation resulted in a
wrong object name in the sequencer's todo output, which has been
corrected.
(merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint).
* When given more than one target line ranges, "git blame -La,b
-Lc,d" was over-eager to coalesce groups of original lines and
showed incorrect results, which has been corrected.
(merge c2ebaa27d6 jk/blame-coalesce-fix later to maint).
* The regexp to identify the function boundary for FORTRAN programs
has been updated.
(merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint).
* A few end-user facing messages have been updated to be
hash-algorithm agnostic.
(merge 4279000d3e jc/object-names-are-not-sha-1 later to maint).
* "unlink" emulation on MinGW has been optimized.
(merge 680e0b4524 jh/mingw-unlink later to maint).
* The purpose of "git init --separate-git-dir" is to initialize a
new project with the repository separate from the working tree,
or, in the case of an existing project, to move the repository
(the .git/ directory) out of the working tree. It does not make
sense to use --separate-git-dir with a bare repository for which
there is no working tree, so disallow its use with bare
repositories.
(merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint).
* "ls-files -o" mishandled the top-level directory of another git
working tree that hangs in the current git working tree.
(merge ab282aa548 en/dir-nonbare-embedded later to maint).
* Fix some incorrect UNLEAK() annotations.
(merge 3e19816dc0 jk/unleak-fixes later to maint).
* Use more buffered I/O where we used to call many small write(2)s.
(merge a698d67b08 rs/more-buffered-io later to maint).
* The patch-id computation did not ignore the "incomplete last line"
marker like whitespaces.
(merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint).
* Updates into a lazy/partial clone with a submodule did not work
well with transfer.fsckobjects set.
* The parser for "git for-each-ref --format=..." was too loose when
parsing the "%(trailers...)" atom, and forgot that "trailers" and
"trailers:<modifiers>" are the only two allowed forms, which has
been corrected.
(merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint).
* Long ago, we decided to use 3 threads by default when running the
index-pack task in parallel, which has been adjusted a bit upwards.
(merge fbff95b67f jk/index-pack-w-more-threads later to maint).
* "git restore/checkout --no-overlay" with wildcarded pathspec
mistakenly removed matching paths in subdirectories, which has been
corrected.
(merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint).
* The description of --cached/--index options in "git apply --help"
has been updated.
(merge d064702be3 rp/apply-cached-doc later to maint).
* Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and
running "git log --ignore-missing $ZERO_OID" fell back to start
digging from HEAD; it has been corrected to become a no-op, like
"git log --tags=no-tag-matches-this-pattern" does.
(merge 04a0e98515 jk/rev-input-given-fix later to maint).
* Various callers of run_command API have been modernized.
(merge afbdba391e jc/run-command-use-embedded-args later to maint).
* List of options offered and accepted by "git add -i/-p" were
inconsistent, which have been corrected.
(merge ce910287e7 pw/add-p-allowed-options-fix later to maint).
* "git diff --stat -w" showed 0-line changes for paths whose changes
were only whitespaces, which was not intuitive. We now omit such
paths from the stat output.
(merge 1cf3d5db9b mr/diff-hide-stat-wo-textual-change later to maint).
* It was possible for xrealloc() to send a non-NULL pointer that has
been freed, which has been fixed.
(merge 6479ea4a8a jk/xrealloc-avoid-use-after-free later to maint).
* "git status" has trouble showing where it came from by interpreting
reflog entries that record certain events, e.g. "checkout @{u}", and
gives a hard/fatal error. Even though it inherently is impossible
to give a correct answer because the reflog entries lose some
information (e.g. "@{u}" does not record what branch the user was
on hence which branch 'the upstream' needs to be computed, and even
if the record were available, the relationship between branches may
have changed), at least hide the error and allow "status" to show its
output.
* "git status --short" quoted a path with SP in it when tracked, but
not those that are untracked, ignored or unmerged. They are all
shown quoted consistently.
* "git diff/show" on a change that involves a submodule used to read
the information on commits in the submodule from a wrong repository
and gave a wrong information when the commit-graph is involved.
(merge 85a1ec2c32 mf/submodule-summary-with-correct-repository later to maint).
* Unlike "git config --local", "git config --worktree" did not fail
early and cleanly when started outside a git repository.
(merge 378fe5fc3d mt/config-fail-nongit-early later to maint).
* There is a logic to estimate how many objects are in the
repository, which is meant to run once per process invocation, but
it ran every time the estimated value was requested.
(merge 67bb65de5d jk/dont-count-existing-objects-twice later to maint).
* "git remote set-head" that failed still said something that hints
the operation went through, which was misleading.
(merge 5a07c6c3c2 cs/don-t-pretend-a-failed-remote-set-head-succeeded later to maint).
* "git fetch --all --ipv4/--ipv6" forgot to pass the protocol options
to instances of the "git fetch" that talk to individual remotes,
which has been corrected.
(merge 4e735c1326 ar/fetch-ipversion-in-all later to maint).
* The "unshelve" subcommand of "git p4" incorrectly used commit^N
where it meant to say commit~N to name the Nth generation
ancestor, which has been corrected.
(merge 0acbf5997f ld/p4-unshelve-fix later to maint).
* "git clone" that clones from SHA-1 repository, while
GIT_DEFAULT_HASH set to use SHA-256 already, resulted in an
unusable repository that half-claims to be SHA-256 repository
with SHA-1 objects and refs. This has been corrected.
* Adjust sample hooks for hash algorithm other than SHA-1.
(merge d8d3d632f4 dl/zero-oid-in-hooks later to maint).
* "git range-diff" showed incorrect diffstat, which has been
corrected.
* Earlier we taught "git pull" to warn when the user does not say the
histories need to be merged, rebased or accepts only fast-
forwarding, but the warning triggered for those who have set the
pull.ff configuration variable.
(merge 54200cef86 ah/pull later to maint).
* Compilation fix around type punning.
(merge 176380fd11 jk/drop-unaligned-loads later to maint).
* "git blame --ignore-rev/--ignore-revs-file" failed to validate
their input are valid revision, and failed to take into account
that the user may want to give an annotated tag instead of a
commit, which has been corrected.
(merge 610e2b9240 jc/blame-ignore-fix later to maint).
* "git bisect start X Y", when X and Y are not valid committish
object names, should take X and Y as pathspec, but didn't.
(merge 73c6de06af cc/bisect-start-fix later to maint).
* The explanation of the "scissors line" has been clarified.
(merge 287416dba6 eg/mailinfo-doc-scissors later to maint).
* A race that leads to an access to a free'd data was corrected in
the codepath that reads pack files.
(merge bda959c476 mt/delta-base-cache-races later to maint).
* in_merge_bases_many(), a way to see if a commit is reachable from
any commit in a set of commits, was totally broken when the
commit-graph feature was in use, which has been corrected.
(merge 8791bf1841 ds/in-merge-bases-many-optim-bug later to maint).
* "git submodule update --quiet" did not squelch underlying "rebase"
and "pull" commands.
(merge 3ad0401e9e td/submodule-update-quiet later to maint).
* The lazy fetching done internally to make missing objects available
in a partial clone incorrectly made permanent damage to the partial
clone filter in the repository, which has been corrected.
* "log -c --find-object=X" did not work well to find a merge that
involves a change to an object X from only one parent.
(merge 957876f17d jk/diff-cc-oidfind-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 84544f2ea3 sk/typofixes later to maint).
(merge b17f411ab5 ar/help-guides-doc later to maint).
(merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint).
(merge 861c4ce141 en/typofixes later to maint).
(merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint).
(merge e2bfa50ac3 jb/doc-packfile-name later to maint).
(merge 918d8ff780 es/worktree-cleanup later to maint).
(merge dc156bc31f ma/t1450-quotefix later to maint).
(merge 56e743426b en/merge-recursive-comment-fixes later to maint).
(merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint).
(merge de20baf2c9 ny/notes-doc-sample-update later to maint).
(merge f649aaaf82 so/rev-parser-errormessage-fix later to maint).
(merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint).
(merge ac900fddb7 ma/stop-progress-null-fix later to maint).
(merge e767963ab6 rs/upload-pack-sigchain-fix later to maint).
(merge a831908599 rs/preserve-merges-unused-code-removal later to maint).
(merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint).
(merge 847b37271e pb/set-url-docfix later to maint).
(merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint).
(merge ce820cbd58 dl/subtree-docs later to maint).
(merge 55fe225dde jk/leakfix later to maint).
(merge ee22a29215 so/pretty-abbrev-doc later to maint).
(merge 3100fd5588 jc/post-checkout-doc later to maint).
(merge 17bae89476 pb/doc-external-diff-env later to maint).
(merge 27ed6ccc12 jk/worktree-check-clean-leakfix later to maint).
(merge 1302badd16 ea/blame-use-oideq later to maint).
(merge e6d5a11fed al/t3200-back-on-a-branch later to maint).
(merge 324efcf6b6 pw/add-p-leakfix later to maint).
(merge 1c6ffb546b jk/add-i-fixes later to maint).
(merge e40e936551 cd/commit-graph-doc later to maint).
(merge 0512eabd91 jc/sequencer-stopped-sha-simplify later to maint).
(merge d01141de5a so/combine-diff-simplify later to maint).
(merge 3be01e5ab1 sn/fast-import-doc later to maint).
----------------------------------------------------------------
Changes since v2.28.0 are as follows:
Aaron Lipman (12):
t6030: modernize "git bisect run" tests
rev-list: allow bisect and first-parent flags
cmd_bisect__helper: defer parsing no-checkout flag
bisect: introduce first-parent flag
bisect: combine args passed to find_bisection()
bisect: add first-parent option to documentation
t3200: clean side effect of git checkout --orphan
t3201: test multiple branch filter combinations
Doc: cover multiple contains/no-contains filters
ref-filter: allow merged and no-merged filters
ref-filter: make internal reachable-filter API more precise
Doc: prefer more specific file name
Adrian Moennich (1):
ci: fix inconsistent indentation
Alban Gruin (1):
t6300: fix issues related to %(contents:size)
Alex Henrie (1):
pull: don't warn if pull.ff has been set
Alex Riesen (1):
fetch: pass --ipv4 and --ipv6 options to sub-fetches
Andrei Rybak (1):
git-help.txt: fix mentions of option --guides
Antti Keränen (1):
rebase -i: fix possibly wrong onto hash in todo
Beat Bolli (1):
gitk: rename "commit summary" to "commit reference"
Ben Wijen (1):
git clone: don't clone into non-empty directory
Chris Torek (1):
git-mv: improve error message for conflicted file
Christian Couder (4):
Documentation: clarify %(contents:XXXX) doc
t6300: test refs pointing to tree and blob
ref-filter: add support for %(contents:size)
bisect: don't use invalid oid as rev when starting
Christian Schlack (1):
remote: don't show success message when set-head fails
Conor Davis (1):
commit-graph-format.txt: fix no-parent value
Danny Lin (2):
contrib/subtree: fix "unsure" for --message in the document
contrib/subtree: document 'push' does not take '--squash'
Denton Liu (13):
t3701: stop using `env` in force_color()
t5324: reorder `run_with_limited_open_files test_might_fail`
t7107: don't use test_must_fail()
t9834: remove use of `test_might_fail p4`
t9400: don't use test_must_fail with cvs
test-lib-functions: restrict test_must_fail usage
contrib/completion: complete options that take refs for format-patch
hooks--pre-push.sample: modernize script
hooks--pre-push.sample: use hash-agnostic zero OID
hooks--update.sample: use hash-agnostic zero OID
gitk: replace tabs with spaces
compat/mingw.h: drop extern from function declaration
Makefile: ASCII-sort += lists
Derrick Stolee (22):
commit-graph: place bloom_settings in context
commit-graph: change test to die on parse, not load
bloom: fix logic in get_bloom_filter()
commit-graph: persist existence of changed-paths
revision.c: fix whitespace
multi-pack-index: repack batches below --batch-size
t/README: document GIT_TEST_DEFAULT_HASH
commit-graph: use the "hash version" byte
multi-pack-index: use hash version byte
bloom/diff: properly short-circuit on max_changes
maintenance: create basic maintenance runner
maintenance: add --quiet option
maintenance: replace run_auto_gc()
maintenance: initialize task array
maintenance: add commit-graph task
maintenance: add --task option
maintenance: take a lock on the objects directory
maintenance: create maintenance.<task>.enabled config
maintenance: use pointers to check --auto
maintenance: add auto condition for commit-graph task
maintenance: add trace2 regions for task execution
commit-reach: fix in_merge_bases_many bug
Drew DeVault (1):
git-send-email: die if sendmail.* config is set
Edmundo Carmona Antoranz (1):
blame.c: replace instance of !oidcmp for oideq
Elijah Newren (26):
Remove doubled words in various comments
hashmap: fix typo in usage docs
merge-recursive: fix unclear and outright wrong comments
t6038: make tests fail for the right reason
t6038: remove problematic test
merge: make merge.renormalize work for all uses of merge machinery
checkout: support renormalization with checkout -m <paths>
Collect merge-related tests to t64xx
t6418: tighten delete/normalize conflict testcase
t6422: fix bad check against missing file
t6416, t6422: fix incorrect untracked file count
t6423: fix test setup for a couple tests
t6422: fix multiple errors with the mod6 test expectations
t6416, t6423: clarify some comments and fix some typos
t6423: add an explanation about why one of the tests does not pass
t6422, t6426: be more flexible for add/add conflicts involving renames
t642[23]: be more flexible for add/add conflicts involving pair renames
t6425: be more flexible with rename/delete conflict messages
t3000: fix some test description typos
dir: avoid prematurely marking nonbare repositories as matches
sequencer: avoid garbled merge machinery messages due to commit labels
mem-pool: add convenience functions for strdup and strndup
mem-pool: use more standard initialization and finalization
mem-pool: use consistent pool variable name
dir: make clear_directory() free all relevant memory
dir: fix problematic API to avoid memory leaks
Emily Shaffer (1):
Revert "contrib: subtree: adjust test to change in fmt-merge-msg"
Eric Huber (1):
gitk: Preserve window dimensions on exit when not using ttk themes
Eric Sunshine (22):
worktree: drop pointless strbuf_release()
worktree: drop unused code from get_linked_worktree()
worktree: drop bogus and unnecessary path munging
worktree: retire special-case normalization of main worktree path
git-worktree.txt: employ fixed-width typeface consistently
git-worktree.txt: consistently use term "working tree"
git-worktree.txt: fix minor grammatical issues
git-worktree.txt: make start of new sentence more obvious
git-worktree.txt: link to man pages when citing other Git commands
test_cmp: diagnose incorrect arguments
init: disallow --separate-git-dir with bare repository
worktree: add skeleton "repair" command
worktree: teach "repair" to fix worktree back-links to main worktree
worktree: teach "repair" to fix outgoing links to worktrees
init: teach --separate-git-dir to repair linked worktrees
init: make --separate-git-dir work from within linked worktree
git-checkout.txt: document -d short option for --detach
worktree: teach `add` to recognize -d as shorthand for --detach
git-worktree.txt: discuss branch-based vs. throwaway worktrees
diff: move show_interdiff() from its own file to diff-lib
diff-lib: tighten show_interdiff()'s interface
format-patch: use 'origin' as start of current-series-range when known
Evan Gates (1):
Doc: show example scissors line
Han Xin (1):
send-pack: run GPG after atomic push checking
Han-Wen Nienhuys (17):
lib-t6000.sh: write tag using git-update-ref
t3432: use git-reflog to inspect the reflog for HEAD
bisect: treat BISECT_HEAD as a pseudo ref
t1400: use git rev-parse for testing PSEUDOREF existence
Modify pseudo refs through ref backend storage
Make HEAD a PSEUDOREF rather than PER_WORKTREE.
refs: move the logic to add \t to reflog to the files backend
refs: split off reading loose ref data in separate function
refs: fix comment about submodule ref_stores
refs: move gitdir into base ref_store
refs: read FETCH_HEAD and MERGE_HEAD generically
refs: make refs_ref_exists public
sequencer: treat CHERRY_PICK_HEAD as a pseudo ref
builtin/commit: suggest update-ref for pseudoref removal
sequencer: treat REVERT_HEAD as a pseudo ref
refs: move REF_LOG_ONLY to refs-internal.h
refs: add GIT_TRACE_REFS debugging mechanism
Hariom Verma (10):
t6300: unify %(trailers) and %(contents:trailers) tests
ref-filter: 'contents:trailers' show error if `:` is missing
ref-filter: support different email formats
ref-filter: refactor `grab_objectname()`
ref-filter: modify error messages in `grab_objectname()`
ref-filter: rename `objectname` related functions and fields
ref-filter: add `short` modifier to 'tree' atom
ref-filter: add `short` modifier to 'parent' atom
pretty: refactor `format_sanitized_subject()`
ref-filter: add `sanitize` option for 'subject' atom
Hugo Locurcio (1):
bisect: swap command-line options in documentation
Jacob Keller (4):
refspec: fix documentation referring to refspec_item
refspec: make sure stack refspec_item variables are zeroed
refspec: add support for negative refspecs
format-patch: teach format.useAutoBase "whenAble" option
Jean-Noël Avila (4):
git-bisect-lk2009: make continuation of list indented
doc: use linkgit macro where needed.
doc: git-remote fix ups
doc: fix the bnf like style of some commands
Jeff Hostetler (1):
mingw: improve performance of mingw_unlink()
Jeff King (82):
t6000: use test_tick consistently
t9700: loosen ident timezone regex
t5539: make timestamp requirements more explicit
t9100: explicitly unset GIT_COMMITTER_DATE
test-lib: set deterministic default author/committer date
t9100: stop depending on commit timestamps
verify_repository_format(): complain about new extensions in v0 repo
argv-array: use size_t for count and alloc
argv-array: rename to strvec
strvec: rename files from argv-array to strvec
quote: rename sq_dequote_to_argv_array to mention strvec
strvec: convert builtin/ callers away from argv_array name
strvec: convert more callers away from argv_array name
strvec: convert remaining callers away from argv_array name
strvec: fix indentation in renamed calls
strvec: update documention to avoid argv_array
strvec: drop argv_array compatibility layer
log: drop "--cc implies -m" logic
revision: add "--no-diff-merges" option to counteract "-m"
log: enable "-m" automatically with "--first-parent"
doc/git-log: move "Diff Formatting" from rev-list-options
doc/git-log: drop "-r" diff option
doc/git-log: move "-t" into diff-options list
doc/git-log: clarify handling of merge commit diffs
strvec: rename struct fields
config: work around gcc-10 -Wstringop-overflow warning
revision: avoid out-of-bounds read/write on empty pathspec
revision: avoid leak when preparing bloom filter for "/"
t5616: use test_i18ngrep for upload-pack errors
sideband: mark "remote error:" prefix for translation
t1416: avoid hard-coded sha1 ids
t8003: check output of coalesced blame
t8003: factor setup out of coalesce test
blame: only coalesce lines that are adjacent in result
Makefile: drop builtins from MSVC pdb list
make credential helpers builtins
make git-bugreport a builtin
make git-fast-import a builtin
drop vcs-svn experiment
stop calling UNLEAK() before die()
ls-remote: simplify UNLEAK() usage
clear_pattern_list(): clear embedded hashmaps
submodule--helper: use strbuf_release() to free strbufs
checkout: fix leak of non-existent branch names
config: fix leaks from git_config_get_string_const()
config: drop git_config_get_string_const()
config: fix leak in git_config_get_expiry_in_days()
submodule--helper: fix leak of core.worktree value
p5302: disable thread-count parameter tests by default
p5302: count up to online-cpus for thread tests
index-pack: adjust default threading cap
revision: set rev_input_given in handle_revision_arg()
worktree: fix leak in check_clean_worktree()
xrealloc: do not reuse pointer freed by zero-length realloc()
add-patch: fix inverted return code of repo_read_index()
add--interactive.perl: specify --no-color explicitly
packfile: actually set approximate_object_count_valid
diff-highlight: correctly match blank lines for flush
bswap.h: drop unaligned loads
Revert "fast-export: use local array to store anonymized oid"
shortlog: change "author" variables to "ident"
protocol: re-enable v2 protocol by default
shortlog: add grouping option
trailer: add interface for iterating over commit trailers
shortlog: match commit trailers with --group
shortlog: de-duplicate trailer values
shortlog: rename parse_stdin_ident()
shortlog: parse trailer idents
shortlog: allow multiple groups to be specified
convert: drop unused crlf_action from check_global_conv_flags_eol()
drop unused argc parameters
env--helper: write to opt->value in parseopt helper
assert PARSE_OPT_NONEG in parse-options callbacks
push: drop unused repo argument to do_push()
sequencer: drop repository argument from run_git_commit()
sparse-checkout: fill in some options boilerplate
test-advise: check argument count with argc instead of argv
sequencer: handle ignore_footer when parsing trailers
dir.c: drop unused "untracked" from treat_path_fast()
combine-diff: handle --find-object in multitree code path
index-pack: restore "resolving deltas" progress meter
index-pack: drop type_cas mutex
Jiang Xin (10):
transport: not report a non-head push as a branch
t5411: add basic test cases for proc-receive hook
receive-pack: add new proc-receive hook
receive-pack: feed report options to post-receive
New capability "report-status-v2" for git-push
doc: add document for capability report-status-v2
receive-pack: new config receive.procReceiveRefs
t5411: test updates of remote-tracking branches
transport: parse report options for tracking refs
doc: add documentation for the proc-receive hook
Johannes Berg (2):
pack-write/docs: update regarding pack naming
docs: commit-graph: fix some whitespace in the diagram
Johannes Schindelin (26):
t3404: prepare 'short SHA-1 collision' tests for SHA-256
ci: fix indentation of the `ci-config` job
ci: avoid ugly "failure" in the `ci-config` job
t/test-terminal: avoid non-inclusive language
fast-export: avoid using unnecessary language in a code comment
t3200: avoid variations of the `master` branch name
msvc: copy the correct `.pdb` files in the Makefile target `install`
Optionally skip linking/copying the built-ins
ci: stop linking built-ins to the dashed versions
cmake: ignore files generated by CMake as run in Visual Studio
tests: avoid variations of the `master` branch name
t9902: avoid using the branch name `master`
cmake: do find Git for Windows' shell interpreter
cmake: ensure that the `vcpkg` packages are found on Windows
cmake: fall back to using `vcpkg`'s `msgfmt.exe` on Windows
cmake: quote the path accurately when editing `test-lib.sh`
cmake (Windows): let the `.dll` files be found when running the tests
cmake (Windows): complain when encountering an unknown compiler
cmake (Windows): initialize vcpkg/build dependencies automatically
cmake (Windows): recommend using Visual Studio's built-in CMake support
GitHub workflow: automatically follow minor updates of setup-msbuild
help: do not expect built-in commands to be hardlinked
t1415: avoid using `main` as ref name
tests: avoid using the branch name `main`
ci: skip GitHub workflow runs for already-tested commits/trees
ci: do not skip tagged revisions in GitHub workflows
Johannes Sixt (1):
gitk: Un-hide selection in areas with non-default background color
Jonathan Tan (33):
upload-pack: do not lazy-fetch "have" objects
pack-objects: refactor to oid_object_info_extended
pack-objects: prefetch objects to be packed
sha1-file: make pretend_object_file() not prefetch
sha1-file: introduce no-lazy-fetch has_object()
apply: do not lazy fetch when applying binary
pack-objects: no fetch when allow-{any,promisor}
fsck: do not lazy fetch known non-promisor object
negotiator/noop: add noop fetch negotiator
fetch: allow refspecs specified through stdin
fetch: avoid reading submodule config until needed
fetch: only populate existing_refs if needed
fetch-pack: do not lazy-fetch during ref iteration
promisor-remote: lazy-fetch objects in subprocess
fetch-pack: remove no_dependents code
fetch-pack: in partial clone, pass --promisor
Documentation: deltaBaseCacheLimit is per-thread
index-pack: remove redundant parameter
index-pack: unify threaded and unthreaded code
index-pack: remove redundant child field
index-pack: calculate {ref,ofs}_{first,last} early
index-pack: make resolve_delta() assume base data
(various): document from_promisor parameter
fetch-pack: document only_packfile in get_pack()
fetch-pack: make packfile URIs work with transfer.fsckobjects
fetch: no FETCH_HEAD display if --no-write-fetch-head
sha1-name: replace unsigned int with option struct
refs: move dwim_ref() to header file
wt-status: tolerate dangling marks
index-pack: make quantum of work smaller
promisor-remote: remove unused variable
fetch: do not override partial clone filter
index-pack: make get_base_data() comment clearer
Junio C Hamano (50):
gitk: be prepared to be run in a bare repository
reflog: cleanse messages in the refs.c layer
Revert "fmt-merge-msg: stop treating `master` specially"
fmt-merge-msg: allow merge destination to be omitted again
First batch post 2.28
The second batch -- mostly minor typofixes
Third batch
Fourth batch
Documentation: don't hardcode command categories twice
compat-util: type-check parameters of no-op replacement functions
Fifth batch
Sixth batch
Seventh batch
messages: avoid SHA-1 in end-user facing messages
Eighth batch
fetch: optionally allow disabling FETCH_HEAD update
Ninth batch
ident: say whose identity is missing when giving user.name hint
Tenth batch
t3436: do not run git-merge-recursive in dashed form
transport-helper: do not run git-remote-ext etc. in dashed form
cvsexportcommit: do not run git programs in dashed form
run_command: teach API users to use embedded 'args' more
credential-cache: use child_process.args
Eleventh batch
doc: clarify how exit status of post-checkout hook is used
Twelfth batch
Thirteenth batch
add -i: use the built-in version when feature.experimental is set
Makefile: allow extra tweaking of distribution tarball
Fourteenth batch
quote_path: rename quote_path_relative() to quote_path()
quote_path: give flags parameter to quote_path()
quote_path: optionally allow quoting a path with SP in it
quote_path: code clarification
wt-status: consistently quote paths in "status --short" output
quote: rename misnamed sq_lookup[] to cq_lookup[]
quote: turn 'nodq' parameter into a set of flags
Fifteenth batch
Sixteenth batch
t8013: minimum preparatory clean-up
blame: validate and peel the object names on the ignore list
t1506: rev-parse A..B and A...B
sequencer: stop abbreviating stopped-sha file
Seventeenth batch
Eighteenth batch
hashmap_for_each_entry(): workaround MSVC's runtime check failure #3
Nineteenth batch
Git 2.29-rc0
Git 2.29-rc1
Kazuhiro Kato (1):
gitk: fix branch name encoding error
Kyohei Kadota (1):
Fit to Plan 9's ANSI/POSIX compatibility layer
Lin Sun (1):
mergetool: allow auto-merge for meld to follow the vim-diff behavior
Luke Diamand (2):
git-p4 unshelve: adding a commit breaks git-p4 unshelve
git-p4: use HEAD~$n to find parent commit for unshelve
Martin Ågren (19):
dir: check pathspecs before returning `path_excluded`
t1450: fix quoting of NUL byte when corrupting pack
t: don't spuriously close and reopen quotes
t4104: modernize and simplify quoting
progress: don't dereference before checking for NULL
http-protocol.txt: document SHA-256 "want"/"have" format
index-format.txt: document SHA-256 index format
protocol-capabilities.txt: clarify "allow-x-sha1-in-want" re SHA-256
shallow.txt: document SHA-256 shallow format
Documentation: mark `--object-format=sha256` as experimental
wt-status: replace sha1 mentions with oid
wt-status: print to s->fp, not stdout
wt-status: introduce wt_status_state_free_buffers()
worktree: inline `worktree_ref()` into its only caller
worktree: update renamed variable in comment
worktree: rename copy-pasted variable
worktree: use skip_prefix to parse target
config/fmt-merge-msg.txt: drop space in quote
config/uploadpack.txt: fix typo in `--filter=tree:<n>`
Matheus Tavares (4):
checkout_entry(): remove unreachable error() call
config: complain about --worktree outside of a git repo
packfile: fix race condition on unpack_entry()
packfile: fix memory leak in add_delta_base_cache()
Matthew Rogers (1):
diff: teach --stat to ignore uninteresting modifications
Michael Forney (2):
revision: use repository from rev_info when parsing commits
submodule: use submodule repository when preparing summary
Michal Privoznik (1):
completion: add show --color-moved[-ws]
Miriam Rubio (4):
bisect--helper: BUG() in cmd_*() on invalid subcommand
bisect--helper: use '-res' in 'cmd_bisect__helper' return
bisect--helper: introduce new `write_in_file()` function
bisect: call 'clear_commit_marks_all()' in 'bisect_next_all()'
Nikita Leonov (1):
credential: treat CR/LF as line endings in the credential protocol
Noam Yorav-Raphael (1):
docs: improve the example that illustrates git-notes path names
Orgad Shaneh (5):
vcbuild: fix library name for expat with make MSVC=1
vcbuild: fix batch file name in README
fetch: do not look for submodule changes in unchanged refs
submodule: suppress checking for file name and ref ambiguity for object ids
contrib/buildsystems: fix expat library name for generated vcxproj
Patrick Steinhardt (2):
refs: fix interleaving hook calls with reference-transaction hook
refs: remove lookup cache for reference-transaction hook
Paul Mackerras (1):
gitk: Resize panes correctly when reducing window size
Philippe Blain (19):
git-log.txt: add links to 'rev-list' and 'diff' docs
revisions.txt: describe 'rev1 rev2 ...' meaning for ranges
git-rev-list.txt: fix Asciidoc syntax
git-rev-list.txt: tweak wording in set operations
git-rev-list.txt: move description to separate file
git-log.txt: include rev-list-description.txt
command-list.txt: add missing 'gitcredentials' and 'gitremote-helpers'
help: drop usage of 'common' and 'useful' for guides
git.txt: add list of guides
fetch, pull doc: correct description of '--set-upstream'
userdiff: add tests for Fortran xfuncname regex
userdiff: improve Fortran xfuncname regex
git-imap-send.txt: don't duplicate 'Examples' sections
git-imap-send.txt: do verify SSL certificate for gmail.com
git-imap-send.txt: add note about localized Gmail folders
doc: mention GIT_SEQUENCE_EDITOR and 'sequence.editor' more
git.txt: correct stale 'GIT_EXTERNAL_DIFF' description
Makefile: add support for generating JSON compilation database
gitsubmodules doc: invoke 'ls-files' with '--recurse-submodules'
Phillip Wood (7):
add -p: use ALLOC_GROW_BY instead of ALLOW_GROW
add -p: fix checking of user input
am: stop exporting GIT_COMMITTER_DATE
rebase -i: support --committer-date-is-author-date
rebase -i: support --ignore-date
add -p: fix memory leak
add -p: fix editing of intent-to-add paths
Pranit Bauva (2):
bisect--helper: reimplement `bisect_autostart` shell function in C
bisect--helper: reimplement `bisect_next` and `bisect_auto_next` shell functions in C
Prathamesh Chavan (1):
submodule: port submodule subcommand 'summary' from shell to C
Raymond E. Pasco (6):
apply: allow "new file" patches on i-t-a entries
blame-options.txt: document --first-parent option
apply: make i-t-a entries never match worktree
t4140: test apply with i-t-a paths
diff-lib: use worktree mode in diffs from i-t-a entries
git-apply.txt: update descriptions of --cached, --index
René Scharfe (21):
read-cache: remove bogus shortcut
grep: avoid using oid_to_hex() with parse_object_or_die()
bisect: use oid_to_hex_r() instead of memcpy()+oid_to_hex()
upload-pack: remove superfluous sigchain_pop() call
rebase: remove unused function reschedule_last_action
connected: use buffered I/O to talk to rev-list
midx: use buffered I/O to talk to pack-objects
upload-pack: use buffered I/O to talk to rev-list
patch-id: ignore newline at end of file in diff_flush_patch_id()
checkout, restore: make pathspec recursive
read-cache: fix mem-pool allocation for multi-threaded index loading
push: release strbufs used for refspec formatting
refspec: add and use refspec_appendf()
fast-import: use write_pack_header()
midx: use hashwrite_u8() in write_midx_header()
pack-bitmap-write: use hashwrite_be32() in write_hash_cache()
pack-write: use hashwrite_be32() in write_idx_file()
archive: read short blobs in archive.c::write_archive_entry()
archive: add --add-file
Makefile: use git-archive --add-file
ref-filter: plug memory leak in reach_filter()
Rohit Ashiwal (2):
rebase -i: add --ignore-whitespace flag
rebase: add --reset-author-date
Ryan Zoeller (2):
parse-options: add --git-completion-helper-all
completion: add GIT_COMPLETION_SHOW_ALL env var
SZEDER Gábor (15):
tree-walk.c: don't match submodule entries for 'submod/anything'
commit-graph: fix parsing the Chunk Lookup table
commit-graph-format.txt: all multi-byte numbers are in network byte order
commit-slab: add a function to deep free entries on the slab
diff.h: drop diff_tree_oid() & friends' return value
commit-graph: clean up #includes
commit-graph: simplify parse_commit_graph() #1
commit-graph: simplify parse_commit_graph() #2
commit-graph: simplify write_commit_graph_file() #1
commit-graph: simplify write_commit_graph_file() #2
commit-graph: unify the signatures of all write_graph_chunk_*() functions
commit-graph: simplify chunk writes into loop
commit-graph: check chunk sizes after writing
commit-graph: check all leading directories in changed path Bloom filters
ci: use absolute PYTHON_PATH in the Linux jobs
Samanta Navarro (1):
fast-import: fix typo in documentation
Sergey Organov (9):
revision: fix die() message for "--unpacked="
revision: change "--diff-merges" option to require parameter
doc/git-log: describe --diff-merges=off
t/t4013: add test for --diff-merges=off
pretty-options.txt: fix --no-abbrev-commit description
revision: add separate field for "-m" of "diff-index -m"
log_tree_diff: get rid of code duplication for first_parent_only
log_tree_diff: get rid of extra check for NULL
diff: get rid of redundant 'dense' argument
Shourya Shukla (11):
submodule: remove extra line feeds between callback struct and macro
submodule: rename helper functions to avoid ambiguity
t7421: introduce a test script for verifying 'summary' output
t7401: modernize style
t7401: use 'short' instead of 'verify' and cut in rev-parse calls
t7401: change syntax of test_i18ncmp calls for clarity
t7401: change indentation for enhanced readability
t7401: add a NEEDSWORK
submodule: eliminate unused parameters from print_submodule_summary()
submodule: fix style in function definition
t7421: eliminate 'grep' check in t7421.4 for mingw compatibility
Sibi Siddharthan (8):
Introduce CMake support for configuring Git
cmake: generate the shell/perl/python scripts and templates, translations
cmake: installation support for git
cmake: support for testing git with ctest
cmake: support for testing git when building out of the source tree
cmake: support for building git on windows with mingw
cmake: support for building git on windows with msvc and clang.
ci: modification of main.yml to use cmake for vs-build job
Simon Legner (1):
remote-mediawiki: fix duplicate revisions being imported
Stefan Dotterweich (1):
gitk: add diff lines background colors
Steve Kemp (1):
comment: fix spelling mistakes inside comments
Taylor Blau (18):
revision: empty pathspecs should not use Bloom filters
list_objects_filter_options: introduce 'list_object_filter_config_name'
upload-pack.c: allow banning certain object filter(s)
upload-pack.c: introduce 'uploadpackfilter.tree.maxDepth'
builtin/repack.c: invalidate MIDX only when necessary
midx: traverse the local MIDX first
commit-graph: introduce 'get_bloom_filter_settings()'
t4216: use an '&&'-chain
commit-graph: pass a 'struct repository *' in more places
t/helper/test-read-graph.c: prepare repo settings
commit-graph: respect 'commitGraph.readChangedPaths'
commit-graph.c: store maximum changed paths
bloom: split 'get_bloom_filter()' in two
bloom: use provided 'struct bloom_filter_settings'
bloom: encode out-of-bounds filters as non-empty
commit-graph: rename 'split_commit_graph_opts'
builtin/commit-graph.c: introduce '--max-new-filters=<n>'
commit-graph: introduce 'commitGraph.maxNewFilters'
Theodore Dubois (1):
submodule update: silence underlying merge/rebase with "--quiet"
Thomas Guyot-Sionnest (1):
diff: fix modified lines stats with --stat and --numstat
brian m. carlson (48):
remote-curl: make --force-with-lease work with non-ASCII ref names
t: make test-bloom initialize repository
t1001: use $ZERO_OID
t3305: make hash agnostic
t6100: make hash size independent
t6101: make hash size independent
t6301: make hash size independent
t6500: specify test values for SHA-256
t6501: avoid hard-coded objects
t7003: compute appropriate length constant
t7063: make hash size independent
t7201: abstract away SHA-1-specific constants
t7102: abstract away SHA-1-specific constants
t7400: make hash size independent
t7405: make hash size independent
t7506: avoid checking for SHA-1-specific constants
t7508: use $ZERO_OID instead of hard-coded constant
t8002: make hash size independent
t8003: make hash size independent
t8011: make hash size independent
t9300: abstract away SHA-1-specific constants
t9300: use $ZERO_OID instead of hard-coded object ID
t9301: make hash size independent
t9350: make hash size independent
t9500: ensure that algorithm info is preserved in config
t9700: make hash size independent
t5308: make test work with SHA-256
t0410: mark test with SHA1 prerequisite
http-fetch: set up git directory before parsing pack hashes
builtin/verify-pack: implement an --object-format option
bundle: add new version for use with SHA-256
setup: add support for reading extensions.objectformat
repository: enable SHA-256 support by default
t: add test_oid option to select hash algorithm
t: allow testing different hash algorithms via environment
t: make SHA1 prerequisite depend on default hash
ci: run tests with SHA-256
docs: add documentation for extensions.objectFormat
t: remove test_oid_init in tests
git-cvsexportcommit: support Perl before 5.10.1
docs: document SHA-256 pack and indices
docs: fix step in transition plan
t4013: improve diff-post-processor logic
po: add missing letter for French message
docs: explain why squash merges are broken with long-running branches
docs: explain why reverts are not always applied on merge
docs: explain how to deal with files that are always modified
builtin/clone: avoid failure with GIT_DEFAULT_HASH
pudinha (2):
mergetool--lib: improve support for vimdiff-style tool variants
mergetools: add support for nvimdiff (neovim) family
Ákos Uzonyi (2):
completion: use "prev" variable instead of introducing "prevword"
completion: complete refs after 'git restore -s'
Ævar Arnfjörð Bjarmason (17):
remote-mediawiki doc: correct link to GitHub project
remote-mediawiki doc: link to MediaWiki's current version
remote-mediawiki doc: don't hardcode Debian PHP versions
remote-mediawiki tests: use the login/password variables
remote-mediawiki tests: use a 10 character password
remote-mediawiki tests: use test_cmp in tests
remote-mediawiki tests: change `[]` to `test`
remote-mediawiki tests: use "$dir/" instead of "$dir."
remote-mediawiki tests: use a more idiomatic dispatch table
remote-mediawiki tests: replace deprecated Perl construct
remote-mediawiki tests: use inline PerlIO for readability
remote-mediawiki tests: use CLI installer
remote-mediawiki tests: annotate failing tests
remote-mediawiki: provide a list form of run_git()
remote-mediawiki: convert to quoted run_git() invocation
remote-mediawiki: annotate unquoted uses of run_git()
remote-mediawiki: use "sh" to eliminate unquoted commands
Đoàn Trần Công Danh (2):
diff: index-line: respect --abbrev in object's name
t5534: split stdout and stderr redirection
Роман Донченко (2):
gitk: don't highlight files after submodules as submodules
gitk: fix the context menu not appearing in the presence of submodule diffs
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.29.0-rc0
@ 2020-10-05 22:41 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2020-10-05 22:41 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.29.0-rc0 is now available for
testing at the usual places. It is comprised of 588 non-merge
commits since v2.28.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.29.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.28.0 are as follows.
Welcome to the Git development community!
Aaron Lipman, Adrian Moennich, Ákos Uzonyi, Antti Keränen,
Christian Schlack, Conor Davis, Eric Huber, Evan Gates, Han
Xin, Hugo Locurcio, Kyohei Kadota, Lin Sun, Nikita Leonov,
Noam Yorav-Raphael, pudinha, Raymond E. Pasco, Ryan Zoeller,
Samanta Navarro, Sibi Siddharthan, Simon Legner, Steve Kemp,
and Theodore Dubois.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alex Henrie, Alex
Riesen, Andrei Rybak, Beat Bolli, Ben Wijen, brian m. carlson,
Christian Couder, Chris Torek, Danny Lin, Denton Liu, Derrick
Stolee, Đoàn Trần Công Danh, Drew DeVault, Edmundo Carmona
Antoranz, Elijah Newren, Emily Shaffer, Eric Sunshine, Han-Wen
Nienhuys, Hariom Verma, Jacob Keller, Jeff Hostetler, Jeff King,
Jiang Xin, Johannes Berg, Johannes Schindelin, Johannes Sixt,
Jonathan Tan, Junio C Hamano, Kazuhiro Kato, Luke Diamand,
Martin Ågren, Matheus Tavares, Matthew Rogers, Michael Forney,
Michal Privoznik, Miriam Rubio, Orgad Shaneh, Patrick Steinhardt,
Paul Mackerras, Philippe Blain, Phillip Wood, Pranit Bauva,
Prathamesh Chavan, René Scharfe, Rohit Ashiwal, Sergey Organov,
Shourya Shukla, Stefan Dotterweich, SZEDER Gábor, Taylor Blau,
Thomas Guyot-Sionnest, and Роман Донченко.
----------------------------------------------------------------
Git 2.29 Release Notes (draft)
==============================
Updates since v2.28
-------------------
UI, Workflows & Features
* "git help log" has been enhanced by sharing more material from the
documentation for the underlying "git rev-list" command.
* "git for-each-ref --format=<>" learned %(contents:size).
* "git merge" learned to selectively omit " into <branch>" at the end
of the title of default merge message with merge.suppressDest
configuration.
* The component to respond to "git fetch" request is made more
configurable to selectively allow or reject object filtering
specification used for partial cloning.
* Stop when "sendmail.*" configuration variables are defined, which
could be a mistaken attempt to define "sendemail.*" variables.
* The existing backends for "git mergetool" based on variants of vim
have been refactored and then support for "nvim" has been added.
* "git bisect" learns the "--first-parent" option to find the first
breakage along the first-parent chain.
* "git log --first-parent -p" showed patches only for single-parent
commits on the first-parent chain; the "--first-parent" option has
been made to imply "-m". Use "--no-diff-merges" to restore the
previous behaviour to omit patches for merge commits.
* The commit labels used to explain each side of conflicted hunks
placed by the sequencer machinery have been made more readable by
humans.
* The "--batch-size" option of "git multi-pack-index repack" command
is now used to specify that very small packfiles are collected into
one until the total size roughly exceeds it.
* The recent addition of SHA-256 support is marked as experimental in
the documentation.
* "git fetch" learned --no-write-fetch-head option to avoid writing
the FETCH_HEAD file.
* Command line completion (in contrib/) usually omits redundant,
deprecated and/or dangerous options from its output; it learned to
optionally include all of them.
* The output from the "diff" family of the commands had abbreviated
object names of blobs involved in the patch, but its length was not
affected by the --abbrev option. Now it is.
* "git worktree" gained a "repair" subcommand to help users recover
after moving the worktrees or repository manually without telling
Git. Also, "git init --separate-git-dir" no longer corrupts
administrative data related to linked worktrees.
* The "--format=" option to the "for-each-ref" command and friends
learned a few more tricks, e.g. the ":short" suffix that applies to
"objectname" now also can be used for "parent", "tree", etc.
* "git worktree add" learns that the "-d" is a synonym to "--detach"
option to create a new worktree without being on a branch.
* "format-patch --range-diff=<prev> <origin>..HEAD" has been taught
not to ignore <origin> when <prev> is a single version.
* "add -p" now allows editing paths that were only added in intent.
* The 'meld' backend of the "git mergetool" learned to give the
underlying 'meld' the '--auto-merge' option, which would help
reduce the amount of text that requires manual merging.
* "git for-each-ref" and friends that list refs used to allow only
one --merged or --no-merged to filter them; they learned to take
combination of both kind of filtering.
* "git maintenance", a "git gc"'s big brother, has been introduced to
take care of more repository maintenance tasks, not limited to the
object database cleaning.
* "git receive-pack" that accepts requests by "git push" learned to
outsource most of the ref updates to the new "proc-receive" hook.
* "git push" that wants to be atomic and wants to send push
certificate learned not to prepare and sign the push certificate
when it fails the local check (hence due to atomicity it is known
that no certificate is needed).
* "git commit-graph write" learned to limit the number of bloom
filters that are computed from scratch with the --max-new-filters
option.
* The transport protocol v2 has become the default again.
* The installation procedure learned to optionally omit "git-foo"
executable files for each 'foo' built-in subcommand, which are only
required by old timers that still rely on the age old promise that
prepending "git --exec-path" output to PATH early in their script
will keep the "git-foo" calls they wrote working.
* The command line completion (in contrib/) learned that "git restore
-s <TAB>" is often followed by a refname.
* "git shortlog" has been taught to group commits by the contents of
the trailer lines, like "Reviewed-by:", "Coauthored-by:", etc.
* "git archive" learns the "--add-file" option to include untracked
files into a snapshot from a tree-ish.
* "git fetch" and "git push" support negative refspecs.
* "git format-patch" learns to take "whenAble" as a possible value
for the format.useAutoBase configuration variable to become no-op
when the automatically computed base does not make sense.
* Credential helpers are now allowed to terminate lines with CRLF
line ending, as well as LF line ending.
Performance, Internal Implementation, Development Support etc.
* The changed-path Bloom filter is improved using ideas from an
independent implementation.
* Updates to the changed-paths bloom filter.
* The test framework has been updated so that most tests will run
with predictable (artificial) timestamps.
* Preliminary clean-up of the refs API in preparation for adding a
new refs backend "reftable".
* Dev support to limit the use of test_must_fail to only git commands.
* While packing many objects in a repository with a promissor remote,
lazily fetching missing objects from the promissor remote one by
one may be inefficient---the code now attempts to fetch all the
missing objects in batch (obviously this won't work for a lazy
clone that lazily fetches tree objects as you cannot even enumerate
what blobs are missing until you learn which trees are missing).
* The pretend-object mechanism checks if the given object already
exists in the object store before deciding to keep the data
in-core, but the check would have triggered lazy fetching of such
an object from a promissor remote.
* The argv_array API is useful for not just managing argv but any
"vector" (NULL-terminated array) of strings, and has seen adoption
to a certain degree. It has been renamed to "strvec" to reduce the
barrier to adoption.
* The final leg of SHA-256 transition plus doc updates. Note that
there is no inter-operability between SHA-1 and SHA-256
repositories yet.
* CMake support to build with MSVC for Windows bypassing the Makefile.
* A new helper function has_object() has been introduced to make it
easier to mark object existence checks that do and don't want to
trigger lazy fetches, and a few such checks are converted using it.
* A no-op replacement function implemented as a C preprocessor macro
does not perform as good a job as one implemented as a "static
inline" function in catching errors in parameters; replace the
former with the latter in <git-compat-util.h> header.
* Test framework update.
(merge d572f52a64 es/test-cmp-typocatcher later to maint).
* Updates to "git merge" tests, in preparation for a new merge
strategy backend.
* midx and commit-graph files now use the byte defined in their file
format specification for identifying the hash function used for
object names.
* The FETCH_HEAD is now always read from the filesystem regardless of
the ref backend in use, as its format is much richer than the
normal refs, and written directly by "git fetch" as a plain file..
* A handful of places in in-tree code still relied on being able to
execute the git subcommands, especially built-ins, in "git-foo"
form, which have been corrected.
* An unused binary has been discarded, and and a bunch of commands
have been turned into into built-in.
* A handful of places in in-tree code still relied on being able to
execute the git subcommands, especially built-ins, in "git-foo"
form, which have been corrected.
* When a packfile is removed by "git repack", multi-pack-index gets
cleared; the code was taught to do so less aggressively by first
checking if the midx actually refers to a pack that no longer
exists.
* Internal API clean-up to handle two options "diff-index" and "log"
have, which happen to share the same short form, more sensibly.
* The "add -i/-p" machinery has been written in C but it is not used
by default yet. It is made default to those who are participating
in feature.experimental experiment.
* Allow maintainers to tweak $(TAR) invocations done while making
distribution tarballs.
* "git index-pack" learned to resolve deltified objects with greater
parallelism.
* "diff-highlight" (in contrib/) had a logic to flush its output upon
seeing a blank line but the way it detected a blank line was broken.
Fixes since v2.28
-----------------
* "git clone --separate-git-dir=$elsewhere" used to stomp on the
contents of the existing directory $elsewhere, which has been
taught to fail when $elsewhere is not an empty directory.
(merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).
* With the base fix to 2.27 regresion, any new extensions in a v0
repository would still be silently honored, which is not quite
right. Instead, complain and die loudly.
(merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint).
* Fetching from a lazily cloned repository resulted at the server
side in attempts to lazy fetch objects that the client side has,
many of which will not be available from the third-party anyway.
(merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint).
* Fix to an ancient bug caused by an over-eager attempt for
optimization.
(merge a98f7fb366 rs/add-index-entry-optim-fix later to maint).
* Pushing a ref whose name contains non-ASCII character with the
"--force-with-lease" option did not work over smart HTTP protocol,
which has been corrected.
(merge cd85b447bf bc/push-cas-cquoted-refname later to maint).
* "git mv src dst", when src is an unmerged path, errored out
correctly but with an incorrect error message to claim that src is
not tracked, which has been clarified.
(merge 9b906af657 ct/mv-unmerged-path-error later to maint).
* Fix to a regression introduced during 2.27 cycle.
(merge cada7308ad en/fill-directory-exponential later to maint).
* Command line completion (in contrib/) update.
(merge 688b87c81b mp/complete-show-color-moved later to maint).
* All "mergy" operations that internally use the merge-recursive
machinery should honor the merge.renormalize configuration, but
many of them didn't.
* Doc cleanup around "worktree".
(merge dc9c144be5 es/worktree-doc-cleanups later to maint).
* The "git blame --first-parent" option was not documented, but now
it is.
(merge 11bc12ae1e rp/blame-first-parent-doc later to maint).
* The logic to find the ref transaction hook script attempted to
cache the path to the found hook without realizing that it needed
to keep a copied value, as the API it used returned a transitory
buffer space. This has been corrected.
(merge 09b2aa30c9 ps/ref-transaction-hook later to maint).
* Recent versions of "git diff-files" shows a diff between the index
and the working tree for "intent-to-add" paths as a "new file"
patch; "git apply --cached" should be able to take "git diff-files"
and should act as an equivalent to "git add" for the path, but the
command failed to do so for such a path.
(merge 4c025c667e rp/apply-cached-with-i-t-a later to maint).
* "git diff [<tree-ish>] $path" for a $path that is marked with i-t-a
bit was not showing the mode bits from the working tree.
(merge cb0dd22b82 rp/ita-diff-modefix later to maint).
* Ring buffer with size 4 used for bin-hex translation resulted in a
wrong object name in the sequencer's todo output, which has been
corrected.
(merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint).
* When given more than one target line ranges, "git blame -La,b
-Lc,d" was over-eager to coalesce groups of original lines and
showed incorrect results, which has been corrected.
(merge c2ebaa27d6 jk/blame-coalesce-fix later to maint).
* The regexp to identify the function boundary for FORTRAN programs
has been updated.
(merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint).
* A few end-user facing messages have been updated to be
hash-algorithm agnostic.
(merge 4279000d3e jc/object-names-are-not-sha-1 later to maint).
* "unlink" emulation on MinGW has been optimized.
(merge 680e0b4524 jh/mingw-unlink later to maint).
* The purpose of "git init --separate-git-dir" is to initialize a
new project with the repository separate from the working tree,
or, in the case of an existing project, to move the repository
(the .git/ directory) out of the working tree. It does not make
sense to use --separate-git-dir with a bare repository for which
there is no working tree, so disallow its use with bare
repositories.
(merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint).
* "ls-files -o" mishandled the top-level directory of another git
working tree that hangs in the current git working tree.
(merge ab282aa548 en/dir-nonbare-embedded later to maint).
* Fix some incorrect UNLEAK() annotations.
(merge 3e19816dc0 jk/unleak-fixes later to maint).
* Use more buffered I/O where we used to call many small write(2)s.
(merge a698d67b08 rs/more-buffered-io later to maint).
* The patch-id computation did not ignore the "incomplete last line"
marker like whitespaces.
(merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint).
* Updates into a lazy/partial clone with a submodule did not work
well with transfer.fsckobjects set.
* The parser for "git for-each-ref --format=..." was too loose when
parsing the "%(trailers...)" atom, and forgot that "trailers" and
"trailers:<modifiers>" are the only two allowed forms, which has
been corrected.
(merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint).
* Long ago, we decided to use 3 threads by default when running the
index-pack task in parallel, which has been adjusted a bit upwards.
(merge fbff95b67f jk/index-pack-w-more-threads later to maint).
* "git restore/checkout --no-overlay" with wildcarded pathspec
mistakenly removed matching paths in subdirectories, which has been
corrected.
(merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint).
* The description of --cached/--index options in "git apply --help"
has been updated.
(merge d064702be3 rp/apply-cached-doc later to maint).
* Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and
running "git log --ignore-missing $ZERO_OID" fell back to start
digging from HEAD; it has been corrected to become a no-op, like
"git log --tags=no-tag-matches-this-pattern" does.
(merge 04a0e98515 jk/rev-input-given-fix later to maint).
* Various callers of run_command API has been modernized.
(merge afbdba391e jc/run-command-use-embedded-args later to maint).
* List of options offered and accepted by "git add -i/-p" were
inconsistent, which have been corrected.
(merge ce910287e7 pw/add-p-allowed-options-fix later to maint).
* Various callers of run_command API has been modernized.
(merge afbdba391e jc/run-command-use-embedded-args later to maint).
* "git diff --stat -w" showed 0-line changes for paths whose changes
were only whitespaces, which was not intuitive. We now omit such
paths from the stat output.
(merge 1cf3d5db9b mr/diff-hide-stat-wo-textual-change later to maint).
* It was possible for xrealloc() to send a non-NULL pointer that has
been freed, which has been fixed.
(merge 6479ea4a8a jk/xrealloc-avoid-use-after-free later to maint).
* "git status" has trouble showing where it came from by interpreting
reflog entries that record certain events, e.g. "checkout @{u}", and
gives a hard/fatal error. Even though it inherently is impossible
to give a correct answer because the reflog entries lose some
information (e.g. "@{u}" does not record what branch the user was
on hence which branch 'the upstream' needs to be computed, and even
if the record were available, the relationship between branches may
have changed), at least hide the error to allow "status" show its
output.
* "git status --short" quoted a path with SP in it when tracked, but
not those that are untracked, ignored or unmerged. They are all
shown quoted consistently.
* "git diff/show" on a change that involves a submodule used to read
the information on commits in the submodule from a wrong repository
and gave a wrong information when the commit-graph is involved.
(merge 85a1ec2c32 mf/submodule-summary-with-correct-repository later to maint).
* Unlike "git config --local", "git config --worktree" did not fail
early and cleanly when started outside a git repository.
(merge 378fe5fc3d mt/config-fail-nongit-early later to maint).
* There is a logic to estimate how many objects are in the
repository, which is mean to run once per process invocation, but
it ran every time the estimated value was requested.
(merge 67bb65de5d jk/dont-count-existing-objects-twice later to maint).
* "git remote set-head" that failed still said something that hints
the operation went through, which was misleading.
(merge 5a07c6c3c2 cs/don-t-pretend-a-failed-remote-set-head-succeeded later to maint).
* "git fetch --all --ipv4/--ipv6" forgot to pass the protocol options
to instances of the "git fetch" that talk to individual remotes,
which has been corrected.
(merge 4e735c1326 ar/fetch-ipversion-in-all later to maint).
* The "unshelve" subcommand of "git p4" used incorrectly used
commit^N where it meant to say commit~N to name the Nth generation
ancestor, which has been corrected.
(merge 0acbf5997f ld/p4-unshelve-fix later to maint).
* "git clone" that clones from SHA-1 repository, while
GIT_DEFAULT_HASH set to use SHA-256 already, resulted in an
unusable repository that half-claims to be SHA-256 repository
with SHA-1 objects and refs. This has been corrected.
* Adjust sample hooks for hash algorithm other than SHA-1.
(merge d8d3d632f4 dl/zero-oid-in-hooks later to maint).
* "git range-diff" showed incorrect diffstat, which has been
corrected.
* Earlier we taught "git pull" to warn when the user does not say the
histories need to be merged, rebased or accepts only fast-
forwarding, but the warning triggered for those who have set the
pull.ff configuration variable.
(merge 54200cef86 ah/pull later to maint).
* Compilation fix around type punning.
(merge 176380fd11 jk/drop-unaligned-loads later to maint).
* "git blame --ignore-rev/--ignore-revs-file" failed to validate
their input are valid revision, and failed to take into account
that the user may want to give an annotated tag instead of a
commit, which has been corrected.
(merge 610e2b9240 jc/blame-ignore-fix later to maint).
* "git bisect start X Y", when X and Y are not valid committish
object names, should take X and Y as pathspec, but didn't.
(merge 73c6de06af cc/bisect-start-fix later to maint).
* The explanation of the "scissors line" has been clarified.
(merge 287416dba6 eg/mailinfo-doc-scissors later to maint).
* A race that leads to an access to a free'd data was corrected in
the codepath that reads pack files.
(merge bda959c476 mt/delta-base-cache-races later to maint).
* in_merge_bases_many(), a way to see if a commit is reachable from
any commit in a set of commits, was totally broken when the
commit-graph feature was in use, which has been corrected.
(merge 8791bf1841 ds/in-merge-bases-many-optim-bug later to maint).
* "git submodule update --quiet" did not squelch underlying "rebase"
and "pull" commands.
(merge 3ad0401e9e td/submodule-update-quiet later to maint).
* The lazy fetching done internally to make missing objects available
in a partial clone incorrectly made permanent damage to the partial
clone filter in the repository, which has been corrected.
* "log -c --find-object=X" did not work well to find a merge that
involves a change to an object X from only one parent.
(merge 957876f17d jk/diff-cc-oidfind-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 84544f2ea3 sk/typofixes later to maint).
(merge b17f411ab5 ar/help-guides-doc later to maint).
(merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint).
(merge 861c4ce141 en/typofixes later to maint).
(merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint).
(merge e2bfa50ac3 jb/doc-packfile-name later to maint).
(merge 918d8ff780 es/worktree-cleanup later to maint).
(merge dc156bc31f ma/t1450-quotefix later to maint).
(merge 56e743426b en/merge-recursive-comment-fixes later to maint).
(merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint).
(merge de20baf2c9 ny/notes-doc-sample-update later to maint).
(merge f649aaaf82 so/rev-parser-errormessage-fix later to maint).
(merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint).
(merge ac900fddb7 ma/stop-progress-null-fix later to maint).
(merge e767963ab6 rs/upload-pack-sigchain-fix later to maint).
(merge a831908599 rs/preserve-merges-unused-code-removal later to maint).
(merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint).
(merge 847b37271e pb/set-url-docfix later to maint).
(merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint).
(merge ce820cbd58 dl/subtree-docs later to maint).
(merge 55fe225dde jk/leakfix later to maint).
(merge ee22a29215 so/pretty-abbrev-doc later to maint).
(merge 3100fd5588 jc/post-checkout-doc later to maint).
(merge 17bae89476 pb/doc-external-diff-env later to maint).
(merge 27ed6ccc12 jk/worktree-check-clean-leakfix later to maint).
(merge 1302badd16 ea/blame-use-oideq later to maint).
(merge e6d5a11fed al/t3200-back-on-a-branch later to maint).
(merge 324efcf6b6 pw/add-p-leakfix later to maint).
(merge 1c6ffb546b jk/add-i-fixes later to maint).
(merge e40e936551 cd/commit-graph-doc later to maint).
(merge 0512eabd91 jc/sequencer-stopped-sha-simplify later to maint).
(merge d01141de5a so/combine-diff-simplify later to maint).
(merge 3be01e5ab1 sn/fast-import-doc later to maint).
----------------------------------------------------------------
Changes since v2.28.0 are as follows:
Aaron Lipman (12):
t6030: modernize "git bisect run" tests
rev-list: allow bisect and first-parent flags
cmd_bisect__helper: defer parsing no-checkout flag
bisect: introduce first-parent flag
bisect: combine args passed to find_bisection()
bisect: add first-parent option to documentation
t3200: clean side effect of git checkout --orphan
t3201: test multiple branch filter combinations
Doc: cover multiple contains/no-contains filters
ref-filter: allow merged and no-merged filters
ref-filter: make internal reachable-filter API more precise
Doc: prefer more specific file name
Adrian Moennich (1):
ci: fix inconsistent indentation
Alban Gruin (1):
t6300: fix issues related to %(contents:size)
Alex Henrie (1):
pull: don't warn if pull.ff has been set
Alex Riesen (1):
fetch: pass --ipv4 and --ipv6 options to sub-fetches
Andrei Rybak (1):
git-help.txt: fix mentions of option --guides
Antti Keränen (1):
rebase -i: fix possibly wrong onto hash in todo
Beat Bolli (1):
gitk: rename "commit summary" to "commit reference"
Ben Wijen (1):
git clone: don't clone into non-empty directory
Chris Torek (1):
git-mv: improve error message for conflicted file
Christian Couder (4):
Documentation: clarify %(contents:XXXX) doc
t6300: test refs pointing to tree and blob
ref-filter: add support for %(contents:size)
bisect: don't use invalid oid as rev when starting
Christian Schlack (1):
remote: don't show success message when set-head fails
Conor Davis (1):
commit-graph-format.txt: fix no-parent value
Danny Lin (2):
contrib/subtree: fix "unsure" for --message in the document
contrib/subtree: document 'push' does not take '--squash'
Denton Liu (11):
t3701: stop using `env` in force_color()
t5324: reorder `run_with_limited_open_files test_might_fail`
t7107: don't use test_must_fail()
t9834: remove use of `test_might_fail p4`
t9400: don't use test_must_fail with cvs
test-lib-functions: restrict test_must_fail usage
contrib/completion: complete options that take refs for format-patch
hooks--pre-push.sample: modernize script
hooks--pre-push.sample: use hash-agnostic zero OID
hooks--update.sample: use hash-agnostic zero OID
gitk: replace tabs with spaces
Derrick Stolee (22):
commit-graph: place bloom_settings in context
commit-graph: change test to die on parse, not load
bloom: fix logic in get_bloom_filter()
commit-graph: persist existence of changed-paths
revision.c: fix whitespace
multi-pack-index: repack batches below --batch-size
t/README: document GIT_TEST_DEFAULT_HASH
commit-graph: use the "hash version" byte
multi-pack-index: use hash version byte
bloom/diff: properly short-circuit on max_changes
maintenance: create basic maintenance runner
maintenance: add --quiet option
maintenance: replace run_auto_gc()
maintenance: initialize task array
maintenance: add commit-graph task
maintenance: add --task option
maintenance: take a lock on the objects directory
maintenance: create maintenance.<task>.enabled config
maintenance: use pointers to check --auto
maintenance: add auto condition for commit-graph task
maintenance: add trace2 regions for task execution
commit-reach: fix in_merge_bases_many bug
Drew DeVault (1):
git-send-email: die if sendmail.* config is set
Edmundo Carmona Antoranz (1):
blame.c: replace instance of !oidcmp for oideq
Elijah Newren (26):
Remove doubled words in various comments
hashmap: fix typo in usage docs
merge-recursive: fix unclear and outright wrong comments
t6038: make tests fail for the right reason
t6038: remove problematic test
merge: make merge.renormalize work for all uses of merge machinery
checkout: support renormalization with checkout -m <paths>
Collect merge-related tests to t64xx
t6418: tighten delete/normalize conflict testcase
t6422: fix bad check against missing file
t6416, t6422: fix incorrect untracked file count
t6423: fix test setup for a couple tests
t6422: fix multiple errors with the mod6 test expectations
t6416, t6423: clarify some comments and fix some typos
t6423: add an explanation about why one of the tests does not pass
t6422, t6426: be more flexible for add/add conflicts involving renames
t642[23]: be more flexible for add/add conflicts involving pair renames
t6425: be more flexible with rename/delete conflict messages
t3000: fix some test description typos
dir: avoid prematurely marking nonbare repositories as matches
sequencer: avoid garbled merge machinery messages due to commit labels
mem-pool: add convenience functions for strdup and strndup
mem-pool: use more standard initialization and finalization
mem-pool: use consistent pool variable name
dir: make clear_directory() free all relevant memory
dir: fix problematic API to avoid memory leaks
Emily Shaffer (1):
Revert "contrib: subtree: adjust test to change in fmt-merge-msg"
Eric Huber (1):
gitk: Preserve window dimensions on exit when not using ttk themes
Eric Sunshine (22):
worktree: drop pointless strbuf_release()
worktree: drop unused code from get_linked_worktree()
worktree: drop bogus and unnecessary path munging
worktree: retire special-case normalization of main worktree path
git-worktree.txt: employ fixed-width typeface consistently
git-worktree.txt: consistently use term "working tree"
git-worktree.txt: fix minor grammatical issues
git-worktree.txt: make start of new sentence more obvious
git-worktree.txt: link to man pages when citing other Git commands
test_cmp: diagnose incorrect arguments
init: disallow --separate-git-dir with bare repository
worktree: add skeleton "repair" command
worktree: teach "repair" to fix worktree back-links to main worktree
worktree: teach "repair" to fix outgoing links to worktrees
init: teach --separate-git-dir to repair linked worktrees
init: make --separate-git-dir work from within linked worktree
git-checkout.txt: document -d short option for --detach
worktree: teach `add` to recognize -d as shorthand for --detach
git-worktree.txt: discuss branch-based vs. throwaway worktrees
diff: move show_interdiff() from its own file to diff-lib
diff-lib: tighten show_interdiff()'s interface
format-patch: use 'origin' as start of current-series-range when known
Evan Gates (1):
Doc: show example scissors line
Han Xin (1):
send-pack: run GPG after atomic push checking
Han-Wen Nienhuys (17):
lib-t6000.sh: write tag using git-update-ref
t3432: use git-reflog to inspect the reflog for HEAD
bisect: treat BISECT_HEAD as a pseudo ref
t1400: use git rev-parse for testing PSEUDOREF existence
Modify pseudo refs through ref backend storage
Make HEAD a PSEUDOREF rather than PER_WORKTREE.
refs: move the logic to add \t to reflog to the files backend
refs: split off reading loose ref data in separate function
refs: fix comment about submodule ref_stores
refs: move gitdir into base ref_store
refs: read FETCH_HEAD and MERGE_HEAD generically
refs: make refs_ref_exists public
sequencer: treat CHERRY_PICK_HEAD as a pseudo ref
builtin/commit: suggest update-ref for pseudoref removal
sequencer: treat REVERT_HEAD as a pseudo ref
refs: move REF_LOG_ONLY to refs-internal.h
refs: add GIT_TRACE_REFS debugging mechanism
Hariom Verma (10):
t6300: unify %(trailers) and %(contents:trailers) tests
ref-filter: 'contents:trailers' show error if `:` is missing
ref-filter: support different email formats
ref-filter: refactor `grab_objectname()`
ref-filter: modify error messages in `grab_objectname()`
ref-filter: rename `objectname` related functions and fields
ref-filter: add `short` modifier to 'tree' atom
ref-filter: add `short` modifier to 'parent' atom
pretty: refactor `format_sanitized_subject()`
ref-filter: add `sanitize` option for 'subject' atom
Hugo Locurcio (1):
bisect: swap command-line options in documentation
Jacob Keller (4):
refspec: fix documentation referring to refspec_item
refspec: make sure stack refspec_item variables are zeroed
refspec: add support for negative refspecs
format-patch: teach format.useAutoBase "whenAble" option
Jeff Hostetler (1):
mingw: improve performance of mingw_unlink()
Jeff King (80):
t6000: use test_tick consistently
t9700: loosen ident timezone regex
t5539: make timestamp requirements more explicit
t9100: explicitly unset GIT_COMMITTER_DATE
test-lib: set deterministic default author/committer date
t9100: stop depending on commit timestamps
verify_repository_format(): complain about new extensions in v0 repo
argv-array: use size_t for count and alloc
argv-array: rename to strvec
strvec: rename files from argv-array to strvec
quote: rename sq_dequote_to_argv_array to mention strvec
strvec: convert builtin/ callers away from argv_array name
strvec: convert more callers away from argv_array name
strvec: convert remaining callers away from argv_array name
strvec: fix indentation in renamed calls
strvec: update documention to avoid argv_array
strvec: drop argv_array compatibility layer
log: drop "--cc implies -m" logic
revision: add "--no-diff-merges" option to counteract "-m"
log: enable "-m" automatically with "--first-parent"
doc/git-log: move "Diff Formatting" from rev-list-options
doc/git-log: drop "-r" diff option
doc/git-log: move "-t" into diff-options list
doc/git-log: clarify handling of merge commit diffs
strvec: rename struct fields
config: work around gcc-10 -Wstringop-overflow warning
revision: avoid out-of-bounds read/write on empty pathspec
revision: avoid leak when preparing bloom filter for "/"
t5616: use test_i18ngrep for upload-pack errors
sideband: mark "remote error:" prefix for translation
t1416: avoid hard-coded sha1 ids
t8003: check output of coalesced blame
t8003: factor setup out of coalesce test
blame: only coalesce lines that are adjacent in result
Makefile: drop builtins from MSVC pdb list
make credential helpers builtins
make git-bugreport a builtin
make git-fast-import a builtin
drop vcs-svn experiment
stop calling UNLEAK() before die()
ls-remote: simplify UNLEAK() usage
clear_pattern_list(): clear embedded hashmaps
submodule--helper: use strbuf_release() to free strbufs
checkout: fix leak of non-existent branch names
config: fix leaks from git_config_get_string_const()
config: drop git_config_get_string_const()
config: fix leak in git_config_get_expiry_in_days()
submodule--helper: fix leak of core.worktree value
p5302: disable thread-count parameter tests by default
p5302: count up to online-cpus for thread tests
index-pack: adjust default threading cap
revision: set rev_input_given in handle_revision_arg()
worktree: fix leak in check_clean_worktree()
xrealloc: do not reuse pointer freed by zero-length realloc()
add-patch: fix inverted return code of repo_read_index()
add--interactive.perl: specify --no-color explicitly
packfile: actually set approximate_object_count_valid
diff-highlight: correctly match blank lines for flush
bswap.h: drop unaligned loads
Revert "fast-export: use local array to store anonymized oid"
shortlog: change "author" variables to "ident"
protocol: re-enable v2 protocol by default
shortlog: add grouping option
trailer: add interface for iterating over commit trailers
shortlog: match commit trailers with --group
shortlog: de-duplicate trailer values
shortlog: rename parse_stdin_ident()
shortlog: parse trailer idents
shortlog: allow multiple groups to be specified
convert: drop unused crlf_action from check_global_conv_flags_eol()
drop unused argc parameters
env--helper: write to opt->value in parseopt helper
assert PARSE_OPT_NONEG in parse-options callbacks
push: drop unused repo argument to do_push()
sequencer: drop repository argument from run_git_commit()
sparse-checkout: fill in some options boilerplate
test-advise: check argument count with argc instead of argv
sequencer: handle ignore_footer when parsing trailers
dir.c: drop unused "untracked" from treat_path_fast()
combine-diff: handle --find-object in multitree code path
Jiang Xin (10):
transport: not report a non-head push as a branch
t5411: add basic test cases for proc-receive hook
receive-pack: add new proc-receive hook
receive-pack: feed report options to post-receive
New capability "report-status-v2" for git-push
doc: add document for capability report-status-v2
receive-pack: new config receive.procReceiveRefs
t5411: test updates of remote-tracking branches
transport: parse report options for tracking refs
doc: add documentation for the proc-receive hook
Johannes Berg (2):
pack-write/docs: update regarding pack naming
docs: commit-graph: fix some whitespace in the diagram
Johannes Schindelin (20):
t3404: prepare 'short SHA-1 collision' tests for SHA-256
ci: fix indentation of the `ci-config` job
ci: avoid ugly "failure" in the `ci-config` job
t/test-terminal: avoid non-inclusive language
fast-export: avoid using unnecessary language in a code comment
t3200: avoid variations of the `master` branch name
msvc: copy the correct `.pdb` files in the Makefile target `install`
Optionally skip linking/copying the built-ins
ci: stop linking built-ins to the dashed versions
cmake: ignore files generated by CMake as run in Visual Studio
tests: avoid variations of the `master` branch name
t9902: avoid using the branch name `master`
cmake: do find Git for Windows' shell interpreter
cmake: ensure that the `vcpkg` packages are found on Windows
cmake: fall back to using `vcpkg`'s `msgfmt.exe` on Windows
cmake: quote the path accurately when editing `test-lib.sh`
cmake (Windows): let the `.dll` files be found when running the tests
cmake (Windows): complain when encountering an unknown compiler
cmake (Windows): initialize vcpkg/build dependencies automatically
cmake (Windows): recommend using Visual Studio's built-in CMake support
Johannes Sixt (1):
gitk: Un-hide selection in areas with non-default background color
Jonathan Tan (32):
upload-pack: do not lazy-fetch "have" objects
pack-objects: refactor to oid_object_info_extended
pack-objects: prefetch objects to be packed
sha1-file: make pretend_object_file() not prefetch
sha1-file: introduce no-lazy-fetch has_object()
apply: do not lazy fetch when applying binary
pack-objects: no fetch when allow-{any,promisor}
fsck: do not lazy fetch known non-promisor object
negotiator/noop: add noop fetch negotiator
fetch: allow refspecs specified through stdin
fetch: avoid reading submodule config until needed
fetch: only populate existing_refs if needed
fetch-pack: do not lazy-fetch during ref iteration
promisor-remote: lazy-fetch objects in subprocess
fetch-pack: remove no_dependents code
fetch-pack: in partial clone, pass --promisor
Documentation: deltaBaseCacheLimit is per-thread
index-pack: remove redundant parameter
index-pack: unify threaded and unthreaded code
index-pack: remove redundant child field
index-pack: calculate {ref,ofs}_{first,last} early
index-pack: make resolve_delta() assume base data
(various): document from_promisor parameter
fetch-pack: document only_packfile in get_pack()
fetch-pack: make packfile URIs work with transfer.fsckobjects
fetch: no FETCH_HEAD display if --no-write-fetch-head
sha1-name: replace unsigned int with option struct
refs: move dwim_ref() to header file
wt-status: tolerate dangling marks
index-pack: make quantum of work smaller
promisor-remote: remove unused variable
fetch: do not override partial clone filter
Junio C Hamano (49):
gitk: be prepared to be run in a bare repository
reflog: cleanse messages in the refs.c layer
Revert "fmt-merge-msg: stop treating `master` specially"
fmt-merge-msg: allow merge destination to be omitted again
First batch post 2.28
The second batch -- mostly minor typofixes
Third batch
Fourth batch
Documentation: don't hardcode command categories twice
compat-util: type-check parameters of no-op replacement functions
Fifth batch
Sixth batch
Seventh batch
messages: avoid SHA-1 in end-user facing messages
Eighth batch
fetch: optionally allow disabling FETCH_HEAD update
Ninth batch
ident: say whose identity is missing when giving user.name hint
Tenth batch
t3436: do not run git-merge-recursive in dashed form
transport-helper: do not run git-remote-ext etc. in dashed form
cvsexportcommit: do not run git programs in dashed form
run_command: teach API users to use embedded 'args' more
credential-cache: use child_process.args
Eleventh batch
doc: clarify how exit status of post-checkout hook is used
Twelfth batch
Thirteenth batch
add -i: use the built-in version when feature.experimental is set
Makefile: allow extra tweaking of distribution tarball
Fourteenth batch
quote_path: rename quote_path_relative() to quote_path()
quote_path: give flags parameter to quote_path()
quote_path: optionally allow quoting a path with SP in it
quote_path: code clarification
wt-status: consistently quote paths in "status --short" output
quote: rename misnamed sq_lookup[] to cq_lookup[]
quote: turn 'nodq' parameter into a set of flags
Fifteenth batch
Sixteenth batch
t8013: minimum preparatory clean-up
blame: validate and peel the object names on the ignore list
t1506: rev-parse A..B and A...B
sequencer: stop abbreviating stopped-sha file
Seventeenth batch
Eighteenth batch
hashmap_for_each_entry(): workaround MSVC's runtime check failure #3
Nineteenth batch
Git 2.29-rc0
Kazuhiro Kato (1):
gitk: fix branch name encoding error
Kyohei Kadota (1):
Fit to Plan 9's ANSI/POSIX compatibility layer
Lin Sun (1):
mergetool: allow auto-merge for meld to follow the vim-diff behavior
Luke Diamand (2):
git-p4 unshelve: adding a commit breaks git-p4 unshelve
git-p4: use HEAD~$n to find parent commit for unshelve
Martin Ågren (19):
dir: check pathspecs before returning `path_excluded`
t1450: fix quoting of NUL byte when corrupting pack
t: don't spuriously close and reopen quotes
t4104: modernize and simplify quoting
progress: don't dereference before checking for NULL
http-protocol.txt: document SHA-256 "want"/"have" format
index-format.txt: document SHA-256 index format
protocol-capabilities.txt: clarify "allow-x-sha1-in-want" re SHA-256
shallow.txt: document SHA-256 shallow format
Documentation: mark `--object-format=sha256` as experimental
wt-status: replace sha1 mentions with oid
wt-status: print to s->fp, not stdout
wt-status: introduce wt_status_state_free_buffers()
worktree: inline `worktree_ref()` into its only caller
worktree: update renamed variable in comment
worktree: rename copy-pasted variable
worktree: use skip_prefix to parse target
config/fmt-merge-msg.txt: drop space in quote
config/uploadpack.txt: fix typo in `--filter=tree:<n>`
Matheus Tavares (4):
checkout_entry(): remove unreachable error() call
config: complain about --worktree outside of a git repo
packfile: fix race condition on unpack_entry()
packfile: fix memory leak in add_delta_base_cache()
Matthew Rogers (1):
diff: teach --stat to ignore uninteresting modifications
Michael Forney (2):
revision: use repository from rev_info when parsing commits
submodule: use submodule repository when preparing summary
Michal Privoznik (1):
completion: add show --color-moved[-ws]
Miriam Rubio (4):
bisect--helper: BUG() in cmd_*() on invalid subcommand
bisect--helper: use '-res' in 'cmd_bisect__helper' return
bisect--helper: introduce new `write_in_file()` function
bisect: call 'clear_commit_marks_all()' in 'bisect_next_all()'
Nikita Leonov (1):
credential: treat CR/LF as line endings in the credential protocol
Noam Yorav-Raphael (1):
docs: improve the example that illustrates git-notes path names
Orgad Shaneh (5):
vcbuild: fix library name for expat with make MSVC=1
vcbuild: fix batch file name in README
fetch: do not look for submodule changes in unchanged refs
submodule: suppress checking for file name and ref ambiguity for object ids
contrib/buildsystems: fix expat library name for generated vcxproj
Patrick Steinhardt (2):
refs: fix interleaving hook calls with reference-transaction hook
refs: remove lookup cache for reference-transaction hook
Paul Mackerras (1):
gitk: Resize panes correctly when reducing window size
Philippe Blain (19):
git-log.txt: add links to 'rev-list' and 'diff' docs
revisions.txt: describe 'rev1 rev2 ...' meaning for ranges
git-rev-list.txt: fix Asciidoc syntax
git-rev-list.txt: tweak wording in set operations
git-rev-list.txt: move description to separate file
git-log.txt: include rev-list-description.txt
command-list.txt: add missing 'gitcredentials' and 'gitremote-helpers'
help: drop usage of 'common' and 'useful' for guides
git.txt: add list of guides
fetch, pull doc: correct description of '--set-upstream'
userdiff: add tests for Fortran xfuncname regex
userdiff: improve Fortran xfuncname regex
git-imap-send.txt: don't duplicate 'Examples' sections
git-imap-send.txt: do verify SSL certificate for gmail.com
git-imap-send.txt: add note about localized Gmail folders
doc: mention GIT_SEQUENCE_EDITOR and 'sequence.editor' more
git.txt: correct stale 'GIT_EXTERNAL_DIFF' description
Makefile: add support for generating JSON compilation database
gitsubmodules doc: invoke 'ls-files' with '--recurse-submodules'
Phillip Wood (7):
add -p: use ALLOC_GROW_BY instead of ALLOW_GROW
add -p: fix checking of user input
am: stop exporting GIT_COMMITTER_DATE
rebase -i: support --committer-date-is-author-date
rebase -i: support --ignore-date
add -p: fix memory leak
add -p: fix editing of intent-to-add paths
Pranit Bauva (2):
bisect--helper: reimplement `bisect_autostart` shell function in C
bisect--helper: reimplement `bisect_next` and `bisect_auto_next` shell functions in C
Prathamesh Chavan (1):
submodule: port submodule subcommand 'summary' from shell to C
Raymond E. Pasco (6):
apply: allow "new file" patches on i-t-a entries
blame-options.txt: document --first-parent option
apply: make i-t-a entries never match worktree
t4140: test apply with i-t-a paths
diff-lib: use worktree mode in diffs from i-t-a entries
git-apply.txt: update descriptions of --cached, --index
René Scharfe (21):
read-cache: remove bogus shortcut
grep: avoid using oid_to_hex() with parse_object_or_die()
bisect: use oid_to_hex_r() instead of memcpy()+oid_to_hex()
upload-pack: remove superfluous sigchain_pop() call
rebase: remove unused function reschedule_last_action
connected: use buffered I/O to talk to rev-list
midx: use buffered I/O to talk to pack-objects
upload-pack: use buffered I/O to talk to rev-list
patch-id: ignore newline at end of file in diff_flush_patch_id()
checkout, restore: make pathspec recursive
read-cache: fix mem-pool allocation for multi-threaded index loading
push: release strbufs used for refspec formatting
refspec: add and use refspec_appendf()
fast-import: use write_pack_header()
midx: use hashwrite_u8() in write_midx_header()
pack-bitmap-write: use hashwrite_be32() in write_hash_cache()
pack-write: use hashwrite_be32() in write_idx_file()
archive: read short blobs in archive.c::write_archive_entry()
archive: add --add-file
Makefile: use git-archive --add-file
ref-filter: plug memory leak in reach_filter()
Rohit Ashiwal (2):
rebase -i: add --ignore-whitespace flag
rebase: add --reset-author-date
Ryan Zoeller (2):
parse-options: add --git-completion-helper-all
completion: add GIT_COMPLETION_SHOW_ALL env var
SZEDER Gábor (15):
tree-walk.c: don't match submodule entries for 'submod/anything'
commit-graph: fix parsing the Chunk Lookup table
commit-graph-format.txt: all multi-byte numbers are in network byte order
commit-slab: add a function to deep free entries on the slab
diff.h: drop diff_tree_oid() & friends' return value
commit-graph: clean up #includes
commit-graph: simplify parse_commit_graph() #1
commit-graph: simplify parse_commit_graph() #2
commit-graph: simplify write_commit_graph_file() #1
commit-graph: simplify write_commit_graph_file() #2
commit-graph: unify the signatures of all write_graph_chunk_*() functions
commit-graph: simplify chunk writes into loop
commit-graph: check chunk sizes after writing
commit-graph: check all leading directories in changed path Bloom filters
ci: use absolute PYTHON_PATH in the Linux jobs
Samanta Navarro (1):
fast-import: fix typo in documentation
Sergey Organov (9):
revision: fix die() message for "--unpacked="
revision: change "--diff-merges" option to require parameter
doc/git-log: describe --diff-merges=off
t/t4013: add test for --diff-merges=off
pretty-options.txt: fix --no-abbrev-commit description
revision: add separate field for "-m" of "diff-index -m"
log_tree_diff: get rid of code duplication for first_parent_only
log_tree_diff: get rid of extra check for NULL
diff: get rid of redundant 'dense' argument
Shourya Shukla (11):
submodule: remove extra line feeds between callback struct and macro
submodule: rename helper functions to avoid ambiguity
t7421: introduce a test script for verifying 'summary' output
t7401: modernize style
t7401: use 'short' instead of 'verify' and cut in rev-parse calls
t7401: change syntax of test_i18ncmp calls for clarity
t7401: change indentation for enhanced readability
t7401: add a NEEDSWORK
submodule: eliminate unused parameters from print_submodule_summary()
submodule: fix style in function definition
t7421: eliminate 'grep' check in t7421.4 for mingw compatibility
Sibi Siddharthan (8):
Introduce CMake support for configuring Git
cmake: generate the shell/perl/python scripts and templates, translations
cmake: installation support for git
cmake: support for testing git with ctest
cmake: support for testing git when building out of the source tree
cmake: support for building git on windows with mingw
cmake: support for building git on windows with msvc and clang.
ci: modification of main.yml to use cmake for vs-build job
Simon Legner (1):
remote-mediawiki: fix duplicate revisions being imported
Stefan Dotterweich (1):
gitk: add diff lines background colors
Steve Kemp (1):
comment: fix spelling mistakes inside comments
Taylor Blau (18):
revision: empty pathspecs should not use Bloom filters
list_objects_filter_options: introduce 'list_object_filter_config_name'
upload-pack.c: allow banning certain object filter(s)
upload-pack.c: introduce 'uploadpackfilter.tree.maxDepth'
builtin/repack.c: invalidate MIDX only when necessary
midx: traverse the local MIDX first
commit-graph: introduce 'get_bloom_filter_settings()'
t4216: use an '&&'-chain
commit-graph: pass a 'struct repository *' in more places
t/helper/test-read-graph.c: prepare repo settings
commit-graph: respect 'commitGraph.readChangedPaths'
commit-graph.c: store maximum changed paths
bloom: split 'get_bloom_filter()' in two
bloom: use provided 'struct bloom_filter_settings'
bloom: encode out-of-bounds filters as non-empty
commit-graph: rename 'split_commit_graph_opts'
builtin/commit-graph.c: introduce '--max-new-filters=<n>'
commit-graph: introduce 'commitGraph.maxNewFilters'
Theodore Dubois (1):
submodule update: silence underlying merge/rebase with "--quiet"
Thomas Guyot-Sionnest (1):
diff: fix modified lines stats with --stat and --numstat
brian m. carlson (48):
remote-curl: make --force-with-lease work with non-ASCII ref names
t: make test-bloom initialize repository
t1001: use $ZERO_OID
t3305: make hash agnostic
t6100: make hash size independent
t6101: make hash size independent
t6301: make hash size independent
t6500: specify test values for SHA-256
t6501: avoid hard-coded objects
t7003: compute appropriate length constant
t7063: make hash size independent
t7201: abstract away SHA-1-specific constants
t7102: abstract away SHA-1-specific constants
t7400: make hash size independent
t7405: make hash size independent
t7506: avoid checking for SHA-1-specific constants
t7508: use $ZERO_OID instead of hard-coded constant
t8002: make hash size independent
t8003: make hash size independent
t8011: make hash size independent
t9300: abstract away SHA-1-specific constants
t9300: use $ZERO_OID instead of hard-coded object ID
t9301: make hash size independent
t9350: make hash size independent
t9500: ensure that algorithm info is preserved in config
t9700: make hash size independent
t5308: make test work with SHA-256
t0410: mark test with SHA1 prerequisite
http-fetch: set up git directory before parsing pack hashes
builtin/verify-pack: implement an --object-format option
bundle: add new version for use with SHA-256
setup: add support for reading extensions.objectformat
repository: enable SHA-256 support by default
t: add test_oid option to select hash algorithm
t: allow testing different hash algorithms via environment
t: make SHA1 prerequisite depend on default hash
ci: run tests with SHA-256
docs: add documentation for extensions.objectFormat
t: remove test_oid_init in tests
git-cvsexportcommit: support Perl before 5.10.1
docs: document SHA-256 pack and indices
docs: fix step in transition plan
t4013: improve diff-post-processor logic
po: add missing letter for French message
docs: explain why squash merges are broken with long-running branches
docs: explain why reverts are not always applied on merge
docs: explain how to deal with files that are always modified
builtin/clone: avoid failure with GIT_DEFAULT_HASH
pudinha (2):
mergetool--lib: improve support for vimdiff-style tool variants
mergetools: add support for nvimdiff (neovim) family
Ákos Uzonyi (2):
completion: use "prev" variable instead of introducing "prevword"
completion: complete refs after 'git restore -s'
Ævar Arnfjörð Bjarmason (17):
remote-mediawiki doc: correct link to GitHub project
remote-mediawiki doc: link to MediaWiki's current version
remote-mediawiki doc: don't hardcode Debian PHP versions
remote-mediawiki tests: use the login/password variables
remote-mediawiki tests: use a 10 character password
remote-mediawiki tests: use test_cmp in tests
remote-mediawiki tests: change `[]` to `test`
remote-mediawiki tests: use "$dir/" instead of "$dir."
remote-mediawiki tests: use a more idiomatic dispatch table
remote-mediawiki tests: replace deprecated Perl construct
remote-mediawiki tests: use inline PerlIO for readability
remote-mediawiki tests: use CLI installer
remote-mediawiki tests: annotate failing tests
remote-mediawiki: provide a list form of run_git()
remote-mediawiki: convert to quoted run_git() invocation
remote-mediawiki: annotate unquoted uses of run_git()
remote-mediawiki: use "sh" to eliminate unquoted commands
Đoàn Trần Công Danh (1):
diff: index-line: respect --abbrev in object's name
Роман Донченко (2):
gitk: don't highlight files after submodules as submodules
gitk: fix the context menu not appearing in the presence of submodule diffs
^ permalink raw reply [relevance 3%]
* Huge push upload despite only having a tiny change
@ 2020-06-02 19:21 5% Elijah Newren
0 siblings, 0 replies; 162+ results
From: Elijah Newren @ 2020-06-02 19:21 UTC (permalink / raw)
To: Git Mailing List; +Cc: Jonathan Nieder
Hi,
I had a user report that two nearly identical pushes (the second being
an amended commit of the first) took dramatically differing amounts of
time and amount of data uploaded (from 4.5 seconds and about 21k
uploaded, to 223 seconds and over 100 MB uploaded).
I'm curious if this might be a known issue; it sounds similar to some
push protocol discussion I remember from the contributor's summit (but
I don't know anything on the protocol side and tend to work on other
things during protocol discussion). If this does sound like a known
issue, does anyone have links to some relevant discussion I can read
up on (and perhaps pass long to this user)? If it doesn't sound like
a known issue, what other things would be useful for me to dig up?
Additional details:
* Both pushes involved cases where the user had a single commit that
the server didn't.
* The parent of the commit that needed to be pushed was the same in both cases.
* The commit in question was small; modifying either 13 or 15 lines of
two files that were each less than about 8k in size.
* The user was pushing up a new branch each time, but the new branch
was closely related to an existing branch (i.e. had all but a few
commits of history in common)
* The user was two commits behind the closely-related branch at the
time of the first push, and 10 commits behind at the time of the
second push. Running format-patch on these 10 commits that were on
the server at the time shows their size is at most about ~55 k.
* The server has a huge number of refs; about 470k of them (most of
them related to code reviews).
* The server was running Gerrit 3.1.4 (i.e. jgit).
* The user was using a version of git based off master from a few
weeks ago, in particular, with a few changes on top of commit
b994622632 ("The eighth batch", 2020-05-08). I don't think the few
internal changes could affect anything here, but those changes were:
(1) making features.experimental default to true (which only turns on
two fetch settings as far as I can tell), (2) making
merge.directoryRenames default to true, and (3) setting a few trace2.*
config settings by default.
Thanks,
Elijah
^ permalink raw reply [relevance 5%]
* [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%]
* [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%]
* [PATCH v2 0/2] Fix 2.26.0 rebase regression and documentation shortcoming
@ 2020-03-11 15:30 5% ` Elijah Newren via GitGitGadget
0 siblings, 0 replies; 162+ results
From: Elijah Newren via GitGitGadget @ 2020-03-11 15:30 UTC (permalink / raw)
To: git; +Cc: Phillip Wood, Jeff King, Junio C Hamano, Elijah Newren
This two commit series addresses two points raised by Peff about rebase
backend issues. The first is a two-line fix to a regression in 2.26.0 (when
"the eighth batch for 2.26.0" added the dropping of commits which become
empty, if the last commit in the series was the one that became empty the
rebase would complete without cleaning out state files), and the other is
just a documentation update about a backend difference that we were
previously unaware of.
Changes since v1:
* Clean out any MERGE_MSG file in addition to CHERRY_PICK_HEAD, and add a
test
Elijah Newren (2):
sequencer: clear state upon dropping a become-empty commit
git-rebase.txt: highlight backend differences with commit rewording
Documentation/git-rebase.txt | 10 ++++++++++
sequencer.c | 2 ++
t/t3424-rebase-empty.sh | 8 ++++++++
3 files changed, 20 insertions(+)
base-commit: b4374e96c84ed9394fed363973eb540da308ed4f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-722%2Fnewren%2Frebase-fixups-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-722/newren/rebase-fixups-v2
Pull-Request: https://github.com/git/git/pull/722
Range-diff vs v1:
1: 132f769adb0 ! 1: 84b89d78435 sequencer: clear CHERRY_PICK_HEAD upon dropping a become-empty commit
@@ -1,6 +1,6 @@
Author: Elijah Newren <newren@gmail.com>
- sequencer: clear CHERRY_PICK_HEAD upon dropping a become-empty commit
+ sequencer: clear state upon dropping a become-empty commit
In commit e98c4269c8 ("rebase (interactive-backend): fix handling of
commits that become empty", 2020-02-15), the merge backend was changed
@@ -9,10 +9,10 @@
upstream). This new code path did not need to go through the process of
creating a commit, since we were dropping the commit instead.
Unfortunately, this also means we bypassed the clearing of the
- CHERRY_PICK_HEAD file, which if there were no further commits to
- cherry-pick would mean that the rebase would end but assume there was
- still an operation in progress. Ensure that we clear CHERRY_PICK_HEAD
- when we decide to drop the commit.
+ CHERRY_PICK_HEAD and MERGE_MSG files, which if there were no further
+ commits to cherry-pick would mean that the rebase would end but assume
+ there was still an operation in progress. Ensure that we clear such
+ state files when we decide to drop the commit.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ -24,6 +24,24 @@
} else if (allow == 2) {
drop_commit = 1;
+ unlink(git_path_cherry_pick_head(r));
++ unlink(git_path_merge_msg(r));
fprintf(stderr,
_("dropping %s %s -- patch contents already upstream\n"),
oid_to_hex(&commit->object.oid), msg.subject);
+
+ diff --git a/t/t3424-rebase-empty.sh b/t/t3424-rebase-empty.sh
+ --- a/t/t3424-rebase-empty.sh
+ +++ b/t/t3424-rebase-empty.sh
+@@
+ test_cmp expect actual
+ '
+
++test_expect_success 'rebase --merge does not leave state laying around' '
++ git checkout -B testing localmods~2 &&
++ git rebase --merge upstream &&
++
++ test_path_is_missing .git/CHERRY_PICK_HEAD &&
++ test_path_is_missing .git/MERGE_MSG
++'
++
+ test_done
2: 12932b847ef = 2: 6d51cff41d9 git-rebase.txt: highlight backend differences with commit rewording
--
gitgitgadget
^ permalink raw reply [relevance 5%]
* Re: [ANNOUNCE] Git v2.26.0-rc1
@ 2020-03-11 5:25 6% ` Elijah Newren
0 siblings, 0 replies; 162+ results
From: Elijah Newren @ 2020-03-11 5:25 UTC (permalink / raw)
To: Jeff King; +Cc: Junio C Hamano, Git Mailing List
On Tue, Mar 10, 2020 at 10:40 AM Jeff King <peff@peff.net> wrote:
>
> On Tue, Mar 10, 2020 at 07:57:11AM -0700, Junio C Hamano wrote:
>
> > * "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.
>
> I noticed a few behavior changes that I think are related to this
> switch. I'm not sure to what degree we'd consider these a problem
> (though the second I think may be an existing bug in the merge backend
> that's just getting more attention), but it seems like the time to raise
> the issue is now, before the release. :)
>
> The first change is that we'll now open an editor when continuing a
> conflicted rebase. You can see it by running this:
>
> for backend in apply merge; do
> echo "==> Running with rebase.backend=$backend"
>
> # new repo
> rm -rf repo
> git init -q repo
> cd repo
>
> # create two conflicting branches
> echo base >base && git add base && git commit -qm base
> echo master >file && git add file && git commit -qm master
> git checkout -q -b side HEAD^
> echo side >file && git add file && git commit -qm side
>
> # rebase on master, hit the conflict, then resolve it
> git -c rebase.backend=$backend rebase master
> echo resolved >file
> git add file
>
> # continue the rebase, noting whether we used the editor
> GIT_EDITOR='echo >&2 running editor on:' git rebase --continue
> done
>
> We won't run the editor the "apply" backend, but do for "merge". I'm
> not sure how big a deal this is. It bit me because I have a script which
> runs rebase in a "while read" shell loop, with stdin coming from a pipe
> feeding the loop. It auto-continues when rerere is able to fix up the
> conflicts, but the editor complains about stdin not being a tty and
> dies.
>
> I'd imagine that's a pretty rare situation, and it was easy enough to
> fix up. But I wonder if we should be more careful about making sure the
> behavior is more identical. On the other hand, I imagine this is the way
> the merge backend has always behaved, so it would be a change in
> behavior for people who had been using it already. I guess the _most_
> compatible thing would be a merge-that-behaves-more-like-apply backend,
> but I'm not sure if we want to support that forever.
This behavior did not always exist with the merge backend, it began
with commit 68aa495b59 ("rebase: implement --merge via the interactive
machinery", 2018-12-11). Before that, there was not too much in
sequencer.c or its predecessors for non-interactive rebases, so I
wouldn't give much weight to historical precedent for how the merge
backend behaves here.
However, as Junio argues elsewhere in this thread, the apply backend
should probably be the one that is considered to be buggy here.
Although fixing the apply backend is probably best, and adding an
escape hatch such as --no-edit as Junio suggests for the merge backend
makes sense, given where we are in the 2.26 cycle, I only sent off a
patch to document this difference for now.
> The second thing I noticed is more clearly a bug, I think. If we have a
> patch that is skipped because it was already applied, we get stuck in
> "cherry-picking" mode. Try:
>
> for backend in apply merge; do
> echo "==> Running with rebase.backend=$backend"
>
> # new repo
> rm -rf repo
> git init -q repo
> cd repo
>
> echo base >file && git add file && git commit -qm base
> # do this in two steps so we don't match patch-id
> echo one >file && git commit -qam master-1
> echo two >file && git commit -qam master-2
>
> git checkout -q -b side HEAD~2
> echo two >file && git commit -qam side
>
> # start a rebase, which should realize that the patch is a noop
> git -c rebase.backend=$backend rebase master
>
> # see what state "status" reports us in
> git status
> done
>
> For the "apply" case, I get:
>
> ==> Running with rebase.backend=apply
> First, rewinding head to replay your work on top of it...
> Applying: side
> Using index info to reconstruct a base tree...
> M file
> Falling back to patching base and 3-way merge...
> No changes -- Patch already applied.
> On branch side
> nothing to commit, working tree clean
>
> So we complete the rebase, and git-status shows nothing. But for the
> merge backend:
>
> ==> Running with rebase.backend=merge
> dropping f8b25a2cd2a3a0e64d820efe2fcbae81dec98616 side -- patch contents already upstream
> Successfully rebased and updated refs/heads/side.
> On branch side
> You are currently cherry-picking commit f8b25a2.
>
> nothing to commit, working tree clean
>
> Oops. If I "git rebase --continue" from there, I get "No rebase in
> progress?". Doing "git cherry-pick --skip" clears it. I guess the issue
> is the continued presence of .git/CHERRY_PICK_HEAD.
Yes, definitely a bug, and new as of "the eighth batch for
git-2.26.0", a few days before 2.26.0-rc0. I found a one-liner fix.
> As you can see from the output above (and the earlier snippet, if you
> run it), there are also a bunch of minor stderr output changes. I think
> these probably aren't worth caring about.
Agreed; also, these output differences are already documented in
"Behavioral Differences" of the git-rebase manpage.
Thanks for the careful reports; new series up at
https://lore.kernel.org/git/pull.722.git.git.1583903621.gitgitgadget@gmail.com/
to address the issues raised.
^ permalink raw reply [relevance 6%]
* [ANNOUNCE] Git v2.26.0-rc1
@ 2020-03-10 14:57 2% Junio C Hamano
0 siblings, 1 reply; 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%]
* [ANNOUNCE] Git v2.24.0
@ 2019-11-04 5:36 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-11-04 5:36 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.24.0 is now available at the
usual places. It is comprised of 544 non-merge commits since
v2.23.0, contributed by 78 people, 21 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.24.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.23.0 are as follows.
Welcome to the Git development community!
Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
Steffen, CB Bailey, Christopher Diaz Riveros, Garima Singh,
Hervé Beraud, Jakob Jarmar, kdnakt, Kunal Tyagi, Maxim
Belsky, Max Rothman, Norman Rasmussen, Paul Wise, Pedro Sousa,
Philip.McGraw, Pratyush Yadav, Thomas Klaeger, William Baker,
and YanKe.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Roben, Ævar Arnfjörð Bjarmason, Alessandro Menti,
Alexander Shopov, Alex Henrie, Andrey Mazo, Beat Bolli, Ben
Wijen, Bert Wesarg, Birger Skogeng Pedersen, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Clément Chigot,
Corentin BOMPARD, David Turner, Denton Liu, Derrick Stolee,
Elijah Newren, Emily Shaffer, Eric Wong, Gabriele Mazzotta,
Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes
Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons, Jordi Mas,
Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
Matheus Tavares, Matthew DeVore, Matthias Rüster, Michael
J Gruber, Mike Hommey, Mischa POSLAWSKY, Paul Mackerras,
Peter Krefting, Phillip Wood, René Scharfe, Robert Luberda,
Stephen Boyd, Stephen P. Smith, Sun Chao, SZEDER Gábor,
Tanay Abhra, Taylor Blau, Thomas Gummerer, Tobias Klauser,
Torsten Bögershausen, Trần Ngọc Quân, and Varun Naik.
----------------------------------------------------------------
Git 2.24 Release Notes
======================
Updates since v2.23
-------------------
Backward compatibility note
* "filter-branch" is showing its age and alternatives are available.
From this release, we started to discourage its use and hint
people about filter-repo.
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
input as non-options, has been to use "--" as the delimiter, but
that would not work for commands that use "--" as a delimiter
between revs and pathspec.
* A mechanism to affect the default setting for a (related) group of
configuration variables is introduced.
* "git fetch" learned "--set-upstream" option to help those who first
clone from their private fork they intend to push to, add the true
upstream via "git remote add" and then "git fetch" from it.
* 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.
* The documentation and tests for "git format-patch" have been
cleaned up.
* On Windows, the root level of UNC share is now allowed to be used
just like any other directory.
* The command line completion support (in contrib/) learned about the
"--skip" option of "git revert" and "git cherry-pick".
* "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.
* A configuration variable tells "git fetch" to write the commit
graph after finishing.
* "git add -i" has been taught to show the total number of hunks and
the hunks that has been processed so far when showing prompts.
* "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
submodules, but this did not apply to "git fetch --multiple" that
fetches from multiple remote repositories. It now does.
* The installation instruction for zsh completion script (in
contrib/) has been a bit improved.
Performance, Internal Implementation, Development Support etc.
* The code to write commit-graph over given commit object names has
been made a bit more robust.
* The first line of verbose output from each test piece now carries
the test name and number to help scanning with eyeballs.
* 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.
* Preparation for SHA-256 upgrade continues in the test department.
(merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).
* The memory ownership model of the "git fast-import" got
straightened out.
* Output from trace2 subsystem is formatted more prettily now.
* The internal code originally invented for ".gitignore" processing
got reshuffled and renamed to make it less tied to "excluding" and
stress more that it is about "matching", as it has been reused for
things like sparse checkout specification that want to check if a
path is "included".
* "git stash" learned to write refreshed index back to disk.
* Coccinelle checks are done on more source files than before now.
* The cache-tree code has been taught to be less aggressive in
attempting to see if a tree object it computed already exists in
the repository.
* The code to parse and use the commit-graph file has been made more
robust against corrupted input.
* The hg-to-git script (in contrib/) has been updated to work with
Python 3.
* Update the way build artifacts in t/helper/ directory are ignored.
* Preparation for SHA-256 upgrade continues.
* "git log --graph" for an octopus merge is sometimes colored
incorrectly, which is demonstrated and documented but not yet
fixed.
* The trace2 output, when sending them to files in a designated
directory, can populate the directory with too many files; a
mechanism is introduced to set the maximum number of files and
discard further logs when the maximum is reached.
* We have adopted a Code-of-conduct document.
(merge 3f9ef874a7 jk/coc later to maint).
Fixes since v2.23
-----------------
* "git grep --recurse-submodules" that looks at the working tree
files looked at the contents in the index in submodules, instead of
files in the working tree.
(merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).
* Codepaths to walk tree objects have been audited for integer
overflows and hardened.
(merge 5aa02f9868 jk/tree-walk-overflow later to maint).
* "git pack-refs" can lose refs that are created while running, which
is getting corrected.
(merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).
* "git checkout" and "git restore" to re-populate the index from a
tree-ish (typically HEAD) did not work correctly for a path that
was removed and then added again with the intent-to-add bit, when
the corresponding working tree file was empty. This has been
corrected.
* Compilation fix.
(merge 70597e8386 rs/nedalloc-fixlets later to maint).
* "git gui" learned to call the clean-up procedure before exiting.
(merge 0d88f3d2c5 py/git-gui-do-quit later to maint).
* We promoted the "indent heuristics" that decides where to split
diff hunks from experimental to the default a few years ago, but
some stale documentation still marked it as experimental, which has
been corrected.
(merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).
* Fix a mismerge that happened in 2.22 timeframe.
(merge acb7da05ac en/checkout-mismerge-fix later to maint).
* "git archive" recorded incorrect length in extended pax header in
some corner cases, which has been corrected.
(merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).
* On-demand object fetching in lazy clone incorrectly tried to fetch
commits from submodule projects, while still working in the
superproject, which has been corrected.
(merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).
* Prepare get_short_oid() codepath to be thread-safe.
(merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).
* "for-each-ref" and friends that show refs did not protect themselves
against ancient tags that did not record tagger names when asked to
show "%(taggername)", which have been corrected.
(merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).
* The "git am" based backend of "git rebase" ignored the result of
updating ".gitattributes" done in one step when replaying
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).
* Build fix to adjust .gitignore to unignore a path that we started to track.
(merge aac6ff7b5b js/visual-studio later to maint).
* A few implementation fixes in the notes API.
(merge 60fe477a0b mh/notes-duplicate-entries later to maint).
* Fix an earlier regression to "git push --all" which should have
been forbidden when the target remote repository is set to be a
mirror.
(merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).
* Fix an earlier regression in the test suite, which mistakenly
stopped running HTTPD tests.
(merge 3960290675 sg/git-test-boolean later to maint).
* "git rebase --autostash <upstream> <branch>", when <branch> is
different from the current branch, incorrectly moved the tip of the
current branch, which has been corrected.
(merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).
* Update support for Asciidoctor documentation toolchain.
(merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).
* Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
no longer works with the older one.
(merge f6461b82b9 bc/doc-use-docbook-5 later to maint).
* The markup used in user-manual has been updated to work better with
asciidoctor.
(merge c4d2f6143a ma/user-manual-markup-update later to maint).
* Make sure the grep machinery does not abort when seeing a payload
that is not UTF-8 even when JIT is not in use with PCRE1.
(merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).
* The name of the blob object that stores the filter specification
for sparse cloning/fetching was interpreted in a wrong place in the
code, causing Git to abort.
* "git log --decorate-refs-exclude=<pattern>" was incorrectly
overruled when the "--simplify-by-decoration" option is used, which
has been corrected.
(merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).
* The "upload-pack" (the counterpart of "git fetch") needs to disable
commit-graph when responding to a shallow clone/fetch request, but
the way this was done made Git panic, which has been corrected.
* The object traversal machinery has been optimized not to load tree
objects when we are only interested in commit history.
(merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).
* The object name parser for "Nth parent" syntax has been made more
robust against integer overflows.
(merge 59fa5f5a25 rs/nth-parent-parse later to maint).
* The code used in following tags in "git fetch" has been optimized.
(merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).
* Regression fix for progress output.
(merge 2bb74b53a4 sg/progress-fix later to maint).
* A bug in merge-recursive code that triggers when a branch with a
symbolic link is merged with a branch that replaces it with a
directory has been fixed.
(merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).
* The rename detection logic sorts a list of rename source candidates
by similarity to pick the best candidate, which means that a tie
between sources with the same similarity is broken by the original
location in the original candidate list (which is sorted by path).
Force the sorting by similarity done with a stable sort, which is
not promised by system supplied qsort(3), to ensure consistent
results across platforms.
(merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).
* The code to skip "UTF" and "UTF-" prefix, when computing an advice
message, did not work correctly when the prefix was "UTF", which
has been fixed.
(merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).
* The author names taken from SVN repositories may have extra leading
or trailing whitespaces, which are now munged away.
(merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).
* "git rebase -i" showed a wrong HEAD while "reword" open the editor.
(merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).
* A few simplification and bugfixes to PCRE interface.
(merge c581e4a749 ab/pcre-jit-fixes later to maint).
* PCRE fixes.
(merge ff61681b46 cb/pcre1-cleanup later to maint).
* "git range-diff" segfaulted when diff.noprefix configuration was
used, as it blindly expected the patch it internally generates to
have the standard a/ and b/ prefixes. The command now forces the
internal patch to be built without any prefix, not to be affected
by any end-user configuration.
(merge 937b76ed49 js/range-diff-noprefix later to maint).
* "git stash apply" in a subdirectory of a secondary worktree failed
to access the worktree correctly, which has been corrected.
(merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).
* The merge-recursive machinery is one of the most complex parts of
the system that accumulated cruft over time. This large series
cleans up the implementation quite a bit.
(merge b657047719 en/merge-recursive-cleanup later to maint).
* Pretty-printed command line formatter (used in e.g. reporting the
command being run by the tracing API) had a bug that lost an
argument that is an empty string, which has been corrected.
(merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).
* "git range-diff" failed to handle mode-only change, which has been
corrected.
(merge 2b6a9b13ca tg/range-diff-output-update later to maint).
* Dev support update.
(merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).
* "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
not "mkdir -p <outdir>", which was corrected.
* "git stash save" lost local changes to submodules, which has been
corrected.
(merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).
* The atomic push over smart HTTP transport did not work, which has
been corrected.
(merge 6f1194246a bc/smart-http-atomic-push 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).
(merge 415b770b88 ds/midx-expire-repack later to maint).
(merge 19800bdc3f nd/diff-parseopt later to maint).
(merge 58166c2e9d tg/t0021-racefix later to maint).
(merge 7027f508c7 dl/compat-cleanup later to maint).
(merge e770fbfeff jc/test-cleanup later to maint).
(merge 1fd881d404 rs/trace2-dst-warning later to maint).
(merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
(merge 9784f97321 mh/release-commit-memory-fix later to maint).
(merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
(merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
(merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
(merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
(merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
(merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
(merge 47b27c96fa ss/get-time-cleanup later to maint).
(merge dd2e50a84e jk/commit-graph-cleanup later to maint).
(merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
(merge 40e747e89d dl/submodule-set-branch later to maint).
(merge 689a146c91 rs/commit-graph-use-list-count later to maint).
(merge 0eb7c37a8a js/doc-patch-text later to maint).
(merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
(merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
(merge af78249463 cc/svn-fe-py-shebang later to maint).
(merge 7bd97d6dff rs/alias-use-copy-array later to maint).
(merge c46ebc2496 sg/travis-help-debug later to maint).
(merge 24c681794f ps/my-first-contribution-alphasort later to maint).
(merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
(merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
(merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
(merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
(merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
(merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
(merge 53d687bf5f ah/cleanups later to maint).
(merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
(merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
(merge d928a8388a am/t0028-utf16-tests later to maint).
(merge b05b40930e dl/t0000-skip-test-test later to maint).
(merge 03d3b1297c js/xdiffi-comment-updates later to maint).
(merge 57d8f4b4c7 js/doc-stash-save later to maint).
(merge 8c1cfd58e3 ta/t1308-typofix later to maint).
(merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
(merge 68b69211b2 bb/compat-util-comment-fix later to maint).
(merge 5cc6a4be11 rs/http-push-simplify later to maint).
(merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
(merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
(merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint).
(merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint).
(merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint).
(merge 60e6569a12 js/mingw-needs-hiding-fix later to maint).
(merge 52bd3e4657 rl/gitweb-blame-prev-fix later to maint).
----------------------------------------------------------------
Changes since v2.23.0 are as follows:
Adam Roben (1):
mingw: fix launching of externals from Unicode paths
Alessandro Menti (2):
l10n: it.po: update the Italian translation for Git 2.24.0
l10n: it.po: update the Italian translation for Git 2.24.0 round #2
Alex Henrie (4):
doc: fix reference to --ignore-submodules
commit-graph: remove a duplicate assignment
diffcore-break: use a goto instead of a redundant if statement
wrapper: use a loop instead of repetitive statements
Alexander Shopov (2):
l10n: bg.po: Updated Bulgarian translation (4693)
l10n: bg.po: Updated Bulgarian translation (4694)
Alexandr Miloslavskiy (4):
contrib/buildsystems: fix Visual Studio Debug configuration
t0028: fix test for UTF-16-LE-BOM
t0028: add more tests
t0061: fix test for argv[0] with spaces (MINGW only)
Ali Utku Selen (1):
shallow.c: don't free unallocated slabs
Andrey Mazo (1):
.mailmap: update email address of Andrey Mazo
Beat Bolli (3):
grep: under --debug, show whether PCRE JIT is enabled
utf8: use ARRAY_SIZE() in git_wcwidth()
git-compat-util: fix documentation syntax
Ben Milman (1):
repository-layout.txt: correct pluralization of 'object'
Ben Wijen (2):
builtin/rebase.c: make sure the active branch isn't moved when autostashing
builtin/rebase.c: Remove pointless message
Bert Wesarg (7):
git-gui: convert new/amend commit radiobutton to checkbutton
git-gui: add horizontal scrollbar to commit buffer
builtin/submodule--helper: fix usage string for 'update-clone'
git-gui: use existing interface to query a path's attribute
git-gui: support for diff3 conflict style
format-patch: create leading components of output directory
t4014: make output-directory tests self-contained
Birger Skogeng Pedersen (2):
git-gui: add hotkeys to set widget focus
git-gui: add hotkey to toggle "Amend Last Commit"
CB Bailey (1):
t4038: Remove non-portable '-a' option passed to test_cmp
Cameron Steffen (1):
doc: minor formatting fix
Carlo Marcelo Arenas Belón (7):
http: use xmalloc with cURL
grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1
grep: refactor and simplify PCRE1 support
grep: skip UTF8 checks explicitly
grep: make PCRE1 aware of custom allocator
grep: make PCRE2 aware of custom allocator
grep: avoid leak of chartables in PCRE2
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
Christopher Diaz Riveros (1):
l10n: es: 2.24.0 round 2
Clément Chigot (1):
contrib/svn-fe: fix shebang for svnrdump_sim.py
Corentin BOMPARD (1):
pull, fetch: add --set-upstream option
David Turner (1):
clarify documentation for remote helpers
Denton Liu (50):
packfile.h: drop extern from function declaration
t4014: drop unnecessary blank lines from test cases
t3431: add rebase --fork-point tests
t3432: test rebase fast-forward behavior
completion: merge options for cherry-pick and revert
completion: add --skip for cherry-pick and revert
status: mention --skip for revert and cherry-pick
rebase: refactor can_fast_forward into goto tower
rebase: fast-forward --onto in more cases
rebase: fast-forward --fork-point in more cases
rebase: teach rebase --keep-base
mingw: apply array.cocci rule
compat/*.[ch]: remove extern from function declarations using spatch
t4014: s/expected/expect/
t4014: move closing sq onto its own line
t4014: use sq for test case names
t4014: remove spaces after redirect operators
t4014: use indentable here-docs
t4014: drop redirections to /dev/null
t4014: let sed open its own files
t4014: use test_line_count() where possible
t4014: remove confusing pipe in check_threading()
t4014: stop losing return codes of git commands
Doc: add more detail for git-format-patch
config/format.txt: specify default value of format.coverLetter
t: use common $SQ variable
completion: teach rebase to use __gitcomp_builtin
completion: teach archive to use __gitcomp_builtin
git-submodule.txt: fix AsciiDoc formatting error
Makefile: strip leading ./ in $(LIB_H)
Makefile: define THIRD_PARTY_SOURCES
Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
Makefile: run coccicheck on more source files
gitk: rename zh_CN.po to zh_cn.po
promisor-remote.h: drop extern from function declaration
apply.h: include missing header
promisor-remote.h: include missing header
pack-bitmap.h: remove magic number
Makefile: emulate compile in $(HCO) target better
test-lib: let test_merge() perform octopus merges
t4214: use test_merge
t4214: generate expect in their own test cases
t4214: explicitly list tags in log
t4214: demonstrate octopus graph coloring failure
git-rev-list.txt: prune options in synopsis
t4014: treat rev-list output as the expected value
t0000: cover GIT_SKIP_TESTS blindspots
pthread.h: manually align parameter lists
Makefile: respect $(V) in %.cocci.patch target
t7419: change test_must_fail to ! for grep
Derrick Stolee (17):
repo-settings: consolidate some config settings
t6501: use 'git gc' in quiet mode
commit-graph: turn on commit-graph by default
repo-settings: parse core.untrackedCache
repo-settings: create feature.manyFiles setting
repo-settings: create feature.experimental setting
merge-recursive: introduce an enum for detect_directory_renames values
checkout: add simple check for 'git checkout -b'
fetch: add fetch.writeCommitGraph config setting
treewide: rename 'struct exclude' to 'struct path_pattern'
treewide: rename 'struct exclude_list' to 'struct pattern_list'
treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'
treewide: rename 'exclude' methods to 'pattern'
unpack-trees: rename 'is_excluded_from_list()'
repo-settings: read an int for index.version
t5510-fetch.sh: demonstrate fetch.writeCommitGraph bug
commit-graph: fix writing first commit-graph during fetch
Elijah Newren (55):
git-fast-import.txt: clarify that multiple merge commits are allowed
checkout: remove duplicate code
merge-recursive: be consistent with assert
checkout: provide better conflict hunk description with detached HEAD
merge-recursive: enforce opt->ancestor != NULL when calling merge_trees()
merge-recursive: provide a better label for diff3 common ancestor
merge-recursive: future-proof update_file_flags() against memory leaks
merge-recursive: remove another implicit dependency on the_repository
Ensure index matches head before invoking merge machinery, round N
merge-recursive: exit early if index != head
merge-recursive: remove useless parameter in merge_trees()
merge-recursive: don't force external callers to do our logging
cache-tree: share code between functions writing an index as a tree
merge-recursive: fix some overly long lines
merge-recursive: use common name for ancestors/common/base_list
merge-recursive: rename 'mrtree' to 'result_tree', for clarity
merge-recursive: rename merge_options argument to opt in header
merge-recursive: move some definitions around to clean up the header
merge-recursive: consolidate unnecessary fields in merge_options
merge-recursive: comment and reorder the merge_options fields
merge-recursive: avoid losing output and leaking memory holding that output
merge-recursive: split internal fields into a separate struct
merge-recursive: rename MERGE_RECURSIVE_* to MERGE_VARIANT_*
merge-recursive: add sanity checks for relevant merge_options
merge-recursive: alphabetize include list
merge-options.txt: clarify meaning of various ff-related options
t3427: accelerate this test by using fast-export and fast-import
t6006: simplify, fix, and optimize empty message test
Recommend git-filter-repo instead of git-filter-branch
t9902: use a non-deprecated command for testing
t7300: add testcases showing failure to clean specified pathspecs
dir: fix typo in comment
dir: fix off-by-one error in match_pathspec_item
dir: also check directories for matching pathspecs
dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
dir: if our pathspec might match files under a dir, recurse into it
dir: add commentary explaining match_pathspec_item's return value
git-clean.txt: do not claim we will delete files with -n/--dry-run
clean: disambiguate the definition of -d
clean: avoid removing untracked files in a nested git repository
clean: rewrap overly long line
clean: fix theoretical path corruption
fast-export: fix exporting a tag and nothing else
dir: special case check for the possibility that pathspec is NULL
merge-recursive: fix the diff3 common ancestor label for virtual commits
fast-import: fix handling of deleted tags
fast-import: allow tags to be identified by mark labels
fast-import: add support for new 'alias' command
fast-export: add support for --import-marks-if-exists
fast-export: allow user to request tags be marked with --mark-tags
t9350: add tests for tags of things other than a commit
fast-export: handle nested tags
merge-recursive: fix the fix to the diff3 common ancestor label
RelNotes/2.24.0: typofix
RelNotes/2.24.0: fix self-contradictory note
Emily Shaffer (1):
promisor-remote: skip move_to_tail when no-op
Eric Wong (20):
diff: use hashmap_entry_init on moved_entry.ent
coccicheck: detect hashmap_entry.hash assignment
packfile: use hashmap_entry in delta_base_cache_entry
hashmap_entry_init takes "struct hashmap_entry *"
hashmap_get_next takes "const struct hashmap_entry *"
hashmap_add takes "struct hashmap_entry *"
hashmap_get takes "const struct hashmap_entry *"
hashmap_remove takes "const struct hashmap_entry *"
hashmap_put takes "struct hashmap_entry *"
introduce container_of macro
hashmap_get_next returns "struct hashmap_entry *"
hashmap: use *_entry APIs to wrap container_of
hashmap_get{,_from_hash} return "struct hashmap_entry *"
hashmap_cmp_fn takes hashmap_entry params
hashmap: use *_entry APIs for iteration
hashmap: hashmap_{put,remove} return hashmap_entry *
hashmap: introduce hashmap_free_entries
OFFSETOF_VAR macro to simplify hashmap iterators
hashmap: remove type arg from hashmap_{get,put,remove}_entry
hashmap_entry: remove first member requirement from docs
Gabriele Mazzotta (1):
gitk: Do not mistake unchanged lines for submodule changes
Garima Singh (3):
commit-graph: add --[no-]progress to write and verify
commit-graph: emit trace2 cmd_mode for each sub-command
sq_quote_buf_pretty: don't drop empty arguments
Hervé Beraud (1):
hg-to-git: make it compatible with both python3 and python2
Jakob Jarmar (1):
stash: avoid recursive hard reset on submodules
Jean-Noël Avila (2):
l10n: fr 2.24.0 rnd 1
l10n: fr v2.24.0 rnd2
Jeff Hostetler (7):
trace2: cleanup column alignment in perf target format
trace2: trim whitespace in region messages in perf target format
trace2: remove dead code in maybe_add_string_va()
trace2: trim trailing whitespace in normal format error message
quote: add sq_append_quote_argv_pretty()
trace2: cleanup whitespace in normal format
trace2: cleanup whitespace in perf format
Jeff King (32):
setup_traverse_info(): stop copying oid
tree-walk: drop oid from traverse_info
tree-walk: use size_t consistently
tree-walk: accept a raw length for traverse_path_len()
tree-walk: add a strbuf wrapper for make_traverse_path()
tree-walk: harden make_traverse_path() length computations
revision: allow --end-of-options to end option parsing
parse-options: allow --end-of-options as a synonym for "--"
gitcli: document --end-of-options
t1309: use short branch name in includeIf.onbranch test
common-main: delay trace2 initialization
config: stop checking whether the_repository is NULL
t/perf: rename duplicate-numbered test script
packfile: drop release_pack_memory()
notes: avoid potential use-after-free during insertion
fast-import: duplicate parsed encoding string
fast-import: duplicate into history rather than passing ownership
git-am: handle missing "author" when parsing commit
pack-objects: use object_id in packlist_alloc()
bulk-checkin: zero-initialize hashfile_checkpoint
diff-delta: set size out-parameter to 0 for NULL delta
test-read-cache: drop namelen variable
pack-objects: drop packlist index_pos optimization
commit-graph: turn off save_commit_buffer
list-objects: don't queue root trees unless revs->tree_objects is set
commit-graph: bump DIE_ON_LOAD check to actual load-time
upload-pack: disable commit graph more gently for shallow traversal
list-objects-filter: delay parsing of sparse oid
list-objects-filter: use empty string instead of NULL for sparse "base"
git_mkstemps_mode(): replace magic numbers with computed value
add a Code of Conduct document
CODE_OF_CONDUCT: mention individual project-leader emails
Jiang Xin (3):
l10n: git.pot: v2.24.0 round 1 (35 new, 16 removed)
l10n: git.pot: v2.24.0 round 2 (1 new)
l10n: zh_CN: for git v2.24.0 l10n round 1~2
Johannes Schindelin (46):
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
t3427: add a clarifying comment
t3427: simplify the `setup` test case significantly
t3427: move the `filter-branch` invocation into the `setup` case
t3427: condense the unnecessarily repetitive test cases into three
t3427: fix erroneous assumption
t3427: accommodate for the `rebase --merge` backend having been replaced
t3427: fix another incorrect assumption
rebase -r: support merge strategies other than `recursive`
t/lib-rebase: prepare for testing `git rebase --rebase-merges`
t3418: test `rebase -r` with merge strategies
rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
setup_git_directory(): handle UNC paths correctly
Fix .git/ discovery at the root of UNC shares
setup_git_directory(): handle UNC root paths correctly
.gitignore: stop ignoring `.manifest` files
Fix build with core.autocrlf=true
Move git_sort(), a stable sort, into into libgit.a
diffcore_rename(): use a stable sort
ci: run `hdr-check` as part of the `Static Analysis` job
range-diff: internally force `diff.noprefix=true`
push: do not pretend to return `int` from `die_push_simple()`
fetch: let --jobs=<n> parallelize --multiple, too
stash apply: report status correctly even in a worktree's subdirectory
msvc: avoid using minus operator on unsigned types
winansi: use FLEX_ARRAY to avoid compiler warning
compat/win32/path-utils.h: add #include guards
msvc: ignore some libraries when linking
msvc: handle DEVELOPER=1
msvc: work around a bug in GetEnvironmentVariable()
vcxproj: only copy `git-remote-http.exe` once it was built
vcxproj: include more generated files
test-tool run-command: learn to run (parts of) the testsuite
tests: let --immediate and --write-junit-xml play well together
ci: really use shallow clones on Azure Pipelines
ci: also build and test with MS Visual Studio on Azure Pipelines
xdiffi: fix typos and touch up comments
doc(stash): clarify the description of `save`
ci(visual-studio): use strict compile flags, and optimization
ci(visual-studio): actually run the tests in parallel
ci(osx): use new location of the `perforce` cask
mingw: avoid a buffer overrun in `needs_hiding()`
Johannes Sixt (2):
diff, log doc: say "patch text" instead of "patches"
diff, log doc: small grammer, format, and language fixes
Jon Simons (2):
t5616: test cloning/fetching with sparse:oid=<oid> filter
list-objects-filter: give a more specific error sparse parsing error
Jonathan Tan (7):
diff: skip GITLINK when lazy fetching missing objs
transport-helper: skip ls-refs if unnecessary
transport: teach all vtables to allow fetch first
cache-tree: do not lazy-fetch tentative tree
merge-recursive: symlink's descendants not in way
send-pack: never fetch when checking exclusions
fetch: delay fetch_if_missing=0 until after config
Jordi Mas (1):
l10n: Update Catalan translation
Josh Steadmon (7):
t7503: verify proper hook execution
fetch: add trace2 instrumentation
push: add trace2 instrumentation
docs: mention trace2 target-dir mode in git-config
docs: clarify trace2 version invariants
trace2: discard new traces if target directory has too many files
trace2: write discard message to sentinel files
Junio C Hamano (18):
First batch after Git 2.23
t: use LF variable defined in the test harness
t3005: remove unused variable
Second batch
Third batch
SubmittingPatches: git-gui has a new maintainer
Fourth batch
Fifth batch
Sixth batch
transport: push codepath can take arbitrary repository
Seventh batch
Eighth batch
Ninth batch
Git 2.24-rc0
Eleventh batch
Git 2.24-rc1
Git 2.24-rc2
Git 2.24
Kunal Tyagi (1):
add -i: show progress counter in the prompt
Martin Ågren (16):
Documentation: wrap blocks with "--"
git-merge-base.txt: render indentations correctly under Asciidoctor
Documentation: wrap config listings in "----"
git-ls-remote.txt: wrap shell listing in "----"
git-receive-pack.txt: wrap shell [script] listing in "----"
git-merge-index.txt: wrap shell listing in "----"
gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
Doc/Makefile: give mansource/-version/-manual attributes
asciidoctor-extensions: provide `<refmiscinfo/>`
doc-diff: replace --cut-header-footer with --cut-footer
treewide: correct several "up-to-date" to "up to date"
user-manual.txt: add missing section label
user-manual.txt: change header notation
asciidoctor-extensions.rb: handle "book" doctype in linkgit
user-manual.txt: render ASCII art correctly under Asciidoctor
manpage-bold-literal.xsl: match for namespaced "d:literal" in template
Masaya Suzuki (1):
fetch: use oidset to keep the want OIDs for faster lookup
Matheus Tavares (1):
grep: fix worktree case in submodules
Matthew DeVore (10):
list-objects-filter: encapsulate filter components
list-objects-filter: put omits set in filter struct
list-objects-filter-options: always supply *errbuf
list-objects-filter: implement composite filters
list-objects-filter-options: move error check up
list-objects-filter-options: make filter_spec a string_list
strbuf: give URL-encoding API a char predicate fn
list-objects-filter-options: allow mult. --filter
list-objects-filter-options: clean up use of ALLOC_GROW
list-objects-filter-options: make parser void
Matthias Rüster (1):
l10n: de.po: Update German translation
Max Rothman (1):
completion: add missing completions for log, diff, show
Maxim Belsky (1):
completion: clarify installation instruction for zsh
Michael J Gruber (3):
merge: do no-verify like commit
git-merge: honor pre-merge-commit hook
merge: --no-verify to bypass pre-merge-commit hook
Mike Hommey (3):
notes: avoid leaking duplicate entries
commit: free the right buffer in release_commit_memory
http: don't leak urlmatch_config.vars
Mischa POSLAWSKY (1):
ref-filter: initialize empty name or email fields
Norman Rasmussen (1):
diff-highlight: fix a whitespace nit
Paul Mackerras (1):
gitk: Make web links clickable
Paul Wise (1):
gitk: Use right colour for remote refs in the "Tags and heads" dialog
Pedro Sousa (1):
doc: MyFirstContribution: fix cmd placement instructions
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (4674t0f0u)
l10n: sv.po: Update Swedish translation (4695t0f0u)
Philip.McGraw (1):
git-p4: auto-delete named temporary file
Phillip Wood (3):
rebase -i: always update HEAD before rewording
rebase -i: check for updated todo after squash and reword
sequencer: simplify root commit creation
Pratyush Yadav (7):
git-gui: call do_quit before destroying the main window
git-gui: allow reverting selected lines
git-gui: allow reverting selected hunk
git-gui: return early when patch fails to apply
git-gui: allow undoing last revert
Documentation: update the location of the git-gui repo
git-gui: add a readme
René Scharfe (28):
nedmalloc: do assignments only after the declaration section
nedmalloc: avoid compiler warning about unused value
archive-tar: report wrong pax extended header length
archive-tar: fix pax extended header length calculation
archive-tar: use size_t in strbuf_append_ext_header()
archive-tar: turn length miscalculation warning into BUG
parseopt: move definition of enum parse_opt_result up
sha1-name: make sort_ambiguous_oid_array() thread-safe
log-tree: always use return value of strbuf_detach()
grep: use return value of strbuf_detach()
trace2: use warning() directly in tr2_dst_malformed_warning()
help: make help_unknown_ref() NORETURN
tree: simplify parse_tree_indirect()
tag: factor out get_tagged_oid()
use get_tagged_oid()
log: test --decorate-refs-exclude with --simplify-by-decoration
log-tree: call load_ref_decorations() in get_name_decoration()
rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
sha1-name: check for overflow of N in "foo^N" and "foo~N"
commit-graph: use commit_list_count()
sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
treewide: remove duplicate #include directives
convert: fix handling of dashless UTF prefix in validate_encoding()
tests: remove "cat foo" before "test_i18ngrep bar foo"
http-push: simplify deleting a list item
column: use utf8_strnwidth() to strip out ANSI color escapes
remote-curl: use argv_array in parse_push()
Robert Luberda (1):
gitweb: correctly store previous rev in javascript-actions mode
SZEDER Gábor (35):
t5510-fetch: fix negated 'test_i18ngrep' invocation
t5510-fetch: run non-httpd-specific test before sourcing 'lib-httpd.sh'
t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh'
t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd'
t5318-commit-graph: use 'test_expect_code'
commit-graph: turn a group of write-related macro flags into an enum
commit-graph: error out on invalid commit oids in 'write --stdin-commits'
t0000-basic: use realistic test script names in the verbose tests
tests: show the test name and number at the start of verbose output
completion: fix a typo in a comment
completion: complete more values of more 'color.*' configuration variables
completion: add tests for 'git config' completion
completion: deduplicate configuration sections
completion: use 'sort -u' to deduplicate config variable names
completion: simplify inner 'case' pattern in __gitcomp()
completion: split _git_config()
completion: complete configuration sections and variable names for 'git -c'
completion: complete values of configuration variables after 'git -c var='
completion: complete config variables names and values for 'git clone -c'
completion: complete config variables and values for 'git clone --config='
worktree remove: clarify error message on dirty worktree
diff: 'diff.indentHeuristic' is no longer experimental
line-log: extract pathspec parsing from line ranges into a helper function
line-log: avoid unnecessary full tree diffs
t7300-clean: demonstrate deleting nested repo with an ignored file breakage
t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests
ci: restore running httpd tests
commit-graph: don't show progress percentages while expanding reachable commits
Revert "progress: use term_clear_line()"
Test the progress display
t/helper: ignore only executable files
travis-ci: do not skip successfully tested trees in debug mode
name-rev: avoid cutoff timestamp underflow
test-progress: fix test failures on big-endian systems
ci: fix GCC install in the Travis CI GCC OSX job
Stephen Boyd (2):
userdiff: add a builtin pattern for dts files
userdiff: fix some corner cases in dts regex
Stephen P. Smith (2):
Quit passing 'now' to date code
test_date.c: remove reference to GIT_TEST_DATE_NOW
Sun Chao (1):
pack-refs: always refresh after taking the lock file
Tanay Abhra (1):
t1308-config-set: fix a test that has a typo
Taylor Blau (4):
banned.h: fix vsprintf()'s ban message
t/t5318: introduce failing 'git commit-graph write' tests
commit-graph.c: handle commit parsing errors
commit-graph.c: handle corrupt/missing trees
Thomas Gummerer (6):
t0021: make sure clean filter runs
push: disallow --all and refspecs when remote.<name>.mirror is set
factor out refresh_and_write_cache function
merge: use refresh_and_write_cache
stash: make sure to write refreshed cache
range-diff: don't segfault with mode-only changes
Thomas Klaeger (1):
git-gui (Windows): use git-bash.exe if it is available
Tobias Klauser (1):
git-svn: trim leading and trailing whitespaces in author name
Torsten Bögershausen (1):
mingw: support UNC in git clone file://server/share/repo
Trần Ngọc Quân (1):
l10n: vi(4694t): Updated translation for v2.24.0
Varun Naik (2):
checkout.c: unstage empty deleted ita files
restore: add test for deleted ita files
William Baker (2):
fsmonitor: don't fill bitmap with entries to be removed
t7519-status-fsmonitor: improve comments
YanKe (1):
gitk: Add Chinese (zh_CN) translation
brian m. carlson (44):
builtin/replace: make hash size independent
patch-id: convert to use the_hash_algo
fetch-pack: use parse_oid_hex
builtin/receive-pack: switch to use the_hash_algo
builtin/blame: switch uses of GIT_SHA1_HEXSZ to the_hash_algo
builtin/rev-parse: switch to use the_hash_algo
blame: remove needless comparison with GIT_SHA1_HEXSZ
show-index: switch hard-coded constants to the_hash_algo
connected: switch GIT_SHA1_HEXSZ to the_hash_algo
bundle: switch to use the_hash_algo
combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
config: use the_hash_algo in abbrev comparison
sha1-lookup: switch hard-coded constants to the_hash_algo
bisect: switch to using the_hash_algo
sequencer: convert to use the_hash_algo
pack-write: use hash_to_hex when writing checksums
builtin/repack: write object IDs of the proper length
builtin/worktree: switch null_sha1 to null_oid
cache: remove null_sha1
wt-status: convert struct wt_status to object_id
packfile: replace sha1_to_hex
builtin/index-pack: replace sha1_to_hex
builtin/receive-pack: replace sha1_to_hex
rerere: replace sha1_to_hex
builtin/show-index: replace sha1_to_hex
midx: switch to using the_hash_algo
t3201: abstract away SHA-1-specific constants
t3206: abstract away hash size constants
t3301: abstract away SHA-1-specific constants
t3305: make hash size independent
t3306: abstract away SHA-1-specific constants
t3404: abstract away SHA-1-specific constants
t3430: avoid hard-coded object IDs
t3506: make hash independent
t3600: make hash size independent
t3800: make hash-size independent
t3903: abstract away SHA-1-specific constants
t4000: make hash size independent
t4002: make hash independent
t4009: make hash size independent
path: add a function to check for path suffix
am: reload .gitattributes after patching it
Documentation: fix build with Asciidoctor 2
remote-curl: pass on atomic capability to remote side
kdnakt (1):
git-gui: improve Japanese translation
Ævar Arnfjörð Bjarmason (20):
log tests: test regex backends in "--encode=<enc>" tests
grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
t4210: skip more command-line encoding tests on MinGW
grep: inline the return value of a function call used only once
grep tests: move "grep binary" alongside the rest
grep tests: move binary pattern tests into their own file
grep: make the behavior for NUL-byte in patterns sane
grep: drop support for \0 in --fixed-strings <pattern>
grep: remove the kwset optimization
grep: use PCRE v2 for optimized fixed-string search
grep: remove overly paranoid BUG(...) code
grep: stop "using" a custom JIT stack with PCRE v2
grep: stop using a custom JIT stack with PCRE v1
grep: consistently use "p->fixed" in compile_regexp()
grep: create a "is_fixed" member in "grep_pat"
grep: stess test PCRE v2 on invalid UTF-8 data
grep: do not enter PCRE2_UTF mode on fixed matching
t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
t3432: test for --no-ff's interaction with fast-forward
rebase tests: test linear branch topology
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.24.0-rc2
@ 2019-10-30 7:14 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-10-30 7:14 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.24.0-rc2 is now available for testing
at the usual places. It is comprised of 515 non-merge commits
since v2.23.0, contributed by 67 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.24.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.23.0 are as follows.
Welcome to the Git development community!
Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
Steffen, CB Bailey, Garima Singh, Hervé Beraud, Jakob Jarmar,
Kunal Tyagi, Maxim Belsky, Max Rothman, Norman Rasmussen, Paul
Wise, Pedro Sousa, Philip.McGraw, Pratyush Yadav, William Baker,
and YanKe.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Roben, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrey Mazo,
Beat Bolli, Ben Wijen, Bert Wesarg, Birger Skogeng Pedersen,
brian m. carlson, Carlo Marcelo Arenas Belón, Christian
Couder, Clément Chigot, Corentin BOMPARD, David Turner,
Denton Liu, Derrick Stolee, Elijah Newren, Emily Shaffer,
Eric Wong, Gabriele Mazzotta, Jeff Hostetler, Jeff King,
Johannes Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons,
Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
Matheus Tavares, Matthew DeVore, Michael J Gruber, Mike Hommey,
Mischa POSLAWSKY, Paul Mackerras, Phillip Wood, René Scharfe,
Robert Luberda, Stephen Boyd, Stephen P. Smith, Sun Chao,
SZEDER Gábor, Tanay Abhra, Taylor Blau, Thomas Gummerer,
Tobias Klauser, Torsten Bögershausen, and Varun Naik.
----------------------------------------------------------------
Git 2.24 Release Notes (draft)
==============================
Updates since v2.23
-------------------
Backward compatibility note
* Although it is not officially deprecated, "filter-branch" is
showing its age and alternatives are available. From this release,
we started to discourage its uses and hint people about
filter-repo.
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
input as non-options, has been to use "--" as the delimiter, but
that would not work for commands that use "--" as a delimiter
between revs and pathspec.
* A mechanism to affect the default setting for a (related) group of
configuration variables is introduced.
* "git fetch" learned "--set-upstream" option to help those who first
clone from their private fork they intend to push to, add the true
upstream via "git remote add" and then "git fetch" from it.
* 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.
* The documentation and tests for "git format-patch" have been
cleaned up.
* On Windows, the root level of UNC share is now allowed to be used
just like any other directory.
* The command line completion support (in contrib/) learned about the
"--skip" option of "git revert" and "git cherry-pick".
* "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.
* A configuration variable tells "git fetch" to write the commit
graph after finishing.
* "git add -i" has been taught to show the total number of hunks and
the hunks that has been processed so far when showing prompts.
* "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
submodules, but this did not apply to "git fetch --multiple" that
fetches from multiple remote repositories. It now does.
* The installation instruction for zsh completion script (in
contrib/) has been a bit improved.
Performance, Internal Implementation, Development Support etc.
* The code to write commit-graph over given commit object names has
been made a bit more robust.
* The first line of verbose output from each test piece now carries
the test name and number to help scanning with eyeballs.
* 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.
* Preparation for SHA-256 upgrade continues in the test department.
(merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).
* The memory ownership model of the "git fast-import" got
straightened out.
* Output from trace2 subsystem is formatted more prettily now.
* The internal code originally invented for ".gitignore" processing
got reshuffled and renamed to make it less tied to "excluding" and
stress more that it is about "matching", as it has been reused for
things like sparse checkout specification that want to check if a
path is "included".
* "git stash" learned to write refreshed index back to disk.
* Coccinelle checks are done on more source files than before now.
* The cache-tree code has been taught to be less aggressive in
attempting to see if a tree object it computed already exists in
the repository.
* The code to parse and use the commit-graph file has been made more
robust against corrupted input.
* The hg-to-git script (in contrib/) has been updated to work with
Python 3.
* Update the way build artifacts in t/helper/ directory are ignored.
* Preparation for SHA-256 upgrade continues.
* "git log --graph" for an octopus merge is sometimes colored
incorrectly, which is demonstrated and documented but not yet
fixed.
* The trace2 output, when sending them to files in a designated
directory, can populate the directory with too many files; a
mechanism is introduced to set the maximum number of files and
discard further logs when the maximum is reached.
* We have adopted a Code-of-conduct document.
(merge 3f9ef874a7 jk/coc later to maint).
Fixes since v2.23
-----------------
* "git grep --recurse-submodules" that looks at the working tree
files looked at the contents in the index in submodules, instead of
files in the working tree.
(merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).
* Codepaths to walk tree objects have been audited for integer
overflows and hardened.
(merge 5aa02f9868 jk/tree-walk-overflow later to maint).
* "git pack-refs" can lose refs that are created while running, which
is getting corrected.
(merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).
* "git checkout" and "git restore" to re-populate the index from a
tree-ish (typically HEAD) did not work correctly for a path that
was removed and then added again with the intent-to-add bit, when
the corresponding working tree file was empty. This has been
corrected.
* Compilation fix.
(merge 70597e8386 rs/nedalloc-fixlets later to maint).
* "git gui" learned to call the clean-up procedure before exiting.
(merge 0d88f3d2c5 py/git-gui-do-quit later to maint).
* We promoted the "indent heuristics" that decides where to split
diff hunks from experimental to the default a few years ago, but
some stale documentation still marked it as experimental, which has
been corrected.
(merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).
* Fix a mismerge that happened in 2.22 timeframe.
(merge acb7da05ac en/checkout-mismerge-fix later to maint).
* "git archive" recorded incorrect length in extended pax header in
some corner cases, which has been corrected.
(merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).
* On-demand object fetching in lazy clone incorrectly tried to fetch
commits from submodule projects, while still working in the
superproject, which has been corrected.
(merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).
* Prepare get_short_oid() codepath to be thread-safe.
(merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).
* "for-each-ref" and friends that show refs did not protect themselves
against ancient tags that did not record tagger names when asked to
show "%(taggername)", which have been corrected.
(merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).
* The "git am" based backend of "git rebase" ignored the result of
updating ".gitattributes" done in one step when replaying
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).
* Build fix to adjust .gitignore to unignore a path that we started to track.
(merge aac6ff7b5b js/visual-studio later to maint).
* A few implementation fixes in the notes API.
(merge 60fe477a0b mh/notes-duplicate-entries later to maint).
* Fix an earlier regression to "git push --all" which should have
been forbidden when the target remote repository is set to be a
mirror.
(merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).
* Fix an earlier regression in the test suite, which mistakenly
stopped running HTTPD tests.
(merge 3960290675 sg/git-test-boolean later to maint).
* "git rebase --autostash <upstream> <branch>", when <branch> is
different from the current branch, incorrectly moved the tip of the
current branch, which has been corrected.
(merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).
* Update support for Asciidoctor documentation toolchain.
(merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).
* Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
no longer works with the older one.
(merge f6461b82b9 bc/doc-use-docbook-5 later to maint).
* The markup used in user-manual has been updated to work better with
asciidoctor.
(merge c4d2f6143a ma/user-manual-markup-update later to maint).
* Make sure the grep machinery does not abort when seeing a payload
that is not UTF-8 even when JIT is not in use with PCRE1.
(merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).
* The name of the blob object that stores the filter specification
for sparse cloning/fetching was interpreted in a wrong place in the
code, causing Git to abort.
* "git log --decorate-refs-exclude=<pattern>" was incorrectly
overruled when the "--simplify-by-decoration" option is used, which
has been corrected.
(merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).
* The "upload-pack" (the counterpart of "git fetch") needs to disable
commit-graph when responding to a shallow clone/fetch request, but
the way this was done made Git panic, which has been corrected.
* The object traversal machinery has been optimized not to load tree
objects when we are only interested in commit history.
(merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).
* The object name parser for "Nth parent" syntax has been made more
robust against integer overflows.
(merge 59fa5f5a25 rs/nth-parent-parse later to maint).
* The code used in following tags in "git fetch" has been optimized.
(merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).
* Regression fix for progress output.
(merge 2bb74b53a4 sg/progress-fix later to maint).
* A bug in merge-recursive code that triggers when a branch with a
symbolic link is merged with a branch that replaces it with a
directory has been fixed.
(merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).
* The rename detection logic sorts a list of rename source candidates
by similarity to pick the best candidate, which means that a tie
between sources with the same similarity is broken by the original
location in the original candidate list (which is sorted by path).
Force the sorting by similarity done with a stable sort, which is
not promised by system supplied qsort(3), to ensure consistent
results across platforms.
(merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).
* The code to skip "UTF" and "UTF-" prefix, when computing an advice
message, did not work correctly when the prefix was "UTF", which
has been fixed.
(merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).
* The author names taken from SVN repositories may have extra leading
or trailing whitespaces, which are now munged away.
(merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).
* "git rebase -i" showed a wrong HEAD while "reword" open the editor.
(merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).
* A few simplification and bugfixes to PCRE interface.
(merge c581e4a749 ab/pcre-jit-fixes later to maint).
* PCRE fixes.
(merge ff61681b46 cb/pcre1-cleanup later to maint).
* "git range-diff" segfaulted when diff.noprefix configuration was
used, as it blindly expected the patch it internally generates to
have the standard a/ and b/ prefixes. The command now forces the
internal patch to be built without any prefix, not to be affected
by any end-user configuration.
(merge 937b76ed49 js/range-diff-noprefix later to maint).
* "git stash apply" in a subdirectory of a secondary worktree failed
to access the worktree correctly, which has been corrected.
(merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).
* The merge-recursive machiery is one of the most complex parts of
the system that accumulated cruft over time. This large series
cleans up the implementation quite a bit.
(merge b657047719 en/merge-recursive-cleanup later to maint).
* Pretty-printed command line formatter (used in e.g. reporting the
command being run by the tracing API) had a bug that lost an
argument that is an empty string, which has been corrected.
(merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).
* "git range-diff" failed to handle mode-only change, which has been
corrected.
(merge 2b6a9b13ca tg/range-diff-output-update later to maint).
* Dev support update.
(merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).
* "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
not "mkdir -p <outdir>", which was corrected.
* "git stash save" lost local changes to submodules, which has been
corrected.
(merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).
* The atomic push over smart HTTP transport did not work, which has
been corrected.
(merge 6f1194246a bc/smart-http-atomic-push 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).
(merge 415b770b88 ds/midx-expire-repack later to maint).
(merge 19800bdc3f nd/diff-parseopt later to maint).
(merge 58166c2e9d tg/t0021-racefix later to maint).
(merge 7027f508c7 dl/compat-cleanup later to maint).
(merge e770fbfeff jc/test-cleanup later to maint).
(merge 1fd881d404 rs/trace2-dst-warning later to maint).
(merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
(merge 9784f97321 mh/release-commit-memory-fix later to maint).
(merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
(merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
(merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
(merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
(merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
(merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
(merge 47b27c96fa ss/get-time-cleanup later to maint).
(merge dd2e50a84e jk/commit-graph-cleanup later to maint).
(merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
(merge 40e747e89d dl/submodule-set-branch later to maint).
(merge 689a146c91 rs/commit-graph-use-list-count later to maint).
(merge 0eb7c37a8a js/doc-patch-text later to maint).
(merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
(merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
(merge af78249463 cc/svn-fe-py-shebang later to maint).
(merge 7bd97d6dff rs/alias-use-copy-array later to maint).
(merge c46ebc2496 sg/travis-help-debug later to maint).
(merge 24c681794f ps/my-first-contribution-alphasort later to maint).
(merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
(merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
(merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
(merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
(merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
(merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
(merge 53d687bf5f ah/cleanups later to maint).
(merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
(merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
(merge d928a8388a am/t0028-utf16-tests later to maint).
(merge b05b40930e dl/t0000-skip-test-test later to maint).
(merge 03d3b1297c js/xdiffi-comment-updates later to maint).
(merge 57d8f4b4c7 js/doc-stash-save later to maint).
(merge 8c1cfd58e3 ta/t1308-typofix later to maint).
(merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
(merge 68b69211b2 bb/compat-util-comment-fix later to maint).
(merge 5cc6a4be11 rs/http-push-simplify later to maint).
(merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
(merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
(merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint).
(merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint).
(merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint).
(merge 60e6569a12 js/mingw-needs-hiding-fix later to maint).
(merge 52bd3e4657 rl/gitweb-blame-prev-fix later to maint).
----------------------------------------------------------------
Changes since v2.23.0 are as follows:
Adam Roben (1):
mingw: fix launching of externals from Unicode paths
Alex Henrie (4):
doc: fix reference to --ignore-submodules
commit-graph: remove a duplicate assignment
diffcore-break: use a goto instead of a redundant if statement
wrapper: use a loop instead of repetitive statements
Alexandr Miloslavskiy (4):
contrib/buildsystems: fix Visual Studio Debug configuration
t0028: fix test for UTF-16-LE-BOM
t0028: add more tests
t0061: fix test for argv[0] with spaces (MINGW only)
Ali Utku Selen (1):
shallow.c: don't free unallocated slabs
Andrey Mazo (1):
.mailmap: update email address of Andrey Mazo
Beat Bolli (3):
grep: under --debug, show whether PCRE JIT is enabled
utf8: use ARRAY_SIZE() in git_wcwidth()
git-compat-util: fix documentation syntax
Ben Milman (1):
repository-layout.txt: correct pluralization of 'object'
Ben Wijen (2):
builtin/rebase.c: make sure the active branch isn't moved when autostashing
builtin/rebase.c: Remove pointless message
Bert Wesarg (5):
git-gui: convert new/amend commit radiobutton to checkbutton
git-gui: add horizontal scrollbar to commit buffer
builtin/submodule--helper: fix usage string for 'update-clone'
format-patch: create leading components of output directory
t4014: make output-directory tests self-contained
Birger Skogeng Pedersen (2):
git-gui: add hotkeys to set widget focus
git-gui: add hotkey to toggle "Amend Last Commit"
CB Bailey (1):
t4038: Remove non-portable '-a' option passed to test_cmp
Cameron Steffen (1):
doc: minor formatting fix
Carlo Marcelo Arenas Belón (7):
http: use xmalloc with cURL
grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1
grep: refactor and simplify PCRE1 support
grep: skip UTF8 checks explicitly
grep: make PCRE1 aware of custom allocator
grep: make PCRE2 aware of custom allocator
grep: avoid leak of chartables in PCRE2
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
Clément Chigot (1):
contrib/svn-fe: fix shebang for svnrdump_sim.py
Corentin BOMPARD (1):
pull, fetch: add --set-upstream option
David Turner (1):
clarify documentation for remote helpers
Denton Liu (50):
packfile.h: drop extern from function declaration
t4014: drop unnecessary blank lines from test cases
t3431: add rebase --fork-point tests
t3432: test rebase fast-forward behavior
completion: merge options for cherry-pick and revert
completion: add --skip for cherry-pick and revert
status: mention --skip for revert and cherry-pick
rebase: refactor can_fast_forward into goto tower
rebase: fast-forward --onto in more cases
rebase: fast-forward --fork-point in more cases
rebase: teach rebase --keep-base
mingw: apply array.cocci rule
compat/*.[ch]: remove extern from function declarations using spatch
t4014: s/expected/expect/
t4014: move closing sq onto its own line
t4014: use sq for test case names
t4014: remove spaces after redirect operators
t4014: use indentable here-docs
t4014: drop redirections to /dev/null
t4014: let sed open its own files
t4014: use test_line_count() where possible
t4014: remove confusing pipe in check_threading()
t4014: stop losing return codes of git commands
Doc: add more detail for git-format-patch
config/format.txt: specify default value of format.coverLetter
t: use common $SQ variable
completion: teach rebase to use __gitcomp_builtin
completion: teach archive to use __gitcomp_builtin
git-submodule.txt: fix AsciiDoc formatting error
Makefile: strip leading ./ in $(LIB_H)
Makefile: define THIRD_PARTY_SOURCES
Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
Makefile: run coccicheck on more source files
gitk: rename zh_CN.po to zh_cn.po
promisor-remote.h: drop extern from function declaration
apply.h: include missing header
promisor-remote.h: include missing header
pack-bitmap.h: remove magic number
Makefile: emulate compile in $(HCO) target better
test-lib: let test_merge() perform octopus merges
t4214: use test_merge
t4214: generate expect in their own test cases
t4214: explicitly list tags in log
t4214: demonstrate octopus graph coloring failure
git-rev-list.txt: prune options in synopsis
t4014: treat rev-list output as the expected value
t0000: cover GIT_SKIP_TESTS blindspots
pthread.h: manually align parameter lists
Makefile: respect $(V) in %.cocci.patch target
t7419: change test_must_fail to ! for grep
Derrick Stolee (15):
repo-settings: consolidate some config settings
t6501: use 'git gc' in quiet mode
commit-graph: turn on commit-graph by default
repo-settings: parse core.untrackedCache
repo-settings: create feature.manyFiles setting
repo-settings: create feature.experimental setting
merge-recursive: introduce an enum for detect_directory_renames values
checkout: add simple check for 'git checkout -b'
fetch: add fetch.writeCommitGraph config setting
treewide: rename 'struct exclude' to 'struct path_pattern'
treewide: rename 'struct exclude_list' to 'struct pattern_list'
treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'
treewide: rename 'exclude' methods to 'pattern'
unpack-trees: rename 'is_excluded_from_list()'
repo-settings: read an int for index.version
Elijah Newren (53):
git-fast-import.txt: clarify that multiple merge commits are allowed
checkout: remove duplicate code
merge-recursive: be consistent with assert
checkout: provide better conflict hunk description with detached HEAD
merge-recursive: enforce opt->ancestor != NULL when calling merge_trees()
merge-recursive: provide a better label for diff3 common ancestor
merge-recursive: future-proof update_file_flags() against memory leaks
merge-recursive: remove another implicit dependency on the_repository
Ensure index matches head before invoking merge machinery, round N
merge-recursive: exit early if index != head
merge-recursive: remove useless parameter in merge_trees()
merge-recursive: don't force external callers to do our logging
cache-tree: share code between functions writing an index as a tree
merge-recursive: fix some overly long lines
merge-recursive: use common name for ancestors/common/base_list
merge-recursive: rename 'mrtree' to 'result_tree', for clarity
merge-recursive: rename merge_options argument to opt in header
merge-recursive: move some definitions around to clean up the header
merge-recursive: consolidate unnecessary fields in merge_options
merge-recursive: comment and reorder the merge_options fields
merge-recursive: avoid losing output and leaking memory holding that output
merge-recursive: split internal fields into a separate struct
merge-recursive: rename MERGE_RECURSIVE_* to MERGE_VARIANT_*
merge-recursive: add sanity checks for relevant merge_options
merge-recursive: alphabetize include list
merge-options.txt: clarify meaning of various ff-related options
t3427: accelerate this test by using fast-export and fast-import
t6006: simplify, fix, and optimize empty message test
Recommend git-filter-repo instead of git-filter-branch
t9902: use a non-deprecated command for testing
t7300: add testcases showing failure to clean specified pathspecs
dir: fix typo in comment
dir: fix off-by-one error in match_pathspec_item
dir: also check directories for matching pathspecs
dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
dir: if our pathspec might match files under a dir, recurse into it
dir: add commentary explaining match_pathspec_item's return value
git-clean.txt: do not claim we will delete files with -n/--dry-run
clean: disambiguate the definition of -d
clean: avoid removing untracked files in a nested git repository
clean: rewrap overly long line
clean: fix theoretical path corruption
fast-export: fix exporting a tag and nothing else
dir: special case check for the possibility that pathspec is NULL
merge-recursive: fix the diff3 common ancestor label for virtual commits
fast-import: fix handling of deleted tags
fast-import: allow tags to be identified by mark labels
fast-import: add support for new 'alias' command
fast-export: add support for --import-marks-if-exists
fast-export: allow user to request tags be marked with --mark-tags
t9350: add tests for tags of things other than a commit
fast-export: handle nested tags
merge-recursive: fix the fix to the diff3 common ancestor label
Emily Shaffer (1):
promisor-remote: skip move_to_tail when no-op
Eric Wong (20):
diff: use hashmap_entry_init on moved_entry.ent
coccicheck: detect hashmap_entry.hash assignment
packfile: use hashmap_entry in delta_base_cache_entry
hashmap_entry_init takes "struct hashmap_entry *"
hashmap_get_next takes "const struct hashmap_entry *"
hashmap_add takes "struct hashmap_entry *"
hashmap_get takes "const struct hashmap_entry *"
hashmap_remove takes "const struct hashmap_entry *"
hashmap_put takes "struct hashmap_entry *"
introduce container_of macro
hashmap_get_next returns "struct hashmap_entry *"
hashmap: use *_entry APIs to wrap container_of
hashmap_get{,_from_hash} return "struct hashmap_entry *"
hashmap_cmp_fn takes hashmap_entry params
hashmap: use *_entry APIs for iteration
hashmap: hashmap_{put,remove} return hashmap_entry *
hashmap: introduce hashmap_free_entries
OFFSETOF_VAR macro to simplify hashmap iterators
hashmap: remove type arg from hashmap_{get,put,remove}_entry
hashmap_entry: remove first member requirement from docs
Gabriele Mazzotta (1):
gitk: Do not mistake unchanged lines for submodule changes
Garima Singh (3):
commit-graph: add --[no-]progress to write and verify
commit-graph: emit trace2 cmd_mode for each sub-command
sq_quote_buf_pretty: don't drop empty arguments
Hervé Beraud (1):
hg-to-git: make it compatible with both python3 and python2
Jakob Jarmar (1):
stash: avoid recursive hard reset on submodules
Jeff Hostetler (7):
trace2: cleanup column alignment in perf target format
trace2: trim whitespace in region messages in perf target format
trace2: remove dead code in maybe_add_string_va()
trace2: trim trailing whitespace in normal format error message
quote: add sq_append_quote_argv_pretty()
trace2: cleanup whitespace in normal format
trace2: cleanup whitespace in perf format
Jeff King (32):
setup_traverse_info(): stop copying oid
tree-walk: drop oid from traverse_info
tree-walk: use size_t consistently
tree-walk: accept a raw length for traverse_path_len()
tree-walk: add a strbuf wrapper for make_traverse_path()
tree-walk: harden make_traverse_path() length computations
revision: allow --end-of-options to end option parsing
parse-options: allow --end-of-options as a synonym for "--"
gitcli: document --end-of-options
t1309: use short branch name in includeIf.onbranch test
common-main: delay trace2 initialization
config: stop checking whether the_repository is NULL
t/perf: rename duplicate-numbered test script
packfile: drop release_pack_memory()
notes: avoid potential use-after-free during insertion
fast-import: duplicate parsed encoding string
fast-import: duplicate into history rather than passing ownership
git-am: handle missing "author" when parsing commit
pack-objects: use object_id in packlist_alloc()
bulk-checkin: zero-initialize hashfile_checkpoint
diff-delta: set size out-parameter to 0 for NULL delta
test-read-cache: drop namelen variable
pack-objects: drop packlist index_pos optimization
commit-graph: turn off save_commit_buffer
list-objects: don't queue root trees unless revs->tree_objects is set
commit-graph: bump DIE_ON_LOAD check to actual load-time
upload-pack: disable commit graph more gently for shallow traversal
list-objects-filter: delay parsing of sparse oid
list-objects-filter: use empty string instead of NULL for sparse "base"
git_mkstemps_mode(): replace magic numbers with computed value
add a Code of Conduct document
CODE_OF_CONDUCT: mention individual project-leader emails
Johannes Schindelin (45):
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
t3427: add a clarifying comment
t3427: simplify the `setup` test case significantly
t3427: move the `filter-branch` invocation into the `setup` case
t3427: condense the unnecessarily repetitive test cases into three
t3427: fix erroneous assumption
t3427: accommodate for the `rebase --merge` backend having been replaced
t3427: fix another incorrect assumption
rebase -r: support merge strategies other than `recursive`
t/lib-rebase: prepare for testing `git rebase --rebase-merges`
t3418: test `rebase -r` with merge strategies
rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
setup_git_directory(): handle UNC paths correctly
Fix .git/ discovery at the root of UNC shares
setup_git_directory(): handle UNC root paths correctly
.gitignore: stop ignoring `.manifest` files
Move git_sort(), a stable sort, into into libgit.a
diffcore_rename(): use a stable sort
ci: run `hdr-check` as part of the `Static Analysis` job
range-diff: internally force `diff.noprefix=true`
push: do not pretend to return `int` from `die_push_simple()`
fetch: let --jobs=<n> parallelize --multiple, too
stash apply: report status correctly even in a worktree's subdirectory
msvc: avoid using minus operator on unsigned types
winansi: use FLEX_ARRAY to avoid compiler warning
compat/win32/path-utils.h: add #include guards
msvc: ignore some libraries when linking
msvc: handle DEVELOPER=1
msvc: work around a bug in GetEnvironmentVariable()
vcxproj: only copy `git-remote-http.exe` once it was built
vcxproj: include more generated files
test-tool run-command: learn to run (parts of) the testsuite
tests: let --immediate and --write-junit-xml play well together
ci: really use shallow clones on Azure Pipelines
ci: also build and test with MS Visual Studio on Azure Pipelines
xdiffi: fix typos and touch up comments
doc(stash): clarify the description of `save`
ci(visual-studio): use strict compile flags, and optimization
ci(visual-studio): actually run the tests in parallel
ci(osx): use new location of the `perforce` cask
mingw: avoid a buffer overrun in `needs_hiding()`
Johannes Sixt (2):
diff, log doc: say "patch text" instead of "patches"
diff, log doc: small grammer, format, and language fixes
Jon Simons (2):
t5616: test cloning/fetching with sparse:oid=<oid> filter
list-objects-filter: give a more specific error sparse parsing error
Jonathan Tan (6):
diff: skip GITLINK when lazy fetching missing objs
transport-helper: skip ls-refs if unnecessary
transport: teach all vtables to allow fetch first
cache-tree: do not lazy-fetch tentative tree
merge-recursive: symlink's descendants not in way
send-pack: never fetch when checking exclusions
Josh Steadmon (7):
t7503: verify proper hook execution
fetch: add trace2 instrumentation
push: add trace2 instrumentation
docs: mention trace2 target-dir mode in git-config
docs: clarify trace2 version invariants
trace2: discard new traces if target directory has too many files
trace2: write discard message to sentinel files
Junio C Hamano (17):
First batch after Git 2.23
t: use LF variable defined in the test harness
t3005: remove unused variable
Second batch
Third batch
SubmittingPatches: git-gui has a new maintainer
Fourth batch
Fifth batch
Sixth batch
transport: push codepath can take arbitrary repository
Seventh batch
Eighth batch
Ninth batch
Git 2.24-rc0
Eleventh batch
Git 2.24-rc1
Git 2.24-rc2
Kunal Tyagi (1):
add -i: show progress counter in the prompt
Martin Ågren (14):
Documentation: wrap blocks with "--"
git-merge-base.txt: render indentations correctly under Asciidoctor
Documentation: wrap config listings in "----"
git-ls-remote.txt: wrap shell listing in "----"
git-receive-pack.txt: wrap shell [script] listing in "----"
git-merge-index.txt: wrap shell listing in "----"
gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
Doc/Makefile: give mansource/-version/-manual attributes
asciidoctor-extensions: provide `<refmiscinfo/>`
doc-diff: replace --cut-header-footer with --cut-footer
user-manual.txt: add missing section label
user-manual.txt: change header notation
asciidoctor-extensions.rb: handle "book" doctype in linkgit
user-manual.txt: render ASCII art correctly under Asciidoctor
Masaya Suzuki (1):
fetch: use oidset to keep the want OIDs for faster lookup
Matheus Tavares (1):
grep: fix worktree case in submodules
Matthew DeVore (10):
list-objects-filter: encapsulate filter components
list-objects-filter: put omits set in filter struct
list-objects-filter-options: always supply *errbuf
list-objects-filter: implement composite filters
list-objects-filter-options: move error check up
list-objects-filter-options: make filter_spec a string_list
strbuf: give URL-encoding API a char predicate fn
list-objects-filter-options: allow mult. --filter
list-objects-filter-options: clean up use of ALLOC_GROW
list-objects-filter-options: make parser void
Max Rothman (1):
completion: add missing completions for log, diff, show
Maxim Belsky (1):
completion: clarify installation instruction for zsh
Michael J Gruber (3):
merge: do no-verify like commit
git-merge: honor pre-merge-commit hook
merge: --no-verify to bypass pre-merge-commit hook
Mike Hommey (3):
notes: avoid leaking duplicate entries
commit: free the right buffer in release_commit_memory
http: don't leak urlmatch_config.vars
Mischa POSLAWSKY (1):
ref-filter: initialize empty name or email fields
Norman Rasmussen (1):
diff-highlight: fix a whitespace nit
Paul Mackerras (1):
gitk: Make web links clickable
Paul Wise (1):
gitk: Use right colour for remote refs in the "Tags and heads" dialog
Pedro Sousa (1):
doc: MyFirstContribution: fix cmd placement instructions
Philip.McGraw (1):
git-p4: auto-delete named temporary file
Phillip Wood (3):
rebase -i: always update HEAD before rewording
rebase -i: check for updated todo after squash and reword
sequencer: simplify root commit creation
Pratyush Yadav (6):
git-gui: call do_quit before destroying the main window
git-gui: allow reverting selected lines
git-gui: allow reverting selected hunk
git-gui: return early when patch fails to apply
git-gui: allow undoing last revert
Documentation: update the location of the git-gui repo
René Scharfe (28):
nedmalloc: do assignments only after the declaration section
nedmalloc: avoid compiler warning about unused value
archive-tar: report wrong pax extended header length
archive-tar: fix pax extended header length calculation
archive-tar: use size_t in strbuf_append_ext_header()
archive-tar: turn length miscalculation warning into BUG
parseopt: move definition of enum parse_opt_result up
sha1-name: make sort_ambiguous_oid_array() thread-safe
log-tree: always use return value of strbuf_detach()
grep: use return value of strbuf_detach()
trace2: use warning() directly in tr2_dst_malformed_warning()
help: make help_unknown_ref() NORETURN
tree: simplify parse_tree_indirect()
tag: factor out get_tagged_oid()
use get_tagged_oid()
log: test --decorate-refs-exclude with --simplify-by-decoration
log-tree: call load_ref_decorations() in get_name_decoration()
rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
sha1-name: check for overflow of N in "foo^N" and "foo~N"
commit-graph: use commit_list_count()
sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
treewide: remove duplicate #include directives
convert: fix handling of dashless UTF prefix in validate_encoding()
tests: remove "cat foo" before "test_i18ngrep bar foo"
http-push: simplify deleting a list item
column: use utf8_strnwidth() to strip out ANSI color escapes
remote-curl: use argv_array in parse_push()
Robert Luberda (1):
gitweb: correctly store previous rev in javascript-actions mode
SZEDER Gábor (35):
t5510-fetch: fix negated 'test_i18ngrep' invocation
t5510-fetch: run non-httpd-specific test before sourcing 'lib-httpd.sh'
t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh'
t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd'
t5318-commit-graph: use 'test_expect_code'
commit-graph: turn a group of write-related macro flags into an enum
commit-graph: error out on invalid commit oids in 'write --stdin-commits'
t0000-basic: use realistic test script names in the verbose tests
tests: show the test name and number at the start of verbose output
completion: fix a typo in a comment
completion: complete more values of more 'color.*' configuration variables
completion: add tests for 'git config' completion
completion: deduplicate configuration sections
completion: use 'sort -u' to deduplicate config variable names
completion: simplify inner 'case' pattern in __gitcomp()
completion: split _git_config()
completion: complete configuration sections and variable names for 'git -c'
completion: complete values of configuration variables after 'git -c var='
completion: complete config variables names and values for 'git clone -c'
completion: complete config variables and values for 'git clone --config='
worktree remove: clarify error message on dirty worktree
diff: 'diff.indentHeuristic' is no longer experimental
line-log: extract pathspec parsing from line ranges into a helper function
line-log: avoid unnecessary full tree diffs
t7300-clean: demonstrate deleting nested repo with an ignored file breakage
t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests
ci: restore running httpd tests
commit-graph: don't show progress percentages while expanding reachable commits
Revert "progress: use term_clear_line()"
Test the progress display
t/helper: ignore only executable files
travis-ci: do not skip successfully tested trees in debug mode
name-rev: avoid cutoff timestamp underflow
test-progress: fix test failures on big-endian systems
ci: fix GCC install in the Travis CI GCC OSX job
Stephen Boyd (2):
userdiff: add a builtin pattern for dts files
userdiff: fix some corner cases in dts regex
Stephen P. Smith (2):
Quit passing 'now' to date code
test_date.c: remove reference to GIT_TEST_DATE_NOW
Sun Chao (1):
pack-refs: always refresh after taking the lock file
Tanay Abhra (1):
t1308-config-set: fix a test that has a typo
Taylor Blau (4):
banned.h: fix vsprintf()'s ban message
t/t5318: introduce failing 'git commit-graph write' tests
commit-graph.c: handle commit parsing errors
commit-graph.c: handle corrupt/missing trees
Thomas Gummerer (6):
t0021: make sure clean filter runs
push: disallow --all and refspecs when remote.<name>.mirror is set
factor out refresh_and_write_cache function
merge: use refresh_and_write_cache
stash: make sure to write refreshed cache
range-diff: don't segfault with mode-only changes
Tobias Klauser (1):
git-svn: trim leading and trailing whitespaces in author name
Torsten Bögershausen (1):
mingw: support UNC in git clone file://server/share/repo
Varun Naik (2):
checkout.c: unstage empty deleted ita files
restore: add test for deleted ita files
William Baker (2):
fsmonitor: don't fill bitmap with entries to be removed
t7519-status-fsmonitor: improve comments
YanKe (1):
gitk: Add Chinese (zh_CN) translation
brian m. carlson (44):
builtin/replace: make hash size independent
patch-id: convert to use the_hash_algo
fetch-pack: use parse_oid_hex
builtin/receive-pack: switch to use the_hash_algo
builtin/blame: switch uses of GIT_SHA1_HEXSZ to the_hash_algo
builtin/rev-parse: switch to use the_hash_algo
blame: remove needless comparison with GIT_SHA1_HEXSZ
show-index: switch hard-coded constants to the_hash_algo
connected: switch GIT_SHA1_HEXSZ to the_hash_algo
bundle: switch to use the_hash_algo
combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
config: use the_hash_algo in abbrev comparison
sha1-lookup: switch hard-coded constants to the_hash_algo
bisect: switch to using the_hash_algo
sequencer: convert to use the_hash_algo
pack-write: use hash_to_hex when writing checksums
builtin/repack: write object IDs of the proper length
builtin/worktree: switch null_sha1 to null_oid
cache: remove null_sha1
wt-status: convert struct wt_status to object_id
packfile: replace sha1_to_hex
builtin/index-pack: replace sha1_to_hex
builtin/receive-pack: replace sha1_to_hex
rerere: replace sha1_to_hex
builtin/show-index: replace sha1_to_hex
midx: switch to using the_hash_algo
t3201: abstract away SHA-1-specific constants
t3206: abstract away hash size constants
t3301: abstract away SHA-1-specific constants
t3305: make hash size independent
t3306: abstract away SHA-1-specific constants
t3404: abstract away SHA-1-specific constants
t3430: avoid hard-coded object IDs
t3506: make hash independent
t3600: make hash size independent
t3800: make hash-size independent
t3903: abstract away SHA-1-specific constants
t4000: make hash size independent
t4002: make hash independent
t4009: make hash size independent
path: add a function to check for path suffix
am: reload .gitattributes after patching it
Documentation: fix build with Asciidoctor 2
remote-curl: pass on atomic capability to remote side
Ævar Arnfjörð Bjarmason (20):
log tests: test regex backends in "--encode=<enc>" tests
grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
t4210: skip more command-line encoding tests on MinGW
grep: inline the return value of a function call used only once
grep tests: move "grep binary" alongside the rest
grep tests: move binary pattern tests into their own file
grep: make the behavior for NUL-byte in patterns sane
grep: drop support for \0 in --fixed-strings <pattern>
grep: remove the kwset optimization
grep: use PCRE v2 for optimized fixed-string search
grep: remove overly paranoid BUG(...) code
grep: stop "using" a custom JIT stack with PCRE v2
grep: stop using a custom JIT stack with PCRE v1
grep: consistently use "p->fixed" in compile_regexp()
grep: create a "is_fixed" member in "grep_pat"
grep: stess test PCRE v2 on invalid UTF-8 data
grep: do not enter PCRE2_UTF mode on fixed matching
t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
t3432: test for --no-ff's interaction with fast-forward
rebase tests: test linear branch topology
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.24.0-rc1
@ 2019-10-24 6:00 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-10-24 6:00 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.24.0-rc1 is now available for testing
at the usual places. It is comprised of 511 non-merge commits
since v2.23.0, contributed by 66 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.24.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.23.0 are as follows.
Welcome to the Git development community!
Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
Steffen, CB Bailey, Garima Singh, Hervé Beraud, Jakob Jarmar,
Kunal Tyagi, Maxim Belsky, Max Rothman, Norman Rasmussen, Paul
Wise, Pedro Sousa, Philip.McGraw, Pratyush Yadav, William Baker,
and YanKe.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Roben, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrey Mazo,
Beat Bolli, Ben Wijen, Bert Wesarg, Birger Skogeng Pedersen,
brian m. carlson, Carlo Marcelo Arenas Belón, Christian
Couder, Clément Chigot, Corentin BOMPARD, David Turner,
Denton Liu, Derrick Stolee, Elijah Newren, Emily Shaffer,
Eric Wong, Gabriele Mazzotta, Jeff Hostetler, Jeff King,
Johannes Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons,
Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
Matheus Tavares, Matthew DeVore, Michael J Gruber, Mike Hommey,
Mischa POSLAWSKY, Paul Mackerras, Phillip Wood, René Scharfe,
Stephen Boyd, Stephen P. Smith, Sun Chao, SZEDER Gábor,
Tanay Abhra, Taylor Blau, Thomas Gummerer, Tobias Klauser,
Torsten Bögershausen, and Varun Naik.
----------------------------------------------------------------
Git 2.24 Release Notes (draft)
==============================
Updates since v2.23
-------------------
Backward compatibility note
* Although it is not officially deprecated, "filter-branch" is
showing its age and alternatives are available. From this release,
we started to discourage its uses and hint people about
filter-repo.
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
input as non-options, has been to use "--" as the delimiter, but
that would not work for commands that use "--" as a delimiter
between revs and pathspec.
* A mechanism to affect the default setting for a (related) group of
configuration variables is introduced.
* "git fetch" learned "--set-upstream" option to help those who first
clone from their private fork they intend to push to, add the true
upstream via "git remote add" and then "git fetch" from it.
* 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.
* The documentation and tests for "git format-patch" have been
cleaned up.
* On Windows, the root level of UNC share is now allowed to be used
just like any other directory.
* The command line completion support (in contrib/) learned about the
"--skip" option of "git revert" and "git cherry-pick".
* "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.
* A configuration variable tells "git fetch" to write the commit
graph after finishing.
* "git add -i" has been taught to show the total number of hunks and
the hunks that has been processed so far when showing prompts.
* "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
submodules, but this did not apply to "git fetch --multiple" that
fetches from multiple remote repositories. It now does.
* The installation instruction for zsh completion script (in
contrib/) has been a bit improved.
Performance, Internal Implementation, Development Support etc.
* The code to write commit-graph over given commit object names has
been made a bit more robust.
* The first line of verbose output from each test piece now carries
the test name and number to help scanning with eyeballs.
* 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.
* Preparation for SHA-256 upgrade continues in the test department.
(merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).
* The memory ownership model of the "git fast-import" got
straightened out.
* Output from trace2 subsystem is formatted more prettily now.
* The internal code originally invented for ".gitignore" processing
got reshuffled and renamed to make it less tied to "excluding" and
stress more that it is about "matching", as it has been reused for
things like sparse checkout specification that want to check if a
path is "included".
* "git stash" learned to write refreshed index back to disk.
* Coccinelle checks are done on more source files than before now.
* The cache-tree code has been taught to be less aggressive in
attempting to see if a tree object it computed already exists in
the repository.
* The code to parse and use the commit-graph file has been made more
robust against corrupted input.
* The hg-to-git script (in contrib/) has been updated to work with
Python 3.
* Update the way build artifacts in t/helper/ directory are ignored.
* Preparation for SHA-256 upgrade continues.
* "git log --graph" for an octopus merge is sometimes colored
incorrectly, which is demonstrated and documented but not yet
fixed.
* The trace2 output, when sending them to files in a designated
directory, can populate the directory with too many files; a
mechanism is introduced to set the maximum number of files and
discard further logs when the maximum is reached.
* We have adopted a Code-of-conduct document.
(merge 3f9ef874a7 jk/coc later to maint).
Fixes since v2.23
-----------------
* "git grep --recurse-submodules" that looks at the working tree
files looked at the contents in the index in submodules, instead of
files in the working tree.
(merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).
* Codepaths to walk tree objects have been audited for integer
overflows and hardened.
(merge 5aa02f9868 jk/tree-walk-overflow later to maint).
* "git pack-refs" can lose refs that are created while running, which
is getting corrected.
(merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).
* "git checkout" and "git restore" to re-populate the index from a
tree-ish (typically HEAD) did not work correctly for a path that
was removed and then added again with the intent-to-add bit, when
the corresponding working tree file was empty. This has been
corrected.
* Compilation fix.
(merge 70597e8386 rs/nedalloc-fixlets later to maint).
* "git gui" learned to call the clean-up procedure before exiting.
(merge 0d88f3d2c5 py/git-gui-do-quit later to maint).
* We promoted the "indent heuristics" that decides where to split
diff hunks from experimental to the default a few years ago, but
some stale documentation still marked it as experimental, which has
been corrected.
(merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).
* Fix a mismerge that happened in 2.22 timeframe.
(merge acb7da05ac en/checkout-mismerge-fix later to maint).
* "git archive" recorded incorrect length in extended pax header in
some corner cases, which has been corrected.
(merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).
* On-demand object fetching in lazy clone incorrectly tried to fetch
commits from submodule projects, while still working in the
superproject, which has been corrected.
(merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).
* Prepare get_short_oid() codepath to be thread-safe.
(merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).
* "for-each-ref" and friends that show refs did not protect themselves
against ancient tags that did not record tagger names when asked to
show "%(taggername)", which have been corrected.
(merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).
* The "git am" based backend of "git rebase" ignored the result of
updating ".gitattributes" done in one step when replaying
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).
* Build fix to adjust .gitignore to unignore a path that we started to track.
(merge aac6ff7b5b js/visual-studio later to maint).
* A few implementation fixes in the notes API.
(merge 60fe477a0b mh/notes-duplicate-entries later to maint).
* Fix an earlier regression to "git push --all" which should have
been forbidden when the target remote repository is set to be a
mirror.
(merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).
* Fix an earlier regression in the test suite, which mistakenly
stopped running HTTPD tests.
(merge 3960290675 sg/git-test-boolean later to maint).
* "git rebase --autostash <upstream> <branch>", when <branch> is
different from the current branch, incorrectly moved the tip of the
current branch, which has been corrected.
(merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).
* Update support for Asciidoctor documentation toolchain.
(merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).
* Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
no longer works with the older one.
(merge f6461b82b9 bc/doc-use-docbook-5 later to maint).
* The markup used in user-manual has been updated to work better with
asciidoctor.
(merge c4d2f6143a ma/user-manual-markup-update later to maint).
* Make sure the grep machinery does not abort when seeing a payload
that is not UTF-8 even when JIT is not in use with PCRE1.
(merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).
* The name of the blob object that stores the filter specification
for sparse cloning/fetching was interpreted in a wrong place in the
code, causing Git to abort.
* "git log --decorate-refs-exclude=<pattern>" was incorrectly
overruled when the "--simplify-by-decoration" option is used, which
has been corrected.
(merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).
* The "upload-pack" (the counterpart of "git fetch") needs to disable
commit-graph when responding to a shallow clone/fetch request, but
the way this was done made Git panic, which has been corrected.
* The object traversal machinery has been optimized not to load tree
objects when we are only interested in commit history.
(merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).
* The object name parser for "Nth parent" syntax has been made more
robust against integer overflows.
(merge 59fa5f5a25 rs/nth-parent-parse later to maint).
* The code used in following tags in "git fetch" has been optimized.
(merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).
* Regression fix for progress output.
(merge 2bb74b53a4 sg/progress-fix later to maint).
* A bug in merge-recursive code that triggers when a branch with a
symbolic link is merged with a branch that replaces it with a
directory has been fixed.
(merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).
* The rename detection logic sorts a list of rename source candidates
by similarity to pick the best candidate, which means that a tie
between sources with the same similarity is broken by the original
location in the original candidate list (which is sorted by path).
Force the sorting by similarity done with a stable sort, which is
not promised by system supplied qsort(3), to ensure consistent
results across platforms.
(merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).
* The code to skip "UTF" and "UTF-" prefix, when computing an advice
message, did not work correctly when the prefix was "UTF", which
has been fixed.
(merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).
* The author names taken from SVN repositories may have extra leading
or trailing whitespaces, which are now munged away.
(merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).
* "git rebase -i" showed a wrong HEAD while "reword" open the editor.
(merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).
* A few simplification and bugfixes to PCRE interface.
(merge c581e4a749 ab/pcre-jit-fixes later to maint).
* PCRE fixes.
(merge ff61681b46 cb/pcre1-cleanup later to maint).
* "git range-diff" segfaulted when diff.noprefix configuration was
used, as it blindly expected the patch it internally generates to
have the standard a/ and b/ prefixes. The command now forces the
internal patch to be built without any prefix, not to be affected
by any end-user configuration.
(merge 937b76ed49 js/range-diff-noprefix later to maint).
* "git stash apply" in a subdirectory of a secondary worktree failed
to access the worktree correctly, which has been corrected.
(merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).
* The merge-recursive machiery is one of the most complex parts of
the system that accumulated cruft over time. This large series
cleans up the implementation quite a bit.
(merge b657047719 en/merge-recursive-cleanup later to maint).
* Pretty-printed command line formatter (used in e.g. reporting the
command being run by the tracing API) had a bug that lost an
argument that is an empty string, which has been corrected.
(merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).
* "git range-diff" failed to handle mode-only change, which has been
corrected.
(merge 2b6a9b13ca tg/range-diff-output-update later to maint).
* Dev support update.
(merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).
* "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
not "mkdir -p <outdir>", which was corrected.
* "git stash save" lost local changes to submodules, which has been
corrected.
(merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).
* The atomic push over smart HTTP transport did not work, which has
been corrected.
(merge 6f1194246a bc/smart-http-atomic-push 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).
(merge 415b770b88 ds/midx-expire-repack later to maint).
(merge 19800bdc3f nd/diff-parseopt later to maint).
(merge 58166c2e9d tg/t0021-racefix later to maint).
(merge 7027f508c7 dl/compat-cleanup later to maint).
(merge e770fbfeff jc/test-cleanup later to maint).
(merge 1fd881d404 rs/trace2-dst-warning later to maint).
(merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
(merge 9784f97321 mh/release-commit-memory-fix later to maint).
(merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
(merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
(merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
(merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
(merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
(merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
(merge 47b27c96fa ss/get-time-cleanup later to maint).
(merge dd2e50a84e jk/commit-graph-cleanup later to maint).
(merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
(merge 40e747e89d dl/submodule-set-branch later to maint).
(merge 689a146c91 rs/commit-graph-use-list-count later to maint).
(merge 0eb7c37a8a js/doc-patch-text later to maint).
(merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
(merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
(merge af78249463 cc/svn-fe-py-shebang later to maint).
(merge 7bd97d6dff rs/alias-use-copy-array later to maint).
(merge c46ebc2496 sg/travis-help-debug later to maint).
(merge 24c681794f ps/my-first-contribution-alphasort later to maint).
(merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
(merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
(merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
(merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
(merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
(merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
(merge 53d687bf5f ah/cleanups later to maint).
(merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
(merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
(merge d928a8388a am/t0028-utf16-tests later to maint).
(merge b05b40930e dl/t0000-skip-test-test later to maint).
(merge 03d3b1297c js/xdiffi-comment-updates later to maint).
(merge 57d8f4b4c7 js/doc-stash-save later to maint).
(merge 8c1cfd58e3 ta/t1308-typofix later to maint).
(merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
(merge 68b69211b2 bb/compat-util-comment-fix later to maint).
(merge 5cc6a4be11 rs/http-push-simplify later to maint).
(merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
(merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
(merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint).
(merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint).
(merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint).
----------------------------------------------------------------
Changes since v2.23.0 are as follows:
Adam Roben (1):
mingw: fix launching of externals from Unicode paths
Alex Henrie (4):
doc: fix reference to --ignore-submodules
commit-graph: remove a duplicate assignment
diffcore-break: use a goto instead of a redundant if statement
wrapper: use a loop instead of repetitive statements
Alexandr Miloslavskiy (4):
contrib/buildsystems: fix Visual Studio Debug configuration
t0028: fix test for UTF-16-LE-BOM
t0028: add more tests
t0061: fix test for argv[0] with spaces (MINGW only)
Ali Utku Selen (1):
shallow.c: don't free unallocated slabs
Andrey Mazo (1):
.mailmap: update email address of Andrey Mazo
Beat Bolli (3):
grep: under --debug, show whether PCRE JIT is enabled
utf8: use ARRAY_SIZE() in git_wcwidth()
git-compat-util: fix documentation syntax
Ben Milman (1):
repository-layout.txt: correct pluralization of 'object'
Ben Wijen (2):
builtin/rebase.c: make sure the active branch isn't moved when autostashing
builtin/rebase.c: Remove pointless message
Bert Wesarg (5):
git-gui: convert new/amend commit radiobutton to checkbutton
git-gui: add horizontal scrollbar to commit buffer
builtin/submodule--helper: fix usage string for 'update-clone'
format-patch: create leading components of output directory
t4014: make output-directory tests self-contained
Birger Skogeng Pedersen (2):
git-gui: add hotkeys to set widget focus
git-gui: add hotkey to toggle "Amend Last Commit"
CB Bailey (1):
t4038: Remove non-portable '-a' option passed to test_cmp
Cameron Steffen (1):
doc: minor formatting fix
Carlo Marcelo Arenas Belón (7):
http: use xmalloc with cURL
grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1
grep: refactor and simplify PCRE1 support
grep: skip UTF8 checks explicitly
grep: make PCRE1 aware of custom allocator
grep: make PCRE2 aware of custom allocator
grep: avoid leak of chartables in PCRE2
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
Clément Chigot (1):
contrib/svn-fe: fix shebang for svnrdump_sim.py
Corentin BOMPARD (1):
pull, fetch: add --set-upstream option
David Turner (1):
clarify documentation for remote helpers
Denton Liu (50):
packfile.h: drop extern from function declaration
t4014: drop unnecessary blank lines from test cases
t3431: add rebase --fork-point tests
t3432: test rebase fast-forward behavior
completion: merge options for cherry-pick and revert
completion: add --skip for cherry-pick and revert
status: mention --skip for revert and cherry-pick
rebase: refactor can_fast_forward into goto tower
rebase: fast-forward --onto in more cases
rebase: fast-forward --fork-point in more cases
rebase: teach rebase --keep-base
mingw: apply array.cocci rule
compat/*.[ch]: remove extern from function declarations using spatch
t4014: s/expected/expect/
t4014: move closing sq onto its own line
t4014: use sq for test case names
t4014: remove spaces after redirect operators
t4014: use indentable here-docs
t4014: drop redirections to /dev/null
t4014: let sed open its own files
t4014: use test_line_count() where possible
t4014: remove confusing pipe in check_threading()
t4014: stop losing return codes of git commands
Doc: add more detail for git-format-patch
config/format.txt: specify default value of format.coverLetter
t: use common $SQ variable
completion: teach rebase to use __gitcomp_builtin
completion: teach archive to use __gitcomp_builtin
git-submodule.txt: fix AsciiDoc formatting error
Makefile: strip leading ./ in $(LIB_H)
Makefile: define THIRD_PARTY_SOURCES
Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
Makefile: run coccicheck on more source files
gitk: rename zh_CN.po to zh_cn.po
promisor-remote.h: drop extern from function declaration
apply.h: include missing header
promisor-remote.h: include missing header
pack-bitmap.h: remove magic number
Makefile: emulate compile in $(HCO) target better
test-lib: let test_merge() perform octopus merges
t4214: use test_merge
t4214: generate expect in their own test cases
t4214: explicitly list tags in log
t4214: demonstrate octopus graph coloring failure
git-rev-list.txt: prune options in synopsis
t4014: treat rev-list output as the expected value
t0000: cover GIT_SKIP_TESTS blindspots
pthread.h: manually align parameter lists
Makefile: respect $(V) in %.cocci.patch target
t7419: change test_must_fail to ! for grep
Derrick Stolee (15):
repo-settings: consolidate some config settings
t6501: use 'git gc' in quiet mode
commit-graph: turn on commit-graph by default
repo-settings: parse core.untrackedCache
repo-settings: create feature.manyFiles setting
repo-settings: create feature.experimental setting
merge-recursive: introduce an enum for detect_directory_renames values
checkout: add simple check for 'git checkout -b'
fetch: add fetch.writeCommitGraph config setting
treewide: rename 'struct exclude' to 'struct path_pattern'
treewide: rename 'struct exclude_list' to 'struct pattern_list'
treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'
treewide: rename 'exclude' methods to 'pattern'
unpack-trees: rename 'is_excluded_from_list()'
repo-settings: read an int for index.version
Elijah Newren (53):
git-fast-import.txt: clarify that multiple merge commits are allowed
checkout: remove duplicate code
merge-recursive: be consistent with assert
checkout: provide better conflict hunk description with detached HEAD
merge-recursive: enforce opt->ancestor != NULL when calling merge_trees()
merge-recursive: provide a better label for diff3 common ancestor
merge-recursive: future-proof update_file_flags() against memory leaks
merge-recursive: remove another implicit dependency on the_repository
Ensure index matches head before invoking merge machinery, round N
merge-recursive: exit early if index != head
merge-recursive: remove useless parameter in merge_trees()
merge-recursive: don't force external callers to do our logging
cache-tree: share code between functions writing an index as a tree
merge-recursive: fix some overly long lines
merge-recursive: use common name for ancestors/common/base_list
merge-recursive: rename 'mrtree' to 'result_tree', for clarity
merge-recursive: rename merge_options argument to opt in header
merge-recursive: move some definitions around to clean up the header
merge-recursive: consolidate unnecessary fields in merge_options
merge-recursive: comment and reorder the merge_options fields
merge-recursive: avoid losing output and leaking memory holding that output
merge-recursive: split internal fields into a separate struct
merge-recursive: rename MERGE_RECURSIVE_* to MERGE_VARIANT_*
merge-recursive: add sanity checks for relevant merge_options
merge-recursive: alphabetize include list
merge-options.txt: clarify meaning of various ff-related options
t3427: accelerate this test by using fast-export and fast-import
t6006: simplify, fix, and optimize empty message test
Recommend git-filter-repo instead of git-filter-branch
t9902: use a non-deprecated command for testing
t7300: add testcases showing failure to clean specified pathspecs
dir: fix typo in comment
dir: fix off-by-one error in match_pathspec_item
dir: also check directories for matching pathspecs
dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
dir: if our pathspec might match files under a dir, recurse into it
dir: add commentary explaining match_pathspec_item's return value
git-clean.txt: do not claim we will delete files with -n/--dry-run
clean: disambiguate the definition of -d
clean: avoid removing untracked files in a nested git repository
clean: rewrap overly long line
clean: fix theoretical path corruption
fast-export: fix exporting a tag and nothing else
dir: special case check for the possibility that pathspec is NULL
merge-recursive: fix the diff3 common ancestor label for virtual commits
fast-import: fix handling of deleted tags
fast-import: allow tags to be identified by mark labels
fast-import: add support for new 'alias' command
fast-export: add support for --import-marks-if-exists
fast-export: allow user to request tags be marked with --mark-tags
t9350: add tests for tags of things other than a commit
fast-export: handle nested tags
merge-recursive: fix the fix to the diff3 common ancestor label
Emily Shaffer (1):
promisor-remote: skip move_to_tail when no-op
Eric Wong (20):
diff: use hashmap_entry_init on moved_entry.ent
coccicheck: detect hashmap_entry.hash assignment
packfile: use hashmap_entry in delta_base_cache_entry
hashmap_entry_init takes "struct hashmap_entry *"
hashmap_get_next takes "const struct hashmap_entry *"
hashmap_add takes "struct hashmap_entry *"
hashmap_get takes "const struct hashmap_entry *"
hashmap_remove takes "const struct hashmap_entry *"
hashmap_put takes "struct hashmap_entry *"
introduce container_of macro
hashmap_get_next returns "struct hashmap_entry *"
hashmap: use *_entry APIs to wrap container_of
hashmap_get{,_from_hash} return "struct hashmap_entry *"
hashmap_cmp_fn takes hashmap_entry params
hashmap: use *_entry APIs for iteration
hashmap: hashmap_{put,remove} return hashmap_entry *
hashmap: introduce hashmap_free_entries
OFFSETOF_VAR macro to simplify hashmap iterators
hashmap: remove type arg from hashmap_{get,put,remove}_entry
hashmap_entry: remove first member requirement from docs
Gabriele Mazzotta (1):
gitk: Do not mistake unchanged lines for submodule changes
Garima Singh (3):
commit-graph: add --[no-]progress to write and verify
commit-graph: emit trace2 cmd_mode for each sub-command
sq_quote_buf_pretty: don't drop empty arguments
Hervé Beraud (1):
hg-to-git: make it compatible with both python3 and python2
Jakob Jarmar (1):
stash: avoid recursive hard reset on submodules
Jeff Hostetler (7):
trace2: cleanup column alignment in perf target format
trace2: trim whitespace in region messages in perf target format
trace2: remove dead code in maybe_add_string_va()
trace2: trim trailing whitespace in normal format error message
quote: add sq_append_quote_argv_pretty()
trace2: cleanup whitespace in normal format
trace2: cleanup whitespace in perf format
Jeff King (32):
setup_traverse_info(): stop copying oid
tree-walk: drop oid from traverse_info
tree-walk: use size_t consistently
tree-walk: accept a raw length for traverse_path_len()
tree-walk: add a strbuf wrapper for make_traverse_path()
tree-walk: harden make_traverse_path() length computations
revision: allow --end-of-options to end option parsing
parse-options: allow --end-of-options as a synonym for "--"
gitcli: document --end-of-options
t1309: use short branch name in includeIf.onbranch test
common-main: delay trace2 initialization
config: stop checking whether the_repository is NULL
t/perf: rename duplicate-numbered test script
packfile: drop release_pack_memory()
notes: avoid potential use-after-free during insertion
fast-import: duplicate parsed encoding string
fast-import: duplicate into history rather than passing ownership
git-am: handle missing "author" when parsing commit
pack-objects: use object_id in packlist_alloc()
bulk-checkin: zero-initialize hashfile_checkpoint
diff-delta: set size out-parameter to 0 for NULL delta
test-read-cache: drop namelen variable
pack-objects: drop packlist index_pos optimization
commit-graph: turn off save_commit_buffer
list-objects: don't queue root trees unless revs->tree_objects is set
commit-graph: bump DIE_ON_LOAD check to actual load-time
upload-pack: disable commit graph more gently for shallow traversal
list-objects-filter: delay parsing of sparse oid
list-objects-filter: use empty string instead of NULL for sparse "base"
git_mkstemps_mode(): replace magic numbers with computed value
add a Code of Conduct document
CODE_OF_CONDUCT: mention individual project-leader emails
Johannes Schindelin (44):
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
t3427: add a clarifying comment
t3427: simplify the `setup` test case significantly
t3427: move the `filter-branch` invocation into the `setup` case
t3427: condense the unnecessarily repetitive test cases into three
t3427: fix erroneous assumption
t3427: accommodate for the `rebase --merge` backend having been replaced
t3427: fix another incorrect assumption
rebase -r: support merge strategies other than `recursive`
t/lib-rebase: prepare for testing `git rebase --rebase-merges`
t3418: test `rebase -r` with merge strategies
rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
setup_git_directory(): handle UNC paths correctly
Fix .git/ discovery at the root of UNC shares
setup_git_directory(): handle UNC root paths correctly
.gitignore: stop ignoring `.manifest` files
Move git_sort(), a stable sort, into into libgit.a
diffcore_rename(): use a stable sort
ci: run `hdr-check` as part of the `Static Analysis` job
range-diff: internally force `diff.noprefix=true`
push: do not pretend to return `int` from `die_push_simple()`
fetch: let --jobs=<n> parallelize --multiple, too
stash apply: report status correctly even in a worktree's subdirectory
msvc: avoid using minus operator on unsigned types
winansi: use FLEX_ARRAY to avoid compiler warning
compat/win32/path-utils.h: add #include guards
msvc: ignore some libraries when linking
msvc: handle DEVELOPER=1
msvc: work around a bug in GetEnvironmentVariable()
vcxproj: only copy `git-remote-http.exe` once it was built
vcxproj: include more generated files
test-tool run-command: learn to run (parts of) the testsuite
tests: let --immediate and --write-junit-xml play well together
ci: really use shallow clones on Azure Pipelines
ci: also build and test with MS Visual Studio on Azure Pipelines
xdiffi: fix typos and touch up comments
doc(stash): clarify the description of `save`
ci(visual-studio): use strict compile flags, and optimization
ci(visual-studio): actually run the tests in parallel
ci(osx): use new location of the `perforce` cask
Johannes Sixt (2):
diff, log doc: say "patch text" instead of "patches"
diff, log doc: small grammer, format, and language fixes
Jon Simons (2):
t5616: test cloning/fetching with sparse:oid=<oid> filter
list-objects-filter: give a more specific error sparse parsing error
Jonathan Tan (6):
diff: skip GITLINK when lazy fetching missing objs
transport-helper: skip ls-refs if unnecessary
transport: teach all vtables to allow fetch first
cache-tree: do not lazy-fetch tentative tree
merge-recursive: symlink's descendants not in way
send-pack: never fetch when checking exclusions
Josh Steadmon (7):
t7503: verify proper hook execution
fetch: add trace2 instrumentation
push: add trace2 instrumentation
docs: mention trace2 target-dir mode in git-config
docs: clarify trace2 version invariants
trace2: discard new traces if target directory has too many files
trace2: write discard message to sentinel files
Junio C Hamano (16):
First batch after Git 2.23
t: use LF variable defined in the test harness
t3005: remove unused variable
Second batch
Third batch
SubmittingPatches: git-gui has a new maintainer
Fourth batch
Fifth batch
Sixth batch
transport: push codepath can take arbitrary repository
Seventh batch
Eighth batch
Ninth batch
Git 2.24-rc0
Eleventh batch
Git 2.24-rc1
Kunal Tyagi (1):
add -i: show progress counter in the prompt
Martin Ågren (14):
Documentation: wrap blocks with "--"
git-merge-base.txt: render indentations correctly under Asciidoctor
Documentation: wrap config listings in "----"
git-ls-remote.txt: wrap shell listing in "----"
git-receive-pack.txt: wrap shell [script] listing in "----"
git-merge-index.txt: wrap shell listing in "----"
gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
Doc/Makefile: give mansource/-version/-manual attributes
asciidoctor-extensions: provide `<refmiscinfo/>`
doc-diff: replace --cut-header-footer with --cut-footer
user-manual.txt: add missing section label
user-manual.txt: change header notation
asciidoctor-extensions.rb: handle "book" doctype in linkgit
user-manual.txt: render ASCII art correctly under Asciidoctor
Masaya Suzuki (1):
fetch: use oidset to keep the want OIDs for faster lookup
Matheus Tavares (1):
grep: fix worktree case in submodules
Matthew DeVore (10):
list-objects-filter: encapsulate filter components
list-objects-filter: put omits set in filter struct
list-objects-filter-options: always supply *errbuf
list-objects-filter: implement composite filters
list-objects-filter-options: move error check up
list-objects-filter-options: make filter_spec a string_list
strbuf: give URL-encoding API a char predicate fn
list-objects-filter-options: allow mult. --filter
list-objects-filter-options: clean up use of ALLOC_GROW
list-objects-filter-options: make parser void
Max Rothman (1):
completion: add missing completions for log, diff, show
Maxim Belsky (1):
completion: clarify installation instruction for zsh
Michael J Gruber (3):
merge: do no-verify like commit
git-merge: honor pre-merge-commit hook
merge: --no-verify to bypass pre-merge-commit hook
Mike Hommey (3):
notes: avoid leaking duplicate entries
commit: free the right buffer in release_commit_memory
http: don't leak urlmatch_config.vars
Mischa POSLAWSKY (1):
ref-filter: initialize empty name or email fields
Norman Rasmussen (1):
diff-highlight: fix a whitespace nit
Paul Mackerras (1):
gitk: Make web links clickable
Paul Wise (1):
gitk: Use right colour for remote refs in the "Tags and heads" dialog
Pedro Sousa (1):
doc: MyFirstContribution: fix cmd placement instructions
Philip.McGraw (1):
git-p4: auto-delete named temporary file
Phillip Wood (3):
rebase -i: always update HEAD before rewording
rebase -i: check for updated todo after squash and reword
sequencer: simplify root commit creation
Pratyush Yadav (6):
git-gui: call do_quit before destroying the main window
git-gui: allow reverting selected lines
git-gui: allow reverting selected hunk
git-gui: return early when patch fails to apply
git-gui: allow undoing last revert
Documentation: update the location of the git-gui repo
René Scharfe (28):
nedmalloc: do assignments only after the declaration section
nedmalloc: avoid compiler warning about unused value
archive-tar: report wrong pax extended header length
archive-tar: fix pax extended header length calculation
archive-tar: use size_t in strbuf_append_ext_header()
archive-tar: turn length miscalculation warning into BUG
parseopt: move definition of enum parse_opt_result up
sha1-name: make sort_ambiguous_oid_array() thread-safe
log-tree: always use return value of strbuf_detach()
grep: use return value of strbuf_detach()
trace2: use warning() directly in tr2_dst_malformed_warning()
help: make help_unknown_ref() NORETURN
tree: simplify parse_tree_indirect()
tag: factor out get_tagged_oid()
use get_tagged_oid()
log: test --decorate-refs-exclude with --simplify-by-decoration
log-tree: call load_ref_decorations() in get_name_decoration()
rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
sha1-name: check for overflow of N in "foo^N" and "foo~N"
commit-graph: use commit_list_count()
sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
treewide: remove duplicate #include directives
convert: fix handling of dashless UTF prefix in validate_encoding()
tests: remove "cat foo" before "test_i18ngrep bar foo"
http-push: simplify deleting a list item
column: use utf8_strnwidth() to strip out ANSI color escapes
remote-curl: use argv_array in parse_push()
SZEDER Gábor (35):
t5510-fetch: fix negated 'test_i18ngrep' invocation
t5510-fetch: run non-httpd-specific test before sourcing 'lib-httpd.sh'
t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh'
t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd'
t5318-commit-graph: use 'test_expect_code'
commit-graph: turn a group of write-related macro flags into an enum
commit-graph: error out on invalid commit oids in 'write --stdin-commits'
t0000-basic: use realistic test script names in the verbose tests
tests: show the test name and number at the start of verbose output
completion: fix a typo in a comment
completion: complete more values of more 'color.*' configuration variables
completion: add tests for 'git config' completion
completion: deduplicate configuration sections
completion: use 'sort -u' to deduplicate config variable names
completion: simplify inner 'case' pattern in __gitcomp()
completion: split _git_config()
completion: complete configuration sections and variable names for 'git -c'
completion: complete values of configuration variables after 'git -c var='
completion: complete config variables names and values for 'git clone -c'
completion: complete config variables and values for 'git clone --config='
worktree remove: clarify error message on dirty worktree
diff: 'diff.indentHeuristic' is no longer experimental
line-log: extract pathspec parsing from line ranges into a helper function
line-log: avoid unnecessary full tree diffs
t7300-clean: demonstrate deleting nested repo with an ignored file breakage
t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests
ci: restore running httpd tests
commit-graph: don't show progress percentages while expanding reachable commits
Revert "progress: use term_clear_line()"
Test the progress display
t/helper: ignore only executable files
travis-ci: do not skip successfully tested trees in debug mode
name-rev: avoid cutoff timestamp underflow
test-progress: fix test failures on big-endian systems
ci: fix GCC install in the Travis CI GCC OSX job
Stephen Boyd (2):
userdiff: add a builtin pattern for dts files
userdiff: fix some corner cases in dts regex
Stephen P. Smith (2):
Quit passing 'now' to date code
test_date.c: remove reference to GIT_TEST_DATE_NOW
Sun Chao (1):
pack-refs: always refresh after taking the lock file
Tanay Abhra (1):
t1308-config-set: fix a test that has a typo
Taylor Blau (4):
banned.h: fix vsprintf()'s ban message
t/t5318: introduce failing 'git commit-graph write' tests
commit-graph.c: handle commit parsing errors
commit-graph.c: handle corrupt/missing trees
Thomas Gummerer (6):
t0021: make sure clean filter runs
push: disallow --all and refspecs when remote.<name>.mirror is set
factor out refresh_and_write_cache function
merge: use refresh_and_write_cache
stash: make sure to write refreshed cache
range-diff: don't segfault with mode-only changes
Tobias Klauser (1):
git-svn: trim leading and trailing whitespaces in author name
Torsten Bögershausen (1):
mingw: support UNC in git clone file://server/share/repo
Varun Naik (2):
checkout.c: unstage empty deleted ita files
restore: add test for deleted ita files
William Baker (1):
fsmonitor: don't fill bitmap with entries to be removed
YanKe (1):
gitk: Add Chinese (zh_CN) translation
brian m. carlson (44):
builtin/replace: make hash size independent
patch-id: convert to use the_hash_algo
fetch-pack: use parse_oid_hex
builtin/receive-pack: switch to use the_hash_algo
builtin/blame: switch uses of GIT_SHA1_HEXSZ to the_hash_algo
builtin/rev-parse: switch to use the_hash_algo
blame: remove needless comparison with GIT_SHA1_HEXSZ
show-index: switch hard-coded constants to the_hash_algo
connected: switch GIT_SHA1_HEXSZ to the_hash_algo
bundle: switch to use the_hash_algo
combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
config: use the_hash_algo in abbrev comparison
sha1-lookup: switch hard-coded constants to the_hash_algo
bisect: switch to using the_hash_algo
sequencer: convert to use the_hash_algo
pack-write: use hash_to_hex when writing checksums
builtin/repack: write object IDs of the proper length
builtin/worktree: switch null_sha1 to null_oid
cache: remove null_sha1
wt-status: convert struct wt_status to object_id
packfile: replace sha1_to_hex
builtin/index-pack: replace sha1_to_hex
builtin/receive-pack: replace sha1_to_hex
rerere: replace sha1_to_hex
builtin/show-index: replace sha1_to_hex
midx: switch to using the_hash_algo
t3201: abstract away SHA-1-specific constants
t3206: abstract away hash size constants
t3301: abstract away SHA-1-specific constants
t3305: make hash size independent
t3306: abstract away SHA-1-specific constants
t3404: abstract away SHA-1-specific constants
t3430: avoid hard-coded object IDs
t3506: make hash independent
t3600: make hash size independent
t3800: make hash-size independent
t3903: abstract away SHA-1-specific constants
t4000: make hash size independent
t4002: make hash independent
t4009: make hash size independent
path: add a function to check for path suffix
am: reload .gitattributes after patching it
Documentation: fix build with Asciidoctor 2
remote-curl: pass on atomic capability to remote side
Ævar Arnfjörð Bjarmason (20):
log tests: test regex backends in "--encode=<enc>" tests
grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
t4210: skip more command-line encoding tests on MinGW
grep: inline the return value of a function call used only once
grep tests: move "grep binary" alongside the rest
grep tests: move binary pattern tests into their own file
grep: make the behavior for NUL-byte in patterns sane
grep: drop support for \0 in --fixed-strings <pattern>
grep: remove the kwset optimization
grep: use PCRE v2 for optimized fixed-string search
grep: remove overly paranoid BUG(...) code
grep: stop "using" a custom JIT stack with PCRE v2
grep: stop using a custom JIT stack with PCRE v1
grep: consistently use "p->fixed" in compile_regexp()
grep: create a "is_fixed" member in "grep_pat"
grep: stess test PCRE v2 on invalid UTF-8 data
grep: do not enter PCRE2_UTF mode on fixed matching
t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
t3432: test for --no-ff's interaction with fast-forward
rebase tests: test linear branch topology
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.24.0-rc0
@ 2019-10-18 6:29 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2019-10-18 6:29 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.24.0-rc0 is now available for
testing at the usual places. It is comprised of 493 non-merge
commits since v2.23.0, contributed by 63 people, 15 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.24.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.23.0 are as follows.
Welcome to the Git development community!
Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
Steffen, CB Bailey, Garima Singh, Hervé Beraud, Jakob Jarmar,
Kunal Tyagi, Max Rothman, Paul Wise, Pedro Sousa, Philip.McGraw,
Pratyush Yadav, and YanKe.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Roben, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrey Mazo,
Beat Bolli, Ben Wijen, Bert Wesarg, Birger Skogeng Pedersen,
brian m. carlson, Carlo Marcelo Arenas Belón, Christian
Couder, Clément Chigot, Corentin BOMPARD, David Turner,
Denton Liu, Derrick Stolee, Elijah Newren, Emily Shaffer,
Eric Wong, Gabriele Mazzotta, Jeff Hostetler, Jeff King,
Johannes Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons,
Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
Matheus Tavares, Matthew DeVore, Michael J Gruber, Mike Hommey,
Mischa POSLAWSKY, Paul Mackerras, Phillip Wood, René Scharfe,
Stephen Boyd, Stephen P. Smith, Sun Chao, SZEDER Gábor,
Tanay Abhra, Taylor Blau, Thomas Gummerer, Tobias Klauser,
Torsten Bögershausen, and Varun Naik.
----------------------------------------------------------------
Git 2.24 Release Notes (draft)
==============================
Updates since v2.23
-------------------
Backward compatibility note
* Although it is not officially deprecated, "filter-branch" is
showing its age and alternatives are available. From this release,
we started to discourage its uses and hint people about
filter-repo.
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
input as non-options, has been to use "--" as the delimiter, but
that would not work for commands that use "--" as a delimiter
between revs and pathspec.
* A mechanism to affect the default setting for a (related) group of
configuration variables is introduced.
* "git fetch" learned "--set-upstream" option to help those who first
clone from their private fork they intend to push to, add the true
upstream via "git remote add" and then "git fetch" from it.
* 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.
* The documentation and tests for "git format-patch" have been
cleaned up.
* On Windows, the root level of UNC share is now allowed to be used
just like any other directory.
* The command line completion support (in contrib/) learned about the
"--skip" option of "git revert" and "git cherry-pick".
* "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.
* A configuration variable tells "git fetch" to write the commit
graph after finishing.
* "git add -i" has been taught to show the total number of hunks and
the hunks that has been processed so far when showing prompts.
* "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
submodules, but this did not apply to "git fetch --multiple" that
fetches from multiple remote repositories. It now does.
Performance, Internal Implementation, Development Support etc.
* The code to write commit-graph over given commit object names has
been made a bit more robust.
* The first line of verbose output from each test piece now carries
the test name and number to help scanning with eyeballs.
* 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.
* Preparation for SHA-256 upgrade continues in the test department.
(merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).
* The memory ownership model of the "git fast-import" got
straightened out.
* Output from trace2 subsystem is formatted more prettily now.
* The internal code originally invented for ".gitignore" processing
got reshuffled and renamed to make it less tied to "excluding" and
stress more that it is about "matching", as it has been reused for
things like sparse checkout specification that want to check if a
path is "included".
* "git stash" learned to write refreshed index back to disk.
* Coccinelle checks are done on more source files than before now.
* The cache-tree code has been taught to be less aggressive in
attempting to see if a tree object it computed already exists in
the repository.
* The code to parse and use the commit-graph file has been made more
robust against corrupted input.
* The hg-to-git script (in contrib/) has been updated to work with
Python 3.
* Update the way build artifacts in t/helper/ directory are ignored.
* Preparation for SHA-256 upgrade continues.
* "git log --graph" for an octopus merge is sometimes colored
incorrectly, which is demonstrated and documented but not yet
fixed.
* The trace2 output, when sending them to files in a designated
directory, can populate the directory with too many files; a
mechanism is introduced to set the maximum number of files and
discard further logs when the maximum is reached.
* We have adopted a Code-of-conduct document.
(merge 3f9ef874a7 jk/coc later to maint).
Fixes since v2.23
-----------------
* "git grep --recurse-submodules" that looks at the working tree
files looked at the contents in the index in submodules, instead of
files in the working tree.
(merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).
* Codepaths to walk tree objects have been audited for integer
overflows and hardened.
(merge 5aa02f9868 jk/tree-walk-overflow later to maint).
* "git pack-refs" can lose refs that are created while running, which
is getting corrected.
(merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).
* "git checkout" and "git restore" to re-populate the index from a
tree-ish (typically HEAD) did not work correctly for a path that
was removed and then added again with the intent-to-add bit, when
the corresponding working tree file was empty. This has been
corrected.
* Compilation fix.
(merge 70597e8386 rs/nedalloc-fixlets later to maint).
* "git gui" learned to call the clean-up procedure before exiting.
(merge 0d88f3d2c5 py/git-gui-do-quit later to maint).
* We promoted the "indent heuristics" that decides where to split
diff hunks from experimental to the default a few years ago, but
some stale documentation still marked it as experimental, which has
been corrected.
(merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).
* Fix a mismerge that happened in 2.22 timeframe.
(merge acb7da05ac en/checkout-mismerge-fix later to maint).
* "git archive" recorded incorrect length in extended pax header in
some corner cases, which has been corrected.
(merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).
* On-demand object fetching in lazy clone incorrectly tried to fetch
commits from submodule projects, while still working in the
superproject, which has been corrected.
(merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).
* Prepare get_short_oid() codepath to be thread-safe.
(merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).
* "for-each-ref" and friends that show refs did not protect themselves
against ancient tags that did not record tagger names when asked to
show "%(taggername)", which have been corrected.
(merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).
* The "git am" based backend of "git rebase" ignored the result of
updating ".gitattributes" done in one step when replaying
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).
* Build fix to adjust .gitignore to unignore a path that we started to track.
(merge aac6ff7b5b js/visual-studio later to maint).
* A few implementation fixes in the notes API.
(merge 60fe477a0b mh/notes-duplicate-entries later to maint).
* Fix an earlier regression to "git push --all" which should have
been forbidden when the target remote repository is set to be a
mirror.
(merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).
* Fix an earlier regression in the test suite, which mistakenly
stopped running HTTPD tests.
(merge 3960290675 sg/git-test-boolean later to maint).
* "git rebase --autostash <upstream> <branch>", when <branch> is
different from the current branch, incorrectly moved the tip of the
current branch, which has been corrected.
(merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).
* Update support for Asciidoctor documentation toolchain.
(merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).
* Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
no longer works with the older one.
(merge f6461b82b9 bc/doc-use-docbook-5 later to maint).
* The markup used in user-manual has been updated to work better with
asciidoctor.
(merge c4d2f6143a ma/user-manual-markup-update later to maint).
* Make sure the grep machinery does not abort when seeing a payload
that is not UTF-8 even when JIT is not in use with PCRE1.
(merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).
* The name of the blob object that stores the filter specification
for sparse cloning/fetching was interpreted in a wrong place in the
code, causing Git to abort.
* "git log --decorate-refs-exclude=<pattern>" was incorrectly
overruled when the "--simplify-by-decoration" option is used, which
has been corrected.
(merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).
* The "upload-pack" (the counterpart of "git fetch") needs to disable
commit-graph when responding to a shallow clone/fetch request, but
the way this was done made Git panic, which has been corrected.
* The object traversal machinery has been optimized not to load tree
objects when we are only interested in commit history.
(merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).
* The object name parser for "Nth parent" syntax has been made more
robust against integer overflows.
(merge 59fa5f5a25 rs/nth-parent-parse later to maint).
* The code used in following tags in "git fetch" has been optimized.
(merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).
* Regression fix for progress output.
(merge 2bb74b53a4 sg/progress-fix later to maint).
* A bug in merge-recursive code that triggers when a branch with a
symbolic link is merged with a branch that replaces it with a
directory has been fixed.
(merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).
* The rename detection logic sorts a list of rename source candidates
by similarity to pick the best candidate, which means that a tie
between sources with the same similarity is broken by the original
location in the original candidate list (which is sorted by path).
Force the sorting by similarity done with a stable sort, which is
not promised by system supplied qsort(3), to ensure consistent
results across platforms.
(merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).
* The code to skip "UTF" and "UTF-" prefix, when computing an advice
message, did not work correctly when the prefix was "UTF", which
has been fixed.
(merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).
* The author names taken from SVN repositories may have extra leading
or trailing whitespaces, which are now munged away.
(merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).
* "git rebase -i" showed a wrong HEAD while "reword" open the editor.
(merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).
* A few simplification and bugfixes to PCRE interface.
(merge c581e4a749 ab/pcre-jit-fixes later to maint).
* PCRE fixes.
(merge ff61681b46 cb/pcre1-cleanup later to maint).
* "git range-diff" segfaulted when diff.noprefix configuration was
used, as it blindly expected the patch it internally generates to
have the standard a/ and b/ prefixes. The command now forces the
internal patch to be built without any prefix, not to be affected
by any end-user configuration.
(merge 937b76ed49 js/range-diff-noprefix later to maint).
* "git stash apply" in a subdirectory of a secondary worktree failed
to access the worktree correctly, which has been corrected.
(merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).
* The merge-recursive machiery is one of the most complex parts of
the system that accumulated cruft over time. This large series
cleans up the implementation quite a bit.
(merge b657047719 en/merge-recursive-cleanup later to maint).
* Pretty-printed command line formatter (used in e.g. reporting the
command being run by the tracing API) had a bug that lost an
argument that is an empty string, which has been corrected.
(merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).
* "git range-diff" failed to handle mode-only change, which has been
corrected.
(merge 2b6a9b13ca tg/range-diff-output-update later to maint).
* Dev support update.
(merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).
* "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
not "mkdir -p <outdir>", which was corrected.
* "git stash save" lost local changes to submodules, which has been
corrected.
(merge 556895d0c8 jj/stash-reset-only-toplevel 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).
(merge 415b770b88 ds/midx-expire-repack later to maint).
(merge 19800bdc3f nd/diff-parseopt later to maint).
(merge 58166c2e9d tg/t0021-racefix later to maint).
(merge 7027f508c7 dl/compat-cleanup later to maint).
(merge e770fbfeff jc/test-cleanup later to maint).
(merge 1fd881d404 rs/trace2-dst-warning later to maint).
(merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
(merge 9784f97321 mh/release-commit-memory-fix later to maint).
(merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
(merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
(merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
(merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
(merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
(merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
(merge 47b27c96fa ss/get-time-cleanup later to maint).
(merge dd2e50a84e jk/commit-graph-cleanup later to maint).
(merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
(merge 40e747e89d dl/submodule-set-branch later to maint).
(merge 689a146c91 rs/commit-graph-use-list-count later to maint).
(merge 0eb7c37a8a js/doc-patch-text later to maint).
(merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
(merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
(merge af78249463 cc/svn-fe-py-shebang later to maint).
(merge 7bd97d6dff rs/alias-use-copy-array later to maint).
(merge c46ebc2496 sg/travis-help-debug later to maint).
(merge 24c681794f ps/my-first-contribution-alphasort later to maint).
(merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
(merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
(merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
(merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
(merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
(merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
(merge 53d687bf5f ah/cleanups later to maint).
(merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
(merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
(merge d928a8388a am/t0028-utf16-tests later to maint).
(merge b05b40930e dl/t0000-skip-test-test later to maint).
(merge 03d3b1297c js/xdiffi-comment-updates later to maint).
(merge 57d8f4b4c7 js/doc-stash-save later to maint).
(merge 8c1cfd58e3 ta/t1308-typofix later to maint).
(merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
(merge 68b69211b2 bb/compat-util-comment-fix later to maint).
(merge 5cc6a4be11 rs/http-push-simplify later to maint).
(merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
(merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
----------------------------------------------------------------
Changes since v2.23.0 are as follows:
Adam Roben (1):
mingw: fix launching of externals from Unicode paths
Alex Henrie (4):
doc: fix reference to --ignore-submodules
commit-graph: remove a duplicate assignment
diffcore-break: use a goto instead of a redundant if statement
wrapper: use a loop instead of repetitive statements
Alexandr Miloslavskiy (4):
contrib/buildsystems: fix Visual Studio Debug configuration
t0028: fix test for UTF-16-LE-BOM
t0028: add more tests
t0061: fix test for argv[0] with spaces (MINGW only)
Ali Utku Selen (1):
shallow.c: don't free unallocated slabs
Andrey Mazo (1):
.mailmap: update email address of Andrey Mazo
Beat Bolli (3):
grep: under --debug, show whether PCRE JIT is enabled
utf8: use ARRAY_SIZE() in git_wcwidth()
git-compat-util: fix documentation syntax
Ben Milman (1):
repository-layout.txt: correct pluralization of 'object'
Ben Wijen (2):
builtin/rebase.c: make sure the active branch isn't moved when autostashing
builtin/rebase.c: Remove pointless message
Bert Wesarg (4):
git-gui: convert new/amend commit radiobutton to checkbutton
git-gui: add horizontal scrollbar to commit buffer
builtin/submodule--helper: fix usage string for 'update-clone'
format-patch: create leading components of output directory
Birger Skogeng Pedersen (2):
git-gui: add hotkeys to set widget focus
git-gui: add hotkey to toggle "Amend Last Commit"
CB Bailey (1):
t4038: Remove non-portable '-a' option passed to test_cmp
Cameron Steffen (1):
doc: minor formatting fix
Carlo Marcelo Arenas Belón (4):
http: use xmalloc with cURL
grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1
grep: refactor and simplify PCRE1 support
grep: skip UTF8 checks explicitly
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
Clément Chigot (1):
contrib/svn-fe: fix shebang for svnrdump_sim.py
Corentin BOMPARD (1):
pull, fetch: add --set-upstream option
David Turner (1):
clarify documentation for remote helpers
Denton Liu (49):
packfile.h: drop extern from function declaration
t4014: drop unnecessary blank lines from test cases
t3431: add rebase --fork-point tests
t3432: test rebase fast-forward behavior
completion: merge options for cherry-pick and revert
completion: add --skip for cherry-pick and revert
status: mention --skip for revert and cherry-pick
rebase: refactor can_fast_forward into goto tower
rebase: fast-forward --onto in more cases
rebase: fast-forward --fork-point in more cases
rebase: teach rebase --keep-base
mingw: apply array.cocci rule
compat/*.[ch]: remove extern from function declarations using spatch
t4014: s/expected/expect/
t4014: move closing sq onto its own line
t4014: use sq for test case names
t4014: remove spaces after redirect operators
t4014: use indentable here-docs
t4014: drop redirections to /dev/null
t4014: let sed open its own files
t4014: use test_line_count() where possible
t4014: remove confusing pipe in check_threading()
t4014: stop losing return codes of git commands
Doc: add more detail for git-format-patch
config/format.txt: specify default value of format.coverLetter
t: use common $SQ variable
completion: teach rebase to use __gitcomp_builtin
completion: teach archive to use __gitcomp_builtin
git-submodule.txt: fix AsciiDoc formatting error
Makefile: strip leading ./ in $(LIB_H)
Makefile: define THIRD_PARTY_SOURCES
Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
Makefile: run coccicheck on more source files
gitk: rename zh_CN.po to zh_cn.po
promisor-remote.h: drop extern from function declaration
apply.h: include missing header
promisor-remote.h: include missing header
pack-bitmap.h: remove magic number
Makefile: emulate compile in $(HCO) target better
test-lib: let test_merge() perform octopus merges
t4214: use test_merge
t4214: generate expect in their own test cases
t4214: explicitly list tags in log
t4214: demonstrate octopus graph coloring failure
git-rev-list.txt: prune options in synopsis
t4014: treat rev-list output as the expected value
t0000: cover GIT_SKIP_TESTS blindspots
pthread.h: manually align parameter lists
Makefile: respect $(V) in %.cocci.patch target
Derrick Stolee (14):
repo-settings: consolidate some config settings
t6501: use 'git gc' in quiet mode
commit-graph: turn on commit-graph by default
repo-settings: parse core.untrackedCache
repo-settings: create feature.manyFiles setting
repo-settings: create feature.experimental setting
merge-recursive: introduce an enum for detect_directory_renames values
checkout: add simple check for 'git checkout -b'
fetch: add fetch.writeCommitGraph config setting
treewide: rename 'struct exclude' to 'struct path_pattern'
treewide: rename 'struct exclude_list' to 'struct pattern_list'
treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'
treewide: rename 'exclude' methods to 'pattern'
unpack-trees: rename 'is_excluded_from_list()'
Elijah Newren (53):
git-fast-import.txt: clarify that multiple merge commits are allowed
checkout: remove duplicate code
merge-recursive: be consistent with assert
checkout: provide better conflict hunk description with detached HEAD
merge-recursive: enforce opt->ancestor != NULL when calling merge_trees()
merge-recursive: provide a better label for diff3 common ancestor
merge-recursive: future-proof update_file_flags() against memory leaks
merge-recursive: remove another implicit dependency on the_repository
Ensure index matches head before invoking merge machinery, round N
merge-recursive: exit early if index != head
merge-recursive: remove useless parameter in merge_trees()
merge-recursive: don't force external callers to do our logging
cache-tree: share code between functions writing an index as a tree
merge-recursive: fix some overly long lines
merge-recursive: use common name for ancestors/common/base_list
merge-recursive: rename 'mrtree' to 'result_tree', for clarity
merge-recursive: rename merge_options argument to opt in header
merge-recursive: move some definitions around to clean up the header
merge-recursive: consolidate unnecessary fields in merge_options
merge-recursive: comment and reorder the merge_options fields
merge-recursive: avoid losing output and leaking memory holding that output
merge-recursive: split internal fields into a separate struct
merge-recursive: rename MERGE_RECURSIVE_* to MERGE_VARIANT_*
merge-recursive: add sanity checks for relevant merge_options
merge-recursive: alphabetize include list
merge-options.txt: clarify meaning of various ff-related options
t3427: accelerate this test by using fast-export and fast-import
t6006: simplify, fix, and optimize empty message test
Recommend git-filter-repo instead of git-filter-branch
t9902: use a non-deprecated command for testing
t7300: add testcases showing failure to clean specified pathspecs
dir: fix typo in comment
dir: fix off-by-one error in match_pathspec_item
dir: also check directories for matching pathspecs
dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
dir: if our pathspec might match files under a dir, recurse into it
dir: add commentary explaining match_pathspec_item's return value
git-clean.txt: do not claim we will delete files with -n/--dry-run
clean: disambiguate the definition of -d
clean: avoid removing untracked files in a nested git repository
clean: rewrap overly long line
clean: fix theoretical path corruption
fast-export: fix exporting a tag and nothing else
dir: special case check for the possibility that pathspec is NULL
merge-recursive: fix the diff3 common ancestor label for virtual commits
fast-import: fix handling of deleted tags
fast-import: allow tags to be identified by mark labels
fast-import: add support for new 'alias' command
fast-export: add support for --import-marks-if-exists
fast-export: allow user to request tags be marked with --mark-tags
t9350: add tests for tags of things other than a commit
fast-export: handle nested tags
merge-recursive: fix the fix to the diff3 common ancestor label
Emily Shaffer (1):
promisor-remote: skip move_to_tail when no-op
Eric Wong (20):
diff: use hashmap_entry_init on moved_entry.ent
coccicheck: detect hashmap_entry.hash assignment
packfile: use hashmap_entry in delta_base_cache_entry
hashmap_entry_init takes "struct hashmap_entry *"
hashmap_get_next takes "const struct hashmap_entry *"
hashmap_add takes "struct hashmap_entry *"
hashmap_get takes "const struct hashmap_entry *"
hashmap_remove takes "const struct hashmap_entry *"
hashmap_put takes "struct hashmap_entry *"
introduce container_of macro
hashmap_get_next returns "struct hashmap_entry *"
hashmap: use *_entry APIs to wrap container_of
hashmap_get{,_from_hash} return "struct hashmap_entry *"
hashmap_cmp_fn takes hashmap_entry params
hashmap: use *_entry APIs for iteration
hashmap: hashmap_{put,remove} return hashmap_entry *
hashmap: introduce hashmap_free_entries
OFFSETOF_VAR macro to simplify hashmap iterators
hashmap: remove type arg from hashmap_{get,put,remove}_entry
hashmap_entry: remove first member requirement from docs
Gabriele Mazzotta (1):
gitk: Do not mistake unchanged lines for submodule changes
Garima Singh (3):
commit-graph: add --[no-]progress to write and verify
commit-graph: emit trace2 cmd_mode for each sub-command
sq_quote_buf_pretty: don't drop empty arguments
Hervé Beraud (1):
hg-to-git: make it compatible with both python3 and python2
Jakob Jarmar (1):
stash: avoid recursive hard reset on submodules
Jeff Hostetler (7):
trace2: cleanup column alignment in perf target format
trace2: trim whitespace in region messages in perf target format
trace2: remove dead code in maybe_add_string_va()
trace2: trim trailing whitespace in normal format error message
quote: add sq_append_quote_argv_pretty()
trace2: cleanup whitespace in normal format
trace2: cleanup whitespace in perf format
Jeff King (32):
setup_traverse_info(): stop copying oid
tree-walk: drop oid from traverse_info
tree-walk: use size_t consistently
tree-walk: accept a raw length for traverse_path_len()
tree-walk: add a strbuf wrapper for make_traverse_path()
tree-walk: harden make_traverse_path() length computations
revision: allow --end-of-options to end option parsing
parse-options: allow --end-of-options as a synonym for "--"
gitcli: document --end-of-options
t1309: use short branch name in includeIf.onbranch test
common-main: delay trace2 initialization
config: stop checking whether the_repository is NULL
t/perf: rename duplicate-numbered test script
packfile: drop release_pack_memory()
notes: avoid potential use-after-free during insertion
fast-import: duplicate parsed encoding string
fast-import: duplicate into history rather than passing ownership
git-am: handle missing "author" when parsing commit
pack-objects: use object_id in packlist_alloc()
bulk-checkin: zero-initialize hashfile_checkpoint
diff-delta: set size out-parameter to 0 for NULL delta
test-read-cache: drop namelen variable
pack-objects: drop packlist index_pos optimization
commit-graph: turn off save_commit_buffer
list-objects: don't queue root trees unless revs->tree_objects is set
commit-graph: bump DIE_ON_LOAD check to actual load-time
upload-pack: disable commit graph more gently for shallow traversal
list-objects-filter: delay parsing of sparse oid
list-objects-filter: use empty string instead of NULL for sparse "base"
git_mkstemps_mode(): replace magic numbers with computed value
add a Code of Conduct document
CODE_OF_CONDUCT: mention individual project-leader emails
Johannes Schindelin (41):
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
t3427: add a clarifying comment
t3427: simplify the `setup` test case significantly
t3427: move the `filter-branch` invocation into the `setup` case
t3427: condense the unnecessarily repetitive test cases into three
t3427: fix erroneous assumption
t3427: accommodate for the `rebase --merge` backend having been replaced
t3427: fix another incorrect assumption
rebase -r: support merge strategies other than `recursive`
t/lib-rebase: prepare for testing `git rebase --rebase-merges`
t3418: test `rebase -r` with merge strategies
rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
setup_git_directory(): handle UNC paths correctly
Fix .git/ discovery at the root of UNC shares
setup_git_directory(): handle UNC root paths correctly
.gitignore: stop ignoring `.manifest` files
Move git_sort(), a stable sort, into into libgit.a
diffcore_rename(): use a stable sort
ci: run `hdr-check` as part of the `Static Analysis` job
range-diff: internally force `diff.noprefix=true`
push: do not pretend to return `int` from `die_push_simple()`
fetch: let --jobs=<n> parallelize --multiple, too
stash apply: report status correctly even in a worktree's subdirectory
msvc: avoid using minus operator on unsigned types
winansi: use FLEX_ARRAY to avoid compiler warning
compat/win32/path-utils.h: add #include guards
msvc: ignore some libraries when linking
msvc: handle DEVELOPER=1
msvc: work around a bug in GetEnvironmentVariable()
vcxproj: only copy `git-remote-http.exe` once it was built
vcxproj: include more generated files
test-tool run-command: learn to run (parts of) the testsuite
tests: let --immediate and --write-junit-xml play well together
ci: really use shallow clones on Azure Pipelines
ci: also build and test with MS Visual Studio on Azure Pipelines
xdiffi: fix typos and touch up comments
doc(stash): clarify the description of `save`
Johannes Sixt (2):
diff, log doc: say "patch text" instead of "patches"
diff, log doc: small grammer, format, and language fixes
Jon Simons (2):
t5616: test cloning/fetching with sparse:oid=<oid> filter
list-objects-filter: give a more specific error sparse parsing error
Jonathan Tan (6):
diff: skip GITLINK when lazy fetching missing objs
transport-helper: skip ls-refs if unnecessary
transport: teach all vtables to allow fetch first
cache-tree: do not lazy-fetch tentative tree
merge-recursive: symlink's descendants not in way
send-pack: never fetch when checking exclusions
Josh Steadmon (7):
t7503: verify proper hook execution
fetch: add trace2 instrumentation
push: add trace2 instrumentation
docs: mention trace2 target-dir mode in git-config
docs: clarify trace2 version invariants
trace2: discard new traces if target directory has too many files
trace2: write discard message to sentinel files
Junio C Hamano (14):
First batch after Git 2.23
t: use LF variable defined in the test harness
t3005: remove unused variable
Second batch
Third batch
SubmittingPatches: git-gui has a new maintainer
Fourth batch
Fifth batch
Sixth batch
transport: push codepath can take arbitrary repository
Seventh batch
Eighth batch
Ninth batch
Git 2.24-rc0
Kunal Tyagi (1):
add -i: show progress counter in the prompt
Martin Ågren (14):
Documentation: wrap blocks with "--"
git-merge-base.txt: render indentations correctly under Asciidoctor
Documentation: wrap config listings in "----"
git-ls-remote.txt: wrap shell listing in "----"
git-receive-pack.txt: wrap shell [script] listing in "----"
git-merge-index.txt: wrap shell listing in "----"
gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
Doc/Makefile: give mansource/-version/-manual attributes
asciidoctor-extensions: provide `<refmiscinfo/>`
doc-diff: replace --cut-header-footer with --cut-footer
user-manual.txt: add missing section label
user-manual.txt: change header notation
asciidoctor-extensions.rb: handle "book" doctype in linkgit
user-manual.txt: render ASCII art correctly under Asciidoctor
Masaya Suzuki (1):
fetch: use oidset to keep the want OIDs for faster lookup
Matheus Tavares (1):
grep: fix worktree case in submodules
Matthew DeVore (10):
list-objects-filter: encapsulate filter components
list-objects-filter: put omits set in filter struct
list-objects-filter-options: always supply *errbuf
list-objects-filter: implement composite filters
list-objects-filter-options: move error check up
list-objects-filter-options: make filter_spec a string_list
strbuf: give URL-encoding API a char predicate fn
list-objects-filter-options: allow mult. --filter
list-objects-filter-options: clean up use of ALLOC_GROW
list-objects-filter-options: make parser void
Max Rothman (1):
completion: add missing completions for log, diff, show
Michael J Gruber (3):
merge: do no-verify like commit
git-merge: honor pre-merge-commit hook
merge: --no-verify to bypass pre-merge-commit hook
Mike Hommey (3):
notes: avoid leaking duplicate entries
commit: free the right buffer in release_commit_memory
http: don't leak urlmatch_config.vars
Mischa POSLAWSKY (1):
ref-filter: initialize empty name or email fields
Paul Mackerras (1):
gitk: Make web links clickable
Paul Wise (1):
gitk: Use right colour for remote refs in the "Tags and heads" dialog
Pedro Sousa (1):
doc: MyFirstContribution: fix cmd placement instructions
Philip.McGraw (1):
git-p4: auto-delete named temporary file
Phillip Wood (3):
rebase -i: always update HEAD before rewording
rebase -i: check for updated todo after squash and reword
sequencer: simplify root commit creation
Pratyush Yadav (6):
git-gui: call do_quit before destroying the main window
git-gui: allow reverting selected lines
git-gui: allow reverting selected hunk
git-gui: return early when patch fails to apply
git-gui: allow undoing last revert
Documentation: update the location of the git-gui repo
René Scharfe (28):
nedmalloc: do assignments only after the declaration section
nedmalloc: avoid compiler warning about unused value
archive-tar: report wrong pax extended header length
archive-tar: fix pax extended header length calculation
archive-tar: use size_t in strbuf_append_ext_header()
archive-tar: turn length miscalculation warning into BUG
parseopt: move definition of enum parse_opt_result up
sha1-name: make sort_ambiguous_oid_array() thread-safe
log-tree: always use return value of strbuf_detach()
grep: use return value of strbuf_detach()
trace2: use warning() directly in tr2_dst_malformed_warning()
help: make help_unknown_ref() NORETURN
tree: simplify parse_tree_indirect()
tag: factor out get_tagged_oid()
use get_tagged_oid()
log: test --decorate-refs-exclude with --simplify-by-decoration
log-tree: call load_ref_decorations() in get_name_decoration()
rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
sha1-name: check for overflow of N in "foo^N" and "foo~N"
commit-graph: use commit_list_count()
sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
treewide: remove duplicate #include directives
convert: fix handling of dashless UTF prefix in validate_encoding()
tests: remove "cat foo" before "test_i18ngrep bar foo"
http-push: simplify deleting a list item
column: use utf8_strnwidth() to strip out ANSI color escapes
remote-curl: use argv_array in parse_push()
SZEDER Gábor (33):
t5510-fetch: fix negated 'test_i18ngrep' invocation
t5510-fetch: run non-httpd-specific test before sourcing 'lib-httpd.sh'
t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh'
t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd'
t5318-commit-graph: use 'test_expect_code'
commit-graph: turn a group of write-related macro flags into an enum
commit-graph: error out on invalid commit oids in 'write --stdin-commits'
t0000-basic: use realistic test script names in the verbose tests
tests: show the test name and number at the start of verbose output
completion: fix a typo in a comment
completion: complete more values of more 'color.*' configuration variables
completion: add tests for 'git config' completion
completion: deduplicate configuration sections
completion: use 'sort -u' to deduplicate config variable names
completion: simplify inner 'case' pattern in __gitcomp()
completion: split _git_config()
completion: complete configuration sections and variable names for 'git -c'
completion: complete values of configuration variables after 'git -c var='
completion: complete config variables names and values for 'git clone -c'
completion: complete config variables and values for 'git clone --config='
worktree remove: clarify error message on dirty worktree
diff: 'diff.indentHeuristic' is no longer experimental
line-log: extract pathspec parsing from line ranges into a helper function
line-log: avoid unnecessary full tree diffs
t7300-clean: demonstrate deleting nested repo with an ignored file breakage
t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests
ci: restore running httpd tests
commit-graph: don't show progress percentages while expanding reachable commits
Revert "progress: use term_clear_line()"
Test the progress display
t/helper: ignore only executable files
travis-ci: do not skip successfully tested trees in debug mode
name-rev: avoid cutoff timestamp underflow
Stephen Boyd (1):
userdiff: add a builtin pattern for dts files
Stephen P. Smith (2):
Quit passing 'now' to date code
test_date.c: remove reference to GIT_TEST_DATE_NOW
Sun Chao (1):
pack-refs: always refresh after taking the lock file
Tanay Abhra (1):
t1308-config-set: fix a test that has a typo
Taylor Blau (4):
banned.h: fix vsprintf()'s ban message
t/t5318: introduce failing 'git commit-graph write' tests
commit-graph.c: handle commit parsing errors
commit-graph.c: handle corrupt/missing trees
Thomas Gummerer (6):
t0021: make sure clean filter runs
push: disallow --all and refspecs when remote.<name>.mirror is set
factor out refresh_and_write_cache function
merge: use refresh_and_write_cache
stash: make sure to write refreshed cache
range-diff: don't segfault with mode-only changes
Tobias Klauser (1):
git-svn: trim leading and trailing whitespaces in author name
Torsten Bögershausen (1):
mingw: support UNC in git clone file://server/share/repo
Varun Naik (2):
checkout.c: unstage empty deleted ita files
restore: add test for deleted ita files
YanKe (1):
gitk: Add Chinese (zh_CN) translation
brian m. carlson (43):
builtin/replace: make hash size independent
patch-id: convert to use the_hash_algo
fetch-pack: use parse_oid_hex
builtin/receive-pack: switch to use the_hash_algo
builtin/blame: switch uses of GIT_SHA1_HEXSZ to the_hash_algo
builtin/rev-parse: switch to use the_hash_algo
blame: remove needless comparison with GIT_SHA1_HEXSZ
show-index: switch hard-coded constants to the_hash_algo
connected: switch GIT_SHA1_HEXSZ to the_hash_algo
bundle: switch to use the_hash_algo
combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
config: use the_hash_algo in abbrev comparison
sha1-lookup: switch hard-coded constants to the_hash_algo
bisect: switch to using the_hash_algo
sequencer: convert to use the_hash_algo
pack-write: use hash_to_hex when writing checksums
builtin/repack: write object IDs of the proper length
builtin/worktree: switch null_sha1 to null_oid
cache: remove null_sha1
wt-status: convert struct wt_status to object_id
packfile: replace sha1_to_hex
builtin/index-pack: replace sha1_to_hex
builtin/receive-pack: replace sha1_to_hex
rerere: replace sha1_to_hex
builtin/show-index: replace sha1_to_hex
midx: switch to using the_hash_algo
t3201: abstract away SHA-1-specific constants
t3206: abstract away hash size constants
t3301: abstract away SHA-1-specific constants
t3305: make hash size independent
t3306: abstract away SHA-1-specific constants
t3404: abstract away SHA-1-specific constants
t3430: avoid hard-coded object IDs
t3506: make hash independent
t3600: make hash size independent
t3800: make hash-size independent
t3903: abstract away SHA-1-specific constants
t4000: make hash size independent
t4002: make hash independent
t4009: make hash size independent
path: add a function to check for path suffix
am: reload .gitattributes after patching it
Documentation: fix build with Asciidoctor 2
Ævar Arnfjörð Bjarmason (20):
log tests: test regex backends in "--encode=<enc>" tests
grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
t4210: skip more command-line encoding tests on MinGW
grep: inline the return value of a function call used only once
grep tests: move "grep binary" alongside the rest
grep tests: move binary pattern tests into their own file
grep: make the behavior for NUL-byte in patterns sane
grep: drop support for \0 in --fixed-strings <pattern>
grep: remove the kwset optimization
grep: use PCRE v2 for optimized fixed-string search
grep: remove overly paranoid BUG(...) code
grep: stop "using" a custom JIT stack with PCRE v2
grep: stop using a custom JIT stack with PCRE v1
grep: consistently use "p->fixed" in compile_regexp()
grep: create a "is_fixed" member in "grep_pat"
grep: stess test PCRE v2 on invalid UTF-8 data
grep: do not enter PCRE2_UTF mode on fixed matching
t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
t3432: test for --no-ff's interaction with fast-forward
rebase tests: test linear branch topology
^ permalink raw reply [relevance 2%]
* 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%]
* [ANNOUNCE] Git v2.20.0
@ 2018-12-09 8:43 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-12-09 8:43 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.20.0 is now available at the usual
places. It is comprised of 962 non-merge commits since v2.19.0
(this is by far the largest release in v2.x.x series), contributed
by 83 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.20.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.19.0 are as follows.
Welcome to the Git development community!
Aaron Lindsay, Alexander Pyhalov, Anton Serbulov, Brendan
Forster, Carlo Marcelo Arenas Belón, Daniels Umanovskis,
David Zych, Đoàn Trần Công Danh, Frederick Eaton, Greg
Hurrell, James Knight, Jann Horn, Joshua Watt, Loo Rong Jie,
Lucas De Marchi, Matthew DeVore, Mihir Mehta, Minh Nguyen,
Nickolai Belakovski, Roger Strain, Sam McKelvie, Saulius Gurklys,
Shulhan, Steven Fernandez, Strain, Roger L, and Tim Schumacher.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Alexander Shopov,
Andreas Gruenbacher, Andreas Heiduk, Antonio Ospite, Ben Peart,
Brandon Williams, brian m. carlson, Christian Couder, Christian
Hesse, Christopher Díaz Riveros, Denton Liu, Derrick Stolee,
Elijah Newren, Eric Sunshine, 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, Luke Diamand, Martin Ågren,
Max Kirillov, Michael Witten, Michał Górny, Nguyễn Thái
Ngọc Duy, Noam Postavsky, Olga Telezhnaya, Peter Krefting,
Phillip Wood, Pratik Karki, Rafael Ascensão, Ralf Thielow,
Ramsay Jones, Rasmus Villemoes, René Scharfe, Sebastian Staudt,
Stefan Beller, Stephen P. Smith, Steve Hoelzer, Sven Strickroth,
SZEDER Gábor, Tao Qingyun, Taylor Blau, Thomas Gummerer,
Todd Zullinger, Torsten Bögershausen, Trần Ngọc Quân,
and Uwe Kleine-König.
----------------------------------------------------------------
Git 2.20 Release Notes
======================
Backward Compatibility Notes
----------------------------
* "git branch -l <foo>" used to be a way to ask a reflog to be
created while creating a new branch, but that is no longer the
case. It is a short-hand for "git branch --list <foo>" now.
* "git push" into refs/tags/* hierarchy is rejected without getting
forced, but "git fetch" (misguidedly) used the "fast forwarding"
rule used for the refs/heads/* hierarchy; this has been corrected,
which means some fetches of tags that did not fail with older
version of Git will fail without "--force" with this version.
* "git help -a" now gives verbose output (same as "git help -av").
Those who want the old output may say "git help --no-verbose -a"..
* "git cpn --help", when "cpn" is an alias to, say, "cherry-pick -n",
reported only the alias expansion of "cpn" in earlier versions of
Git. It now runs "git cherry-pick --help" to show the manual page
of the command, while sending the alias expansion to the standard
error stream.
* "git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by". This is a backward-incompatible
change. Adding "--suppress-cc=misc-by" on the command line, or
setting sendemail.suppresscc configuration variable to "misc-by",
can be used to disable this behaviour.
Updates since v2.19
-------------------
UI, Workflows & Features
* Running "git clone" against a project that contain two files with
pathnames that differ only in cases on a case insensitive
filesystem would result in one of the files lost because the
underlying filesystem is incapable of holding both at the same
time. An attempt is made to detect such a case and warn.
* "git checkout -b newbranch [HEAD]" should not have to do as much as
checking out a commit different from HEAD. An attempt is made to
optimize this special case.
* "git rev-list --stdin </dev/null" used to be an error; it now shows
no output without an error. "git rev-list --stdin --default HEAD"
still falls back to the given default when nothing is given on the
standard input.
* Lift code from GitHub to restrict delta computation so that an
object that exists in one fork is not made into a delta against
another object that does not appear in the same forked repository.
* "git format-patch" learned new "--interdiff" and "--range-diff"
options to explain the difference between this version and the
previous attempt in the cover letter (or after the three-dashes as
a comment).
* "git mailinfo" used in "git am" learned to make a best-effort
recovery of a patch corrupted by MUA that sends text/plain with
format=flawed option.
(merge 3aa4d81f88 rs/mailinfo-format-flowed later to maint).
* The rules used by "git push" and "git fetch" to determine if a ref
can or cannot be updated were inconsistent; specifically, fetching
to update existing tags were allowed even though tags are supposed
to be unmoving anchoring points. "git fetch" was taught to forbid
updates to existing tags without the "--force" option.
* "git multi-pack-index" learned to detect corruption in the .midx
file it uses, and this feature has been integrated into "git fsck".
* Generation of (experimental) commit-graph files have so far been
fairly silent, even though it takes noticeable amount of time in a
meaningfully large repository. The users will now see progress
output.
* The minimum version of Windows supported by Windows port of Git is
now set to Vista.
* The completion script (in contrib/) learned to complete a handful of
options "git stash list" command takes.
* The completion script (in contrib/) learned that "git fetch
--multiple" only takes remote names as arguments and no refspecs.
* "git status" learns to show progress bar when refreshing the index
takes a long time.
(merge ae9af12287 nd/status-refresh-progress later to maint).
* "git help -a" and "git help -av" give different pieces of
information, and generally the "verbose" version is more friendly
to the new users. "git help -a" by default now uses the more
verbose output (with "--no-verbose", you can go back to the
original). Also "git help -av" now lists aliases and external
commands, which it did not used to.
* Unlike "grep", "git grep" by default recurses to the whole tree.
The command learned "git grep --recursive" option, so that "git
grep --no-recursive" can serve as a synonym to setting the
max-depth to 0.
* When pushing into a repository that borrows its objects from an
alternate object store, "git receive-pack" that responds to the
push request on the other side lists the tips of refs in the
alternate to reduce the amount of objects transferred. This
sometimes is detrimental when the number of refs in the alternate
is absurdly large, in which case the bandwidth saved in potentially
fewer objects transferred is wasted in excessively large ref
advertisement. The alternate refs that are advertised are now
configurable with a pair of configuration variables.
* "git cmd --help" when "cmd" is aliased used to only say "cmd is
aliased to ...". Now it shows that to the standard error stream
and runs "git $cmd --help" where $cmd is the first word of the
alias expansion.
* The documentation of "git gc" has been updated to mention that it
is no longer limited to "pruning away crufts" but also updates
ancillary files like commit-graph as a part of repository
optimization.
* "git p4 unshelve" improvements.
* The logic to select the default user name and e-mail on Windows has
been improved.
(merge 501afcb8b0 js/mingw-default-ident later to maint).
* The "rev-list --filter" feature learned to exclude all trees via
"tree:0" filter.
* "git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by"; --suppress-cc=misc-by on the
command line, or setting sendemail.suppresscc configuration
variable to "misc-by", can be used to disable this behaviour.
* "git mergetool" learned to take the "--[no-]gui" option, just like
"git difftool" does.
* "git rebase -i" learned a new insn, 'break', that the user can
insert in the to-do list. Upon hitting it, the command returns
control back to the user.
* New "--pretty=format:" placeholders %GF and %GP that show the GPG
key fingerprints have been invented.
* On platforms with recent cURL library, http.sslBackend configuration
variable can be used to choose a different SSL backend at runtime.
The Windows port uses this mechanism to switch between OpenSSL and
Secure Channel while talking over the HTTPS protocol.
* "git send-email" learned to disable SMTP authentication via the
"--smtp-auth=none" option, even when the smtp username is given
(which turns the authentication on by default).
* A fourth class of configuration files (in addition to the
traditional "system wide", "per user in the $HOME directory" and
"per repository in the $GIT_DIR/config") has been introduced so
that different worktrees that share the same repository (hence the
same $GIT_DIR/config file) can use different customization.
* A pattern with '**' that does not have a slash on either side used
to be an invalid one, but the code now treats such double-asterisks
the same way as two normal asterisks that happen to be adjacent to
each other.
(merge e5bbe09e88 nd/wildmatch-double-asterisk later to maint).
* The "--no-patch" option, which can be used to get a high-level
overview without the actual line-by-line patch difference shown, of
the "range-diff" command was earlier broken, which has been
corrected.
* The recently merged "rebase in C" has an escape hatch to use the
scripted version when necessary, but it hasn't been documented,
which has been corrected.
Performance, Internal Implementation, Development Support etc.
* Developer builds now use -Wunused-function compilation option.
* One of our CI tests to run with "unusual/experimental/random"
settings now also uses commit-graph and midx.
* When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
* "git submodule update" is getting rewritten piece-by-piece into C.
* The code for computing history reachability has been shuffled,
obtained a bunch of new tests to cover them, and then being
improved.
* The unpack_trees() API used in checking out a branch and merging
walks one or more trees along with the index. When the cache-tree
in the index tells us that we are walking a tree whose flattened
contents is known (i.e. matches a span in the index), as linearly
scanning a span in the index is much more efficient than having to
open tree objects recursively and listing their entries, the walk
can be optimized, which has been done.
* When creating a thin pack, which allows objects to be made into a
delta against another object that is not in the resulting pack but
is known to be present on the receiving end, the code learned to
take advantage of the reachability bitmap; this allows the server
to send a delta against a base beyond the "boundary" commit.
* spatch transformation to replace boolean uses of !hashcmp() to
newly introduced oideq() is added, and applied, to regain
performance lost due to support of multiple hash algorithms.
* Fix a bug in which the same path could be registered under multiple
worktree entries if the path was missing (for instance, was removed
manually). Also, as a convenience, expand the number of cases in
which --force is applicable.
* Split Documentation/config.txt for easier maintenance.
(merge 6014363f0b nd/config-split later to maint).
* Test helper binaries clean-up.
(merge c9a1f4161f nd/test-tool later to maint).
* Various tests have been updated to make it easier to swap the
hash function used for object identification.
(merge ae0c89d41b bc/hash-independent-tests later to maint).
* Update fsck.skipList implementation and documentation.
(merge 371a655074 ab/fsck-skiplist later to maint).
* An alias that expands to another alias has so far been forbidden,
but now it is allowed to create such an alias.
* Various test scripts have been updated for style and also correct
handling of exit status of various commands.
* "gc --auto" ended up calling exit(-1) upon error, which has been
corrected to use exit(1). Also the error reporting behaviour when
daemonized has been updated to exit with zero status when stopping
due to a previously discovered error (which implies there is no
point running gc to improve the situation); we used to exit with
failure in such a case.
* Various codepaths in the core-ish part learned to work on an
arbitrary in-core index structure, not necessarily the default
instance "the_index".
(merge b3c7eef9b0 nd/the-index later to maint).
* Code clean-up in the internal machinery used by "git status" and
"git commit --dry-run".
(merge 73ba5d78b4 ss/wt-status-committable later to maint).
* Some environment variables that control the runtime options of Git
used during tests are getting renamed for consistency.
(merge 4231d1ba99 bp/rename-test-env-var later to maint).
* A pair of new extensions to the index file have been introduced.
They allow the index file to be read in parallel for performance.
* The oidset API was built on top of the oidmap API which in turn is
on the hashmap API. Replace the implementation to build on top of
the khash API and gain performance.
* Over some transports, fetching objects with an exact commit object
name can be done without first seeing the ref advertisements. The
code has been optimized to exploit this.
* In a partial clone that will lazily be hydrated from the
originating repository, we generally want to avoid "does this
object exist (locally)?" on objects that we deliberately omitted
when we created the clone. The cache-tree codepath (which is used
to write a tree object out of the index) however insisted that the
object exists, even for paths that are outside of the partial
checkout area. The code has been updated to avoid such a check.
* To help developers, an EditorConfig file that attempts to follow
the project convention has been added.
(merge b548d698a0 bc/editorconfig later to maint).
* The result of coverage test can be combined with "git blame" to
check the test coverage of code introduced recently with a new
'coverage-diff' tool (in contrib/).
(merge 783faedd65 ds/coverage-diff later to maint).
* An experiment to fuzz test a few areas, hopefully we can gain more
coverage to various areas.
* More codepaths are moving away from hardcoded hash sizes.
* The way the Windows port figures out the current directory has been
improved.
* The way DLLs are loaded on the Windows port has been improved.
* Some tests have been reorganized and renamed; "ls t/" now gives a
better overview of what is tested for these scripts than before.
* "git rebase" and "git rebase -i" have been reimplemented in C.
* Windows port learned to use nano-second resolution file timestamps.
* The overly large Documentation/config.txt file have been split into
million little pieces. This potentially allows each individual piece
to be included into the manual page of the command it affects more easily.
* Replace three string-list instances used as look-up tables in "git
fetch" with hashmaps.
* Unify code to read the author-script used in "git am" and the
commands that use the sequencer machinery, e.g. "git rebase -i".
* In preparation to the day when we can deprecate and remove the
"rebase -p", make sure we can skip and later remove tests for
it.
* The history traversal used to implement the tag-following has been
optimized by introducing a new helper.
* The helper function to refresh the cached stat information in the
in-core index has learned to perform the lstat() part of the
operation in parallel on multi-core platforms.
* The code to traverse objects for reachability, used to decide what
objects are unreferenced and expendable, have been taught to also
consider per-worktree refs of other worktrees as starting points to
prevent data loss.
* "git add" needs to internally run "diff-files" equivalent, and the
codepath learned the same optimization as "diff-files" has to run
lstat(2) in parallel to find which paths have been updated in the
working tree.
* The procedure to install dependencies before testing at Travis CI
is getting revamped for both simplicity and flexibility, taking
advantage of the recent move to the vm-based environment.
* The support for format-patch (and send-email) by the command-line
completion script (in contrib/) has been simplified a bit.
* The revision walker machinery learned to take advantage of the
commit generation numbers stored in the commit-graph file.
* The codebase has been cleaned up to reduce "#ifndef NO_PTHREADS".
* The way -lcurl library gets linked has been simplified by taking
advantage of the fact that we can just ask curl-config command how.
* Various functions have been audited for "-Wunused-parameter" warnings
and bugs in them got fixed.
* A sanity check for start-up sequence has been added in the config
API codepath.
* The build procedure to link for fuzzing test has been made
customizable with a new Makefile variable.
* The way "git rebase" parses and forwards the command line options
meant for underlying "git am" has been revamped, which fixed for
options with parameters that were not passed correctly.
* Our testing framework uses a special i18n "poisoned localization"
feature to find messages that ought to stay constant but are
incorrectly marked to be translated. This feature has been made
into a runtime option (it used to be a compile-time option).
* "git push" used to check ambiguities between object-names and
refnames while processing the list of refs' old and new values,
which was unnecessary (as it knew that it is feeding raw object
names). This has been optimized out.
* The xcurl_off_t() helper function is used to cast size_t to
curl_off_t, but some compilers gave warnings against the code to
ensure the casting is done without wraparound, when size_t is
narrower than curl_off_t. This warning has been squelched.
* Code preparation to replace ulong vars with size_t vars where
appropriate continues.
* The "test installed Git" mode of our test suite has been updated to
work better.
* A coding convention around the Coccinelle semantic patches to have
two classes to ease code migration process has been proposed and
its support has been added to the Makefile.
* The "container" mode of TravisCI is going away. Our .travis.yml
file is getting prepared for the transition.
(merge 32ee384be8 ss/travis-ci-force-vm-mode later to maint).
* Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.
(merge a5f52c6dab sg/test-verbose-log later to maint).
Fixes since v2.19
-----------------
* "git interpret-trailers" and its underlying machinery had a buggy
code that attempted to ignore patch text after commit log message,
which triggered in various codepaths that will always get the log
message alone and never get such an input.
(merge 66e83d9b41 jk/trailer-fixes later to maint).
* Malformed or crafted data in packstream can make our code attempt
to read or write past the allocated buffer and abort, instead of
reporting an error, which has been fixed.
* "git rebase -i" did not clear the state files correctly when a run
of "squash/fixup" is aborted and then the user manually amended the
commit instead, which has been corrected.
(merge 10d2f35436 js/rebase-i-autosquash-fix later to maint).
* When fsmonitor is in use, after operation on submodules updates
.gitmodules, we lost track of the fact that we did so and relied on
stale fsmonitor data.
(merge 43f1180814 bp/mv-submodules-with-fsmonitor later to maint).
* Fix for a long-standing bug that leaves the index file corrupt when
it shrinks during a partial commit.
(merge 6c003d6ffb jk/reopen-tempfile-truncate later to maint).
* Further fix for O_APPEND emulation on Windows
(merge eeaf7ddac7 js/mingw-o-append later to maint).
* A corner case bugfix in "git rerere" code.
(merge ad2bf0d9b4 en/rerere-multi-stage-1-fix later to maint).
* "git add ':(attr:foo)'" is not supported and is supposed to be
rejected while the command line arguments are parsed, but we fail
to reject such a command line upfront.
(merge 84d938b732 nd/attr-pathspec-fix later to maint).
* Recent update broke the reachability algorithm when refs (e.g.
tags) that point at objects that are not commit were involved,
which has been fixed.
* "git rebase" etc. in Git 2.19 fails to abort when given an empty
commit log message as result of editing, which has been corrected.
(merge a3ec9eaf38 en/sequencer-empty-edit-result-aborts later to maint).
* The code to backfill objects in lazily cloned repository did not
work correctly, which has been corrected.
(merge e68302011c jt/lazy-object-fetch-fix later to maint).
* Update error messages given by "git remote" and make them consistent.
(merge 5025425dff ms/remote-error-message-update later to maint).
* "git update-ref" learned to make both "--no-deref" and "--stdin"
work at the same time.
(merge d345e9fbe7 en/update-ref-no-deref-stdin later to maint).
* Recently added "range-diff" had a corner-case bug to cause it
segfault, which has been corrected.
(merge e467a90c7a tg/range-diff-corner-case-fix later to maint).
* The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship. Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.
(merge 829a321569 ds/commit-graph-with-grafts later to maint).
* The mailmap file update.
(merge 255eb03edf jn/mailmap-update later to maint).
* The code in "git status" sometimes hit an assertion failure. This
was caused by a structure that was reused without cleaning the data
used for the first run, which has been corrected.
(merge 3e73cc62c0 en/status-multiple-renames-to-the-same-target-fix later to maint).
* "git fetch $repo $object" in a partial clone did not correctly
fetch the asked-for object that is referenced by an object in
promisor packfile, which has been fixed.
* A corner-case bugfix.
(merge c5cbb27cb5 sm/show-superproject-while-conflicted later to maint).
* Various fixes to "diff --color-moved-ws".
* A partial clone that is configured to lazily fetch missing objects
will on-demand issue a "git fetch" request to the originating
repository to fill not-yet-obtained objects. The request has been
optimized for requesting a tree object (and not the leaf blob
objects contained in it) by telling the originating repository that
no blobs are needed.
(merge 4c7f9567ea jt/non-blob-lazy-fetch later to maint).
* The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.
(merge 4c490f3d32 sg/split-index-racefix later to maint).
* "git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.
(merge 04005834ed np/log-graph-octopus-fix later to maint).
* "git range-diff" did not work well when the compared ranges had
changes in submodules and the "--submodule=log" was used.
* The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.
(merge f67b980771 jk/run-command-notdot later to maint).
* A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.
(merge 34204c8166 js/pack-objects-mutex-init-fix later to maint).
* Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.
(merge ffd04e92e2 js/diff-notice-has-drive-prefix later to maint).
* The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.
(merge b072a25fad jc/receive-deny-current-branch-fix later to maint).
* The logic to determine the archive type "git archive" uses did not
correctly kick in for "git archive --remote", which has been
corrected.
* "git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.
(merge 5dcfbf564c js/shallow-and-fetch-prune later to maint).
* Some codepaths failed to form a proper URL when .gitmodules record
the URL to a submodule repository as relative to the repository of
superproject, which has been corrected.
(merge e0a862fdaf sb/submodule-url-to-absolute later to maint).
* "git fetch" over protocol v2 into a shallow repository failed to
fetch full history behind a new tip of history that was diverged
before the cut-off point of the history that was previously fetched
shallowly.
* The command line completion machinery (in contrib/) has been
updated to allow the completion script to tweak the list of options
that are reported by the parse-options machinery correctly.
(merge 276b49ff34 nd/completion-negation later to maint).
* Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense. This has been corrected.
(merge 669b1d2aae md/exclude-promisor-objects-fix later to maint).
* A regression in Git 2.12 era made "git fsck" fall into an infinite
loop while processing truncated loose objects.
(merge 18ad13e5b2 jk/detect-truncated-zlib-input later to maint).
* "git ls-remote $there foo" was broken by recent update for the
protocol v2 and stopped showing refs that match 'foo' that are not
refs/{heads,tags}/foo, which has been fixed.
(merge 6a139cdd74 jk/proto-v2-ref-prefix-fix later to maint).
* Additional comment on a tricky piece of code to help developers.
(merge 0afbe3e806 jk/stream-pack-non-delta-clarification later to maint).
* A couple of tests used to leave the repository in a state that is
deliberately corrupt, which have been corrected.
(merge aa984dbe5e ab/pack-tests-cleanup later to maint).
* The submodule support has been updated to read from the blob at
HEAD:.gitmodules when the .gitmodules file is missing from the
working tree.
(merge 2b1257e463 ao/submodule-wo-gitmodules-checked-out later to maint).
* "git fetch" was a bit loose in parsing responses from the other side
when talking over the protocol v2.
* "git rev-parse --exclude=* --branches --branches" (i.e. first
saying "add only things that do not match '*' out of all branches"
and then adding all branches, without any exclusion this time)
worked as expected, but "--exclude=* --all --all" did not work the
same way, which has been fixed.
(merge 5221048092 ag/rev-parse-all-exclude-fix later to maint).
* "git send-email --transfer-encoding=..." in recent versions of Git
sometimes produced an empty "Content-Transfer-Encoding:" header,
which has been corrected.
(merge 3c88e46f1a al/send-email-auto-cte-fixup later to maint).
* The interface into "xdiff" library used to discover the offset and
size of a generated patch hunk by first formatting it into the
textual hunk header "@@ -n,m +k,l @@" and then parsing the numbers
out. A new interface has been introduced to allow callers a more
direct access to them.
(merge 5eade0746e jk/xdiff-interface later to maint).
* Pathspec matching against a tree object were buggy when negative
pathspec elements were involved, which has been fixed.
(merge b7845cebc0 nd/tree-walk-path-exclusion later to maint).
* "git merge" and "git pull" that merges into an unborn branch used
to completely ignore "--verify-signatures", which has been
corrected.
(merge 01a31f3bca jk/verify-sig-merge-into-void later to maint).
* "git rebase --autostash" did not correctly re-attach the HEAD at times.
* "rev-parse --exclude=<pattern> --branches=<pattern>" etc. did not
quite work, which has been corrected.
(merge 9ab9b5df0e ra/rev-parse-exclude-glob later to maint).
* When editing a patch in a "git add -i" session, a hunk could be
made to no-op. The "git apply" program used to reject a patch with
such a no-op hunk to catch user mistakes, but it is now updated to
explicitly allow a no-op hunk in an edited patch.
(merge 22cb3835b9 js/apply-recount-allow-noop later to maint).
* The URL to an MSDN page in a comment has been updated.
(merge 2ef2ae2917 js/mingw-msdn-url later to maint).
* "git ls-remote --sort=<thing>" can feed an object that is not yet
available into the comparison machinery and segfault, which has
been corrected to check such a request upfront and reject it.
* When "git bundle" aborts due to an empty commit ranges
(i.e. resulting in an empty pack), it left a file descriptor to an
lockfile open, which resulted in leftover lockfile on Windows where
you cannot remove a file with an open file descriptor. This has
been corrected.
(merge 2c8ee1f53c jk/close-duped-fd-before-unlock-for-bundle later to maint).
* "git format-patch --stat=<width>" can be used to specify the width
used by the diffstat (shown in the cover letter).
(merge 284aeb7e60 nd/format-patch-cover-letter-stat-width later to maint).
* The way .git/index and .git/sharedindex* files were initially
created gave these files different perm bits until they were
adjusted for shared repository settings. This was made consistent.
(merge c9d6c78870 cc/shared-index-permbits later to maint).
* "git rebase --stat" to transplant a piece of history onto a totally
unrelated history were not working before and silently showed wrong
result. With the recent reimplementation in C, it started to instead
die with an error message, as the original logic was not prepared
to cope with this case. This has now been fixed.
* The advice message to tell the user to migrate an existing graft
file to the replace system when a graft file was read was shown
even when "git replace --convert-graft-file" command, which is the
way the message suggests to use, was running, which made little
sense.
(merge 8821e90a09 ab/replace-graft-with-replace-advice later to maint).
* "git diff --raw" lost ellipses to adjust the output columns for
some time now, but the documentation still showed them.
* Code cleanup, docfix, build fix, etc.
(merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint).
(merge b9b07efdb2 tg/conflict-marker-size later to maint).
(merge fa0aeea770 sg/doc-trace-appends later to maint).
(merge d64324cb60 tb/void-check-attr later to maint).
(merge c3b9bc94b9 en/double-semicolon-fix later to maint).
(merge 79336116f5 sg/t3701-tighten-trace later to maint).
(merge 801fa63a90 jk/dev-build-format-security later to maint).
(merge 0597dd62ba sb/string-list-remove-unused later to maint).
(merge db2d36fad8 bw/protocol-v2 later to maint).
(merge 456d7cd3a9 sg/split-index-test later to maint).
(merge 7b6057c852 tq/refs-internal-comment-fix later to maint).
(merge 29e8dc50ad tg/t5551-with-curl-7.61.1 later to maint).
(merge 55f6bce2c9 fe/doc-updates later to maint).
(merge 7987d2232d jk/check-everything-connected-is-long-gone later to maint).
(merge 4ba3c9be47 dz/credential-doc-url-matching-rules later to maint).
(merge 4c399442f7 ma/commit-graph-docs later to maint).
(merge fc0503b04e ma/t1400-undebug-test later to maint).
(merge e56b53553a nd/packobjectshook-doc-fix later to maint).
(merge c56170a0c4 ma/mailing-list-address-in-git-help later to maint).
(merge 6e8fc70fce rs/sequencer-oidset-insert-avoids-dups later to maint).
(merge ad0b8f9575 mw/doc-typofixes later to maint).
(merge d9f079ad1a jc/how-to-document-api later to maint).
(merge b1492bf315 ma/t7005-bash-workaround later to maint).
(merge ac1f98a0df du/rev-parse-is-plumbing later to maint).
(merge ca8ed443a5 mm/doc-no-dashed-git later to maint).
(merge ce366a8144 du/get-tar-commit-id-is-plumbing later to maint).
(merge 61018fe9e0 du/cherry-is-plumbing later to maint).
(merge c7e5fe79b9 sb/strbuf-h-update later to maint).
(merge 8d2008196b tq/branch-create-wo-branch-get later to maint).
(merge 2e3c894f4b tq/branch-style-fix later to maint).
(merge c5d844af9c sg/doc-show-branch-typofix later to maint).
(merge 081d91618b ah/doc-updates later to maint).
(merge b84c783882 jc/cocci-preincr later to maint).
(merge 5e495f8122 uk/merge-subtree-doc-update later to maint).
(merge aaaa881822 jk/uploadpack-packobjectshook-fix later to maint).
(merge 3063477445 tb/char-may-be-unsigned later to maint).
(merge 8c64bc9420 sg/test-rebase-editor-fix later to maint).
(merge 71571cd7d6 ma/sequencer-do-reset-saner-loop-termination later to maint).
(merge 9a4cb8781e cb/notes-freeing-always-null-fix later to maint).
(merge 3006f5ee16 ma/reset-doc-rendering-fix later to maint).
(merge 4c2eb06419 sg/daemon-test-signal-fix later to maint).
(merge d27525e519 ss/msvc-strcasecmp later to maint).
----------------------------------------------------------------
Changes since v2.19.0 are as follows:
Aaron Lindsay (1):
send-email: avoid empty transfer encoding header
Alban Gruin (21):
sequencer: make three functions and an enum from sequencer.c public
rebase -i: rewrite append_todo_help() in C
editor: add a function to launch the sequence editor
rebase -i: rewrite the edit-todo functionality in C
sequencer: add a new function to silence a command, except if it fails
rebase -i: rewrite setup_reflog_action() in C
rebase -i: rewrite checkout_onto() in C
sequencer: refactor append_todo_help() to write its message to a buffer
sequencer: change the way skip_unnecessary_picks() returns its result
t3404: todo list with commented-out commands only aborts
rebase -i: rewrite complete_action() in C
rebase -i: remove unused modes and functions
rebase -i: implement the logic to initialize $revisions in C
rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
rebase -i: rewrite write_basic_state() in C
rebase -i: rewrite init_basic_state() in C
rebase -i: implement the main part of interactive rebase as a builtin
rebase--interactive2: rewrite the submodes of interactive rebase in C
rebase -i: remove git-rebase--interactive.sh
rebase -i: move rebase--helper modes to rebase--interactive
p3400: replace calls to `git checkout -b' by `git checkout -B'
Alexander Pyhalov (1):
t7005-editor: quote filename to fix whitespace-issue
Alexander Shopov (3):
l10n: bg.po: Updated Bulgarian translation (4185t)
l10n: bg.po: Updated Bulgarian translation (4185t)
l10n: bg.po: Updated Bulgarian translation (4187t)
Andreas Gruenbacher (1):
rev-parse: clear --exclude list after 'git rev-parse --all'
Andreas Heiduk (6):
doc: clarify boundaries of 'git worktree list --porcelain'
doc: fix ASCII art tab spacing
doc: fix inappropriate monospace formatting
doc: fix descripion for 'git tag --format'
doc: fix indentation of listing blocks in gitweb.conf.txt
doc: fix formatting in git-update-ref
Anton Serbulov (1):
mingw: fix getcwd when the parent directory cannot be queried
Antonio Ospite (10):
submodule: add a print_config_from_gitmodules() helper
submodule: factor out a config_set_in_gitmodules_file_gently function
t7411: merge tests 5 and 6
t7411: be nicer to future tests and really clean things up
submodule--helper: add a new 'config' subcommand
submodule: use the 'submodule--helper config' command
t7506: clean up .gitmodules properly before setting up new scenario
submodule: add a helper to check if it is safe to write to .gitmodules
submodule: support reading .gitmodules when it's not in the working tree
t/helper: add test-submodule-nested-repo-config
Ben Peart (19):
checkout: optimize "git checkout -b <new_branch>"
git-mv: allow submodules and fsmonitor to work together
t/README: correct spelling of "uncommon"
preload-index: use git_env_bool() not getenv() for customization
fsmonitor: update GIT_TEST_FSMONITOR support
read-cache: update TEST_GIT_INDEX_VERSION support
preload-index: update GIT_FORCE_PRELOAD_TEST support
read-cache: clean up casting and byte decoding
eoie: add End of Index Entry (EOIE) extension
config: add new index.threads config setting
read-cache: load cache extensions on a worker thread
ieot: add Index Entry Offset Table (IEOT) extension
read-cache: load cache entries on worker threads
reset: don't compute unstaged changes after reset when --quiet
reset: add new reset.quiet config setting
reset: warn when refresh_index() takes more than 2 seconds
speed up refresh_index() by utilizing preload_index()
add: speed up cmd_add() by utilizing read_cache_preload()
refresh_index: remove unnecessary calls to preload_index()
Brandon Williams (1):
config: document value 2 for protocol.version
Brendan Forster (1):
http: add support for disabling SSL revocation checks in cURL
Carlo Marcelo Arenas Belón (8):
unpack-trees: avoid dead store for struct progress
multi-pack-index: avoid dead store for struct progress
read-cache: use of memory after it is freed
commit-slabs: move MAYBE_UNUSED out
khash: silence -Wunused-function for delta-islands
compat: make sure git_mmap is not expected to write
sequencer: cleanup for gcc warning in non developer mode
builtin/notes: remove unnecessary free
Christian Couder (3):
pack-objects: refactor code into compute_layer_order()
pack-objects: move tree_depth into 'struct packing_data'
pack-objects: move 'layer' into 'struct packing_data'
Christian Hesse (2):
subtree: add build targets 'man' and 'html'
subtree: make install targets depend on build targets
Christopher Díaz Riveros (2):
l10n: es.po v2.20.0 round 1
l10n: es.po v2.20.0 round 3
Daniels Umanovskis (3):
doc: move git-rev-parse from porcelain to plumbing
doc: move git-get-tar-commit-id to plumbing
doc: move git-cherry to plumbing
David Zych (1):
doc: clarify gitcredentials path component matching
Denton Liu (3):
mergetool: accept -g/--[no-]gui as arguments
completion: support `git mergetool --[no-]gui`
doc: document diff/merge.guitool config keys
Derrick Stolee (93):
multi-pack-index: add design document
multi-pack-index: add format details
multi-pack-index: add builtin
multi-pack-index: add 'write' verb
midx: write header information to lockfile
multi-pack-index: load into memory
t5319: expand test data
packfile: generalize pack directory list
multi-pack-index: read packfile list
multi-pack-index: write pack names in chunk
midx: read pack names into array
midx: sort and deduplicate objects from packfiles
midx: write object ids in a chunk
midx: write object id fanout chunk
midx: write object offsets
config: create core.multiPackIndex setting
midx: read objects from multi-pack-index
midx: use midx in abbreviation calculations
midx: use existing midx when writing new one
midx: use midx in approximate_object_count
midx: prevent duplicate packfile loads
packfile: skip loading index if in multi-pack-index
midx: clear midx on repack
commit-reach: move walk methods from commit.c
commit.h: remove method declarations
commit-reach: move ref_newer from remote.c
commit-reach: move commit_contains from ref-filter
upload-pack: make reachable() more generic
upload-pack: refactor ok_to_give_up()
upload-pack: generalize commit date cutoff
commit-reach: move can_all_from_reach_with_flags
test-reach: create new test tool for ref_newer
test-reach: test in_merge_bases
test-reach: test is_descendant_of
test-reach: test get_merge_bases_many
test-reach: test reduce_heads
test-reach: test can_all_from_reach_with_flags
test-reach: test commit_contains
commit-reach: replace ref_newer logic
commit-reach: make can_all_from_reach... linear
commit-reach: use can_all_from_reach
multi-pack-index: provide more helpful usage info
multi-pack-index: store local property
midx: mark bad packed objects
midx: stop reporting garbage
midx: fix bug that skips midx with alternates
packfile: add all_packs list
treewide: use get_all_packs
midx: test a few commands that use get_all_packs
pack-objects: consider packs in multi-pack-index
commit-graph: update design document
test-repository: properly init repo
commit-graph: not compatible with replace objects
commit-graph: not compatible with grafts
commit-graph: not compatible with uninitialized repo
commit-graph: close_commit_graph before shallow walk
commit-graph: define GIT_TEST_COMMIT_GRAPH
t3206-range-diff.sh: cover single-patch case
t5318: use test_oid for HASH_LEN
multi-pack-index: add 'verify' verb
multi-pack-index: verify bad header
multi-pack-index: verify corrupt chunk lookup table
multi-pack-index: verify packname order
multi-pack-index: verify missing pack
multi-pack-index: verify oid fanout order
multi-pack-index: verify oid lookup order
multi-pack-index: fix 32-bit vs 64-bit size check
multi-pack-index: verify object offsets
multi-pack-index: report progress during 'verify'
fsck: verify multi-pack-index
commit-reach: properly peel tags
commit-reach: fix memory and flag leaks
commit-reach: cleanups in can_all_from_reach...
commit-graph: clean up leaked memory during write
commit-graph: reduce initial oid allocation
midx: fix broken free() in close_midx()
contrib: add coverage-diff script
ci: add optional test variables
commit-reach: fix first-parent heuristic
midx: close multi-pack-index on repack
multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX
packfile: close multi-pack-index in close_all_packs
prio-queue: add 'peek' operation
test-reach: add run_three_modes method
test-reach: add rev-list tests
revision.c: begin refactoring --topo-order logic
commit/revisions: bookkeeping before refactoring
revision.c: generation-based topo-order algorithm
t6012: make rev-list tests more interesting
commit-reach: implement get_reachable_subset
test-reach: test get_reachable_subset
remote: make add_missing_tags() linear
pack-objects: ignore ambiguous object warnings
Elijah Newren (14):
Remove superfluous trailing semicolons
t4200: demonstrate rerere segfault on specially crafted merge
rerere: avoid buffer overrun
update-ref: fix type of update_flags variable to match its usage
update-ref: allow --no-deref with --stdin
sequencer: fix --allow-empty-message behavior, make it smarter
merge-recursive: set paths correctly when three-way merging content
merge-recursive: avoid wrapper function when unnecessary and wasteful
merge-recursive: remove final remaining caller of merge_file_one()
merge-recursive: rename merge_file_1() and merge_content()
commit: fix erroneous BUG, 'multiple renames on the same target? how?'
merge-recursive: improve auto-merging messages with path collisions
merge-recursive: avoid showing conflicts with merge branch before HEAD
fsck: move fsck_head_link() to get_default_heads() to avoid some globals
Eric Sunshine (26):
format-patch: allow additional generated content in make_cover_letter()
format-patch: add --interdiff option to embed diff in cover letter
format-patch: teach --interdiff to respect -v/--reroll-count
interdiff: teach show_interdiff() to indent interdiff
log-tree: show_log: make commentary block delimiting reusable
format-patch: allow --interdiff to apply to a lone-patch
range-diff: respect diff_option.file rather than assuming 'stdout'
range-diff: publish default creation factor
range-diff: relieve callers of low-level configuration burden
format-patch: add --range-diff option to embed diff in cover letter
format-patch: extend --range-diff to accept revision range
format-patch: teach --range-diff to respect -v/--reroll-count
format-patch: add --creation-factor tweak for --range-diff
format-patch: allow --range-diff to apply to a lone-patch
worktree: don't die() in library function find_worktree()
worktree: move delete_git_dir() earlier in file for upcoming new callers
worktree: generalize delete_git_dir() to reduce code duplication
worktree: prepare for more checks of whether path can become worktree
worktree: disallow adding same path multiple times
worktree: teach 'add' to respect --force for registered but missing path
worktree: teach 'move' to override lock when --force given twice
worktree: teach 'remove' to override lock when --force given twice
worktree: delete .git/worktrees if empty after 'remove'
doc-diff: fix non-portable 'man' invocation
doc-diff: add --clean mode to remove temporary working gunk
doc/Makefile: drop doc-diff worktree and temporary files on "make clean"
Frederick Eaton (3):
git-archimport.1: specify what kind of Arch we're talking about
git-column.1: clarify initial description, provide examples
git-describe.1: clarify that "human readable" is also git-readable
Greg Hurrell (1):
doc: update diff-format.txt for removed ellipses in --raw
James Knight (1):
build: link with curl-defined linker flags
Jann Horn (2):
patch-delta: fix oob read
patch-delta: consistently report corruption
Jean-Noël Avila (3):
l10n: fr.po v2.20 rnd 1
i18n: fix small typos
l10n: fr.po v2.20.0 round 3
Jeff Hostetler (2):
t0051: test GIT_TRACE to a windows named pipe
mingw: fix mingw_open_append to work with named pipes
Jeff King (98):
branch: make "-l" a synonym for "--list"
Add delta-islands.{c,h}
pack-objects: add delta-islands support
repack: add delta-islands support
t5320: tests for delta islands
t/perf: factor boilerplate out of test_perf
t/perf: factor out percent calculations
t/perf: add infrastructure for measuring sizes
t/perf: add perf tests for fetches from a bitmapped server
pack-bitmap: save "have" bitmap from walk
pack-objects: reuse on-disk deltas for thin "have" objects
SubmittingPatches: mention doc-diff
rev-list: make empty --stdin not an error
trailer: use size_t for string offsets
trailer: use size_t for iterating trailer list
trailer: pass process_trailer_opts to trailer_info_get()
interpret-trailers: tighten check for "---" patch boundary
interpret-trailers: allow suppressing "---" divider
pretty, ref-filter: format %(trailers) with no_divider option
sequencer: ignore "---" divider when parsing trailers
append_signoff: use size_t for string offsets
coccinelle: use <...> for function exclusion
introduce hasheq() and oideq()
convert "oidcmp() == 0" to oideq()
convert "hashcmp() == 0" to hasheq()
convert "oidcmp() != 0" to "!oideq()"
convert "hashcmp() != 0" to "!hasheq()"
convert hashmap comparison functions to oideq()
read-cache: use oideq() in ce_compare functions
show_dirstat: simplify same-content check
doc-diff: always use oids inside worktree
test-delta: read input into a heap buffer
t5303: test some corrupt deltas
patch-delta: handle truncated copy parameters
t5303: use printf to generate delta bases
doc/git-branch: remove obsolete "-l" references
bitmap_has_sha1_in_uninteresting(): drop BUG check
t5310: test delta reuse with bitmaps
traverse_bitmap_commit_list(): don't free result
pack-bitmap: drop "loaded" flag
reopen_tempfile(): truncate opened file
doc-diff: force worktree add
config.mak.dev: add -Wformat-security
pack-objects: handle island check for "external" delta base
receive-pack: update comment with check_everything_connected
submodule--helper: use "--" to signal end of clone options
submodule-config: ban submodule urls that start with dash
submodule-config: ban submodule paths that start with a dash
fsck: detect submodule urls starting with dash
fsck: detect submodule paths starting with dash
more oideq/hasheq conversions
transport: drop refnames from for_each_alternate_ref
test-tool: show tool list on error
config.mak.dev: enable -Wunused-function
run-command: mark path lookup errors with ENOENT
t5410: use longer path for sample script
upload-pack: fix broken if/else chain in config callback
t1450: check large blob in trailing-garbage test
check_stream_sha1(): handle input underflow
cat-file: handle streaming failures consistently
ls-remote: do not send ref prefixes for patterns
ls-remote: pass heads/tags prefixes to transport
read_istream_pack_non_delta(): document input handling
xdiff: provide a separate emit callback for hunks
xdiff-interface: provide a separate consume callback for hunks
rev-list: handle flags for --indexed-objects
approxidate: handle pending number for "specials"
pathspec: handle non-terminated strings with :(attr)
diff: avoid generating unused hunk header lines
diff: discard hunk headers for patch-ids earlier
diff: use hunk callback for word-diff
combine-diff: use an xdiff hunk callback
diff: convert --check to use a hunk callback
range-diff: use a hunk callback
xdiff-interface: drop parse_hunk_header()
apply: mark include/exclude options as NONEG
am: handle --no-patch-format option
ls-files: mark exclude options as NONEG
pack-objects: mark index-version option as NONEG
cat-file: mark batch options with NONEG
status: mark --find-renames option with NONEG
format-patch: mark "--no-numbered" option with NONEG
show-branch: mark --reflog option as NONEG
tag: mark "--message" option with NONEG
cat-file: report an error on multiple --batch options
apply: return -1 from option callback instead of calling exit(1)
parse-options: drop OPT_DATE()
assert NOARG/NONEG behavior of parse-options callbacks
midx: double-check large object write loop
merge: extract verify_merge_signature() helper
merge: handle --verify-signatures for unborn branch
pull: handle --verify-signatures for unborn branch
approxidate: fix NULL dereference in date_time()
bundle: dup() output descriptor closer to point-of-use
pack-objects: fix tree_depth and layer invariants
pack-objects: zero-initialize tree_depth/layer arrays
pack-objects: fix off-by-one in delta-island tree-depth computation
t5562: fix perl path
Jiang Xin (5):
l10n: zh_CN: review for git v2.19.0 l10n
l10n: git.pot: v2.20.0 round 1 (254 new, 27 removed)
l10n: git.pot: v2.20.0 round 2 (2 new, 2 removed)
l10n: git.pot: v2.20.0 round 3 (5 new, 3 removed)
l10n: zh_CN: for git v2.20.0 l10n round 1 to 3
Johannes Schindelin (64):
rebase -i --autosquash: demonstrate a problem skipping the last squash
rebase -i: be careful to wrap up fixup/squash chains
compat/poll: prepare for targeting Windows Vista
mingw: set _WIN32_WINNT explicitly for Git for Windows
mingw: bump the minimum Windows version to Vista
builtin rebase: prepare for builtin rebase -i
rebase -i: clarify what happens on a failed `exec`
rebase -i: introduce the 'break' command
getpwuid(mingw): initialize the structure only once
getpwuid(mingw): provide a better default for the user name
mingw: use domain information for default email
http: add support for selecting SSL backends at runtime
pack-objects: fix typo 'detla' -> 'delta'
pack-objects (mingw): demonstrate a segmentation fault with large deltas
pack-objects (mingw): initialize `packing_data` mutex in the correct spot
rebase (autostash): avoid duplicate call to state_dir_path()
rebase (autostash): store the full OID in <state-dir>/autostash
rebase (autostash): use an explicit OID to apply the stash
mingw: factor out code to set stat() data
rebase --autostash: demonstrate a problem with dirty submodules
rebase --autostash: fix issue with dirty submodules
mingw: load system libraries the recommended way
mingw: ensure `getcwd()` reports the correct case
repack: point out a bug handling stale shallow info
shallow: offer to prune only non-existing entries
repack -ad: prune the list of shallow commits
http: when using Secure Channel, ignore sslCAInfo by default
t7800: fix quoting
mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)
config: rename `dummy` parameter to `cb` in git_default_config()
config: allow for platform-specific core.* config settings
config: move Windows-specific config settings into compat/mingw.c
mingw: unset PERL5LIB by default
mingw: fix isatty() after dup2()
t3404: decouple some test cases from outcomes of previous test cases
t3418: decouple test cases from a previous `rebase -p` test case
tests: optionally skip `git rebase -p` tests
Windows: force-recompile git.res for differing architectures
built-in rebase: demonstrate regression with --autostash
built-in rebase --autostash: leave the current branch alone if possible
Update .mailmap
rebase -r: demonstrate bug with conflicting merges
rebase -r: do not write MERGE_HEAD unless needed
rebase -i: include MERGE_HEAD into files to clean up
built-in rebase --skip/--abort: clean up stale .git/<name> files
status: rebase and merge can be in progress at the same time
apply --recount: allow "no-op hunks"
rebase: consolidate clean-up code before leaving reset_head()
rebase: prepare reset_head() for more flags
built-in rebase: reinstate `checkout -q` behavior where appropriate
tests: fix GIT_TEST_INSTALLED's PATH to include t/helper/
tests: respect GIT_TEST_INSTALLED when initializing repositories
t/lib-gettext: test installed git-sh-i18n if GIT_TEST_INSTALLED is set
mingw: use `CreateHardLink()` directly
rebase: really just passthru the `git am` options
rebase: validate -C<n> and --whitespace=<mode> parameters early
config: report a bug if git_dir exists without commondir
tests: do not require Git to be built when testing an installed Git
tests: explicitly use `git.exe` on Windows
mingw: replace an obsolete link with the superseding one
legacy-rebase: backport -C<n> and --whitespace=<option> checks
rebase: warn about the correct tree's OID
rebase: fix GIT_REFLOG_ACTION regression
rebase --stat: fix when rebasing to an unrelated history
Johannes Sixt (4):
diff: don't attempt to strip prefix from absolute Windows paths
rebase -i: recognize short commands without arguments
t3404-rebase-interactive: test abbreviated commands
rebase docs: fix incorrect format of the section Behavioral Differences
Jonathan Nieder (9):
gc: improve handling of errors reading gc.log
gc: exit with status 128 on failure
gc: do not return error for prior errors in daemonized mode
commit-reach: correct accidental #include of C file
mailmap: consistently normalize brian m. carlson's name
git doc: direct bug reporters to mailing list archive
eoie: default to not writing EOIE section
ieot: default to not writing IEOT section
index: make index.threads=true enable ieot and eoie
Jonathan Tan (15):
fetch-object: unify fetch_object[s] functions
fetch-object: set exact_oid when fetching
connected: document connectivity in partial clones
fetch: in partial clone, check presence of targets
fetch-pack: avoid object flags if no_dependents
fetch-pack: exclude blobs when lazy-fetching trees
transport: allow skipping of ref listing
transport: do not list refs if possible
transport: list refs before fetch if necessary
fetch: do not list refs if fetching only hashes
cache-tree: skip some blob checks in partial clone
upload-pack: make have_obj not global
upload-pack: make want_obj not global
upload-pack: clear flags before each v2 request
fetch-pack: be more precise in parsing v2 response
Jordi Mas (2):
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Steadmon (4):
fuzz: add basic fuzz testing target.
fuzz: add fuzz testing for packfile indices.
archive: initialize archivers earlier
Makefile: use FUZZ_CXXFLAGS for linking fuzzers
Joshua Watt (1):
send-email: explicitly disable authentication
Junio C Hamano (37):
Revert "doc/Makefile: drop doc-diff worktree and temporary files on "make clean""
Initial batch post 2.19
Second batch post 2.19
Git 2.14.5
Git 2.15.3
Git 2.16.5
Git 2.17.2
Git 2.18.1
Git 2.19.1
t0000: do not get self-test disrupted by environment warnings
CodingGuidelines: document the API in *.h files
Declare that the next one will be named 2.20
Third batch for 2.20
rebase: fix typoes in error messages
Fourth batch for 2.20
Revert "subtree: make install targets depend on build targets"
Fifth batch for 2.20
receive: denyCurrentBranch=updateinstead should not blindly update
cocci: simplify "if (++u > 1)" to "if (u++)"
fsck: s/++i > 1/i++/
http: give curl version warnings consistently
Sixth batch for 2.20
Seventh batch for 2.20
fetch: replace string-list used as a look-up table with a hashmap
rebase: apply cocci patch
Eighth batch for 2.20
Ninth batch for 2.20
Makefile: ease dynamic-gettext-poison transition
Tenth batch for 2.20
Git 2.20-rc0
RelNotes: name the release properly
Prepare for 2.20-rc1
Git 2.19.2
Git 2.20-rc1
format-patch: do not let its diff-options affect --range-diff
Git 2.20-rc2
Git 2.20
Karsten Blees (2):
mingw: replace MSVCRT's fstat() with a Win32-based implementation
mingw: implement nanosecond-precision file times
Loo Rong Jie (1):
win32: replace pthread_cond_*() with much simpler code
Lucas De Marchi (1):
range-diff: allow to diff files regardless of submodule config
Luke Diamand (3):
git-p4: do not fail in verbose mode for missing 'fileSize' key
git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved
git-p4: fully support unshelving changelists
Martin Ågren (15):
Doc: use `--type=bool` instead of `--bool`
git-config.txt: fix 'see: above' note
git-commit-graph.txt: fix bullet lists
git-commit-graph.txt: typeset more in monospace
git-commit-graph.txt: refer to "*commit*-graph file"
Doc: refer to the "commit-graph file" with dash
t1400: drop debug `echo` to actually execute `test`
builtin/commit-graph.c: UNLEAK variables
sequencer: break out of loop explicitly
git-reset.txt: render tables correctly under Asciidoctor
git-reset.txt: render literal examples as monospace
range-diff: always pass at least minimal diff options
RelNotes 2.20: move some items between sections
RelNotes 2.20: clarify sentence
RelNotes 2.20: drop spurious double quote
Matthew DeVore (19):
list-objects: store common func args in struct
list-objects: refactor to process_tree_contents
list-objects: always parse trees gently
t/README: reformat Do, Don't, Keep in mind lists
Documentation: add shell guidelines
tests: standardize pipe placement
t/*: fix ordering of expected/observed arguments
tests: don't swallow Git errors upstream of pipes
t9109: don't swallow Git errors upstream of pipes
tests: order arguments to git-rev-list properly
rev-list: handle missing tree objects properly
revision: mark non-user-given objects instead
list-objects-filter: use BUG rather than die
list-objects-filter-options: do not over-strbuf_init
list-objects-filter: implement filter tree:0
filter-trees: code clean-up of tests
list-objects: support for skipping tree traversal
Documentation/git-log.txt: do not show --exclude-promisor-objects
exclude-promisor-objects: declare when option is allowed
Max Kirillov (1):
http-backend test: make empty CONTENT_LENGTH test more realistic
Michael Witten (3):
docs: typo: s/go/to/
docs: graph: remove unnecessary `graph_update()' call
docs: typo: s/isimilar/similar/
Michał Górny (6):
gpg-interface.c: detect and reject multiple signatures on commits
gpg-interface.c: use flags to determine key/signer info presence
gpg-interface.c: support getting key fingerprint via %GF format
gpg-interface.c: obtain primary key fingerprint as well
t/t7510-signed-commit.sh: Add %GP to custom format checks
t/t7510-signed-commit.sh: add signing subkey to Eris Discordia key
Mihir Mehta (1):
doc: fix a typo and clarify a sentence
Minh Nguyen (1):
l10n: vi.po: fix typo in pack-objects
Nguyễn Thái Ngọc Duy (170):
clone: report duplicate entries on case-insensitive filesystems
trace.h: support nested performance tracing
unpack-trees: add performance tracing
unpack-trees: optimize walking same trees with cache-tree
unpack-trees: reduce malloc in cache-tree walk
unpack-trees: reuse (still valid) cache-tree from src_index
unpack-trees: add missing cache invalidation
cache-tree: verify valid cache-tree in the test suite
Document update for nd/unpack-trees-with-cache-tree
bisect.c: make show_list() build again
t/helper: keep test-tool command list sorted
t/helper: merge test-dump-untracked-cache into test-tool
t/helper: merge test-pkt-line into test-tool
t/helper: merge test-parse-options into test-tool
t/helper: merge test-dump-fsmonitor into test-tool
Makefile: add a hint about TEST_BUILTINS_OBJS
config.txt: follow camelCase naming
config.txt: move fetch part out to a separate file
config.txt: move format part out to a separate file
config.txt: move gitcvs part out to a separate file
config.txt: move gui part out to a separate file
config.txt: move pull part out to a separate file
config.txt: move push part out to a separate file
config.txt: move receive part out to a separate file
config.txt: move sendemail part out to a separate file
config.txt: move sequence.editor out of "core" part
config.txt: move submodule part out to a separate file
archive.c: remove implicit dependency the_repository
status: show progress bar if refreshing the index takes too long
add: do not accept pathspec magic 'attr'
completion: support "git fetch --multiple"
read-cache.c: remove 'const' from index_has_changes()
diff.c: reduce implicit dependency on the_index
combine-diff.c: remove implicit dependency on the_index
blame.c: rename "repo" argument to "r"
diff.c: remove the_index dependency in textconv() functions
grep.c: remove implicit dependency on the_index
diff.c: remove implicit dependency on the_index
read-cache.c: remove implicit dependency on the_index
diff-lib.c: remove implicit dependency on the_index
ll-merge.c: remove implicit dependency on the_index
merge-blobs.c: remove implicit dependency on the_index
merge.c: remove implicit dependency on the_index
patch-ids.c: remove implicit dependency on the_index
sha1-file.c: remove implicit dependency on the_index
rerere.c: remove implicit dependency on the_index
userdiff.c: remove implicit dependency on the_index
line-range.c: remove implicit dependency on the_index
submodule.c: remove implicit dependency on the_index
tree-diff.c: remove implicit dependency on the_index
ws.c: remove implicit dependency on the_index
revision.c: remove implicit dependency on the_index
revision.c: reduce implicit dependency the_repository
read-cache.c: optimize reading index format v4
config.txt: correct the note about uploadpack.packObjectsHook
help -a: improve and make --verbose default
refs.c: indent with tabs, not spaces
Add a place for (not) sharing stuff between worktrees
submodule.c: remove some of the_repository references
completion: fix __gitcomp_builtin no longer consider extra options
t1300: extract and use test_cmp_config()
worktree: add per-worktree config files
refs: new ref types to make per-worktree refs visible to all worktrees
revision.c: correct a parameter name
revision.c: better error reporting on ref from different worktrees
fsck: check HEAD and reflog from other worktrees
reflog expire: cover reflog from all worktrees
Update makefile in preparation for Documentation/config/*.txt
config.txt: move advice.* to a separate file
config.txt: move core.* to a separate file
config.txt: move add.* to a separate file
config.txt: move alias.* to a separate file
config.txt: move am.* to a separate file
config.txt: move apply.* to a separate file
config.txt: move blame.* to a separate file
config.txt: move branch.* to a separate file
config.txt: move browser.* to a separate file
config.txt: move checkout.* to a separate file
config.txt: move clean.* to a separate file
config.txt: move color.* to a separate file
config.txt: move column.* to a separate file
config.txt: move commit.* to a separate file
config.txt: move credential.* to a separate file
config.txt: move completion.* to a separate file
config.txt: move diff-config.txt to config/
config.txt: move difftool.* to a separate file
config.txt: move fastimport.* to a separate file
config.txt: move fetch-config.txt to config/
config.txt: move filter.* to a separate file
config.txt: move format-config.txt to config/
config.txt: move fmt-merge-msg-config.txt to config/
config.txt: move fsck.* to a separate file
config.txt: move gc.* to a separate file
config.txt: move gitcvs-config.txt to config/
config.txt: move gitweb.* to a separate file
config.txt: move grep.* to a separate file
config.txt: move gpg.* to a separate file
config.txt: move gui-config.txt to config/
config.txt: move guitool.* to a separate file
config.txt: move help.* to a separate file
config.txt: move ssh.* to a separate file
config.txt: move http.* to a separate file
config.txt: move i18n.* to a separate file
git-imap-send.txt: move imap.* to a separate file
config.txt: move index.* to a separate file
config.txt: move init.* to a separate file
config.txt: move instaweb.* to a separate file
config.txt: move interactive.* to a separate file
config.txt: move log.* to a separate file
config.txt: move mailinfo.* to a separate file
config.txt: move mailmap.* to a separate file
config.txt: move man.* to a separate file
config.txt: move merge-config.txt to config/
config.txt: move mergetool.* to a separate file
config.txt: move notes.* to a separate file
config.txt: move pack.* to a separate file
config.txt: move pager.* to a separate file
config.txt: move pretty.* to a separate file
config.txt: move protocol.* to a separate file
config.txt: move pull-config.txt to config/
config.txt: move push-config.txt to config/
config.txt: move rebase-config.txt to config/
config.txt: move receive-config.txt to config/
config.txt: move remote.* to a separate file
config.txt: move remotes.* to a separate file
config.txt: move repack.* to a separate file
config.txt: move rerere.* to a separate file
config.txt: move reset.* to a separate file
config.txt: move sendemail-config.txt to config/
config.txt: move sequencer.* to a separate file
config.txt: move showBranch.* to a separate file
config.txt: move splitIndex.* to a separate file
config.txt: move status.* to a separate file
config.txt: move stash.* to a separate file
config.txt: move submodule.* to a separate file
config.txt: move tag.* to a separate file
config.txt: move transfer.* to a separate file
config.txt: move uploadarchive.* to a separate file
config.txt: move uploadpack.* to a separate file
config.txt: move url.* to a separate file
config.txt: move user.* to a separate file
config.txt: move versionsort.* to a separate file
config.txt: move web.* to a separate file
config.txt: move worktree.* to a separate file
config.txt: remove config/dummy.txt
thread-utils: macros to unconditionally compile pthreads API
wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
git-worktree.txt: correct linkgit command name
sequencer.c: remove a stray semicolon
tree-walk.c: fix overoptimistic inclusion in :(exclude) matching
run-command.h: include thread-utils.h instead of pthread.h
send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c
index-pack: remove #ifdef NO_PTHREADS
name-hash.c: remove #ifdef NO_PTHREADS
attr.c: remove #ifdef NO_PTHREADS
grep: remove #ifdef NO_PTHREADS
grep: clean up num_threads handling
preload-index.c: remove #ifdef NO_PTHREADS
pack-objects: remove #ifdef NO_PTHREADS
read-cache.c: remove #ifdef NO_PTHREADS
read-cache.c: reduce branching based on HAVE_THREADS
read-cache.c: initialize copy_len to shut up gcc 8
Clean up pthread_create() error handling
completion: use __gitcomp_builtin for format-patch
build: fix broken command-list.h generation with core.autocrlf
format-patch: respect --stat in cover letter's diffstat
doc: move extensions.worktreeConfig to the right place
clone: fix colliding file detection on APFS
files-backend.c: fix build error on Solaris
transport-helper.c: do not translate a string twice
Nickolai Belakovski (2):
worktree: update documentation for lock_reason and lock_reason_valid
worktree: rename is_worktree_locked to worktree_lock_reason
Noam Postavsky (1):
log: fix coloring of certain octopus merge shapes
Olga Telezhnaya (3):
ref-filter: free memory from used_atom
ls-remote: release memory instead of UNLEAK
ref-filter: free item->value and item->value->s
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (4185t0f0u)
l10n: sv.po: Update Swedish translation (4187t0f0u)
Phillip Wood (11):
diff: fix --color-moved-ws=allow-indentation-change
diff --color-moved-ws: fix double free crash
diff --color-moved-ws: fix out of bounds string access
diff --color-moved-ws: fix a memory leak
diff --color-moved-ws: fix another memory leak
diff --color-moved: fix a memory leak
am: don't die in read_author_script()
am: improve author-script error reporting
am: rename read_author_script()
add read_author_script() to libgit
sequencer: use read_author_script()
Pratik Karki (46):
rebase: start implementing it as a builtin
rebase: refactor common shell functions into their own file
builtin/rebase: support running "git rebase <upstream>"
builtin rebase: support --onto
builtin rebase: support `git rebase --onto A...B`
builtin rebase: handle the pre-rebase hook and --no-verify
builtin rebase: support --quiet
builtin rebase: support the `verbose` and `diffstat` options
builtin rebase: require a clean worktree
builtin rebase: try to fast forward when possible
builtin rebase: support --force-rebase
builtin rebase: start a new rebase only if none is in progress
builtin rebase: only store fully-qualified refs in `options.head_name`
builtin rebase: support `git rebase <upstream> <switch-to>`
builtin rebase: support --continue
builtin rebase: support --skip
builtin rebase: support --abort
builtin rebase: support --quit
builtin rebase: support --edit-todo and --show-current-patch
builtin rebase: actions require a rebase in progress
builtin rebase: stop if `git am` is in progress
builtin rebase: allow selecting the rebase "backend"
builtin rebase: support --signoff
builtin rebase: support --rerere-autoupdate
builtin rebase: support --committer-date-is-author-date
builtin rebase: support `ignore-whitespace` option
builtin rebase: support `ignore-date` option
builtin rebase: support `keep-empty` option
builtin rebase: support `--autosquash`
builtin rebase: support `--gpg-sign` option
builtin rebase: support `-C` and `--whitespace=<type>`
builtin rebase: support `--autostash` option
builtin rebase: support `--exec`
builtin rebase: support `--allow-empty-message` option
builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
merge-base --fork-point: extract libified function
builtin rebase: support `fork-point` option
builtin rebase: add support for custom merge strategies
builtin rebase: support --root
builtin rebase: optionally auto-detect the upstream
builtin rebase: optionally pass custom reflogs to reset_head()
builtin rebase: fast-forward to onto if it is a proper descendant
builtin rebase: show progress when connected to a terminal
builtin rebase: use no-op editor when interactive is "implied"
builtin rebase: error out on incompatible option/mode combinations
rebase: default to using the builtin rebase
Rafael Ascensão (2):
refs: show --exclude failure with --branches/tags/remotes=glob
refs: fix some exclude patterns being ignored
Ralf Thielow (5):
git-rebase.sh: fix typos in error messages
l10n: update German translation
builtin/rebase.c: remove superfluous space in messages
l10n: update German translation
l10n: de.po: fix two messages
Ramsay Jones (12):
Makefile: add a hdr-check target
json-writer.h: add missing include (hdr-check)
ewah/ewok_rlw.h: add missing include (hdr-check)
refs/ref-cache.h: add missing declarations (hdr-check)
refs/packed-backend.h: add missing declaration (hdr-check)
refs/refs-internal.h: add missing declarations (hdr-check)
midx.h: add missing forward declarations (hdr-check)
delta-islands.h: add missing forward declarations (hdr-check)
headers: normalize the spelling of some header guards
fetch-object.h: add missing declaration (hdr-check)
ewok_rlw.h: add missing 'inline' to function definition
commit-reach.h: add missing declarations (hdr-check)
Rasmus Villemoes (6):
help: redirect to aliased commands for "git cmd --help"
git.c: handle_alias: prepend alias info when first argument is -h
git-help.txt: document "git help cmd" vs "git cmd --help" for aliases
Documentation/git-send-email.txt: style fixes
send-email: only consider lines containing @ or <> for automatic Cc'ing
send-email: also pick up cc addresses from -by trailers
René Scharfe (12):
mailinfo: support format=flowed
fsck: add a performance test for skipList
fsck: use strbuf_getline() to read skiplist file
fsck: use oidset instead of oid_array for skipList
sequencer: use return value of oidset_insert()
grep: add -r/--[no-]recursive
fetch-pack: factor out is_unmatched_ref()
fetch-pack: load tip_oids eagerly iff needed
khash: factor out kh_release_*
oidset: use khash
oidset: uninline oidset_init()
commit-reach: fix cast in compare_commits_by_gen()
Roger Strain (1):
subtree: performance improvement for finding unexpected parent commits
SZEDER Gábor (20):
t1404: increase core.packedRefsTimeout to avoid occasional test failure
Documentation/git.txt: clarify that GIT_TRACE=/path appends
t3701-add-interactive: tighten the check of trace output
t1700-split-index: drop unnecessary 'grep'
t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
t1700-split-index: document why FSMONITOR is disabled in this test script
split-index: add tests to demonstrate the racy split index problem
t1700-split-index: date back files to avoid racy situations
split-index: count the number of deleted entries
split-index: don't compare cached data of entries already marked for split index
split-index: smudge and add racily clean cache entries to split index
split-index: BUG() when cache entry refers to non-existing shared entry
object_id.cocci: match only expressions of type 'struct object_id'
test-lib: introduce the '-V' short option for '--verbose-log'
travis-ci: install packages in 'ci/install-dependencies.sh'
coccicheck: introduce 'pending' semantic patches
ref-filter: don't look for objects when outside of a repository
tests: send "bug in the test script" errors to the script's stderr
test-lib-functions: make 'test_cmp_rev' more informative on failure
t/lib-git-daemon: fix signal checking
Sam McKelvie (1):
rev-parse: --show-superproject-working-tree should work during a merge
Saulius Gurklys (1):
doc: fix small typo in git show-branch
Sebastian Staudt (1):
travis-ci: no longer use containers
Shulhan (1):
builtin/remote: quote remote name on error to display empty name
Stefan Beller (25):
git-submodule.sh: align error reporting for update mode to use path
git-submodule.sh: rename unused variables
builtin/submodule--helper: factor out submodule updating
builtin/submodule--helper: store update_clone information in a struct
builtin/submodule--helper: factor out method to update a single submodule
submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree
submodule--helper: introduce new update-module-mode helper
test_decode_color: understand FAINT and ITALIC
t3206: add color test for range-diff --dual-color
diff.c: simplify caller of emit_line_0
diff.c: reorder arguments for emit_line_ws_markup
diff.c: add set_sign to emit_line_0
diff: use emit_line_0 once per line
diff.c: omit check for line prefix in emit_line_0
diff.c: rewrite emit_line_0 more understandably
diff.c: add --output-indicator-{new, old, context}
range-diff: make use of different output indicators
range-diff: indent special lines as context
refs.c: migrate internal ref iteration to pass thru repository argument
refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
string-list: remove unused function print_string_list
strbuf.h: format according to coding guidelines
diff.c: pass sign_index to emit_line_ws_markup
submodule helper: convert relative URL to absolute URL if needed
builtin/submodule--helper: remove debugging leftover tracing
Stephen P. Smith (10):
wt-status.c: move has_unmerged earlier in the file
wt-status: rename commitable to committable
t7501: add test of "commit --dry-run --short"
wt-status.c: set the committable flag in the collect phase
roll wt_status_state into wt_status and populate in the collect phase
t2000: rename and combine checkout clash tests
t7509: cleanup description and filename
t7502: rename commit test script to comply with naming convention
t7500: rename commit tests script to comply with naming convention
t7501: rename commit test to comply with naming convention
Steve Hoelzer (1):
poll: use GetTickCount64() to avoid wrap-around issues
Steven Fernandez (1):
git-completion.bash: add completion for stash list
Strain, Roger L (4):
subtree: refactor split of a commit into standalone method
subtree: make --ignore-joins pay attention to adds
subtree: use commits before rejoins for splits
subtree: improve decision on merges kept in split
Sven Strickroth (1):
msvc: directly use MS version (_stricmp) of strcasecmp
Tao Qingyun (3):
refs: docstring typo
builtin/branch.c: remove useless branch_get
branch: trivial style fix
Taylor Blau (4):
transport.c: extract 'fill_alternate_refs_command'
transport.c: introduce core.alternateRefsCommand
transport.c: introduce core.alternateRefsPrefixes
Documentation/config.txt: fix typo in core.alternateRefsCommand
Thomas Gummerer (17):
rerere: unify error messages when read_cache fails
rerere: lowercase error messages
rerere: wrap paths in output in sq
rerere: mark strings for translation
rerere: add documentation for conflict normalization
rerere: fix crash with files rerere can't handle
rerere: only return whether a path has conflicts or not
rerere: factor out handle_conflict function
rerere: return strbuf from handle path
rerere: teach rerere to handle nested conflicts
rerere: recalculate conflict ID when unresolved conflict is committed
rerere: mention caveat about unmatched conflict markers
rerere: add note about files with existing conflict markers
.gitattributes: add conflict-marker-size for relevant files
linear-assignment: fix potential out of bounds memory access
t5551: move setup code inside test_expect blocks
t5551: compare sorted cookies files
Tim Schumacher (4):
Documentation/Makefile: make manpage-base-url.xsl generation quieter
alias: add support for aliases of an alias
alias: show the call history when an alias is looping
t0014: introduce an alias testing suite
Todd Zullinger (1):
Documentation: build technical/multi-pack-index
Torsten Bögershausen (5):
Make git_check_attr() a void function
path.c: char is not (always) signed
Upcast size_t variables to uintmax_t when printing
remote-curl.c: xcurl_off_t is not portable (on 32 bit platfoms)
t5601-99: Enable colliding file detection for MINGW
Trần Ngọc Quân (2):
l10n: vi(4185t): Updated Vietnamese translation for v2.20.0
l10n: vi(4187t): Updated Vietnamese translation for v2.20.0 rd3
Uwe Kleine-König (1):
howto/using-merge-subtree: mention --allow-unrelated-histories
brian m. carlson (26):
t: add test functions to translate hash-related values
t0000: use hash translation table
t0000: update tests for SHA-256
t0002: abstract away SHA-1 specific constants
t0064: make hash size independent
t1006: make hash size independent
t1400: switch hard-coded object ID to variable
t1405: make hash size independent
t1406: make hash-size independent
t1407: make hash size independent
editorconfig: provide editor settings for Git developers
editorconfig: indicate settings should be kept in sync
pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
builtin/repack: replace hard-coded constants
builtin/mktree: remove hard-coded constant
builtin/fetch-pack: remove constants with parse_oid_hex
pack-revindex: express constants in terms of the_hash_algo
packfile: express constants in terms of the_hash_algo
refs/packed-backend: express constants using the_hash_algo
upload-pack: express constants in terms of the_hash_algo
transport: use parse_oid_hex instead of a constant
tag: express constant in terms of the_hash_algo
apply: replace hard-coded constants
apply: rename new_sha1_prefix and old_sha1_prefix
submodule: make zero-oid comparison hash function agnostic
rerere: convert to use the_hash_algo
Ævar Arnfjörð Bjarmason (35):
fetch: change "branch" to "reference" in --force -h output
push tests: make use of unused $1 in test description
push tests: use spaces in interpolated string
fetch tests: add a test for clobbering tag behavior
push doc: remove confusing mention of remote merger
push doc: move mention of "tag <tag>" later in the prose
push doc: correct lies about how push refspecs work
fetch: document local ref updates with/without --force
fetch: stop clobbering existing tags without --force
fsck tests: setup of bogus commit object
fsck tests: add a test for no skipList input
fsck: document and test sorted skipList input
fsck: document and test commented & empty line skipList input
fsck: document that skipList input must be unabbreviated
fsck: add a performance test
fsck: support comments & empty lines in skipList
commit-graph write: add progress output
commit-graph verify: add progress output
config doc: add missing list separator for checkout.optimizeNewBranch
push doc: add spacing between two words
fetch doc: correct grammar in --force docs
gc: fix regression in 7b0f229222 impacting --quiet
gc doc: mention the commit-graph in the intro
pack-objects test: modernize style
pack-objects tests: don't leave test .git corrupt at end
index-pack tests: don't leave test repo dirty at end
i18n: make GETTEXT_POISON a runtime option
range-diff doc: add a section about output stability
range-diff: fix regression in passing along diff options
range-diff: make diff option behavior (e.g. --stat) consistent
push: change needlessly ambiguous example in error
rebase doc: document rebase.useBuiltin
tests: add a special setup where rebase.useBuiltin is off
read-cache: make the split index obey umask settings
advice: don't pointlessly suggest --convert-graft-file
Đoàn Trần Công Danh (1):
git-compat-util: prefer poll.h to sys/poll.h
^ permalink raw reply [relevance 2%]
* Re: [ANNOUNCE] Git v2.20.0-rc2
2018-12-01 14:58 2% [ANNOUNCE] Git v2.20.0-rc2 Junio C Hamano
@ 2018-12-03 20:45 0% ` Johannes Schindelin
0 siblings, 0 replies; 162+ results
From: Johannes Schindelin @ 2018-12-03 20:45 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, git-for-windows, git-packagers
[-- Attachment #1: Type: text/plain, Size: 91897 bytes --]
Team,
Git for Windows v2.20.0-rc2 is available here:
https://github.com/git-for-windows/git/releases/tag/v2.20.0-rc2.windows.1
There is already one known issue: the size of the installer increased (see
https://github.com/git-for-windows/git/issues/1963). This is in the
process of being addressed.
Ciao,
Johannes
On Sat, 1 Dec 2018, Junio C Hamano wrote:
> A release candidate Git v2.20.0-rc2 is now available for testing
> at the usual places. It is comprised of 934 non-merge commits
> since v2.19.0, contributed by 76 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.20.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.19.0 are as follows.
> Welcome to the Git development community!
>
> Aaron Lindsay, Alexander Pyhalov, Anton Serbulov, Brendan
> Forster, Carlo Marcelo Arenas Belón, Daniels Umanovskis, David
> Zych, Đoàn Trần Công Danh, Frederick Eaton, Greg Hurrell,
> James Knight, Jann Horn, Joshua Watt, Loo Rong Jie, Lucas
> De Marchi, Matthew DeVore, Mihir Mehta, Nickolai Belakovski,
> Roger Strain, Sam McKelvie, Saulius Gurklys, Shulhan, Steven
> Fernandez, Strain, Roger L, and Tim Schumacher.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Alban Gruin, Andreas Gruenbacher,
> Andreas Heiduk, Antonio Ospite, Ben Peart, Brandon Williams,
> brian m. carlson, Christian Couder, Christian Hesse, Denton Liu,
> Derrick Stolee, Elijah Newren, Eric Sunshine, Jean-Noël Avila,
> Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
> Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
> Karsten Blees, Luke Diamand, Martin Ågren, Max Kirillov,
> Michael Witten, Michał Górny, Nguyễn Thái Ngọc Duy, Noam
> Postavsky, Olga Telezhnaya, Phillip Wood, Pratik Karki, Rafael
> Ascensão, Ralf Thielow, Ramsay Jones, Rasmus Villemoes, René
> Scharfe, Sebastian Staudt, Stefan Beller, Stephen P. Smith, Steve
> Hoelzer, Sven Strickroth, SZEDER Gábor, Tao Qingyun, Taylor
> Blau, Thomas Gummerer, Todd Zullinger, Torsten Bögershausen,
> and Uwe Kleine-König.
>
> ----------------------------------------------------------------
>
> Git 2.20 Release Notes (draft)
> ==============================
>
> Backward Compatibility Notes
> ----------------------------
>
> * "git branch -l <foo>" used to be a way to ask a reflog to be
> created while creating a new branch, but that is no longer the
> case. It is a short-hand for "git branch --list <foo>" now.
>
> * "git push" into refs/tags/* hierarchy is rejected without getting
> forced, but "git fetch" (misguidedly) used the "fast forwarding"
> rule used for the refs/heads/* hierarchy; this has been corrected,
> which means some fetches of tags that did not fail with older
> version of Git will fail without "--force" with this version.
>
> * "git help -a" now gives verbose output (same as "git help -av").
> Those who want the old output may say "git help --no-verbose -a"..
>
> * "git cpn --help", when "cpn" is an alias to, say, "cherry-pick -n",
> reported only the alias expansion of "cpn" in earlier versions of
> Git. It now runs "git cherry-pick --help" to show the manual page
> of the command, while sending the alias expansion to the standard
> error stream.
>
> * "git send-email" learned to grab address-looking string on any
> trailer whose name ends with "-by". This is a backward-incompatible
> change. Adding "--suppress-cc=misc-by" on the command line, or
> setting sendemail.suppresscc configuration variable to "misc-by",
> can be used to disable this behaviour.
>
>
> Updates since v2.19
> -------------------
>
> UI, Workflows & Features
>
> * Running "git clone" against a project that contain two files with
> pathnames that differ only in cases on a case insensitive
> filesystem would result in one of the files lost because the
> underlying filesystem is incapable of holding both at the same
> time. An attempt is made to detect such a case and warn.
>
> * "git checkout -b newbranch [HEAD]" should not have to do as much as
> checking out a commit different from HEAD. An attempt is made to
> optimize this special case.
>
> * "git rev-list --stdin </dev/null" used to be an error; it now shows
> no output without an error. "git rev-list --stdin --default HEAD"
> still falls back to the given default when nothing is given on the
> standard input.
>
> * Lift code from GitHub to restrict delta computation so that an
> object that exists in one fork is not made into a delta against
> another object that does not appear in the same forked repository.
>
> * "git format-patch" learned new "--interdiff" and "--range-diff"
> options to explain the difference between this version and the
> previous attempt in the cover letter (or after the three-dashes as
> a comment).
>
> * "git mailinfo" used in "git am" learned to make a best-effort
> recovery of a patch corrupted by MUA that sends text/plain with
> format=flawed option.
> (merge 3aa4d81f88 rs/mailinfo-format-flowed later to maint).
>
> * The rules used by "git push" and "git fetch" to determine if a ref
> can or cannot be updated were inconsistent; specifically, fetching
> to update existing tags were allowed even though tags are supposed
> to be unmoving anchoring points. "git fetch" was taught to forbid
> updates to existing tags without the "--force" option.
>
> * "git multi-pack-index" learned to detect corruption in the .midx
> file it uses, and this feature has been integrated into "git fsck".
>
> * Generation of (experimental) commit-graph files have so far been
> fairly silent, even though it takes noticeable amount of time in a
> meaningfully large repository. The users will now see progress
> output.
>
> * The minimum version of Windows supported by Windows port of Git is
> now set to Vista.
>
> * The completion script (in contrib/) learned to complete a handful of
> options "git stash list" command takes.
>
> * The completion script (in contrib/) learned that "git fetch
> --multiple" only takes remote names as arguments and no refspecs.
>
> * "git status" learns to show progress bar when refreshing the index
> takes a long time.
> (merge ae9af12287 nd/status-refresh-progress later to maint).
>
> * "git help -a" and "git help -av" give different pieces of
> information, and generally the "verbose" version is more friendly
> to the new users. "git help -a" by default now uses the more
> verbose output (with "--no-verbose", you can go back to the
> original). Also "git help -av" now lists aliases and external
> commands, which it did not used to.
>
> * Unlike "grep", "git grep" by default recurses to the whole tree.
> The command learned "git grep --recursive" option, so that "git
> grep --no-recursive" can serve as a synonym to setting the
> max-depth to 0.
>
> * When pushing into a repository that borrows its objects from an
> alternate object store, "git receive-pack" that responds to the
> push request on the other side lists the tips of refs in the
> alternate to reduce the amount of objects transferred. This
> sometimes is detrimental when the number of refs in the alternate
> is absurdly large, in which case the bandwidth saved in potentially
> fewer objects transferred is wasted in excessively large ref
> advertisement. The alternate refs that are advertised are now
> configurable with a pair of configuration variables.
>
> * "git cmd --help" when "cmd" is aliased used to only say "cmd is
> aliased to ...". Now it shows that to the standard error stream
> and runs "git $cmd --help" where $cmd is the first word of the
> alias expansion.
>
> * The documentation of "git gc" has been updated to mention that it
> is no longer limited to "pruning away crufts" but also updates
> ancillary files like commit-graph as a part of repository
> optimization.
>
> * "git p4 unshelve" improvements.
>
> * The logic to select the default user name and e-mail on Windows has
> been improved.
> (merge 501afcb8b0 js/mingw-default-ident later to maint).
>
> * The "rev-list --filter" feature learned to exclude all trees via
> "tree:0" filter.
>
> * "git send-email" learned to grab address-looking string on any
> trailer whose name ends with "-by"; --suppress-cc=misc-by on the
> command line, or setting sendemail.suppresscc configuration
> variable to "misc-by", can be used to disable this behaviour.
>
> * Developer builds now uses -Wunused-function compilation option.
>
> * One of our CI tests to run with "unusual/experimental/random"
> settings now also uses commit-graph and midx.
>
> * "git mergetool" learned to take the "--[no-]gui" option, just like
> "git difftool" does.
>
> * "git rebase -i" learned a new insn, 'break', that the user can
> insert in the to-do list. Upon hitting it, the command returns
> control back to the user.
>
> * New "--pretty=format:" placeholders %GF and %GP that show the GPG
> key fingerprints have been invented.
>
> * On platforms with recent cURL library, http.sslBackend configuration
> variable can be used to choose a different SSL backend at runtime.
> The Windows port uses this mechanism to switch between OpenSSL and
> Secure Channel while talking over the HTTPS protocol.
>
> * "git send-email" learned to disable SMTP authentication via the
> "--smtp-auth=none" option, even when the smtp username is given
> (which turns the authentication on by default).
>
> * A fourth class of configuration files (in addition to the
> traditional "system wide", "per user in the $HOME directory" and
> "per repository in the $GIT_DIR/config") has been introduced so
> that different worktrees that share the same repository (hence the
> same $GIT_DIR/config file) can use different customization.
>
> * A pattern with '**' that does not have a slash on either side used
> to be an invalid one, but the code now treats such double-asterisks
> the same way as two normal asterisks that happen to be adjacent to
> each other.
> (merge e5bbe09e88 nd/wildmatch-double-asterisk later to maint).
>
> * The "--no-patch" option, which can be used to get a high-level
> overview without the actual line-by-line patch difference shown, of
> the "range-diff" command was earlier broken, which has been
> corrected.
>
> * The recently merged "rebase in C" has an escape hatch to use the
> scripted version when necessary, but it hasn't been documented,
> which has been corrected.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * When there are too many packfiles in a repository (which is not
> recommended), looking up an object in these would require
> consulting many pack .idx files; a new mechanism to have a single
> file that consolidates all of these .idx files is introduced.
>
> * "git submodule update" is getting rewritten piece-by-piece into C.
>
> * The code for computing history reachability has been shuffled,
> obtained a bunch of new tests to cover them, and then being
> improved.
>
> * The unpack_trees() API used in checking out a branch and merging
> walks one or more trees along with the index. When the cache-tree
> in the index tells us that we are walking a tree whose flattened
> contents is known (i.e. matches a span in the index), as linearly
> scanning a span in the index is much more efficient than having to
> open tree objects recursively and listing their entries, the walk
> can be optimized, which has been done.
>
> * When creating a thin pack, which allows objects to be made into a
> delta against another object that is not in the resulting pack but
> is known to be present on the receiving end, the code learned to
> take advantage of the reachability bitmap; this allows the server
> to send a delta against a base beyond the "boundary" commit.
>
> * spatch transformation to replace boolean uses of !hashcmp() to
> newly introduced oideq() is added, and applied, to regain
> performance lost due to support of multiple hash algorithms.
>
> * Fix a bug in which the same path could be registered under multiple
> worktree entries if the path was missing (for instance, was removed
> manually). Also, as a convenience, expand the number of cases in
> which --force is applicable.
>
> * Split Documentation/config.txt for easier maintenance.
> (merge 6014363f0b nd/config-split later to maint).
>
> * Test helper binaries clean-up.
> (merge c9a1f4161f nd/test-tool later to maint).
>
> * Various tests have been updated to make it easier to swap the
> hash function used for object identification.
> (merge ae0c89d41b bc/hash-independent-tests later to maint).
>
> * Update fsck.skipList implementation and documentation.
> (merge 371a655074 ab/fsck-skiplist later to maint).
>
> * An alias that expands to another alias has so far been forbidden,
> but now it is allowed to create such an alias.
>
> * Various test scripts have been updated for style and also correct
> handling of exit status of various commands.
>
> * "gc --auto" ended up calling exit(-1) upon error, which has been
> corrected to use exit(1). Also the error reporting behaviour when
> daemonized has been updated to exit with zero status when stopping
> due to a previously discovered error (which implies there is no
> point running gc to improve the situation); we used to exit with
> failure in such a case.
>
> * Various codepaths in the core-ish part learned to work on an
> arbitrary in-core index structure, not necessarily the default
> instance "the_index".
> (merge b3c7eef9b0 nd/the-index later to maint).
>
> * Code clean-up in the internal machinery used by "git status" and
> "git commit --dry-run".
> (merge 73ba5d78b4 ss/wt-status-committable later to maint).
>
> * Some environment variables that control the runtime options of Git
> used during tests are getting renamed for consistency.
> (merge 4231d1ba99 bp/rename-test-env-var later to maint).
>
> * A pair of new extensions to the index file have been introduced.
> They allow the index file to be read in parallel for performance.
>
> * The oidset API was built on top of the oidmap API which in turn is
> on the hashmap API. Replace the implementation to build on top of
> the khash API and gain performance.
>
> * Over some transports, fetching objects with an exact commit object
> name can be done without first seeing the ref advertisements. The
> code has been optimized to exploit this.
>
> * In a partial clone that will lazily be hydrated from the
> originating repository, we generally want to avoid "does this
> object exist (locally)?" on objects that we deliberately omitted
> when we created the clone. The cache-tree codepath (which is used
> to write a tree object out of the index) however insisted that the
> object exists, even for paths that are outside of the partial
> checkout area. The code has been updated to avoid such a check.
>
> * To help developers, an EditorConfig file that attempts to follow
> the project convention has been added.
> (merge b548d698a0 bc/editorconfig later to maint).
>
> * The result of coverage test can be combined with "git blame" to
> check the test coverage of code introduced recently with a new
> 'coverage-diff' tool (in contrib/).
> (merge 783faedd65 ds/coverage-diff later to maint).
>
> * An experiment to fuzz test a few areas, hopefully we can gain more
> coverage to various areas.
>
> * More codepaths are moving away from hardcoded hash sizes.
>
> * The way the Windows port figures out the current directory has been
> improved.
>
> * The way DLLs are loaded on the Windows port has been improved.
>
> * Some tests have been reorganized and renamed; "ls t/" now gives a
> better overview of what is tested for these scripts than before.
>
> * "git rebase" and "git rebase -i" have been reimplemented in C.
>
> * Windows port learned to use nano-second resolution file timestamps.
>
> * The overly large Documentation/config.txt file have been split into
> million little pieces. This potentially allows each individual piece
> included into the manual page of the command it affects more easily.
>
> * Replace three string-list instances used as look-up tables in "git
> fetch" with hashmaps.
>
> * Unify code to read the author-script used in "git am" and the
> commands that use the sequencer machinery, e.g. "git rebase -i".
>
> * In preparation to the day when we can deprecate and remove the
> "rebase -p", make sure we can skip and later remove tests for
> it.
>
> * The history traversal used to implement the tag-following has been
> optimized by introducing a new helper.
>
> * The helper function to refresh the cached stat information in the
> in-core index has learned to perform the lstat() part of the
> operation in parallel on multi-core platforms.
>
> * The code to traverse objects for reachability, used to decide what
> objects are unreferenced and expendable, have been taught to also
> consider per-worktree refs of other worktrees as starting points to
> prevent data loss.
>
> * "git add" needs to internally run "diff-files" equivalent, and the
> codepath learned the same optimization as "diff-files" has to run
> lstat(2) in parallel to find which paths have been updated in the
> working tree.
>
> * The procedure to install dependencies before testing at Travis CI
> is getting revamped for both simplicity and flexibility, taking
> advantage of the recent move to the vm-based environment.
>
> * The support for format-patch (and send-email) by the command-line
> completion script (in contrib/) has been simplified a bit.
>
> * The revision walker machinery learned to take advantage of the
> commit generation numbers stored in the commit-graph file.
>
> * The codebase has been cleaned up to reduce "#ifndef NO_PTHREADS".
>
> * The way -lcurl library gets linked has been simplified by taking
> advantage of the fact that we can just ask curl-config command how.
>
> * Various functions have been audited for "-Wunused-parameter" warnings
> and bugs in them got fixed.
>
> * A sanity check for start-up sequence has been added in the config
> API codepath.
>
> * The build procedure to link for fuzzing test has been made
> customizable with a new Makefile variable.
>
> * The way "git rebase" parses and forwards the command line options
> meant for underlying "git am" has been revamped, which fixed for
> options with parameters that were not passed correctly.
>
> * Our testing framework uses a special i18n "poisoned localization"
> feature to find messages that ought to stay constant but are
> incorrectly marked to be translated. This feature has been made
> into a runtime option (it used to be a compile-time option).
>
> * "git push" used to check ambiguities between object-names and
> refnames while processing the list of refs' old and new values,
> which was unnecessary (as it knew that it is feeding raw object
> names). This has been optimized out.
>
> * The xcurl_off_t() helper function is used to cast size_t to
> curl_off_t, but some compilers gave warnings against the code to
> ensure the casting is done without wraparound, when size_t is
> narrower than curl_off_t. This warning has been squelched.
>
> * Code preparation to replace ulong vars with size_t vars where
> appropriate continues.
>
> * The "test installed Git" mode of our test suite has been updated to
> work better.
>
> * A coding convention around the Coccinelle semantic patches to have
> two classes to ease code migration process has been proposed and
> its support has been added to the Makefile.
>
>
> Fixes since v2.19
> -----------------
>
> * "git interpret-trailers" and its underlying machinery had a buggy
> code that attempted to ignore patch text after commit log message,
> which triggered in various codepaths that will always get the log
> message alone and never get such an input.
> (merge 66e83d9b41 jk/trailer-fixes later to maint).
>
> * Malformed or crafted data in packstream can make our code attempt
> to read or write past the allocated buffer and abort, instead of
> reporting an error, which has been fixed.
>
> * "git rebase -i" did not clear the state files correctly when a run
> of "squash/fixup" is aborted and then the user manually amended the
> commit instead, which has been corrected.
> (merge 10d2f35436 js/rebase-i-autosquash-fix later to maint).
>
> * When fsmonitor is in use, after operation on submodules updates
> .gitmodules, we lost track of the fact that we did so and relied on
> stale fsmonitor data.
> (merge 43f1180814 bp/mv-submodules-with-fsmonitor later to maint).
>
> * Fix for a long-standing bug that leaves the index file corrupt when
> it shrinks during a partial commit.
> (merge 6c003d6ffb jk/reopen-tempfile-truncate later to maint).
>
> * Further fix for O_APPEND emulation on Windows
> (merge eeaf7ddac7 js/mingw-o-append later to maint).
>
> * A corner case bugfix in "git rerere" code.
> (merge ad2bf0d9b4 en/rerere-multi-stage-1-fix later to maint).
>
> * "git add ':(attr:foo)'" is not supported and is supposed to be
> rejected while the command line arguments are parsed, but we fail
> to reject such a command line upfront.
> (merge 84d938b732 nd/attr-pathspec-fix later to maint).
>
> * Recent update broke the reachability algorithm when refs (e.g.
> tags) that point at objects that are not commit were involved,
> which has been fixed.
>
> * "git rebase" etc. in Git 2.19 fails to abort when given an empty
> commit log message as result of editing, which has been corrected.
> (merge a3ec9eaf38 en/sequencer-empty-edit-result-aborts later to maint).
>
> * The code to backfill objects in lazily cloned repository did not
> work correctly, which has been corrected.
> (merge e68302011c jt/lazy-object-fetch-fix later to maint).
>
> * Update error messages given by "git remote" and make them consistent.
> (merge 5025425dff ms/remote-error-message-update later to maint).
>
> * "git update-ref" learned to make both "--no-deref" and "--stdin"
> work at the same time.
> (merge d345e9fbe7 en/update-ref-no-deref-stdin later to maint).
>
> * Recently added "range-diff" had a corner-case bug to cause it
> segfault, which has been corrected.
> (merge e467a90c7a tg/range-diff-corner-case-fix later to maint).
>
> * The recently introduced commit-graph auxiliary data is incompatible
> with mechanisms such as replace & grafts that "breaks" immutable
> nature of the object reference relationship. Disable optimizations
> based on its use (and updating existing commit-graph) when these
> incompatible features are in use in the repository.
> (merge 829a321569 ds/commit-graph-with-grafts later to maint).
>
> * The mailmap file update.
> (merge 255eb03edf jn/mailmap-update later to maint).
>
> * The code in "git status" sometimes hit an assertion failure. This
> was caused by a structure that was reused without cleaning the data
> used for the first run, which has been corrected.
> (merge 3e73cc62c0 en/status-multiple-renames-to-the-same-target-fix later to maint).
>
> * "git fetch $repo $object" in a partial clone did not correctly
> fetch the asked-for object that is referenced by an object in
> promisor packfile, which has been fixed.
>
> * A corner-case bugfix.
> (merge c5cbb27cb5 sm/show-superproject-while-conflicted later to maint).
>
> * Various fixes to "diff --color-moved-ws".
>
> * A partial clone that is configured to lazily fetch missing objects
> will on-demand issue a "git fetch" request to the originating
> repository to fill not-yet-obtained objects. The request has been
> optimized for requesting a tree object (and not the leaf blob
> objects contained in it) by telling the originating repository that
> no blobs are needed.
> (merge 4c7f9567ea jt/non-blob-lazy-fetch later to maint).
>
> * The codepath to support the experimental split-index mode had
> remaining "racily clean" issues fixed.
> (merge 4c490f3d32 sg/split-index-racefix later to maint).
>
> * "git log --graph" showing an octopus merge sometimes miscounted the
> number of display columns it is consuming to show the merge and its
> parent commits, which has been corrected.
> (merge 04005834ed np/log-graph-octopus-fix later to maint).
>
> * "git range-diff" did not work well when the compared ranges had
> changes in submodules and the "--submodule=log" was used.
>
> * The implementation of run_command() API on the UNIX platforms had a
> bug that caused a command not on $PATH to be found in the current
> directory.
> (merge f67b980771 jk/run-command-notdot later to maint).
>
> * A mutex used in "git pack-objects" were not correctly initialized
> and this caused "git repack" to dump core on Windows.
> (merge 34204c8166 js/pack-objects-mutex-init-fix later to maint).
>
> * Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
> Windows would strip initial parts from the paths because they
> were not recognized as absolute, which has been corrected.
> (merge ffd04e92e2 js/diff-notice-has-drive-prefix later to maint).
>
> * The receive.denyCurrentBranch=updateInstead codepath kicked in even
> when the push should have been rejected due to other reasons, such
> as it does not fast-forward or the update-hook rejects it, which
> has been corrected.
> (merge b072a25fad jc/receive-deny-current-branch-fix later to maint).
>
> * The logic to determine the archive type "git archive" uses did not
> correctly kick in for "git archive --remote", which has been
> corrected.
>
> * "git repack" in a shallow clone did not correctly update the
> shallow points in the repository, leading to a repository that
> does not pass fsck.
> (merge 5dcfbf564c js/shallow-and-fetch-prune later to maint).
>
> * Some codepaths failed to form a proper URL when .gitmodules record
> the URL to a submodule repository as relative to the repository of
> superproject, which has been corrected.
> (merge e0a862fdaf sb/submodule-url-to-absolute later to maint).
>
> * "git fetch" over protocol v2 into a shallow repository failed to
> fetch full history behind a new tip of history that was diverged
> before the cut-off point of the history that was previously fetched
> shallowly.
>
> * The command line completion machinery (in contrib/) has been
> updated to allow the completion script to tweak the list of options
> that are reported by the parse-options machinery correctly.
> (merge 276b49ff34 nd/completion-negation later to maint).
>
> * Operations on promisor objects make sense in the context of only a
> small subset of the commands that internally use the revisions
> machinery, but the "--exclude-promisor-objects" option were taken
> and led to nonsense results by commands like "log", to which it
> didn't make much sense. This has been corrected.
> (merge 669b1d2aae md/exclude-promisor-objects-fix later to maint).
>
> * The "container" mode of TravisCI is going away. Our .travis.yml
> file is getting prepared for the transition.
> (merge 32ee384be8 ss/travis-ci-force-vm-mode later to maint).
>
> * Our test scripts can now take the '-V' option as a synonym for the
> '--verbose-log' option.
> (merge a5f52c6dab sg/test-verbose-log later to maint).
>
> * A regression in Git 2.12 era made "git fsck" fall into an infinite
> loop while processing truncated loose objects.
> (merge 18ad13e5b2 jk/detect-truncated-zlib-input later to maint).
>
> * "git ls-remote $there foo" was broken by recent update for the
> protocol v2 and stopped showing refs that match 'foo' that are not
> refs/{heads,tags}/foo, which has been fixed.
> (merge 6a139cdd74 jk/proto-v2-ref-prefix-fix later to maint).
>
> * Additional comment on a tricky piece of code to help developers.
> (merge 0afbe3e806 jk/stream-pack-non-delta-clarification later to maint).
>
> * A couple of tests used to leave the repository in a state that is
> deliberately corrupt, which have been corrected.
> (merge aa984dbe5e ab/pack-tests-cleanup later to maint).
>
> * The submodule support has been updated to read from the blob at
> HEAD:.gitmodules when the .gitmodules file is missing from the
> working tree.
> (merge 2b1257e463 ao/submodule-wo-gitmodules-checked-out later to maint).
>
> * "git fetch" was a bit loose in parsing responses from the other side
> when talking over the protocol v2.
>
> * "git rev-parse --exclude=* --branches --branches" (i.e. first
> saying "add only things that do not match '*' out of all branches"
> and then adding all branches, without any exclusion this time")
> worked as expected, but "--exclude=* --all --all" did not work the
> same way, which has been fixed.
> (merge 5221048092 ag/rev-parse-all-exclude-fix later to maint).
>
> * "git send-email --transfer-encoding=..." in recent versions of Git
> sometimes produced an empty "Content-Transfer-Encoding:" header,
> which has been corrected.
> (merge 3c88e46f1a al/send-email-auto-cte-fixup later to maint).
>
> * The interface into "xdiff" library used to discover the offset and
> size of a generated patch hunk by first formatting it into the
> textual hunk header "@@ -n,m +k,l @@" and then parsing the numbers
> out. A new interface has been introduced to allow callers a more
> direct access to them.
> (merge 5eade0746e jk/xdiff-interface later to maint).
>
> * Pathspec matching against a tree object were buggy when negative
> pathspec elements were involved, which has been fixed.
> (merge b7845cebc0 nd/tree-walk-path-exclusion later to maint).
>
> * "git merge" and "git pull" that merges into an unborn branch used
> to completely ignore "--verify-signatures", which has been
> corrected.
> (merge 01a31f3bca jk/verify-sig-merge-into-void later to maint).
>
> * "git rebase --autostash" did not correctly re-attach the HEAD at times.
>
> * "rev-parse --exclude=<pattern> --branches=<pattern>" etc. did not
> quite work, which has been corrected.
> (merge 9ab9b5df0e ra/rev-parse-exclude-glob later to maint).
>
> * When editing a patch in a "git add -i" session, a hunk could be
> made to no-op. The "git apply" program used to reject a patch with
> such a no-op hunk to catch user mistakes, but it is now updated to
> explicitly allow a no-op hunk in an edited patch.
> (merge 22cb3835b9 js/apply-recount-allow-noop later to maint).
>
> * The URL to an MSDN page in a comment has been updated.
> (merge 2ef2ae2917 js/mingw-msdn-url later to maint).
>
> * "git ls-remote --sort=<thing>" can feed an object that is not yet
> available into the comparison machinery and segfault, which has
> been corrected to check such a request upfront and reject it.
>
> * When "git bundle" aborts due to an empty commit ranges
> (i.e. resulting in an empty pack), it left a file descriptor to an
> lockfile open, which resulted in leftover lockfile on Windows where
> you cannot remove a file with an open file descriptor. This has
> been corrected.
> (merge 2c8ee1f53c jk/close-duped-fd-before-unlock-for-bundle later to maint).
>
> * "git format-patch --stat=<width>" can be used to specify the width
> used by the diffstat (shown in the cover letter).
> (merge 284aeb7e60 nd/format-patch-cover-letter-stat-width later to maint).
>
> * The way .git/index and .git/sharedindex* files were initially
> created gave these files different perm bits until they were
> adjusted for shared repository settings. This was made consistent.
> (merge c9d6c78870 cc/shared-index-permbits later to maint).
>
> * "git rebase --stat" to transplant a piece of history onto a totally
> unrelated history were not working before and silently showed wrong
> result. With the recent reimplementation in C, it started to instead
> die with an error message, as the original logic was not prepared
> to cope with this case. This has now been fixed.
>
> * The advice message to tell the user to migrate an existing graft
> file to the replace system when a graft file was read was shown
> even when "git replace --convert-graft-file" command, which is the
> way the message suggests to use, was running, which made little
> sense.
> (merge 8821e90a09 ab/replace-graft-with-replace-advice later to maint).
>
> * "git diff --raw" lost ellipses to adjust the output columns for
> some time now, but the documentation still showed them.
>
> * Code cleanup, docfix, build fix, etc.
> (merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint).
> (merge b9b07efdb2 tg/conflict-marker-size later to maint).
> (merge fa0aeea770 sg/doc-trace-appends later to maint).
> (merge d64324cb60 tb/void-check-attr later to maint).
> (merge c3b9bc94b9 en/double-semicolon-fix later to maint).
> (merge 79336116f5 sg/t3701-tighten-trace later to maint).
> (merge 801fa63a90 jk/dev-build-format-security later to maint).
> (merge 0597dd62ba sb/string-list-remove-unused later to maint).
> (merge db2d36fad8 bw/protocol-v2 later to maint).
> (merge 456d7cd3a9 sg/split-index-test later to maint).
> (merge 7b6057c852 tq/refs-internal-comment-fix later to maint).
> (merge 29e8dc50ad tg/t5551-with-curl-7.61.1 later to maint).
> (merge 55f6bce2c9 fe/doc-updates later to maint).
> (merge 7987d2232d jk/check-everything-connected-is-long-gone later to maint).
> (merge 4ba3c9be47 dz/credential-doc-url-matching-rules later to maint).
> (merge 4c399442f7 ma/commit-graph-docs later to maint).
> (merge fc0503b04e ma/t1400-undebug-test later to maint).
> (merge e56b53553a nd/packobjectshook-doc-fix later to maint).
> (merge c56170a0c4 ma/mailing-list-address-in-git-help later to maint).
> (merge 6e8fc70fce rs/sequencer-oidset-insert-avoids-dups later to maint).
> (merge ad0b8f9575 mw/doc-typofixes later to maint).
> (merge d9f079ad1a jc/how-to-document-api later to maint).
> (merge b1492bf315 ma/t7005-bash-workaround later to maint).
> (merge ac1f98a0df du/rev-parse-is-plumbing later to maint).
> (merge ca8ed443a5 mm/doc-no-dashed-git later to maint).
> (merge ce366a8144 du/get-tar-commit-id-is-plumbing later to maint).
> (merge 61018fe9e0 du/cherry-is-plumbing later to maint).
> (merge c7e5fe79b9 sb/strbuf-h-update later to maint).
> (merge 8d2008196b tq/branch-create-wo-branch-get later to maint).
> (merge 2e3c894f4b tq/branch-style-fix later to maint).
> (merge c5d844af9c sg/doc-show-branch-typofix later to maint).
> (merge 081d91618b ah/doc-updates later to maint).
> (merge b84c783882 jc/cocci-preincr later to maint).
> (merge 5e495f8122 uk/merge-subtree-doc-update later to maint).
> (merge aaaa881822 jk/uploadpack-packobjectshook-fix later to maint).
> (merge 3063477445 tb/char-may-be-unsigned later to maint).
> (merge 8c64bc9420 sg/test-rebase-editor-fix later to maint).
> (merge 71571cd7d6 ma/sequencer-do-reset-saner-loop-termination later to maint).
> (merge 9a4cb8781e cb/notes-freeing-always-null-fix later to maint).
> (merge 3006f5ee16 ma/reset-doc-rendering-fix later to maint).
> (merge 4c2eb06419 sg/daemon-test-signal-fix later to maint).
> (merge d27525e519 ss/msvc-strcasecmp later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.19.0 are as follows:
>
> Aaron Lindsay (1):
> send-email: avoid empty transfer encoding header
>
> Alban Gruin (21):
> sequencer: make three functions and an enum from sequencer.c public
> rebase -i: rewrite append_todo_help() in C
> editor: add a function to launch the sequence editor
> rebase -i: rewrite the edit-todo functionality in C
> sequencer: add a new function to silence a command, except if it fails
> rebase -i: rewrite setup_reflog_action() in C
> rebase -i: rewrite checkout_onto() in C
> sequencer: refactor append_todo_help() to write its message to a buffer
> sequencer: change the way skip_unnecessary_picks() returns its result
> t3404: todo list with commented-out commands only aborts
> rebase -i: rewrite complete_action() in C
> rebase -i: remove unused modes and functions
> rebase -i: implement the logic to initialize $revisions in C
> rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
> rebase -i: rewrite write_basic_state() in C
> rebase -i: rewrite init_basic_state() in C
> rebase -i: implement the main part of interactive rebase as a builtin
> rebase--interactive2: rewrite the submodes of interactive rebase in C
> rebase -i: remove git-rebase--interactive.sh
> rebase -i: move rebase--helper modes to rebase--interactive
> p3400: replace calls to `git checkout -b' by `git checkout -B'
>
> Alexander Pyhalov (1):
> t7005-editor: quote filename to fix whitespace-issue
>
> Andreas Gruenbacher (1):
> rev-parse: clear --exclude list after 'git rev-parse --all'
>
> Andreas Heiduk (6):
> doc: clarify boundaries of 'git worktree list --porcelain'
> doc: fix ASCII art tab spacing
> doc: fix inappropriate monospace formatting
> doc: fix descripion for 'git tag --format'
> doc: fix indentation of listing blocks in gitweb.conf.txt
> doc: fix formatting in git-update-ref
>
> Anton Serbulov (1):
> mingw: fix getcwd when the parent directory cannot be queried
>
> Antonio Ospite (10):
> submodule: add a print_config_from_gitmodules() helper
> submodule: factor out a config_set_in_gitmodules_file_gently function
> t7411: merge tests 5 and 6
> t7411: be nicer to future tests and really clean things up
> submodule--helper: add a new 'config' subcommand
> submodule: use the 'submodule--helper config' command
> t7506: clean up .gitmodules properly before setting up new scenario
> submodule: add a helper to check if it is safe to write to .gitmodules
> submodule: support reading .gitmodules when it's not in the working tree
> t/helper: add test-submodule-nested-repo-config
>
> Ben Peart (19):
> checkout: optimize "git checkout -b <new_branch>"
> git-mv: allow submodules and fsmonitor to work together
> t/README: correct spelling of "uncommon"
> preload-index: use git_env_bool() not getenv() for customization
> fsmonitor: update GIT_TEST_FSMONITOR support
> read-cache: update TEST_GIT_INDEX_VERSION support
> preload-index: update GIT_FORCE_PRELOAD_TEST support
> read-cache: clean up casting and byte decoding
> eoie: add End of Index Entry (EOIE) extension
> config: add new index.threads config setting
> read-cache: load cache extensions on a worker thread
> ieot: add Index Entry Offset Table (IEOT) extension
> read-cache: load cache entries on worker threads
> reset: don't compute unstaged changes after reset when --quiet
> reset: add new reset.quiet config setting
> reset: warn when refresh_index() takes more than 2 seconds
> speed up refresh_index() by utilizing preload_index()
> add: speed up cmd_add() by utilizing read_cache_preload()
> refresh_index: remove unnecessary calls to preload_index()
>
> Brandon Williams (1):
> config: document value 2 for protocol.version
>
> Brendan Forster (1):
> http: add support for disabling SSL revocation checks in cURL
>
> Carlo Marcelo Arenas Belón (8):
> unpack-trees: avoid dead store for struct progress
> multi-pack-index: avoid dead store for struct progress
> read-cache: use of memory after it is freed
> commit-slabs: move MAYBE_UNUSED out
> khash: silence -Wunused-function for delta-islands
> compat: make sure git_mmap is not expected to write
> sequencer: cleanup for gcc warning in non developer mode
> builtin/notes: remove unnecessary free
>
> Christian Couder (3):
> pack-objects: refactor code into compute_layer_order()
> pack-objects: move tree_depth into 'struct packing_data'
> pack-objects: move 'layer' into 'struct packing_data'
>
> Christian Hesse (2):
> subtree: add build targets 'man' and 'html'
> subtree: make install targets depend on build targets
>
> Daniels Umanovskis (3):
> doc: move git-rev-parse from porcelain to plumbing
> doc: move git-get-tar-commit-id to plumbing
> doc: move git-cherry to plumbing
>
> David Zych (1):
> doc: clarify gitcredentials path component matching
>
> Denton Liu (3):
> mergetool: accept -g/--[no-]gui as arguments
> completion: support `git mergetool --[no-]gui`
> doc: document diff/merge.guitool config keys
>
> Derrick Stolee (93):
> multi-pack-index: add design document
> multi-pack-index: add format details
> multi-pack-index: add builtin
> multi-pack-index: add 'write' verb
> midx: write header information to lockfile
> multi-pack-index: load into memory
> t5319: expand test data
> packfile: generalize pack directory list
> multi-pack-index: read packfile list
> multi-pack-index: write pack names in chunk
> midx: read pack names into array
> midx: sort and deduplicate objects from packfiles
> midx: write object ids in a chunk
> midx: write object id fanout chunk
> midx: write object offsets
> config: create core.multiPackIndex setting
> midx: read objects from multi-pack-index
> midx: use midx in abbreviation calculations
> midx: use existing midx when writing new one
> midx: use midx in approximate_object_count
> midx: prevent duplicate packfile loads
> packfile: skip loading index if in multi-pack-index
> midx: clear midx on repack
> commit-reach: move walk methods from commit.c
> commit.h: remove method declarations
> commit-reach: move ref_newer from remote.c
> commit-reach: move commit_contains from ref-filter
> upload-pack: make reachable() more generic
> upload-pack: refactor ok_to_give_up()
> upload-pack: generalize commit date cutoff
> commit-reach: move can_all_from_reach_with_flags
> test-reach: create new test tool for ref_newer
> test-reach: test in_merge_bases
> test-reach: test is_descendant_of
> test-reach: test get_merge_bases_many
> test-reach: test reduce_heads
> test-reach: test can_all_from_reach_with_flags
> test-reach: test commit_contains
> commit-reach: replace ref_newer logic
> commit-reach: make can_all_from_reach... linear
> commit-reach: use can_all_from_reach
> multi-pack-index: provide more helpful usage info
> multi-pack-index: store local property
> midx: mark bad packed objects
> midx: stop reporting garbage
> midx: fix bug that skips midx with alternates
> packfile: add all_packs list
> treewide: use get_all_packs
> midx: test a few commands that use get_all_packs
> pack-objects: consider packs in multi-pack-index
> commit-graph: update design document
> test-repository: properly init repo
> commit-graph: not compatible with replace objects
> commit-graph: not compatible with grafts
> commit-graph: not compatible with uninitialized repo
> commit-graph: close_commit_graph before shallow walk
> commit-graph: define GIT_TEST_COMMIT_GRAPH
> t3206-range-diff.sh: cover single-patch case
> t5318: use test_oid for HASH_LEN
> multi-pack-index: add 'verify' verb
> multi-pack-index: verify bad header
> multi-pack-index: verify corrupt chunk lookup table
> multi-pack-index: verify packname order
> multi-pack-index: verify missing pack
> multi-pack-index: verify oid fanout order
> multi-pack-index: verify oid lookup order
> multi-pack-index: fix 32-bit vs 64-bit size check
> multi-pack-index: verify object offsets
> multi-pack-index: report progress during 'verify'
> fsck: verify multi-pack-index
> commit-reach: properly peel tags
> commit-reach: fix memory and flag leaks
> commit-reach: cleanups in can_all_from_reach...
> commit-graph: clean up leaked memory during write
> commit-graph: reduce initial oid allocation
> midx: fix broken free() in close_midx()
> contrib: add coverage-diff script
> ci: add optional test variables
> commit-reach: fix first-parent heuristic
> midx: close multi-pack-index on repack
> multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX
> packfile: close multi-pack-index in close_all_packs
> prio-queue: add 'peek' operation
> test-reach: add run_three_modes method
> test-reach: add rev-list tests
> revision.c: begin refactoring --topo-order logic
> commit/revisions: bookkeeping before refactoring
> revision.c: generation-based topo-order algorithm
> t6012: make rev-list tests more interesting
> commit-reach: implement get_reachable_subset
> test-reach: test get_reachable_subset
> remote: make add_missing_tags() linear
> pack-objects: ignore ambiguous object warnings
>
> Elijah Newren (14):
> Remove superfluous trailing semicolons
> t4200: demonstrate rerere segfault on specially crafted merge
> rerere: avoid buffer overrun
> update-ref: fix type of update_flags variable to match its usage
> update-ref: allow --no-deref with --stdin
> sequencer: fix --allow-empty-message behavior, make it smarter
> merge-recursive: set paths correctly when three-way merging content
> merge-recursive: avoid wrapper function when unnecessary and wasteful
> merge-recursive: remove final remaining caller of merge_file_one()
> merge-recursive: rename merge_file_1() and merge_content()
> commit: fix erroneous BUG, 'multiple renames on the same target? how?'
> merge-recursive: improve auto-merging messages with path collisions
> merge-recursive: avoid showing conflicts with merge branch before HEAD
> fsck: move fsck_head_link() to get_default_heads() to avoid some globals
>
> Eric Sunshine (26):
> format-patch: allow additional generated content in make_cover_letter()
> format-patch: add --interdiff option to embed diff in cover letter
> format-patch: teach --interdiff to respect -v/--reroll-count
> interdiff: teach show_interdiff() to indent interdiff
> log-tree: show_log: make commentary block delimiting reusable
> format-patch: allow --interdiff to apply to a lone-patch
> range-diff: respect diff_option.file rather than assuming 'stdout'
> range-diff: publish default creation factor
> range-diff: relieve callers of low-level configuration burden
> format-patch: add --range-diff option to embed diff in cover letter
> format-patch: extend --range-diff to accept revision range
> format-patch: teach --range-diff to respect -v/--reroll-count
> format-patch: add --creation-factor tweak for --range-diff
> format-patch: allow --range-diff to apply to a lone-patch
> worktree: don't die() in library function find_worktree()
> worktree: move delete_git_dir() earlier in file for upcoming new callers
> worktree: generalize delete_git_dir() to reduce code duplication
> worktree: prepare for more checks of whether path can become worktree
> worktree: disallow adding same path multiple times
> worktree: teach 'add' to respect --force for registered but missing path
> worktree: teach 'move' to override lock when --force given twice
> worktree: teach 'remove' to override lock when --force given twice
> worktree: delete .git/worktrees if empty after 'remove'
> doc-diff: fix non-portable 'man' invocation
> doc-diff: add --clean mode to remove temporary working gunk
> doc/Makefile: drop doc-diff worktree and temporary files on "make clean"
>
> Frederick Eaton (3):
> git-archimport.1: specify what kind of Arch we're talking about
> git-column.1: clarify initial description, provide examples
> git-describe.1: clarify that "human readable" is also git-readable
>
> Greg Hurrell (1):
> doc: update diff-format.txt for removed ellipses in --raw
>
> James Knight (1):
> build: link with curl-defined linker flags
>
> Jann Horn (2):
> patch-delta: fix oob read
> patch-delta: consistently report corruption
>
> Jean-Noël Avila (1):
> i18n: fix small typos
>
> Jeff Hostetler (2):
> t0051: test GIT_TRACE to a windows named pipe
> mingw: fix mingw_open_append to work with named pipes
>
> Jeff King (98):
> branch: make "-l" a synonym for "--list"
> Add delta-islands.{c,h}
> pack-objects: add delta-islands support
> repack: add delta-islands support
> t5320: tests for delta islands
> t/perf: factor boilerplate out of test_perf
> t/perf: factor out percent calculations
> t/perf: add infrastructure for measuring sizes
> t/perf: add perf tests for fetches from a bitmapped server
> pack-bitmap: save "have" bitmap from walk
> pack-objects: reuse on-disk deltas for thin "have" objects
> SubmittingPatches: mention doc-diff
> rev-list: make empty --stdin not an error
> trailer: use size_t for string offsets
> trailer: use size_t for iterating trailer list
> trailer: pass process_trailer_opts to trailer_info_get()
> interpret-trailers: tighten check for "---" patch boundary
> interpret-trailers: allow suppressing "---" divider
> pretty, ref-filter: format %(trailers) with no_divider option
> sequencer: ignore "---" divider when parsing trailers
> append_signoff: use size_t for string offsets
> coccinelle: use <...> for function exclusion
> introduce hasheq() and oideq()
> convert "oidcmp() == 0" to oideq()
> convert "hashcmp() == 0" to hasheq()
> convert "oidcmp() != 0" to "!oideq()"
> convert "hashcmp() != 0" to "!hasheq()"
> convert hashmap comparison functions to oideq()
> read-cache: use oideq() in ce_compare functions
> show_dirstat: simplify same-content check
> doc-diff: always use oids inside worktree
> test-delta: read input into a heap buffer
> t5303: test some corrupt deltas
> patch-delta: handle truncated copy parameters
> t5303: use printf to generate delta bases
> doc/git-branch: remove obsolete "-l" references
> bitmap_has_sha1_in_uninteresting(): drop BUG check
> t5310: test delta reuse with bitmaps
> traverse_bitmap_commit_list(): don't free result
> pack-bitmap: drop "loaded" flag
> reopen_tempfile(): truncate opened file
> doc-diff: force worktree add
> config.mak.dev: add -Wformat-security
> pack-objects: handle island check for "external" delta base
> receive-pack: update comment with check_everything_connected
> submodule--helper: use "--" to signal end of clone options
> submodule-config: ban submodule urls that start with dash
> submodule-config: ban submodule paths that start with a dash
> fsck: detect submodule urls starting with dash
> fsck: detect submodule paths starting with dash
> more oideq/hasheq conversions
> transport: drop refnames from for_each_alternate_ref
> test-tool: show tool list on error
> config.mak.dev: enable -Wunused-function
> run-command: mark path lookup errors with ENOENT
> t5410: use longer path for sample script
> upload-pack: fix broken if/else chain in config callback
> t1450: check large blob in trailing-garbage test
> check_stream_sha1(): handle input underflow
> cat-file: handle streaming failures consistently
> ls-remote: do not send ref prefixes for patterns
> ls-remote: pass heads/tags prefixes to transport
> read_istream_pack_non_delta(): document input handling
> xdiff: provide a separate emit callback for hunks
> xdiff-interface: provide a separate consume callback for hunks
> rev-list: handle flags for --indexed-objects
> approxidate: handle pending number for "specials"
> pathspec: handle non-terminated strings with :(attr)
> diff: avoid generating unused hunk header lines
> diff: discard hunk headers for patch-ids earlier
> diff: use hunk callback for word-diff
> combine-diff: use an xdiff hunk callback
> diff: convert --check to use a hunk callback
> range-diff: use a hunk callback
> xdiff-interface: drop parse_hunk_header()
> apply: mark include/exclude options as NONEG
> am: handle --no-patch-format option
> ls-files: mark exclude options as NONEG
> pack-objects: mark index-version option as NONEG
> cat-file: mark batch options with NONEG
> status: mark --find-renames option with NONEG
> format-patch: mark "--no-numbered" option with NONEG
> show-branch: mark --reflog option as NONEG
> tag: mark "--message" option with NONEG
> cat-file: report an error on multiple --batch options
> apply: return -1 from option callback instead of calling exit(1)
> parse-options: drop OPT_DATE()
> assert NOARG/NONEG behavior of parse-options callbacks
> midx: double-check large object write loop
> merge: extract verify_merge_signature() helper
> merge: handle --verify-signatures for unborn branch
> pull: handle --verify-signatures for unborn branch
> approxidate: fix NULL dereference in date_time()
> bundle: dup() output descriptor closer to point-of-use
> pack-objects: fix tree_depth and layer invariants
> pack-objects: zero-initialize tree_depth/layer arrays
> pack-objects: fix off-by-one in delta-island tree-depth computation
> t5562: fix perl path
>
> Johannes Schindelin (64):
> rebase -i --autosquash: demonstrate a problem skipping the last squash
> rebase -i: be careful to wrap up fixup/squash chains
> compat/poll: prepare for targeting Windows Vista
> mingw: set _WIN32_WINNT explicitly for Git for Windows
> mingw: bump the minimum Windows version to Vista
> builtin rebase: prepare for builtin rebase -i
> rebase -i: clarify what happens on a failed `exec`
> rebase -i: introduce the 'break' command
> getpwuid(mingw): initialize the structure only once
> getpwuid(mingw): provide a better default for the user name
> mingw: use domain information for default email
> http: add support for selecting SSL backends at runtime
> pack-objects: fix typo 'detla' -> 'delta'
> pack-objects (mingw): demonstrate a segmentation fault with large deltas
> pack-objects (mingw): initialize `packing_data` mutex in the correct spot
> rebase (autostash): avoid duplicate call to state_dir_path()
> rebase (autostash): store the full OID in <state-dir>/autostash
> rebase (autostash): use an explicit OID to apply the stash
> mingw: factor out code to set stat() data
> rebase --autostash: demonstrate a problem with dirty submodules
> rebase --autostash: fix issue with dirty submodules
> mingw: load system libraries the recommended way
> mingw: ensure `getcwd()` reports the correct case
> repack: point out a bug handling stale shallow info
> shallow: offer to prune only non-existing entries
> repack -ad: prune the list of shallow commits
> http: when using Secure Channel, ignore sslCAInfo by default
> t7800: fix quoting
> mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)
> config: rename `dummy` parameter to `cb` in git_default_config()
> config: allow for platform-specific core.* config settings
> config: move Windows-specific config settings into compat/mingw.c
> mingw: unset PERL5LIB by default
> mingw: fix isatty() after dup2()
> t3404: decouple some test cases from outcomes of previous test cases
> t3418: decouple test cases from a previous `rebase -p` test case
> tests: optionally skip `git rebase -p` tests
> Windows: force-recompile git.res for differing architectures
> built-in rebase: demonstrate regression with --autostash
> built-in rebase --autostash: leave the current branch alone if possible
> Update .mailmap
> rebase -r: demonstrate bug with conflicting merges
> rebase -r: do not write MERGE_HEAD unless needed
> rebase -i: include MERGE_HEAD into files to clean up
> built-in rebase --skip/--abort: clean up stale .git/<name> files
> status: rebase and merge can be in progress at the same time
> apply --recount: allow "no-op hunks"
> rebase: consolidate clean-up code before leaving reset_head()
> rebase: prepare reset_head() for more flags
> built-in rebase: reinstate `checkout -q` behavior where appropriate
> tests: fix GIT_TEST_INSTALLED's PATH to include t/helper/
> tests: respect GIT_TEST_INSTALLED when initializing repositories
> t/lib-gettext: test installed git-sh-i18n if GIT_TEST_INSTALLED is set
> mingw: use `CreateHardLink()` directly
> rebase: really just passthru the `git am` options
> rebase: validate -C<n> and --whitespace=<mode> parameters early
> config: report a bug if git_dir exists without commondir
> tests: do not require Git to be built when testing an installed Git
> tests: explicitly use `git.exe` on Windows
> mingw: replace an obsolete link with the superseding one
> legacy-rebase: backport -C<n> and --whitespace=<option> checks
> rebase: warn about the correct tree's OID
> rebase: fix GIT_REFLOG_ACTION regression
> rebase --stat: fix when rebasing to an unrelated history
>
> Johannes Sixt (3):
> diff: don't attempt to strip prefix from absolute Windows paths
> rebase -i: recognize short commands without arguments
> t3404-rebase-interactive: test abbreviated commands
>
> Jonathan Nieder (9):
> gc: improve handling of errors reading gc.log
> gc: exit with status 128 on failure
> gc: do not return error for prior errors in daemonized mode
> commit-reach: correct accidental #include of C file
> mailmap: consistently normalize brian m. carlson's name
> git doc: direct bug reporters to mailing list archive
> eoie: default to not writing EOIE section
> ieot: default to not writing IEOT section
> index: make index.threads=true enable ieot and eoie
>
> Jonathan Tan (15):
> fetch-object: unify fetch_object[s] functions
> fetch-object: set exact_oid when fetching
> connected: document connectivity in partial clones
> fetch: in partial clone, check presence of targets
> fetch-pack: avoid object flags if no_dependents
> fetch-pack: exclude blobs when lazy-fetching trees
> transport: allow skipping of ref listing
> transport: do not list refs if possible
> transport: list refs before fetch if necessary
> fetch: do not list refs if fetching only hashes
> cache-tree: skip some blob checks in partial clone
> upload-pack: make have_obj not global
> upload-pack: make want_obj not global
> upload-pack: clear flags before each v2 request
> fetch-pack: be more precise in parsing v2 response
>
> Josh Steadmon (4):
> fuzz: add basic fuzz testing target.
> fuzz: add fuzz testing for packfile indices.
> archive: initialize archivers earlier
> Makefile: use FUZZ_CXXFLAGS for linking fuzzers
>
> Joshua Watt (1):
> send-email: explicitly disable authentication
>
> Junio C Hamano (36):
> Revert "doc/Makefile: drop doc-diff worktree and temporary files on "make clean""
> Initial batch post 2.19
> Second batch post 2.19
> Git 2.14.5
> Git 2.15.3
> Git 2.16.5
> Git 2.17.2
> Git 2.18.1
> Git 2.19.1
> t0000: do not get self-test disrupted by environment warnings
> CodingGuidelines: document the API in *.h files
> Declare that the next one will be named 2.20
> Third batch for 2.20
> rebase: fix typoes in error messages
> Fourth batch for 2.20
> Revert "subtree: make install targets depend on build targets"
> Fifth batch for 2.20
> receive: denyCurrentBranch=updateinstead should not blindly update
> cocci: simplify "if (++u > 1)" to "if (u++)"
> fsck: s/++i > 1/i++/
> http: give curl version warnings consistently
> Sixth batch for 2.20
> Seventh batch for 2.20
> fetch: replace string-list used as a look-up table with a hashmap
> rebase: apply cocci patch
> Eighth batch for 2.20
> Ninth batch for 2.20
> Makefile: ease dynamic-gettext-poison transition
> Tenth batch for 2.20
> Git 2.20-rc0
> RelNotes: name the release properly
> Prepare for 2.20-rc1
> Git 2.19.2
> Git 2.20-rc1
> format-patch: do not let its diff-options affect --range-diff
> Git 2.20-rc2
>
> Karsten Blees (2):
> mingw: replace MSVCRT's fstat() with a Win32-based implementation
> mingw: implement nanosecond-precision file times
>
> Loo Rong Jie (1):
> win32: replace pthread_cond_*() with much simpler code
>
> Lucas De Marchi (1):
> range-diff: allow to diff files regardless of submodule config
>
> Luke Diamand (3):
> git-p4: do not fail in verbose mode for missing 'fileSize' key
> git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved
> git-p4: fully support unshelving changelists
>
> Martin Ågren (11):
> Doc: use `--type=bool` instead of `--bool`
> git-config.txt: fix 'see: above' note
> git-commit-graph.txt: fix bullet lists
> git-commit-graph.txt: typeset more in monospace
> git-commit-graph.txt: refer to "*commit*-graph file"
> Doc: refer to the "commit-graph file" with dash
> t1400: drop debug `echo` to actually execute `test`
> builtin/commit-graph.c: UNLEAK variables
> sequencer: break out of loop explicitly
> git-reset.txt: render tables correctly under Asciidoctor
> git-reset.txt: render literal examples as monospace
>
> Matthew DeVore (19):
> list-objects: store common func args in struct
> list-objects: refactor to process_tree_contents
> list-objects: always parse trees gently
> t/README: reformat Do, Don't, Keep in mind lists
> Documentation: add shell guidelines
> tests: standardize pipe placement
> t/*: fix ordering of expected/observed arguments
> tests: don't swallow Git errors upstream of pipes
> t9109: don't swallow Git errors upstream of pipes
> tests: order arguments to git-rev-list properly
> rev-list: handle missing tree objects properly
> revision: mark non-user-given objects instead
> list-objects-filter: use BUG rather than die
> list-objects-filter-options: do not over-strbuf_init
> list-objects-filter: implement filter tree:0
> filter-trees: code clean-up of tests
> list-objects: support for skipping tree traversal
> Documentation/git-log.txt: do not show --exclude-promisor-objects
> exclude-promisor-objects: declare when option is allowed
>
> Max Kirillov (1):
> http-backend test: make empty CONTENT_LENGTH test more realistic
>
> Michael Witten (3):
> docs: typo: s/go/to/
> docs: graph: remove unnecessary `graph_update()' call
> docs: typo: s/isimilar/similar/
>
> Michał Górny (6):
> gpg-interface.c: detect and reject multiple signatures on commits
> gpg-interface.c: use flags to determine key/signer info presence
> gpg-interface.c: support getting key fingerprint via %GF format
> gpg-interface.c: obtain primary key fingerprint as well
> t/t7510-signed-commit.sh: Add %GP to custom format checks
> t/t7510-signed-commit.sh: add signing subkey to Eris Discordia key
>
> Mihir Mehta (1):
> doc: fix a typo and clarify a sentence
>
> Nguyễn Thái Ngọc Duy (170):
> clone: report duplicate entries on case-insensitive filesystems
> trace.h: support nested performance tracing
> unpack-trees: add performance tracing
> unpack-trees: optimize walking same trees with cache-tree
> unpack-trees: reduce malloc in cache-tree walk
> unpack-trees: reuse (still valid) cache-tree from src_index
> unpack-trees: add missing cache invalidation
> cache-tree: verify valid cache-tree in the test suite
> Document update for nd/unpack-trees-with-cache-tree
> bisect.c: make show_list() build again
> t/helper: keep test-tool command list sorted
> t/helper: merge test-dump-untracked-cache into test-tool
> t/helper: merge test-pkt-line into test-tool
> t/helper: merge test-parse-options into test-tool
> t/helper: merge test-dump-fsmonitor into test-tool
> Makefile: add a hint about TEST_BUILTINS_OBJS
> config.txt: follow camelCase naming
> config.txt: move fetch part out to a separate file
> config.txt: move format part out to a separate file
> config.txt: move gitcvs part out to a separate file
> config.txt: move gui part out to a separate file
> config.txt: move pull part out to a separate file
> config.txt: move push part out to a separate file
> config.txt: move receive part out to a separate file
> config.txt: move sendemail part out to a separate file
> config.txt: move sequence.editor out of "core" part
> config.txt: move submodule part out to a separate file
> archive.c: remove implicit dependency the_repository
> status: show progress bar if refreshing the index takes too long
> add: do not accept pathspec magic 'attr'
> completion: support "git fetch --multiple"
> read-cache.c: remove 'const' from index_has_changes()
> diff.c: reduce implicit dependency on the_index
> combine-diff.c: remove implicit dependency on the_index
> blame.c: rename "repo" argument to "r"
> diff.c: remove the_index dependency in textconv() functions
> grep.c: remove implicit dependency on the_index
> diff.c: remove implicit dependency on the_index
> read-cache.c: remove implicit dependency on the_index
> diff-lib.c: remove implicit dependency on the_index
> ll-merge.c: remove implicit dependency on the_index
> merge-blobs.c: remove implicit dependency on the_index
> merge.c: remove implicit dependency on the_index
> patch-ids.c: remove implicit dependency on the_index
> sha1-file.c: remove implicit dependency on the_index
> rerere.c: remove implicit dependency on the_index
> userdiff.c: remove implicit dependency on the_index
> line-range.c: remove implicit dependency on the_index
> submodule.c: remove implicit dependency on the_index
> tree-diff.c: remove implicit dependency on the_index
> ws.c: remove implicit dependency on the_index
> revision.c: remove implicit dependency on the_index
> revision.c: reduce implicit dependency the_repository
> read-cache.c: optimize reading index format v4
> config.txt: correct the note about uploadpack.packObjectsHook
> help -a: improve and make --verbose default
> refs.c: indent with tabs, not spaces
> Add a place for (not) sharing stuff between worktrees
> submodule.c: remove some of the_repository references
> completion: fix __gitcomp_builtin no longer consider extra options
> t1300: extract and use test_cmp_config()
> worktree: add per-worktree config files
> refs: new ref types to make per-worktree refs visible to all worktrees
> revision.c: correct a parameter name
> revision.c: better error reporting on ref from different worktrees
> fsck: check HEAD and reflog from other worktrees
> reflog expire: cover reflog from all worktrees
> Update makefile in preparation for Documentation/config/*.txt
> config.txt: move advice.* to a separate file
> config.txt: move core.* to a separate file
> config.txt: move add.* to a separate file
> config.txt: move alias.* to a separate file
> config.txt: move am.* to a separate file
> config.txt: move apply.* to a separate file
> config.txt: move blame.* to a separate file
> config.txt: move branch.* to a separate file
> config.txt: move browser.* to a separate file
> config.txt: move checkout.* to a separate file
> config.txt: move clean.* to a separate file
> config.txt: move color.* to a separate file
> config.txt: move column.* to a separate file
> config.txt: move commit.* to a separate file
> config.txt: move credential.* to a separate file
> config.txt: move completion.* to a separate file
> config.txt: move diff-config.txt to config/
> config.txt: move difftool.* to a separate file
> config.txt: move fastimport.* to a separate file
> config.txt: move fetch-config.txt to config/
> config.txt: move filter.* to a separate file
> config.txt: move format-config.txt to config/
> config.txt: move fmt-merge-msg-config.txt to config/
> config.txt: move fsck.* to a separate file
> config.txt: move gc.* to a separate file
> config.txt: move gitcvs-config.txt to config/
> config.txt: move gitweb.* to a separate file
> config.txt: move grep.* to a separate file
> config.txt: move gpg.* to a separate file
> config.txt: move gui-config.txt to config/
> config.txt: move guitool.* to a separate file
> config.txt: move help.* to a separate file
> config.txt: move ssh.* to a separate file
> config.txt: move http.* to a separate file
> config.txt: move i18n.* to a separate file
> git-imap-send.txt: move imap.* to a separate file
> config.txt: move index.* to a separate file
> config.txt: move init.* to a separate file
> config.txt: move instaweb.* to a separate file
> config.txt: move interactive.* to a separate file
> config.txt: move log.* to a separate file
> config.txt: move mailinfo.* to a separate file
> config.txt: move mailmap.* to a separate file
> config.txt: move man.* to a separate file
> config.txt: move merge-config.txt to config/
> config.txt: move mergetool.* to a separate file
> config.txt: move notes.* to a separate file
> config.txt: move pack.* to a separate file
> config.txt: move pager.* to a separate file
> config.txt: move pretty.* to a separate file
> config.txt: move protocol.* to a separate file
> config.txt: move pull-config.txt to config/
> config.txt: move push-config.txt to config/
> config.txt: move rebase-config.txt to config/
> config.txt: move receive-config.txt to config/
> config.txt: move remote.* to a separate file
> config.txt: move remotes.* to a separate file
> config.txt: move repack.* to a separate file
> config.txt: move rerere.* to a separate file
> config.txt: move reset.* to a separate file
> config.txt: move sendemail-config.txt to config/
> config.txt: move sequencer.* to a separate file
> config.txt: move showBranch.* to a separate file
> config.txt: move splitIndex.* to a separate file
> config.txt: move status.* to a separate file
> config.txt: move stash.* to a separate file
> config.txt: move submodule.* to a separate file
> config.txt: move tag.* to a separate file
> config.txt: move transfer.* to a separate file
> config.txt: move uploadarchive.* to a separate file
> config.txt: move uploadpack.* to a separate file
> config.txt: move url.* to a separate file
> config.txt: move user.* to a separate file
> config.txt: move versionsort.* to a separate file
> config.txt: move web.* to a separate file
> config.txt: move worktree.* to a separate file
> config.txt: remove config/dummy.txt
> thread-utils: macros to unconditionally compile pthreads API
> wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
> git-worktree.txt: correct linkgit command name
> sequencer.c: remove a stray semicolon
> tree-walk.c: fix overoptimistic inclusion in :(exclude) matching
> run-command.h: include thread-utils.h instead of pthread.h
> send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c
> index-pack: remove #ifdef NO_PTHREADS
> name-hash.c: remove #ifdef NO_PTHREADS
> attr.c: remove #ifdef NO_PTHREADS
> grep: remove #ifdef NO_PTHREADS
> grep: clean up num_threads handling
> preload-index.c: remove #ifdef NO_PTHREADS
> pack-objects: remove #ifdef NO_PTHREADS
> read-cache.c: remove #ifdef NO_PTHREADS
> read-cache.c: reduce branching based on HAVE_THREADS
> read-cache.c: initialize copy_len to shut up gcc 8
> Clean up pthread_create() error handling
> completion: use __gitcomp_builtin for format-patch
> build: fix broken command-list.h generation with core.autocrlf
> format-patch: respect --stat in cover letter's diffstat
> doc: move extensions.worktreeConfig to the right place
> clone: fix colliding file detection on APFS
> files-backend.c: fix build error on Solaris
> transport-helper.c: do not translate a string twice
>
> Nickolai Belakovski (2):
> worktree: update documentation for lock_reason and lock_reason_valid
> worktree: rename is_worktree_locked to worktree_lock_reason
>
> Noam Postavsky (1):
> log: fix coloring of certain octopus merge shapes
>
> Olga Telezhnaya (3):
> ref-filter: free memory from used_atom
> ls-remote: release memory instead of UNLEAK
> ref-filter: free item->value and item->value->s
>
> Phillip Wood (11):
> diff: fix --color-moved-ws=allow-indentation-change
> diff --color-moved-ws: fix double free crash
> diff --color-moved-ws: fix out of bounds string access
> diff --color-moved-ws: fix a memory leak
> diff --color-moved-ws: fix another memory leak
> diff --color-moved: fix a memory leak
> am: don't die in read_author_script()
> am: improve author-script error reporting
> am: rename read_author_script()
> add read_author_script() to libgit
> sequencer: use read_author_script()
>
> Pratik Karki (46):
> rebase: start implementing it as a builtin
> rebase: refactor common shell functions into their own file
> builtin/rebase: support running "git rebase <upstream>"
> builtin rebase: support --onto
> builtin rebase: support `git rebase --onto A...B`
> builtin rebase: handle the pre-rebase hook and --no-verify
> builtin rebase: support --quiet
> builtin rebase: support the `verbose` and `diffstat` options
> builtin rebase: require a clean worktree
> builtin rebase: try to fast forward when possible
> builtin rebase: support --force-rebase
> builtin rebase: start a new rebase only if none is in progress
> builtin rebase: only store fully-qualified refs in `options.head_name`
> builtin rebase: support `git rebase <upstream> <switch-to>`
> builtin rebase: support --continue
> builtin rebase: support --skip
> builtin rebase: support --abort
> builtin rebase: support --quit
> builtin rebase: support --edit-todo and --show-current-patch
> builtin rebase: actions require a rebase in progress
> builtin rebase: stop if `git am` is in progress
> builtin rebase: allow selecting the rebase "backend"
> builtin rebase: support --signoff
> builtin rebase: support --rerere-autoupdate
> builtin rebase: support --committer-date-is-author-date
> builtin rebase: support `ignore-whitespace` option
> builtin rebase: support `ignore-date` option
> builtin rebase: support `keep-empty` option
> builtin rebase: support `--autosquash`
> builtin rebase: support `--gpg-sign` option
> builtin rebase: support `-C` and `--whitespace=<type>`
> builtin rebase: support `--autostash` option
> builtin rebase: support `--exec`
> builtin rebase: support `--allow-empty-message` option
> builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
> merge-base --fork-point: extract libified function
> builtin rebase: support `fork-point` option
> builtin rebase: add support for custom merge strategies
> builtin rebase: support --root
> builtin rebase: optionally auto-detect the upstream
> builtin rebase: optionally pass custom reflogs to reset_head()
> builtin rebase: fast-forward to onto if it is a proper descendant
> builtin rebase: show progress when connected to a terminal
> builtin rebase: use no-op editor when interactive is "implied"
> builtin rebase: error out on incompatible option/mode combinations
> rebase: default to using the builtin rebase
>
> Rafael Ascensão (2):
> refs: show --exclude failure with --branches/tags/remotes=glob
> refs: fix some exclude patterns being ignored
>
> Ralf Thielow (2):
> git-rebase.sh: fix typos in error messages
> builtin/rebase.c: remove superfluous space in messages
>
> Ramsay Jones (12):
> Makefile: add a hdr-check target
> json-writer.h: add missing include (hdr-check)
> ewah/ewok_rlw.h: add missing include (hdr-check)
> refs/ref-cache.h: add missing declarations (hdr-check)
> refs/packed-backend.h: add missing declaration (hdr-check)
> refs/refs-internal.h: add missing declarations (hdr-check)
> midx.h: add missing forward declarations (hdr-check)
> delta-islands.h: add missing forward declarations (hdr-check)
> headers: normalize the spelling of some header guards
> fetch-object.h: add missing declaration (hdr-check)
> ewok_rlw.h: add missing 'inline' to function definition
> commit-reach.h: add missing declarations (hdr-check)
>
> Rasmus Villemoes (6):
> help: redirect to aliased commands for "git cmd --help"
> git.c: handle_alias: prepend alias info when first argument is -h
> git-help.txt: document "git help cmd" vs "git cmd --help" for aliases
> Documentation/git-send-email.txt: style fixes
> send-email: only consider lines containing @ or <> for automatic Cc'ing
> send-email: also pick up cc addresses from -by trailers
>
> René Scharfe (12):
> mailinfo: support format=flowed
> fsck: add a performance test for skipList
> fsck: use strbuf_getline() to read skiplist file
> fsck: use oidset instead of oid_array for skipList
> sequencer: use return value of oidset_insert()
> grep: add -r/--[no-]recursive
> fetch-pack: factor out is_unmatched_ref()
> fetch-pack: load tip_oids eagerly iff needed
> khash: factor out kh_release_*
> oidset: use khash
> oidset: uninline oidset_init()
> commit-reach: fix cast in compare_commits_by_gen()
>
> Roger Strain (1):
> subtree: performance improvement for finding unexpected parent commits
>
> SZEDER Gábor (20):
> t1404: increase core.packedRefsTimeout to avoid occasional test failure
> Documentation/git.txt: clarify that GIT_TRACE=/path appends
> t3701-add-interactive: tighten the check of trace output
> t1700-split-index: drop unnecessary 'grep'
> t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
> t1700-split-index: document why FSMONITOR is disabled in this test script
> split-index: add tests to demonstrate the racy split index problem
> t1700-split-index: date back files to avoid racy situations
> split-index: count the number of deleted entries
> split-index: don't compare cached data of entries already marked for split index
> split-index: smudge and add racily clean cache entries to split index
> split-index: BUG() when cache entry refers to non-existing shared entry
> object_id.cocci: match only expressions of type 'struct object_id'
> test-lib: introduce the '-V' short option for '--verbose-log'
> travis-ci: install packages in 'ci/install-dependencies.sh'
> coccicheck: introduce 'pending' semantic patches
> ref-filter: don't look for objects when outside of a repository
> tests: send "bug in the test script" errors to the script's stderr
> test-lib-functions: make 'test_cmp_rev' more informative on failure
> t/lib-git-daemon: fix signal checking
>
> Sam McKelvie (1):
> rev-parse: --show-superproject-working-tree should work during a merge
>
> Saulius Gurklys (1):
> doc: fix small typo in git show-branch
>
> Sebastian Staudt (1):
> travis-ci: no longer use containers
>
> Shulhan (1):
> builtin/remote: quote remote name on error to display empty name
>
> Stefan Beller (25):
> git-submodule.sh: align error reporting for update mode to use path
> git-submodule.sh: rename unused variables
> builtin/submodule--helper: factor out submodule updating
> builtin/submodule--helper: store update_clone information in a struct
> builtin/submodule--helper: factor out method to update a single submodule
> submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree
> submodule--helper: introduce new update-module-mode helper
> test_decode_color: understand FAINT and ITALIC
> t3206: add color test for range-diff --dual-color
> diff.c: simplify caller of emit_line_0
> diff.c: reorder arguments for emit_line_ws_markup
> diff.c: add set_sign to emit_line_0
> diff: use emit_line_0 once per line
> diff.c: omit check for line prefix in emit_line_0
> diff.c: rewrite emit_line_0 more understandably
> diff.c: add --output-indicator-{new, old, context}
> range-diff: make use of different output indicators
> range-diff: indent special lines as context
> refs.c: migrate internal ref iteration to pass thru repository argument
> refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
> string-list: remove unused function print_string_list
> strbuf.h: format according to coding guidelines
> diff.c: pass sign_index to emit_line_ws_markup
> submodule helper: convert relative URL to absolute URL if needed
> builtin/submodule--helper: remove debugging leftover tracing
>
> Stephen P. Smith (10):
> wt-status.c: move has_unmerged earlier in the file
> wt-status: rename commitable to committable
> t7501: add test of "commit --dry-run --short"
> wt-status.c: set the committable flag in the collect phase
> roll wt_status_state into wt_status and populate in the collect phase
> t2000: rename and combine checkout clash tests
> t7509: cleanup description and filename
> t7502: rename commit test script to comply with naming convention
> t7500: rename commit tests script to comply with naming convention
> t7501: rename commit test to comply with naming convention
>
> Steve Hoelzer (1):
> poll: use GetTickCount64() to avoid wrap-around issues
>
> Steven Fernandez (1):
> git-completion.bash: add completion for stash list
>
> Strain, Roger L (4):
> subtree: refactor split of a commit into standalone method
> subtree: make --ignore-joins pay attention to adds
> subtree: use commits before rejoins for splits
> subtree: improve decision on merges kept in split
>
> Sven Strickroth (1):
> msvc: directly use MS version (_stricmp) of strcasecmp
>
> Tao Qingyun (3):
> refs: docstring typo
> builtin/branch.c: remove useless branch_get
> branch: trivial style fix
>
> Taylor Blau (4):
> transport.c: extract 'fill_alternate_refs_command'
> transport.c: introduce core.alternateRefsCommand
> transport.c: introduce core.alternateRefsPrefixes
> Documentation/config.txt: fix typo in core.alternateRefsCommand
>
> Thomas Gummerer (17):
> rerere: unify error messages when read_cache fails
> rerere: lowercase error messages
> rerere: wrap paths in output in sq
> rerere: mark strings for translation
> rerere: add documentation for conflict normalization
> rerere: fix crash with files rerere can't handle
> rerere: only return whether a path has conflicts or not
> rerere: factor out handle_conflict function
> rerere: return strbuf from handle path
> rerere: teach rerere to handle nested conflicts
> rerere: recalculate conflict ID when unresolved conflict is committed
> rerere: mention caveat about unmatched conflict markers
> rerere: add note about files with existing conflict markers
> .gitattributes: add conflict-marker-size for relevant files
> linear-assignment: fix potential out of bounds memory access
> t5551: move setup code inside test_expect blocks
> t5551: compare sorted cookies files
>
> Tim Schumacher (4):
> Documentation/Makefile: make manpage-base-url.xsl generation quieter
> alias: add support for aliases of an alias
> alias: show the call history when an alias is looping
> t0014: introduce an alias testing suite
>
> Todd Zullinger (1):
> Documentation: build technical/multi-pack-index
>
> Torsten Bögershausen (5):
> Make git_check_attr() a void function
> path.c: char is not (always) signed
> Upcast size_t variables to uintmax_t when printing
> remote-curl.c: xcurl_off_t is not portable (on 32 bit platfoms)
> t5601-99: Enable colliding file detection for MINGW
>
> Uwe Kleine-König (1):
> howto/using-merge-subtree: mention --allow-unrelated-histories
>
> brian m. carlson (26):
> t: add test functions to translate hash-related values
> t0000: use hash translation table
> t0000: update tests for SHA-256
> t0002: abstract away SHA-1 specific constants
> t0064: make hash size independent
> t1006: make hash size independent
> t1400: switch hard-coded object ID to variable
> t1405: make hash size independent
> t1406: make hash-size independent
> t1407: make hash size independent
> editorconfig: provide editor settings for Git developers
> editorconfig: indicate settings should be kept in sync
> pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
> builtin/repack: replace hard-coded constants
> builtin/mktree: remove hard-coded constant
> builtin/fetch-pack: remove constants with parse_oid_hex
> pack-revindex: express constants in terms of the_hash_algo
> packfile: express constants in terms of the_hash_algo
> refs/packed-backend: express constants using the_hash_algo
> upload-pack: express constants in terms of the_hash_algo
> transport: use parse_oid_hex instead of a constant
> tag: express constant in terms of the_hash_algo
> apply: replace hard-coded constants
> apply: rename new_sha1_prefix and old_sha1_prefix
> submodule: make zero-oid comparison hash function agnostic
> rerere: convert to use the_hash_algo
>
> Ævar Arnfjörð Bjarmason (35):
> fetch: change "branch" to "reference" in --force -h output
> push tests: make use of unused $1 in test description
> push tests: use spaces in interpolated string
> fetch tests: add a test for clobbering tag behavior
> push doc: remove confusing mention of remote merger
> push doc: move mention of "tag <tag>" later in the prose
> push doc: correct lies about how push refspecs work
> fetch: document local ref updates with/without --force
> fetch: stop clobbering existing tags without --force
> fsck tests: setup of bogus commit object
> fsck tests: add a test for no skipList input
> fsck: document and test sorted skipList input
> fsck: document and test commented & empty line skipList input
> fsck: document that skipList input must be unabbreviated
> fsck: add a performance test
> fsck: support comments & empty lines in skipList
> commit-graph write: add progress output
> commit-graph verify: add progress output
> config doc: add missing list separator for checkout.optimizeNewBranch
> push doc: add spacing between two words
> fetch doc: correct grammar in --force docs
> gc: fix regression in 7b0f229222 impacting --quiet
> gc doc: mention the commit-graph in the intro
> pack-objects test: modernize style
> pack-objects tests: don't leave test .git corrupt at end
> index-pack tests: don't leave test repo dirty at end
> i18n: make GETTEXT_POISON a runtime option
> range-diff doc: add a section about output stability
> range-diff: fix regression in passing along diff options
> range-diff: make diff option behavior (e.g. --stat) consistent
> push: change needlessly ambiguous example in error
> rebase doc: document rebase.useBuiltin
> tests: add a special setup where rebase.useBuiltin is off
> read-cache: make the split index obey umask settings
> advice: don't pointlessly suggest --convert-graft-file
>
> Đoàn Trần Công Danh (1):
> git-compat-util: prefer poll.h to sys/poll.h
>
> --
> 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/xmqq36rhjnts.fsf%40gitster-ct.c.googlers.com.
> For more options, visit https://groups.google.com/d/optout.
>
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.20.0-rc2
@ 2018-12-01 14:58 2% Junio C Hamano
2018-12-03 20:45 0% ` Johannes Schindelin
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2018-12-01 14:58 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.20.0-rc2 is now available for testing
at the usual places. It is comprised of 934 non-merge commits
since v2.19.0, contributed by 76 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.20.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.19.0 are as follows.
Welcome to the Git development community!
Aaron Lindsay, Alexander Pyhalov, Anton Serbulov, Brendan
Forster, Carlo Marcelo Arenas Belón, Daniels Umanovskis, David
Zych, Đoàn Trần Công Danh, Frederick Eaton, Greg Hurrell,
James Knight, Jann Horn, Joshua Watt, Loo Rong Jie, Lucas
De Marchi, Matthew DeVore, Mihir Mehta, Nickolai Belakovski,
Roger Strain, Sam McKelvie, Saulius Gurklys, Shulhan, Steven
Fernandez, Strain, Roger L, and Tim Schumacher.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Andreas Gruenbacher,
Andreas Heiduk, Antonio Ospite, Ben Peart, Brandon Williams,
brian m. carlson, Christian Couder, Christian Hesse, Denton Liu,
Derrick Stolee, Elijah Newren, Eric Sunshine, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
Karsten Blees, Luke Diamand, Martin Ågren, Max Kirillov,
Michael Witten, Michał Górny, Nguyễn Thái Ngọc Duy, Noam
Postavsky, Olga Telezhnaya, Phillip Wood, Pratik Karki, Rafael
Ascensão, Ralf Thielow, Ramsay Jones, Rasmus Villemoes, René
Scharfe, Sebastian Staudt, Stefan Beller, Stephen P. Smith, Steve
Hoelzer, Sven Strickroth, SZEDER Gábor, Tao Qingyun, Taylor
Blau, Thomas Gummerer, Todd Zullinger, Torsten Bögershausen,
and Uwe Kleine-König.
----------------------------------------------------------------
Git 2.20 Release Notes (draft)
==============================
Backward Compatibility Notes
----------------------------
* "git branch -l <foo>" used to be a way to ask a reflog to be
created while creating a new branch, but that is no longer the
case. It is a short-hand for "git branch --list <foo>" now.
* "git push" into refs/tags/* hierarchy is rejected without getting
forced, but "git fetch" (misguidedly) used the "fast forwarding"
rule used for the refs/heads/* hierarchy; this has been corrected,
which means some fetches of tags that did not fail with older
version of Git will fail without "--force" with this version.
* "git help -a" now gives verbose output (same as "git help -av").
Those who want the old output may say "git help --no-verbose -a"..
* "git cpn --help", when "cpn" is an alias to, say, "cherry-pick -n",
reported only the alias expansion of "cpn" in earlier versions of
Git. It now runs "git cherry-pick --help" to show the manual page
of the command, while sending the alias expansion to the standard
error stream.
* "git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by". This is a backward-incompatible
change. Adding "--suppress-cc=misc-by" on the command line, or
setting sendemail.suppresscc configuration variable to "misc-by",
can be used to disable this behaviour.
Updates since v2.19
-------------------
UI, Workflows & Features
* Running "git clone" against a project that contain two files with
pathnames that differ only in cases on a case insensitive
filesystem would result in one of the files lost because the
underlying filesystem is incapable of holding both at the same
time. An attempt is made to detect such a case and warn.
* "git checkout -b newbranch [HEAD]" should not have to do as much as
checking out a commit different from HEAD. An attempt is made to
optimize this special case.
* "git rev-list --stdin </dev/null" used to be an error; it now shows
no output without an error. "git rev-list --stdin --default HEAD"
still falls back to the given default when nothing is given on the
standard input.
* Lift code from GitHub to restrict delta computation so that an
object that exists in one fork is not made into a delta against
another object that does not appear in the same forked repository.
* "git format-patch" learned new "--interdiff" and "--range-diff"
options to explain the difference between this version and the
previous attempt in the cover letter (or after the three-dashes as
a comment).
* "git mailinfo" used in "git am" learned to make a best-effort
recovery of a patch corrupted by MUA that sends text/plain with
format=flawed option.
(merge 3aa4d81f88 rs/mailinfo-format-flowed later to maint).
* The rules used by "git push" and "git fetch" to determine if a ref
can or cannot be updated were inconsistent; specifically, fetching
to update existing tags were allowed even though tags are supposed
to be unmoving anchoring points. "git fetch" was taught to forbid
updates to existing tags without the "--force" option.
* "git multi-pack-index" learned to detect corruption in the .midx
file it uses, and this feature has been integrated into "git fsck".
* Generation of (experimental) commit-graph files have so far been
fairly silent, even though it takes noticeable amount of time in a
meaningfully large repository. The users will now see progress
output.
* The minimum version of Windows supported by Windows port of Git is
now set to Vista.
* The completion script (in contrib/) learned to complete a handful of
options "git stash list" command takes.
* The completion script (in contrib/) learned that "git fetch
--multiple" only takes remote names as arguments and no refspecs.
* "git status" learns to show progress bar when refreshing the index
takes a long time.
(merge ae9af12287 nd/status-refresh-progress later to maint).
* "git help -a" and "git help -av" give different pieces of
information, and generally the "verbose" version is more friendly
to the new users. "git help -a" by default now uses the more
verbose output (with "--no-verbose", you can go back to the
original). Also "git help -av" now lists aliases and external
commands, which it did not used to.
* Unlike "grep", "git grep" by default recurses to the whole tree.
The command learned "git grep --recursive" option, so that "git
grep --no-recursive" can serve as a synonym to setting the
max-depth to 0.
* When pushing into a repository that borrows its objects from an
alternate object store, "git receive-pack" that responds to the
push request on the other side lists the tips of refs in the
alternate to reduce the amount of objects transferred. This
sometimes is detrimental when the number of refs in the alternate
is absurdly large, in which case the bandwidth saved in potentially
fewer objects transferred is wasted in excessively large ref
advertisement. The alternate refs that are advertised are now
configurable with a pair of configuration variables.
* "git cmd --help" when "cmd" is aliased used to only say "cmd is
aliased to ...". Now it shows that to the standard error stream
and runs "git $cmd --help" where $cmd is the first word of the
alias expansion.
* The documentation of "git gc" has been updated to mention that it
is no longer limited to "pruning away crufts" but also updates
ancillary files like commit-graph as a part of repository
optimization.
* "git p4 unshelve" improvements.
* The logic to select the default user name and e-mail on Windows has
been improved.
(merge 501afcb8b0 js/mingw-default-ident later to maint).
* The "rev-list --filter" feature learned to exclude all trees via
"tree:0" filter.
* "git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by"; --suppress-cc=misc-by on the
command line, or setting sendemail.suppresscc configuration
variable to "misc-by", can be used to disable this behaviour.
* Developer builds now uses -Wunused-function compilation option.
* One of our CI tests to run with "unusual/experimental/random"
settings now also uses commit-graph and midx.
* "git mergetool" learned to take the "--[no-]gui" option, just like
"git difftool" does.
* "git rebase -i" learned a new insn, 'break', that the user can
insert in the to-do list. Upon hitting it, the command returns
control back to the user.
* New "--pretty=format:" placeholders %GF and %GP that show the GPG
key fingerprints have been invented.
* On platforms with recent cURL library, http.sslBackend configuration
variable can be used to choose a different SSL backend at runtime.
The Windows port uses this mechanism to switch between OpenSSL and
Secure Channel while talking over the HTTPS protocol.
* "git send-email" learned to disable SMTP authentication via the
"--smtp-auth=none" option, even when the smtp username is given
(which turns the authentication on by default).
* A fourth class of configuration files (in addition to the
traditional "system wide", "per user in the $HOME directory" and
"per repository in the $GIT_DIR/config") has been introduced so
that different worktrees that share the same repository (hence the
same $GIT_DIR/config file) can use different customization.
* A pattern with '**' that does not have a slash on either side used
to be an invalid one, but the code now treats such double-asterisks
the same way as two normal asterisks that happen to be adjacent to
each other.
(merge e5bbe09e88 nd/wildmatch-double-asterisk later to maint).
* The "--no-patch" option, which can be used to get a high-level
overview without the actual line-by-line patch difference shown, of
the "range-diff" command was earlier broken, which has been
corrected.
* The recently merged "rebase in C" has an escape hatch to use the
scripted version when necessary, but it hasn't been documented,
which has been corrected.
Performance, Internal Implementation, Development Support etc.
* When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
* "git submodule update" is getting rewritten piece-by-piece into C.
* The code for computing history reachability has been shuffled,
obtained a bunch of new tests to cover them, and then being
improved.
* The unpack_trees() API used in checking out a branch and merging
walks one or more trees along with the index. When the cache-tree
in the index tells us that we are walking a tree whose flattened
contents is known (i.e. matches a span in the index), as linearly
scanning a span in the index is much more efficient than having to
open tree objects recursively and listing their entries, the walk
can be optimized, which has been done.
* When creating a thin pack, which allows objects to be made into a
delta against another object that is not in the resulting pack but
is known to be present on the receiving end, the code learned to
take advantage of the reachability bitmap; this allows the server
to send a delta against a base beyond the "boundary" commit.
* spatch transformation to replace boolean uses of !hashcmp() to
newly introduced oideq() is added, and applied, to regain
performance lost due to support of multiple hash algorithms.
* Fix a bug in which the same path could be registered under multiple
worktree entries if the path was missing (for instance, was removed
manually). Also, as a convenience, expand the number of cases in
which --force is applicable.
* Split Documentation/config.txt for easier maintenance.
(merge 6014363f0b nd/config-split later to maint).
* Test helper binaries clean-up.
(merge c9a1f4161f nd/test-tool later to maint).
* Various tests have been updated to make it easier to swap the
hash function used for object identification.
(merge ae0c89d41b bc/hash-independent-tests later to maint).
* Update fsck.skipList implementation and documentation.
(merge 371a655074 ab/fsck-skiplist later to maint).
* An alias that expands to another alias has so far been forbidden,
but now it is allowed to create such an alias.
* Various test scripts have been updated for style and also correct
handling of exit status of various commands.
* "gc --auto" ended up calling exit(-1) upon error, which has been
corrected to use exit(1). Also the error reporting behaviour when
daemonized has been updated to exit with zero status when stopping
due to a previously discovered error (which implies there is no
point running gc to improve the situation); we used to exit with
failure in such a case.
* Various codepaths in the core-ish part learned to work on an
arbitrary in-core index structure, not necessarily the default
instance "the_index".
(merge b3c7eef9b0 nd/the-index later to maint).
* Code clean-up in the internal machinery used by "git status" and
"git commit --dry-run".
(merge 73ba5d78b4 ss/wt-status-committable later to maint).
* Some environment variables that control the runtime options of Git
used during tests are getting renamed for consistency.
(merge 4231d1ba99 bp/rename-test-env-var later to maint).
* A pair of new extensions to the index file have been introduced.
They allow the index file to be read in parallel for performance.
* The oidset API was built on top of the oidmap API which in turn is
on the hashmap API. Replace the implementation to build on top of
the khash API and gain performance.
* Over some transports, fetching objects with an exact commit object
name can be done without first seeing the ref advertisements. The
code has been optimized to exploit this.
* In a partial clone that will lazily be hydrated from the
originating repository, we generally want to avoid "does this
object exist (locally)?" on objects that we deliberately omitted
when we created the clone. The cache-tree codepath (which is used
to write a tree object out of the index) however insisted that the
object exists, even for paths that are outside of the partial
checkout area. The code has been updated to avoid such a check.
* To help developers, an EditorConfig file that attempts to follow
the project convention has been added.
(merge b548d698a0 bc/editorconfig later to maint).
* The result of coverage test can be combined with "git blame" to
check the test coverage of code introduced recently with a new
'coverage-diff' tool (in contrib/).
(merge 783faedd65 ds/coverage-diff later to maint).
* An experiment to fuzz test a few areas, hopefully we can gain more
coverage to various areas.
* More codepaths are moving away from hardcoded hash sizes.
* The way the Windows port figures out the current directory has been
improved.
* The way DLLs are loaded on the Windows port has been improved.
* Some tests have been reorganized and renamed; "ls t/" now gives a
better overview of what is tested for these scripts than before.
* "git rebase" and "git rebase -i" have been reimplemented in C.
* Windows port learned to use nano-second resolution file timestamps.
* The overly large Documentation/config.txt file have been split into
million little pieces. This potentially allows each individual piece
included into the manual page of the command it affects more easily.
* Replace three string-list instances used as look-up tables in "git
fetch" with hashmaps.
* Unify code to read the author-script used in "git am" and the
commands that use the sequencer machinery, e.g. "git rebase -i".
* In preparation to the day when we can deprecate and remove the
"rebase -p", make sure we can skip and later remove tests for
it.
* The history traversal used to implement the tag-following has been
optimized by introducing a new helper.
* The helper function to refresh the cached stat information in the
in-core index has learned to perform the lstat() part of the
operation in parallel on multi-core platforms.
* The code to traverse objects for reachability, used to decide what
objects are unreferenced and expendable, have been taught to also
consider per-worktree refs of other worktrees as starting points to
prevent data loss.
* "git add" needs to internally run "diff-files" equivalent, and the
codepath learned the same optimization as "diff-files" has to run
lstat(2) in parallel to find which paths have been updated in the
working tree.
* The procedure to install dependencies before testing at Travis CI
is getting revamped for both simplicity and flexibility, taking
advantage of the recent move to the vm-based environment.
* The support for format-patch (and send-email) by the command-line
completion script (in contrib/) has been simplified a bit.
* The revision walker machinery learned to take advantage of the
commit generation numbers stored in the commit-graph file.
* The codebase has been cleaned up to reduce "#ifndef NO_PTHREADS".
* The way -lcurl library gets linked has been simplified by taking
advantage of the fact that we can just ask curl-config command how.
* Various functions have been audited for "-Wunused-parameter" warnings
and bugs in them got fixed.
* A sanity check for start-up sequence has been added in the config
API codepath.
* The build procedure to link for fuzzing test has been made
customizable with a new Makefile variable.
* The way "git rebase" parses and forwards the command line options
meant for underlying "git am" has been revamped, which fixed for
options with parameters that were not passed correctly.
* Our testing framework uses a special i18n "poisoned localization"
feature to find messages that ought to stay constant but are
incorrectly marked to be translated. This feature has been made
into a runtime option (it used to be a compile-time option).
* "git push" used to check ambiguities between object-names and
refnames while processing the list of refs' old and new values,
which was unnecessary (as it knew that it is feeding raw object
names). This has been optimized out.
* The xcurl_off_t() helper function is used to cast size_t to
curl_off_t, but some compilers gave warnings against the code to
ensure the casting is done without wraparound, when size_t is
narrower than curl_off_t. This warning has been squelched.
* Code preparation to replace ulong vars with size_t vars where
appropriate continues.
* The "test installed Git" mode of our test suite has been updated to
work better.
* A coding convention around the Coccinelle semantic patches to have
two classes to ease code migration process has been proposed and
its support has been added to the Makefile.
Fixes since v2.19
-----------------
* "git interpret-trailers" and its underlying machinery had a buggy
code that attempted to ignore patch text after commit log message,
which triggered in various codepaths that will always get the log
message alone and never get such an input.
(merge 66e83d9b41 jk/trailer-fixes later to maint).
* Malformed or crafted data in packstream can make our code attempt
to read or write past the allocated buffer and abort, instead of
reporting an error, which has been fixed.
* "git rebase -i" did not clear the state files correctly when a run
of "squash/fixup" is aborted and then the user manually amended the
commit instead, which has been corrected.
(merge 10d2f35436 js/rebase-i-autosquash-fix later to maint).
* When fsmonitor is in use, after operation on submodules updates
.gitmodules, we lost track of the fact that we did so and relied on
stale fsmonitor data.
(merge 43f1180814 bp/mv-submodules-with-fsmonitor later to maint).
* Fix for a long-standing bug that leaves the index file corrupt when
it shrinks during a partial commit.
(merge 6c003d6ffb jk/reopen-tempfile-truncate later to maint).
* Further fix for O_APPEND emulation on Windows
(merge eeaf7ddac7 js/mingw-o-append later to maint).
* A corner case bugfix in "git rerere" code.
(merge ad2bf0d9b4 en/rerere-multi-stage-1-fix later to maint).
* "git add ':(attr:foo)'" is not supported and is supposed to be
rejected while the command line arguments are parsed, but we fail
to reject such a command line upfront.
(merge 84d938b732 nd/attr-pathspec-fix later to maint).
* Recent update broke the reachability algorithm when refs (e.g.
tags) that point at objects that are not commit were involved,
which has been fixed.
* "git rebase" etc. in Git 2.19 fails to abort when given an empty
commit log message as result of editing, which has been corrected.
(merge a3ec9eaf38 en/sequencer-empty-edit-result-aborts later to maint).
* The code to backfill objects in lazily cloned repository did not
work correctly, which has been corrected.
(merge e68302011c jt/lazy-object-fetch-fix later to maint).
* Update error messages given by "git remote" and make them consistent.
(merge 5025425dff ms/remote-error-message-update later to maint).
* "git update-ref" learned to make both "--no-deref" and "--stdin"
work at the same time.
(merge d345e9fbe7 en/update-ref-no-deref-stdin later to maint).
* Recently added "range-diff" had a corner-case bug to cause it
segfault, which has been corrected.
(merge e467a90c7a tg/range-diff-corner-case-fix later to maint).
* The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship. Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.
(merge 829a321569 ds/commit-graph-with-grafts later to maint).
* The mailmap file update.
(merge 255eb03edf jn/mailmap-update later to maint).
* The code in "git status" sometimes hit an assertion failure. This
was caused by a structure that was reused without cleaning the data
used for the first run, which has been corrected.
(merge 3e73cc62c0 en/status-multiple-renames-to-the-same-target-fix later to maint).
* "git fetch $repo $object" in a partial clone did not correctly
fetch the asked-for object that is referenced by an object in
promisor packfile, which has been fixed.
* A corner-case bugfix.
(merge c5cbb27cb5 sm/show-superproject-while-conflicted later to maint).
* Various fixes to "diff --color-moved-ws".
* A partial clone that is configured to lazily fetch missing objects
will on-demand issue a "git fetch" request to the originating
repository to fill not-yet-obtained objects. The request has been
optimized for requesting a tree object (and not the leaf blob
objects contained in it) by telling the originating repository that
no blobs are needed.
(merge 4c7f9567ea jt/non-blob-lazy-fetch later to maint).
* The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.
(merge 4c490f3d32 sg/split-index-racefix later to maint).
* "git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.
(merge 04005834ed np/log-graph-octopus-fix later to maint).
* "git range-diff" did not work well when the compared ranges had
changes in submodules and the "--submodule=log" was used.
* The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.
(merge f67b980771 jk/run-command-notdot later to maint).
* A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.
(merge 34204c8166 js/pack-objects-mutex-init-fix later to maint).
* Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.
(merge ffd04e92e2 js/diff-notice-has-drive-prefix later to maint).
* The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.
(merge b072a25fad jc/receive-deny-current-branch-fix later to maint).
* The logic to determine the archive type "git archive" uses did not
correctly kick in for "git archive --remote", which has been
corrected.
* "git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.
(merge 5dcfbf564c js/shallow-and-fetch-prune later to maint).
* Some codepaths failed to form a proper URL when .gitmodules record
the URL to a submodule repository as relative to the repository of
superproject, which has been corrected.
(merge e0a862fdaf sb/submodule-url-to-absolute later to maint).
* "git fetch" over protocol v2 into a shallow repository failed to
fetch full history behind a new tip of history that was diverged
before the cut-off point of the history that was previously fetched
shallowly.
* The command line completion machinery (in contrib/) has been
updated to allow the completion script to tweak the list of options
that are reported by the parse-options machinery correctly.
(merge 276b49ff34 nd/completion-negation later to maint).
* Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense. This has been corrected.
(merge 669b1d2aae md/exclude-promisor-objects-fix later to maint).
* The "container" mode of TravisCI is going away. Our .travis.yml
file is getting prepared for the transition.
(merge 32ee384be8 ss/travis-ci-force-vm-mode later to maint).
* Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.
(merge a5f52c6dab sg/test-verbose-log later to maint).
* A regression in Git 2.12 era made "git fsck" fall into an infinite
loop while processing truncated loose objects.
(merge 18ad13e5b2 jk/detect-truncated-zlib-input later to maint).
* "git ls-remote $there foo" was broken by recent update for the
protocol v2 and stopped showing refs that match 'foo' that are not
refs/{heads,tags}/foo, which has been fixed.
(merge 6a139cdd74 jk/proto-v2-ref-prefix-fix later to maint).
* Additional comment on a tricky piece of code to help developers.
(merge 0afbe3e806 jk/stream-pack-non-delta-clarification later to maint).
* A couple of tests used to leave the repository in a state that is
deliberately corrupt, which have been corrected.
(merge aa984dbe5e ab/pack-tests-cleanup later to maint).
* The submodule support has been updated to read from the blob at
HEAD:.gitmodules when the .gitmodules file is missing from the
working tree.
(merge 2b1257e463 ao/submodule-wo-gitmodules-checked-out later to maint).
* "git fetch" was a bit loose in parsing responses from the other side
when talking over the protocol v2.
* "git rev-parse --exclude=* --branches --branches" (i.e. first
saying "add only things that do not match '*' out of all branches"
and then adding all branches, without any exclusion this time")
worked as expected, but "--exclude=* --all --all" did not work the
same way, which has been fixed.
(merge 5221048092 ag/rev-parse-all-exclude-fix later to maint).
* "git send-email --transfer-encoding=..." in recent versions of Git
sometimes produced an empty "Content-Transfer-Encoding:" header,
which has been corrected.
(merge 3c88e46f1a al/send-email-auto-cte-fixup later to maint).
* The interface into "xdiff" library used to discover the offset and
size of a generated patch hunk by first formatting it into the
textual hunk header "@@ -n,m +k,l @@" and then parsing the numbers
out. A new interface has been introduced to allow callers a more
direct access to them.
(merge 5eade0746e jk/xdiff-interface later to maint).
* Pathspec matching against a tree object were buggy when negative
pathspec elements were involved, which has been fixed.
(merge b7845cebc0 nd/tree-walk-path-exclusion later to maint).
* "git merge" and "git pull" that merges into an unborn branch used
to completely ignore "--verify-signatures", which has been
corrected.
(merge 01a31f3bca jk/verify-sig-merge-into-void later to maint).
* "git rebase --autostash" did not correctly re-attach the HEAD at times.
* "rev-parse --exclude=<pattern> --branches=<pattern>" etc. did not
quite work, which has been corrected.
(merge 9ab9b5df0e ra/rev-parse-exclude-glob later to maint).
* When editing a patch in a "git add -i" session, a hunk could be
made to no-op. The "git apply" program used to reject a patch with
such a no-op hunk to catch user mistakes, but it is now updated to
explicitly allow a no-op hunk in an edited patch.
(merge 22cb3835b9 js/apply-recount-allow-noop later to maint).
* The URL to an MSDN page in a comment has been updated.
(merge 2ef2ae2917 js/mingw-msdn-url later to maint).
* "git ls-remote --sort=<thing>" can feed an object that is not yet
available into the comparison machinery and segfault, which has
been corrected to check such a request upfront and reject it.
* When "git bundle" aborts due to an empty commit ranges
(i.e. resulting in an empty pack), it left a file descriptor to an
lockfile open, which resulted in leftover lockfile on Windows where
you cannot remove a file with an open file descriptor. This has
been corrected.
(merge 2c8ee1f53c jk/close-duped-fd-before-unlock-for-bundle later to maint).
* "git format-patch --stat=<width>" can be used to specify the width
used by the diffstat (shown in the cover letter).
(merge 284aeb7e60 nd/format-patch-cover-letter-stat-width later to maint).
* The way .git/index and .git/sharedindex* files were initially
created gave these files different perm bits until they were
adjusted for shared repository settings. This was made consistent.
(merge c9d6c78870 cc/shared-index-permbits later to maint).
* "git rebase --stat" to transplant a piece of history onto a totally
unrelated history were not working before and silently showed wrong
result. With the recent reimplementation in C, it started to instead
die with an error message, as the original logic was not prepared
to cope with this case. This has now been fixed.
* The advice message to tell the user to migrate an existing graft
file to the replace system when a graft file was read was shown
even when "git replace --convert-graft-file" command, which is the
way the message suggests to use, was running, which made little
sense.
(merge 8821e90a09 ab/replace-graft-with-replace-advice later to maint).
* "git diff --raw" lost ellipses to adjust the output columns for
some time now, but the documentation still showed them.
* Code cleanup, docfix, build fix, etc.
(merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint).
(merge b9b07efdb2 tg/conflict-marker-size later to maint).
(merge fa0aeea770 sg/doc-trace-appends later to maint).
(merge d64324cb60 tb/void-check-attr later to maint).
(merge c3b9bc94b9 en/double-semicolon-fix later to maint).
(merge 79336116f5 sg/t3701-tighten-trace later to maint).
(merge 801fa63a90 jk/dev-build-format-security later to maint).
(merge 0597dd62ba sb/string-list-remove-unused later to maint).
(merge db2d36fad8 bw/protocol-v2 later to maint).
(merge 456d7cd3a9 sg/split-index-test later to maint).
(merge 7b6057c852 tq/refs-internal-comment-fix later to maint).
(merge 29e8dc50ad tg/t5551-with-curl-7.61.1 later to maint).
(merge 55f6bce2c9 fe/doc-updates later to maint).
(merge 7987d2232d jk/check-everything-connected-is-long-gone later to maint).
(merge 4ba3c9be47 dz/credential-doc-url-matching-rules later to maint).
(merge 4c399442f7 ma/commit-graph-docs later to maint).
(merge fc0503b04e ma/t1400-undebug-test later to maint).
(merge e56b53553a nd/packobjectshook-doc-fix later to maint).
(merge c56170a0c4 ma/mailing-list-address-in-git-help later to maint).
(merge 6e8fc70fce rs/sequencer-oidset-insert-avoids-dups later to maint).
(merge ad0b8f9575 mw/doc-typofixes later to maint).
(merge d9f079ad1a jc/how-to-document-api later to maint).
(merge b1492bf315 ma/t7005-bash-workaround later to maint).
(merge ac1f98a0df du/rev-parse-is-plumbing later to maint).
(merge ca8ed443a5 mm/doc-no-dashed-git later to maint).
(merge ce366a8144 du/get-tar-commit-id-is-plumbing later to maint).
(merge 61018fe9e0 du/cherry-is-plumbing later to maint).
(merge c7e5fe79b9 sb/strbuf-h-update later to maint).
(merge 8d2008196b tq/branch-create-wo-branch-get later to maint).
(merge 2e3c894f4b tq/branch-style-fix later to maint).
(merge c5d844af9c sg/doc-show-branch-typofix later to maint).
(merge 081d91618b ah/doc-updates later to maint).
(merge b84c783882 jc/cocci-preincr later to maint).
(merge 5e495f8122 uk/merge-subtree-doc-update later to maint).
(merge aaaa881822 jk/uploadpack-packobjectshook-fix later to maint).
(merge 3063477445 tb/char-may-be-unsigned later to maint).
(merge 8c64bc9420 sg/test-rebase-editor-fix later to maint).
(merge 71571cd7d6 ma/sequencer-do-reset-saner-loop-termination later to maint).
(merge 9a4cb8781e cb/notes-freeing-always-null-fix later to maint).
(merge 3006f5ee16 ma/reset-doc-rendering-fix later to maint).
(merge 4c2eb06419 sg/daemon-test-signal-fix later to maint).
(merge d27525e519 ss/msvc-strcasecmp later to maint).
----------------------------------------------------------------
Changes since v2.19.0 are as follows:
Aaron Lindsay (1):
send-email: avoid empty transfer encoding header
Alban Gruin (21):
sequencer: make three functions and an enum from sequencer.c public
rebase -i: rewrite append_todo_help() in C
editor: add a function to launch the sequence editor
rebase -i: rewrite the edit-todo functionality in C
sequencer: add a new function to silence a command, except if it fails
rebase -i: rewrite setup_reflog_action() in C
rebase -i: rewrite checkout_onto() in C
sequencer: refactor append_todo_help() to write its message to a buffer
sequencer: change the way skip_unnecessary_picks() returns its result
t3404: todo list with commented-out commands only aborts
rebase -i: rewrite complete_action() in C
rebase -i: remove unused modes and functions
rebase -i: implement the logic to initialize $revisions in C
rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
rebase -i: rewrite write_basic_state() in C
rebase -i: rewrite init_basic_state() in C
rebase -i: implement the main part of interactive rebase as a builtin
rebase--interactive2: rewrite the submodes of interactive rebase in C
rebase -i: remove git-rebase--interactive.sh
rebase -i: move rebase--helper modes to rebase--interactive
p3400: replace calls to `git checkout -b' by `git checkout -B'
Alexander Pyhalov (1):
t7005-editor: quote filename to fix whitespace-issue
Andreas Gruenbacher (1):
rev-parse: clear --exclude list after 'git rev-parse --all'
Andreas Heiduk (6):
doc: clarify boundaries of 'git worktree list --porcelain'
doc: fix ASCII art tab spacing
doc: fix inappropriate monospace formatting
doc: fix descripion for 'git tag --format'
doc: fix indentation of listing blocks in gitweb.conf.txt
doc: fix formatting in git-update-ref
Anton Serbulov (1):
mingw: fix getcwd when the parent directory cannot be queried
Antonio Ospite (10):
submodule: add a print_config_from_gitmodules() helper
submodule: factor out a config_set_in_gitmodules_file_gently function
t7411: merge tests 5 and 6
t7411: be nicer to future tests and really clean things up
submodule--helper: add a new 'config' subcommand
submodule: use the 'submodule--helper config' command
t7506: clean up .gitmodules properly before setting up new scenario
submodule: add a helper to check if it is safe to write to .gitmodules
submodule: support reading .gitmodules when it's not in the working tree
t/helper: add test-submodule-nested-repo-config
Ben Peart (19):
checkout: optimize "git checkout -b <new_branch>"
git-mv: allow submodules and fsmonitor to work together
t/README: correct spelling of "uncommon"
preload-index: use git_env_bool() not getenv() for customization
fsmonitor: update GIT_TEST_FSMONITOR support
read-cache: update TEST_GIT_INDEX_VERSION support
preload-index: update GIT_FORCE_PRELOAD_TEST support
read-cache: clean up casting and byte decoding
eoie: add End of Index Entry (EOIE) extension
config: add new index.threads config setting
read-cache: load cache extensions on a worker thread
ieot: add Index Entry Offset Table (IEOT) extension
read-cache: load cache entries on worker threads
reset: don't compute unstaged changes after reset when --quiet
reset: add new reset.quiet config setting
reset: warn when refresh_index() takes more than 2 seconds
speed up refresh_index() by utilizing preload_index()
add: speed up cmd_add() by utilizing read_cache_preload()
refresh_index: remove unnecessary calls to preload_index()
Brandon Williams (1):
config: document value 2 for protocol.version
Brendan Forster (1):
http: add support for disabling SSL revocation checks in cURL
Carlo Marcelo Arenas Belón (8):
unpack-trees: avoid dead store for struct progress
multi-pack-index: avoid dead store for struct progress
read-cache: use of memory after it is freed
commit-slabs: move MAYBE_UNUSED out
khash: silence -Wunused-function for delta-islands
compat: make sure git_mmap is not expected to write
sequencer: cleanup for gcc warning in non developer mode
builtin/notes: remove unnecessary free
Christian Couder (3):
pack-objects: refactor code into compute_layer_order()
pack-objects: move tree_depth into 'struct packing_data'
pack-objects: move 'layer' into 'struct packing_data'
Christian Hesse (2):
subtree: add build targets 'man' and 'html'
subtree: make install targets depend on build targets
Daniels Umanovskis (3):
doc: move git-rev-parse from porcelain to plumbing
doc: move git-get-tar-commit-id to plumbing
doc: move git-cherry to plumbing
David Zych (1):
doc: clarify gitcredentials path component matching
Denton Liu (3):
mergetool: accept -g/--[no-]gui as arguments
completion: support `git mergetool --[no-]gui`
doc: document diff/merge.guitool config keys
Derrick Stolee (93):
multi-pack-index: add design document
multi-pack-index: add format details
multi-pack-index: add builtin
multi-pack-index: add 'write' verb
midx: write header information to lockfile
multi-pack-index: load into memory
t5319: expand test data
packfile: generalize pack directory list
multi-pack-index: read packfile list
multi-pack-index: write pack names in chunk
midx: read pack names into array
midx: sort and deduplicate objects from packfiles
midx: write object ids in a chunk
midx: write object id fanout chunk
midx: write object offsets
config: create core.multiPackIndex setting
midx: read objects from multi-pack-index
midx: use midx in abbreviation calculations
midx: use existing midx when writing new one
midx: use midx in approximate_object_count
midx: prevent duplicate packfile loads
packfile: skip loading index if in multi-pack-index
midx: clear midx on repack
commit-reach: move walk methods from commit.c
commit.h: remove method declarations
commit-reach: move ref_newer from remote.c
commit-reach: move commit_contains from ref-filter
upload-pack: make reachable() more generic
upload-pack: refactor ok_to_give_up()
upload-pack: generalize commit date cutoff
commit-reach: move can_all_from_reach_with_flags
test-reach: create new test tool for ref_newer
test-reach: test in_merge_bases
test-reach: test is_descendant_of
test-reach: test get_merge_bases_many
test-reach: test reduce_heads
test-reach: test can_all_from_reach_with_flags
test-reach: test commit_contains
commit-reach: replace ref_newer logic
commit-reach: make can_all_from_reach... linear
commit-reach: use can_all_from_reach
multi-pack-index: provide more helpful usage info
multi-pack-index: store local property
midx: mark bad packed objects
midx: stop reporting garbage
midx: fix bug that skips midx with alternates
packfile: add all_packs list
treewide: use get_all_packs
midx: test a few commands that use get_all_packs
pack-objects: consider packs in multi-pack-index
commit-graph: update design document
test-repository: properly init repo
commit-graph: not compatible with replace objects
commit-graph: not compatible with grafts
commit-graph: not compatible with uninitialized repo
commit-graph: close_commit_graph before shallow walk
commit-graph: define GIT_TEST_COMMIT_GRAPH
t3206-range-diff.sh: cover single-patch case
t5318: use test_oid for HASH_LEN
multi-pack-index: add 'verify' verb
multi-pack-index: verify bad header
multi-pack-index: verify corrupt chunk lookup table
multi-pack-index: verify packname order
multi-pack-index: verify missing pack
multi-pack-index: verify oid fanout order
multi-pack-index: verify oid lookup order
multi-pack-index: fix 32-bit vs 64-bit size check
multi-pack-index: verify object offsets
multi-pack-index: report progress during 'verify'
fsck: verify multi-pack-index
commit-reach: properly peel tags
commit-reach: fix memory and flag leaks
commit-reach: cleanups in can_all_from_reach...
commit-graph: clean up leaked memory during write
commit-graph: reduce initial oid allocation
midx: fix broken free() in close_midx()
contrib: add coverage-diff script
ci: add optional test variables
commit-reach: fix first-parent heuristic
midx: close multi-pack-index on repack
multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX
packfile: close multi-pack-index in close_all_packs
prio-queue: add 'peek' operation
test-reach: add run_three_modes method
test-reach: add rev-list tests
revision.c: begin refactoring --topo-order logic
commit/revisions: bookkeeping before refactoring
revision.c: generation-based topo-order algorithm
t6012: make rev-list tests more interesting
commit-reach: implement get_reachable_subset
test-reach: test get_reachable_subset
remote: make add_missing_tags() linear
pack-objects: ignore ambiguous object warnings
Elijah Newren (14):
Remove superfluous trailing semicolons
t4200: demonstrate rerere segfault on specially crafted merge
rerere: avoid buffer overrun
update-ref: fix type of update_flags variable to match its usage
update-ref: allow --no-deref with --stdin
sequencer: fix --allow-empty-message behavior, make it smarter
merge-recursive: set paths correctly when three-way merging content
merge-recursive: avoid wrapper function when unnecessary and wasteful
merge-recursive: remove final remaining caller of merge_file_one()
merge-recursive: rename merge_file_1() and merge_content()
commit: fix erroneous BUG, 'multiple renames on the same target? how?'
merge-recursive: improve auto-merging messages with path collisions
merge-recursive: avoid showing conflicts with merge branch before HEAD
fsck: move fsck_head_link() to get_default_heads() to avoid some globals
Eric Sunshine (26):
format-patch: allow additional generated content in make_cover_letter()
format-patch: add --interdiff option to embed diff in cover letter
format-patch: teach --interdiff to respect -v/--reroll-count
interdiff: teach show_interdiff() to indent interdiff
log-tree: show_log: make commentary block delimiting reusable
format-patch: allow --interdiff to apply to a lone-patch
range-diff: respect diff_option.file rather than assuming 'stdout'
range-diff: publish default creation factor
range-diff: relieve callers of low-level configuration burden
format-patch: add --range-diff option to embed diff in cover letter
format-patch: extend --range-diff to accept revision range
format-patch: teach --range-diff to respect -v/--reroll-count
format-patch: add --creation-factor tweak for --range-diff
format-patch: allow --range-diff to apply to a lone-patch
worktree: don't die() in library function find_worktree()
worktree: move delete_git_dir() earlier in file for upcoming new callers
worktree: generalize delete_git_dir() to reduce code duplication
worktree: prepare for more checks of whether path can become worktree
worktree: disallow adding same path multiple times
worktree: teach 'add' to respect --force for registered but missing path
worktree: teach 'move' to override lock when --force given twice
worktree: teach 'remove' to override lock when --force given twice
worktree: delete .git/worktrees if empty after 'remove'
doc-diff: fix non-portable 'man' invocation
doc-diff: add --clean mode to remove temporary working gunk
doc/Makefile: drop doc-diff worktree and temporary files on "make clean"
Frederick Eaton (3):
git-archimport.1: specify what kind of Arch we're talking about
git-column.1: clarify initial description, provide examples
git-describe.1: clarify that "human readable" is also git-readable
Greg Hurrell (1):
doc: update diff-format.txt for removed ellipses in --raw
James Knight (1):
build: link with curl-defined linker flags
Jann Horn (2):
patch-delta: fix oob read
patch-delta: consistently report corruption
Jean-Noël Avila (1):
i18n: fix small typos
Jeff Hostetler (2):
t0051: test GIT_TRACE to a windows named pipe
mingw: fix mingw_open_append to work with named pipes
Jeff King (98):
branch: make "-l" a synonym for "--list"
Add delta-islands.{c,h}
pack-objects: add delta-islands support
repack: add delta-islands support
t5320: tests for delta islands
t/perf: factor boilerplate out of test_perf
t/perf: factor out percent calculations
t/perf: add infrastructure for measuring sizes
t/perf: add perf tests for fetches from a bitmapped server
pack-bitmap: save "have" bitmap from walk
pack-objects: reuse on-disk deltas for thin "have" objects
SubmittingPatches: mention doc-diff
rev-list: make empty --stdin not an error
trailer: use size_t for string offsets
trailer: use size_t for iterating trailer list
trailer: pass process_trailer_opts to trailer_info_get()
interpret-trailers: tighten check for "---" patch boundary
interpret-trailers: allow suppressing "---" divider
pretty, ref-filter: format %(trailers) with no_divider option
sequencer: ignore "---" divider when parsing trailers
append_signoff: use size_t for string offsets
coccinelle: use <...> for function exclusion
introduce hasheq() and oideq()
convert "oidcmp() == 0" to oideq()
convert "hashcmp() == 0" to hasheq()
convert "oidcmp() != 0" to "!oideq()"
convert "hashcmp() != 0" to "!hasheq()"
convert hashmap comparison functions to oideq()
read-cache: use oideq() in ce_compare functions
show_dirstat: simplify same-content check
doc-diff: always use oids inside worktree
test-delta: read input into a heap buffer
t5303: test some corrupt deltas
patch-delta: handle truncated copy parameters
t5303: use printf to generate delta bases
doc/git-branch: remove obsolete "-l" references
bitmap_has_sha1_in_uninteresting(): drop BUG check
t5310: test delta reuse with bitmaps
traverse_bitmap_commit_list(): don't free result
pack-bitmap: drop "loaded" flag
reopen_tempfile(): truncate opened file
doc-diff: force worktree add
config.mak.dev: add -Wformat-security
pack-objects: handle island check for "external" delta base
receive-pack: update comment with check_everything_connected
submodule--helper: use "--" to signal end of clone options
submodule-config: ban submodule urls that start with dash
submodule-config: ban submodule paths that start with a dash
fsck: detect submodule urls starting with dash
fsck: detect submodule paths starting with dash
more oideq/hasheq conversions
transport: drop refnames from for_each_alternate_ref
test-tool: show tool list on error
config.mak.dev: enable -Wunused-function
run-command: mark path lookup errors with ENOENT
t5410: use longer path for sample script
upload-pack: fix broken if/else chain in config callback
t1450: check large blob in trailing-garbage test
check_stream_sha1(): handle input underflow
cat-file: handle streaming failures consistently
ls-remote: do not send ref prefixes for patterns
ls-remote: pass heads/tags prefixes to transport
read_istream_pack_non_delta(): document input handling
xdiff: provide a separate emit callback for hunks
xdiff-interface: provide a separate consume callback for hunks
rev-list: handle flags for --indexed-objects
approxidate: handle pending number for "specials"
pathspec: handle non-terminated strings with :(attr)
diff: avoid generating unused hunk header lines
diff: discard hunk headers for patch-ids earlier
diff: use hunk callback for word-diff
combine-diff: use an xdiff hunk callback
diff: convert --check to use a hunk callback
range-diff: use a hunk callback
xdiff-interface: drop parse_hunk_header()
apply: mark include/exclude options as NONEG
am: handle --no-patch-format option
ls-files: mark exclude options as NONEG
pack-objects: mark index-version option as NONEG
cat-file: mark batch options with NONEG
status: mark --find-renames option with NONEG
format-patch: mark "--no-numbered" option with NONEG
show-branch: mark --reflog option as NONEG
tag: mark "--message" option with NONEG
cat-file: report an error on multiple --batch options
apply: return -1 from option callback instead of calling exit(1)
parse-options: drop OPT_DATE()
assert NOARG/NONEG behavior of parse-options callbacks
midx: double-check large object write loop
merge: extract verify_merge_signature() helper
merge: handle --verify-signatures for unborn branch
pull: handle --verify-signatures for unborn branch
approxidate: fix NULL dereference in date_time()
bundle: dup() output descriptor closer to point-of-use
pack-objects: fix tree_depth and layer invariants
pack-objects: zero-initialize tree_depth/layer arrays
pack-objects: fix off-by-one in delta-island tree-depth computation
t5562: fix perl path
Johannes Schindelin (64):
rebase -i --autosquash: demonstrate a problem skipping the last squash
rebase -i: be careful to wrap up fixup/squash chains
compat/poll: prepare for targeting Windows Vista
mingw: set _WIN32_WINNT explicitly for Git for Windows
mingw: bump the minimum Windows version to Vista
builtin rebase: prepare for builtin rebase -i
rebase -i: clarify what happens on a failed `exec`
rebase -i: introduce the 'break' command
getpwuid(mingw): initialize the structure only once
getpwuid(mingw): provide a better default for the user name
mingw: use domain information for default email
http: add support for selecting SSL backends at runtime
pack-objects: fix typo 'detla' -> 'delta'
pack-objects (mingw): demonstrate a segmentation fault with large deltas
pack-objects (mingw): initialize `packing_data` mutex in the correct spot
rebase (autostash): avoid duplicate call to state_dir_path()
rebase (autostash): store the full OID in <state-dir>/autostash
rebase (autostash): use an explicit OID to apply the stash
mingw: factor out code to set stat() data
rebase --autostash: demonstrate a problem with dirty submodules
rebase --autostash: fix issue with dirty submodules
mingw: load system libraries the recommended way
mingw: ensure `getcwd()` reports the correct case
repack: point out a bug handling stale shallow info
shallow: offer to prune only non-existing entries
repack -ad: prune the list of shallow commits
http: when using Secure Channel, ignore sslCAInfo by default
t7800: fix quoting
mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)
config: rename `dummy` parameter to `cb` in git_default_config()
config: allow for platform-specific core.* config settings
config: move Windows-specific config settings into compat/mingw.c
mingw: unset PERL5LIB by default
mingw: fix isatty() after dup2()
t3404: decouple some test cases from outcomes of previous test cases
t3418: decouple test cases from a previous `rebase -p` test case
tests: optionally skip `git rebase -p` tests
Windows: force-recompile git.res for differing architectures
built-in rebase: demonstrate regression with --autostash
built-in rebase --autostash: leave the current branch alone if possible
Update .mailmap
rebase -r: demonstrate bug with conflicting merges
rebase -r: do not write MERGE_HEAD unless needed
rebase -i: include MERGE_HEAD into files to clean up
built-in rebase --skip/--abort: clean up stale .git/<name> files
status: rebase and merge can be in progress at the same time
apply --recount: allow "no-op hunks"
rebase: consolidate clean-up code before leaving reset_head()
rebase: prepare reset_head() for more flags
built-in rebase: reinstate `checkout -q` behavior where appropriate
tests: fix GIT_TEST_INSTALLED's PATH to include t/helper/
tests: respect GIT_TEST_INSTALLED when initializing repositories
t/lib-gettext: test installed git-sh-i18n if GIT_TEST_INSTALLED is set
mingw: use `CreateHardLink()` directly
rebase: really just passthru the `git am` options
rebase: validate -C<n> and --whitespace=<mode> parameters early
config: report a bug if git_dir exists without commondir
tests: do not require Git to be built when testing an installed Git
tests: explicitly use `git.exe` on Windows
mingw: replace an obsolete link with the superseding one
legacy-rebase: backport -C<n> and --whitespace=<option> checks
rebase: warn about the correct tree's OID
rebase: fix GIT_REFLOG_ACTION regression
rebase --stat: fix when rebasing to an unrelated history
Johannes Sixt (3):
diff: don't attempt to strip prefix from absolute Windows paths
rebase -i: recognize short commands without arguments
t3404-rebase-interactive: test abbreviated commands
Jonathan Nieder (9):
gc: improve handling of errors reading gc.log
gc: exit with status 128 on failure
gc: do not return error for prior errors in daemonized mode
commit-reach: correct accidental #include of C file
mailmap: consistently normalize brian m. carlson's name
git doc: direct bug reporters to mailing list archive
eoie: default to not writing EOIE section
ieot: default to not writing IEOT section
index: make index.threads=true enable ieot and eoie
Jonathan Tan (15):
fetch-object: unify fetch_object[s] functions
fetch-object: set exact_oid when fetching
connected: document connectivity in partial clones
fetch: in partial clone, check presence of targets
fetch-pack: avoid object flags if no_dependents
fetch-pack: exclude blobs when lazy-fetching trees
transport: allow skipping of ref listing
transport: do not list refs if possible
transport: list refs before fetch if necessary
fetch: do not list refs if fetching only hashes
cache-tree: skip some blob checks in partial clone
upload-pack: make have_obj not global
upload-pack: make want_obj not global
upload-pack: clear flags before each v2 request
fetch-pack: be more precise in parsing v2 response
Josh Steadmon (4):
fuzz: add basic fuzz testing target.
fuzz: add fuzz testing for packfile indices.
archive: initialize archivers earlier
Makefile: use FUZZ_CXXFLAGS for linking fuzzers
Joshua Watt (1):
send-email: explicitly disable authentication
Junio C Hamano (36):
Revert "doc/Makefile: drop doc-diff worktree and temporary files on "make clean""
Initial batch post 2.19
Second batch post 2.19
Git 2.14.5
Git 2.15.3
Git 2.16.5
Git 2.17.2
Git 2.18.1
Git 2.19.1
t0000: do not get self-test disrupted by environment warnings
CodingGuidelines: document the API in *.h files
Declare that the next one will be named 2.20
Third batch for 2.20
rebase: fix typoes in error messages
Fourth batch for 2.20
Revert "subtree: make install targets depend on build targets"
Fifth batch for 2.20
receive: denyCurrentBranch=updateinstead should not blindly update
cocci: simplify "if (++u > 1)" to "if (u++)"
fsck: s/++i > 1/i++/
http: give curl version warnings consistently
Sixth batch for 2.20
Seventh batch for 2.20
fetch: replace string-list used as a look-up table with a hashmap
rebase: apply cocci patch
Eighth batch for 2.20
Ninth batch for 2.20
Makefile: ease dynamic-gettext-poison transition
Tenth batch for 2.20
Git 2.20-rc0
RelNotes: name the release properly
Prepare for 2.20-rc1
Git 2.19.2
Git 2.20-rc1
format-patch: do not let its diff-options affect --range-diff
Git 2.20-rc2
Karsten Blees (2):
mingw: replace MSVCRT's fstat() with a Win32-based implementation
mingw: implement nanosecond-precision file times
Loo Rong Jie (1):
win32: replace pthread_cond_*() with much simpler code
Lucas De Marchi (1):
range-diff: allow to diff files regardless of submodule config
Luke Diamand (3):
git-p4: do not fail in verbose mode for missing 'fileSize' key
git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved
git-p4: fully support unshelving changelists
Martin Ågren (11):
Doc: use `--type=bool` instead of `--bool`
git-config.txt: fix 'see: above' note
git-commit-graph.txt: fix bullet lists
git-commit-graph.txt: typeset more in monospace
git-commit-graph.txt: refer to "*commit*-graph file"
Doc: refer to the "commit-graph file" with dash
t1400: drop debug `echo` to actually execute `test`
builtin/commit-graph.c: UNLEAK variables
sequencer: break out of loop explicitly
git-reset.txt: render tables correctly under Asciidoctor
git-reset.txt: render literal examples as monospace
Matthew DeVore (19):
list-objects: store common func args in struct
list-objects: refactor to process_tree_contents
list-objects: always parse trees gently
t/README: reformat Do, Don't, Keep in mind lists
Documentation: add shell guidelines
tests: standardize pipe placement
t/*: fix ordering of expected/observed arguments
tests: don't swallow Git errors upstream of pipes
t9109: don't swallow Git errors upstream of pipes
tests: order arguments to git-rev-list properly
rev-list: handle missing tree objects properly
revision: mark non-user-given objects instead
list-objects-filter: use BUG rather than die
list-objects-filter-options: do not over-strbuf_init
list-objects-filter: implement filter tree:0
filter-trees: code clean-up of tests
list-objects: support for skipping tree traversal
Documentation/git-log.txt: do not show --exclude-promisor-objects
exclude-promisor-objects: declare when option is allowed
Max Kirillov (1):
http-backend test: make empty CONTENT_LENGTH test more realistic
Michael Witten (3):
docs: typo: s/go/to/
docs: graph: remove unnecessary `graph_update()' call
docs: typo: s/isimilar/similar/
Michał Górny (6):
gpg-interface.c: detect and reject multiple signatures on commits
gpg-interface.c: use flags to determine key/signer info presence
gpg-interface.c: support getting key fingerprint via %GF format
gpg-interface.c: obtain primary key fingerprint as well
t/t7510-signed-commit.sh: Add %GP to custom format checks
t/t7510-signed-commit.sh: add signing subkey to Eris Discordia key
Mihir Mehta (1):
doc: fix a typo and clarify a sentence
Nguyễn Thái Ngọc Duy (170):
clone: report duplicate entries on case-insensitive filesystems
trace.h: support nested performance tracing
unpack-trees: add performance tracing
unpack-trees: optimize walking same trees with cache-tree
unpack-trees: reduce malloc in cache-tree walk
unpack-trees: reuse (still valid) cache-tree from src_index
unpack-trees: add missing cache invalidation
cache-tree: verify valid cache-tree in the test suite
Document update for nd/unpack-trees-with-cache-tree
bisect.c: make show_list() build again
t/helper: keep test-tool command list sorted
t/helper: merge test-dump-untracked-cache into test-tool
t/helper: merge test-pkt-line into test-tool
t/helper: merge test-parse-options into test-tool
t/helper: merge test-dump-fsmonitor into test-tool
Makefile: add a hint about TEST_BUILTINS_OBJS
config.txt: follow camelCase naming
config.txt: move fetch part out to a separate file
config.txt: move format part out to a separate file
config.txt: move gitcvs part out to a separate file
config.txt: move gui part out to a separate file
config.txt: move pull part out to a separate file
config.txt: move push part out to a separate file
config.txt: move receive part out to a separate file
config.txt: move sendemail part out to a separate file
config.txt: move sequence.editor out of "core" part
config.txt: move submodule part out to a separate file
archive.c: remove implicit dependency the_repository
status: show progress bar if refreshing the index takes too long
add: do not accept pathspec magic 'attr'
completion: support "git fetch --multiple"
read-cache.c: remove 'const' from index_has_changes()
diff.c: reduce implicit dependency on the_index
combine-diff.c: remove implicit dependency on the_index
blame.c: rename "repo" argument to "r"
diff.c: remove the_index dependency in textconv() functions
grep.c: remove implicit dependency on the_index
diff.c: remove implicit dependency on the_index
read-cache.c: remove implicit dependency on the_index
diff-lib.c: remove implicit dependency on the_index
ll-merge.c: remove implicit dependency on the_index
merge-blobs.c: remove implicit dependency on the_index
merge.c: remove implicit dependency on the_index
patch-ids.c: remove implicit dependency on the_index
sha1-file.c: remove implicit dependency on the_index
rerere.c: remove implicit dependency on the_index
userdiff.c: remove implicit dependency on the_index
line-range.c: remove implicit dependency on the_index
submodule.c: remove implicit dependency on the_index
tree-diff.c: remove implicit dependency on the_index
ws.c: remove implicit dependency on the_index
revision.c: remove implicit dependency on the_index
revision.c: reduce implicit dependency the_repository
read-cache.c: optimize reading index format v4
config.txt: correct the note about uploadpack.packObjectsHook
help -a: improve and make --verbose default
refs.c: indent with tabs, not spaces
Add a place for (not) sharing stuff between worktrees
submodule.c: remove some of the_repository references
completion: fix __gitcomp_builtin no longer consider extra options
t1300: extract and use test_cmp_config()
worktree: add per-worktree config files
refs: new ref types to make per-worktree refs visible to all worktrees
revision.c: correct a parameter name
revision.c: better error reporting on ref from different worktrees
fsck: check HEAD and reflog from other worktrees
reflog expire: cover reflog from all worktrees
Update makefile in preparation for Documentation/config/*.txt
config.txt: move advice.* to a separate file
config.txt: move core.* to a separate file
config.txt: move add.* to a separate file
config.txt: move alias.* to a separate file
config.txt: move am.* to a separate file
config.txt: move apply.* to a separate file
config.txt: move blame.* to a separate file
config.txt: move branch.* to a separate file
config.txt: move browser.* to a separate file
config.txt: move checkout.* to a separate file
config.txt: move clean.* to a separate file
config.txt: move color.* to a separate file
config.txt: move column.* to a separate file
config.txt: move commit.* to a separate file
config.txt: move credential.* to a separate file
config.txt: move completion.* to a separate file
config.txt: move diff-config.txt to config/
config.txt: move difftool.* to a separate file
config.txt: move fastimport.* to a separate file
config.txt: move fetch-config.txt to config/
config.txt: move filter.* to a separate file
config.txt: move format-config.txt to config/
config.txt: move fmt-merge-msg-config.txt to config/
config.txt: move fsck.* to a separate file
config.txt: move gc.* to a separate file
config.txt: move gitcvs-config.txt to config/
config.txt: move gitweb.* to a separate file
config.txt: move grep.* to a separate file
config.txt: move gpg.* to a separate file
config.txt: move gui-config.txt to config/
config.txt: move guitool.* to a separate file
config.txt: move help.* to a separate file
config.txt: move ssh.* to a separate file
config.txt: move http.* to a separate file
config.txt: move i18n.* to a separate file
git-imap-send.txt: move imap.* to a separate file
config.txt: move index.* to a separate file
config.txt: move init.* to a separate file
config.txt: move instaweb.* to a separate file
config.txt: move interactive.* to a separate file
config.txt: move log.* to a separate file
config.txt: move mailinfo.* to a separate file
config.txt: move mailmap.* to a separate file
config.txt: move man.* to a separate file
config.txt: move merge-config.txt to config/
config.txt: move mergetool.* to a separate file
config.txt: move notes.* to a separate file
config.txt: move pack.* to a separate file
config.txt: move pager.* to a separate file
config.txt: move pretty.* to a separate file
config.txt: move protocol.* to a separate file
config.txt: move pull-config.txt to config/
config.txt: move push-config.txt to config/
config.txt: move rebase-config.txt to config/
config.txt: move receive-config.txt to config/
config.txt: move remote.* to a separate file
config.txt: move remotes.* to a separate file
config.txt: move repack.* to a separate file
config.txt: move rerere.* to a separate file
config.txt: move reset.* to a separate file
config.txt: move sendemail-config.txt to config/
config.txt: move sequencer.* to a separate file
config.txt: move showBranch.* to a separate file
config.txt: move splitIndex.* to a separate file
config.txt: move status.* to a separate file
config.txt: move stash.* to a separate file
config.txt: move submodule.* to a separate file
config.txt: move tag.* to a separate file
config.txt: move transfer.* to a separate file
config.txt: move uploadarchive.* to a separate file
config.txt: move uploadpack.* to a separate file
config.txt: move url.* to a separate file
config.txt: move user.* to a separate file
config.txt: move versionsort.* to a separate file
config.txt: move web.* to a separate file
config.txt: move worktree.* to a separate file
config.txt: remove config/dummy.txt
thread-utils: macros to unconditionally compile pthreads API
wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
git-worktree.txt: correct linkgit command name
sequencer.c: remove a stray semicolon
tree-walk.c: fix overoptimistic inclusion in :(exclude) matching
run-command.h: include thread-utils.h instead of pthread.h
send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c
index-pack: remove #ifdef NO_PTHREADS
name-hash.c: remove #ifdef NO_PTHREADS
attr.c: remove #ifdef NO_PTHREADS
grep: remove #ifdef NO_PTHREADS
grep: clean up num_threads handling
preload-index.c: remove #ifdef NO_PTHREADS
pack-objects: remove #ifdef NO_PTHREADS
read-cache.c: remove #ifdef NO_PTHREADS
read-cache.c: reduce branching based on HAVE_THREADS
read-cache.c: initialize copy_len to shut up gcc 8
Clean up pthread_create() error handling
completion: use __gitcomp_builtin for format-patch
build: fix broken command-list.h generation with core.autocrlf
format-patch: respect --stat in cover letter's diffstat
doc: move extensions.worktreeConfig to the right place
clone: fix colliding file detection on APFS
files-backend.c: fix build error on Solaris
transport-helper.c: do not translate a string twice
Nickolai Belakovski (2):
worktree: update documentation for lock_reason and lock_reason_valid
worktree: rename is_worktree_locked to worktree_lock_reason
Noam Postavsky (1):
log: fix coloring of certain octopus merge shapes
Olga Telezhnaya (3):
ref-filter: free memory from used_atom
ls-remote: release memory instead of UNLEAK
ref-filter: free item->value and item->value->s
Phillip Wood (11):
diff: fix --color-moved-ws=allow-indentation-change
diff --color-moved-ws: fix double free crash
diff --color-moved-ws: fix out of bounds string access
diff --color-moved-ws: fix a memory leak
diff --color-moved-ws: fix another memory leak
diff --color-moved: fix a memory leak
am: don't die in read_author_script()
am: improve author-script error reporting
am: rename read_author_script()
add read_author_script() to libgit
sequencer: use read_author_script()
Pratik Karki (46):
rebase: start implementing it as a builtin
rebase: refactor common shell functions into their own file
builtin/rebase: support running "git rebase <upstream>"
builtin rebase: support --onto
builtin rebase: support `git rebase --onto A...B`
builtin rebase: handle the pre-rebase hook and --no-verify
builtin rebase: support --quiet
builtin rebase: support the `verbose` and `diffstat` options
builtin rebase: require a clean worktree
builtin rebase: try to fast forward when possible
builtin rebase: support --force-rebase
builtin rebase: start a new rebase only if none is in progress
builtin rebase: only store fully-qualified refs in `options.head_name`
builtin rebase: support `git rebase <upstream> <switch-to>`
builtin rebase: support --continue
builtin rebase: support --skip
builtin rebase: support --abort
builtin rebase: support --quit
builtin rebase: support --edit-todo and --show-current-patch
builtin rebase: actions require a rebase in progress
builtin rebase: stop if `git am` is in progress
builtin rebase: allow selecting the rebase "backend"
builtin rebase: support --signoff
builtin rebase: support --rerere-autoupdate
builtin rebase: support --committer-date-is-author-date
builtin rebase: support `ignore-whitespace` option
builtin rebase: support `ignore-date` option
builtin rebase: support `keep-empty` option
builtin rebase: support `--autosquash`
builtin rebase: support `--gpg-sign` option
builtin rebase: support `-C` and `--whitespace=<type>`
builtin rebase: support `--autostash` option
builtin rebase: support `--exec`
builtin rebase: support `--allow-empty-message` option
builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
merge-base --fork-point: extract libified function
builtin rebase: support `fork-point` option
builtin rebase: add support for custom merge strategies
builtin rebase: support --root
builtin rebase: optionally auto-detect the upstream
builtin rebase: optionally pass custom reflogs to reset_head()
builtin rebase: fast-forward to onto if it is a proper descendant
builtin rebase: show progress when connected to a terminal
builtin rebase: use no-op editor when interactive is "implied"
builtin rebase: error out on incompatible option/mode combinations
rebase: default to using the builtin rebase
Rafael Ascensão (2):
refs: show --exclude failure with --branches/tags/remotes=glob
refs: fix some exclude patterns being ignored
Ralf Thielow (2):
git-rebase.sh: fix typos in error messages
builtin/rebase.c: remove superfluous space in messages
Ramsay Jones (12):
Makefile: add a hdr-check target
json-writer.h: add missing include (hdr-check)
ewah/ewok_rlw.h: add missing include (hdr-check)
refs/ref-cache.h: add missing declarations (hdr-check)
refs/packed-backend.h: add missing declaration (hdr-check)
refs/refs-internal.h: add missing declarations (hdr-check)
midx.h: add missing forward declarations (hdr-check)
delta-islands.h: add missing forward declarations (hdr-check)
headers: normalize the spelling of some header guards
fetch-object.h: add missing declaration (hdr-check)
ewok_rlw.h: add missing 'inline' to function definition
commit-reach.h: add missing declarations (hdr-check)
Rasmus Villemoes (6):
help: redirect to aliased commands for "git cmd --help"
git.c: handle_alias: prepend alias info when first argument is -h
git-help.txt: document "git help cmd" vs "git cmd --help" for aliases
Documentation/git-send-email.txt: style fixes
send-email: only consider lines containing @ or <> for automatic Cc'ing
send-email: also pick up cc addresses from -by trailers
René Scharfe (12):
mailinfo: support format=flowed
fsck: add a performance test for skipList
fsck: use strbuf_getline() to read skiplist file
fsck: use oidset instead of oid_array for skipList
sequencer: use return value of oidset_insert()
grep: add -r/--[no-]recursive
fetch-pack: factor out is_unmatched_ref()
fetch-pack: load tip_oids eagerly iff needed
khash: factor out kh_release_*
oidset: use khash
oidset: uninline oidset_init()
commit-reach: fix cast in compare_commits_by_gen()
Roger Strain (1):
subtree: performance improvement for finding unexpected parent commits
SZEDER Gábor (20):
t1404: increase core.packedRefsTimeout to avoid occasional test failure
Documentation/git.txt: clarify that GIT_TRACE=/path appends
t3701-add-interactive: tighten the check of trace output
t1700-split-index: drop unnecessary 'grep'
t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
t1700-split-index: document why FSMONITOR is disabled in this test script
split-index: add tests to demonstrate the racy split index problem
t1700-split-index: date back files to avoid racy situations
split-index: count the number of deleted entries
split-index: don't compare cached data of entries already marked for split index
split-index: smudge and add racily clean cache entries to split index
split-index: BUG() when cache entry refers to non-existing shared entry
object_id.cocci: match only expressions of type 'struct object_id'
test-lib: introduce the '-V' short option for '--verbose-log'
travis-ci: install packages in 'ci/install-dependencies.sh'
coccicheck: introduce 'pending' semantic patches
ref-filter: don't look for objects when outside of a repository
tests: send "bug in the test script" errors to the script's stderr
test-lib-functions: make 'test_cmp_rev' more informative on failure
t/lib-git-daemon: fix signal checking
Sam McKelvie (1):
rev-parse: --show-superproject-working-tree should work during a merge
Saulius Gurklys (1):
doc: fix small typo in git show-branch
Sebastian Staudt (1):
travis-ci: no longer use containers
Shulhan (1):
builtin/remote: quote remote name on error to display empty name
Stefan Beller (25):
git-submodule.sh: align error reporting for update mode to use path
git-submodule.sh: rename unused variables
builtin/submodule--helper: factor out submodule updating
builtin/submodule--helper: store update_clone information in a struct
builtin/submodule--helper: factor out method to update a single submodule
submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree
submodule--helper: introduce new update-module-mode helper
test_decode_color: understand FAINT and ITALIC
t3206: add color test for range-diff --dual-color
diff.c: simplify caller of emit_line_0
diff.c: reorder arguments for emit_line_ws_markup
diff.c: add set_sign to emit_line_0
diff: use emit_line_0 once per line
diff.c: omit check for line prefix in emit_line_0
diff.c: rewrite emit_line_0 more understandably
diff.c: add --output-indicator-{new, old, context}
range-diff: make use of different output indicators
range-diff: indent special lines as context
refs.c: migrate internal ref iteration to pass thru repository argument
refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
string-list: remove unused function print_string_list
strbuf.h: format according to coding guidelines
diff.c: pass sign_index to emit_line_ws_markup
submodule helper: convert relative URL to absolute URL if needed
builtin/submodule--helper: remove debugging leftover tracing
Stephen P. Smith (10):
wt-status.c: move has_unmerged earlier in the file
wt-status: rename commitable to committable
t7501: add test of "commit --dry-run --short"
wt-status.c: set the committable flag in the collect phase
roll wt_status_state into wt_status and populate in the collect phase
t2000: rename and combine checkout clash tests
t7509: cleanup description and filename
t7502: rename commit test script to comply with naming convention
t7500: rename commit tests script to comply with naming convention
t7501: rename commit test to comply with naming convention
Steve Hoelzer (1):
poll: use GetTickCount64() to avoid wrap-around issues
Steven Fernandez (1):
git-completion.bash: add completion for stash list
Strain, Roger L (4):
subtree: refactor split of a commit into standalone method
subtree: make --ignore-joins pay attention to adds
subtree: use commits before rejoins for splits
subtree: improve decision on merges kept in split
Sven Strickroth (1):
msvc: directly use MS version (_stricmp) of strcasecmp
Tao Qingyun (3):
refs: docstring typo
builtin/branch.c: remove useless branch_get
branch: trivial style fix
Taylor Blau (4):
transport.c: extract 'fill_alternate_refs_command'
transport.c: introduce core.alternateRefsCommand
transport.c: introduce core.alternateRefsPrefixes
Documentation/config.txt: fix typo in core.alternateRefsCommand
Thomas Gummerer (17):
rerere: unify error messages when read_cache fails
rerere: lowercase error messages
rerere: wrap paths in output in sq
rerere: mark strings for translation
rerere: add documentation for conflict normalization
rerere: fix crash with files rerere can't handle
rerere: only return whether a path has conflicts or not
rerere: factor out handle_conflict function
rerere: return strbuf from handle path
rerere: teach rerere to handle nested conflicts
rerere: recalculate conflict ID when unresolved conflict is committed
rerere: mention caveat about unmatched conflict markers
rerere: add note about files with existing conflict markers
.gitattributes: add conflict-marker-size for relevant files
linear-assignment: fix potential out of bounds memory access
t5551: move setup code inside test_expect blocks
t5551: compare sorted cookies files
Tim Schumacher (4):
Documentation/Makefile: make manpage-base-url.xsl generation quieter
alias: add support for aliases of an alias
alias: show the call history when an alias is looping
t0014: introduce an alias testing suite
Todd Zullinger (1):
Documentation: build technical/multi-pack-index
Torsten Bögershausen (5):
Make git_check_attr() a void function
path.c: char is not (always) signed
Upcast size_t variables to uintmax_t when printing
remote-curl.c: xcurl_off_t is not portable (on 32 bit platfoms)
t5601-99: Enable colliding file detection for MINGW
Uwe Kleine-König (1):
howto/using-merge-subtree: mention --allow-unrelated-histories
brian m. carlson (26):
t: add test functions to translate hash-related values
t0000: use hash translation table
t0000: update tests for SHA-256
t0002: abstract away SHA-1 specific constants
t0064: make hash size independent
t1006: make hash size independent
t1400: switch hard-coded object ID to variable
t1405: make hash size independent
t1406: make hash-size independent
t1407: make hash size independent
editorconfig: provide editor settings for Git developers
editorconfig: indicate settings should be kept in sync
pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
builtin/repack: replace hard-coded constants
builtin/mktree: remove hard-coded constant
builtin/fetch-pack: remove constants with parse_oid_hex
pack-revindex: express constants in terms of the_hash_algo
packfile: express constants in terms of the_hash_algo
refs/packed-backend: express constants using the_hash_algo
upload-pack: express constants in terms of the_hash_algo
transport: use parse_oid_hex instead of a constant
tag: express constant in terms of the_hash_algo
apply: replace hard-coded constants
apply: rename new_sha1_prefix and old_sha1_prefix
submodule: make zero-oid comparison hash function agnostic
rerere: convert to use the_hash_algo
Ævar Arnfjörð Bjarmason (35):
fetch: change "branch" to "reference" in --force -h output
push tests: make use of unused $1 in test description
push tests: use spaces in interpolated string
fetch tests: add a test for clobbering tag behavior
push doc: remove confusing mention of remote merger
push doc: move mention of "tag <tag>" later in the prose
push doc: correct lies about how push refspecs work
fetch: document local ref updates with/without --force
fetch: stop clobbering existing tags without --force
fsck tests: setup of bogus commit object
fsck tests: add a test for no skipList input
fsck: document and test sorted skipList input
fsck: document and test commented & empty line skipList input
fsck: document that skipList input must be unabbreviated
fsck: add a performance test
fsck: support comments & empty lines in skipList
commit-graph write: add progress output
commit-graph verify: add progress output
config doc: add missing list separator for checkout.optimizeNewBranch
push doc: add spacing between two words
fetch doc: correct grammar in --force docs
gc: fix regression in 7b0f229222 impacting --quiet
gc doc: mention the commit-graph in the intro
pack-objects test: modernize style
pack-objects tests: don't leave test .git corrupt at end
index-pack tests: don't leave test repo dirty at end
i18n: make GETTEXT_POISON a runtime option
range-diff doc: add a section about output stability
range-diff: fix regression in passing along diff options
range-diff: make diff option behavior (e.g. --stat) consistent
push: change needlessly ambiguous example in error
rebase doc: document rebase.useBuiltin
tests: add a special setup where rebase.useBuiltin is off
read-cache: make the split index obey umask settings
advice: don't pointlessly suggest --convert-graft-file
Đoàn Trần Công Danh (1):
git-compat-util: prefer poll.h to sys/poll.h
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.20.0-rc1
@ 2018-11-21 15:20 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-11-21 15:20 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.20.0-rc1 is now available for testing
at the usual places. It is comprised of 915 non-merge commits
since v2.19.0, contributed by 73 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.20.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.19.0 are as follows.
Welcome to the Git development community!
Aaron Lindsay, Alexander Pyhalov, Anton Serbulov, Brendan
Forster, Carlo Marcelo Arenas Belón, Daniels Umanovskis, David
Zych, Đoàn Trần Công Danh, Frederick Eaton, James Knight,
Jann Horn, Joshua Watt, Loo Rong Jie, Lucas De Marchi, Matthew
DeVore, Mihir Mehta, Nickolai Belakovski, Roger Strain, Sam
McKelvie, Saulius Gurklys, Shulhan, Steven Fernandez, Strain,
Roger L, and Tim Schumacher.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Andreas Gruenbacher,
Andreas Heiduk, Antonio Ospite, Ben Peart, Brandon Williams,
brian m. carlson, Christian Couder, Christian Hesse, Denton Liu,
Derrick Stolee, Elijah Newren, Eric Sunshine, Jeff Hostetler,
Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Josh Steadmon, Junio C Hamano, Karsten Blees,
Luke Diamand, Martin Ågren, Max Kirillov, Michael Witten,
Michał Górny, Nguyễn Thái Ngọc Duy, Noam Postavsky,
Olga Telezhnaya, Phillip Wood, Pratik Karki, Rafael Ascensão,
Ralf Thielow, Ramsay Jones, Rasmus Villemoes, René Scharfe,
Sebastian Staudt, Stefan Beller, Stephen P. Smith, Steve Hoelzer,
SZEDER Gábor, Tao Qingyun, Taylor Blau, Thomas Gummerer,
Todd Zullinger, Torsten Bögershausen, and Uwe Kleine-König.
----------------------------------------------------------------
Git 2.20 Release Notes (draft)
==============================
Backward Compatibility Notes
----------------------------
* "git branch -l <foo>" used to be a way to ask a reflog to be
created while creating a new branch, but that is no longer the
case. It is a short-hand for "git branch --list <foo>" now.
* "git push" into refs/tags/* hierarchy is rejected without getting
forced, but "git fetch" (misguidedly) used the "fast forwarding"
rule used for the refs/heads/* hierarchy; this has been corrected,
which means some fetches of tags that did not fail with older
version of Git will fail without "--force" with this version.
* "git help -a" now gives verbose output (same as "git help -av").
Those who want the old output may say "git help --no-verbose -a"..
* "git cpn --help", when "cpn" is an alias to, say, "cherry-pick -n",
reported only the alias expansion of "cpn" in earlier versions of
Git. It now runs "git cherry-pick --help" to show the manual page
of the command, while sending the alias expansion to the standard
error stream.
* "git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by". This is a backward-incompatible
change. Adding "--suppress-cc=misc-by" on the command line, or
setting sendemail.suppresscc configuration variable to "misc-by",
can be used to disable this behaviour.
Updates since v2.19
-------------------
UI, Workflows & Features
* Running "git clone" against a project that contain two files with
pathnames that differ only in cases on a case insensitive
filesystem would result in one of the files lost because the
underlying filesystem is incapable of holding both at the same
time. An attempt is made to detect such a case and warn.
* "git checkout -b newbranch [HEAD]" should not have to do as much as
checking out a commit different from HEAD. An attempt is made to
optimize this special case.
* "git rev-list --stdin </dev/null" used to be an error; it now shows
no output without an error. "git rev-list --stdin --default HEAD"
still falls back to the given default when nothing is given on the
standard input.
* Lift code from GitHub to restrict delta computation so that an
object that exists in one fork is not made into a delta against
another object that does not appear in the same forked repository.
* "git format-patch" learned new "--interdiff" and "--range-diff"
options to explain the difference between this version and the
previous attempt in the cover letter (or after the three-dashes as
a comment).
* "git mailinfo" used in "git am" learned to make a best-effort
recovery of a patch corrupted by MUA that sends text/plain with
format=flawed option.
(merge 3aa4d81f88 rs/mailinfo-format-flowed later to maint).
* The rules used by "git push" and "git fetch" to determine if a ref
can or cannot be updated were inconsistent; specifically, fetching
to update existing tags were allowed even though tags are supposed
to be unmoving anchoring points. "git fetch" was taught to forbid
updates to existing tags without the "--force" option.
* "git multi-pack-index" learned to detect corruption in the .midx
file it uses, and this feature has been integrated into "git fsck".
* Generation of (experimental) commit-graph files have so far been
fairly silent, even though it takes noticeable amount of time in a
meaningfully large repository. The users will now see progress
output.
* The minimum version of Windows supported by Windows port of Git is
now set to Vista.
* The completion script (in contrib/) learned to complete a handful of
options "git stash list" command takes.
* The completion script (in contrib/) learned that "git fetch
--multiple" only takes remote names as arguments and no refspecs.
* "git status" learns to show progress bar when refreshing the index
takes a long time.
(merge ae9af12287 nd/status-refresh-progress later to maint).
* "git help -a" and "git help -av" give different pieces of
information, and generally the "verbose" version is more friendly
to the new users. "git help -a" by default now uses the more
verbose output (with "--no-verbose", you can go back to the
original). Also "git help -av" now lists aliases and external
commands, which it did not used to.
* Unlike "grep", "git grep" by default recurses to the whole tree.
The command learned "git grep --recursive" option, so that "git
grep --no-recursive" can serve as a synonym to setting the
max-depth to 0.
* When pushing into a repository that borrows its objects from an
alternate object store, "git receive-pack" that responds to the
push request on the other side lists the tips of refs in the
alternate to reduce the amount of objects transferred. This
sometimes is detrimental when the number of refs in the alternate
is absurdly large, in which case the bandwidth saved in potentially
fewer objects transferred is wasted in excessively large ref
advertisement. The alternate refs that are advertised are now
configurable with a pair of configuration variables.
* "git cmd --help" when "cmd" is aliased used to only say "cmd is
aliased to ...". Now it shows that to the standard error stream
and runs "git $cmd --help" where $cmd is the first word of the
alias expansion.
* The documentation of "git gc" has been updated to mention that it
is no longer limited to "pruning away crufts" but also updates
ancillary files like commit-graph as a part of repository
optimization.
* "git p4 unshelve" improvements.
* The logic to select the default user name and e-mail on Windows has
been improved.
(merge 501afcb8b0 js/mingw-default-ident later to maint).
* The "rev-list --filter" feature learned to exclude all trees via
"tree:0" filter.
* "git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by"; --suppress-cc=misc-by on the
command line, or setting sendemail.suppresscc configuration
variable to "misc-by", can be used to disable this behaviour.
* Developer builds now uses -Wunused-function compilation option.
* One of our CI tests to run with "unusual/experimental/random"
settings now also uses commit-graph and midx.
* "git mergetool" learned to take the "--[no-]gui" option, just like
"git difftool" does.
* "git rebase -i" learned a new insn, 'break', that the user can
insert in the to-do list. Upon hitting it, the command returns
control back to the user.
* New "--pretty=format:" placeholders %GF and %GP that show the GPG
key fingerprints have been invented.
* On platforms with recent cURL library, http.sslBackend configuration
variable can be used to choose a different SSL backend at runtime.
The Windows port uses this mechanism to switch between OpenSSL and
Secure Channel while talking over the HTTPS protocol.
* "git send-email" learned to disable SMTP authentication via the
"--smtp-auth=none" option, even when the smtp username is given
(which turns the authentication on by default).
* A fourth class of configuration files (in addition to the
traditional "system wide", "per user in the $HOME directory" and
"per repository in the $GIT_DIR/config") has been introduced so
that different worktrees that share the same repository (hence the
same $GIT_DIR/config file) can use different customization.
* A pattern with '**' that does not have a slash on either side used
to be an invalid one, but the code now treats such double-asterisks
the same way as two normal asterisks that happen to be adjacent to
each other.
(merge e5bbe09e88 nd/wildmatch-double-asterisk later to maint).
* The "--no-patch" option, which can be used to get a high-level
overview without the actual line-by-line patch difference shown, of
the "range-diff" command was earlier broken, which has been
corrected.
* The recently merged "rebase in C" has an escape hatch to use the
scripted version when necessary, but it hasn't been documented,
which has been corrected.
Performance, Internal Implementation, Development Support etc.
* When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
* "git submodule update" is getting rewritten piece-by-piece into C.
* The code for computing history reachability has been shuffled,
obtained a bunch of new tests to cover them, and then being
improved.
* The unpack_trees() API used in checking out a branch and merging
walks one or more trees along with the index. When the cache-tree
in the index tells us that we are walking a tree whose flattened
contents is known (i.e. matches a span in the index), as linearly
scanning a span in the index is much more efficient than having to
open tree objects recursively and listing their entries, the walk
can be optimized, which has been done.
* When creating a thin pack, which allows objects to be made into a
delta against another object that is not in the resulting pack but
is known to be present on the receiving end, the code learned to
take advantage of the reachability bitmap; this allows the server
to send a delta against a base beyond the "boundary" commit.
* spatch transformation to replace boolean uses of !hashcmp() to
newly introduced oideq() is added, and applied, to regain
performance lost due to support of multiple hash algorithms.
* Fix a bug in which the same path could be registered under multiple
worktree entries if the path was missing (for instance, was removed
manually). Also, as a convenience, expand the number of cases in
which --force is applicable.
* Split Documentation/config.txt for easier maintenance.
(merge 6014363f0b nd/config-split later to maint).
* Test helper binaries clean-up.
(merge c9a1f4161f nd/test-tool later to maint).
* Various tests have been updated to make it easier to swap the
hash function used for object identification.
(merge ae0c89d41b bc/hash-independent-tests later to maint).
* Update fsck.skipList implementation and documentation.
(merge 371a655074 ab/fsck-skiplist later to maint).
* An alias that expands to another alias has so far been forbidden,
but now it is allowed to create such an alias.
* Various test scripts have been updated for style and also correct
handling of exit status of various commands.
* "gc --auto" ended up calling exit(-1) upon error, which has been
corrected to use exit(1). Also the error reporting behaviour when
daemonized has been updated to exit with zero status when stopping
due to a previously discovered error (which implies there is no
point running gc to improve the situation); we used to exit with
failure in such a case.
* Various codepaths in the core-ish part learned to work on an
arbitrary in-core index structure, not necessarily the default
instance "the_index".
(merge b3c7eef9b0 nd/the-index later to maint).
* Code clean-up in the internal machinery used by "git status" and
"git commit --dry-run".
(merge 73ba5d78b4 ss/wt-status-committable later to maint).
* Some environment variables that control the runtime options of Git
used during tests are getting renamed for consistency.
(merge 4231d1ba99 bp/rename-test-env-var later to maint).
* A pair of new extensions to the index file have been introduced.
They allow the index file to be read in parallel for performance.
* The oidset API was built on top of the oidmap API which in turn is
on the hashmap API. Replace the implementation to build on top of
the khash API and gain performance.
* Over some transports, fetching objects with an exact commit object
name can be done without first seeing the ref advertisements. The
code has been optimized to exploit this.
* In a partial clone that will lazily be hydrated from the
originating repository, we generally want to avoid "does this
object exist (locally)?" on objects that we deliberately omitted
when we created the clone. The cache-tree codepath (which is used
to write a tree object out of the index) however insisted that the
object exists, even for paths that are outside of the partial
checkout area. The code has been updated to avoid such a check.
* To help developers, an EditorConfig file that attempts to follow
the project convention has been added.
(merge b548d698a0 bc/editorconfig later to maint).
* The result of coverage test can be combined with "git blame" to
check the test coverage of code introduced recently with a new
'coverage-diff' tool (in contrib/).
(merge 783faedd65 ds/coverage-diff later to maint).
* An experiment to fuzz test a few areas, hopefully we can gain more
coverage to various areas.
* More codepaths are moving away from hardcoded hash sizes.
* The way the Windows port figures out the current directory has been
improved.
* The way DLLs are loaded on the Windows port has been improved.
* Some tests have been reorganized and renamed; "ls t/" now gives a
better overview of what is tested for these scripts than before.
* "git rebase" and "git rebase -i" have been reimplemented in C.
* Windows port learned to use nano-second resolution file timestamps.
* The overly large Documentation/config.txt file have been split into
million little pieces. This potentially allows each individual piece
included into the manual page of the command it affects more easily.
* Replace three string-list instances used as look-up tables in "git
fetch" with hashmaps.
* Unify code to read the author-script used in "git am" and the
commands that use the sequencer machinery, e.g. "git rebase -i".
* In preparation to the day when we can deprecate and remove the
"rebase -p", make sure we can skip and later remove tests for
it.
* The history traversal used to implement the tag-following has been
optimized by introducing a new helper.
* The helper function to refresh the cached stat information in the
in-core index has learned to perform the lstat() part of the
operation in parallel on multi-core platforms.
* The code to traverse objects for reachability, used to decide what
objects are unreferenced and expendable, have been taught to also
consider per-worktree refs of other worktrees as starting points to
prevent data loss.
* "git add" needs to internally run "diff-files" equivalent, and the
codepath learned the same optimization as "diff-files" has to run
lstat(2) in parallel to find which paths have been updated in the
working tree.
* The procedure to install dependencies before testing at Travis CI
is getting revamped for both simplicity and flexibility, taking
advantage of the recent move to the vm-based environment.
* The support for format-patch (and send-email) by the command-line
completion script (in contrib/) has been simplified a bit.
* The revision walker machinery learned to take advantage of the
commit generation numbers stored in the commit-graph file.
* The codebase has been cleaned up to reduce "#ifndef NO_PTHREADS".
* The way -lcurl library gets linked has been simplified by taking
advantage of the fact that we can just ask curl-config command how.
* Various functions have been audited for "-Wunused-parameter" warnings
and bugs in them got fixed.
* A sanity check for start-up sequence has been added in the config
API codepath.
* The build procedure to link for fuzzing test has been made
customizable with a new Makefile variable.
* The way "git rebase" parses and forwards the command line options
meant for underlying "git am" has been revamped, which fixed for
options with parameters that were not passed correctly.
* Our testing framework uses a special i18n "poisoned localization"
feature to find messages that ought to stay constant but are
incorrectly marked to be translated. This feature has been made
into a runtime option (it used to be a compile-time option).
* "git push" used to check ambiguities between object-names and
refnames while processing the list of refs' old and new values,
which was unnecessary (as it knew that it is feeding raw object
names). This has been optimized out.
* The xcurl_off_t() helper function is used to cast size_t to
curl_off_t, but some compilers gave warnings against the code to
ensure the casting is done without wraparound, when size_t is
narrower than curl_off_t. This warning has been squelched.
* Code preparation to replace ulong vars with size_t vars where
appropriate continues.
* The "test installed Git" mode of our test suite has been updated to
work better.
* A coding convention around the Coccinelle semantic patches to have
two classes to ease code migration process has been proposed and
its support has been added to the Makefile.
Fixes since v2.19
-----------------
* "git interpret-trailers" and its underlying machinery had a buggy
code that attempted to ignore patch text after commit log message,
which triggered in various codepaths that will always get the log
message alone and never get such an input.
(merge 66e83d9b41 jk/trailer-fixes later to maint).
* Malformed or crafted data in packstream can make our code attempt
to read or write past the allocated buffer and abort, instead of
reporting an error, which has been fixed.
* "git rebase -i" did not clear the state files correctly when a run
of "squash/fixup" is aborted and then the user manually amended the
commit instead, which has been corrected.
(merge 10d2f35436 js/rebase-i-autosquash-fix later to maint).
* When fsmonitor is in use, after operation on submodules updates
.gitmodules, we lost track of the fact that we did so and relied on
stale fsmonitor data.
(merge 43f1180814 bp/mv-submodules-with-fsmonitor later to maint).
* Fix for a long-standing bug that leaves the index file corrupt when
it shrinks during a partial commit.
(merge 6c003d6ffb jk/reopen-tempfile-truncate later to maint).
* Further fix for O_APPEND emulation on Windows
(merge eeaf7ddac7 js/mingw-o-append later to maint).
* A corner case bugfix in "git rerere" code.
(merge ad2bf0d9b4 en/rerere-multi-stage-1-fix later to maint).
* "git add ':(attr:foo)'" is not supported and is supposed to be
rejected while the command line arguments are parsed, but we fail
to reject such a command line upfront.
(merge 84d938b732 nd/attr-pathspec-fix later to maint).
* Recent update broke the reachability algorithm when refs (e.g.
tags) that point at objects that are not commit were involved,
which has been fixed.
* "git rebase" etc. in Git 2.19 fails to abort when given an empty
commit log message as result of editing, which has been corrected.
(merge a3ec9eaf38 en/sequencer-empty-edit-result-aborts later to maint).
* The code to backfill objects in lazily cloned repository did not
work correctly, which has been corrected.
(merge e68302011c jt/lazy-object-fetch-fix later to maint).
* Update error messages given by "git remote" and make them consistent.
(merge 5025425dff ms/remote-error-message-update later to maint).
* "git update-ref" learned to make both "--no-deref" and "--stdin"
work at the same time.
(merge d345e9fbe7 en/update-ref-no-deref-stdin later to maint).
* Recently added "range-diff" had a corner-case bug to cause it
segfault, which has been corrected.
(merge e467a90c7a tg/range-diff-corner-case-fix later to maint).
* The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship. Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.
(merge 829a321569 ds/commit-graph-with-grafts later to maint).
* The mailmap file update.
(merge 255eb03edf jn/mailmap-update later to maint).
* The code in "git status" sometimes hit an assertion failure. This
was caused by a structure that was reused without cleaning the data
used for the first run, which has been corrected.
(merge 3e73cc62c0 en/status-multiple-renames-to-the-same-target-fix later to maint).
* "git fetch $repo $object" in a partial clone did not correctly
fetch the asked-for object that is referenced by an object in
promisor packfile, which has been fixed.
* A corner-case bugfix.
(merge c5cbb27cb5 sm/show-superproject-while-conflicted later to maint).
* Various fixes to "diff --color-moved-ws".
* A partial clone that is configured to lazily fetch missing objects
will on-demand issue a "git fetch" request to the originating
repository to fill not-yet-obtained objects. The request has been
optimized for requesting a tree object (and not the leaf blob
objects contained in it) by telling the originating repository that
no blobs are needed.
(merge 4c7f9567ea jt/non-blob-lazy-fetch later to maint).
* The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.
(merge 4c490f3d32 sg/split-index-racefix later to maint).
* "git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.
(merge 04005834ed np/log-graph-octopus-fix later to maint).
* "git range-diff" did not work well when the compared ranges had
changes in submodules and the "--submodule=log" was used.
* The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.
(merge f67b980771 jk/run-command-notdot later to maint).
* A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.
(merge 34204c8166 js/pack-objects-mutex-init-fix later to maint).
* Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.
(merge ffd04e92e2 js/diff-notice-has-drive-prefix later to maint).
* The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.
(merge b072a25fad jc/receive-deny-current-branch-fix later to maint).
* The logic to determine the archive type "git archive" uses did not
correctly kick in for "git archive --remote", which has been
corrected.
* "git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.
(merge 5dcfbf564c js/shallow-and-fetch-prune later to maint).
* Some codepaths failed to form a proper URL when .gitmodules record
the URL to a submodule repository as relative to the repository of
superproject, which has been corrected.
(merge e0a862fdaf sb/submodule-url-to-absolute later to maint).
* "git fetch" over protocol v2 into a shallow repository failed to
fetch full history behind a new tip of history that was diverged
before the cut-off point of the history that was previously fetched
shallowly.
* The command line completion machinery (in contrib/) has been
updated to allow the completion script to tweak the list of options
that are reported by the parse-options machinery correctly.
(merge 276b49ff34 nd/completion-negation later to maint).
* Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense. This has been corrected.
(merge 669b1d2aae md/exclude-promisor-objects-fix later to maint).
* The "container" mode of TravisCI is going away. Our .travis.yml
file is getting prepared for the transition.
(merge 32ee384be8 ss/travis-ci-force-vm-mode later to maint).
* Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.
(merge a5f52c6dab sg/test-verbose-log later to maint).
* A regression in Git 2.12 era made "git fsck" fall into an infinite
loop while processing truncated loose objects.
(merge 18ad13e5b2 jk/detect-truncated-zlib-input later to maint).
* "git ls-remote $there foo" was broken by recent update for the
protocol v2 and stopped showing refs that match 'foo' that are not
refs/{heads,tags}/foo, which has been fixed.
(merge 6a139cdd74 jk/proto-v2-ref-prefix-fix later to maint).
* Additional comment on a tricky piece of code to help developers.
(merge 0afbe3e806 jk/stream-pack-non-delta-clarification later to maint).
* A couple of tests used to leave the repository in a state that is
deliberately corrupt, which have been corrected.
(merge aa984dbe5e ab/pack-tests-cleanup later to maint).
* The submodule support has been updated to read from the blob at
HEAD:.gitmodules when the .gitmodules file is missing from the
working tree.
(merge 2b1257e463 ao/submodule-wo-gitmodules-checked-out later to maint).
* "git fetch" was a bit loose in parsing responses from the other side
when talking over the protocol v2.
* "git rev-parse --exclude=* --branches --branches" (i.e. first
saying "add only things that do not match '*' out of all branches"
and then adding all branches, without any exclusion this time")
worked as expected, but "--exclude=* --all --all" did not work the
same way, which has been fixed.
(merge 5221048092 ag/rev-parse-all-exclude-fix later to maint).
* "git send-email --transfer-encoding=..." in recent versions of Git
sometimes produced an empty "Content-Transfer-Encoding:" header,
which has been corrected.
(merge 3c88e46f1a al/send-email-auto-cte-fixup later to maint).
* The interface into "xdiff" library used to discover the offset and
size of a generated patch hunk by first formatting it into the
textual hunk header "@@ -n,m +k,l @@" and then parsing the numbers
out. A new interface has been introduced to allow callers a more
direct access to them.
(merge 5eade0746e jk/xdiff-interface later to maint).
* Pathspec matching against a tree object were buggy when negative
pathspec elements were involved, which has been fixed.
(merge b7845cebc0 nd/tree-walk-path-exclusion later to maint).
* "git merge" and "git pull" that merges into an unborn branch used
to completely ignore "--verify-signatures", which has been
corrected.
(merge 01a31f3bca jk/verify-sig-merge-into-void later to maint).
* "git rebase --autostash" did not correctly re-attach the HEAD at times.
* "rev-parse --exclude=<pattern> --branches=<pattern>" etc. did not
quite work, which has been corrected.
(merge 9ab9b5df0e ra/rev-parse-exclude-glob later to maint).
* When editing a patch in a "git add -i" session, a hunk could be
made to no-op. The "git apply" program used to reject a patch with
such a no-op hunk to catch user mistakes, but it is now updated to
explicitly allow a no-op hunk in an edited patch.
(merge 22cb3835b9 js/apply-recount-allow-noop later to maint).
* The URL to an MSDN page in a comment has been updated.
(merge 2ef2ae2917 js/mingw-msdn-url later to maint).
* "git ls-remote --sort=<thing>" can feed an object that is not yet
available into the comparison machinery and segfault, which has
been corrected to check such a request upfront and reject it.
* When "git bundle" aborts due to an empty commit ranges
(i.e. resulting in an empty pack), it left a file descriptor to an
lockfile open, which resulted in leftover lockfile on Windows where
you cannot remove a file with an open file descriptor. This has
been corrected.
(merge 2c8ee1f53c jk/close-duped-fd-before-unlock-for-bundle later to maint).
* "git format-patch --stat=<width>" can be used to specify the width
used by the diffstat (shown in the cover letter).
(merge 284aeb7e60 nd/format-patch-cover-letter-stat-width later to maint).
* The way .git/index and .git/sharedindex* files were initially
created gave these files different perm bits until they were
adjusted for shared repository settings. This was made consistent.
(merge c9d6c78870 cc/shared-index-permbits later to maint).
* Code cleanup, docfix, build fix, etc.
(merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint).
(merge b9b07efdb2 tg/conflict-marker-size later to maint).
(merge fa0aeea770 sg/doc-trace-appends later to maint).
(merge d64324cb60 tb/void-check-attr later to maint).
(merge c3b9bc94b9 en/double-semicolon-fix later to maint).
(merge 79336116f5 sg/t3701-tighten-trace later to maint).
(merge 801fa63a90 jk/dev-build-format-security later to maint).
(merge 0597dd62ba sb/string-list-remove-unused later to maint).
(merge db2d36fad8 bw/protocol-v2 later to maint).
(merge 456d7cd3a9 sg/split-index-test later to maint).
(merge 7b6057c852 tq/refs-internal-comment-fix later to maint).
(merge 29e8dc50ad tg/t5551-with-curl-7.61.1 later to maint).
(merge 55f6bce2c9 fe/doc-updates later to maint).
(merge 7987d2232d jk/check-everything-connected-is-long-gone later to maint).
(merge 4ba3c9be47 dz/credential-doc-url-matching-rules later to maint).
(merge 4c399442f7 ma/commit-graph-docs later to maint).
(merge fc0503b04e ma/t1400-undebug-test later to maint).
(merge e56b53553a nd/packobjectshook-doc-fix later to maint).
(merge c56170a0c4 ma/mailing-list-address-in-git-help later to maint).
(merge 6e8fc70fce rs/sequencer-oidset-insert-avoids-dups later to maint).
(merge ad0b8f9575 mw/doc-typofixes later to maint).
(merge d9f079ad1a jc/how-to-document-api later to maint).
(merge b1492bf315 ma/t7005-bash-workaround later to maint).
(merge ac1f98a0df du/rev-parse-is-plumbing later to maint).
(merge ca8ed443a5 mm/doc-no-dashed-git later to maint).
(merge ce366a8144 du/get-tar-commit-id-is-plumbing later to maint).
(merge 61018fe9e0 du/cherry-is-plumbing later to maint).
(merge c7e5fe79b9 sb/strbuf-h-update later to maint).
(merge 8d2008196b tq/branch-create-wo-branch-get later to maint).
(merge 2e3c894f4b tq/branch-style-fix later to maint).
(merge c5d844af9c sg/doc-show-branch-typofix later to maint).
(merge 081d91618b ah/doc-updates later to maint).
(merge b84c783882 jc/cocci-preincr later to maint).
(merge 5e495f8122 uk/merge-subtree-doc-update later to maint).
(merge aaaa881822 jk/uploadpack-packobjectshook-fix later to maint).
(merge 3063477445 tb/char-may-be-unsigned later to maint).
(merge 8c64bc9420 sg/test-rebase-editor-fix later to maint).
(merge 71571cd7d6 ma/sequencer-do-reset-saner-loop-termination later to maint).
(merge 9a4cb8781e cb/notes-freeing-always-null-fix later to maint).
----------------------------------------------------------------
Changes since v2.19.0 are as follows:
Aaron Lindsay (1):
send-email: avoid empty transfer encoding header
Alban Gruin (21):
sequencer: make three functions and an enum from sequencer.c public
rebase -i: rewrite append_todo_help() in C
editor: add a function to launch the sequence editor
rebase -i: rewrite the edit-todo functionality in C
sequencer: add a new function to silence a command, except if it fails
rebase -i: rewrite setup_reflog_action() in C
rebase -i: rewrite checkout_onto() in C
sequencer: refactor append_todo_help() to write its message to a buffer
sequencer: change the way skip_unnecessary_picks() returns its result
t3404: todo list with commented-out commands only aborts
rebase -i: rewrite complete_action() in C
rebase -i: remove unused modes and functions
rebase -i: implement the logic to initialize $revisions in C
rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
rebase -i: rewrite write_basic_state() in C
rebase -i: rewrite init_basic_state() in C
rebase -i: implement the main part of interactive rebase as a builtin
rebase--interactive2: rewrite the submodes of interactive rebase in C
rebase -i: remove git-rebase--interactive.sh
rebase -i: move rebase--helper modes to rebase--interactive
p3400: replace calls to `git checkout -b' by `git checkout -B'
Alexander Pyhalov (1):
t7005-editor: quote filename to fix whitespace-issue
Andreas Gruenbacher (1):
rev-parse: clear --exclude list after 'git rev-parse --all'
Andreas Heiduk (6):
doc: clarify boundaries of 'git worktree list --porcelain'
doc: fix ASCII art tab spacing
doc: fix inappropriate monospace formatting
doc: fix descripion for 'git tag --format'
doc: fix indentation of listing blocks in gitweb.conf.txt
doc: fix formatting in git-update-ref
Anton Serbulov (1):
mingw: fix getcwd when the parent directory cannot be queried
Antonio Ospite (10):
submodule: add a print_config_from_gitmodules() helper
submodule: factor out a config_set_in_gitmodules_file_gently function
t7411: merge tests 5 and 6
t7411: be nicer to future tests and really clean things up
submodule--helper: add a new 'config' subcommand
submodule: use the 'submodule--helper config' command
t7506: clean up .gitmodules properly before setting up new scenario
submodule: add a helper to check if it is safe to write to .gitmodules
submodule: support reading .gitmodules when it's not in the working tree
t/helper: add test-submodule-nested-repo-config
Ben Peart (19):
checkout: optimize "git checkout -b <new_branch>"
git-mv: allow submodules and fsmonitor to work together
t/README: correct spelling of "uncommon"
preload-index: use git_env_bool() not getenv() for customization
fsmonitor: update GIT_TEST_FSMONITOR support
read-cache: update TEST_GIT_INDEX_VERSION support
preload-index: update GIT_FORCE_PRELOAD_TEST support
read-cache: clean up casting and byte decoding
eoie: add End of Index Entry (EOIE) extension
config: add new index.threads config setting
read-cache: load cache extensions on a worker thread
ieot: add Index Entry Offset Table (IEOT) extension
read-cache: load cache entries on worker threads
reset: don't compute unstaged changes after reset when --quiet
reset: add new reset.quiet config setting
reset: warn when refresh_index() takes more than 2 seconds
speed up refresh_index() by utilizing preload_index()
add: speed up cmd_add() by utilizing read_cache_preload()
refresh_index: remove unnecessary calls to preload_index()
Brandon Williams (1):
config: document value 2 for protocol.version
Brendan Forster (1):
http: add support for disabling SSL revocation checks in cURL
Carlo Marcelo Arenas Belón (8):
unpack-trees: avoid dead store for struct progress
multi-pack-index: avoid dead store for struct progress
read-cache: use of memory after it is freed
commit-slabs: move MAYBE_UNUSED out
khash: silence -Wunused-function for delta-islands
compat: make sure git_mmap is not expected to write
sequencer: cleanup for gcc warning in non developer mode
builtin/notes: remove unnecessary free
Christian Couder (3):
pack-objects: refactor code into compute_layer_order()
pack-objects: move tree_depth into 'struct packing_data'
pack-objects: move 'layer' into 'struct packing_data'
Christian Hesse (2):
subtree: add build targets 'man' and 'html'
subtree: make install targets depend on build targets
Daniels Umanovskis (3):
doc: move git-rev-parse from porcelain to plumbing
doc: move git-get-tar-commit-id to plumbing
doc: move git-cherry to plumbing
David Zych (1):
doc: clarify gitcredentials path component matching
Denton Liu (3):
mergetool: accept -g/--[no-]gui as arguments
completion: support `git mergetool --[no-]gui`
doc: document diff/merge.guitool config keys
Derrick Stolee (93):
multi-pack-index: add design document
multi-pack-index: add format details
multi-pack-index: add builtin
multi-pack-index: add 'write' verb
midx: write header information to lockfile
multi-pack-index: load into memory
t5319: expand test data
packfile: generalize pack directory list
multi-pack-index: read packfile list
multi-pack-index: write pack names in chunk
midx: read pack names into array
midx: sort and deduplicate objects from packfiles
midx: write object ids in a chunk
midx: write object id fanout chunk
midx: write object offsets
config: create core.multiPackIndex setting
midx: read objects from multi-pack-index
midx: use midx in abbreviation calculations
midx: use existing midx when writing new one
midx: use midx in approximate_object_count
midx: prevent duplicate packfile loads
packfile: skip loading index if in multi-pack-index
midx: clear midx on repack
commit-reach: move walk methods from commit.c
commit.h: remove method declarations
commit-reach: move ref_newer from remote.c
commit-reach: move commit_contains from ref-filter
upload-pack: make reachable() more generic
upload-pack: refactor ok_to_give_up()
upload-pack: generalize commit date cutoff
commit-reach: move can_all_from_reach_with_flags
test-reach: create new test tool for ref_newer
test-reach: test in_merge_bases
test-reach: test is_descendant_of
test-reach: test get_merge_bases_many
test-reach: test reduce_heads
test-reach: test can_all_from_reach_with_flags
test-reach: test commit_contains
commit-reach: replace ref_newer logic
commit-reach: make can_all_from_reach... linear
commit-reach: use can_all_from_reach
multi-pack-index: provide more helpful usage info
multi-pack-index: store local property
midx: mark bad packed objects
midx: stop reporting garbage
midx: fix bug that skips midx with alternates
packfile: add all_packs list
treewide: use get_all_packs
midx: test a few commands that use get_all_packs
pack-objects: consider packs in multi-pack-index
commit-graph: update design document
test-repository: properly init repo
commit-graph: not compatible with replace objects
commit-graph: not compatible with grafts
commit-graph: not compatible with uninitialized repo
commit-graph: close_commit_graph before shallow walk
commit-graph: define GIT_TEST_COMMIT_GRAPH
t3206-range-diff.sh: cover single-patch case
t5318: use test_oid for HASH_LEN
multi-pack-index: add 'verify' verb
multi-pack-index: verify bad header
multi-pack-index: verify corrupt chunk lookup table
multi-pack-index: verify packname order
multi-pack-index: verify missing pack
multi-pack-index: verify oid fanout order
multi-pack-index: verify oid lookup order
multi-pack-index: fix 32-bit vs 64-bit size check
multi-pack-index: verify object offsets
multi-pack-index: report progress during 'verify'
fsck: verify multi-pack-index
commit-reach: properly peel tags
commit-reach: fix memory and flag leaks
commit-reach: cleanups in can_all_from_reach...
commit-graph: clean up leaked memory during write
commit-graph: reduce initial oid allocation
midx: fix broken free() in close_midx()
contrib: add coverage-diff script
ci: add optional test variables
commit-reach: fix first-parent heuristic
midx: close multi-pack-index on repack
multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX
packfile: close multi-pack-index in close_all_packs
prio-queue: add 'peek' operation
test-reach: add run_three_modes method
test-reach: add rev-list tests
revision.c: begin refactoring --topo-order logic
commit/revisions: bookkeeping before refactoring
revision.c: generation-based topo-order algorithm
t6012: make rev-list tests more interesting
commit-reach: implement get_reachable_subset
test-reach: test get_reachable_subset
remote: make add_missing_tags() linear
pack-objects: ignore ambiguous object warnings
Elijah Newren (14):
Remove superfluous trailing semicolons
t4200: demonstrate rerere segfault on specially crafted merge
rerere: avoid buffer overrun
update-ref: fix type of update_flags variable to match its usage
update-ref: allow --no-deref with --stdin
sequencer: fix --allow-empty-message behavior, make it smarter
merge-recursive: set paths correctly when three-way merging content
merge-recursive: avoid wrapper function when unnecessary and wasteful
merge-recursive: remove final remaining caller of merge_file_one()
merge-recursive: rename merge_file_1() and merge_content()
commit: fix erroneous BUG, 'multiple renames on the same target? how?'
merge-recursive: improve auto-merging messages with path collisions
merge-recursive: avoid showing conflicts with merge branch before HEAD
fsck: move fsck_head_link() to get_default_heads() to avoid some globals
Eric Sunshine (26):
format-patch: allow additional generated content in make_cover_letter()
format-patch: add --interdiff option to embed diff in cover letter
format-patch: teach --interdiff to respect -v/--reroll-count
interdiff: teach show_interdiff() to indent interdiff
log-tree: show_log: make commentary block delimiting reusable
format-patch: allow --interdiff to apply to a lone-patch
range-diff: respect diff_option.file rather than assuming 'stdout'
range-diff: publish default creation factor
range-diff: relieve callers of low-level configuration burden
format-patch: add --range-diff option to embed diff in cover letter
format-patch: extend --range-diff to accept revision range
format-patch: teach --range-diff to respect -v/--reroll-count
format-patch: add --creation-factor tweak for --range-diff
format-patch: allow --range-diff to apply to a lone-patch
worktree: don't die() in library function find_worktree()
worktree: move delete_git_dir() earlier in file for upcoming new callers
worktree: generalize delete_git_dir() to reduce code duplication
worktree: prepare for more checks of whether path can become worktree
worktree: disallow adding same path multiple times
worktree: teach 'add' to respect --force for registered but missing path
worktree: teach 'move' to override lock when --force given twice
worktree: teach 'remove' to override lock when --force given twice
worktree: delete .git/worktrees if empty after 'remove'
doc-diff: fix non-portable 'man' invocation
doc-diff: add --clean mode to remove temporary working gunk
doc/Makefile: drop doc-diff worktree and temporary files on "make clean"
Frederick Eaton (3):
git-archimport.1: specify what kind of Arch we're talking about
git-column.1: clarify initial description, provide examples
git-describe.1: clarify that "human readable" is also git-readable
James Knight (1):
build: link with curl-defined linker flags
Jann Horn (2):
patch-delta: fix oob read
patch-delta: consistently report corruption
Jeff Hostetler (2):
t0051: test GIT_TRACE to a windows named pipe
mingw: fix mingw_open_append to work with named pipes
Jeff King (97):
branch: make "-l" a synonym for "--list"
Add delta-islands.{c,h}
pack-objects: add delta-islands support
repack: add delta-islands support
t5320: tests for delta islands
t/perf: factor boilerplate out of test_perf
t/perf: factor out percent calculations
t/perf: add infrastructure for measuring sizes
t/perf: add perf tests for fetches from a bitmapped server
pack-bitmap: save "have" bitmap from walk
pack-objects: reuse on-disk deltas for thin "have" objects
SubmittingPatches: mention doc-diff
rev-list: make empty --stdin not an error
trailer: use size_t for string offsets
trailer: use size_t for iterating trailer list
trailer: pass process_trailer_opts to trailer_info_get()
interpret-trailers: tighten check for "---" patch boundary
interpret-trailers: allow suppressing "---" divider
pretty, ref-filter: format %(trailers) with no_divider option
sequencer: ignore "---" divider when parsing trailers
append_signoff: use size_t for string offsets
coccinelle: use <...> for function exclusion
introduce hasheq() and oideq()
convert "oidcmp() == 0" to oideq()
convert "hashcmp() == 0" to hasheq()
convert "oidcmp() != 0" to "!oideq()"
convert "hashcmp() != 0" to "!hasheq()"
convert hashmap comparison functions to oideq()
read-cache: use oideq() in ce_compare functions
show_dirstat: simplify same-content check
doc-diff: always use oids inside worktree
test-delta: read input into a heap buffer
t5303: test some corrupt deltas
patch-delta: handle truncated copy parameters
t5303: use printf to generate delta bases
doc/git-branch: remove obsolete "-l" references
bitmap_has_sha1_in_uninteresting(): drop BUG check
t5310: test delta reuse with bitmaps
traverse_bitmap_commit_list(): don't free result
pack-bitmap: drop "loaded" flag
reopen_tempfile(): truncate opened file
doc-diff: force worktree add
config.mak.dev: add -Wformat-security
pack-objects: handle island check for "external" delta base
receive-pack: update comment with check_everything_connected
submodule--helper: use "--" to signal end of clone options
submodule-config: ban submodule urls that start with dash
submodule-config: ban submodule paths that start with a dash
fsck: detect submodule urls starting with dash
fsck: detect submodule paths starting with dash
more oideq/hasheq conversions
transport: drop refnames from for_each_alternate_ref
test-tool: show tool list on error
config.mak.dev: enable -Wunused-function
run-command: mark path lookup errors with ENOENT
t5410: use longer path for sample script
upload-pack: fix broken if/else chain in config callback
t1450: check large blob in trailing-garbage test
check_stream_sha1(): handle input underflow
cat-file: handle streaming failures consistently
ls-remote: do not send ref prefixes for patterns
ls-remote: pass heads/tags prefixes to transport
read_istream_pack_non_delta(): document input handling
xdiff: provide a separate emit callback for hunks
xdiff-interface: provide a separate consume callback for hunks
rev-list: handle flags for --indexed-objects
approxidate: handle pending number for "specials"
pathspec: handle non-terminated strings with :(attr)
diff: avoid generating unused hunk header lines
diff: discard hunk headers for patch-ids earlier
diff: use hunk callback for word-diff
combine-diff: use an xdiff hunk callback
diff: convert --check to use a hunk callback
range-diff: use a hunk callback
xdiff-interface: drop parse_hunk_header()
apply: mark include/exclude options as NONEG
am: handle --no-patch-format option
ls-files: mark exclude options as NONEG
pack-objects: mark index-version option as NONEG
cat-file: mark batch options with NONEG
status: mark --find-renames option with NONEG
format-patch: mark "--no-numbered" option with NONEG
show-branch: mark --reflog option as NONEG
tag: mark "--message" option with NONEG
cat-file: report an error on multiple --batch options
apply: return -1 from option callback instead of calling exit(1)
parse-options: drop OPT_DATE()
assert NOARG/NONEG behavior of parse-options callbacks
midx: double-check large object write loop
merge: extract verify_merge_signature() helper
merge: handle --verify-signatures for unborn branch
pull: handle --verify-signatures for unborn branch
approxidate: fix NULL dereference in date_time()
bundle: dup() output descriptor closer to point-of-use
pack-objects: fix tree_depth and layer invariants
pack-objects: zero-initialize tree_depth/layer arrays
pack-objects: fix off-by-one in delta-island tree-depth computation
Johannes Schindelin (62):
rebase -i --autosquash: demonstrate a problem skipping the last squash
rebase -i: be careful to wrap up fixup/squash chains
compat/poll: prepare for targeting Windows Vista
mingw: set _WIN32_WINNT explicitly for Git for Windows
mingw: bump the minimum Windows version to Vista
builtin rebase: prepare for builtin rebase -i
rebase -i: clarify what happens on a failed `exec`
rebase -i: introduce the 'break' command
getpwuid(mingw): initialize the structure only once
getpwuid(mingw): provide a better default for the user name
mingw: use domain information for default email
http: add support for selecting SSL backends at runtime
pack-objects: fix typo 'detla' -> 'delta'
pack-objects (mingw): demonstrate a segmentation fault with large deltas
pack-objects (mingw): initialize `packing_data` mutex in the correct spot
rebase (autostash): avoid duplicate call to state_dir_path()
rebase (autostash): store the full OID in <state-dir>/autostash
rebase (autostash): use an explicit OID to apply the stash
mingw: factor out code to set stat() data
rebase --autostash: demonstrate a problem with dirty submodules
rebase --autostash: fix issue with dirty submodules
mingw: load system libraries the recommended way
mingw: ensure `getcwd()` reports the correct case
repack: point out a bug handling stale shallow info
shallow: offer to prune only non-existing entries
repack -ad: prune the list of shallow commits
http: when using Secure Channel, ignore sslCAInfo by default
t7800: fix quoting
mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)
config: rename `dummy` parameter to `cb` in git_default_config()
config: allow for platform-specific core.* config settings
config: move Windows-specific config settings into compat/mingw.c
mingw: unset PERL5LIB by default
mingw: fix isatty() after dup2()
t3404: decouple some test cases from outcomes of previous test cases
t3418: decouple test cases from a previous `rebase -p` test case
tests: optionally skip `git rebase -p` tests
Windows: force-recompile git.res for differing architectures
built-in rebase: demonstrate regression with --autostash
built-in rebase --autostash: leave the current branch alone if possible
Update .mailmap
rebase -r: demonstrate bug with conflicting merges
rebase -r: do not write MERGE_HEAD unless needed
rebase -i: include MERGE_HEAD into files to clean up
built-in rebase --skip/--abort: clean up stale .git/<name> files
status: rebase and merge can be in progress at the same time
apply --recount: allow "no-op hunks"
rebase: consolidate clean-up code before leaving reset_head()
rebase: prepare reset_head() for more flags
built-in rebase: reinstate `checkout -q` behavior where appropriate
tests: fix GIT_TEST_INSTALLED's PATH to include t/helper/
tests: respect GIT_TEST_INSTALLED when initializing repositories
t/lib-gettext: test installed git-sh-i18n if GIT_TEST_INSTALLED is set
mingw: use `CreateHardLink()` directly
rebase: really just passthru the `git am` options
rebase: validate -C<n> and --whitespace=<mode> parameters early
config: report a bug if git_dir exists without commondir
tests: do not require Git to be built when testing an installed Git
tests: explicitly use `git.exe` on Windows
mingw: replace an obsolete link with the superseding one
legacy-rebase: backport -C<n> and --whitespace=<option> checks
rebase: warn about the correct tree's OID
Johannes Sixt (3):
diff: don't attempt to strip prefix from absolute Windows paths
rebase -i: recognize short commands without arguments
t3404-rebase-interactive: test abbreviated commands
Jonathan Nieder (9):
gc: improve handling of errors reading gc.log
gc: exit with status 128 on failure
gc: do not return error for prior errors in daemonized mode
commit-reach: correct accidental #include of C file
mailmap: consistently normalize brian m. carlson's name
git doc: direct bug reporters to mailing list archive
eoie: default to not writing EOIE section
ieot: default to not writing IEOT section
index: make index.threads=true enable ieot and eoie
Jonathan Tan (15):
fetch-object: unify fetch_object[s] functions
fetch-object: set exact_oid when fetching
connected: document connectivity in partial clones
fetch: in partial clone, check presence of targets
fetch-pack: avoid object flags if no_dependents
fetch-pack: exclude blobs when lazy-fetching trees
transport: allow skipping of ref listing
transport: do not list refs if possible
transport: list refs before fetch if necessary
fetch: do not list refs if fetching only hashes
cache-tree: skip some blob checks in partial clone
upload-pack: make have_obj not global
upload-pack: make want_obj not global
upload-pack: clear flags before each v2 request
fetch-pack: be more precise in parsing v2 response
Josh Steadmon (4):
fuzz: add basic fuzz testing target.
fuzz: add fuzz testing for packfile indices.
archive: initialize archivers earlier
Makefile: use FUZZ_CXXFLAGS for linking fuzzers
Joshua Watt (1):
send-email: explicitly disable authentication
Junio C Hamano (34):
Revert "doc/Makefile: drop doc-diff worktree and temporary files on "make clean""
Initial batch post 2.19
Second batch post 2.19
Git 2.14.5
Git 2.15.3
Git 2.16.5
Git 2.17.2
Git 2.18.1
Git 2.19.1
t0000: do not get self-test disrupted by environment warnings
CodingGuidelines: document the API in *.h files
Declare that the next one will be named 2.20
Third batch for 2.20
rebase: fix typoes in error messages
Fourth batch for 2.20
Revert "subtree: make install targets depend on build targets"
Fifth batch for 2.20
receive: denyCurrentBranch=updateinstead should not blindly update
cocci: simplify "if (++u > 1)" to "if (u++)"
fsck: s/++i > 1/i++/
http: give curl version warnings consistently
Sixth batch for 2.20
Seventh batch for 2.20
fetch: replace string-list used as a look-up table with a hashmap
rebase: apply cocci patch
Eighth batch for 2.20
Ninth batch for 2.20
Makefile: ease dynamic-gettext-poison transition
Tenth batch for 2.20
Git 2.20-rc0
RelNotes: name the release properly
Prepare for 2.20-rc1
Git 2.19.2
Git 2.20-rc1
Karsten Blees (2):
mingw: replace MSVCRT's fstat() with a Win32-based implementation
mingw: implement nanosecond-precision file times
Loo Rong Jie (1):
win32: replace pthread_cond_*() with much simpler code
Lucas De Marchi (1):
range-diff: allow to diff files regardless of submodule config
Luke Diamand (3):
git-p4: do not fail in verbose mode for missing 'fileSize' key
git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved
git-p4: fully support unshelving changelists
Martin Ågren (9):
Doc: use `--type=bool` instead of `--bool`
git-config.txt: fix 'see: above' note
git-commit-graph.txt: fix bullet lists
git-commit-graph.txt: typeset more in monospace
git-commit-graph.txt: refer to "*commit*-graph file"
Doc: refer to the "commit-graph file" with dash
t1400: drop debug `echo` to actually execute `test`
builtin/commit-graph.c: UNLEAK variables
sequencer: break out of loop explicitly
Matthew DeVore (19):
list-objects: store common func args in struct
list-objects: refactor to process_tree_contents
list-objects: always parse trees gently
t/README: reformat Do, Don't, Keep in mind lists
Documentation: add shell guidelines
tests: standardize pipe placement
t/*: fix ordering of expected/observed arguments
tests: don't swallow Git errors upstream of pipes
t9109: don't swallow Git errors upstream of pipes
tests: order arguments to git-rev-list properly
rev-list: handle missing tree objects properly
revision: mark non-user-given objects instead
list-objects-filter: use BUG rather than die
list-objects-filter-options: do not over-strbuf_init
list-objects-filter: implement filter tree:0
filter-trees: code clean-up of tests
list-objects: support for skipping tree traversal
Documentation/git-log.txt: do not show --exclude-promisor-objects
exclude-promisor-objects: declare when option is allowed
Max Kirillov (1):
http-backend test: make empty CONTENT_LENGTH test more realistic
Michael Witten (3):
docs: typo: s/go/to/
docs: graph: remove unnecessary `graph_update()' call
docs: typo: s/isimilar/similar/
Michał Górny (6):
gpg-interface.c: detect and reject multiple signatures on commits
gpg-interface.c: use flags to determine key/signer info presence
gpg-interface.c: support getting key fingerprint via %GF format
gpg-interface.c: obtain primary key fingerprint as well
t/t7510-signed-commit.sh: Add %GP to custom format checks
t/t7510-signed-commit.sh: add signing subkey to Eris Discordia key
Mihir Mehta (1):
doc: fix a typo and clarify a sentence
Nguyễn Thái Ngọc Duy (168):
clone: report duplicate entries on case-insensitive filesystems
trace.h: support nested performance tracing
unpack-trees: add performance tracing
unpack-trees: optimize walking same trees with cache-tree
unpack-trees: reduce malloc in cache-tree walk
unpack-trees: reuse (still valid) cache-tree from src_index
unpack-trees: add missing cache invalidation
cache-tree: verify valid cache-tree in the test suite
Document update for nd/unpack-trees-with-cache-tree
bisect.c: make show_list() build again
t/helper: keep test-tool command list sorted
t/helper: merge test-dump-untracked-cache into test-tool
t/helper: merge test-pkt-line into test-tool
t/helper: merge test-parse-options into test-tool
t/helper: merge test-dump-fsmonitor into test-tool
Makefile: add a hint about TEST_BUILTINS_OBJS
config.txt: follow camelCase naming
config.txt: move fetch part out to a separate file
config.txt: move format part out to a separate file
config.txt: move gitcvs part out to a separate file
config.txt: move gui part out to a separate file
config.txt: move pull part out to a separate file
config.txt: move push part out to a separate file
config.txt: move receive part out to a separate file
config.txt: move sendemail part out to a separate file
config.txt: move sequence.editor out of "core" part
config.txt: move submodule part out to a separate file
archive.c: remove implicit dependency the_repository
status: show progress bar if refreshing the index takes too long
add: do not accept pathspec magic 'attr'
completion: support "git fetch --multiple"
read-cache.c: remove 'const' from index_has_changes()
diff.c: reduce implicit dependency on the_index
combine-diff.c: remove implicit dependency on the_index
blame.c: rename "repo" argument to "r"
diff.c: remove the_index dependency in textconv() functions
grep.c: remove implicit dependency on the_index
diff.c: remove implicit dependency on the_index
read-cache.c: remove implicit dependency on the_index
diff-lib.c: remove implicit dependency on the_index
ll-merge.c: remove implicit dependency on the_index
merge-blobs.c: remove implicit dependency on the_index
merge.c: remove implicit dependency on the_index
patch-ids.c: remove implicit dependency on the_index
sha1-file.c: remove implicit dependency on the_index
rerere.c: remove implicit dependency on the_index
userdiff.c: remove implicit dependency on the_index
line-range.c: remove implicit dependency on the_index
submodule.c: remove implicit dependency on the_index
tree-diff.c: remove implicit dependency on the_index
ws.c: remove implicit dependency on the_index
revision.c: remove implicit dependency on the_index
revision.c: reduce implicit dependency the_repository
read-cache.c: optimize reading index format v4
config.txt: correct the note about uploadpack.packObjectsHook
help -a: improve and make --verbose default
refs.c: indent with tabs, not spaces
Add a place for (not) sharing stuff between worktrees
submodule.c: remove some of the_repository references
completion: fix __gitcomp_builtin no longer consider extra options
t1300: extract and use test_cmp_config()
worktree: add per-worktree config files
refs: new ref types to make per-worktree refs visible to all worktrees
revision.c: correct a parameter name
revision.c: better error reporting on ref from different worktrees
fsck: check HEAD and reflog from other worktrees
reflog expire: cover reflog from all worktrees
Update makefile in preparation for Documentation/config/*.txt
config.txt: move advice.* to a separate file
config.txt: move core.* to a separate file
config.txt: move add.* to a separate file
config.txt: move alias.* to a separate file
config.txt: move am.* to a separate file
config.txt: move apply.* to a separate file
config.txt: move blame.* to a separate file
config.txt: move branch.* to a separate file
config.txt: move browser.* to a separate file
config.txt: move checkout.* to a separate file
config.txt: move clean.* to a separate file
config.txt: move color.* to a separate file
config.txt: move column.* to a separate file
config.txt: move commit.* to a separate file
config.txt: move credential.* to a separate file
config.txt: move completion.* to a separate file
config.txt: move diff-config.txt to config/
config.txt: move difftool.* to a separate file
config.txt: move fastimport.* to a separate file
config.txt: move fetch-config.txt to config/
config.txt: move filter.* to a separate file
config.txt: move format-config.txt to config/
config.txt: move fmt-merge-msg-config.txt to config/
config.txt: move fsck.* to a separate file
config.txt: move gc.* to a separate file
config.txt: move gitcvs-config.txt to config/
config.txt: move gitweb.* to a separate file
config.txt: move grep.* to a separate file
config.txt: move gpg.* to a separate file
config.txt: move gui-config.txt to config/
config.txt: move guitool.* to a separate file
config.txt: move help.* to a separate file
config.txt: move ssh.* to a separate file
config.txt: move http.* to a separate file
config.txt: move i18n.* to a separate file
git-imap-send.txt: move imap.* to a separate file
config.txt: move index.* to a separate file
config.txt: move init.* to a separate file
config.txt: move instaweb.* to a separate file
config.txt: move interactive.* to a separate file
config.txt: move log.* to a separate file
config.txt: move mailinfo.* to a separate file
config.txt: move mailmap.* to a separate file
config.txt: move man.* to a separate file
config.txt: move merge-config.txt to config/
config.txt: move mergetool.* to a separate file
config.txt: move notes.* to a separate file
config.txt: move pack.* to a separate file
config.txt: move pager.* to a separate file
config.txt: move pretty.* to a separate file
config.txt: move protocol.* to a separate file
config.txt: move pull-config.txt to config/
config.txt: move push-config.txt to config/
config.txt: move rebase-config.txt to config/
config.txt: move receive-config.txt to config/
config.txt: move remote.* to a separate file
config.txt: move remotes.* to a separate file
config.txt: move repack.* to a separate file
config.txt: move rerere.* to a separate file
config.txt: move reset.* to a separate file
config.txt: move sendemail-config.txt to config/
config.txt: move sequencer.* to a separate file
config.txt: move showBranch.* to a separate file
config.txt: move splitIndex.* to a separate file
config.txt: move status.* to a separate file
config.txt: move stash.* to a separate file
config.txt: move submodule.* to a separate file
config.txt: move tag.* to a separate file
config.txt: move transfer.* to a separate file
config.txt: move uploadarchive.* to a separate file
config.txt: move uploadpack.* to a separate file
config.txt: move url.* to a separate file
config.txt: move user.* to a separate file
config.txt: move versionsort.* to a separate file
config.txt: move web.* to a separate file
config.txt: move worktree.* to a separate file
config.txt: remove config/dummy.txt
thread-utils: macros to unconditionally compile pthreads API
wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
git-worktree.txt: correct linkgit command name
sequencer.c: remove a stray semicolon
tree-walk.c: fix overoptimistic inclusion in :(exclude) matching
run-command.h: include thread-utils.h instead of pthread.h
send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c
index-pack: remove #ifdef NO_PTHREADS
name-hash.c: remove #ifdef NO_PTHREADS
attr.c: remove #ifdef NO_PTHREADS
grep: remove #ifdef NO_PTHREADS
grep: clean up num_threads handling
preload-index.c: remove #ifdef NO_PTHREADS
pack-objects: remove #ifdef NO_PTHREADS
read-cache.c: remove #ifdef NO_PTHREADS
read-cache.c: reduce branching based on HAVE_THREADS
read-cache.c: initialize copy_len to shut up gcc 8
Clean up pthread_create() error handling
completion: use __gitcomp_builtin for format-patch
build: fix broken command-list.h generation with core.autocrlf
format-patch: respect --stat in cover letter's diffstat
doc: move extensions.worktreeConfig to the right place
clone: fix colliding file detection on APFS
Nickolai Belakovski (2):
worktree: update documentation for lock_reason and lock_reason_valid
worktree: rename is_worktree_locked to worktree_lock_reason
Noam Postavsky (1):
log: fix coloring of certain octopus merge shapes
Olga Telezhnaya (3):
ref-filter: free memory from used_atom
ls-remote: release memory instead of UNLEAK
ref-filter: free item->value and item->value->s
Phillip Wood (11):
diff: fix --color-moved-ws=allow-indentation-change
diff --color-moved-ws: fix double free crash
diff --color-moved-ws: fix out of bounds string access
diff --color-moved-ws: fix a memory leak
diff --color-moved-ws: fix another memory leak
diff --color-moved: fix a memory leak
am: don't die in read_author_script()
am: improve author-script error reporting
am: rename read_author_script()
add read_author_script() to libgit
sequencer: use read_author_script()
Pratik Karki (46):
rebase: start implementing it as a builtin
rebase: refactor common shell functions into their own file
builtin/rebase: support running "git rebase <upstream>"
builtin rebase: support --onto
builtin rebase: support `git rebase --onto A...B`
builtin rebase: handle the pre-rebase hook and --no-verify
builtin rebase: support --quiet
builtin rebase: support the `verbose` and `diffstat` options
builtin rebase: require a clean worktree
builtin rebase: try to fast forward when possible
builtin rebase: support --force-rebase
builtin rebase: start a new rebase only if none is in progress
builtin rebase: only store fully-qualified refs in `options.head_name`
builtin rebase: support `git rebase <upstream> <switch-to>`
builtin rebase: support --continue
builtin rebase: support --skip
builtin rebase: support --abort
builtin rebase: support --quit
builtin rebase: support --edit-todo and --show-current-patch
builtin rebase: actions require a rebase in progress
builtin rebase: stop if `git am` is in progress
builtin rebase: allow selecting the rebase "backend"
builtin rebase: support --signoff
builtin rebase: support --rerere-autoupdate
builtin rebase: support --committer-date-is-author-date
builtin rebase: support `ignore-whitespace` option
builtin rebase: support `ignore-date` option
builtin rebase: support `keep-empty` option
builtin rebase: support `--autosquash`
builtin rebase: support `--gpg-sign` option
builtin rebase: support `-C` and `--whitespace=<type>`
builtin rebase: support `--autostash` option
builtin rebase: support `--exec`
builtin rebase: support `--allow-empty-message` option
builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
merge-base --fork-point: extract libified function
builtin rebase: support `fork-point` option
builtin rebase: add support for custom merge strategies
builtin rebase: support --root
builtin rebase: optionally auto-detect the upstream
builtin rebase: optionally pass custom reflogs to reset_head()
builtin rebase: fast-forward to onto if it is a proper descendant
builtin rebase: show progress when connected to a terminal
builtin rebase: use no-op editor when interactive is "implied"
builtin rebase: error out on incompatible option/mode combinations
rebase: default to using the builtin rebase
Rafael Ascensão (2):
refs: show --exclude failure with --branches/tags/remotes=glob
refs: fix some exclude patterns being ignored
Ralf Thielow (1):
git-rebase.sh: fix typos in error messages
Ramsay Jones (12):
Makefile: add a hdr-check target
json-writer.h: add missing include (hdr-check)
ewah/ewok_rlw.h: add missing include (hdr-check)
refs/ref-cache.h: add missing declarations (hdr-check)
refs/packed-backend.h: add missing declaration (hdr-check)
refs/refs-internal.h: add missing declarations (hdr-check)
midx.h: add missing forward declarations (hdr-check)
delta-islands.h: add missing forward declarations (hdr-check)
headers: normalize the spelling of some header guards
fetch-object.h: add missing declaration (hdr-check)
ewok_rlw.h: add missing 'inline' to function definition
commit-reach.h: add missing declarations (hdr-check)
Rasmus Villemoes (6):
help: redirect to aliased commands for "git cmd --help"
git.c: handle_alias: prepend alias info when first argument is -h
git-help.txt: document "git help cmd" vs "git cmd --help" for aliases
Documentation/git-send-email.txt: style fixes
send-email: only consider lines containing @ or <> for automatic Cc'ing
send-email: also pick up cc addresses from -by trailers
René Scharfe (12):
mailinfo: support format=flowed
fsck: add a performance test for skipList
fsck: use strbuf_getline() to read skiplist file
fsck: use oidset instead of oid_array for skipList
sequencer: use return value of oidset_insert()
grep: add -r/--[no-]recursive
fetch-pack: factor out is_unmatched_ref()
fetch-pack: load tip_oids eagerly iff needed
khash: factor out kh_release_*
oidset: use khash
oidset: uninline oidset_init()
commit-reach: fix cast in compare_commits_by_gen()
Roger Strain (1):
subtree: performance improvement for finding unexpected parent commits
SZEDER Gábor (17):
t1404: increase core.packedRefsTimeout to avoid occasional test failure
Documentation/git.txt: clarify that GIT_TRACE=/path appends
t3701-add-interactive: tighten the check of trace output
t1700-split-index: drop unnecessary 'grep'
t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
t1700-split-index: document why FSMONITOR is disabled in this test script
split-index: add tests to demonstrate the racy split index problem
t1700-split-index: date back files to avoid racy situations
split-index: count the number of deleted entries
split-index: don't compare cached data of entries already marked for split index
split-index: smudge and add racily clean cache entries to split index
split-index: BUG() when cache entry refers to non-existing shared entry
object_id.cocci: match only expressions of type 'struct object_id'
test-lib: introduce the '-V' short option for '--verbose-log'
travis-ci: install packages in 'ci/install-dependencies.sh'
coccicheck: introduce 'pending' semantic patches
ref-filter: don't look for objects when outside of a repository
Sam McKelvie (1):
rev-parse: --show-superproject-working-tree should work during a merge
Saulius Gurklys (1):
doc: fix small typo in git show-branch
Sebastian Staudt (1):
travis-ci: no longer use containers
Shulhan (1):
builtin/remote: quote remote name on error to display empty name
Stefan Beller (25):
git-submodule.sh: align error reporting for update mode to use path
git-submodule.sh: rename unused variables
builtin/submodule--helper: factor out submodule updating
builtin/submodule--helper: store update_clone information in a struct
builtin/submodule--helper: factor out method to update a single submodule
submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree
submodule--helper: introduce new update-module-mode helper
test_decode_color: understand FAINT and ITALIC
t3206: add color test for range-diff --dual-color
diff.c: simplify caller of emit_line_0
diff.c: reorder arguments for emit_line_ws_markup
diff.c: add set_sign to emit_line_0
diff: use emit_line_0 once per line
diff.c: omit check for line prefix in emit_line_0
diff.c: rewrite emit_line_0 more understandably
diff.c: add --output-indicator-{new, old, context}
range-diff: make use of different output indicators
range-diff: indent special lines as context
refs.c: migrate internal ref iteration to pass thru repository argument
refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
string-list: remove unused function print_string_list
strbuf.h: format according to coding guidelines
diff.c: pass sign_index to emit_line_ws_markup
submodule helper: convert relative URL to absolute URL if needed
builtin/submodule--helper: remove debugging leftover tracing
Stephen P. Smith (10):
wt-status.c: move has_unmerged earlier in the file
wt-status: rename commitable to committable
t7501: add test of "commit --dry-run --short"
wt-status.c: set the committable flag in the collect phase
roll wt_status_state into wt_status and populate in the collect phase
t2000: rename and combine checkout clash tests
t7509: cleanup description and filename
t7502: rename commit test script to comply with naming convention
t7500: rename commit tests script to comply with naming convention
t7501: rename commit test to comply with naming convention
Steve Hoelzer (1):
poll: use GetTickCount64() to avoid wrap-around issues
Steven Fernandez (1):
git-completion.bash: add completion for stash list
Strain, Roger L (4):
subtree: refactor split of a commit into standalone method
subtree: make --ignore-joins pay attention to adds
subtree: use commits before rejoins for splits
subtree: improve decision on merges kept in split
Tao Qingyun (3):
refs: docstring typo
builtin/branch.c: remove useless branch_get
branch: trivial style fix
Taylor Blau (4):
transport.c: extract 'fill_alternate_refs_command'
transport.c: introduce core.alternateRefsCommand
transport.c: introduce core.alternateRefsPrefixes
Documentation/config.txt: fix typo in core.alternateRefsCommand
Thomas Gummerer (17):
rerere: unify error messages when read_cache fails
rerere: lowercase error messages
rerere: wrap paths in output in sq
rerere: mark strings for translation
rerere: add documentation for conflict normalization
rerere: fix crash with files rerere can't handle
rerere: only return whether a path has conflicts or not
rerere: factor out handle_conflict function
rerere: return strbuf from handle path
rerere: teach rerere to handle nested conflicts
rerere: recalculate conflict ID when unresolved conflict is committed
rerere: mention caveat about unmatched conflict markers
rerere: add note about files with existing conflict markers
.gitattributes: add conflict-marker-size for relevant files
linear-assignment: fix potential out of bounds memory access
t5551: move setup code inside test_expect blocks
t5551: compare sorted cookies files
Tim Schumacher (4):
Documentation/Makefile: make manpage-base-url.xsl generation quieter
alias: add support for aliases of an alias
alias: show the call history when an alias is looping
t0014: introduce an alias testing suite
Todd Zullinger (1):
Documentation: build technical/multi-pack-index
Torsten Bögershausen (4):
Make git_check_attr() a void function
path.c: char is not (always) signed
Upcast size_t variables to uintmax_t when printing
remote-curl.c: xcurl_off_t is not portable (on 32 bit platfoms)
Uwe Kleine-König (1):
howto/using-merge-subtree: mention --allow-unrelated-histories
brian m. carlson (26):
t: add test functions to translate hash-related values
t0000: use hash translation table
t0000: update tests for SHA-256
t0002: abstract away SHA-1 specific constants
t0064: make hash size independent
t1006: make hash size independent
t1400: switch hard-coded object ID to variable
t1405: make hash size independent
t1406: make hash-size independent
t1407: make hash size independent
editorconfig: provide editor settings for Git developers
editorconfig: indicate settings should be kept in sync
pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
builtin/repack: replace hard-coded constants
builtin/mktree: remove hard-coded constant
builtin/fetch-pack: remove constants with parse_oid_hex
pack-revindex: express constants in terms of the_hash_algo
packfile: express constants in terms of the_hash_algo
refs/packed-backend: express constants using the_hash_algo
upload-pack: express constants in terms of the_hash_algo
transport: use parse_oid_hex instead of a constant
tag: express constant in terms of the_hash_algo
apply: replace hard-coded constants
apply: rename new_sha1_prefix and old_sha1_prefix
submodule: make zero-oid comparison hash function agnostic
rerere: convert to use the_hash_algo
Ævar Arnfjörð Bjarmason (33):
fetch: change "branch" to "reference" in --force -h output
push tests: make use of unused $1 in test description
push tests: use spaces in interpolated string
fetch tests: add a test for clobbering tag behavior
push doc: remove confusing mention of remote merger
push doc: move mention of "tag <tag>" later in the prose
push doc: correct lies about how push refspecs work
fetch: document local ref updates with/without --force
fetch: stop clobbering existing tags without --force
fsck tests: setup of bogus commit object
fsck tests: add a test for no skipList input
fsck: document and test sorted skipList input
fsck: document and test commented & empty line skipList input
fsck: document that skipList input must be unabbreviated
fsck: add a performance test
fsck: support comments & empty lines in skipList
commit-graph write: add progress output
commit-graph verify: add progress output
config doc: add missing list separator for checkout.optimizeNewBranch
push doc: add spacing between two words
fetch doc: correct grammar in --force docs
gc: fix regression in 7b0f229222 impacting --quiet
gc doc: mention the commit-graph in the intro
pack-objects test: modernize style
pack-objects tests: don't leave test .git corrupt at end
index-pack tests: don't leave test repo dirty at end
i18n: make GETTEXT_POISON a runtime option
range-diff doc: add a section about output stability
range-diff: fix regression in passing along diff options
range-diff: make diff option behavior (e.g. --stat) consistent
rebase doc: document rebase.useBuiltin
tests: add a special setup where rebase.useBuiltin is off
read-cache: make the split index obey umask settings
Đoàn Trần Công Danh (1):
git-compat-util: prefer poll.h to sys/poll.h
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.20.0-rc0
@ 2018-11-18 14:20 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-11-18 14:20 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.20.0-rc0 is now available for
testing at the usual places. It is comprised of 887 non-merge
commits since v2.19.0, contributed by 71 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.20.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.19.0 are as follows.
Welcome to the Git development community!
Aaron Lindsay, Alexander Pyhalov, Anton Serbulov, Brendan
Forster, Carlo Marcelo Arenas Belón, Daniels Umanovskis, David
Zych, Frederick Eaton, James Knight, Jann Horn, Joshua Watt,
Loo Rong Jie, Lucas De Marchi, Matthew DeVore, Mihir Mehta,
Nickolai Belakovski, Roger Strain, Sam McKelvie, Saulius Gurklys,
Shulhan, Steven Fernandez, Strain, Roger L, and Tim Schumacher.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alban Gruin, Andreas Gruenbacher,
Andreas Heiduk, Antonio Ospite, Ben Peart, Brandon Williams,
brian m. carlson, Christian Couder, Christian Hesse, Denton Liu,
Derrick Stolee, Elijah Newren, Eric Sunshine, Jeff Hostetler,
Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Josh Steadmon, Junio C Hamano, Karsten Blees,
Luke Diamand, Martin Ågren, Max Kirillov, Michael Witten,
Michał Górny, Nguyễn Thái Ngọc Duy, Noam Postavsky,
Olga Telezhnaya, Phillip Wood, Pratik Karki, Rafael Ascensão,
Ralf Thielow, Ramsay Jones, Rasmus Villemoes, René Scharfe,
Sebastian Staudt, Stefan Beller, Stephen P. Smith, Steve Hoelzer,
SZEDER Gábor, Tao Qingyun, Taylor Blau, Thomas Gummerer,
Torsten Bögershausen, and Uwe Kleine-König.
----------------------------------------------------------------
Git Release Notes
=========================
Backward Compatibility Notes
----------------------------
* "git branch -l <foo>" used to be a way to ask a reflog to be
created while creating a new branch, but that is no longer the
case. It is a short-hand for "git branch --list <foo>" now.
* "git push" into refs/tags/* hierarchy is rejected without getting
forced, but "git fetch" (misguidedly) used the "fast forwarding"
rule used for the refs/heads/* hierarchy; this has been corrected,
which means some fetches of tags that did not fail with older
version of Git will fail without "--force" with this version.
* "git help -a" now gives verbose output (same as "git help -av").
Those who want the old output may say "git help --no-verbose -a"..
* "git cpn --help", when "cpn" is an alias to, say, "cherry-pick -n",
reported only the alias expansion of "cpn" in earlier versions of
Git. It now runs "git cherry-pick --help" to show the manual page
of the command, while sending the alias expansion to the standard
error stream.
* "git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by". This is a backward-incompatible
change. Adding "--suppress-cc=misc-by" on the command line, or
setting sendemail.suppresscc configuration variable to "misc-by",
can be used to disable this behaviour.
Updates since v2.19
-------------------
UI, Workflows & Features
* Running "git clone" against a project that contain two files with
pathnames that differ only in cases on a case insensitive
filesystem would result in one of the files lost because the
underlying filesystem is incapable of holding both at the same
time. An attempt is made to detect such a case and warn.
* "git checkout -b newbranch [HEAD]" should not have to do as much as
checking out a commit different from HEAD. An attempt is made to
optimize this special case.
* "git rev-list --stdin </dev/null" used to be an error; it now shows
no output without an error. "git rev-list --stdin --default HEAD"
still falls back to the given default when nothing is given on the
standard input.
* Lift code from GitHub to restrict delta computation so that an
object that exists in one fork is not made into a delta against
another object that does not appear in the same forked repository.
* "git format-patch" learned new "--interdiff" and "--range-diff"
options to explain the difference between this version and the
previous attempt in the cover letter (or after the three-dashes as
a comment).
* "git mailinfo" used in "git am" learned to make a best-effort
recovery of a patch corrupted by MUA that sends text/plain with
format=flawed option.
(merge 3aa4d81f88 rs/mailinfo-format-flowed later to maint).
* The rules used by "git push" and "git fetch" to determine if a ref
can or cannot be updated were inconsistent; specifically, fetching
to update existing tags were allowed even though tags are supposed
to be unmoving anchoring points. "git fetch" was taught to forbid
updates to existing tags without the "--force" option.
* "git multi-pack-index" learned to detect corruption in the .midx
file it uses, and this feature has been integrated into "git fsck".
* Generation of (experimental) commit-graph files have so far been
fairly silent, even though it takes noticeable amount of time in a
meaningfully large repository. The users will now see progress
output.
* The minimum version of Windows supported by Windows port of Git is
now set to Vista.
* The completion script (in contrib/) learned to complete a handful of
options "git stash list" command takes.
* The completion script (in contrib/) learned that "git fetch
--multiple" only takes remote names as arguments and no refspecs.
* "git status" learns to show progress bar when refreshing the index
takes a long time.
(merge ae9af12287 nd/status-refresh-progress later to maint).
* "git help -a" and "git help -av" give different pieces of
information, and generally the "verbose" version is more friendly
to the new users. "git help -a" by default now uses the more
verbose output (with "--no-verbose", you can go back to the
original). Also "git help -av" now lists aliases and external
commands, which it did not used to.
* Unlike "grep", "git grep" by default recurses to the whole tree.
The command learned "git grep --recursive" option, so that "git
grep --no-recursive" can serve as a synonym to setting the
max-depth to 0.
* When pushing into a repository that borrows its objects from an
alternate object store, "git receive-pack" that responds to the
push request on the other side lists the tips of refs in the
alternate to reduce the amount of objects transferred. This
sometimes is detrimental when the number of refs in the alternate
is absurdly large, in which case the bandwidth saved in potentially
fewer objects transferred is wasted in excessively large ref
advertisement. The alternate refs that are advertised are now
configurable with a pair of configuration variables.
* "git cmd --help" when "cmd" is aliased used to only say "cmd is
aliased to ...". Now it shows that to the standard error stream
and runs "git $cmd --help" where $cmd is the first word of the
alias expansion.
* The documentation of "git gc" has been updated to mention that it
is no longer limited to "pruning away crufts" but also updates
ancillary files like commit-graph as a part of repository
optimization.
* "git p4 unshelve" improvements.
* The logic to select the default user name and e-mail on Windows has
been improved.
(merge 501afcb8b0 js/mingw-default-ident later to maint).
* The "rev-list --filter" feature learned to exclude all trees via
"tree:0" filter.
* "git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by"; --suppress-cc=misc-by on the
command line, or setting sendemail.suppresscc configuration
variable to "misc-by", can be used to disable this behaviour.
* Developer builds now uses -Wunused-function compilation option.
* One of our CI tests to run with "unusual/experimental/random"
settings now also uses commit-graph and midx.
* "git mergetool" learned to take the "--[no-]gui" option, just like
"git difftool" does.
* "git rebase -i" learned a new insn, 'break', that the user can
insert in the to-do list. Upon hitting it, the command returns
control back to the user.
* New "--pretty=format:" placeholders %GF and %GP that show the GPG
key fingerprints have been invented.
* On platforms with recent cURL library, http.sslBackend configuration
variable can be used to choose a different SSL backend at runtime.
The Windows port uses this mechanism to switch between OpenSSL and
Secure Channel while talking over the HTTPS protocol.
* "git send-email" learned to disable SMTP authentication via the
"--smtp-auth=none" option, even when the smtp username is given
(which turns the authentication on by default).
* A fourth class of configuration files (in addition to the
traditional "system wide", "per user in the $HOME directory" and
"per repository in the $GIT_DIR/config") has been introduced so
that different worktrees that share the same repository (hence the
same $GIT_DIR/config file) can use different customization.
* A pattern with '**' that does not have a slash on either side used
to be an invalid one, but the code now treats such double-asterisks
the same way as two normal asterisks that happen to be adjacent to
each other.
(merge e5bbe09e88 nd/wildmatch-double-asterisk later to maint).
* The "--no-patch" option, which can be used to get a high-level
overview without the actual line-by-line patch difference shown, of
the "range-diff" command was earlier broken, which has been
corrected.
* The recently merged "rebase in C" has an escape hatch to use the
scripted version when necessary, but it hasn't been documented,
which has been corrected.
Performance, Internal Implementation, Development Support etc.
* When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
* "git submodule update" is getting rewritten piece-by-piece into C.
* The code for computing history reachability has been shuffled,
obtained a bunch of new tests to cover them, and then being
improved.
* The unpack_trees() API used in checking out a branch and merging
walks one or more trees along with the index. When the cache-tree
in the index tells us that we are walking a tree whose flattened
contents is known (i.e. matches a span in the index), as linearly
scanning a span in the index is much more efficient than having to
open tree objects recursively and listing their entries, the walk
can be optimized, which has been done.
* When creating a thin pack, which allows objects to be made into a
delta against another object that is not in the resulting pack but
is known to be present on the receiving end, the code learned to
take advantage of the reachability bitmap; this allows the server
to send a delta against a base beyond the "boundary" commit.
* spatch transformation to replace boolean uses of !hashcmp() to
newly introduced oideq() is added, and applied, to regain
performance lost due to support of multiple hash algorithms.
* Fix a bug in which the same path could be registered under multiple
worktree entries if the path was missing (for instance, was removed
manually). Also, as a convenience, expand the number of cases in
which --force is applicable.
* Split Documentation/config.txt for easier maintenance.
(merge 6014363f0b nd/config-split later to maint).
* Test helper binaries clean-up.
(merge c9a1f4161f nd/test-tool later to maint).
* Various tests have been updated to make it easier to swap the
hash function used for object identification.
(merge ae0c89d41b bc/hash-independent-tests later to maint).
* Update fsck.skipList implementation and documentation.
(merge 371a655074 ab/fsck-skiplist later to maint).
* An alias that expands to another alias has so far been forbidden,
but now it is allowed to create such an alias.
* Various test scripts have been updated for style and also correct
handling of exit status of various commands.
* "gc --auto" ended up calling exit(-1) upon error, which has been
corrected to use exit(1). Also the error reporting behaviour when
daemonized has been updated to exit with zero status when stopping
due to a previously discovered error (which implies there is no
point running gc to improve the situation); we used to exit with
failure in such a case.
* Various codepaths in the core-ish part learned to work on an
arbitrary in-core index structure, not necessarily the default
instance "the_index".
(merge b3c7eef9b0 nd/the-index later to maint).
* Code clean-up in the internal machinery used by "git status" and
"git commit --dry-run".
(merge 73ba5d78b4 ss/wt-status-committable later to maint).
* Some environment variables that control the runtime options of Git
used during tests are getting renamed for consistency.
(merge 4231d1ba99 bp/rename-test-env-var later to maint).
* A new extension to the index file has been introduced, which allows
the index file to be read in parallel for performance.
* The oidset API was built on top of the oidmap API which in turn is
on the hashmap API. Replace the implementation to build on top of
the khash API and gain performance.
* Over some transports, fetching objects with an exact commit object
name can be done without first seeing the ref advertisements. The
code has been optimized to exploit this.
* In a partial clone that will lazily be hydrated from the
originating repository, we generally want to avoid "does this
object exist (locally)?" on objects that we deliberately omitted
when we created the clone. The cache-tree codepath (which is used
to write a tree object out of the index) however insisted that the
object exists, even for paths that are outside of the partial
checkout area. The code has been updated to avoid such a check.
* To help developers, an EditorConfig file that attempts to follow
the project convention has been added.
(merge b548d698a0 bc/editorconfig later to maint).
* The result of coverage test can be combined with "git blame" to
check the test coverage of code introduced recently with a new
'coverage-diff' tool (in contrib/).
(merge 783faedd65 ds/coverage-diff later to maint).
* An experiment to fuzz test a few areas, hopefully we can gain more
coverage to various areas.
* More codepaths are moving away from hardcoded hash sizes.
* The way the Windows port figures out the current directory has been
improved.
* The way DLLs are loaded on the Windows port has been improved.
* Some tests have been reorganized and renamed; "ls t/" now gives a
better overview of what is tested for these scripts than before.
* "git rebase" and "git rebase -i" have been reimplemented in C.
* Windows port learned to use nano-second resolution file timestamps.
* The overly large Documentation/config.txt file have been split into
million little pieces. This potentially allows each individual piece
included into the manual page of the command it affects more easily.
* Replace three string-list instances used as look-up tables in "git
fetch" with hashmaps.
* Unify code to read the author-script used in "git am" and the
commands that use the sequencer machinery, e.g. "git rebase -i".
* In preparation to the day when we can deprecate and remove the
"rebase -p", make sure we can skip and later remove tests for
it.
* The history traversal used to implement the tag-following has been
optimized by introducing a new helper.
* The helper function to refresh the cached stat information in the
in-core index has learned to perform the lstat() part of the
operation in parallel on multi-core platforms.
* The code to traverse objects for reachability, used to decide what
objects are unreferenced and expendable, have been taught to also
consider per-worktree refs of other worktrees as starting points to
prevent data loss.
* "git add" needs to internally run "diff-files" equivalent, and the
codepath learned the same optimization as "diff-files" has to run
lstat(2) in parallel to find which paths have been updated in the
working tree.
* The procedure to install dependencies before testing at Travis CI
is getting revamped for both simplicity and flexibility, taking
advantage of the recent move to the vm-based environment.
* The support for format-patch (and send-email) by the command-line
completion script (in contrib/) has been simplified a bit.
* The revision walker machinery learned to take advantage of the
commit generation numbers stored in the commit-graph file.
* The codebase has been cleaned up to reduce "#ifndef NO_PTHREADS".
* The way -lcurl library gets linked has been simplified by taking
advantage of the fact that we can just ask curl-config command how.
* Various functions have been audited for "-Wunused-parameter" warnings
and bugs in them got fixed.
* A sanity check for start-up sequence has been added in the config
API codepath.
* The build procedure to link for fuzzing test has been made
customizable with a new Makefile variable.
* The way "git rebase" parses and forwards the command line options
meant for underlying "git am" has been revamped, which fixed for
options with parameters that were not passed correctly.
Fixes since v2.19
-----------------
* "git interpret-trailers" and its underlying machinery had a buggy
code that attempted to ignore patch text after commit log message,
which triggered in various codepaths that will always get the log
message alone and never get such an input.
(merge 66e83d9b41 jk/trailer-fixes later to maint).
* Malformed or crafted data in packstream can make our code attempt
to read or write past the allocated buffer and abort, instead of
reporting an error, which has been fixed.
* "git rebase -i" did not clear the state files correctly when a run
of "squash/fixup" is aborted and then the user manually amended the
commit instead, which has been corrected.
(merge 10d2f35436 js/rebase-i-autosquash-fix later to maint).
* When fsmonitor is in use, after operation on submodules updates
.gitmodules, we lost track of the fact that we did so and relied on
stale fsmonitor data.
(merge 43f1180814 bp/mv-submodules-with-fsmonitor later to maint).
* Fix for a long-standing bug that leaves the index file corrupt when
it shrinks during a partial commit.
(merge 6c003d6ffb jk/reopen-tempfile-truncate later to maint).
* Further fix for O_APPEND emulation on Windows
(merge eeaf7ddac7 js/mingw-o-append later to maint).
* A corner case bugfix in "git rerere" code.
(merge ad2bf0d9b4 en/rerere-multi-stage-1-fix later to maint).
* "git add ':(attr:foo)'" is not supported and is supposed to be
rejected while the command line arguments are parsed, but we fail
to reject such a command line upfront.
(merge 84d938b732 nd/attr-pathspec-fix later to maint).
* Recent update broke the reachability algorithm when refs (e.g.
tags) that point at objects that are not commit were involved,
which has been fixed.
* "git rebase" etc. in Git 2.19 fails to abort when given an empty
commit log message as result of editing, which has been corrected.
(merge a3ec9eaf38 en/sequencer-empty-edit-result-aborts later to maint).
* The code to backfill objects in lazily cloned repository did not
work correctly, which has been corrected.
(merge e68302011c jt/lazy-object-fetch-fix later to maint).
* Update error messages given by "git remote" and make them consistent.
(merge 5025425dff ms/remote-error-message-update later to maint).
* "git update-ref" learned to make both "--no-deref" and "--stdin"
work at the same time.
(merge d345e9fbe7 en/update-ref-no-deref-stdin later to maint).
* Recently added "range-diff" had a corner-case bug to cause it
segfault, which has been corrected.
(merge e467a90c7a tg/range-diff-corner-case-fix later to maint).
* The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship. Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.
(merge 829a321569 ds/commit-graph-with-grafts later to maint).
* The mailmap file update.
(merge 255eb03edf jn/mailmap-update later to maint).
* The code in "git status" sometimes hit an assertion failure. This
was caused by a structure that was reused without cleaning the data
used for the first run, which has been corrected.
(merge 3e73cc62c0 en/status-multiple-renames-to-the-same-target-fix later to maint).
* "git fetch $repo $object" in a partial clone did not correctly
fetch the asked-for object that is referenced by an object in
promisor packfile, which has been fixed.
* A corner-case bugfix.
(merge c5cbb27cb5 sm/show-superproject-while-conflicted later to maint).
* Various fixes to "diff --color-moved-ws".
* A partial clone that is configured to lazily fetch missing objects
will on-demand issue a "git fetch" request to the originating
repository to fill not-yet-obtained objects. The request has been
optimized for requesting a tree object (and not the leaf blob
objects contained in it) by telling the originating repository that
no blobs are needed.
(merge 4c7f9567ea jt/non-blob-lazy-fetch later to maint).
* The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.
(merge 4c490f3d32 sg/split-index-racefix later to maint).
* "git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.
(merge 04005834ed np/log-graph-octopus-fix later to maint).
* "git range-diff" did not work well when the compared ranges had
changes in submodules and the "--submodule=log" was used.
* The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.
(merge f67b980771 jk/run-command-notdot later to maint).
* A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.
(merge 34204c8166 js/pack-objects-mutex-init-fix later to maint).
* Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.
(merge ffd04e92e2 js/diff-notice-has-drive-prefix later to maint).
* The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.
(merge b072a25fad jc/receive-deny-current-branch-fix later to maint).
* The logic to determine the archive type "git archive" uses did not
correctly kick in for "git archive --remote", which has been
corrected.
* "git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.
(merge 5dcfbf564c js/shallow-and-fetch-prune later to maint).
* Some codepaths failed to form a proper URL when .gitmodules record
the URL to a submodule repository as relative to the repository of
superproject, which has been corrected.
(merge e0a862fdaf sb/submodule-url-to-absolute later to maint).
* "git fetch" over protocol v2 into a shallow repository failed to
fetch full history behind a new tip of history that was diverged
before the cut-off point of the history that was previously fetched
shallowly.
* The command line completion machinery (in contrib/) has been
updated to allow the completion script to tweak the list of options
that are reported by the parse-options machinery correctly.
(merge 276b49ff34 nd/completion-negation later to maint).
* Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense. This has been corrected.
(merge 669b1d2aae md/exclude-promisor-objects-fix later to maint).
* The "container" mode of TravisCI is going away. Our .travis.yml
file is getting prepared for the transition.
(merge 32ee384be8 ss/travis-ci-force-vm-mode later to maint).
* Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.
(merge a5f52c6dab sg/test-verbose-log later to maint).
* A regression in Git 2.12 era made "git fsck" fall into an infinite
loop while processing truncated loose objects.
(merge 18ad13e5b2 jk/detect-truncated-zlib-input later to maint).
* "git ls-remote $there foo" was broken by recent update for the
protocol v2 and stopped showing refs that match 'foo' that are not
refs/{heads,tags}/foo, which has been fixed.
(merge 6a139cdd74 jk/proto-v2-ref-prefix-fix later to maint).
* Additional comment on a tricky piece of code to help developers.
(merge 0afbe3e806 jk/stream-pack-non-delta-clarification later to maint).
* A couple of tests used to leave the repository in a state that is
deliberately corrupt, which have been corrected.
(merge aa984dbe5e ab/pack-tests-cleanup later to maint).
* The submodule support has been updated to read from the blob at
HEAD:.gitmodules when the .gitmodules file is missing from the
working tree.
(merge 2b1257e463 ao/submodule-wo-gitmodules-checked-out later to maint).
* "git fetch" was a bit loose in parsing responses from the other side
when talking over the protocol v2.
* "git rev-parse --exclude=* --branches --branches" (i.e. first
saying "add only things that do not match '*' out of all branches"
and then adding all branches, without any exclusion this time")
worked as expected, but "--exclude=* --all --all" did not work the
same way, which has been fixed.
(merge 5221048092 ag/rev-parse-all-exclude-fix later to maint).
* "git send-email --transfer-encoding=..." in recent versions of Git
sometimes produced an empty "Content-Transfer-Encoding:" header,
which has been corrected.
(merge 3c88e46f1a al/send-email-auto-cte-fixup later to maint).
* The interface into "xdiff" library used to discover the offset and
size of a generated patch hunk by first formatting it into the
textual hunk header "@@ -n,m +k,l @@" and then parsing the numbers
out. A new interface has been introduced to allow callers a more
direct access to them.
(merge 5eade0746e jk/xdiff-interface later to maint).
* Pathspec matching against a tree object were buggy when negative
pathspec elements were involved, which has been fixed.
(merge b7845cebc0 nd/tree-walk-path-exclusion later to maint).
* "git merge" and "git pull" that merges into an unborn branch used
to completely ignore "--verify-signatures", which has been
corrected.
(merge 01a31f3bca jk/verify-sig-merge-into-void later to maint).
* "git rebase --autostash" did not correctly re-attach the HEAD at times.
* "rev-parse --exclude=<pattern> --branches=<pattern>" etc. did not
quite work, which has been corrected.
(merge 9ab9b5df0e ra/rev-parse-exclude-glob later to maint).
* When editing a patch in a "git add -i" session, a hunk could be
made to no-op. The "git apply" program used to reject a patch with
such a no-op hunk to catch user mistakes, but it is now updated to
explicitly allow a no-op hunk in an edited patch.
(merge 22cb3835b9 js/apply-recount-allow-noop later to maint).
* The URL to an MSDN page in a comment has been updated.
(merge 2ef2ae2917 js/mingw-msdn-url later to maint).
* "git ls-remote --sort=<thing>" can feed an object that is not yet
available into the comparison machinery and segfault, which has
been corrected to check such a request upfront and reject it.
* When "git bundle" aborts due to an empty commit ranges
(i.e. resulting in an empty pack), it left a file descriptor to an
lockfile open, which resulted in leftover lockfile on Windows where
you cannot remove a file with an open file descriptor. This has
been corrected.
(merge 2c8ee1f53c jk/close-duped-fd-before-unlock-for-bundle later to maint).
* Code cleanup, docfix, build fix, etc.
(merge 96a7501aad ts/doc-build-manpage-xsl-quietly later to maint).
(merge b9b07efdb2 tg/conflict-marker-size later to maint).
(merge fa0aeea770 sg/doc-trace-appends later to maint).
(merge d64324cb60 tb/void-check-attr later to maint).
(merge c3b9bc94b9 en/double-semicolon-fix later to maint).
(merge 79336116f5 sg/t3701-tighten-trace later to maint).
(merge 801fa63a90 jk/dev-build-format-security later to maint).
(merge 0597dd62ba sb/string-list-remove-unused later to maint).
(merge db2d36fad8 bw/protocol-v2 later to maint).
(merge 456d7cd3a9 sg/split-index-test later to maint).
(merge 7b6057c852 tq/refs-internal-comment-fix later to maint).
(merge 29e8dc50ad tg/t5551-with-curl-7.61.1 later to maint).
(merge 55f6bce2c9 fe/doc-updates later to maint).
(merge 7987d2232d jk/check-everything-connected-is-long-gone later to maint).
(merge 4ba3c9be47 dz/credential-doc-url-matching-rules later to maint).
(merge 4c399442f7 ma/commit-graph-docs later to maint).
(merge fc0503b04e ma/t1400-undebug-test later to maint).
(merge e56b53553a nd/packobjectshook-doc-fix later to maint).
(merge c56170a0c4 ma/mailing-list-address-in-git-help later to maint).
(merge 6e8fc70fce rs/sequencer-oidset-insert-avoids-dups later to maint).
(merge ad0b8f9575 mw/doc-typofixes later to maint).
(merge d9f079ad1a jc/how-to-document-api later to maint).
(merge b1492bf315 ma/t7005-bash-workaround later to maint).
(merge ac1f98a0df du/rev-parse-is-plumbing later to maint).
(merge ca8ed443a5 mm/doc-no-dashed-git later to maint).
(merge ce366a8144 du/get-tar-commit-id-is-plumbing later to maint).
(merge 61018fe9e0 du/cherry-is-plumbing later to maint).
(merge c7e5fe79b9 sb/strbuf-h-update later to maint).
(merge 8d2008196b tq/branch-create-wo-branch-get later to maint).
(merge 2e3c894f4b tq/branch-style-fix later to maint).
(merge c5d844af9c sg/doc-show-branch-typofix later to maint).
(merge 081d91618b ah/doc-updates later to maint).
(merge b84c783882 jc/cocci-preincr later to maint).
(merge 5e495f8122 uk/merge-subtree-doc-update later to maint).
(merge aaaa881822 jk/uploadpack-packobjectshook-fix later to maint).
(merge 3063477445 tb/char-may-be-unsigned later to maint).
(merge 8c64bc9420 sg/test-rebase-editor-fix later to maint).
(merge 71571cd7d6 ma/sequencer-do-reset-saner-loop-termination later to maint).
(merge 9a4cb8781e cb/notes-freeing-always-null-fix later to maint).
----------------------------------------------------------------
Changes since v2.19.0 are as follows:
Aaron Lindsay (1):
send-email: avoid empty transfer encoding header
Alban Gruin (21):
sequencer: make three functions and an enum from sequencer.c public
rebase -i: rewrite append_todo_help() in C
editor: add a function to launch the sequence editor
rebase -i: rewrite the edit-todo functionality in C
sequencer: add a new function to silence a command, except if it fails
rebase -i: rewrite setup_reflog_action() in C
rebase -i: rewrite checkout_onto() in C
sequencer: refactor append_todo_help() to write its message to a buffer
sequencer: change the way skip_unnecessary_picks() returns its result
t3404: todo list with commented-out commands only aborts
rebase -i: rewrite complete_action() in C
rebase -i: remove unused modes and functions
rebase -i: implement the logic to initialize $revisions in C
rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
rebase -i: rewrite write_basic_state() in C
rebase -i: rewrite init_basic_state() in C
rebase -i: implement the main part of interactive rebase as a builtin
rebase--interactive2: rewrite the submodes of interactive rebase in C
rebase -i: remove git-rebase--interactive.sh
rebase -i: move rebase--helper modes to rebase--interactive
p3400: replace calls to `git checkout -b' by `git checkout -B'
Alexander Pyhalov (1):
t7005-editor: quote filename to fix whitespace-issue
Andreas Gruenbacher (1):
rev-parse: clear --exclude list after 'git rev-parse --all'
Andreas Heiduk (6):
doc: clarify boundaries of 'git worktree list --porcelain'
doc: fix ASCII art tab spacing
doc: fix inappropriate monospace formatting
doc: fix descripion for 'git tag --format'
doc: fix indentation of listing blocks in gitweb.conf.txt
doc: fix formatting in git-update-ref
Anton Serbulov (1):
mingw: fix getcwd when the parent directory cannot be queried
Antonio Ospite (10):
submodule: add a print_config_from_gitmodules() helper
submodule: factor out a config_set_in_gitmodules_file_gently function
t7411: merge tests 5 and 6
t7411: be nicer to future tests and really clean things up
submodule--helper: add a new 'config' subcommand
submodule: use the 'submodule--helper config' command
t7506: clean up .gitmodules properly before setting up new scenario
submodule: add a helper to check if it is safe to write to .gitmodules
submodule: support reading .gitmodules when it's not in the working tree
t/helper: add test-submodule-nested-repo-config
Ben Peart (19):
checkout: optimize "git checkout -b <new_branch>"
git-mv: allow submodules and fsmonitor to work together
t/README: correct spelling of "uncommon"
preload-index: use git_env_bool() not getenv() for customization
fsmonitor: update GIT_TEST_FSMONITOR support
read-cache: update TEST_GIT_INDEX_VERSION support
preload-index: update GIT_FORCE_PRELOAD_TEST support
read-cache: clean up casting and byte decoding
eoie: add End of Index Entry (EOIE) extension
config: add new index.threads config setting
read-cache: load cache extensions on a worker thread
ieot: add Index Entry Offset Table (IEOT) extension
read-cache: load cache entries on worker threads
reset: don't compute unstaged changes after reset when --quiet
reset: add new reset.quiet config setting
reset: warn when refresh_index() takes more than 2 seconds
speed up refresh_index() by utilizing preload_index()
add: speed up cmd_add() by utilizing read_cache_preload()
refresh_index: remove unnecessary calls to preload_index()
Brandon Williams (1):
config: document value 2 for protocol.version
Brendan Forster (1):
http: add support for disabling SSL revocation checks in cURL
Carlo Marcelo Arenas Belón (8):
unpack-trees: avoid dead store for struct progress
multi-pack-index: avoid dead store for struct progress
read-cache: use of memory after it is freed
commit-slabs: move MAYBE_UNUSED out
khash: silence -Wunused-function for delta-islands
compat: make sure git_mmap is not expected to write
sequencer: cleanup for gcc warning in non developer mode
builtin/notes: remove unnecessary free
Christian Couder (3):
pack-objects: refactor code into compute_layer_order()
pack-objects: move tree_depth into 'struct packing_data'
pack-objects: move 'layer' into 'struct packing_data'
Christian Hesse (2):
subtree: add build targets 'man' and 'html'
subtree: make install targets depend on build targets
Daniels Umanovskis (3):
doc: move git-rev-parse from porcelain to plumbing
doc: move git-get-tar-commit-id to plumbing
doc: move git-cherry to plumbing
David Zych (1):
doc: clarify gitcredentials path component matching
Denton Liu (3):
mergetool: accept -g/--[no-]gui as arguments
completion: support `git mergetool --[no-]gui`
doc: document diff/merge.guitool config keys
Derrick Stolee (92):
multi-pack-index: add design document
multi-pack-index: add format details
multi-pack-index: add builtin
multi-pack-index: add 'write' verb
midx: write header information to lockfile
multi-pack-index: load into memory
t5319: expand test data
packfile: generalize pack directory list
multi-pack-index: read packfile list
multi-pack-index: write pack names in chunk
midx: read pack names into array
midx: sort and deduplicate objects from packfiles
midx: write object ids in a chunk
midx: write object id fanout chunk
midx: write object offsets
config: create core.multiPackIndex setting
midx: read objects from multi-pack-index
midx: use midx in abbreviation calculations
midx: use existing midx when writing new one
midx: use midx in approximate_object_count
midx: prevent duplicate packfile loads
packfile: skip loading index if in multi-pack-index
midx: clear midx on repack
commit-reach: move walk methods from commit.c
commit.h: remove method declarations
commit-reach: move ref_newer from remote.c
commit-reach: move commit_contains from ref-filter
upload-pack: make reachable() more generic
upload-pack: refactor ok_to_give_up()
upload-pack: generalize commit date cutoff
commit-reach: move can_all_from_reach_with_flags
test-reach: create new test tool for ref_newer
test-reach: test in_merge_bases
test-reach: test is_descendant_of
test-reach: test get_merge_bases_many
test-reach: test reduce_heads
test-reach: test can_all_from_reach_with_flags
test-reach: test commit_contains
commit-reach: replace ref_newer logic
commit-reach: make can_all_from_reach... linear
commit-reach: use can_all_from_reach
multi-pack-index: provide more helpful usage info
multi-pack-index: store local property
midx: mark bad packed objects
midx: stop reporting garbage
midx: fix bug that skips midx with alternates
packfile: add all_packs list
treewide: use get_all_packs
midx: test a few commands that use get_all_packs
pack-objects: consider packs in multi-pack-index
commit-graph: update design document
test-repository: properly init repo
commit-graph: not compatible with replace objects
commit-graph: not compatible with grafts
commit-graph: not compatible with uninitialized repo
commit-graph: close_commit_graph before shallow walk
commit-graph: define GIT_TEST_COMMIT_GRAPH
t3206-range-diff.sh: cover single-patch case
t5318: use test_oid for HASH_LEN
multi-pack-index: add 'verify' verb
multi-pack-index: verify bad header
multi-pack-index: verify corrupt chunk lookup table
multi-pack-index: verify packname order
multi-pack-index: verify missing pack
multi-pack-index: verify oid fanout order
multi-pack-index: verify oid lookup order
multi-pack-index: fix 32-bit vs 64-bit size check
multi-pack-index: verify object offsets
multi-pack-index: report progress during 'verify'
fsck: verify multi-pack-index
commit-reach: properly peel tags
commit-reach: fix memory and flag leaks
commit-reach: cleanups in can_all_from_reach...
commit-graph: clean up leaked memory during write
commit-graph: reduce initial oid allocation
midx: fix broken free() in close_midx()
contrib: add coverage-diff script
ci: add optional test variables
commit-reach: fix first-parent heuristic
midx: close multi-pack-index on repack
multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX
packfile: close multi-pack-index in close_all_packs
prio-queue: add 'peek' operation
test-reach: add run_three_modes method
test-reach: add rev-list tests
revision.c: begin refactoring --topo-order logic
commit/revisions: bookkeeping before refactoring
revision.c: generation-based topo-order algorithm
t6012: make rev-list tests more interesting
commit-reach: implement get_reachable_subset
test-reach: test get_reachable_subset
remote: make add_missing_tags() linear
Elijah Newren (14):
Remove superfluous trailing semicolons
t4200: demonstrate rerere segfault on specially crafted merge
rerere: avoid buffer overrun
update-ref: fix type of update_flags variable to match its usage
update-ref: allow --no-deref with --stdin
sequencer: fix --allow-empty-message behavior, make it smarter
merge-recursive: set paths correctly when three-way merging content
merge-recursive: avoid wrapper function when unnecessary and wasteful
merge-recursive: remove final remaining caller of merge_file_one()
merge-recursive: rename merge_file_1() and merge_content()
commit: fix erroneous BUG, 'multiple renames on the same target? how?'
merge-recursive: improve auto-merging messages with path collisions
merge-recursive: avoid showing conflicts with merge branch before HEAD
fsck: move fsck_head_link() to get_default_heads() to avoid some globals
Eric Sunshine (26):
format-patch: allow additional generated content in make_cover_letter()
format-patch: add --interdiff option to embed diff in cover letter
format-patch: teach --interdiff to respect -v/--reroll-count
interdiff: teach show_interdiff() to indent interdiff
log-tree: show_log: make commentary block delimiting reusable
format-patch: allow --interdiff to apply to a lone-patch
range-diff: respect diff_option.file rather than assuming 'stdout'
range-diff: publish default creation factor
range-diff: relieve callers of low-level configuration burden
format-patch: add --range-diff option to embed diff in cover letter
format-patch: extend --range-diff to accept revision range
format-patch: teach --range-diff to respect -v/--reroll-count
format-patch: add --creation-factor tweak for --range-diff
format-patch: allow --range-diff to apply to a lone-patch
worktree: don't die() in library function find_worktree()
worktree: move delete_git_dir() earlier in file for upcoming new callers
worktree: generalize delete_git_dir() to reduce code duplication
worktree: prepare for more checks of whether path can become worktree
worktree: disallow adding same path multiple times
worktree: teach 'add' to respect --force for registered but missing path
worktree: teach 'move' to override lock when --force given twice
worktree: teach 'remove' to override lock when --force given twice
worktree: delete .git/worktrees if empty after 'remove'
doc-diff: fix non-portable 'man' invocation
doc-diff: add --clean mode to remove temporary working gunk
doc/Makefile: drop doc-diff worktree and temporary files on "make clean"
Frederick Eaton (3):
git-archimport.1: specify what kind of Arch we're talking about
git-column.1: clarify initial description, provide examples
git-describe.1: clarify that "human readable" is also git-readable
James Knight (1):
build: link with curl-defined linker flags
Jann Horn (2):
patch-delta: fix oob read
patch-delta: consistently report corruption
Jeff Hostetler (2):
t0051: test GIT_TRACE to a windows named pipe
mingw: fix mingw_open_append to work with named pipes
Jeff King (94):
branch: make "-l" a synonym for "--list"
Add delta-islands.{c,h}
pack-objects: add delta-islands support
repack: add delta-islands support
t5320: tests for delta islands
t/perf: factor boilerplate out of test_perf
t/perf: factor out percent calculations
t/perf: add infrastructure for measuring sizes
t/perf: add perf tests for fetches from a bitmapped server
pack-bitmap: save "have" bitmap from walk
pack-objects: reuse on-disk deltas for thin "have" objects
SubmittingPatches: mention doc-diff
rev-list: make empty --stdin not an error
trailer: use size_t for string offsets
trailer: use size_t for iterating trailer list
trailer: pass process_trailer_opts to trailer_info_get()
interpret-trailers: tighten check for "---" patch boundary
interpret-trailers: allow suppressing "---" divider
pretty, ref-filter: format %(trailers) with no_divider option
sequencer: ignore "---" divider when parsing trailers
append_signoff: use size_t for string offsets
coccinelle: use <...> for function exclusion
introduce hasheq() and oideq()
convert "oidcmp() == 0" to oideq()
convert "hashcmp() == 0" to hasheq()
convert "oidcmp() != 0" to "!oideq()"
convert "hashcmp() != 0" to "!hasheq()"
convert hashmap comparison functions to oideq()
read-cache: use oideq() in ce_compare functions
show_dirstat: simplify same-content check
doc-diff: always use oids inside worktree
test-delta: read input into a heap buffer
t5303: test some corrupt deltas
patch-delta: handle truncated copy parameters
t5303: use printf to generate delta bases
doc/git-branch: remove obsolete "-l" references
bitmap_has_sha1_in_uninteresting(): drop BUG check
t5310: test delta reuse with bitmaps
traverse_bitmap_commit_list(): don't free result
pack-bitmap: drop "loaded" flag
reopen_tempfile(): truncate opened file
doc-diff: force worktree add
config.mak.dev: add -Wformat-security
pack-objects: handle island check for "external" delta base
receive-pack: update comment with check_everything_connected
submodule--helper: use "--" to signal end of clone options
submodule-config: ban submodule urls that start with dash
submodule-config: ban submodule paths that start with a dash
fsck: detect submodule urls starting with dash
fsck: detect submodule paths starting with dash
more oideq/hasheq conversions
transport: drop refnames from for_each_alternate_ref
test-tool: show tool list on error
config.mak.dev: enable -Wunused-function
run-command: mark path lookup errors with ENOENT
t5410: use longer path for sample script
upload-pack: fix broken if/else chain in config callback
t1450: check large blob in trailing-garbage test
check_stream_sha1(): handle input underflow
cat-file: handle streaming failures consistently
ls-remote: do not send ref prefixes for patterns
ls-remote: pass heads/tags prefixes to transport
read_istream_pack_non_delta(): document input handling
xdiff: provide a separate emit callback for hunks
xdiff-interface: provide a separate consume callback for hunks
rev-list: handle flags for --indexed-objects
approxidate: handle pending number for "specials"
pathspec: handle non-terminated strings with :(attr)
diff: avoid generating unused hunk header lines
diff: discard hunk headers for patch-ids earlier
diff: use hunk callback for word-diff
combine-diff: use an xdiff hunk callback
diff: convert --check to use a hunk callback
range-diff: use a hunk callback
xdiff-interface: drop parse_hunk_header()
apply: mark include/exclude options as NONEG
am: handle --no-patch-format option
ls-files: mark exclude options as NONEG
pack-objects: mark index-version option as NONEG
cat-file: mark batch options with NONEG
status: mark --find-renames option with NONEG
format-patch: mark "--no-numbered" option with NONEG
show-branch: mark --reflog option as NONEG
tag: mark "--message" option with NONEG
cat-file: report an error on multiple --batch options
apply: return -1 from option callback instead of calling exit(1)
parse-options: drop OPT_DATE()
assert NOARG/NONEG behavior of parse-options callbacks
midx: double-check large object write loop
merge: extract verify_merge_signature() helper
merge: handle --verify-signatures for unborn branch
pull: handle --verify-signatures for unborn branch
approxidate: fix NULL dereference in date_time()
bundle: dup() output descriptor closer to point-of-use
Johannes Schindelin (55):
rebase -i --autosquash: demonstrate a problem skipping the last squash
rebase -i: be careful to wrap up fixup/squash chains
compat/poll: prepare for targeting Windows Vista
mingw: set _WIN32_WINNT explicitly for Git for Windows
mingw: bump the minimum Windows version to Vista
builtin rebase: prepare for builtin rebase -i
rebase -i: clarify what happens on a failed `exec`
rebase -i: introduce the 'break' command
getpwuid(mingw): initialize the structure only once
getpwuid(mingw): provide a better default for the user name
mingw: use domain information for default email
http: add support for selecting SSL backends at runtime
pack-objects: fix typo 'detla' -> 'delta'
pack-objects (mingw): demonstrate a segmentation fault with large deltas
pack-objects (mingw): initialize `packing_data` mutex in the correct spot
rebase (autostash): avoid duplicate call to state_dir_path()
rebase (autostash): store the full OID in <state-dir>/autostash
rebase (autostash): use an explicit OID to apply the stash
mingw: factor out code to set stat() data
rebase --autostash: demonstrate a problem with dirty submodules
rebase --autostash: fix issue with dirty submodules
mingw: load system libraries the recommended way
mingw: ensure `getcwd()` reports the correct case
repack: point out a bug handling stale shallow info
shallow: offer to prune only non-existing entries
repack -ad: prune the list of shallow commits
http: when using Secure Channel, ignore sslCAInfo by default
t7800: fix quoting
mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)
config: rename `dummy` parameter to `cb` in git_default_config()
config: allow for platform-specific core.* config settings
config: move Windows-specific config settings into compat/mingw.c
mingw: unset PERL5LIB by default
mingw: fix isatty() after dup2()
t3404: decouple some test cases from outcomes of previous test cases
t3418: decouple test cases from a previous `rebase -p` test case
tests: optionally skip `git rebase -p` tests
Windows: force-recompile git.res for differing architectures
built-in rebase: demonstrate regression with --autostash
built-in rebase --autostash: leave the current branch alone if possible
Update .mailmap
rebase -r: demonstrate bug with conflicting merges
rebase -r: do not write MERGE_HEAD unless needed
rebase -i: include MERGE_HEAD into files to clean up
built-in rebase --skip/--abort: clean up stale .git/<name> files
status: rebase and merge can be in progress at the same time
apply --recount: allow "no-op hunks"
rebase: consolidate clean-up code before leaving reset_head()
rebase: prepare reset_head() for more flags
built-in rebase: reinstate `checkout -q` behavior where appropriate
mingw: use `CreateHardLink()` directly
rebase: really just passthru the `git am` options
rebase: validate -C<n> and --whitespace=<mode> parameters early
config: report a bug if git_dir exists without commondir
mingw: replace an obsolete link with the superseding one
Johannes Sixt (3):
diff: don't attempt to strip prefix from absolute Windows paths
rebase -i: recognize short commands without arguments
t3404-rebase-interactive: test abbreviated commands
Jonathan Nieder (6):
gc: improve handling of errors reading gc.log
gc: exit with status 128 on failure
gc: do not return error for prior errors in daemonized mode
commit-reach: correct accidental #include of C file
mailmap: consistently normalize brian m. carlson's name
git doc: direct bug reporters to mailing list archive
Jonathan Tan (15):
fetch-object: unify fetch_object[s] functions
fetch-object: set exact_oid when fetching
connected: document connectivity in partial clones
fetch: in partial clone, check presence of targets
fetch-pack: avoid object flags if no_dependents
fetch-pack: exclude blobs when lazy-fetching trees
transport: allow skipping of ref listing
transport: do not list refs if possible
transport: list refs before fetch if necessary
fetch: do not list refs if fetching only hashes
cache-tree: skip some blob checks in partial clone
upload-pack: make have_obj not global
upload-pack: make want_obj not global
upload-pack: clear flags before each v2 request
fetch-pack: be more precise in parsing v2 response
Josh Steadmon (4):
fuzz: add basic fuzz testing target.
fuzz: add fuzz testing for packfile indices.
archive: initialize archivers earlier
Makefile: use FUZZ_CXXFLAGS for linking fuzzers
Joshua Watt (1):
send-email: explicitly disable authentication
Junio C Hamano (29):
Revert "doc/Makefile: drop doc-diff worktree and temporary files on "make clean""
Initial batch post 2.19
Second batch post 2.19
Git 2.14.5
Git 2.15.3
Git 2.16.5
Git 2.17.2
Git 2.18.1
Git 2.19.1
t0000: do not get self-test disrupted by environment warnings
CodingGuidelines: document the API in *.h files
Declare that the next one will be named 2.20
Third batch for 2.20
rebase: fix typoes in error messages
Fourth batch for 2.20
Revert "subtree: make install targets depend on build targets"
Fifth batch for 2.20
receive: denyCurrentBranch=updateinstead should not blindly update
cocci: simplify "if (++u > 1)" to "if (u++)"
fsck: s/++i > 1/i++/
http: give curl version warnings consistently
Sixth batch for 2.20
Seventh batch for 2.20
fetch: replace string-list used as a look-up table with a hashmap
rebase: apply cocci patch
Eighth batch for 2.20
Ninth batch for 2.20
Tenth batch for 2.20
Git 2.20-rc0
Karsten Blees (2):
mingw: replace MSVCRT's fstat() with a Win32-based implementation
mingw: implement nanosecond-precision file times
Loo Rong Jie (1):
win32: replace pthread_cond_*() with much simpler code
Lucas De Marchi (1):
range-diff: allow to diff files regardless of submodule config
Luke Diamand (3):
git-p4: do not fail in verbose mode for missing 'fileSize' key
git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved
git-p4: fully support unshelving changelists
Martin Ågren (9):
Doc: use `--type=bool` instead of `--bool`
git-config.txt: fix 'see: above' note
git-commit-graph.txt: fix bullet lists
git-commit-graph.txt: typeset more in monospace
git-commit-graph.txt: refer to "*commit*-graph file"
Doc: refer to the "commit-graph file" with dash
t1400: drop debug `echo` to actually execute `test`
builtin/commit-graph.c: UNLEAK variables
sequencer: break out of loop explicitly
Matthew DeVore (19):
list-objects: store common func args in struct
list-objects: refactor to process_tree_contents
list-objects: always parse trees gently
t/README: reformat Do, Don't, Keep in mind lists
Documentation: add shell guidelines
tests: standardize pipe placement
t/*: fix ordering of expected/observed arguments
tests: don't swallow Git errors upstream of pipes
t9109: don't swallow Git errors upstream of pipes
tests: order arguments to git-rev-list properly
rev-list: handle missing tree objects properly
revision: mark non-user-given objects instead
list-objects-filter: use BUG rather than die
list-objects-filter-options: do not over-strbuf_init
list-objects-filter: implement filter tree:0
filter-trees: code clean-up of tests
list-objects: support for skipping tree traversal
Documentation/git-log.txt: do not show --exclude-promisor-objects
exclude-promisor-objects: declare when option is allowed
Max Kirillov (1):
http-backend test: make empty CONTENT_LENGTH test more realistic
Michael Witten (3):
docs: typo: s/go/to/
docs: graph: remove unnecessary `graph_update()' call
docs: typo: s/isimilar/similar/
Michał Górny (6):
gpg-interface.c: detect and reject multiple signatures on commits
gpg-interface.c: use flags to determine key/signer info presence
gpg-interface.c: support getting key fingerprint via %GF format
gpg-interface.c: obtain primary key fingerprint as well
t/t7510-signed-commit.sh: Add %GP to custom format checks
t/t7510-signed-commit.sh: add signing subkey to Eris Discordia key
Mihir Mehta (1):
doc: fix a typo and clarify a sentence
Nguyễn Thái Ngọc Duy (166):
clone: report duplicate entries on case-insensitive filesystems
trace.h: support nested performance tracing
unpack-trees: add performance tracing
unpack-trees: optimize walking same trees with cache-tree
unpack-trees: reduce malloc in cache-tree walk
unpack-trees: reuse (still valid) cache-tree from src_index
unpack-trees: add missing cache invalidation
cache-tree: verify valid cache-tree in the test suite
Document update for nd/unpack-trees-with-cache-tree
bisect.c: make show_list() build again
t/helper: keep test-tool command list sorted
t/helper: merge test-dump-untracked-cache into test-tool
t/helper: merge test-pkt-line into test-tool
t/helper: merge test-parse-options into test-tool
t/helper: merge test-dump-fsmonitor into test-tool
Makefile: add a hint about TEST_BUILTINS_OBJS
config.txt: follow camelCase naming
config.txt: move fetch part out to a separate file
config.txt: move format part out to a separate file
config.txt: move gitcvs part out to a separate file
config.txt: move gui part out to a separate file
config.txt: move pull part out to a separate file
config.txt: move push part out to a separate file
config.txt: move receive part out to a separate file
config.txt: move sendemail part out to a separate file
config.txt: move sequence.editor out of "core" part
config.txt: move submodule part out to a separate file
archive.c: remove implicit dependency the_repository
status: show progress bar if refreshing the index takes too long
add: do not accept pathspec magic 'attr'
completion: support "git fetch --multiple"
read-cache.c: remove 'const' from index_has_changes()
diff.c: reduce implicit dependency on the_index
combine-diff.c: remove implicit dependency on the_index
blame.c: rename "repo" argument to "r"
diff.c: remove the_index dependency in textconv() functions
grep.c: remove implicit dependency on the_index
diff.c: remove implicit dependency on the_index
read-cache.c: remove implicit dependency on the_index
diff-lib.c: remove implicit dependency on the_index
ll-merge.c: remove implicit dependency on the_index
merge-blobs.c: remove implicit dependency on the_index
merge.c: remove implicit dependency on the_index
patch-ids.c: remove implicit dependency on the_index
sha1-file.c: remove implicit dependency on the_index
rerere.c: remove implicit dependency on the_index
userdiff.c: remove implicit dependency on the_index
line-range.c: remove implicit dependency on the_index
submodule.c: remove implicit dependency on the_index
tree-diff.c: remove implicit dependency on the_index
ws.c: remove implicit dependency on the_index
revision.c: remove implicit dependency on the_index
revision.c: reduce implicit dependency the_repository
read-cache.c: optimize reading index format v4
config.txt: correct the note about uploadpack.packObjectsHook
help -a: improve and make --verbose default
refs.c: indent with tabs, not spaces
Add a place for (not) sharing stuff between worktrees
submodule.c: remove some of the_repository references
completion: fix __gitcomp_builtin no longer consider extra options
t1300: extract and use test_cmp_config()
worktree: add per-worktree config files
refs: new ref types to make per-worktree refs visible to all worktrees
revision.c: correct a parameter name
revision.c: better error reporting on ref from different worktrees
fsck: check HEAD and reflog from other worktrees
reflog expire: cover reflog from all worktrees
Update makefile in preparation for Documentation/config/*.txt
config.txt: move advice.* to a separate file
config.txt: move core.* to a separate file
config.txt: move add.* to a separate file
config.txt: move alias.* to a separate file
config.txt: move am.* to a separate file
config.txt: move apply.* to a separate file
config.txt: move blame.* to a separate file
config.txt: move branch.* to a separate file
config.txt: move browser.* to a separate file
config.txt: move checkout.* to a separate file
config.txt: move clean.* to a separate file
config.txt: move color.* to a separate file
config.txt: move column.* to a separate file
config.txt: move commit.* to a separate file
config.txt: move credential.* to a separate file
config.txt: move completion.* to a separate file
config.txt: move diff-config.txt to config/
config.txt: move difftool.* to a separate file
config.txt: move fastimport.* to a separate file
config.txt: move fetch-config.txt to config/
config.txt: move filter.* to a separate file
config.txt: move format-config.txt to config/
config.txt: move fmt-merge-msg-config.txt to config/
config.txt: move fsck.* to a separate file
config.txt: move gc.* to a separate file
config.txt: move gitcvs-config.txt to config/
config.txt: move gitweb.* to a separate file
config.txt: move grep.* to a separate file
config.txt: move gpg.* to a separate file
config.txt: move gui-config.txt to config/
config.txt: move guitool.* to a separate file
config.txt: move help.* to a separate file
config.txt: move ssh.* to a separate file
config.txt: move http.* to a separate file
config.txt: move i18n.* to a separate file
git-imap-send.txt: move imap.* to a separate file
config.txt: move index.* to a separate file
config.txt: move init.* to a separate file
config.txt: move instaweb.* to a separate file
config.txt: move interactive.* to a separate file
config.txt: move log.* to a separate file
config.txt: move mailinfo.* to a separate file
config.txt: move mailmap.* to a separate file
config.txt: move man.* to a separate file
config.txt: move merge-config.txt to config/
config.txt: move mergetool.* to a separate file
config.txt: move notes.* to a separate file
config.txt: move pack.* to a separate file
config.txt: move pager.* to a separate file
config.txt: move pretty.* to a separate file
config.txt: move protocol.* to a separate file
config.txt: move pull-config.txt to config/
config.txt: move push-config.txt to config/
config.txt: move rebase-config.txt to config/
config.txt: move receive-config.txt to config/
config.txt: move remote.* to a separate file
config.txt: move remotes.* to a separate file
config.txt: move repack.* to a separate file
config.txt: move rerere.* to a separate file
config.txt: move reset.* to a separate file
config.txt: move sendemail-config.txt to config/
config.txt: move sequencer.* to a separate file
config.txt: move showBranch.* to a separate file
config.txt: move splitIndex.* to a separate file
config.txt: move status.* to a separate file
config.txt: move stash.* to a separate file
config.txt: move submodule.* to a separate file
config.txt: move tag.* to a separate file
config.txt: move transfer.* to a separate file
config.txt: move uploadarchive.* to a separate file
config.txt: move uploadpack.* to a separate file
config.txt: move url.* to a separate file
config.txt: move user.* to a separate file
config.txt: move versionsort.* to a separate file
config.txt: move web.* to a separate file
config.txt: move worktree.* to a separate file
config.txt: remove config/dummy.txt
thread-utils: macros to unconditionally compile pthreads API
wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
git-worktree.txt: correct linkgit command name
sequencer.c: remove a stray semicolon
tree-walk.c: fix overoptimistic inclusion in :(exclude) matching
run-command.h: include thread-utils.h instead of pthread.h
send-pack.c: move async's #ifdef NO_PTHREADS back to run-command.c
index-pack: remove #ifdef NO_PTHREADS
name-hash.c: remove #ifdef NO_PTHREADS
attr.c: remove #ifdef NO_PTHREADS
grep: remove #ifdef NO_PTHREADS
grep: clean up num_threads handling
preload-index.c: remove #ifdef NO_PTHREADS
pack-objects: remove #ifdef NO_PTHREADS
read-cache.c: remove #ifdef NO_PTHREADS
read-cache.c: reduce branching based on HAVE_THREADS
read-cache.c: initialize copy_len to shut up gcc 8
Clean up pthread_create() error handling
completion: use __gitcomp_builtin for format-patch
build: fix broken command-list.h generation with core.autocrlf
doc: move extensions.worktreeConfig to the right place
Nickolai Belakovski (2):
worktree: update documentation for lock_reason and lock_reason_valid
worktree: rename is_worktree_locked to worktree_lock_reason
Noam Postavsky (1):
log: fix coloring of certain octopus merge shapes
Olga Telezhnaya (3):
ref-filter: free memory from used_atom
ls-remote: release memory instead of UNLEAK
ref-filter: free item->value and item->value->s
Phillip Wood (11):
diff: fix --color-moved-ws=allow-indentation-change
diff --color-moved-ws: fix double free crash
diff --color-moved-ws: fix out of bounds string access
diff --color-moved-ws: fix a memory leak
diff --color-moved-ws: fix another memory leak
diff --color-moved: fix a memory leak
am: don't die in read_author_script()
am: improve author-script error reporting
am: rename read_author_script()
add read_author_script() to libgit
sequencer: use read_author_script()
Pratik Karki (46):
rebase: start implementing it as a builtin
rebase: refactor common shell functions into their own file
builtin/rebase: support running "git rebase <upstream>"
builtin rebase: support --onto
builtin rebase: support `git rebase --onto A...B`
builtin rebase: handle the pre-rebase hook and --no-verify
builtin rebase: support --quiet
builtin rebase: support the `verbose` and `diffstat` options
builtin rebase: require a clean worktree
builtin rebase: try to fast forward when possible
builtin rebase: support --force-rebase
builtin rebase: start a new rebase only if none is in progress
builtin rebase: only store fully-qualified refs in `options.head_name`
builtin rebase: support `git rebase <upstream> <switch-to>`
builtin rebase: support --continue
builtin rebase: support --skip
builtin rebase: support --abort
builtin rebase: support --quit
builtin rebase: support --edit-todo and --show-current-patch
builtin rebase: actions require a rebase in progress
builtin rebase: stop if `git am` is in progress
builtin rebase: allow selecting the rebase "backend"
builtin rebase: support --signoff
builtin rebase: support --rerere-autoupdate
builtin rebase: support --committer-date-is-author-date
builtin rebase: support `ignore-whitespace` option
builtin rebase: support `ignore-date` option
builtin rebase: support `keep-empty` option
builtin rebase: support `--autosquash`
builtin rebase: support `--gpg-sign` option
builtin rebase: support `-C` and `--whitespace=<type>`
builtin rebase: support `--autostash` option
builtin rebase: support `--exec`
builtin rebase: support `--allow-empty-message` option
builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
merge-base --fork-point: extract libified function
builtin rebase: support `fork-point` option
builtin rebase: add support for custom merge strategies
builtin rebase: support --root
builtin rebase: optionally auto-detect the upstream
builtin rebase: optionally pass custom reflogs to reset_head()
builtin rebase: fast-forward to onto if it is a proper descendant
builtin rebase: show progress when connected to a terminal
builtin rebase: use no-op editor when interactive is "implied"
builtin rebase: error out on incompatible option/mode combinations
rebase: default to using the builtin rebase
Rafael Ascensão (2):
refs: show --exclude failure with --branches/tags/remotes=glob
refs: fix some exclude patterns being ignored
Ralf Thielow (1):
git-rebase.sh: fix typos in error messages
Ramsay Jones (12):
Makefile: add a hdr-check target
json-writer.h: add missing include (hdr-check)
ewah/ewok_rlw.h: add missing include (hdr-check)
refs/ref-cache.h: add missing declarations (hdr-check)
refs/packed-backend.h: add missing declaration (hdr-check)
refs/refs-internal.h: add missing declarations (hdr-check)
midx.h: add missing forward declarations (hdr-check)
delta-islands.h: add missing forward declarations (hdr-check)
headers: normalize the spelling of some header guards
fetch-object.h: add missing declaration (hdr-check)
ewok_rlw.h: add missing 'inline' to function definition
commit-reach.h: add missing declarations (hdr-check)
Rasmus Villemoes (6):
help: redirect to aliased commands for "git cmd --help"
git.c: handle_alias: prepend alias info when first argument is -h
git-help.txt: document "git help cmd" vs "git cmd --help" for aliases
Documentation/git-send-email.txt: style fixes
send-email: only consider lines containing @ or <> for automatic Cc'ing
send-email: also pick up cc addresses from -by trailers
René Scharfe (12):
mailinfo: support format=flowed
fsck: add a performance test for skipList
fsck: use strbuf_getline() to read skiplist file
fsck: use oidset instead of oid_array for skipList
sequencer: use return value of oidset_insert()
grep: add -r/--[no-]recursive
fetch-pack: factor out is_unmatched_ref()
fetch-pack: load tip_oids eagerly iff needed
khash: factor out kh_release_*
oidset: use khash
oidset: uninline oidset_init()
commit-reach: fix cast in compare_commits_by_gen()
Roger Strain (1):
subtree: performance improvement for finding unexpected parent commits
SZEDER Gábor (16):
t1404: increase core.packedRefsTimeout to avoid occasional test failure
Documentation/git.txt: clarify that GIT_TRACE=/path appends
t3701-add-interactive: tighten the check of trace output
t1700-split-index: drop unnecessary 'grep'
t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
t1700-split-index: document why FSMONITOR is disabled in this test script
split-index: add tests to demonstrate the racy split index problem
t1700-split-index: date back files to avoid racy situations
split-index: count the number of deleted entries
split-index: don't compare cached data of entries already marked for split index
split-index: smudge and add racily clean cache entries to split index
split-index: BUG() when cache entry refers to non-existing shared entry
object_id.cocci: match only expressions of type 'struct object_id'
test-lib: introduce the '-V' short option for '--verbose-log'
travis-ci: install packages in 'ci/install-dependencies.sh'
ref-filter: don't look for objects when outside of a repository
Sam McKelvie (1):
rev-parse: --show-superproject-working-tree should work during a merge
Saulius Gurklys (1):
doc: fix small typo in git show-branch
Sebastian Staudt (1):
travis-ci: no longer use containers
Shulhan (1):
builtin/remote: quote remote name on error to display empty name
Stefan Beller (25):
git-submodule.sh: align error reporting for update mode to use path
git-submodule.sh: rename unused variables
builtin/submodule--helper: factor out submodule updating
builtin/submodule--helper: store update_clone information in a struct
builtin/submodule--helper: factor out method to update a single submodule
submodule--helper: replace connect-gitdir-workingtree by ensure-core-worktree
submodule--helper: introduce new update-module-mode helper
test_decode_color: understand FAINT and ITALIC
t3206: add color test for range-diff --dual-color
diff.c: simplify caller of emit_line_0
diff.c: reorder arguments for emit_line_ws_markup
diff.c: add set_sign to emit_line_0
diff: use emit_line_0 once per line
diff.c: omit check for line prefix in emit_line_0
diff.c: rewrite emit_line_0 more understandably
diff.c: add --output-indicator-{new, old, context}
range-diff: make use of different output indicators
range-diff: indent special lines as context
refs.c: migrate internal ref iteration to pass thru repository argument
refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
string-list: remove unused function print_string_list
strbuf.h: format according to coding guidelines
diff.c: pass sign_index to emit_line_ws_markup
submodule helper: convert relative URL to absolute URL if needed
builtin/submodule--helper: remove debugging leftover tracing
Stephen P. Smith (10):
wt-status.c: move has_unmerged earlier in the file
wt-status: rename commitable to committable
t7501: add test of "commit --dry-run --short"
wt-status.c: set the committable flag in the collect phase
roll wt_status_state into wt_status and populate in the collect phase
t2000: rename and combine checkout clash tests
t7509: cleanup description and filename
t7502: rename commit test script to comply with naming convention
t7500: rename commit tests script to comply with naming convention
t7501: rename commit test to comply with naming convention
Steve Hoelzer (1):
poll: use GetTickCount64() to avoid wrap-around issues
Steven Fernandez (1):
git-completion.bash: add completion for stash list
Strain, Roger L (4):
subtree: refactor split of a commit into standalone method
subtree: make --ignore-joins pay attention to adds
subtree: use commits before rejoins for splits
subtree: improve decision on merges kept in split
Tao Qingyun (3):
refs: docstring typo
builtin/branch.c: remove useless branch_get
branch: trivial style fix
Taylor Blau (4):
transport.c: extract 'fill_alternate_refs_command'
transport.c: introduce core.alternateRefsCommand
transport.c: introduce core.alternateRefsPrefixes
Documentation/config.txt: fix typo in core.alternateRefsCommand
Thomas Gummerer (17):
rerere: unify error messages when read_cache fails
rerere: lowercase error messages
rerere: wrap paths in output in sq
rerere: mark strings for translation
rerere: add documentation for conflict normalization
rerere: fix crash with files rerere can't handle
rerere: only return whether a path has conflicts or not
rerere: factor out handle_conflict function
rerere: return strbuf from handle path
rerere: teach rerere to handle nested conflicts
rerere: recalculate conflict ID when unresolved conflict is committed
rerere: mention caveat about unmatched conflict markers
rerere: add note about files with existing conflict markers
.gitattributes: add conflict-marker-size for relevant files
linear-assignment: fix potential out of bounds memory access
t5551: move setup code inside test_expect blocks
t5551: compare sorted cookies files
Tim Schumacher (4):
Documentation/Makefile: make manpage-base-url.xsl generation quieter
alias: add support for aliases of an alias
alias: show the call history when an alias is looping
t0014: introduce an alias testing suite
Torsten Bögershausen (2):
Make git_check_attr() a void function
path.c: char is not (always) signed
Uwe Kleine-König (1):
howto/using-merge-subtree: mention --allow-unrelated-histories
brian m. carlson (26):
t: add test functions to translate hash-related values
t0000: use hash translation table
t0000: update tests for SHA-256
t0002: abstract away SHA-1 specific constants
t0064: make hash size independent
t1006: make hash size independent
t1400: switch hard-coded object ID to variable
t1405: make hash size independent
t1406: make hash-size independent
t1407: make hash size independent
editorconfig: provide editor settings for Git developers
editorconfig: indicate settings should be kept in sync
pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
builtin/repack: replace hard-coded constants
builtin/mktree: remove hard-coded constant
builtin/fetch-pack: remove constants with parse_oid_hex
pack-revindex: express constants in terms of the_hash_algo
packfile: express constants in terms of the_hash_algo
refs/packed-backend: express constants using the_hash_algo
upload-pack: express constants in terms of the_hash_algo
transport: use parse_oid_hex instead of a constant
tag: express constant in terms of the_hash_algo
apply: replace hard-coded constants
apply: rename new_sha1_prefix and old_sha1_prefix
submodule: make zero-oid comparison hash function agnostic
rerere: convert to use the_hash_algo
Ævar Arnfjörð Bjarmason (31):
fetch: change "branch" to "reference" in --force -h output
push tests: make use of unused $1 in test description
push tests: use spaces in interpolated string
fetch tests: add a test for clobbering tag behavior
push doc: remove confusing mention of remote merger
push doc: move mention of "tag <tag>" later in the prose
push doc: correct lies about how push refspecs work
fetch: document local ref updates with/without --force
fetch: stop clobbering existing tags without --force
fsck tests: setup of bogus commit object
fsck tests: add a test for no skipList input
fsck: document and test sorted skipList input
fsck: document and test commented & empty line skipList input
fsck: document that skipList input must be unabbreviated
fsck: add a performance test
fsck: support comments & empty lines in skipList
commit-graph write: add progress output
commit-graph verify: add progress output
config doc: add missing list separator for checkout.optimizeNewBranch
push doc: add spacing between two words
fetch doc: correct grammar in --force docs
gc: fix regression in 7b0f229222 impacting --quiet
gc doc: mention the commit-graph in the intro
pack-objects test: modernize style
pack-objects tests: don't leave test .git corrupt at end
index-pack tests: don't leave test repo dirty at end
range-diff doc: add a section about output stability
range-diff: fix regression in passing along diff options
range-diff: make diff option behavior (e.g. --stat) consistent
rebase doc: document rebase.useBuiltin
tests: add a special setup where rebase.useBuiltin is off
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Nov 2018, #02; Fri, 2)
@ 2018-11-02 5:10 1% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-11-02 5:10 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 eighth batch is all about "rebase and rebase-i in C" ;-)
The disruptive "let's split up the Documentation/config.txt file"
topic will enter 'next' soon, and I expect I'd be slow while it
skips over various topics in flight that changes the source it
touches, as they would produce conflicts with different shape and
won't be helped by rerere. Let's merge it down quickly.
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"]
* ag/rebase-i-in-c (2018-10-09) 20 commits
(merged to 'next' on 2018-10-19 at 1b24712d46)
+ rebase -i: move rebase--helper modes to rebase--interactive
+ rebase -i: remove git-rebase--interactive.sh
+ rebase--interactive2: rewrite the submodes of interactive rebase in C
+ rebase -i: implement the main part of interactive rebase as a builtin
+ rebase -i: rewrite init_basic_state() in C
+ rebase -i: rewrite write_basic_state() in C
+ rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
+ rebase -i: implement the logic to initialize $revisions in C
+ rebase -i: remove unused modes and functions
+ rebase -i: rewrite complete_action() in C
+ t3404: todo list with commented-out commands only aborts
+ sequencer: change the way skip_unnecessary_picks() returns its result
+ sequencer: refactor append_todo_help() to write its message to a buffer
+ rebase -i: rewrite checkout_onto() in C
+ rebase -i: rewrite setup_reflog_action() in C
+ sequencer: add a new function to silence a command, except if it fails
+ rebase -i: rewrite the edit-todo functionality in C
+ editor: add a function to launch the sequence editor
+ rebase -i: rewrite append_todo_help() in C
+ sequencer: make three functions and an enum from sequencer.c public
(this branch is used by ag/sequencer-reduce-rewriting-todo, cb/printf-empty-format, js/rebase-autostash-fix, js/rebase-i-break, js/rebase-i-shortopt, js/rebase-in-c-5.5-work-with-rebase-i-in-c and pk/rebase-in-c-6-final.)
Rewrite of the remaining "rebase -i" machinery in C.
* cb/printf-empty-format (2018-10-27) 1 commit
(merged to 'next' on 2018-11-01 at 9fcb05f22c)
+ sequencer: cleanup for gcc warning in non developer mode
(this branch uses ag/rebase-i-in-c; is tangled with ag/sequencer-reduce-rewriting-todo, js/rebase-autostash-fix, js/rebase-i-break, js/rebase-i-shortopt, js/rebase-in-c-5.5-work-with-rebase-i-in-c and pk/rebase-in-c-6-final.)
Build fix for a topic in flight.
* jc/rebase-in-c-5-test-typofix (2018-10-11) 1 commit
(merged to 'next' on 2018-10-19 at 08c9d86ffd)
+ rebase: fix typoes in error messages
(this branch uses pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts and pk/rebase-in-c-5-test; is tangled with js/rebase-autostash-fix, js/rebase-in-c-5.5-work-with-rebase-i-in-c and pk/rebase-in-c-6-final.)
Typofix.
* js/rebase-autostash-fix (2018-10-24) 5 commits
(merged to 'next' on 2018-10-29 at 680e648001)
+ rebase --autostash: fix issue with dirty submodules
+ rebase --autostash: demonstrate a problem with dirty submodules
+ rebase (autostash): use an explicit OID to apply the stash
+ rebase (autostash): store the full OID in <state-dir>/autostash
+ rebase (autostash): avoid duplicate call to state_dir_path()
(this branch uses ag/rebase-i-in-c, js/rebase-in-c-5.5-work-with-rebase-i-in-c, pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; is tangled with ag/sequencer-reduce-rewriting-todo, cb/printf-empty-format, jc/rebase-in-c-5-test-typofix, js/rebase-i-break and js/rebase-i-shortopt.)
"git rebase" that has recently been rewritten in C had a few issues
in its "--autstash" feature, which have been corrected.
* js/rebase-i-break (2018-10-12) 2 commits
(merged to 'next' on 2018-10-19 at 6db9b14495)
+ rebase -i: introduce the 'break' command
+ rebase -i: clarify what happens on a failed `exec`
(this branch is used by js/rebase-i-shortopt; uses ag/rebase-i-in-c; is tangled with ag/sequencer-reduce-rewriting-todo, cb/printf-empty-format, js/rebase-autostash-fix, js/rebase-in-c-5.5-work-with-rebase-i-in-c and pk/rebase-in-c-6-final.)
"git rebase -i" learned a new insn, 'break', that the user can
insert in the to-do list. Upon hitting it, the command returns
control back to the user.
* js/rebase-i-shortopt (2018-10-26) 1 commit
(merged to 'next' on 2018-11-01 at 4e9da19145)
+ rebase -i: recognize short commands without arguments
(this branch uses ag/rebase-i-in-c and js/rebase-i-break; is tangled with ag/sequencer-reduce-rewriting-todo, cb/printf-empty-format, js/rebase-autostash-fix, js/rebase-in-c-5.5-work-with-rebase-i-in-c and pk/rebase-in-c-6-final.)
"git rebase -i" learned to take 'b' as the short form of 'break'
option in the todo list.
* js/rebase-in-c-5.5-work-with-rebase-i-in-c (2018-10-11) 2 commits
(merged to 'next' on 2018-10-19 at b734d81006)
+ builtin rebase: prepare for builtin rebase -i
+ Merge branch 'ag/rebase-i-in-c' into js/rebase-in-c-5.5-work-with-rebase-i-in-c
(this branch is used by js/rebase-autostash-fix and pk/rebase-in-c-6-final; uses ag/rebase-i-in-c, pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts and pk/rebase-in-c-5-test; is tangled with ag/sequencer-reduce-rewriting-todo, cb/printf-empty-format, jc/rebase-in-c-5-test-typofix, js/rebase-i-break and js/rebase-i-shortopt.)
"rebase" that has been rewritten learns the new calling convention
used by "rebase -i" that was rewritten in C, tying the loose end
between two GSoC topics that stomped on each other's toes.
* pk/rebase-in-c (2018-08-06) 3 commits
(merged to 'next' on 2018-10-19 at 26c29ace53)
+ builtin/rebase: support running "git rebase <upstream>"
+ rebase: refactor common shell functions into their own file
+ rebase: start implementing it as a builtin
(this branch is used by jc/rebase-in-c-5-test-typofix, js/rebase-autostash-fix, js/rebase-in-c-5.5-work-with-rebase-i-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final.)
Rewrite of the "rebase" machinery in C.
* pk/rebase-in-c-2-basic (2018-09-06) 11 commits
(merged to 'next' on 2018-10-19 at c2a0046e52)
+ builtin rebase: support `git rebase <upstream> <switch-to>`
+ builtin rebase: only store fully-qualified refs in `options.head_name`
+ builtin rebase: start a new rebase only if none is in progress
+ builtin rebase: support --force-rebase
+ builtin rebase: try to fast forward when possible
+ builtin rebase: require a clean worktree
+ builtin rebase: support the `verbose` and `diffstat` options
+ builtin rebase: support --quiet
+ builtin rebase: handle the pre-rebase hook and --no-verify
+ builtin rebase: support `git rebase --onto A...B`
+ builtin rebase: support --onto
(this branch is used by jc/rebase-in-c-5-test-typofix, js/rebase-autostash-fix, js/rebase-in-c-5.5-work-with-rebase-i-in-c, pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c.)
Rewrite "git rebase" in C.
* pk/rebase-in-c-3-acts (2018-09-06) 7 commits
(merged to 'next' on 2018-10-19 at 9275677430)
+ builtin rebase: stop if `git am` is in progress
+ builtin rebase: actions require a rebase in progress
+ builtin rebase: support --edit-todo and --show-current-patch
+ builtin rebase: support --quit
+ builtin rebase: support --abort
+ builtin rebase: support --skip
+ builtin rebase: support --continue
(this branch is used by jc/rebase-in-c-5-test-typofix, js/rebase-autostash-fix, js/rebase-in-c-5.5-work-with-rebase-i-in-c, pk/rebase-in-c-4-opts, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c and pk/rebase-in-c-2-basic.)
Rewrite "git rebase" in C.
* pk/rebase-in-c-4-opts (2018-10-11) 18 commits
(merged to 'next' on 2018-10-19 at 2770b2f5d5)
+ builtin rebase: support --root
+ builtin rebase: add support for custom merge strategies
+ builtin rebase: support `fork-point` option
+ merge-base --fork-point: extract libified function
+ builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
+ builtin rebase: support `--allow-empty-message` option
+ builtin rebase: support `--exec`
+ builtin rebase: support `--autostash` option
+ builtin rebase: support `-C` and `--whitespace=<type>`
+ builtin rebase: support `--gpg-sign` option
+ builtin rebase: support `--autosquash`
+ builtin rebase: support `keep-empty` option
+ builtin rebase: support `ignore-date` option
+ builtin rebase: support `ignore-whitespace` option
+ builtin rebase: support --committer-date-is-author-date
+ builtin rebase: support --rerere-autoupdate
+ builtin rebase: support --signoff
+ builtin rebase: allow selecting the rebase "backend"
(this branch is used by jc/rebase-in-c-5-test-typofix, js/rebase-autostash-fix, js/rebase-in-c-5.5-work-with-rebase-i-in-c, pk/rebase-in-c-5-test and pk/rebase-in-c-6-final; uses pk/rebase-in-c, pk/rebase-in-c-2-basic and pk/rebase-in-c-3-acts.)
Rewrite "git rebase" in C.
* pk/rebase-in-c-5-test (2018-10-11) 6 commits
(merged to 'next' on 2018-10-19 at 0e48bc8243)
+ builtin rebase: error out on incompatible option/mode combinations
+ builtin rebase: use no-op editor when interactive is "implied"
+ builtin rebase: show progress when connected to a terminal
+ builtin rebase: fast-forward to onto if it is a proper descendant
+ builtin rebase: optionally pass custom reflogs to reset_head()
+ builtin rebase: optionally auto-detect the upstream
(this branch is used by jc/rebase-in-c-5-test-typofix, js/rebase-autostash-fix, js/rebase-in-c-5.5-work-with-rebase-i-in-c and pk/rebase-in-c-6-final; uses pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts and pk/rebase-in-c-4-opts.)
Rewrite "git rebase" in C.
* pk/rebase-in-c-6-final (2018-10-11) 1 commit
(merged to 'next' on 2018-10-19 at 52f1dadf69)
+ rebase: default to using the builtin rebase
(this branch is used by js/rebase-autostash-fix; uses ag/rebase-i-in-c, js/rebase-in-c-5.5-work-with-rebase-i-in-c, pk/rebase-in-c, pk/rebase-in-c-2-basic, pk/rebase-in-c-3-acts, pk/rebase-in-c-4-opts and pk/rebase-in-c-5-test; is tangled with ag/sequencer-reduce-rewriting-todo, cb/printf-empty-format, jc/rebase-in-c-5-test-typofix, js/rebase-i-break and js/rebase-i-shortopt.)
The final step of rewriting "rebase -i" in C.
--------------------------------------------------
[New Topics]
* ab/dynamic-gettext-poison (2018-11-02) 1 commit
- i18n: make GETTEXT_POISON a runtime option
* js/rebase-p-tests (2018-11-02) 3 commits
- tests: optionally skip `git rebase -p` tests
- t3418: decouple test cases from a previous `rebase -p` test case
- t3404: decouple some test cases from outcomes of previous test cases
In preparation to the day when we can deprecate and remove the
"rebase -p", make sure we can skip and later remove tests for
it.
Will merge to 'next'.
* sg/travis-install-dependencies (2018-11-02) 1 commit
- travis-ci: install packages in 'ci/install-dependencies.sh'
(this branch uses ss/travis-ci-force-vm-mode.)
The procedure to install dependencies before testing at Travis CI
is getting revamped for both simplicity and flexibility, taking
advantage of the recent move to the vm-based environment.
--------------------------------------------------
[Stalled]
* lt/date-human (2018-07-09) 1 commit
- 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.
--------------------------------------------------
[Cooking]
* ab/push-dwim-dst (2018-10-29) 9 commits
- SQUASH???
- push doc: document the DWYM behavior pushing to unqualified <dst>
- push: add DWYM support for "git push refs/remotes/...:<dst>"
- push: test that <src> doesn't DWYM if <dst> is unqualified
- push: add an advice on unqualified <dst> push
- push: move unqualified refname error into a function
- push: improve the error shown on unqualified <dst> push
- i18n: remote.c: mark error(...) messages for translation
- remote.c: add braces in anticipation of a follow-up change
"git push $there $src:$dst" rejects when $dst is not a fully
qualified refname and not clear what the end user meant. The
codepath has been taught to give a clearer error message, and also
guess where the push should go by taking the type of the pushed
object into account (e.g. a tag object would want to go under
refs/tags/).
The last few steps are questionable.
cf. <87in1lkw54.fsf@evledraar.gmail.com>
* md/list-lazy-objects-fix (2018-10-29) 1 commit
- list-objects.c: don't segfault for missing cmdline objects
"git rev-list --exclude-promissor-objects" had to take an object
that does not exist locally (and is lazily available) from the
command line without barfing, but the code dereferenced NULL.
That sympotom may be worth addressing, but I think the "fix" is
overly broad and is wrong. Giving a missing object should be
diagnosed as an error, not swept under the rug silently.
* nd/i18n (2018-10-29) 12 commits
- fsck: mark strings for translation
- parse-options.c: mark more strings for translation
- parse-options: replace opterror() with optname()
- repack: mark more strings for translation
- remote.c: mark messages for translation
- reflog: mark strings for translation
- read-cache.c: add missing colon separators
- read-cache.c: mark more strings for translation
- attr.c: mark more string for translation
- archive.c: mark more strings for translation
- alias.c: mark split_cmdline_strerror() strings for translation
- git.c: mark more strings for translation
More _("i18n") markings.
Some changes seem not to be mere mechanical convesions and needs
a careful review.
* nd/pthreads (2018-10-29) 10 commits
- read-cache.c: initialize copy_len to shut up gcc 8
- Clean up pthread_create() error handling
- read-cache.c: remove #ifdef NO_PTHREADS
- pack-objects: remove #ifdef NO_PTHREADS
- preload-index.c: remove #ifdef NO_PTHREADS
- grep: remove #ifdef NO_PTHREADS
- attr.c: remove #ifdef NO_PTHREADS
- name-hash.c: remove #ifdef NO_PTHREADS
- index-pack: remove #ifdef NO_PTHREADS
- thread-utils: macros to unconditionally compile pthreads API
The codebase has been cleaned up to reduce "#ifndef NO_PTHREADS".
* nd/wildmatch-double-asterisk (2018-10-29) 1 commit
(merged to 'next' on 2018-11-01 at 627186d020)
+ wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
A pattern with '**' that does not have a slash on either side used
to be an invalid one, but the code now treats such double-asterisks
the same way as two normal asterisks that happen to be adjacent to
each other.
Will merge to 'master'.
* rj/header-cleanup (2018-10-29) 3 commits
(merged to 'next' on 2018-11-01 at 975e56048f)
+ commit-reach.h: add missing declarations (hdr-check)
+ ewok_rlw.h: add missing 'inline' to function definition
+ fetch-object.h: add missing declaration (hdr-check)
Code cleanup.
Will merge to 'master'.
* js/mingw-ns-filetime (2018-10-24) 3 commits
(merged to 'next' on 2018-10-29 at 4563a0d9d0)
+ mingw: implement nanosecond-precision file times
+ mingw: replace MSVCRT's fstat() with a Win32-based implementation
+ mingw: factor out code to set stat() data
Windows port learned to use nano-second resolution file timestamps.
Will merge to 'master'.
* bp/refresh-index-using-preload (2018-10-30) 1 commit
(merged to 'next' on 2018-11-01 at 289e6bcece)
+ speed up refresh_index() by utilizing preload_index()
The helper function to refresh the cached stat information in the
in-core index has learned to perform the lstat() part of the
operation in parallel on multi-core platforms.
Will merge to 'master'.
* sg/test-verbose-log (2018-10-30) 1 commit
(merged to 'next' on 2018-11-01 at 0c4a18a71f)
+ test-lib: introduce the '-V' short option for '--verbose-log'
Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.
Will merge to 'master'.
* ab/pack-tests-cleanup (2018-10-31) 3 commits
- index-pack tests: don't leave test repo dirty at end
- pack-objects tests: don't leave test .git corrupt at end
- pack-objects test: modernize style
A couple of tests used to leave the repository in a state that is
deliberately corrupt, which have been corrected.
Will merge to 'next'.
* jk/detect-truncated-zlib-input (2018-10-31) 4 commits
- Adjust for 2.19.x series
- cat-file: handle streaming failures consistently
- check_stream_sha1(): handle input underflow
- t1450: check large blob in trailing-garbage test
A regression in Git 2.12 era made "git fsck" fall into an infinite
loop while processing truncated loose objects.
Will merge to 'next'.
* jk/proto-v2-ref-prefix-fix (2018-10-31) 2 commits
- ls-remote: pass heads/tags prefixes to transport
- ls-remote: do not send ref prefixes for patterns
"git ls-remote $there foo" was broken by recent update for the
protocol v2 and stopped showing refs that match 'foo' that are not
refs/{heads,tags}/foo, which has been fixed.
Will merge to 'next'.
* jk/stream-pack-non-delta-clarification (2018-10-31) 1 commit
- read_istream_pack_non_delta(): document input handling
Additional comment on a tricky piece of code to help developers.
Will merge to 'next'.
* js/mingw-isatty-and-dup2 (2018-10-31) 1 commit
- mingw: fix isatty() after dup2()
Windows fix.
Will merge to 'next'.
* js/mingw-perl5lib (2018-10-31) 4 commits
- mingw: unset PERL5LIB by default
- config: move Windows-specific config settings into compat/mingw.c
- config: allow for platform-specific core.* config settings
- config: rename `dummy` parameter to `cb` in git_default_config()
Windows fix.
Will merge to 'next'.
* js/mingw-utf8-env (2018-10-31) 2 commits
- mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)
- t7800: fix quoting
Windows fix.
Will merge to 'next'.
* ma/sequencer-do-reset-saner-loop-termination (2018-10-31) 1 commit
- sequencer: break out of loop explicitly
Code readability fix.
Will merge to 'next'.
* nb/worktree-api-doc (2018-10-31) 2 commits
- worktree: rename is_worktree_locked to worktree_lock_reason
- worktree: update documentation for lock_reason and lock_reason_valid
Code readability fix.
Will merge to 'next'.
* sh/mingw-safer-compat-poll (2018-11-01) 1 commit
- poll: use GetTickCount64() to avoid wrap-around issues
Windows fix.
Will merge to 'next'.
* sb/more-repo-in-api (2018-10-19) 19 commits
- 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 arbitrary repositories
- commit: prepare get_commit_buffer to handle arbitrary repositories
- commit-reach: prepare in_merge_bases[_many] to handle arbitrary repositories
- commit-reach: prepare get_merge_bases to handle arbitrary repositories
- commit-reach.c: allow get_merge_bases_many_0 to handle arbitrary repositories
- commit-reach.c: allow remove_redundant to handle arbitrary repositories
- commit-reach.c: allow merge_bases_many to handle arbitrary repositories
- commit-reach.c: allow paint_down_to_common to handle arbitrary repositories
- commit: allow parse_commit* to handle arbitrary repositories
- object: parse_object to honor its repository argument
- object-store: prepare has_{sha1, object}_file[_with_flags] to handle arbitrary repositories
- object-store: prepare read_object_file to deal with arbitrary repositories
- object-store: allow read_object_file_extended to read from arbitrary repositories
- packfile: allow has_packed_and_bad to handle arbitrary repositories
- sha1_file: allow read_object to read objects in arbitrary repositories
The in-core repository instances are passed through more codepaths.
On hold.
Not quite correct?
cf. <20181025091406.GK30222@szeder.dev>
Reroll being worked on.
cf. <20181030220817.61691-1-sbeller@google.com>
* en/merge-path-collision (2018-10-22) 8 commits
- merge-recursive: improve rename/rename(1to2)/add[/add] handling
- merge-recursive: use handle_file_collision for add/add conflicts
- merge-recursive: improve handling for rename/rename(2to1) conflicts
- merge-recursive: fix rename/add conflict handling
- merge-recursive: new function for better colliding conflict resolutions
- merge-recursive: increase marker length with depth of recursion
- t6036, t6042: testcases for rename collision of already conflicting files
- Add testcases for consistency in file collision conflict handling
(this branch uses en/merge-cleanup-more.)
Updates for corner cases in merge-recursive.
Expecting a reroll.
cf. <CABPp-BGq1YDdzZ6CqzCp9QXPZy6XxV8sujyRxwBc-EnS+ygSrg@mail.gmail.com>
* jt/tighten-fetch-proto-v2-response (2018-11-01) 1 commit
- fetch-pack: be more precise in parsing v2 response
"git fetch" was a bit loose in parsing resposes from the other side
when talking over the protocol v2.
Will merge to 'next'.
* nd/complete-format-patch (2018-10-22) 1 commit
. completion: use __gitcomp_builtin for format-patch
Expecting a reroll.
* nd/completion-negation (2018-10-22) 1 commit
(merged to 'next' on 2018-10-29 at 87e73b0c72)
+ completion: fix __gitcomp_builtin no longer consider extra options
The command line completion machinery (in contrib/) has been
updated to allow the completion script to tweak the list of options
that are reported by the parse-options machinery correctly.
Will merge to 'master'.
* nd/config-split (2018-10-29) 79 commits
- config.txt: remove config/dummy.txt
- config.txt: move worktree.* to a separate file
- config.txt: move web.* to a separate file
- config.txt: move versionsort.* to a separate file
- config.txt: move user.* to a separate file
- config.txt: move url.* to a separate file
- config.txt: move uploadpack.* to a separate file
- config.txt: move uploadarchive.* to a separate file
- config.txt: move transfer.* to a separate file
- config.txt: move tag.* to a separate file
- config.txt: move submodule.* to a separate file
- config.txt: move stash.* to a separate file
- config.txt: move status.* to a separate file
- config.txt: move splitIndex.* to a separate file
- config.txt: move showBranch.* to a separate file
- config.txt: move sequencer.* to a separate file
- config.txt: move sendemail-config.txt to config/
- config.txt: move reset.* to a separate file
- config.txt: move rerere.* to a separate file
- config.txt: move repack.* to a separate file
- config.txt: move remotes.* to a separate file
- config.txt: move remote.* to a separate file
- config.txt: move receive-config.txt to config/
- config.txt: move rebase-config.txt to config/
- config.txt: move push-config.txt to config/
- config.txt: move pull-config.txt to config/
- config.txt: move protocol.* to a separate file
- config.txt: move pretty.* to a separate file
- config.txt: move pager.* to a separate file
- config.txt: move pack.* to a separate file
- config.txt: move notes.* to a separate file
- config.txt: move mergetool.* to a separate file
- config.txt: move merge-config.txt to config/
- config.txt: move man.* to a separate file
- config.txt: move mailmap.* to a separate file
- config.txt: move mailinfo.* to a separate file
- config.txt: move log.* to a separate file
- config.txt: move interactive.* to a separate file
- config.txt: move instaweb.* to a separate file
- config.txt: move init.* to a separate file
- config.txt: move index.* to a separate file
- git-imap-send.txt: move imap.* to a separate file
- config.txt: move i18n.* to a separate file
- config.txt: move http.* to a separate file
- config.txt: move ssh.* to a separate file
- config.txt: move help.* to a separate file
- config.txt: move guitool.* to a separate file
- config.txt: move gui-config.txt to config/
- config.txt: move gpg.* to a separate file
- config.txt: move grep.* to a separate file
- config.txt: move gitweb.* to a separate file
- config.txt: move gitcvs-config.txt to config/
- config.txt: move gc.* to a separate file
- config.txt: move fsck.* to a separate file
- config.txt: move fmt-merge-msg-config.txt to config/
- config.txt: move format-config.txt to config/
- config.txt: move filter.* to a separate file
- config.txt: move fetch-config.txt to config/
- config.txt: move fastimport.* to a separate file
- config.txt: move difftool.* to a separate file
- config.txt: move diff-config.txt to config/
- config.txt: move completion.* to a separate file
- config.txt: move credential.* to a separate file
- config.txt: move commit.* to a separate file
- config.txt: move column.* to a separate file
- config.txt: move color.* to a separate file
- config.txt: move clean.* to a separate file
- config.txt: move checkout.* to a separate file
- config.txt: move browser.* to a separate file
- config.txt: move branch.* to a separate file
- config.txt: move blame.* to a separate file
- config.txt: move apply.* to a separate file
- config.txt: move am.* to a separate file
- config.txt: move alias.* to a separate file
- config.txt: move add.* to a separate file
- config.txt: move core.* to a separate file
- config.txt: move advice.* to a separate file
- Update makefile in preparation for Documentation/config/*.txt
- Merge branches 'bp/reset-quiet' and 'js/mingw-http-ssl' into nd/config-split
(this branch uses bp/reset-quiet and js/mingw-http-ssl; is tangled with jc/http-curlver-warnings.)
Split the overly large Documentation/config.txt file into million
little pieces. This potentially allows each individual piece
included into the manual page of the command it affects more easily.
Will merge to 'next'.
This is a painful conversions while many other topics in flight
wants to add to or edit the documentation of configuration
variables.
* nd/per-worktree-config (2018-10-22) 2 commits
(merged to 'next' on 2018-11-01 at 3746343ca8)
+ worktree: add per-worktree config files
+ t1300: extract and use test_cmp_config()
A fourth class of configuration files (in addition to the
traditional "system wide", "per user in the $HOME directory" and
"per repository in the $GIT_DIR/config") has been introduced so
that different worktrees that share the same repository (hence the
same $GIT_DIR/config file) can use different customization.
Will merge to 'master'.
* nd/submodule-unused-vars (2018-10-22) 1 commit
(merged to 'next' on 2018-10-29 at 33641dcc89)
+ submodule.c: remove some of the_repository references
Code clean-up.
Will merge to 'master'.
* nd/unpack-trees-with-cache-tree (2018-10-22) 1 commit
(merged to 'next' on 2018-10-29 at de51b606da)
+ read-cache: use of memory after it is freed
Trivial bugfix.
Will merge to 'master'.
* ag/rev-parse-all-exclude-fix (2018-11-01) 1 commit
- rev-parse: clear --exclude list after 'git rev-parse --all'
"git rev-parse --exclude=* --branches --branches" (i.e. first
saying "add only things that do not match '*' out of all branches"
and then adding all branches, without any exclusion this time")
worked as expected, but "--exclude=* --all --all" did not work the
same way, which has been fixed.
Will merge to 'next'.
* bp/reset-quiet (2018-10-24) 3 commits
(merged to 'next' on 2018-10-29 at 71f4fbc802)
+ reset: warn when refresh_index() takes more than 2 seconds
+ reset: add new reset.quiet config setting
+ reset: don't compute unstaged changes after reset when --quiet
(this branch is used by nd/config-split.)
"git reset --quiet" no longer runs "update-index --refresh"
internally, which shifts the refresh cost away from the command.
Will merge to 'master'.
* js/remote-archive-dwimfix (2018-10-26) 1 commit
(merged to 'next' on 2018-10-26 at f5bf6946bd)
+ archive: initialize archivers earlier
The logic to determine the archive type "git archive" uses did not
correctly kick in for "git archive --remote", which has been
corrected.
Will merge to 'master'.
* js/shallow-and-fetch-prune (2018-10-25) 3 commits
(merged to 'next' on 2018-10-26 at 93b7196560)
+ repack -ad: prune the list of shallow commits
+ shallow: offer to prune only non-existing entries
+ repack: point out a bug handling stale shallow info
"git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.
Will merge to 'master'.
* jw/send-email-no-auth (2018-10-23) 1 commit
(merged to 'next' on 2018-10-29 at a3fbbdb889)
+ send-email: explicitly disable authentication
"git send-email" learned to disable SMTP authentication via the
"--smtp-auth=none" option, even when the smtp username is given
(which turns the authentication on by default).
Will merge to 'master'.
* md/exclude-promisor-objects-fix (2018-10-23) 2 commits
(merged to 'next' on 2018-10-29 at fb36a5dcbe)
+ exclude-promisor-objects: declare when option is allowed
+ Documentation/git-log.txt: do not show --exclude-promisor-objects
Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense. This has been corrected.
Will merge to 'master'.
* mg/gpg-fingerprint (2018-10-23) 3 commits
(merged to 'next' on 2018-10-26 at 1e219cb754)
+ gpg-interface.c: obtain primary key fingerprint as well
+ gpg-interface.c: support getting key fingerprint via %GF format
+ gpg-interface.c: use flags to determine key/signer info presence
(this branch uses mg/gpg-parse-tighten; is tangled with jc/gpg-cocci-preincr.)
New "--pretty=format:" placeholders %GF and %GP that show the GPG
key fingerprints have been invented.
Will merge to 'master'.
* jc/http-curlver-warnings (2018-10-26) 1 commit
(merged to 'next' on 2018-10-26 at 870e125cec)
+ http: give curl version warnings consistently
(this branch uses js/mingw-http-ssl; is tangled with nd/config-split.)
Warning message fix.
Will merge to 'master'.
* sd/stash-wo-user-name (2018-11-02) 1 commit
- t3903-stash: test without configured user.name and user.email
An early part of a wip.
* sg/test-rebase-editor-fix (2018-10-29) 1 commit
(merged to 'next' on 2018-11-01 at 271e0fc663)
+ t3404-rebase-interactive: test abbreviated commands
Will merge to 'master'.
* ss/travis-ci-force-vm-mode (2018-10-26) 1 commit
(merged to 'next' on 2018-11-01 at 8596bb2a65)
+ travis-ci: no longer use containers
(this branch is used by sg/travis-install-dependencies.)
The "container" mode of TravisCI is going away. Our .travis.yml
file is getting prepared for the transition.
Will merge to 'master'.
* tb/char-may-be-unsigned (2018-10-26) 1 commit
(merged to 'next' on 2018-11-01 at 9e14f289f8)
+ path.c: char is not (always) signed
Build portability fix.
Will merge to 'master'.
* jt/upload-pack-v2-fix-shallow (2018-10-19) 3 commits
(merged to 'next' on 2018-10-29 at d9010b3c7b)
+ upload-pack: clear flags before each v2 request
+ upload-pack: make want_obj not global
+ upload-pack: make have_obj not global
"git fetch" over protocol v2 into a shallow repository failed to
fetch full history behind a new tip of history that was diverged
before the cut-off point of the history that was previously fetched
shallowly.
Will merge to 'master'.
* pw/am-rebase-read-author-script (2018-11-01) 5 commits
- sequencer: use read_author_script()
- add read_author_script() to libgit
- am: rename read_author_script()
- am: improve author-script error reporting
- am: don't die in read_author_script()
Unify code to read the author-script used in "git am" and the
commands that use the sequencer machinery, e.g. "git rebase -i".
Will merge to 'next'.
* sb/submodule-url-to-absolute (2018-10-18) 1 commit
(merged to 'next' on 2018-10-29 at 4264c150cb)
+ submodule helper: convert relative URL to absolute URL if needed
Some codepaths failed to form a proper URL when .gitmodules record
the URL to a submodule repository as relative to the repository of
superproject, which has been corrected.
Will merge to 'master'.
* en/merge-cleanup-more (2018-10-18) 2 commits
(merged to 'next' on 2018-10-26 at c706319c26)
+ merge-recursive: avoid showing conflicts with merge branch before HEAD
+ merge-recursive: improve auto-merging messages with path collisions
(this branch is used by en/merge-path-collision.)
Further clean-up of merge-recursive machinery.
Will merge to 'master'.
* mg/gpg-parse-tighten (2018-10-22) 1 commit
(merged to 'next' on 2018-10-26 at efdec77193)
+ gpg-interface.c: detect and reject multiple signatures on commits
(this branch is used by jc/gpg-cocci-preincr and mg/gpg-fingerprint.)
Detect and reject a signature block that has more than one GPG
signature.
Will merge to 'master'.
* bc/sha-256 (2018-10-25) 12 commits
- 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".
Expecting a reroll.
cf. <20181031225521.GA573515@genre.crustytoothpaste.net>
* js/mingw-http-ssl (2018-10-26) 3 commits
(merged to 'next' on 2018-10-26 at 318e82e101)
+ http: when using Secure Channel, ignore sslCAInfo by default
+ http: add support for disabling SSL revocation checks in cURL
+ http: add support for selecting SSL backends at runtime
(this branch is used by jc/http-curlver-warnings and nd/config-split.)
On platforms with recent cURL library, http.sslBackend configuration
variable can be used to choose a different SSL backend at runtime.
The Windows port uses this mechanism to switch between OpenSSL and
Secure Channel while talking over the HTTPS protocol.
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.
On hold, monitoring the discussion.
cf. <nycvar.QRO.7.76.6.1810151657080.4546@tvgsbejvaqbjf.bet>
cf. <nycvar.QRO.7.76.6.1810261033440.4546@tvgsbejvaqbjf.bet>
* du/branch-show-current (2018-10-26) 1 commit
- branch: introduce --show-current display option
"git branch" learned a new subcommand "--show-current".
On hold, monitoring the discussion.
cf. <CAPig+cRVdogY8VLXcftbY=n9tQ9wDo4YrnrdU6+pZ3ch6uhZGA@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".
* jc/war-on-string-list (2018-11-01) 1 commit
- fetch: replace string-list used as a look-up table with a hashmap
Replace three string-list instances used as look-up tables in "git
fetch" with hashmaps.
Will merge to 'next'.
* js/remote-archive-v2 (2018-09-28) 4 commits
(merged to 'next' on 2018-10-12 at 5f34377f60)
+ archive: allow archive over HTTP(S) with proto v2
+ archive: implement protocol v2 archive command
+ archive: use packet_reader for communications
+ archive: follow test standards around assertions
The original implementation of "git archive --remote" more or less
bypassed the transport layer and did not work over http(s). The
version 2 of the protocol is defined to allow going over http(s) as
well as Git native transport.
Will hold.
cf. <20181016212008.GA249669@google.com>
Breaks interoperability.
* ag/sequencer-reduce-rewriting-todo (2018-10-09) 16 commits
. rebase--interactive: move transform_todo_file() to rebase--interactive.c
. sequencer: fix a call to error() in transform_todo_file()
. 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_transform() 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 transform_todos() to work on a todo_list
. 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: make the todo_list structure public
. sequencer: clear the number of items of a todo_list before parsing
. Merge branch 'ag/rebase-i-in-c' into ag/sequencer-reduce-rewriting-todo
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.
A reroll exists but is based on a stale codebase and is painful to
merge.
* ds/test-multi-pack-index (2018-10-26) 4 commits
- packfile: close multi-pack-index in close_all_packs
- multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX
- midx: close multi-pack-index on repack
- midx: fix broken free() in close_midx()
Tests for the recently introduced multi-pack index machinery.
Will merge to 'next'.
* nd/per-worktree-ref-iteration (2018-10-22) 8 commits
- reflog expire: cover reflog from all worktrees
- fsck: check HEAD and reflog from other worktrees
- fsck: move fsck_head_link() to get_default_heads() to avoid some globals
- revision.c: better error reporting on ref from different worktrees
- revision.c: correct a parameter name
- refs: new ref types to make per-worktree refs visible to all worktrees
- Add a place for (not) sharing stuff between worktrees
- refs.c: indent with tabs, not spaces
The code to traverse objects for reachability, used to decide what
objects are unreferenced and expendable, have been taught to also
consider per-worktree refs of other worktrees as starting points to
prevent data loss.
Will merge to 'next'.
* ds/reachable-topo-order (2018-11-02) 7 commits
- t6012: make rev-list tests more interesting
- revision.c: generation-based topo-order algorithm
- commit/revisions: bookkeeping before refactoring
- revision.c: begin refactoring --topo-order logic
- test-reach: add rev-list tests
- test-reach: add run_three_modes method
- prio-queue: add 'peek' operation
The revision walker machinery learned to take advantage of the
commit generation numbers stored in the commit-graph file.
* sb/submodule-recursive-fetch-gets-the-tip (2018-10-31) 11 commits
- builtin/fetch: check for submodule updates in any ref update
- fetch: try fetching submodules if needed objects were not 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
- Merge branch 'ao/submodule-wo-gitmodules-checked-out' into sb/submodule-recursive-fetch-gets-the-tip
(this branch uses ao/submodule-wo-gitmodules-checked-out.)
"git fetch --recurse-submodules" may not fetch the necessary commit
that is bound to the superproject, which is getting corrected.
On hold, monitoring the discussion.
cf. <20181025233231.102245-1-sbeller@google.com>
* 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>
* ao/submodule-wo-gitmodules-checked-out (2018-10-31) 10 commits
- t/helper: add test-submodule-nested-repo-config
- submodule: support reading .gitmodules when it's not in the working tree
- submodule: add a helper to check if it is safe to write to .gitmodules
- t7506: clean up .gitmodules properly before setting up new scenario
- submodule: use the 'submodule--helper config' command
- submodule--helper: add a new 'config' subcommand
- t7411: be nicer to future tests and really clean things up
- t7411: merge tests 5 and 6
- submodule: factor out a config_set_in_gitmodules_file_gently function
- submodule: add a print_config_from_gitmodules() helper
(this branch is used by sb/submodule-recursive-fetch-gets-the-tip.)
The submodule support has been updated to read from the blob at
HEAD:.gitmodules when the .gitmodules file is missing from the
working tree.
Will merge to 'next'.
* ps/stash-in-c (2018-10-15) 21 commits
- stash: replace all `write-tree` child processes with API calls
- stash: optimize `get_untracked_files()` and `check_changes()`
- stash: convert `stash--helper.c` into `stash.c`
- 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
- strbuf.c: add `strbuf_join_argv()`
- sha1-name.c: add `get_oidf()` which acts like `get_oid()`
"git stash" rewritten in C.
Almost there.
cf. <20181015221040.GD4883@hank.intra.tgummerer.com>
* 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.
--------------------------------------------------
[Discarded]
* ab/reject-alias-loop (2018-10-19) 1 commit
(merged to 'next' on 2018-10-26 at bc213f1bef)
+ alias: detect loops in mixed execution mode
Two (or more) aliases that mutually refer to each other can form an
infinite loop; we now attempt to notice and stop.
Discarded.
Reverted out of 'next'.
cf. <87sh0slvxm.fsf@evledraar.gmail.com>
^ permalink raw reply [relevance 1%]
* Re: master updated? (was Re: What's cooking in git.git (Nov 2018, #01; Thu, 1))
@ 2018-11-02 0:04 6% ` Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-11-02 0:04 UTC (permalink / raw)
To: Derrick Stolee; +Cc: git
Derrick Stolee <stolee@gmail.com> writes:
> On 11/1/2018 5:59 AM, Junio C Hamano wrote:
>> --------------------------------------------------
>> [Graduated to "master"]
>
> I see that several topics graduated, but it appears the master branch
> was not updated at https://github.com/gister/git. Was this
> intentional?
The "Nov #1" issue of "What's cooking" report lists various topics
including ah/doc-updates, ..., uk/merge- subtree-doc-update in the
"Graduated" section by mistake (probably due to crossing month
boundary); they already were listed in the previous "Oct #6" issue.
Hopefully we'll have the following topics graduate to 'master'
today, as part of the Eighth batch of the cycle.
js/rebase-i-shortopt
js/rebase-i-break
js/rebase-autostash-fix
cb/printf-empty-format
jc/rebase-in-c-5-test-typofix
pk/rebase-in-c-6-final
js/rebase-in-c-5.5-work-with-rebase-i-in-c
pk/rebase-in-c-5-test
pk/rebase-in-c-4-opts
pk/rebase-in-c-3-acts
pk/rebase-in-c-2-basic
ag/rebase-i-in-c
pk/rebase-in-c
Thanks.
^ permalink raw reply [relevance 6%]
* [ANNOUNCE] Git v2.17.0-rc2
@ 2018-03-28 19:56 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-03-28 19:56 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.17.0-rc2 is now available for testing
at the usual places. It is comprised of 499 non-merge commits
since v2.16.0, contributed by 62 people, 19 of which are new faces.
I am hoping that we can have the final version tagged at the end of
coming weekend, before I fly out to Tokyo. I expect to be offline
most of the next week after the final is tagged.
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.17.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.16.0 are as follows.
Welcome to the Git development community!
Adam Borowski, Alban Gruin, Andreas G. Schacker, Bernhard
M. Wiedemann, Christian Ludwig, Gargi Sharma, Genki Sky,
Gregory Herrero, Jon Simons, Juan F. Codagnone, Kim Gybels,
Lucas Werkmeister, Mathias Rav, Michele Locati, Motoki Seki,
Stefan Moch, Stephen R Guglielmo, Tatyana Krasnukha, and Thomas
Levesque.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Bennée, Ben
Peart, Brandon Williams, brian m. carlson, Christian Couder,
Daniel Knittl-Frank, David Pursehouse, Derrick Stolee, Elijah
Newren, Eric Sunshine, Eric Wong, Jason Merrill, Jeff Hostetler,
Jeff King, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
Junio C Hamano, Kaartic Sivaraam, Mårten Kongstad, Martin
Ågren, Matthieu Moy, Michael Haggerty, Nathan Payre, Nguyễn
Thái Ngọc Duy, Nicolas Morey-Chaisemartin, Olga Telezhnaya,
Patryk Obara, Phillip Wood, Prathamesh Chavan, Ramsay Jones,
Randall S. Becker, Rasmus Villemoes, René Scharfe, Robert
P. J. Day, Stefan Beller, SZEDER Gábor, Thomas Gummerer,
Todd Zullinger, Torsten Bögershausen, and Yasushi SHOJI.
----------------------------------------------------------------
Git 2.17 Release Notes (draft)
==============================
Updates since v2.16
-------------------
UI, Workflows & Features
* "diff" family of commands learned "--find-object=<object-id>" option
to limit the findings to changes that involve the named object.
* "git format-patch" learned to give 72-cols to diffstat, which is
consistent with other line length limits the subcommand uses for
its output meant for e-mails.
* The log from "git daemon" can be redirected with a new option; one
relevant use case is to send the log to standard error (instead of
syslog) when running it from inetd.
* "git rebase" learned to take "--allow-empty-message" option.
* "git am" has learned the "--quit" option, in addition to the
existing "--abort" option; having the pair mirrors a few other
commands like "rebase" and "cherry-pick".
* "git worktree add" learned to run the post-checkout hook, just like
"git clone" runs it upon the initial checkout.
* "git tag" learned an explicit "--edit" option that allows the
message given via "-m" and "-F" to be further edited.
* "git fetch --prune-tags" may be used as a handy short-hand for
getting rid of stale tags that are locally held.
* The new "--show-current-patch" option gives an end-user facing way
to get the diff being applied when "git rebase" (and "git am")
stops with a conflict.
* "git add -p" used to offer "/" (look for a matching hunk) as a
choice, even there was only one hunk, which has been corrected.
Also the single-key help is now given only for keys that are
enabled (e.g. help for '/' won't be shown when there is only one
hunk).
* Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
the side branch being merged is a descendant of the current commit,
create a merge commit instead of fast-forwarding) when merging a
tag object. This was appropriate default for integrators who pull
signed tags from their downstream contributors, but caused an
unnecessary merges when used by downstream contributors who
habitually "catch up" their topic branches with tagged releases
from the upstream. Update "git merge" to default to --no-ff only
when merging a tag object that does *not* sit at its usual place in
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
mitigate the problem.
* "git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.
* "git diff" and friends learned funcname patterns for Go language
source files.
* "git send-email" learned "--reply-to=<address>" option.
* Funcname pattern used for C# now recognizes "async" keyword.
* In a way similar to how "git tag" learned to honor the pager
setting only in the list mode, "git config" learned to ignore the
pager setting when it is used for setting values (i.e. when the
purpose of the operation is not to "show").
Performance, Internal Implementation, Development Support etc.
* More perf tests for threaded grep
* "perf" test output can be sent to codespeed server.
* The build procedure for perl/ part has been greatly simplified by
weaning ourselves off of MakeMaker.
* Perl 5.8 or greater has been required since Git 1.7.4 released in
2010, but we continued to assume some core modules may not exist and
used a conditional "eval { require <<module>> }"; we no longer do
this. Some platforms (Fedora/RedHat/CentOS, for example) ship Perl
without all core modules by default (e.g. Digest::MD5, File::Temp,
File::Spec, Net::Domain, Net::SMTP). Users on such platforms may
need to install these additional modules.
* As a convenience, we install copies of Perl modules we require which
are not part of the core Perl distribution (e.g. Error and
Mail::Address). Users and packagers whose operating system provides
these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the
bundled modules.
* In preparation for implementing narrow/partial clone, the machinery
for checking object connectivity used by gc and fsck has been
taught that a missing object is OK when it is referenced by a
packfile specially marked as coming from trusted repository that
promises to make them available on-demand and lazily.
* The machinery to clone & fetch, which in turn involves packing and
unpacking objects, has been told how to omit certain objects using
the filtering mechanism introduced by another topic. It now knows
to mark the resulting pack as a promisor pack to tolerate missing
objects, laying foundation for "narrow" clones.
* The first step to getting rid of mru API and using the
doubly-linked list API directly instead.
* Retire mru API as it does not give enough abstraction over
underlying list API to be worth it.
* Rewrite two more "git submodule" subcommands in C.
* The tracing machinery learned to report tweaking of environment
variables as well.
* Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
* Prevent "clang-format" from breaking line after function return type.
* The sequencer infrastructure is shared across "git cherry-pick",
"git rebase -i", etc., and has always spawned "git commit" when it
needs to create a commit. It has been taught to do so internally,
when able, by reusing the codepath "git commit" itself uses, which
gives performance boost for a few tens of percents in some sample
scenarios.
* Push the submodule version of collision-detecting SHA-1 hash
implementation a bit harder on builders.
* Avoid mmapping small files while using packed refs (especially ones
with zero size, which would cause later munmap() to fail).
* Conversion from uchar[20] to struct object_id continues.
* More tests for wildmatch functions.
* The code to binary search starting from a fan-out table (which is
how the packfile is indexed with object names) has been refactored
into a reusable helper.
* We now avoid using identifiers that clash with C++ keywords. Even
though it is not a goal to compile Git with C++ compilers, changes
like this help use of code analysis tools that targets C++ on our
codebase.
* The executable is now built in 'script' phase in Travis CI integration,
to follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).
(merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
* Writing out the index file when the only thing that changed in it
is the untracked cache information is often wasteful, and this has
been optimized out.
* Various pieces of Perl code we have have been cleaned up.
* Internal API clean-up to allow write_locked_index() optionally skip
writing the in-core index when it is not modified.
Also contains various documentation updates and code clean-ups.
Fixes since v2.16
-----------------
* An old regression in "git describe --all $annotated_tag^0" has been
fixed.
* "git status" after moving a path in the working tree (hence making
it appear "removed") and then adding with the -N option (hence
making that appear "added") detected it as a rename, but did not
report the old and new pathnames correctly.
* "git svn dcommit" did not take into account the fact that a
svn+ssh:// URL with a username@ (typically used for pushing) refers
to the same SVN repository without the username@ and failed when
svn.pushmergeinfo option is set.
* API clean-up around revision traversal.
* "git merge -Xours/-Xtheirs" learned to use our/their version when
resolving a conflicting updates to a symbolic link.
* "git clone $there $here" is allowed even when here directory exists
as long as it is an empty directory, but the command incorrectly
removed it upon a failure of the operation.
* "git commit --fixup" did not allow "-m<message>" option to be used
at the same time; allow it to annotate resulting commit with more
text.
* When resetting the working tree files recursively, the working tree
of submodules are now also reset to match.
* "git stash -- <pathspec>" incorrectly blew away untracked files in
the directory that matched the pathspec, which has been corrected.
* Instead of maintaining home-grown email address parsing code, ship
a copy of reasonably recent Mail::Address to be used as a fallback
in 'git send-email' when the platform lacks it.
(merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
* "git add -p" was taught to ignore local changes to submodules as
they do not interfere with the partial addition of regular changes
anyway.
* Avoid showing a warning message in the middle of a line of "git
diff" output.
(merge 4e056c989f nd/diff-flush-before-warning later to maint).
* The http tracing code, often used to debug connection issues,
learned to redact potentially sensitive information from its output
so that it can be more safely sharable.
(merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
* Crash fix for a corner case where an error codepath tried to unlock
what it did not acquire lock on.
(merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
* The split-index mode had a few corner case bugs fixed.
(merge ae59a4e44f tg/split-index-fixes later to maint).
* Assorted fixes to "git daemon".
(merge ed15e58efe jk/daemon-fixes later to maint).
* Completion of "git merge -s<strategy>" (in contrib/) did not work
well in non-C locale.
(merge 7cc763aaa3 nd/list-merge-strategy later to maint).
* Workaround for segfault with more recent versions of SVN.
(merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
* Plug recently introduced leaks in fsck.
(merge ba3a08ca0e jt/fsck-code-cleanup later to maint).
* "git pull --rebase" did not pass verbosity setting down when
recursing into a submodule.
(merge a56771a668 sb/pull-rebase-submodule later to maint).
* The way "git reset --hard" reports the commit the updated HEAD
points at is made consistent with the way how the commit title is
generated by the other parts of the system. This matters when the
title is spread across physically multiple lines.
(merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).
* Test fixes.
(merge 63b1a175ee sg/test-i18ngrep later to maint).
* Some bugs around "untracked cache" feature have been fixed. This
will notice corrupt data in the untracked cache left by old and
buggy code and issue a warning---the index can be fixed by clearing
the untracked cache from it.
(merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).
(merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).
* "git blame HEAD COPYING" in a bare repository failed to run, while
"git blame HEAD -- COPYING" run just fine. This has been corrected.
* "git add" files in the same directory, but spelling the directory
path in different cases on case insensitive filesystem, corrupted
the name hash data structure and led to unexpected results. This
has been corrected.
(merge c95525e90d bp/name-hash-dirname-fix later to maint).
* "git rebase -p" mangled log messages of a merge commit, which is
now fixed.
(merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).
* Some low level protocol codepath could crash when they get an
unexpected flush packet, which is now fixed.
(merge bb1356dc64 js/packet-read-line-check-null later to maint).
* "git check-ignore" with multiple paths got confused when one is a
file and the other is a directory, which has been fixed.
(merge d60771e930 rs/check-ignore-multi later to maint).
* "git describe $garbage" stopped giving any errors when the garbage
happens to be a string with 40 hexadecimal letters.
(merge a8e7a2bf0f sb/describe-blob later to maint).
* Code to unquote single-quoted string (used in the parser for
configuration files, etc.) did not diagnose bogus input correctly
and produced bogus results instead.
(merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).
* Many places in "git apply" knew that "/dev/null" that signals
"there is no such file on this side of the diff" can be followed by
whitespace and garbage when parsing a patch, except for one, which
made an otherwise valid patch (e.g. ones from subversion) rejected.
(merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).
* We no longer create any *.spec file, so "make clean" should not
remove it.
(merge 4321bdcabb tz/do-not-clean-spec-file later to maint).
* "git push" over http transport did not unquote the push-options
correctly.
(merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).
* "git send-email" learned to complain when the batch-size option is
not defined when the relogin-delay option is, since these two are
mutually required.
(merge 9caa70697b xz/send-email-batch-size later to maint).
* Y2k20 fix ;-) for our perl scripts.
(merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
* Threaded "git grep" has been optimized to avoid allocation in code
section that is covered under a mutex.
(merge 38ef24dccf rv/grep-cleanup later to maint).
* "git subtree" script (in contrib/) scripted around "git log", whose
output got affected by end-user configuration like log.showsignature
(merge 8841b5222c sg/subtree-signed-commits later to maint).
* While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.
(merge 21abed500c ds/find-unique-abbrev-optim later to maint).
* Micro optimization in revision traversal code.
(merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
* "git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.
(merge 095c741edd ab/gc-auto-in-commit later to maint).
* Allow running a couple of tests with "sh -x".
(merge c20bf94abc sg/cvs-tests-with-x later to maint).
* The codepath to replace an existing entry in the index had a bug in
updating the name hash structure, which has been fixed.
(merge 0e267b7a24 bp/refresh-cache-ent-rehash-fix later to maint).
* The transfer.fsckobjects configuration tells "git fetch" to
validate the data and connected-ness of objects in the received
pack; the code to perform this check has been taught about the
narrow clone's convention that missing objects that are reachable
from objects in a pack that came from a promissor remote is OK.
* There was an unused file-scope static variable left in http.c when
building for versions of libCURL that is older than 7.19.4, which
has been fixed.
(merge b8fd6008ec rj/http-code-cleanup later to maint).
* Shell script portability fix.
(merge 206a6ae013 ml/filter-branch-portability-fix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge e2a5a028c7 bw/oidmap-autoinit later to maint).
(merge ec3b4b06f8 cl/t9001-cleanup later to maint).
(merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
(merge fbac558a9b rs/describe-unique-abbrev later to maint).
(merge 8462ff43e4 tb/crlf-conv-flags later to maint).
(merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
(merge 3449847168 cc/sha1-file-name later to maint).
(merge ad622a256f ds/use-get-be64 later to maint).
(merge f919ffebed sg/cocci-move-array later to maint).
(merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
(merge ef5b3a6c5e nd/shared-index-fix later to maint).
(merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
(merge b780e4407d jc/worktree-add-short-help later to maint).
(merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
(merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
(merge 3738031581 jk/gettext-poison later to maint).
(merge 54360a1956 rj/sparse-updates later to maint).
(merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
(merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
(merge 4ccf461f56 bp/fsmonitor later to maint).
(merge a6119f82b1 jk/test-hashmap-updates later to maint).
(merge 5aea9fe6cc rd/typofix later to maint).
(merge e4e5da2796 sb/status-doc-fix later to maint).
(merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
(merge d023df1ee6 tg/worktree-create-tracking later to maint).
(merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
(merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
(merge 2708ef4af6 sg/t6300-modernize later to maint).
(merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
(merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
(merge 1316416903 ms/non-ascii-ticks later to maint).
(merge 878056005e rs/strbuf-read-file-or-whine later to maint).
(merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
(merge edfb8ba068 ot/ref-filter-cleanup later to maint).
(merge 11395a3b4b jc/test-must-be-empty later to maint).
(merge 768b9d6db7 mk/doc-pretty-fill later to maint).
(merge 2caa7b8d27 ab/man-sec-list later to maint).
(merge 40c17eb184 ks/t3200-typofix later to maint).
(merge bd9958c358 dp/merge-strategy-doc-fix later to maint).
(merge 9ee0540a40 js/ming-strftime later to maint).
(merge 1775e990f7 tz/complete-tag-delete-tagname later to maint).
(merge 00a4b03501 rj/warning-uninitialized-fix later to maint).
(merge b635ed97a0 jk/attributes-path-doc later to maint).
----------------------------------------------------------------
Changes since v2.16.0 are as follows:
Adam Borowski (1):
hooks/pre-auto-gc-battery: allow gc to run on non-laptops
Alban Gruin (1):
userdiff: add built-in pattern for golang
Alex Bennée (1):
send-email: add test for Linux's get_maintainer.pl
Alexander Shopov (1):
Mark messages for translations
Andreas G. Schacker (1):
doc/read-tree: remove obsolete remark
Ben Peart (4):
dir.c: don't flag the index as dirty for changes to the untracked cache
name-hash: properly fold directory names in adjust_dirname_case()
fsmonitor: update documentation to remove reference to invalid config settings
Fix bugs preventing adding updated cache entries to the name hash
Bernhard M. Wiedemann (1):
perl: call timegm and timelocal with 4-digit year
Brandon Williams (39):
oidmap: ensure map is initialized
object_info: change member name from 'typename' to 'type_name'
object: rename function 'typename' to 'type_name'
blame: rename 'this' variables
pack-objects: rename 'this' variables
rev-parse: rename 'this' variable
submodule: indicate that 'submodule.recurse' doesn't apply to clone
diff: rename 'this' variables
apply: rename 'try' variables
apply: rename 'new' variables
checkout: rename 'new' variables
help: rename 'new' variables
pack-redundant: rename 'new' variables
reflog: rename 'new' variables
remote: rename 'new' variables
combine-diff: rename 'new' variables
commit: rename 'new' variables
diff-lib: rename 'new' variable
diff: rename 'new' variables
diffcore-delta: rename 'new' variables
entry: rename 'new' variables
http: rename 'new' variables
imap-send: rename 'new' variables
line-log: rename 'new' variables
read-cache: rename 'new' variables
ref-filter: rename 'new' variables
remote: rename 'new' variables
split-index: rename 'new' variables
submodule: rename 'new' variables
trailer: rename 'new' variables
unpack-trees: rename 'new' variables
init-db: rename 'template' variables
environment: rename 'template' variables
diff: rename 'template' variables
environment: rename 'namespace' variables
wrapper: rename 'template' variables
tempfile: rename 'template' variables
trailer: rename 'template' variables
replace: rename 'new' variables
Christian Couder (12):
perf/aggregate: fix checking ENV{GIT_PERF_SUBSECTION}
perf/aggregate: refactor printing results
perf/aggregate: implement codespeed JSON output
perf/run: add conf_opts argument to get_var_from_env_or_config()
perf/run: learn about perf.codespeedOutput
perf/run: learn to send output to codespeed server
perf/run: read GIT_PERF_REPO_NAME from perf.repoName
sha1_file: remove static strbuf from sha1_file_name()
sha1_file: improve sha1_file_name() perfs
perf/aggregate: add --subsection option
perf/aggregate: add --reponame option
perf/aggregate: sort JSON fields in output
Christian Ludwig (3):
t9001: use existing helper in send-email test
send-email: rename variable for clarity
send-email: support separate Reply-To address
Daniel Knittl-Frank (1):
describe: prepend "tags/" when describing tags with embedded name
David Pursehouse (1):
Documentation/merge-strategies: typofix
Derrick Stolee (3):
packfile: use get_be64() for large offsets
sha1_name: fix uninitialized memory errors
revision.c: reduce object database queries
Elijah Newren (3):
Tighten and correct a few testcases for merging and cherry-picking
merge-recursive: fix logic ordering issue
merge-recursive: add explanation for src_entry and dst_entry
Eric Sunshine (5):
t5601-clone: test case-conflicting files on case-insensitive filesystem
worktree: add: fix 'post-checkout' not knowing new worktree location
git-worktree.txt: fix missing ")" typo
git-worktree.txt: fix indentation of example and text of 'add' command
t2028: fix minor error and issues in newly-added "worktree move" tests
Eric Wong (2):
fsck: fix leak when traversing trees
git-svn: control destruction order to avoid segfault
Gargi Sharma (1):
mru: Replace mru.[ch] with list.h implementation
Genki Sky (2):
rebase: add --allow-empty-message option
test-lib.sh: unset XDG_CACHE_HOME
Gregory Herrero (1):
rebase -p: fix incorrect commit message when calling `git merge`.
Jason Merrill (1):
git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.
Jeff Hostetler (12):
upload-pack: add object filtering for partial clone
fetch-pack, index-pack, transport: partial clone
fetch-pack: add --no-filter
fetch: support filters
partial-clone: define partial clone settings in config
t5616: end-to-end tests for partial clone
fetch: inherit filter-spec from partial clone
t5616: test bulk prefetch after partial fetch
stat_tracking_info: return +1 when branches not equal
status: add --[no-]ahead-behind to status and commit for V2 format.
status: update short status to respect --no-ahead-behind
status: support --no-ahead-behind in long format
Jeff King (35):
t5600: fix outdated comment about unborn HEAD
t5600: modernize style
clone: factor out dir_exists() helper
clone: do not clean up directories we didn't create
sq_quote_argv: drop maxlen parameter
trace: avoid unnecessary quoting
t5570: use ls-remote instead of clone for interp tests
t/lib-git-daemon: record daemon log
daemon: fix off-by-one in logging extended attributes
daemon: handle NULs in extended attribute string
t/lib-git-daemon: add network-protocol helpers
daemon: fix length computation in newline stripping
t0205: drop redundant test
git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME
correct error messages for NULL packet_read_line()
CodingGuidelines: mention "static" and "extern"
t0002: simplify error checking
describe: confirm that blobs actually exist
test-hashmap: use ALLOC_ARRAY rather than bare malloc
test-hashmap: check allocation computation for overflow
test-hashmap: use xsnprintf rather than snprintf
test-hashmap: use strbuf_getline rather than fgets
test-hashmap: simplify alloc_test_entry
test-hashmap: use "unsigned int" for hash storage
sq_dequote: fix extra consumption of source string
t5545: factor out http repository setup
remote-curl: unquote incoming push-options
commit: drop uses of get_cached_commit_buffer()
revision: drop --show-all option
t: send verbose test-helper output to fd 4
strbuf_read_file(): preserve errno across close() call
smart-http: document flush after "# service" line
t3701: add a test for interactive.diffFilter
add--interactive: detect bogus diffFilter output
doc/gitattributes: mention non-recursive behavior
Johannes Schindelin (3):
sequencer: assign only free()able strings to gpg_sign
apply: demonstrate a problem applying svn diffs
mingw: abort on invalid strftime formats
Jon Simons (1):
always check for NULL return from packet_read_line()
Jonathan Nieder (1):
perl: treat PERLLIB_EXTRA as an extra path again
Jonathan Tan (23):
extension.partialclone: introduce partial clone extension
fsck: introduce partialclone extension
fsck: support refs pointing to promisor objects
fsck: support referenced promisor objects
fsck: support promisor objects as CLI argument
index-pack: refactor writing of .keep files
introduce fetch-object: fetch one promisor object
sha1_file: support lazily fetching missing objects
rev-list: support termination at promisor objects
gc: do not repack promisor packfiles
fetch-pack: test support excluding large blobs
fetch: refactor calculation of remote list
clone: partial clone
unpack-trees: batch fetching of missing blobs
fetch-pack: restore save_commit_buffer after use
http: support cookie redaction when tracing
http: support omitting data from traces
Docs: split out long-running subprocess handshake
packfile: remove GIT_DEBUG_LOOKUP log statements
packfile: refactor hash search with fanout table
sha1_file: restore OBJECT_INFO_QUICK functionality
index-pack: support checking objects but not links
fetch-pack: do not check links for partial fetch
Juan F. Codagnone (1):
mailinfo: avoid segfault when can't open files
Junio C Hamano (22):
merge: teach -Xours/-Xtheirs to symbolic link merge
worktree: say that "add" takes an arbitrary commit in short-help
Start 2.17 cycle
Git 2.16.1
First batch after 2.16
blame: tighten command line parser
Second batch for 2.17
Third batch for 2.17
Git 2.16.2
merge: allow fast-forward when merging a tracked tag
Fourth batch for 2.17
Fifth batch for 2.17
test_must_be_empty: make sure the file exists, not just empty
untracked cache: use git_env_bool() not getenv() for customization
Sixth batch for 2.17
Seventh batch for 2.17
Eighth batch for 2.17
Git 2.17-rc0
Git 2.17-rc1
Git 2.16.3
t9902: disable test on the list of merge-strategies under GETTEXT_POISON
Git 2.17-rc2
Kaartic Sivaraam (3):
Doc/gitsubmodules: make some changes to improve readability and syntax
Doc/git-submodule: improve readability and grammar of a sentence
t/t3200: fix a typo in a test description
Kim Gybels (1):
packed_ref_cache: don't use mmap() for small files
Lucas Werkmeister (1):
daemon: add --log-destination=(stderr|syslog|none)
Martin Ågren (9):
t7006: add tests for how git config paginates
config: respect `pager.config` in list/get-mode only
config: change default of `pager.config` to "on"
sequencer: make lockfiles non-static
sequencer: always roll back lock in `do_recursive_merge()`
merge-recursive: always roll back lock in `merge_recursive_generic()`
merge: always roll back lock in `checkout_fast_forward()`
sequencer: do not roll back lockfile unnecessarily
write_locked_index(): add flag to avoid writing unchanged index
Mathias Rav (1):
files_initial_transaction_commit(): only unlock if locked
Matthieu Moy (2):
send-email: add and use a local copy of Mail::Address
perl/Git: remove now useless email-address parsing code
Michael Haggerty (5):
struct snapshot: store `start` rather than `header_len`
create_snapshot(): use `xmemdupz()` rather than a strbuf
find_reference_location(): make function safe for empty snapshots
packed_ref_iterator_begin(): make optimization more general
load_contents(): don't try to mmap an empty file
Michele Locati (1):
filter-branch: use printf instead of echo -e
Motoki Seki (1):
Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes
Mårten Kongstad (1):
docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'
Nathan Payre (1):
send-email: extract email-parsing code into a subroutine
Nguyễn Thái Ngọc Duy (85):
t2203: test status output with porcelain v2 format
Use DIFF_DETECT_RENAME for detect_rename assignments
wt-status.c: coding style fix
wt-status.c: catch unhandled diff status codes
wt-status.c: rename rename-related fields in wt_status_change_data
wt-status.c: handle worktree renames
trace.c: move strbuf_release() out of print_trace_line()
add--interactive: ignore submodule changes except HEAD
read-cache.c: change type of "temp" in write_shared_index()
read-cache.c: move tempfile creation/cleanup out of write_shared_index
diff.c: flush stdout before printing rename warnings
run-command.c: introduce trace_run_command()
run-command.c: print program 'git' when tracing git_cmd mode
run-command.c: print env vars in trace_run_command()
run-command.c: print new cwd in trace_run_command()
read-cache: don't write index twice if we can't write shared index
worktree.c: add validate_worktree()
dir.c: avoid stat() in valid_cached_dir()
dir.c: fix missing dir invalidation in untracked code
format-patch: keep cover-letter diffstat wrapped in 72 columns
completion: fix completing merge strategies on non-C locales
dir.c: stop ignoring opendir() error in open_cached_dir()
format-patch: reduce patch diffstat width to 72
gitignore.txt: elaborate shell glob syntax
trace: measure where the time is spent in the index-heavy operations
diff.c: refactor pprint_rename() to use strbuf
dir.c: ignore paths containing .git when invalidating untracked cache
parse-options: support --git-completion-helper
parse-options: add OPT_xxx_F() variants
parse-options: let OPT__FORCE take optional flags argument
git-completion.bash: introduce __gitcomp_builtin
completion: use __gitcomp_builtin in _git_add
completion: use __gitcomp_builtin in _git_am
completion: use __gitcomp_builtin in _git_apply
completion: use __gitcomp_builtin in _git_branch
completion: use __gitcomp_builtin in _git_checkout
completion: use __gitcomp_builtin in _git_cherry_pick
completion: use __gitcomp_builtin in _git_clean
completion: use __gitcomp_builtin in _git_clone
completion: use __gitcomp_builtin in _git_commit
completion: use __gitcomp_builtin in _git_config
completion: use __gitcomp_builtin in _git_describe
completion: use __gitcomp_builtin in _git_difftool
completion: use __gitcomp_builtin in _git_fetch
completion: use __gitcomp_builtin in _git_fsck
completion: use __gitcomp_builtin in _git_gc
completion: use __gitcomp_builtin in _git_grep
completion: use __gitcomp_builtin in _git_help
completion: use __gitcomp_builtin in _git_init
completion: use __gitcomp_builtin in _git_ls_files
completion: use __gitcomp_builtin in _git_ls_remote
completion: use __gitcomp_builtin in _git_merge
completion: use __gitcomp_builtin in _git_merge_base
completion: use __gitcomp_builtin in _git_mv
completion: use __gitcomp_builtin in _git_name_rev
completion: use __gitcomp_builtin in _git_notes
completion: use __gitcomp_builtin in _git_pull
completion: use __gitcomp_builtin in _git_push
completion: use __gitcomp_builtin in _git_remote
remote: force completing --mirror= instead of --mirror
completion: use __gitcomp_builtin in _git_replace
completion: use __gitcomp_builtin in _git_reset
completion: use __gitcomp_builtin in _git_revert
completion: use __gitcomp_builtin in _git_rm
completion: use __gitcomp_builtin in _git_show_branch
completion: use __gitcomp_builtin in _git_status
completion: use __gitcomp_builtin in _git_tag
completion: use __gitcomp_builtin in _git_worktree
worktree.c: add update_worktree_location()
worktree move: new command
worktree move: accept destination as directory
worktree move: refuse to move worktrees with submodules
worktree remove: new command
worktree remove: allow it when $GIT_WORK_TREE is already gone
am: add --show-current-patch
rebase: add --show-current-patch
rebase: introduce and use pseudo-ref REBASE_HEAD
am: support --quit
diff: add --compact-summary
object.h: update flag allocation comment
object.h: realign object flag allocation comment
completion: don't set PARSE_OPT_NOCOMPLETE on --rerere-autoupdate
completion: simplify _git_notes
completion: complete --{reuse,reedit}-message= for all notes subcmds
completion: more subcommands in _git_notes()
Nicolas Morey-Chaisemartin (1):
tag: add --edit option
Olga Telezhnaya (3):
mru: use double-linked list from list.h
ref-filter: get rid of duplicate code
ref-filter: get rid of goto
Patryk Obara (14):
clang-format: adjust penalty for return type line break
http-push: improve error log
sha1_file: convert pretend_sha1_file to object_id
dir: convert struct sha1_stat to use object_id
sha1_file: convert hash_sha1_file to object_id
cache: clear whole hash buffer with oidclr
match-trees: convert splice_tree to object_id
commit: convert commit_tree* to object_id
notes: convert combine_notes_* to object_id
notes: convert write_notes_tree to object_id
sha1_file: convert write_sha1_file to object_id
sha1_file: convert force_object_loose to object_id
sha1_file: convert write_loose_object to object_id
sha1_file: rename hash_sha1_file_literally
Phillip Wood (25):
t3404: check intermediate squash messages
commit: move empty message checks to libgit
Add a function to update HEAD after creating a commit
commit: move post-rewrite code to libgit
commit: move print_commit_summary() to libgit
sequencer: simplify adding Signed-off-by: trailer
sequencer: load commit related config
sequencer: try to commit without forking 'git commit'
t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1
sequencer: improve config handling
t7505: style fixes
t7505: add tests for cherry-pick and rebase -i/-p
sequencer: run 'prepare-commit-msg' hook
add -p: only display help for active keys
add -p: only bind search key if there's more than one hunk
add -p: improve error messages
add -i: add function to format hunk header
t3701: indent here documents
t3701: use test_write_lines and write_script
t3701: don't hard code sha1 hash values
t3701: add failing test for pathological context lines
add -p: adjust offsets of subsequent hunks when one is skipped
add -p: calculate offset delta for edited patches
add -p: fix counting when splitting and coalescing
add -p: don't rely on apply's '--recount' option
Prathamesh Chavan (2):
submodule: port submodule subcommand 'sync' from shell to C
submodule: port submodule subcommand 'deinit' from shell to C
Ramsay Jones (6):
t4151: consolidate multiple calls to test_i18ngrep
config.mak.uname: remove SPARSE_FLAGS setting for cygwin
Makefile: suppress a sparse warning for pack-revindex.c
http: fix an unused variable warning for 'curl_no_proxy'
-Wuninitialized: remove some 'init-self' workarounds
read-cache: fix an -Wmaybe-uninitialized warning
Randall S. Becker (1):
hashmap.h: remove unused variable
Rasmus Villemoes (2):
grep: move grep_source_init outside critical section
grep: simplify grep_oid and grep_file
René Scharfe (15):
commit: avoid allocation in clear_commit_marks_many()
commit: use clear_commit_marks_many() in remove_redundant()
ref-filter: use clear_commit_marks_many() in do_merge_filter()
object: add clear_commit_marks_all()
bisect: avoid using the rev_info flag leak_pending
bundle: avoid using the rev_info flag leak_pending
checkout: avoid using the rev_info flag leak_pending
revision: remove the unused flag leak_pending
commit: remove unused function clear_commit_marks_for_object_array()
describe: use strbuf_add_unique_abbrev() for adding short hashes
cocci: use format keyword instead of a literal string
cocci: simplify check for trivial format strings
check-ignore: fix mix of directories and other file types
sequencer: factor out strbuf_read_file_or_whine()
perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file
Robert P. J. Day (2):
t/: correct obvious typo "detahced"
Correct mispellings of ".gitmodule" to ".gitmodules"
SZEDER Gábor (34):
travis-ci: build Git during the 'script' phase
Use MOVE_ARRAY
travis-ci: use 'set -x' for the commands under 'su' in the 32 bit Linux build
travis-ci: use 'set -e' in the 32 bit Linux build job
travis-ci: don't repeat the path of the cache directory
travis-ci: don't run the test suite as root in the 32 bit Linux build
travis-ci: don't fail if user already exists on 32 bit Linux build job
t5541: add 'test_i18ngrep's missing filename parameter
t5812: add 'test_i18ngrep's missing filename parameter
t6022: don't run 'git merge' upstream of a pipe
t4001: don't run 'git status' upstream of a pipe
t5510: consolidate 'grep' and 'test_i18ngrep' patterns
t5536: let 'test_i18ngrep' read the file without redirection
t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh'
t: validate 'test_i18ngrep's parameters
t: make 'test_i18ngrep' more informative on failure
t: document 'test_must_fail ok=<signal-name>'
t6300-for-each-ref: fix "more than one quoting style" tests
Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets
t: prevent '-x' tracing from interfering with test helpers' stderr
t: add means to disable '-x' tracing for individual test scripts
t1507-rev-parse-upstream: don't check the stderr of a shell function
t5536: simplify checking of messages output to stderr
t3030-merge-recursive: don't check the stderr of a subshell
t5500-fetch-pack: don't check the stderr of a subshell
t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log file
t5570-git-daemon: don't check the stderr of a subshell
t9903-bash-prompt: don't check the stderr of __git_ps1()
t1510-repo-setup: mark as untraceable with '-x'
t/README: add a note about don't saving stderr of compound commands
travis-ci: run tests with '-x' tracing
t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'
t9402-git-cvsserver-refs: don't check the stderr of a subshell
completion: clear cached --options when sourcing the completion script
Stefan Beller (15):
diff.h: make pickaxe_opts an unsigned bit field
diff: migrate diff_flags.pickaxe_ignore_case to a pickaxe_opts bit
diff: introduce DIFF_PICKAXE_KINDS_MASK
diffcore: add a pickaxe option to find a specific blob
diff: properly error out when combining multiple pickaxe options
diff: use HAS_MULTI_BITS instead of counting bits manually
t/lib-submodule-update.sh: clarify test
t/lib-submodule-update.sh: fix test ignoring ignored files in submodules
unpack-trees: oneway_merge to update submodules
submodule: submodule_move_head omits old argument in forced case
builtin/pull: respect verbosity settings in submodules
send-email: error out when relogin delay is missing
color.h: document and modernize header
Documentation/git-status: clarify status table for porcelain mode
submodule deinit: handle non existing pathspecs gracefully
Stefan Moch (2):
t7001: add test case for --dry-run
mv: remove unneeded 'if (!show_only)'
Stephen R Guglielmo (1):
subtree: fix add and pull for GPG-signed commits
Tatyana Krasnukha (1):
apply: handle Subversion diffs with /dev/null gracefully
Thomas Gummerer (6):
stash: don't delete untracked files that match pathspec
read-cache: fix reading the shared index for other repos
split-index: don't write cache tree with null oid entries
travis: run tests with GIT_TEST_SPLIT_INDEX
reset --hard: make use of the pretty machinery
git-stash.txt: remove extra square bracket
Thomas Levesque (1):
userdiff.c: add C# async keyword in diff pattern
Todd Zullinger (5):
doc: mention 'git show' defaults to HEAD
Makefile: remove *.spec from clean target
Makefile: add NO_PERL_CPAN_FALLBACKS knob
RelNotes: add details on Perl module changes
completion: complete tags with git tag --delete/--verify
Torsten Bögershausen (1):
convert_to_git(): safe_crlf/checksafe becomes int conv_flags
Yasushi SHOJI (1):
bisect: debug: convert struct object to object_id
brian m. carlson (15):
repository: pre-initialize hash algo pointer
hash: move SHA-1 macros to hash.h
hash: create union for hash context allocation
builtin/index-pack: improve hash function abstraction
builtin/unpack-objects: switch uses of SHA-1 to the_hash_algo
sha1_file: switch uses of SHA-1 to the_hash_algo
fast-import: switch various uses of SHA-1 to the_hash_algo
pack-check: convert various uses of SHA-1 to abstract forms
pack-write: switch various SHA-1 values to abstract forms
read-cache: abstract away uses of SHA-1
csum-file: rename sha1file to hashfile
csum-file: abstract uses of SHA-1
bulk-checkin: abstract SHA-1 usage
hash: update obsolete reference to SHA1_HEADER
docs/interpret-trailers: fix agreement error
Ævar Arnfjörð Bjarmason (53):
Makefile: don't error out under DC_SHA1_EXTERNAL if DC_SHA1_SUBMODULE=auto
Makefile: under "make dist", include the sha1collisiondetection submodule
sha1dc_git.h: re-arrange an ifdef chain for a subsequent change
Makefile: replace perl/Makefile.PL with simple make rules
commit doc: document that -c, -C, -F and --fixup with -m error
commit: add support for --fixup <commit> -m"<extra message>"
perl: avoid *.pmc and fix Error.pm further
perf: amend the grep tests to test grep.threads
cat-file doc: document that -e will return some output
status: add a failing test showing a core.untrackedCache bug
wildmatch test: indent with tabs, not spaces
wildmatch test: use more standard shell style
wildmatch test: don't try to vertically align our output
wildmatch test: use a paranoia pattern from nul_match()
wildmatch test: remove dead fnmatch() test code
wildmatch test: use test_must_fail, not ! for test-wildmatch
wildmatch test: perform all tests under all wildmatch() modes
wildmatch test: create & test files on disk in addition to in-memory
test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite
wildmatch test: mark test as EXPENSIVE_ON_WINDOWS
fetch: don't redundantly NULL something calloc() gave us
fetch: trivially refactor assignment to ref_nr
fetch: stop accessing "remote" variable indirectly
remote: add a macro for "refs/tags/*:refs/tags/*"
fetch tests: refactor in preparation for testing tag pruning
fetch tests: re-arrange arguments for future readability
fetch tests: add a tag to be deleted to the pruning tests
fetch tests: test --prune and refspec interaction
fetch tests: double quote a variable for interpolation
fetch tests: expand case/esac for later change
fetch tests: fetch <url> <spec> as well as fetch [<remote>]
git fetch doc: add a new section to explain the ins & outs of pruning
git remote doc: correct dangerous lies about what prune does
git-fetch & config doc: link to the new PRUNING section
fetch tests: add scaffolding for the new fetch.pruneTags
fetch: add a --prune-tags option and fetch.pruneTags config
fetch: make the --prune-tags work with <url>
update-index doc: note a fixed bug in the untracked cache
update-index doc: note the caveat with "could not open..."
perl: *.pm files should not have the executable bit
Git.pm: remove redundant "use strict" from sub-package
Git.pm: add the "use warnings" pragma
commit: run git gc --auto just before the post-commit hook
gitweb: hard-depend on the Digest::MD5 5.8 module
Git.pm: hard-depend on the File::{Temp,Spec} modules
git-send-email: unconditionally use Net::{SMTP,Domain}
perl: update our ancient copy of Error.pm
perl: update our copy of Mail::Address
perl: move CPAN loader wrappers to another namespace
perl: generalize the Git::LoadCPAN facility
perl: move the perl/Git/FromCPAN tree to perl/FromCPAN
perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS
git manpage: note git-security@googlegroups.com
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.17.0-rc0
@ 2018-03-16 0:57 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2018-03-16 0:57 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.17.0-rc0 is now available for
testing at the usual places. It is comprised of 474 non-merge
commits since v2.16.0, contributed by 60 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.17.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.16.0 are as follows.
Welcome to the Git development community!
Adam Borowski, Alban Gruin, Andreas G. Schacker, Bernhard
M. Wiedemann, Christian Ludwig, Gargi Sharma, Genki Sky,
Gregory Herrero, Jon Simons, Juan F. Codagnone, Kim Gybels,
Lucas Werkmeister, Mathias Rav, Motoki Seki, Stefan Moch,
Stephen R Guglielmo, Tatyana Krasnukha, and Thomas Levesque.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Bennée,
Ben Peart, Brandon Williams, brian m. carlson, Christian
Couder, Daniel Knittl-Frank, Derrick Stolee, Elijah Newren,
Eric Sunshine, Eric Wong, Jason Merrill, Jeff Hostetler, Jeff
King, Johannes Schindelin, Jonathan Nieder, Jonathan Tan, Junio
C Hamano, Kaartic Sivaraam, Mårten Kongstad, Martin Ågren,
Matthieu Moy, Michael Haggerty, Nathan Payre, Nguyễn Thái
Ngọc Duy, Nicolas Morey-Chaisemartin, Olga Telezhnaya, Patryk
Obara, Phillip Wood, Prathamesh Chavan, Ramsay Jones, Randall
S. Becker, Rasmus Villemoes, René Scharfe, Robert P. J. Day,
Stefan Beller, SZEDER Gábor, Thomas Gummerer, Todd Zullinger,
Torsten Bögershausen, and Yasushi SHOJI.
----------------------------------------------------------------
Git 2.17 Release Notes (draft)
==============================
Updates since v2.16
-------------------
UI, Workflows & Features
* "diff" family of commands learned "--find-object=<object-id>" option
to limit the findings to changes that involve the named object.
* "git format-patch" learned to give 72-cols to diffstat, which is
consistent with other line length limits the subcommand uses for
its output meant for e-mails.
* The log from "git daemon" can be redirected with a new option; one
relevant use case is to send the log to standard error (instead of
syslog) when running it from inetd.
* "git rebase" learned to take "--allow-empty-message" option.
* "git am" has learned the "--quit" option, in addition to the
existing "--abort" option; having the pair mirrors a few other
commands like "rebase" and "cherry-pick".
* "git worktree add" learned to run the post-checkout hook, just like
"git clone" runs it upon the initial checkout.
* "git tag" learned an explicit "--edit" option that allows the
message given via "-m" and "-F" to be further edited.
* "git fetch --prune-tags" may be used as a handy short-hand for
getting rid of stale tags that are locally held.
* The new "--show-current-patch" option gives an end-user facing way
to get the diff being applied when "git rebase" (and "git am")
stops with a conflict.
* "git add -p" used to offer "/" (look for a matching hunk) as a
choice, even there was only one hunk, which has been corrected.
Also the single-key help is now given only for keys that are
enabled (e.g. help for '/' won't be shown when there is only one
hunk).
* Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
the side branch being merged is a descendant of the current commit,
create a merge commit instead of fast-forwarding) when merging a
tag object. This was appropriate default for integrators who pull
signed tags from their downstream contributors, but caused an
unnecessary merges when used by downstream contributors who
habitually "catch up" their topic branches with tagged releases
from the upstream. Update "git merge" to default to --no-ff only
when merging a tag object that does *not* sit at its usual place in
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
mitigate the problem.
* "git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.
* "git diff" and friends learned funcname patterns for Go language
source files.
* "git send-email" learned "--reply-to=<address>" option.
* Funcname pattern used for C# now recognizes "async" keyword.
Performance, Internal Implementation, Development Support etc.
* More perf tests for threaded grep
* "perf" test output can be sent to codespeed server.
* The build procedure for perl/ part has been greatly simplified by
weaning ourselves off of MakeMaker.
* In preparation for implementing narrow/partial clone, the machinery
for checking object connectivity used by gc and fsck has been
taught that a missing object is OK when it is referenced by a
packfile specially marked as coming from trusted repository that
promises to make them available on-demand and lazily.
* The machinery to clone & fetch, which in turn involves packing and
unpacking objects, has been told how to omit certain objects using
the filtering mechanism introduced by another topic. It now knows
to mark the resulting pack as a promisor pack to tolerate missing
objects, laying foundation for "narrow" clones.
* The first step to getting rid of mru API and using the
doubly-linked list API directly instead.
* Retire mru API as it does not give enough abstraction over
underlying list API to be worth it.
* Rewrite two more "git submodule" subcommands in C.
* The tracing machinery learned to report tweaking of environment
variables as well.
* Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
* Prevent "clang-format" from breaking line after function return type.
* The sequencer infrastructure is shared across "git cherry-pick",
"git rebase -i", etc., and has always spawned "git commit" when it
needs to create a commit. It has been taught to do so internally,
when able, by reusing the codepath "git commit" itself uses, which
gives performance boost for a few tens of percents in some sample
scenarios.
* Push the submodule version of collision-detecting SHA-1 hash
implementation a bit harder on builders.
* Avoid mmapping small files while using packed refs (especially ones
with zero size, which would cause later munmap() to fail).
* Conversion from uchar[20] to struct object_id continues.
* More tests for wildmatch functions.
* The code to binary search starting from a fan-out table (which is
how the packfile is indexed with object names) has been refactored
into a reusable helper.
* We now avoid using identifiers that clash with C++ keywords. Even
though it is not a goal to compile Git with C++ compilers, changes
like this help use of code analysis tools that targets C++ on our
codebase.
* The executable is now built in 'script' phase in Travis CI integration,
to follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).
(merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
* Writing out the index file when the only thing that changed in it
is the untracked cache information is often wasteful, and this has
been optimized out.
* Various pieces of Perl code we have have been cleaned up.
Also contains various documentation updates and code clean-ups.
Fixes since v2.16
-----------------
* An old regression in "git describe --all $annotated_tag^0" has been
fixed.
* "git status" after moving a path in the working tree (hence making
it appear "removed") and then adding with the -N option (hence
making that appear "added") detected it as a rename, but did not
report the old and new pathnames correctly.
* "git svn dcommit" did not take into account the fact that a
svn+ssh:// URL with a username@ (typically used for pushing) refers
to the same SVN repository without the username@ and failed when
svn.pushmergeinfo option is set.
* API clean-up around revision traversal.
* "git merge -Xours/-Xtheirs" learned to use our/their version when
resolving a conflicting updates to a symbolic link.
* "git clone $there $here" is allowed even when here directory exists
as long as it is an empty directory, but the command incorrectly
removed it upon a failure of the operation.
* "git commit --fixup" did not allow "-m<message>" option to be used
at the same time; allow it to annotate resulting commit with more
text.
* When resetting the working tree files recursively, the working tree
of submodules are now also reset to match.
* "git stash -- <pathspec>" incorrectly blew away untracked files in
the directory that matched the pathspec, which has been corrected.
* Instead of maintaining home-grown email address parsing code, ship
a copy of reasonably recent Mail::Address to be used as a fallback
in 'git send-email' when the platform lacks it.
(merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
* "git add -p" was taught to ignore local changes to submodules as
they do not interfere with the partial addition of regular changes
anyway.
* Avoid showing a warning message in the middle of a line of "git
diff" output.
(merge 4e056c989f nd/diff-flush-before-warning later to maint).
* The http tracing code, often used to debug connection issues,
learned to redact potentially sensitive information from its output
so that it can be more safely sharable.
(merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
* Crash fix for a corner case where an error codepath tried to unlock
what it did not acquire lock on.
(merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
* The split-index mode had a few corner case bugs fixed.
(merge ae59a4e44f tg/split-index-fixes later to maint).
* Assorted fixes to "git daemon".
(merge ed15e58efe jk/daemon-fixes later to maint).
* Completion of "git merge -s<strategy>" (in contrib/) did not work
well in non-C locale.
(merge 7cc763aaa3 nd/list-merge-strategy later to maint).
* Workaround for segfault with more recent versions of SVN.
(merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
* Plug recently introduced leaks in fsck.
(merge ba3a08ca0e jt/fsck-code-cleanup later to maint).
* "git pull --rebase" did not pass verbosity setting down when
recursing into a submodule.
(merge a56771a668 sb/pull-rebase-submodule later to maint).
* The way "git reset --hard" reports the commit the updated HEAD
points at is made consistent with the way how the commit title is
generated by the other parts of the system. This matters when the
title is spread across physically multiple lines.
(merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).
* Test fixes.
(merge 63b1a175ee sg/test-i18ngrep later to maint).
* Some bugs around "untracked cache" feature have been fixed. This
will notice corrupt data in the untracked cache left by old and
buggy code and issue a warning---the index can be fixed by clearing
the untracked cache from it.
(merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).
(merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).
* "git blame HEAD COPYING" in a bare repository failed to run, while
"git blame HEAD -- COPYING" run just fine. This has been corrected.
* "git add" files in the same directory, but spelling the directory
path in different cases on case insensitive filesystem, corrupted
the name hash data structure and led to unexpected results. This
has been corrected.
(merge c95525e90d bp/name-hash-dirname-fix later to maint).
* "git rebase -p" mangled log messages of a merge commit, which is
now fixed.
(merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).
* Some low level protocol codepath could crash when they get an
unexpected flush packet, which is now fixed.
(merge bb1356dc64 js/packet-read-line-check-null later to maint).
* "git check-ignore" with multiple paths got confused when one is a
file and the other is a directory, which has been fixed.
(merge d60771e930 rs/check-ignore-multi later to maint).
* "git describe $garbage" stopped giving any errors when the garbage
happens to be a string with 40 hexadecimal letters.
(merge a8e7a2bf0f sb/describe-blob later to maint).
* Code to unquote single-quoted string (used in the parser for
configuration files, etc.) did not diagnose bogus input correctly
and produced bogus results instead.
(merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).
* Many places in "git apply" knew that "/dev/null" that signals
"there is no such file on this side of the diff" can be followed by
whitespace and garbage when parsing a patch, except for one, which
made an otherwise valid patch (e.g. ones from subversion) rejected.
(merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).
* We no longer create any *.spec file, so "make clean" should not
remove it.
(merge 4321bdcabb tz/do-not-clean-spec-file later to maint).
* "git push" over http transport did not unquote the push-options
correctly.
(merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).
* "git send-email" learned to complain when the batch-size option is
not defined when the relogin-delay option is, since these two are
mutually required.
(merge 9caa70697b xz/send-email-batch-size later to maint).
* Y2k20 fix ;-) for our perl scripts.
(merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
* Threaded "git grep" has been optimized to avoid allocation in code
section that is covered under a mutex.
(merge 38ef24dccf rv/grep-cleanup later to maint).
* "git subtree" script (in contrib/) scripted around "git log", whose
output got affected by end-user configuration like log.showsignature
(merge 8841b5222c sg/subtree-signed-commits later to maint).
* While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.
(merge 21abed500c ds/find-unique-abbrev-optim later to maint).
* Micro optimization in revision traversal code.
(merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
* "git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.
(merge 095c741edd ab/gc-auto-in-commit later to maint).
* Allow running a couple of tests with "sh -x".
(merge c20bf94abc sg/cvs-tests-with-x later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge e2a5a028c7 bw/oidmap-autoinit later to maint).
(merge ec3b4b06f8 cl/t9001-cleanup later to maint).
(merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
(merge fbac558a9b rs/describe-unique-abbrev later to maint).
(merge 8462ff43e4 tb/crlf-conv-flags later to maint).
(merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
(merge 3449847168 cc/sha1-file-name later to maint).
(merge ad622a256f ds/use-get-be64 later to maint).
(merge f919ffebed sg/cocci-move-array later to maint).
(merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
(merge ef5b3a6c5e nd/shared-index-fix later to maint).
(merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
(merge b780e4407d jc/worktree-add-short-help later to maint).
(merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
(merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
(merge 3738031581 jk/gettext-poison later to maint).
(merge 54360a1956 rj/sparse-updates later to maint).
(merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
(merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
(merge 4ccf461f56 bp/fsmonitor later to maint).
(merge a6119f82b1 jk/test-hashmap-updates later to maint).
(merge 5aea9fe6cc rd/typofix later to maint).
(merge e4e5da2796 sb/status-doc-fix later to maint).
(merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
(merge d023df1ee6 tg/worktree-create-tracking later to maint).
(merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
(merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
(merge 2708ef4af6 sg/t6300-modernize later to maint).
(merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
(merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
(merge 1316416903 ms/non-ascii-ticks later to maint).
(merge 878056005e rs/strbuf-read-file-or-whine later to maint).
(merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
(merge edfb8ba068 ot/ref-filter-cleanup later to maint).
(merge 11395a3b4b jc/test-must-be-empty later to maint).
(merge 768b9d6db7 mk/doc-pretty-fill later to maint).
(merge 2caa7b8d27 ab/man-sec-list later to maint).
----------------------------------------------------------------
Changes since v2.16.0 are as follows:
Adam Borowski (1):
hooks/pre-auto-gc-battery: allow gc to run on non-laptops
Alban Gruin (1):
userdiff: add built-in pattern for golang
Alex Bennée (1):
send-email: add test for Linux's get_maintainer.pl
Alexander Shopov (1):
Mark messages for translations
Andreas G. Schacker (1):
doc/read-tree: remove obsolete remark
Ben Peart (3):
dir.c: don't flag the index as dirty for changes to the untracked cache
name-hash: properly fold directory names in adjust_dirname_case()
fsmonitor: update documentation to remove reference to invalid config settings
Bernhard M. Wiedemann (1):
perl: call timegm and timelocal with 4-digit year
Brandon Williams (39):
oidmap: ensure map is initialized
object_info: change member name from 'typename' to 'type_name'
object: rename function 'typename' to 'type_name'
blame: rename 'this' variables
pack-objects: rename 'this' variables
rev-parse: rename 'this' variable
submodule: indicate that 'submodule.recurse' doesn't apply to clone
diff: rename 'this' variables
apply: rename 'try' variables
apply: rename 'new' variables
checkout: rename 'new' variables
help: rename 'new' variables
pack-redundant: rename 'new' variables
reflog: rename 'new' variables
remote: rename 'new' variables
combine-diff: rename 'new' variables
commit: rename 'new' variables
diff-lib: rename 'new' variable
diff: rename 'new' variables
diffcore-delta: rename 'new' variables
entry: rename 'new' variables
http: rename 'new' variables
imap-send: rename 'new' variables
line-log: rename 'new' variables
read-cache: rename 'new' variables
ref-filter: rename 'new' variables
remote: rename 'new' variables
split-index: rename 'new' variables
submodule: rename 'new' variables
trailer: rename 'new' variables
unpack-trees: rename 'new' variables
init-db: rename 'template' variables
environment: rename 'template' variables
diff: rename 'template' variables
environment: rename 'namespace' variables
wrapper: rename 'template' variables
tempfile: rename 'template' variables
trailer: rename 'template' variables
replace: rename 'new' variables
Christian Couder (12):
perf/aggregate: fix checking ENV{GIT_PERF_SUBSECTION}
perf/aggregate: refactor printing results
perf/aggregate: implement codespeed JSON output
perf/run: add conf_opts argument to get_var_from_env_or_config()
perf/run: learn about perf.codespeedOutput
perf/run: learn to send output to codespeed server
perf/run: read GIT_PERF_REPO_NAME from perf.repoName
sha1_file: remove static strbuf from sha1_file_name()
sha1_file: improve sha1_file_name() perfs
perf/aggregate: add --subsection option
perf/aggregate: add --reponame option
perf/aggregate: sort JSON fields in output
Christian Ludwig (3):
t9001: use existing helper in send-email test
send-email: rename variable for clarity
send-email: support separate Reply-To address
Daniel Knittl-Frank (1):
describe: prepend "tags/" when describing tags with embedded name
Derrick Stolee (3):
packfile: use get_be64() for large offsets
sha1_name: fix uninitialized memory errors
revision.c: reduce object database queries
Elijah Newren (3):
Tighten and correct a few testcases for merging and cherry-picking
merge-recursive: fix logic ordering issue
merge-recursive: add explanation for src_entry and dst_entry
Eric Sunshine (5):
t5601-clone: test case-conflicting files on case-insensitive filesystem
worktree: add: fix 'post-checkout' not knowing new worktree location
git-worktree.txt: fix missing ")" typo
git-worktree.txt: fix indentation of example and text of 'add' command
t2028: fix minor error and issues in newly-added "worktree move" tests
Eric Wong (2):
fsck: fix leak when traversing trees
git-svn: control destruction order to avoid segfault
Gargi Sharma (1):
mru: Replace mru.[ch] with list.h implementation
Genki Sky (2):
rebase: add --allow-empty-message option
test-lib.sh: unset XDG_CACHE_HOME
Gregory Herrero (1):
rebase -p: fix incorrect commit message when calling `git merge`.
Jason Merrill (1):
git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.
Jeff Hostetler (12):
upload-pack: add object filtering for partial clone
fetch-pack, index-pack, transport: partial clone
fetch-pack: add --no-filter
fetch: support filters
partial-clone: define partial clone settings in config
t5616: end-to-end tests for partial clone
fetch: inherit filter-spec from partial clone
t5616: test bulk prefetch after partial fetch
stat_tracking_info: return +1 when branches not equal
status: add --[no-]ahead-behind to status and commit for V2 format.
status: update short status to respect --no-ahead-behind
status: support --no-ahead-behind in long format
Jeff King (34):
t5600: fix outdated comment about unborn HEAD
t5600: modernize style
clone: factor out dir_exists() helper
clone: do not clean up directories we didn't create
sq_quote_argv: drop maxlen parameter
trace: avoid unnecessary quoting
t5570: use ls-remote instead of clone for interp tests
t/lib-git-daemon: record daemon log
daemon: fix off-by-one in logging extended attributes
daemon: handle NULs in extended attribute string
t/lib-git-daemon: add network-protocol helpers
daemon: fix length computation in newline stripping
t0205: drop redundant test
git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME
correct error messages for NULL packet_read_line()
CodingGuidelines: mention "static" and "extern"
t0002: simplify error checking
describe: confirm that blobs actually exist
test-hashmap: use ALLOC_ARRAY rather than bare malloc
test-hashmap: check allocation computation for overflow
test-hashmap: use xsnprintf rather than snprintf
test-hashmap: use strbuf_getline rather than fgets
test-hashmap: simplify alloc_test_entry
test-hashmap: use "unsigned int" for hash storage
sq_dequote: fix extra consumption of source string
t5545: factor out http repository setup
remote-curl: unquote incoming push-options
commit: drop uses of get_cached_commit_buffer()
revision: drop --show-all option
t: send verbose test-helper output to fd 4
strbuf_read_file(): preserve errno across close() call
smart-http: document flush after "# service" line
t3701: add a test for interactive.diffFilter
add--interactive: detect bogus diffFilter output
Johannes Schindelin (2):
sequencer: assign only free()able strings to gpg_sign
apply: demonstrate a problem applying svn diffs
Jon Simons (1):
always check for NULL return from packet_read_line()
Jonathan Nieder (1):
perl: treat PERLLIB_EXTRA as an extra path again
Jonathan Tan (20):
extension.partialclone: introduce partial clone extension
fsck: introduce partialclone extension
fsck: support refs pointing to promisor objects
fsck: support referenced promisor objects
fsck: support promisor objects as CLI argument
index-pack: refactor writing of .keep files
introduce fetch-object: fetch one promisor object
sha1_file: support lazily fetching missing objects
rev-list: support termination at promisor objects
gc: do not repack promisor packfiles
fetch-pack: test support excluding large blobs
fetch: refactor calculation of remote list
clone: partial clone
unpack-trees: batch fetching of missing blobs
fetch-pack: restore save_commit_buffer after use
http: support cookie redaction when tracing
http: support omitting data from traces
Docs: split out long-running subprocess handshake
packfile: remove GIT_DEBUG_LOOKUP log statements
packfile: refactor hash search with fanout table
Juan F. Codagnone (1):
mailinfo: avoid segfault when can't open files
Junio C Hamano (18):
merge: teach -Xours/-Xtheirs to symbolic link merge
worktree: say that "add" takes an arbitrary commit in short-help
Start 2.17 cycle
Git 2.16.1
First batch after 2.16
blame: tighten command line parser
Second batch for 2.17
Third batch for 2.17
Git 2.16.2
merge: allow fast-forward when merging a tracked tag
Fourth batch for 2.17
Fifth batch for 2.17
test_must_be_empty: make sure the file exists, not just empty
untracked cache: use git_env_bool() not getenv() for customization
Sixth batch for 2.17
Seventh batch for 2.17
Eighth batch for 2.17
Git 2.17-rc0
Kaartic Sivaraam (2):
Doc/gitsubmodules: make some changes to improve readability and syntax
Doc/git-submodule: improve readability and grammar of a sentence
Kim Gybels (1):
packed_ref_cache: don't use mmap() for small files
Lucas Werkmeister (1):
daemon: add --log-destination=(stderr|syslog|none)
Martin Ågren (5):
sequencer: make lockfiles non-static
sequencer: always roll back lock in `do_recursive_merge()`
merge-recursive: always roll back lock in `merge_recursive_generic()`
merge: always roll back lock in `checkout_fast_forward()`
sequencer: do not roll back lockfile unnecessarily
Mathias Rav (1):
files_initial_transaction_commit(): only unlock if locked
Matthieu Moy (2):
send-email: add and use a local copy of Mail::Address
perl/Git: remove now useless email-address parsing code
Michael Haggerty (5):
struct snapshot: store `start` rather than `header_len`
create_snapshot(): use `xmemdupz()` rather than a strbuf
find_reference_location(): make function safe for empty snapshots
packed_ref_iterator_begin(): make optimization more general
load_contents(): don't try to mmap an empty file
Motoki Seki (1):
Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes
Mårten Kongstad (1):
docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'
Nathan Payre (1):
send-email: extract email-parsing code into a subroutine
Nguyễn Thái Ngọc Duy (85):
t2203: test status output with porcelain v2 format
Use DIFF_DETECT_RENAME for detect_rename assignments
wt-status.c: coding style fix
wt-status.c: catch unhandled diff status codes
wt-status.c: rename rename-related fields in wt_status_change_data
wt-status.c: handle worktree renames
trace.c: move strbuf_release() out of print_trace_line()
add--interactive: ignore submodule changes except HEAD
read-cache.c: change type of "temp" in write_shared_index()
read-cache.c: move tempfile creation/cleanup out of write_shared_index
diff.c: flush stdout before printing rename warnings
run-command.c: introduce trace_run_command()
run-command.c: print program 'git' when tracing git_cmd mode
run-command.c: print env vars in trace_run_command()
run-command.c: print new cwd in trace_run_command()
read-cache: don't write index twice if we can't write shared index
worktree.c: add validate_worktree()
dir.c: avoid stat() in valid_cached_dir()
dir.c: fix missing dir invalidation in untracked code
format-patch: keep cover-letter diffstat wrapped in 72 columns
completion: fix completing merge strategies on non-C locales
dir.c: stop ignoring opendir() error in open_cached_dir()
format-patch: reduce patch diffstat width to 72
gitignore.txt: elaborate shell glob syntax
trace: measure where the time is spent in the index-heavy operations
diff.c: refactor pprint_rename() to use strbuf
dir.c: ignore paths containing .git when invalidating untracked cache
parse-options: support --git-completion-helper
parse-options: add OPT_xxx_F() variants
parse-options: let OPT__FORCE take optional flags argument
git-completion.bash: introduce __gitcomp_builtin
completion: use __gitcomp_builtin in _git_add
completion: use __gitcomp_builtin in _git_am
completion: use __gitcomp_builtin in _git_apply
completion: use __gitcomp_builtin in _git_branch
completion: use __gitcomp_builtin in _git_checkout
completion: use __gitcomp_builtin in _git_cherry_pick
completion: use __gitcomp_builtin in _git_clean
completion: use __gitcomp_builtin in _git_clone
completion: use __gitcomp_builtin in _git_commit
completion: use __gitcomp_builtin in _git_config
completion: use __gitcomp_builtin in _git_describe
completion: use __gitcomp_builtin in _git_difftool
completion: use __gitcomp_builtin in _git_fetch
completion: use __gitcomp_builtin in _git_fsck
completion: use __gitcomp_builtin in _git_gc
completion: use __gitcomp_builtin in _git_grep
completion: use __gitcomp_builtin in _git_help
completion: use __gitcomp_builtin in _git_init
completion: use __gitcomp_builtin in _git_ls_files
completion: use __gitcomp_builtin in _git_ls_remote
completion: use __gitcomp_builtin in _git_merge
completion: use __gitcomp_builtin in _git_merge_base
completion: use __gitcomp_builtin in _git_mv
completion: use __gitcomp_builtin in _git_name_rev
completion: use __gitcomp_builtin in _git_notes
completion: use __gitcomp_builtin in _git_pull
completion: use __gitcomp_builtin in _git_push
completion: use __gitcomp_builtin in _git_remote
remote: force completing --mirror= instead of --mirror
completion: use __gitcomp_builtin in _git_replace
completion: use __gitcomp_builtin in _git_reset
completion: use __gitcomp_builtin in _git_revert
completion: use __gitcomp_builtin in _git_rm
completion: use __gitcomp_builtin in _git_show_branch
completion: use __gitcomp_builtin in _git_status
completion: use __gitcomp_builtin in _git_tag
completion: use __gitcomp_builtin in _git_worktree
worktree.c: add update_worktree_location()
worktree move: new command
worktree move: accept destination as directory
worktree move: refuse to move worktrees with submodules
worktree remove: new command
worktree remove: allow it when $GIT_WORK_TREE is already gone
am: add --show-current-patch
rebase: add --show-current-patch
rebase: introduce and use pseudo-ref REBASE_HEAD
am: support --quit
diff: add --compact-summary
object.h: update flag allocation comment
object.h: realign object flag allocation comment
completion: don't set PARSE_OPT_NOCOMPLETE on --rerere-autoupdate
completion: simplify _git_notes
completion: complete --{reuse,reedit}-message= for all notes subcmds
completion: more subcommands in _git_notes()
Nicolas Morey-Chaisemartin (1):
tag: add --edit option
Olga Telezhnaya (3):
mru: use double-linked list from list.h
ref-filter: get rid of duplicate code
ref-filter: get rid of goto
Patryk Obara (14):
clang-format: adjust penalty for return type line break
http-push: improve error log
sha1_file: convert pretend_sha1_file to object_id
dir: convert struct sha1_stat to use object_id
sha1_file: convert hash_sha1_file to object_id
cache: clear whole hash buffer with oidclr
match-trees: convert splice_tree to object_id
commit: convert commit_tree* to object_id
notes: convert combine_notes_* to object_id
notes: convert write_notes_tree to object_id
sha1_file: convert write_sha1_file to object_id
sha1_file: convert force_object_loose to object_id
sha1_file: convert write_loose_object to object_id
sha1_file: rename hash_sha1_file_literally
Phillip Wood (25):
t3404: check intermediate squash messages
commit: move empty message checks to libgit
Add a function to update HEAD after creating a commit
commit: move post-rewrite code to libgit
commit: move print_commit_summary() to libgit
sequencer: simplify adding Signed-off-by: trailer
sequencer: load commit related config
sequencer: try to commit without forking 'git commit'
t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1
sequencer: improve config handling
t7505: style fixes
t7505: add tests for cherry-pick and rebase -i/-p
sequencer: run 'prepare-commit-msg' hook
add -p: only display help for active keys
add -p: only bind search key if there's more than one hunk
add -p: improve error messages
add -i: add function to format hunk header
t3701: indent here documents
t3701: use test_write_lines and write_script
t3701: don't hard code sha1 hash values
t3701: add failing test for pathological context lines
add -p: adjust offsets of subsequent hunks when one is skipped
add -p: calculate offset delta for edited patches
add -p: fix counting when splitting and coalescing
add -p: don't rely on apply's '--recount' option
Prathamesh Chavan (2):
submodule: port submodule subcommand 'sync' from shell to C
submodule: port submodule subcommand 'deinit' from shell to C
Ramsay Jones (3):
t4151: consolidate multiple calls to test_i18ngrep
config.mak.uname: remove SPARSE_FLAGS setting for cygwin
Makefile: suppress a sparse warning for pack-revindex.c
Randall S. Becker (1):
hashmap.h: remove unused variable
Rasmus Villemoes (2):
grep: move grep_source_init outside critical section
grep: simplify grep_oid and grep_file
René Scharfe (15):
commit: avoid allocation in clear_commit_marks_many()
commit: use clear_commit_marks_many() in remove_redundant()
ref-filter: use clear_commit_marks_many() in do_merge_filter()
object: add clear_commit_marks_all()
bisect: avoid using the rev_info flag leak_pending
bundle: avoid using the rev_info flag leak_pending
checkout: avoid using the rev_info flag leak_pending
revision: remove the unused flag leak_pending
commit: remove unused function clear_commit_marks_for_object_array()
describe: use strbuf_add_unique_abbrev() for adding short hashes
cocci: use format keyword instead of a literal string
cocci: simplify check for trivial format strings
check-ignore: fix mix of directories and other file types
sequencer: factor out strbuf_read_file_or_whine()
perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file
Robert P. J. Day (2):
t/: correct obvious typo "detahced"
Correct mispellings of ".gitmodule" to ".gitmodules"
SZEDER Gábor (33):
travis-ci: build Git during the 'script' phase
Use MOVE_ARRAY
travis-ci: use 'set -x' for the commands under 'su' in the 32 bit Linux build
travis-ci: use 'set -e' in the 32 bit Linux build job
travis-ci: don't repeat the path of the cache directory
travis-ci: don't run the test suite as root in the 32 bit Linux build
travis-ci: don't fail if user already exists on 32 bit Linux build job
t5541: add 'test_i18ngrep's missing filename parameter
t5812: add 'test_i18ngrep's missing filename parameter
t6022: don't run 'git merge' upstream of a pipe
t4001: don't run 'git status' upstream of a pipe
t5510: consolidate 'grep' and 'test_i18ngrep' patterns
t5536: let 'test_i18ngrep' read the file without redirection
t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh'
t: validate 'test_i18ngrep's parameters
t: make 'test_i18ngrep' more informative on failure
t: document 'test_must_fail ok=<signal-name>'
t6300-for-each-ref: fix "more than one quoting style" tests
Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets
t: prevent '-x' tracing from interfering with test helpers' stderr
t: add means to disable '-x' tracing for individual test scripts
t1507-rev-parse-upstream: don't check the stderr of a shell function
t5536: simplify checking of messages output to stderr
t3030-merge-recursive: don't check the stderr of a subshell
t5500-fetch-pack: don't check the stderr of a subshell
t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log file
t5570-git-daemon: don't check the stderr of a subshell
t9903-bash-prompt: don't check the stderr of __git_ps1()
t1510-repo-setup: mark as untraceable with '-x'
t/README: add a note about don't saving stderr of compound commands
travis-ci: run tests with '-x' tracing
t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'
t9402-git-cvsserver-refs: don't check the stderr of a subshell
Stefan Beller (14):
diff.h: make pickaxe_opts an unsigned bit field
diff: migrate diff_flags.pickaxe_ignore_case to a pickaxe_opts bit
diff: introduce DIFF_PICKAXE_KINDS_MASK
diffcore: add a pickaxe option to find a specific blob
diff: properly error out when combining multiple pickaxe options
diff: use HAS_MULTI_BITS instead of counting bits manually
t/lib-submodule-update.sh: clarify test
t/lib-submodule-update.sh: fix test ignoring ignored files in submodules
unpack-trees: oneway_merge to update submodules
submodule: submodule_move_head omits old argument in forced case
builtin/pull: respect verbosity settings in submodules
send-email: error out when relogin delay is missing
color.h: document and modernize header
Documentation/git-status: clarify status table for porcelain mode
Stefan Moch (2):
t7001: add test case for --dry-run
mv: remove unneeded 'if (!show_only)'
Stephen R Guglielmo (1):
subtree: fix add and pull for GPG-signed commits
Tatyana Krasnukha (1):
apply: handle Subversion diffs with /dev/null gracefully
Thomas Gummerer (5):
stash: don't delete untracked files that match pathspec
read-cache: fix reading the shared index for other repos
split-index: don't write cache tree with null oid entries
travis: run tests with GIT_TEST_SPLIT_INDEX
reset --hard: make use of the pretty machinery
Thomas Levesque (1):
userdiff.c: add C# async keyword in diff pattern
Todd Zullinger (3):
doc: mention 'git show' defaults to HEAD
Makefile: remove *.spec from clean target
Makefile: add NO_PERL_CPAN_FALLBACKS knob
Torsten Bögershausen (1):
convert_to_git(): safe_crlf/checksafe becomes int conv_flags
Yasushi SHOJI (1):
bisect: debug: convert struct object to object_id
brian m. carlson (15):
repository: pre-initialize hash algo pointer
hash: move SHA-1 macros to hash.h
hash: create union for hash context allocation
builtin/index-pack: improve hash function abstraction
builtin/unpack-objects: switch uses of SHA-1 to the_hash_algo
sha1_file: switch uses of SHA-1 to the_hash_algo
fast-import: switch various uses of SHA-1 to the_hash_algo
pack-check: convert various uses of SHA-1 to abstract forms
pack-write: switch various SHA-1 values to abstract forms
read-cache: abstract away uses of SHA-1
csum-file: rename sha1file to hashfile
csum-file: abstract uses of SHA-1
bulk-checkin: abstract SHA-1 usage
hash: update obsolete reference to SHA1_HEADER
docs/interpret-trailers: fix agreement error
Ævar Arnfjörð Bjarmason (53):
Makefile: don't error out under DC_SHA1_EXTERNAL if DC_SHA1_SUBMODULE=auto
Makefile: under "make dist", include the sha1collisiondetection submodule
sha1dc_git.h: re-arrange an ifdef chain for a subsequent change
Makefile: replace perl/Makefile.PL with simple make rules
commit doc: document that -c, -C, -F and --fixup with -m error
commit: add support for --fixup <commit> -m"<extra message>"
perl: avoid *.pmc and fix Error.pm further
perf: amend the grep tests to test grep.threads
cat-file doc: document that -e will return some output
status: add a failing test showing a core.untrackedCache bug
wildmatch test: indent with tabs, not spaces
wildmatch test: use more standard shell style
wildmatch test: don't try to vertically align our output
wildmatch test: use a paranoia pattern from nul_match()
wildmatch test: remove dead fnmatch() test code
wildmatch test: use test_must_fail, not ! for test-wildmatch
wildmatch test: perform all tests under all wildmatch() modes
wildmatch test: create & test files on disk in addition to in-memory
test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite
wildmatch test: mark test as EXPENSIVE_ON_WINDOWS
fetch: don't redundantly NULL something calloc() gave us
fetch: trivially refactor assignment to ref_nr
fetch: stop accessing "remote" variable indirectly
remote: add a macro for "refs/tags/*:refs/tags/*"
fetch tests: refactor in preparation for testing tag pruning
fetch tests: re-arrange arguments for future readability
fetch tests: add a tag to be deleted to the pruning tests
fetch tests: test --prune and refspec interaction
fetch tests: double quote a variable for interpolation
fetch tests: expand case/esac for later change
fetch tests: fetch <url> <spec> as well as fetch [<remote>]
git fetch doc: add a new section to explain the ins & outs of pruning
git remote doc: correct dangerous lies about what prune does
git-fetch & config doc: link to the new PRUNING section
fetch tests: add scaffolding for the new fetch.pruneTags
fetch: add a --prune-tags option and fetch.pruneTags config
fetch: make the --prune-tags work with <url>
update-index doc: note a fixed bug in the untracked cache
update-index doc: note the caveat with "could not open..."
perl: *.pm files should not have the executable bit
Git.pm: remove redundant "use strict" from sub-package
Git.pm: add the "use warnings" pragma
commit: run git gc --auto just before the post-commit hook
gitweb: hard-depend on the Digest::MD5 5.8 module
Git.pm: hard-depend on the File::{Temp,Spec} modules
git-send-email: unconditionally use Net::{SMTP,Domain}
perl: update our ancient copy of Error.pm
perl: update our copy of Mail::Address
perl: move CPAN loader wrappers to another namespace
perl: generalize the Git::LoadCPAN facility
perl: move the perl/Git/FromCPAN tree to perl/FromCPAN
perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS
git manpage: note git-security@googlegroups.com
^ permalink raw reply [relevance 3%]
* [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%]
* RE: [PATCH] git-svn: convert CRLF to LF in commit message to SVN
2017-12-14 0:20 5% ` [PATCH] git-svn: convert CRLF to LF in commit message to SVN Eric Wong
@ 2017-12-14 20:46 4% ` Bennett, Brian
0 siblings, 0 replies; 162+ results
From: Bennett, Brian @ 2017-12-14 20:46 UTC (permalink / raw)
To: Eric Wong, Junio C Hamano; +Cc: git@vger.kernel.org
Thank you for your fast response,
I haven't done a build of this type before (so I could test the patch first) so I'm trying to do that and get this far:
1. git clone https://github.com/msysgit/msysgit.git "c:\temp\git\guitbuild"
2. git clone https://github.com/git-for-windows/git.git "c:\temp\git\guitbuild\git"
3. c:\temp\git\guitbuild\msys.bat
-------------------------------------------------------
Building and Installing Git
-------------------------------------------------------
CC archive-tar.o
In file included from run-command.h:5,
from archive-tar.c:9:
compat/win32/pthread.h:38: error: expected ')' before 'ConditionVariable'
compat/win32/pthread.h:40: error: expected ')' before 'ConditionVariable'
compat/win32/pthread.h:42: error: expected ')' before 'ConditionVariable'
compat/win32/pthread.h:44: error: expected ')' before 'ConditionVariable'
make: *** [archive-tar.o] Error 1
The applicable lines from compat/win32/pthread.h:
37: WINBASEAPI VOID WINAPI
38: InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable);
39: WINBASEAPI VOID WINAPI
40: WakeConditionVariable(PCONDITION_VARIABLE ConditionVariable);
41: WINBASEAPI VOID WINAPI
42: WakeAllConditionVariable(PCONDITION_VARIABLE ConditionVariable);
43: WINBASEAPI BOOL WINAPI
44: SleepConditionVariableCS(PCONDITION_VARIABLE ConditionVariable,
45: PCRITICAL_SECTION CriticalSection,
46: DWORD dwMilliseconds);
I don't want to drag out testing the patch, so if either of you are able to quickly guide me on what I am doing incorrectly I am willing to get the build done so I can test it. If not, could one of you build with the patch and somehow get that to me so I could test?
Brian Bennett | Supv System Admin & Support, TA TECH Change Mgmt/Production Support
o: 319-355-7602 | c: 319-533-1094
e: brian.bennett@transamerica.com | w: www.transamerica.com
Transamerica
6400 C St. SW, Cedar Rapids, IA 52404 MS-2410
Facebook | LinkedIn
-----Original Message-----
From: Eric Wong [mailto:e@80x24.org]
Sent: Wednesday, December 13, 2017 6:21 PM
To: Bennett, Brian <Brian.Bennett@Transamerica.com>; Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: [PATCH] git-svn: convert CRLF to LF in commit message to SVN
"Bennett, Brian" <Brian.Bennett@Transamerica.com> wrote:
> Environment:
>
> Desktop: Windows 7 Enterprise 64-bit
> svn client (if applicable): 1.8.8 from Apache git
> (https://urldefense.proofpoint.com/v2/url?u=https-3A__git-2Dfor-2Dwind
> ows.github.io_&d=DwIBaQ&c=9g4MJkl2VjLjS6R4ei18BA&r=CorEYR_fG6hKwP1xRO7
> dkFFJM6UfxLGgypqJT0q3mO4&m=f1K2uzEyLbtIX-0te07VlclknjdUztTvbgDMA0thROs
> &s=3AqxH_SEQG48PhnwuCD8udYta0mqXfgKKlmAWMfSlfE&e=): git version
> 2.10.1.windows.1 GitTfs
> (https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_git-2
> Dtfs_git-2Dtfs&d=DwIBaQ&c=9g4MJkl2VjLjS6R4ei18BA&r=CorEYR_fG6hKwP1xRO7
> dkFFJM6UfxLGgypqJT0q3mO4&m=f1K2uzEyLbtIX-0te07VlclknjdUztTvbgDMA0thROs
> &s=C2gZ6zgihigH5eMpa5UVgj1mglbQbGN1HG0blMqjmsY&e=): git-tfs version
> 0.27.0.0 (TFS client library 14.0.0.0 (MS)) (32-bit) Team Foundation
> Server: 2010 Visual Studio installation: 2010 and 2015
<snip>
Thanks for the report and research!
> I've researched enough to believe that the commit message being used
> by git svn contains a carriage return character
> (x'0D') and that has not been allowed in Subversion since version 1.6
> (I can replicate this specific error message using an SVN dump file
> that contains x'0D' characters in the log messages.). However, I
> cannot find where I have any control over the log message that git svn
> is trying to use nor can I observe it. Note that I've also used the
> '-v' switch with the 'git svn dcommit', but do not receive anything
> other than what I am showing above.
Maybe git-for-windows isn't filtering CRLF into LF as "git commit"
does on GNU/Linux when the original commit was made?
I had to use "git commit-tree" to reproduce the error in testing (instead of "git commit)"
Anyways, the one-line fix below should be enough for you.
Care to give it a shot? Thanks again.
Junio: please pull when Brian confirms, thanks.
The following changes since commit 95ec6b1b3393eb6e26da40c565520a8db9796e9f:
RelNotes: the eighth batch (2017-12-06 09:29:50 -0800)
are available in the git repository at:
git://bogomips.org/git-svn.git svn-crlf
for you to fetch changes up to 95450bbbaaacaf2d603a4fbded25d55243dfb291:
git-svn: convert CRLF to LF in commit message to SVN (2017-12-14 00:09:38 +0000)
----------------------------------------------------------------
Eric Wong (1):
git-svn: convert CRLF to LF in commit message to SVN
git-svn.perl | 1 +
t/t9169-git-svn-dcommit-crlf.sh | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100755 t/t9169-git-svn-dcommit-crlf.sh
------8<--------
Subject: [PATCH] git-svn: convert CRLF to LF in commit message to SVN
Subversion since 1.6 does not accept CR characters in the commit message, so filter it out on our end before 'git svn dcommit' sets the svn:log property.
Reported-by: Brian Bennett <Brian.Bennett@Transamerica.com>
Signed-off-by: Eric Wong <e@80x24.org>
---
git-svn.perl | 1 +
t/t9169-git-svn-dcommit-crlf.sh | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100755 t/t9169-git-svn-dcommit-crlf.sh
diff --git a/git-svn.perl b/git-svn.perl index d2404184ba..aa242d4f4f 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1865,6 +1865,7 @@ sub get_commit_entry {
}
}
$msgbuf =~ s/\s+$//s;
+ $msgbuf =~ s/\r\n/\n/sg; # SVN 1.6+ disallows CRLF
if ($Git::SVN::_add_author_from && defined($author)
&& !$saw_from) {
$msgbuf .= "\n\nFrom: $author";
diff --git a/t/t9169-git-svn-dcommit-crlf.sh b/t/t9169-git-svn-dcommit-crlf.sh new file mode 100755 index 0000000000..54b1f61a2a
--- /dev/null
+++ b/t/t9169-git-svn-dcommit-crlf.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+test_description='git svn dcommit CRLF'
+. ./lib-git-svn.sh
+
+test_expect_success 'setup commit repository' '
+ svn_cmd mkdir -m "$test_description" "$svnrepo/dir" &&
+ git svn clone "$svnrepo" work &&
+ (
+ cd work &&
+ echo foo >>foo &&
+ git update-index --add foo &&
+ printf "a\\r\\n\\r\\nb\\r\\nc\\r\\n" >cmt &&
+ p=$(git rev-parse HEAD) &&
+ t=$(git write-tree) &&
+ cmt=$(git commit-tree -p $p $t <cmt) &&
+ git update-ref refs/heads/master $cmt &&
+ git cat-file commit HEAD | tail -n4 >out &&
+ test_cmp cmt out &&
+ git svn dcommit &&
+ printf "a\\n\\nb\\nc\\n" >exp &&
+ git cat-file commit HEAD | sed -ne 6,9p >out &&
+ test_cmp exp out
+ )
+'
+
+test_done
--
EW
^ permalink raw reply [relevance 4%]
* [PATCH] git-svn: convert CRLF to LF in commit message to SVN
@ 2017-12-14 0:20 5% ` Eric Wong
2017-12-14 20:46 4% ` Bennett, Brian
0 siblings, 1 reply; 162+ results
From: Eric Wong @ 2017-12-14 0:20 UTC (permalink / raw)
To: Bennett, Brian, Junio C Hamano; +Cc: git
"Bennett, Brian" <Brian.Bennett@Transamerica.com> wrote:
> Environment:
>
> Desktop: Windows 7 Enterprise 64-bit
> svn client (if applicable): 1.8.8 from Apache
> git (https://git-for-windows.github.io/): git version 2.10.1.windows.1
> GitTfs (https://github.com/git-tfs/git-tfs): git-tfs version 0.27.0.0 (TFS client library 14.0.0.0 (MS)) (32-bit)
> Team Foundation Server: 2010
> Visual Studio installation: 2010 and 2015
<snip>
Thanks for the report and research!
> I've researched enough to believe that the commit message
> being used by git svn contains a carriage return character
> (x'0D') and that has not been allowed in Subversion since
> version 1.6 (I can replicate this specific error message using
> an SVN dump file that contains x'0D' characters in the log
> messages.). However, I cannot find where I have any control
> over the log message that git svn is trying to use nor can I
> observe it. Note that I've also used the '-v' switch with the
> 'git svn dcommit', but do not receive anything other than what
> I am showing above.
Maybe git-for-windows isn't filtering CRLF into LF as "git commit"
does on GNU/Linux when the original commit was made?
I had to use "git commit-tree" to reproduce the error in testing
(instead of "git commit)"
Anyways, the one-line fix below should be enough for you.
Care to give it a shot? Thanks again.
Junio: please pull when Brian confirms, thanks.
The following changes since commit 95ec6b1b3393eb6e26da40c565520a8db9796e9f:
RelNotes: the eighth batch (2017-12-06 09:29:50 -0800)
are available in the git repository at:
git://bogomips.org/git-svn.git svn-crlf
for you to fetch changes up to 95450bbbaaacaf2d603a4fbded25d55243dfb291:
git-svn: convert CRLF to LF in commit message to SVN (2017-12-14 00:09:38 +0000)
----------------------------------------------------------------
Eric Wong (1):
git-svn: convert CRLF to LF in commit message to SVN
git-svn.perl | 1 +
t/t9169-git-svn-dcommit-crlf.sh | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100755 t/t9169-git-svn-dcommit-crlf.sh
------8<--------
Subject: [PATCH] git-svn: convert CRLF to LF in commit message to SVN
Subversion since 1.6 does not accept CR characters in the commit
message, so filter it out on our end before 'git svn dcommit' sets
the svn:log property.
Reported-by: Brian Bennett <Brian.Bennett@Transamerica.com>
Signed-off-by: Eric Wong <e@80x24.org>
---
git-svn.perl | 1 +
t/t9169-git-svn-dcommit-crlf.sh | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100755 t/t9169-git-svn-dcommit-crlf.sh
diff --git a/git-svn.perl b/git-svn.perl
index d2404184ba..aa242d4f4f 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1865,6 +1865,7 @@ sub get_commit_entry {
}
}
$msgbuf =~ s/\s+$//s;
+ $msgbuf =~ s/\r\n/\n/sg; # SVN 1.6+ disallows CRLF
if ($Git::SVN::_add_author_from && defined($author)
&& !$saw_from) {
$msgbuf .= "\n\nFrom: $author";
diff --git a/t/t9169-git-svn-dcommit-crlf.sh b/t/t9169-git-svn-dcommit-crlf.sh
new file mode 100755
index 0000000000..54b1f61a2a
--- /dev/null
+++ b/t/t9169-git-svn-dcommit-crlf.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+test_description='git svn dcommit CRLF'
+. ./lib-git-svn.sh
+
+test_expect_success 'setup commit repository' '
+ svn_cmd mkdir -m "$test_description" "$svnrepo/dir" &&
+ git svn clone "$svnrepo" work &&
+ (
+ cd work &&
+ echo foo >>foo &&
+ git update-index --add foo &&
+ printf "a\\r\\n\\r\\nb\\r\\nc\\r\\n" >cmt &&
+ p=$(git rev-parse HEAD) &&
+ t=$(git write-tree) &&
+ cmt=$(git commit-tree -p $p $t <cmt) &&
+ git update-ref refs/heads/master $cmt &&
+ git cat-file commit HEAD | tail -n4 >out &&
+ test_cmp cmt out &&
+ git svn dcommit &&
+ printf "a\\n\\nb\\nc\\n" >exp &&
+ git cat-file commit HEAD | sed -ne 6,9p >out &&
+ test_cmp exp out
+ )
+'
+
+test_done
--
EW
^ permalink raw reply related [relevance 5%]
* [PATCH 0/3] fixes for split index mode
@ 2017-12-10 21:21 6% Thomas Gummerer
0 siblings, 0 replies; 162+ results
From: Thomas Gummerer @ 2017-12-10 21:21 UTC (permalink / raw)
To: git
Cc: Christian Couder, Lars Schneider, Brandon Williams, Jeff King,
Junio C Hamano, Nguyễn Thái Ngọc Duy,
Thomas Gummerer
On the current master branch, 95ec6b1b33 ("RelNotes: the eighth
batch", 2017-12-06) , the test suite fails a few tests when
GIT_TEST_SPLIT_INDEX is set:
Test Summary Report
-------------------
t3007-ls-files-recurse-submodules.sh (Wstat: 256 Tests: 21 Failed: 13)
Failed tests: 2-14
Non-zero exit status: 1
t7009-filter-branch-null-sha1.sh (Wstat: 256 Tests: 6 Failed: 1)
Failed test: 4
Non-zero exit status: 1
t5304-prune.sh (Wstat: 256 Tests: 25 Failed: 3)
Failed tests: 23-25
Non-zero exit status: 1
t7814-grep-recurse-submodules.sh (Wstat: 256 Tests: 22 Failed: 13)
Failed tests: 2-3, 5-10, 12-15, 22
Non-zero exit status: 1
This series fixes these and makes travis run the test suite with
GIT_TEST_SPLIT_INDEX to avoid similar breakages in the future.
Thomas Gummerer (3):
repository: fix repo_read_index with submodules
prune: fix pruning with multiple worktrees and split index
travis: run tests with GIT_TEST_SPLIT_INDEX
.travis.yml | 2 +-
cache.h | 1 +
read-cache.c | 19 +++++++++++++++++--
repository.c | 13 ++++++++++++-
repository.h | 2 ++
revision.c | 13 ++++++++-----
6 files changed, 41 insertions(+), 9 deletions(-)
--
2.15.1.504.g5279b80103
^ permalink raw reply [relevance 6%]
* [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%]
* [ANNOUNCE] Git v2.14.0
@ 2017-08-04 16:54 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-08-04 16:54 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.14.0 is now available at the
usual places. It is comprised of 727 non-merge commits since
v2.13.0, contributed by 66 people, 18 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
when kernel.org mirrors catch up.
The following public repositories all have a copy of the 'v2.14.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.13.0 are as follows.
Welcome to the Git development community!
Anthony Sottile, A. Wilcox, Ben Peart, Brian Malehorn, Hugues
Peccatte, James Clarke, Jeff Smith, Kaartic Sivaraam, Liam
Beguin, Louis, Phillip Wood, Rikard Falkeborn, Sahil Dua,
Samuel Lijin, Stephen Kent, Sylvestre Ledru, Tyler Brazier,
and xiaoqiang zhao.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
Alexander Shopov, Andreas Heiduk, Beat Bolli, Brandon Williams,
brian m. carlson, Changwoo Ryu, Christian Couder, David Aguilar,
David Turner, Dennis Kaarsemaker, Dimitriy Ryazantcev, Eric
Wong, Hartmut Henkel, Jean-Noel Avila, Jeff Hostetler, Jeff
King, Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan
Nieder, Jonathan Tan, Jordi Mas, Junio C Hamano, Kyle J. McKay,
Kyle Meyer, Lars Schneider, Marc Branchaud, Michael Haggerty,
Miguel Torroja, Mike Hommey, Nguyễn Thái Ngọc Duy, Patrick
Steinhardt, Peter Krefting, Prathamesh Chavan, Ralf Thielow,
Ramsay Jones, René Scharfe, Stefan Beller, Štěpán Němec,
Sven Strickroth, SZEDER Gábor, Thomas Gummerer, Torsten
Bögershausen, Trần Ngọc Quân, and Ville Skyttä.
----------------------------------------------------------------
Git 2.14 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 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 not scheduled to happen in the upcoming
release (yet).
* 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.
* The experiment to improve the hunk-boundary selection of textual
diff output has finished, and the "indent heuristics" has now
become the default.
* Git can now be built with PCRE v2 instead of v1 of the PCRE
library. Replace USE_LIBPCRE=YesPlease with USE_LIBPCRE2=YesPlease
in existing build scripts to build against the new version. As the
upstream PCRE maintainer has abandoned v1 maintenance for all but
the most critical bug fixes, use of v2 is recommended.
Updates since v2.13
-------------------
UI, Workflows & Features
* The colors in which "git status --short --branch" showed the names
of the current branch and its remote-tracking branch are now
configurable.
* "git clone" learned the "--no-tags" option not to fetch all tags
initially, and also set up the tagopt not to follow any tags in
subsequent fetches.
* "git archive --format=zip" learned to use zip64 extension when
necessary to go beyond the 4GB limit.
* "git reset" learned "--recurse-submodules" option.
* "git diff --submodule=diff" now recurses into nested submodules.
* "git repack" learned to accept the --threads=<n> option and pass it
to pack-objects.
* "git send-email" learned to run sendemail-validate hook to inspect
and reject a message before sending it out.
* There is no good reason why "git fetch $there $sha1" should fail
when the $sha1 names an object at the tip of an advertised ref,
even when the other side hasn't enabled allowTipSHA1InWant.
* The "[includeIf "gitdir:$dir"] path=..." mechanism introduced in
2.13.0 would canonicalize the path of the gitdir being matched,
and did not match e.g. "gitdir:~/work/*" against a repo in
"~/work/main" if "~/work" was a symlink to "/mnt/storage/work".
Now we match both the resolved canonical path and what "pwd" would
show. The include will happen if either one matches.
* The "indent" heuristics is now the default in "diff". The
diff.indentHeuristic configuration variable can be set to "false"
for those who do not want it.
* Many commands learned to pay attention to submodule.recurse
configuration.
* The convention for a command line is to follow "git cmdname
--options" with revisions followed by an optional "--"
disambiguator and then finally pathspecs. When "--" is not there,
we make sure early ones are all interpretable as revs (and do not
look like paths) and later ones are the other way around. A
pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from
the top-level of the working tree, no matter what subdirectory you
are working from) are conservatively judged as "not a path", which
required disambiguation more often. The command line parser
learned to say "it's a pathspec" a bit more often when the syntax
looks like so.
* Update "perl-compatible regular expression" support to enable JIT
and also allow linking with the newer PCRE v2 library.
* "filter-branch" learned a pseudo filter "--setup" that can be used
to define common functions/variables that can be used by other
filters.
* Using "git add d/i/r" when d/i/r is the top of the working tree of
a separate repository would create a gitlink in the index, which
would appear as a not-quite-initialized submodule to others. We
learned to give warnings when this happens.
* "git status" learned to optionally give how many stash entries there
are in its output.
* "git status" has long shown essentially the same message as "git
commit"; the message it gives while preparing for the root commit,
i.e. "Initial commit", was hard to understand for some new users.
Now it says "No commits yet" to stress more on the current status
(rather than the commit the user is preparing for, which is more in
line with the focus of "git commit").
* "git send-email" now has --batch-size and --relogin-delay options
which can be used to overcome limitations on SMTP servers that
restrict on how many of e-mails can be sent in a single session.
* An old message shown in the commit log template was removed, as it
has outlived its usefulness.
* "git pull --rebase --recurse-submodules" learns to rebase the
branch in the submodules to an updated base.
* "git log" learned -P as a synonym for --perl-regexp, "git grep"
already had such a synonym.
* "git log" didn't understand --regexp-ignore-case when combined with
--perl-regexp. This has been fixed.
Performance, Internal Implementation, Development Support etc.
* The default packed-git limit value has been raised on larger
platforms to save "git fetch" from a (recoverable) failure while
"gc" is running in parallel.
* Code to update the cache-tree has been tightened so that we won't
accidentally write out any 0{40} entry in the tree object.
* Attempt to allow us notice "fishy" situation where we fail to
remove the temporary directory used during the test.
* Travis CI gained a task to format the documentation with both
AsciiDoc and AsciiDoctor.
* Some platforms have ulong that is smaller than time_t, and our
historical use of ulong for timestamp would mean they cannot
represent some timestamp that the platform allows. Invent a
separate and dedicated timestamp_t (so that we can distingiuish
timestamps and a vanilla ulongs, which along is already a good
move), and then declare uintmax_t is the type to be used as the
timestamp_t.
* We can trigger Windows auto-build tester (credits: Dscho &
Microsoft) from our existing Travis CI tester now.
* Conversion from uchar[20] to struct object_id continues.
* Simplify parse_pathspec() codepath and stop it from looking at the
default in-core index.
* Add perf-test for wildmatch.
* Code from "conversion using external process" codepath has been
extracted to a separate sub-process.[ch] module.
* When "git checkout", "git merge", etc. manipulates the in-core
index, various pieces of information in the index extensions are
discarded from the original state, as it is usually not the case
that they are kept up-to-date and in-sync with the operation on the
main index. The untracked cache extension is copied across these
operations now, which would speed up "git status" (as long as the
cache is properly invalidated).
* The internal implementation of "git grep" has seen some clean-up.
* Update the C style recommendation for notes for translators, as
recent versions of gettext tools can work with our style of
multi-line comments.
* The implementation of "ref" API around the "packed refs" have been
cleaned up, in preparation for further changes.
* The internal logic used in "git blame" has been libified to make it
easier to use by cgit.
* Our code often opens a path to an optional file, to work on its
contents when we can successfully open it. We can ignore a failure
to open if such an optional file does not exist, but we do want to
report a failure in opening for other reasons (e.g. we got an I/O
error, or the file is there, but we lack the permission to open).
The exact errors we need to ignore are ENOENT (obviously) and
ENOTDIR (less obvious). Instead of repeating comparison of errno
with these two constants, introduce a helper function to do so.
* We often try to open a file for reading whose existence is
optional, and silently ignore errors from open/fopen; report such
errors if they are not due to missing files.
* When an existing repository is used for t/perf testing, we first
create bit-for-bit copy of it, which may grab a transient state of
the repository and freeze it into the repository used for testing,
which then may cause Git operations to fail. Single out "the index
being locked" case and forcibly drop the lock from the copy.
* Three instances of the same helper function have been consolidated
to one.
* "fast-import" uses a default pack chain depth that is consistent
with other parts of the system.
* A new test to show the interaction between the pattern [^a-z]
(which matches '/') and a slash in a path has been added. The
pattern should not match the slash with "pathmatch", but should
with "wildmatch".
* The 'diff-highlight' program (in contrib/) has been restructured
for easier reuse by an external project 'diff-so-fancy'.
* A common pattern to free a piece of memory and assign NULL to the
pointer that used to point at it has been replaced with a new
FREE_AND_NULL() macro.
* Traditionally, the default die() routine had a code to prevent it
from getting called multiple times, which interacted badly when a
threaded program used it (one downside is that the real error may
be hidden and instead the only error message given to the user may
end up being "die recursion detected", which is not very useful).
* Introduce a "repository" object to eventually make it easier to
work in multiple repositories (the primary focus is to work with
the superproject and its submodules) in a single process.
* Optimize "what are the object names already taken in an alternate
object database?" query that is used to derive the length of prefix
an object name is uniquely abbreviated to.
* The hashmap API has been updated so that data to customize the
behaviour of the comparison function can be specified at the time a
hashmap is initialized.
* The "collision detecting" SHA-1 implementation shipped with 2.13 is
now integrated into git.git as a submodule (the first submodule to
ship with git.git). Clone git.git with --recurse-submodules to get
it. For now a non-submodule copy of the same code is also shipped
as part of the tree.
* A recent update made it easier to use "-fsanitize=" option while
compiling but supported only one sanitize option. Allow more than
one to be combined, joined with a comma, like "make SANITIZE=foo,bar".
* Use "p4 -G" to make "p4 changes" output more Python-friendly
to parse.
* We started using "%" PRItime, imitating "%" PRIuMAX and friends, as
a way to format the internal timestamp value, but this does not
play well with gettext(1) i18n framework, and causes "make pot"
that is run by the l10n coordinator to create a broken po/git.pot
file. This is a possible workaround for that problem.
* It turns out that Cygwin also needs the fopen() wrapper that
returns failure when a directory is opened for reading.
Also contains various documentation updates and code clean-ups.
Fixes since v2.13
-----------------
Unless otherwise noted, all the fixes since v2.13 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git gc" did not interact well with "git worktree"-managed
per-worktree refs.
* "git cherry-pick" and other uses of the sequencer machinery
mishandled a trailer block whose last line is an incomplete line.
This has been fixed so that an additional sign-off etc. are added
after completing the existing incomplete line.
* The codepath in "git am" that is used when running "git rebase"
leaked memory held for the log message of the commits being rebased.
* "git clone --config var=val" is a way to populate the
per-repository configuration file of the new repository, but it did
not work well when val is an empty string. This has been fixed.
* Setting "log.decorate=false" in the configuration file did not take
effect in v2.13, which has been corrected.
* A few codepaths in "checkout" and "am" working on an unborn branch
tried to access an uninitialized piece of memory.
* The Web interface to gmane news archive is long gone, even though
the articles are still accessible via NTTP. Replace the links with
ones to public-inbox.org. Because their message identification is
based on the actual message-id, it is likely that it will be easier
to migrate away from it if/when necessary.
* The receive-pack program now makes sure that the push certificate
records the same set of push options used for pushing.
* Tests have been updated to pass under GETTEXT_POISON (a mechanism
to ensure that output strings that should not be translated are
not translated by mistake), and TravisCI is told to run them.
* "git checkout --recurse-submodules" did not quite work with a
submodule that itself has submodules.
* "pack-objects" can stream a slice of an existing packfile out when
the pack bitmap can tell that the reachable objects are all needed
in the output, without inspecting individual objects. This
strategy however would not work well when "--local" and other
options are in use, and need to be disabled.
* Fix memory leaks pointed out by Coverity (and people).
* "git read-tree -m" (no tree-ish) gave a nonsense suggestion "use
--empty if you want to clear the index". With "-m", such a request
will still fail anyway, as you'd need to name at least one tree-ish
to be merged.
* Make sure our tests would pass when the sources are checked out
with "platform native" line ending convention by default on
Windows. Some "text" files out tests use and the test scripts
themselves that are meant to be run with /bin/sh, ought to be
checked out with eol=LF even on Windows.
* Introduce the BUG() macro to improve die("BUG: ...").
* Clarify documentation for include.path and includeIf.<condition>.path
configuration variables.
* Git sometimes gives an advice in a rhetorical question that does
not require an answer, which can confuse new users and non native
speakers. Attempt to rephrase them.
* A few http:// links that are redirected to https:// in the
documentation have been updated to https:// links.
* "git for-each-ref --format=..." with %(HEAD) in the format used to
resolve the HEAD symref as many times as it had processed refs,
which was wasteful, and "git branch" shared the same problem.
* Regression fix to topic recently merged to 'master'.
* The shell completion script (in contrib/) learned "git stash" has
a new "push" subcommand.
* "git interpret-trailers", when used as GIT_EDITOR for "git commit
-v", looked for and appended to a trailer block at the very end,
i.e. at the end of the "diff" output. The command has been
corrected to pay attention to the cut-mark line "commit -v" adds to
the buffer---the real trailer block should appear just before it.
* A test allowed both "git push" and "git receive-pack" on the other
end write their traces into the same file. This is OK on platforms
that allows atomically appending to a file opened with O_APPEND,
but on other platforms led to a mangled output, causing
intermittent test failures. This has been fixed by disabling
traces from "receive-pack" in the test.
* Tag objects, which are not reachable from any ref, that point at
missing objects were mishandled by "git gc" and friends (they
should silently be ignored instead)
* "git describe --contains" penalized light-weight tags so much that
they were almost never considered. Instead, give them about the
same chance to be considered as an annotated tag that is the same
age as the underlying commit would.
* The "run-command" API implementation has been made more robust
against dead-locking in a threaded environment.
* A recent update to t5545-push-options.sh started skipping all the
tests in the script when a web server testing is disabled or
unavailable, not just the ones that require a web server. Non HTTP
tests have been salvaged to always run in this script.
* "git send-email" now uses Net::SMTP::SSL, which is obsolete, only
when needed. Recent versions of Net::SMTP can do TLS natively.
* "foo\bar\baz" in "git fetch foo\bar\baz", even though there is no
slashes in it, cannot be a nickname for a remote on Windows, as
that is likely to be a pathname on a local filesystem.
* "git clean -d" used to clean directories that has ignored files,
even though the command should not lose ignored ones without "-x".
"git status --ignored" did not list ignored and untracked files
without "-uall". These have been corrected.
* The result from "git diff" that compares two blobs, e.g. "git diff
$commit1:$path $commit2:$path", used to be shown with the full
object name as given on the command line, but it is more natural to
use the $path in the output and use it to look up .gitattributes.
* The "collision detecting" SHA-1 implementation shipped with 2.13
was quite broken on some big-endian platforms and/or platforms that
do not like unaligned fetches. Update to the upstream code which
has already fixed these issues.
* "git am -h" triggered a BUG().
* The interaction of "url.*.insteadOf" and custom URL scheme's
whitelisting is now documented better.
* The timestamp of the index file is now taken after the file is
closed, to help Windows, on which a stale timestamp is reported by
fstat() on a file that is opened for writing and data was written
but not yet closed.
* "git pull --rebase --autostash" didn't auto-stash when the local history
fast-forwards to the upstream.
* A flaky test has been corrected.
* "git $cmd -h" for builtin commands calls the implementation of the
command (i.e. cmd_$cmd() function) without doing any repository
set-up, and the commands that expect RUN_SETUP is done by the Git
potty needs to be prepared to show the help text without barfing.
(merge d691551192 jk/consistent-h later to maint).
* Help contributors that visit us at GitHub.
* "git stash push <pathspec>" did not work from a subdirectory at all.
Bugfix for a topic in v2.13
* As there is no portable way to pass timezone information to
strftime, some output format from "git log" and friends are
impossible to produce. Teach our own strbuf_addftime to replace %z
and %Z with caller-supplied values to help working around this.
(merge 6eced3ec5e rs/strbuf-addftime-zZ later to maint).
* "git mergetool" learned to work around a wrapper MacOS X adds
around underlying meld.
* An example in documentation that does not work in multi worktree
configuration has been corrected.
* The pretty-format specifiers like '%h', '%t', etc. had an
optimization that no longer works correctly. In preparation/hope
of getting it correctly implemented, first discard the optimization
that is broken.
* The code to pick up and execute command alias definition from the
configuration used to switch to the top of the working tree and
then come back when the expanded alias was executed, which was
unnecessarilyl complex. Attempt to simplify the logic by using the
early-config mechanism that does not chdir around.
* Fix configuration codepath to pay proper attention to commondir
that is used in multi-worktree situation, and isolate config API
into its own header file.
(merge dc8441fdb4 bw/config-h later to maint).
* "git add -p" were updated in 2.12 timeframe to cope with custom
core.commentchar but the implementation was buggy and a
metacharacter like $ and * did not work.
* A recent regression in "git rebase -i" has been fixed and tests
that would have caught it and others have been added.
* An unaligned 32-bit access in pack-bitmap code has been corrected.
* Tighten error checks for invalid "git apply" input.
* The split index code did not honor core.sharedRepository setting
correctly.
* The Makefile rule in contrib/subtree for building documentation
learned to honour USE_ASCIIDOCTOR just like the main documentation
set does.
* Code clean-up to fix possible buffer over-reading.
* A few tests that tried to verify the contents of push certificates
did not use 'git rev-parse' to formulate the line to look for in
the certificate correctly.
* Update the character width tables.
* After "git branch --move" of the currently checked out branch, the
code to walk the reflog of HEAD via "log -g" and friends
incorrectly stopped at the reflog entry that records the renaming
of the branch.
* The rewrite of "git branch --list" using for-each-ref's internals
that happened in v2.13 regressed its handling of color.branch.local;
this has been fixed.
* The build procedure has been improved to allow building and testing
Git with address sanitizer more easily.
(merge 425ca6710b jk/build-with-asan later to maint).
* On Cygwin, similar to Windows, "git push //server/share/repository"
ought to mean a repository on a network share that can be accessed
locally, but this did not work correctly due to stripping the double
slashes at the beginning.
* The progress meter did not give a useful output when we haven't had
0.5 seconds to measure the throughput during the interval. Instead
show the overall throughput rate at the end, which is a much more
useful number.
* Code clean-up, that makes us in sync with Debian by one patch.
* We run an early part of "git gc" that deals with refs before
daemonising (and not under lock) even when running a background
auto-gc, which caused multiple gc processes attempting to run the
early part at the same time. This is now prevented by running the
early part also under the GC lock.
* A recent update broke an alias that contained an uppercase letter.
* Other minor doc, test and build updates and code cleanups.
(merge 5053313562 rs/urlmatch-cleanup later to maint).
(merge 42c78a216e rs/use-div-round-up later to maint).
(merge 5e8d2729ae rs/wt-status-cleanup later to maint).
(merge bc9b7e207f as/diff-options-grammofix later to maint).
(merge ac05222b31 ah/patch-id-doc later to maint).
----------------------------------------------------------------
Changes since v2.13.0 are as follows:
A. Wilcox (1):
subtree: honour USE_ASCIIDOCTOR when set
Adam Dinwoodie (1):
docs: fix formatting and grammar
Alejandro R. Sedeño (1):
ref-filter.c: drop return from void function
Alexander Shopov (2):
l10n: bg.po: Updated Bulgarian translation (3206t)
l10n: bg.po: Updated Bulgarian translation (3213t)
Andreas Heiduk (11):
Documentation: fix reference to ifExists for interpret-trailers
Documentation: fix formatting typo in pretty-formats.txt
doc: filter-branch does not require re-export of vars
doc: rewrite description for rev-parse --short
doc: describe git svn init --ignore-refs
filter-branch: add `--setup` step
filter-branch: add [--] to usage
git-svn: document special options for commit-diff
doc: do not use `rm .git/index` when normalizing line endings
doc: clarify syntax for %C(auto,...) in pretty formats
doc: remove unsupported parameter from patch-id
Anthony Sottile (1):
diff-options doc: grammar fix
Beat Bolli (1):
unicode: update the width tables to Unicode 10
Ben Peart (10):
convert: remove erroneous tests for errno == EPIPE
pkt-line: fix packet_read_line() to handle len < 0 errors
pkt-line: add packet_read_line_gently()
convert: move packet_write_line() into pkt-line as packet_writel()
convert: split start_multi_file_filter() into two separate functions
convert: separate generic structures and variables from the filter specific ones
convert: update generic functions to only use generic data structures
convert: rename reusable sub-process functions
sub-process: move sub-process functions into separate files
convert: update subprocess_read_status() to not die on EOF
Brandon Williams (107):
t5550: use write_script to generate post-update hook
t0061: run_command executes scripts without a #! line
run-command: prepare command before forking
run-command: use the async-signal-safe execv instead of execvp
string-list: add string_list_remove function
run-command: prepare child environment before forking
run-command: don't die in child when duping /dev/null
run-command: eliminate calls to error handling functions in child
run-command: handle dup2 and close errors in child
run-command: add note about forking and threading
run-command: expose is_executable function
run-command: restrict PATH search to executable files
submodule: rename add_sha1_to_array()
submodule: rename free_submodules_sha1s()
submodule: remove add_oid_to_argv()
submodule: change string_list changed_submodule_paths
submodule: improve submodule_has_commits()
submodule: refactor logic to determine changed submodules
dir: stop using the index compatibility macros
dir: convert read_skip_worktree_file_from_index to take an index
dir: convert directory_exists_in_index to take index
dir: convert get_dtype to take index
dir: convert dir_add* to take an index
dir: convert last_exclude_matching_from_list to take an index
dir: convert is_excluded_from_list to take an index
dir: convert add_excludes to take an index
dir: convert prep_exclude to take an index
dir: convert is_excluded to take an index
dir: convert open_cached_dir to take an index
dir: convert read_directory_recursive to take an index
dir: convert read_directory to take an index
dir: convert fill_directory to take an index
pathspec: provide a more descriptive die message
submodule: add die_in_unpopulated_submodule function
pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_EXPENSIVE flag
ls-files: prevent prune_cache from overeagerly pruning submodules
pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP
pathspec: convert find_pathspecs_matching_against_index to take an index
grep: convert to struct object_id
diff: convert get_stat_data to struct object_id
diff: convert diff_index_show_file to struct object_id
diff: convert diff_addremove to struct object_id
diff: convert run_diff_files to struct object_id
diff: convert diff_change to struct object_id
diff: convert fill_filespec to struct object_id
diff: convert reuse_worktree_file to struct object_id
diff: finish conversion for prepare_temp_file to struct object_id
patch-ids: convert to struct object_id
diff: convert diff_flush_patch_id to struct object_id
combine-diff: convert diff_tree_combined to struct object_id
combine-diff: convert find_paths_* to struct object_id
tree-diff: convert diff_root_tree_sha1 to struct object_id
notes-merge: convert notes_merge* to struct object_id
notes-merge: convert merge_from_diffs to struct object_id
notes-merge: convert find_notes_merge_pair_ps to struct object_id
notes-merge: convert verify_notes_filepair to struct object_id
notes-merge: convert write_note_to_worktree to struct object_id
diff-tree: convert diff_tree_sha1 to struct object_id
builtin/diff-tree: cleanup references to sha1
tree-diff: convert try_to_follow_renames to struct object_id
tree-diff: convert diff_tree_paths to struct object_id
tree-diff: convert path_appendnew to object_id
diffcore-rename: use is_empty_blob_oid
diff: rename diff_fill_sha1_info to diff_fill_oid_info
convert: convert get_cached_convert_stats_ascii to take an index
convert: convert crlf_to_git to take an index
convert: convert convert_to_git_filter_fd to take an index
convert: convert convert_to_git to take an index
convert: convert renormalize_buffer to take an index
tree: convert read_tree to take an index parameter
ls-files: convert overlay_tree_on_cache to take an index
ls-files: convert write_eolinfo to take an index
ls-files: convert show_killed_files to take an index
ls-files: convert show_other_files to take an index
ls-files: convert show_ru_info to take an index
ls-files: convert ce_excluded to take an index
ls-files: convert prune_cache to take an index
ls-files: convert show_ce_entry to take an index
ls-files: convert show_files to take an index
ls-files: factor out debug info into a function
ls-files: factor out tag calculation
config: create config.h
config: remove git_config_iter
config: don't include config.h by default
setup: teach discover_git_directory to respect the commondir
config: respect commondir
config: don't implicitly use gitdir or commondir
setup: don't perform lazy initialization of repository state
setup: add comment indicating a hack
environment: remove namespace_len variable
repository: introduce the repository object
environment: place key repository state in the_repository
environment: store worktree in the_repository
path: create path.h
path: always pass in commondir to update_common_dir
path: convert strbuf_git_common_path to take a 'struct repository'
path: convert do_git_path to take a 'struct repository'
path: worktree_git_path() should not use file relocation
path: add repo_git_path and strbuf_repo_git_path
path: add repo_worktree_path and strbuf_repo_worktree_path
config: read config from a repository object
repository: add index_state to struct repo
submodule-config: store the_submodule_cache in the_repository
submodule: add repo_read_gitmodules
submodule: convert is_submodule_initialized to work on a repository
repository: enable initialization of submodules
ls-files: use repository object
Brian Malehorn (1):
interpret-trailers: honor the cut line
Changwoo Ryu (2):
l10n: ko.po: Update Korean translation
l10n: ko.po: Update Korean translation
Christian Couder (5):
p3400: add perf tests for rebasing many changes
sub-process: correct path to API docs in a comment
read-cache: use shared perms when writing shared index
t1301: move modebits() to test-lib-functions.sh
t1700: make sure split-index respects core.sharedrepository
David Aguilar (1):
mergetools/meld: improve compatibiilty with Meld on macOS X
David Turner (2):
Increase core.packedGitLimit
unpack-trees: preserve index extensions
Dennis Kaarsemaker (1):
send-email: Net::SMTP::SSL is obsolete, use only when necessary
Dimitriy Ryazantcev (2):
l10n: ru.po: update Russian translation
l10n: ru.po: update Russian translation
Eric Wong (2):
run-command: block signals between fork and execve
set FD_CLOEXEC properly when O_CLOEXEC is not supported
Hartmut Henkel (1):
l10n: de.po: various fixes in German translation
Hugues Peccatte (1):
l10n: fr.po Fix some translations
James Clarke (1):
pack-bitmap: don't perform unaligned memory access
Jean-Noel Avila (4):
usability: don't ask questions if no reply is required
read-tree -m: make error message for merging 0 trees less smart aleck
git-filter-branch: be more direct in an error message
l10n: fr.po v2.14.0 rnd 2
Jeff Hostetler (1):
read-cache: close index.lock in do_write_index
Jeff King (78):
cache-tree: reject entries with null sha1
am: fix commit buffer leak in get_commit_info()
am: simplify allocations in get_commit_info()
am: shorten ident_split variable name in get_commit_info()
status: fix missing newline when comment chars are disabled
pack-objects: disable pack reuse for object-selection options
t5310: fix "; do" style
add--interactive: drop diff.indentHeuristic handling
docs/config: clarify include/includeIf relationship
docs/config: give a relative includeIf example
docs/config: avoid the term "expand" for includes
docs/config: consistify include.path examples
usage.c: add BUG() function
setup_git_env: convert die("BUG") to BUG()
config: complain about --local outside of a git repo
usage.c: drop set_error_handle()
pkt-line: annotate packet_writel with LAST_ARG_MUST_BE_NULL
t5400: avoid concurrent writes into a trace file
ref-filter: resolve HEAD when parsing %(HEAD) atom
revision.c: ignore broken tags with ignore_missing_links
ref-filter: limit traversal to prefix
handle_revision_arg: reset "dotdot" consistently
handle_revision_arg: simplify commit reference lookups
handle_revision_arg: stop using "dotdot" as a generic pointer
handle_revision_arg: hoist ".." check out of range parsing
handle_revision_arg: add handle_dotdot() helper
sha1_name: consistently refer to object_context as "oc"
get_sha1_with_context: always initialize oc->symlink_path
get_sha1_with_context: dynamically allocate oc->path
t4063: add tests of direct blob diffs
handle_revision_arg: record modes for "a..b" endpoints
handle_revision_arg: record paths for pending objects
diff: pass whole pending entry in blobinfo
diff: use the word "path" instead of "name" for blobs
diff: use pending "path" if it is available
diff: use blob path for blob/file diffs
connect.c: fix leak in parse_one_symref_info()
t4208: add check for ":/" without matching file
check_filename(): refactor ":/" handling
check_filename(): use skip_prefix
check_filename(): handle ":^" path magic
verify_filename(): treat ":(magic)" as a pathspec
verify_filename(): flip order of checks
am: handle "-h" argument earlier
credential: handle invalid arguments earlier
upload-archive: handle "-h" option early
remote-{ext,fd}: print usage message on invalid arguments
submodule--helper: show usage for "-h"
remote: drop free_refspecs() function
docs/config: mention protocol implications of url.insteadOf
version: convert to parse-options
git: add hidden --list-builtins option
t0012: test "-h" with builtins
t5313: make extended-table test more deterministic
sha1dc: ignore indent-with-non-tab whitespace violations
add: warn when adding an embedded repository
t: move "git add submodule" into test blocks
diff-highlight: split code into module
configure.ac: loosen FREAD_READS_DIRECTORIES test program
t0006: check --date=format zone offsets
date: use localtime() for "-local" time formats
docs: update 64-bit core.packedGitLimit default
add--interactive: handle EOF in prompt_yesno
add--interactive: quote commentChar regex
reflog-walk: skip over double-null oid due to HEAD rename
reflog-walk: duplicate strings in complete_reflogs list
reflog-walk: don't free reflogs added to cache
reflog-walk: include all fields when freeing complete_reflogs
branch: only perform HEAD check for local branches
branch: use BRANCH_COLOR_LOCAL in ref-filter format
branch: set remote color in ref-filter branch immediately
test-lib: set ASAN_OPTIONS variable before we run git
test-lib: turn on ASan abort_on_error by default
Makefile: add helper for compiling with -fsanitize
Makefile: turn off -fomit-frame-pointer with sanitizers
Makefile: disable unaligned loads with UBSan
gc: run pre-detach operations under lock
t: handle EOF in test_copy_bytes()
Jeff Smith (29):
blame: remove unneeded dependency on blob.h
blame: move textconv_object with related functions
blame: remove unused parameters
blame: rename origin structure to blame_origin
blame: rename scoreboard structure to blame_scoreboard
blame: rename origin-related functions
blame: rename coalesce function
blame: rename ent_score function
blame: rename nth_line function
blame: move stat counters to scoreboard
blame: move copy/move thresholds to scoreboard
blame: move contents_from to scoreboard
blame: move reverse flag to scoreboard
blame: move show_root flag to scoreboard
blame: move xdl_opts flags to scoreboard
blame: move no_whole_file_rename flag to scoreboard
blame: make sanity_check use a callback in scoreboard
blame: move progress updates to a scoreboard callback
blame: wrap blame_sort and compare_blame_final
blame: rework methods that determine 'final' commit
blame: create scoreboard init function
blame: create scoreboard setup function
blame: create entry prepend function
blame: move core structures to header
blame: move origin-related methods to libgit
blame: move fake-commit-related methods to libgit
blame: move scoreboard-related methods to libgit
blame: move scoreboard setup to libgit
blame: move entry prepend to libgit
Jiang Xin (4):
l10n: git.pot: v2.14.0 round 1 (34 new, 23 removed)
l10n: git.pot: v2.14.0 round 2 (9 new, 2 removed)
l10n: zh_CN: for git v2.14.0 l10n round 2
l10n: zh_CN: review for git v2.14.0 l10n
Johannes Schindelin (50):
ref-filter: avoid using `unsigned long` for catch-all data type
t0006 & t5000: prepare for 64-bit timestamps
t0006 & t5000: skip "far in the future" test when time_t is too limited
parse_timestamp(): specify explicitly where we parse timestamps
PRItime: introduce a new "printf format" for timestamps
timestamp_t: a new data type for timestamps
date.c: abort if the system time cannot handle one of our timestamps
use uintmax_t for timestamps
mingw: avoid memory leak when splitting PATH
winansi: avoid use of uninitialized value
winansi: avoid buffer overrun
add_commit_patch_id(): avoid allocating memory unnecessarily
git_config_rename_section_in_file(): avoid resource leak
get_mail_commit_oid(): avoid resource leak
difftool: address a couple of resource/memory leaks
status: close file descriptor after reading git-rebase-todo
mailinfo & mailsplit: check for EOF while parsing
cat-file: fix memory leak
checkout: fix memory leak
split_commit_in_progress(): simplify & fix memory leak
setup_bare_git_dir(): help static analysis
setup_discovered_git_dir(): plug memory leak
pack-redundant: plug memory leak
mktree: plug memory leaks reported by Coverity
fast-export: avoid leaking memory in handle_tag()
receive-pack: plug memory leak in update()
line-log: avoid memory leak
shallow: avoid memory leak
add_reflog_for_walk: avoid memory leak
remote: plug memory leak in match_explicit()
name-rev: avoid leaking memory in the `deref` case
show_worktree(): plug memory leak
submodule_uses_worktrees(): plug memory leak
Fix build with core.autocrlf=true
git-new-workdir: mark script as LF-only
completion: mark bash script as LF-only
t3901: move supporting files into t/t3901/
Fix the remaining tests that failed with core.autocrlf=true
t4051: mark supporting files as requiring LF-only line endings
mingw: verify that paths are not mistaken for remote nicknames
discover_git_directory(): avoid setting invalid git_dir
config: report correct line number upon error
help: use early config when autocorrecting aliases
t1308: relax the test verifying that empty alias values are disallowed
t7006: demonstrate a problem with aliases in subdirectories
alias: use the early config machinery to expand aliases
sequencer: print autostash messages to stderr
t5534: fix misleading grep invocation
t1300: demonstrate that CamelCased aliases regressed
alias: compare alias name *case-insensitively*
Johannes Sixt (3):
mingw.h: permit arguments with side effects for is_dir_sep
Windows: do not treat a path with backslashes as a remote's nick name
mingw_fopen: report ENOENT for invalid file names
Jonathan Nieder (4):
credential doc: make multiple-helper behavior more prominent
clone: handle empty config values in -c
send-email: Net::SMTP::starttls was introduced in v2.34
pre-rebase hook: capture documentation in a <<here document
Jonathan Tan (14):
sequencer: add newline before adding footers
docs: correct receive.advertisePushOptions default
receive-pack: verify push options in cert
fetch-pack: always allow fetching of literal SHA1s
send-email: support validate hook
send-email: check for repo before invoking hook
sha1_file: teach packed_object_info about typename
sha1_file: rename LOOKUP_UNKNOWN_OBJECT
sha1_file: rename LOOKUP_REPLACE_OBJECT
sha1_file: move delta base cache code up
sha1_file: refactor read_object
sha1_file: teach sha1_object_info_extended more flags
sha1_file: do not access pack if unneeded
sha1_file: refactor has_sha1_file_with_flags
Jordi Mas (3):
l10n: Fixes to Catalan translation
l10n: Update Catalan translation
l10n: Update Catalan translation
Junio C Hamano (54):
name-rev: refactor logic to see if a new candidate is a better name
name-rev: favor describing with tags and use committer date to tiebreak
test-lib.sh: do not barf under --debug at the end of the test
test-lib: retire $remove_trash variable
repack: accept --threads=<n> and pass it down to pack-objects
apply.c: fix whitespace-only mismerge
checkout: fix memory leak
doc: replace more gmane links
read-tree: "read-tree -m --empty" does not make sense
Start post 2.13 cycle
test: allow skipping the remainder
name-rev: change a "long" variable to timestamp_t
Second batch for 2.14
config.mak.uname: set FREAD_READS_DIRECTORIES for Darwin, too
Third batch for 2.14
compat-util: is_missing_file_error()
treewide: use is_missing_file_error() where ENOENT and ENOTDIR are checked
Fourth batch for 2.14
diff-tree: update stale in-code comments
Fifth batch for 2.14
Sixth batch for 2.14
Prepare for 2.13.1; more topics to follow
Git 2.13.1
Seventh batch for 2.14
diff- and log- family: handle "git cmd -h" early
Prepare for 2.13.2
Eighth batch for 2.14
Ninth batch for 2.14
Tenth batch for 2.14
t3420: fix under GETTEXT_POISON build
Revert "split-index: add and use unshare_split_index()"
Eleventh batch for 2.14
Git 2.13.2
Twelfth batch for 2.14
t1450: use egrep for regexp "alternation"
submodule--helper: do not call utf8_fprintf() unnecessarily
Thirteenth batch for 2.14
sha1collisiondetection: automatically enable when submodule is populated
Fourteenth batch for 2.14
Fifteenth batch for 2.14
Sixteenth batch for 2.14
Prepare for 2.13.3
Hopefully the last batch before -rc0
Git 2.13.3
Git 2.14-rc0
A few more topics before 2.14-rc1
Makefile: help gettext tools to cope with our custom PRItime format
A few more topics while waiting for the po/PRItime resolution
Hopefully the final last-minute fix before -rc1
fixes from 'master' for 2.13.4
Git 2.14-rc1
Preparation for 2.13.4 continues
Git 2.13.4
Git 2.14
Kaartic Sivaraam (9):
t7508: fix a broken indentation
status: contextually notify user about an initial commit
Documentation/git-submodule: cleanup "add" section
commit-template: remove outdated notice about explicit paths
commit-template: distinguish status information unconditionally
builtin/commit.c: fix a typo in the comment
doc: correct a mistake in an illustration
doc: camelCase the i18n config variables to improve readability
doc: reformat the paragraph containing the 'cut-line'
Kyle J. McKay (1):
t5100: add some more mailinfo tests
Kyle Meyer (1):
config.txt: add an entry for log.showSignature
Lars Schneider (9):
travis-ci: build documentation with AsciiDoc and Asciidoctor
travis-ci: parallelize documentation build
travis-ci: unset compiler for jobs that do not need one
travis-ci: check AsciiDoc/AsciiDoctor stderr output
travis-ci: handle Git for Windows CI status "failed" explicitly
travis-ci: retry if Git for Windows CI returns HTTP error 502 or 503
travis-ci: setup "prove cache" in "script" step
travis-ci: add job to run tests with GETTEXT_POISON
Configure Git contribution guidelines for github.com
Liam Beguin (3):
stash: update documentation to use 'stash entry'
status: add optional stash count information
glossary: define 'stash entry'
Louis (1):
l10n: fr.po Fix typo
Marc Branchaud (3):
diff: make the indent heuristic part of diff's basic configuration
diff: have the diff-* builtins configure diff before initializing revisions
auto-correct: tweak phrasing
Michael Haggerty (26):
t3600: clean up permissions test properly
refs.h: clarify docstring for the ref_transaction_update()-related fns
ref_iterator_begin_fn(): fix docstring
files-backend: use `die("BUG: ...")`, not `die("internal error: ...")`
prefix_ref_iterator: don't trim too much
refs_ref_iterator_begin(): don't check prefixes redundantly
refs: use `size_t` indexes when iterating over ref transaction updates
ref_store: take a `msg` parameter when deleting references
lockfile: add a new method, is_lock_file_locked()
files-backend: move `lock` member to `files_ref_store`
files_ref_store: put the packed files lock directly in this struct
files_transaction_cleanup(): new helper function
ref_transaction_commit(): check for valid `transaction->state`
ref_transaction_prepare(): new optional step for reference updates
ref_update_reject_duplicates(): expose function to whole refs module
ref_update_reject_duplicates(): use `size_t` rather than `int`
ref_update_reject_duplicates(): add a sanity check
should_pack_ref(): new function, extracted from `files_pack_refs()`
get_packed_ref_cache(): assume "packed-refs" won't change while locked
read_packed_refs(): do more of the work of reading packed refs
read_packed_refs(): report unexpected fopen() failures
refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA`
create_ref_entry(): remove `check_name` option
cache_ref_iterator_begin(): avoid priming unneeded directories
lock_packed_refs(): fix cache validity check
for_each_bisect_ref(): don't trim refnames
Miguel Torroja (3):
git-p4: git-p4 tests with p4 triggers
git-p4: parse marshal output "p4 -G" in p4 changes
git-p4: filter for {'code':'info'} in p4CmdList
Mike Hommey (1):
fast-import: increase the default pack depth to 50
Nguyễn Thái Ngọc Duy (16):
environment.c: fix potential segfault by get_git_common_dir()
refs.c: make submodule ref store hashmap generic
refs: add REFS_STORE_ALL_CAPS
refs: introduce get_worktree_ref_store()
worktree.c: kill parse_ref() in favor of refs_resolve_ref_unsafe()
refs: kill set_worktree_head_symref()
split-index: add and use unshare_split_index()
use xfopen() in more places
clone: use xfopen() instead of fopen()
config.mak.uname: set FREAD_READS_DIRECTORIES for Linux and FreeBSD
wrapper.c: add and use warn_on_fopen_errors()
wrapper.c: add and use fopen_or_warn()
wrapper.c: make warn_on_inaccessible() static
print errno when reporting a system call error
rerere.c: move error_errno() closer to the source system call
log: fix memory leak in open_next_file()
Patrick Steinhardt (1):
git-stash: fix pushing stash with pathspec from subdir
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (3206t0f0u)
Phillip Wood (10):
rebase -i: fix reflog message
rebase -i: silence stash apply
rebase -i: add missing newline to end of message
rebase -i: add test for reflog message
rebase: add regression tests for console output
rebase: add more regression tests for console output
add -i: move unquote_path() to Git.pm
Git::unquote_path(): handle '\a'
Git::unquote_path(): throw an exception on bad path
t9700: add tests for Git::unquote_path()
Prathamesh Chavan (1):
dir: create function count_slashes()
Ralf Thielow (2):
l10n: de.po: fix typo
l10n: de.po: update German translation
Ramsay Jones (5):
t7400: add !CYGWIN prerequisite to 'add with \\ in path'
archive-tar: fix a sparse 'constant too large' warning
usage: add NORETURN to BUG() function definitions
git_fopen: fix a sparse 'not declared' warning
config.mak.uname: set FREAD_READS_DIRECTORIES for cygwin
René Scharfe (32):
archive-zip: add tests for big ZIP archives
archive-zip: use strbuf for ZIP directory
archive-zip: write ZIP dir entry directly to strbuf
archive-zip: support archives bigger than 4GB
archive-zip: support files bigger than 4GB
archive-zip: set version field for big files correctly
t5004: require 64-bit support for big ZIP tests
checkout: check return value of resolve_refdup before using hash
am: check return value of resolve_refdup before using hash
p0004: simplify calls of test-lazy-init-name-hash
p0004: avoid using pipes
p0004: use test_perf
p0004: don't abort if multi-threaded is too slow
p0004: don't error out if test repo is too small
mingw: simplify PATH handling
pretty: recalculate duplicate short hashes
strbuf: let strbuf_addftime handle %z and %Z itself
sha1_name: cache readdir(3) results in find_short_object_filename()
p4205: add perf test script for pretty log formats
sha1_file: let for_each_file_in_obj_subdir() handle subdir names
sha1_file: guard against invalid loose subdirectory numbers
apply: check git diffs for missing old filenames
apply: check git diffs for invalid file modes
apply: check git diffs for mutually exclusive header lines
coccinelle: polish FREE_AND_NULL rules
apply: use starts_with() in gitdiff_verify_name()
apply: use strcmp(3) for comparing strings in gitdiff_verify_name()
urlmatch: use hex2chr() in append_normalized_escapes()
progress: show overall rate in last update
wt-status: use separate variable for result of shorten_unambiguous_ref
use DIV_ROUND_UP
Makefile: allow combining UBSan with other sanitizers
Rikard Falkeborn (7):
completion: add completions for git config commit
completion: add git config gc completions
completion: add git config core completions
completion: add git config am.threeWay completion
completion: add git config advice completions
completion: add git config credential completions
completion: add git config credentialCache.ignoreSIGHUP
SZEDER Gábor (9):
test-lib: abort when can't remove trash directory
docs/config.txt: fix indefinite article in core.fileMode description
revision.h: turn rev_info.early_output back into an unsigned int
revision.c: stricter parsing of '--no-{min,max}-parents'
revision.c: stricter parsing of '--early-output'
revision.c: use skip_prefix() in handle_revision_opt()
revision.c: use skip_prefix() in handle_revision_pseudo_opt()
docs/pretty-formats: stress that %- removes all preceding line-feeds
blame: fix memory corruption scrambling revision name in error message
Sahil Dua (2):
branch test: fix invalid config key access
t3200: add test for single parameter passed to -m option
Samuel Lijin (6):
t7300: clean -d should skip dirs with ignored files
t7061: status --ignored should search untracked dirs
dir: recurse into untracked dirs for ignored files
dir: hide untracked contents of untracked dirs
dir: expose cmp_name() and check_contains()
clean: teach clean -d to preserve ignored paths
Stefan Beller (30):
entry.c: submodule recursing: respect force flag correctly
submodule.c: uninitialized submodules are ignored in recursive commands
submodule.c: submodule_move_head works with broken submodules
builtin/reset: add --recurse-submodules switch
submodule_move_head: reuse child_process structure for futher commands
submodule: avoid auto-discovery in new working tree manipulator code
submodule: properly recurse for read-tree and checkout
diff: recurse into nested submodules for inline diff
diff: enable indent heuristic by default
t5545: enhance test coverage when no http server is installed
t5531: fix test description
submodule recursing: do not write a config variable twice
submodule test invocation: only pass additional arguments
reset/checkout/read-tree: unify config callback for submodule recursion
submodule loading: separate code path for .gitmodules and config overlay
Introduce 'submodule.recurse' option for worktree manipulators
builtin/grep.c: respect 'submodule.recurse' option
builtin/push.c: respect 'submodule.recurse' option
builtin/fetch.c: respect 'submodule.recurse' option
Documentation/git-rm: correct submodule description
t4005: modernize style and drop hard coded sha1
submodules: overhaul documentation
builtin/fetch: factor submodule recurse parsing out to submodule config
builtin/fetch: parse recurse-submodules-default at default options parsing
pull: optionally rebase submodules (remote submodule changes only)
builtin/fetch cleanup: always set default value for submodule recursing
merge-recursive: use DIFF_XDL_SET macro
hashmap.h: compare function has access to a data field
patch-ids.c: use hashmap correctly
hashmap: migrate documentation from Documentation/technical into header
Stephen Kent (1):
status: add color config slots for branch info in "--short --branch"
Sven Strickroth (1):
doc: use https links to Wikipedia to avoid http redirects
Sylvestre Ledru (1):
l10n: fr.po Fix some french typos
Thomas Gummerer (1):
completion: add git stash push
Torsten Bögershausen (2):
t0027: tests are not expensive; remove t0025
cygwin: allow pushing to UNC paths
Trần Ngọc Quân (2):
l10n: vi.po(3206t): Update Vietnamese translation
l10n: vi.po (3213t): Updated 9 new strings
Tyler Brazier (1):
pull: ff --rebase --autostash works in dirty repo
Ville Skyttä (1):
Spelling fixes
brian m. carlson (61):
fetch-pack: convert to struct object_id
Clean up outstanding object_id transforms.
Convert struct cache_tree to use struct object_id
builtin/name-rev: convert to struct object_id
builtin/prune: convert to struct object_id
bundle: convert to struct object_id
branch: convert to struct object_id
builtin/blame: convert static function to struct object_id
builtin/rev-parse: convert to struct object_id
fast-import: convert internal structs to struct object_id
fast-import: convert to struct object_id
submodule: convert merge_submodule to use struct object_id
notes-cache: convert to struct object_id
parse-options-cb: convert to struct object_id
reflog_expire: convert to struct object_id
builtin/verify-commit: convert to struct object_id
tag: convert parse_tag_buffer to struct object_id
http-push: convert some static functions to struct object_id
notes-utils: convert internals to struct object_id
revision: convert prepare_show_merge to struct object_id
shallow: convert shallow registration functions to object_id
sequencer: convert some functions to struct object_id
builtin/tag: convert to struct object_id
Convert remaining callers of lookup_commit_reference* to object_id
Convert lookup_commit* to struct object_id
pack: convert struct pack_idx_entry to struct object_id
builtin/unpack-objects: convert to struct object_id
Convert remaining callers of lookup_blob to object_id
Convert lookup_blob to struct object_id
tree: convert read_tree_1 to use struct object_id internally
builtin/reflog: convert tree_is_complete to take struct object_id
Convert lookup_tree to struct object_id
log-tree: convert to struct object_id
Convert lookup_tag to struct object_id
Convert the verify_pack callback to struct object_id
Convert struct ref_array_item to struct object_id
ref-filter: convert some static functions to struct object_id
refs: convert struct ref_update to use struct object_id
refs/files-backend: convert many internals to struct object_id
http-push: convert process_ls_object and descendants to object_id
revision: rename add_pending_sha1 to add_pending_oid
revision: convert remaining parse_object callers to object_id
upload-pack: convert remaining parse_object callers to object_id
sha1_name: convert internals of peel_onion to object_id
builtin/read-tree: convert to struct object_id
builtin/ls-files: convert overlay_tree_on_cache to object_id
sequencer: convert fast_forward_to to struct object_id
merge: convert checkout_fast_forward to struct object_id
builtin/ls-tree: convert to struct object_id
diff-lib: convert do_diff_cache to struct object_id
sequencer: convert do_recursive_merge to struct object_id
tree: convert parse_tree_indirect to struct object_id
object: convert parse_object* to take struct object_id
builtin/log: honor log.decorate
notes: convert internal structures to struct object_id
notes: convert internal parts to struct object_id
notes: convert for_each_note to struct object_id
notes: make get_note return pointer to struct object_id
notes: convert format_display_notes to struct object_id
builtin/notes: convert to struct object_id
notes: convert some accessor functions to struct object_id
xiaoqiang zhao (1):
send-email: --batch-size to work around some SMTP server limit
Ævar Arnfjörð Bjarmason (77):
tests: change "cd ... && git fetch" to "cd &&\n\tgit fetch"
clone: add a --no-tags option to clone without tags
tests: rename a test having to do with shallow submodules
config.mak.uname: set NO_REGEX=NeedsStartEnd on AIX
doc: replace a couple of broken gmane links
tests: fix tests broken under GETTEXT_POISON=YesPlease
perf: add function to setup a fresh test repo
perf: add test showing exponential growth in path globbing
config: match both symlink & realpath versions in IncludeIf.gitdir:*
Makefile & configure: reword inaccurate comment about PCRE
grep & rev-list doc: stop promising libpcre for --perl-regexp
test-lib: rename the LIBPCRE prerequisite to PCRE
log: add exhaustive tests for pattern style options & config
log: make --regexp-ignore-case work with --perl-regexp
grep: add a test asserting that --perl-regexp dies when !PCRE
grep: add a test for backreferences in PCRE patterns
grep: change non-ASCII -i test to stop using --debug
grep: add tests for --threads=N and grep.threads
grep: amend submodule recursion test for regex engine testing
grep: add tests for grep pattern types being passed to submodules
grep: add a test helper function for less verbose -f \0 tests
grep: prepare for testing binary regexes containing rx metacharacters
grep: add tests to fix blind spots with \0 patterns
perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do
perf: emit progress output when unpacking & building
sha1dc: update from upstream
tag: duplicate mention of --contains should mention --no-contains
perf: add a comparison test of grep regex engines
perf: add a comparison test of grep regex engines with -F
perf: add a comparison test of log --grep regex engines
perf: add a comparison test of log --grep regex engines with -F
grep: catch a missing enum in switch statement
grep: remove redundant regflags assignments
grep: factor test for \0 in grep patterns into a function
grep: change the internal PCRE macro names to be PCRE1
grep: change internal *pcre* variable & function names to be *pcre1*
grep: move is_fixed() earlier to avoid forward declaration
test-lib: add a PTHREADS prerequisite
pack-objects & index-pack: add test for --threads warning
pack-objects: fix buggy warning about threads
grep: given --threads with NO_PTHREADS=YesPlease, warn
grep: assert that threading is enabled when calling grep_{lock,unlock}
grep: don't redundantly compile throwaway patterns under threading
grep: skip pthreads overhead when using one thread
log: add -P as a synonym for --perl-regexp
grep: add support for the PCRE v1 JIT API
grep: un-break building with PCRE < 8.32
grep: un-break building with PCRE < 8.20
wildmatch test: remove redundant duplicate test
C style: use standard style for "TRANSLATORS" comments
grep: un-break building with PCRE >= 8.32 without --enable-jit
grep: add support for PCRE v2
perf: work around the tested repo having an index.lock
sha1dc: update from upstream
git-compat-util: add a FREE_AND_NULL() wrapper around free(ptr); ptr = NULL
wildmatch test: cover a blind spot in "/" matching
coccinelle: add a rule to make "type" code use FREE_AND_NULL()
coccinelle: make use of the "type" FREE_AND_NULL() rule
coccinelle: add a rule to make "expression" code use FREE_AND_NULL()
coccinelle: make use of the "expression" FREE_AND_NULL() rule
*.[ch] refactoring: make use of the FREE_AND_NULL() macro
grep: fix erroneously copy/pasted variable in check/assert pattern
die(): stop hiding errors due to overzealous recursion guard
wildmatch: remove unused wildopts parameter
strbuf.h comment: discuss strbuf_addftime() arguments in order
grep: remove redundant double assignment to 0
grep: adjust a redundant grep pattern type assignment
grep: remove redundant "fixed" field re-assignment to 0
grep: remove redundant and verbose re-assignments to 0
grep: remove regflags from the public grep_opt API
grep: remove redundant REG_NEWLINE when compiling fixed regex
strbuf: change an always NULL/"" strbuf_addftime() param to bool
sha1dc: update from upstream
sha1dc: optionally use sha1collisiondetection as a submodule
RelNotes: mention "log: add -P as a synonym for --perl-regexp"
RelNotes: mention "log: make --regexp-ignore-case work with --perl-regexp"
RelNotes: mention "sha1dc: optionally use sha1collisiondetection as a submodule"
Štěpán Němec (1):
doc: git-reset: fix a trivial typo
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.13.0
@ 2017-05-10 0:03 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-05-10 0:03 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.13.0 is now available at the
usual places. It is comprised of 729 non-merge commits since
v2.12.0, contributed by 65 people, 15 of which are new faces.
This release also contains the security patch in v2.12.3 and
others to fix CVE-2017-8386.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.13.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.12.0 are as follows.
Welcome to the Git development community!
Allan Xavier, Andreas Heiduk, Devin J. Pohly, Devin Lehmacher,
Hiroshi Shirosaki, Johan Hovold, Maxim Moseychuk, Mostyn
Bramley-Moore, Prathamesh Chavan, Quentin Pradet, René Genz,
Segev Finer, Sergey Ryazanov, Stephen Hicks, and Valery Tolstov.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Brandon Williams, brian m. carlson, Christian Couder, Cornelius
Weig, David Aguilar, David Turner, Eric Wong, Giuseppe Bilotta,
Jacob Keller, Jean-Noel Avila, Jeff Hostetler, Jeff King,
Jiang Xin, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
Jordi Mas, Junio C Hamano, Karthik Nayak, Kevin Willford,
Kyle Meyer, Lars Schneider, Linus Torvalds, Luke Diamand, Matt
McCutchen, Michael Haggerty, Michael J Gruber, Michael Rappazzo,
Mike Hommey, Nguyễn Thái Ngọc Duy, Patrick Steinhardt,
Peter Krefting, Ralf Thielow, Ramsay Jones, Ray Chen, René
Scharfe, Ross Lagerwall, Santiago Torres, Sebastian Schuberth,
Simon Ruderich, Stefan Beller, SZEDER Gábor, Thomas Gummerer,
Torsten Bögershausen, Trần Ngọc Quân, Vasco Almeida,
and Vegard Nossum.
----------------------------------------------------------------
Git 2.13 Release Notes
======================
Backward compatibility notes.
* 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 not scheduled to happen in the upcoming
release (yet).
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and is now removed.
* The default location "~/.git-credential-cache/socket" for the
socket used to communicate with the credential-cache daemon has
been moved to "~/.cache/git/credential/socket".
* 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.
Updates since v2.12
-------------------
UI, Workflows & Features
* "git describe" and "git name-rev" have been taught to take more
than one refname patterns to restrict the set of refs to base their
naming output on, and also learned to take negative patterns to
name refs not to be used for naming via their "--exclude" option.
* Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
once there no longer is any other branch whose name begins with
"foo/", but we didn't do so so far. Now we do.
* When "git merge" detects a path that is renamed in one history
while the other history deleted (or modified) it, it now reports
both paths to help the user understand what is going on in the two
histories being merged.
* The <url> part in "http.<url>.<variable>" configuration variable
can now be spelled with '*' that serves as wildcard.
E.g. "http.https://*.example.com.proxy" can be used to specify the
proxy used for https://a.example.com, https://b.example.com, etc.,
i.e. any host in the example.com domain.
* "git tag" did not leave useful message when adding a new entry to
reflog; this was left unnoticed for a long time because refs/tags/*
doesn't keep reflog by default.
* The "negative" pathspec feature was somewhat more cumbersome to use
than necessary in that its short-hand used "!" which needed to be
escaped from shells, and it required "exclude from what?" specified.
* The command line options for ssh invocation needs to be tweaked for
some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
while OpenSSH wants "-p <port>" to specify port to connect to), and
the variant was guessed when GIT_SSH environment variable is used
to specify it. The logic to guess now applies to the command
specified by the newer GIT_SSH_COMMAND and also core.sshcommand
configuration variable, and comes with an escape hatch for users to
deal with misdetected cases.
* The "--git-path", "--git-common-dir", and "--shared-index-path"
options of "git rev-parse" did not produce usable output. They are
now updated to show the path to the correct file, relative to where
the caller is.
* "git diff -W" has been taught to handle the case where a new
function is added at the end of the file better.
* "git update-ref -d" and other operations to delete references did
not leave any entry in HEAD's reflog when the reference being
deleted was the current branch. This is not a problem in practice
because you do not want to delete the branch you are currently on,
but caused renaming of the current branch to something else not to
be logged in a useful way.
* "Cc:" on the trailer part does not have to conform to RFC strictly,
unlike in the e-mail header. "git send-email" has been updated to
ignore anything after '>' when picking addresses, to allow non-address
cruft like " # stable 4.4" after the address.
* When "git submodule init" decides that the submodule in the working
tree is its upstream, it now gives a warning as it is not a very
common setup.
* "git stash push" takes a pathspec so that the local changes can be
stashed away only partially.
* Documentation for "git ls-files" did not refer to core.quotePath.
* The experimental "split index" feature has gained a few
configuration variables to make it easier to use.
* From a working tree of a repository, a new option of "rev-parse"
lets you ask if the repository is used as a submodule of another
project, and where the root level of the working tree of that
project (i.e. your superproject) is.
* The pathspec mechanism learned to further limit the paths that
match the pattern to those that have specified attributes attached
via the gitattributes mechanism.
* Our source code has used the SHA1_HEADER cpp macro after "#include"
in the C code to switch among the SHA-1 implementations. Instead,
list the exact header file names and switch among implementations
using "#ifdef BLK_SHA1/#include "block-sha1/sha1.h"/.../#endif";
this helps some IDE tools.
* The start-up sequence of "git" needs to figure out some configured
settings before it finds and set itself up in the location of the
repository and was quite messy due to its "chicken-and-egg" nature.
The code has been restructured.
* The command line prompt (in contrib/) learned a new 'tag' style
that can be specified with GIT_PS1_DESCRIBE_STYLE, to describe a
detached HEAD with "git describe --tags".
* The configuration file learned a new "includeIf.<condition>.path"
that includes the contents of the given path only when the
condition holds. This allows you to say "include this work-related
bit only in the repositories under my ~/work/ directory".
* Recent update to "rebase -i" started showing a message that is not
a warning with "warning:" prefix by mistake. This has been fixed.
* Recently we started passing the "--push-options" through the
external remote helper interface; now the "smart HTTP" remote
helper understands what to do with the passed information.
* "git describe --dirty" dies when it cannot be determined if the
state in the working tree matches that of HEAD (e.g. broken
repository or broken submodule). The command learned a new option
"git describe --broken" to give "$name-broken" (where $name is the
description of HEAD) in such a case.
* "git checkout" is taught the "--recurse-submodules" option.
* Recent enhancement to "git stash push" command to support pathspec
to allow only a subset of working tree changes to be stashed away
was found to be too chatty and exposed the internal implementation
detail (e.g. when it uses reset to match the index to HEAD before
doing other things, output from reset seeped out). These, and
other chattyness has been fixed.
* "git merge <message> HEAD <commit>" syntax that has been deprecated
since October 2007 has been removed.
* The refs completion for large number of refs has been sped up,
partly by giving up disambiguating ambiguous refs and partly by
eliminating most of the shell processing between 'git for-each-ref'
and 'ls-remote' and Bash's completion facility.
* On many keyboards, typing "@{" involves holding down SHIFT key and
one can easily end up with "@{Up..." when typing "@{upstream}". As
the upstream/push keywords do not appear anywhere else in the syntax,
we can safely accept them case insensitively without introducing
ambiguity or confusion to solve this.
* "git tag/branch/for-each-ref" family of commands long allowed to
filter the refs by "--contains X" (show only the refs that are
descendants of X), "--merged X" (show only the refs that are
ancestors of X), "--no-merged X" (show only the refs that are not
ancestors of X). One curious omission, "--no-contains X" (show
only the refs that are not descendants of X) has been added to
them.
* The default behaviour of "git log" in an interactive session has
been changed to enable "--decorate".
* The output from "git status --short" has been extended to show
various kinds of dirtyness in submodules differently; instead of to
"M" for modified, 'm' and '?' can be shown to signal changes only
to the working tree of the submodule but not the commit that is
checked out.
* Allow the http.postbuffer configuration variable to be set to a
size that can be expressed in size_t, which can be larger than
ulong on some platforms.
* "git rebase" learns "--signoff" option.
* The completion script (in contrib/) learned to complete "git push
--delete b<TAB>" to complete branch name to be deleted.
* "git worktree add --lock" allows to lock a worktree immediately
after it's created. This helps prevent a race between "git worktree
add; git worktree lock" and "git worktree prune".
* Completion for "git checkout <branch>" that auto-creates the branch
out of a remote tracking branch can now be disabled, as this
completion often gets in the way when completing to checkout an
existing local branch that happens to share the same prefix with
bunch of remote tracking branches.
Performance, Internal Implementation, Development Support etc.
* The code to list branches in "git branch" has been consolidated
with the more generic ref-filter API.
* Resource usage while enumerating refs from alternate object store
has been optimized to help receiving end of "push" that hosts a
repository with many "forks".
* The gitattributes machinery is being taught to work better in a
multi-threaded environment.
* "git rebase -i" starts using the recently updated "sequencer" code.
* Code and design clean-up for the refs API.
* The preload-index code has been taught not to bother with the index
entries that are paths that are not checked out by "sparse checkout".
* Some warning() messages from "git clean" were updated to show the
errno from failed system calls.
* The "parse_config_key()" API function has been cleaned up.
* A test that creates a confusing branch whose name is HEAD has been
corrected not to do so.
* The code that parses header fields in the commit object has been
updated for (micro)performance and code hygiene.
* An helper function to make it easier to append the result from
real_path() to a strbuf has been added.
* Reduce authentication round-trip over HTTP when the server supports
just a single authentication method. This also improves the
behaviour when Git is misconfigured to enable http.emptyAuth
against a server that does not authenticate without a username
(i.e. not using Kerberos etc., which makes http.emptyAuth
pointless).
* Windows port wants to use OpenSSL's implementation of SHA-1
routines, so let them.
* The t/perf performance test suite was not prepared to test not so
old versions of Git, but now it covers versions of Git that are not
so ancient.
* Add 32-bit Linux variant to the set of platforms to be tested with
Travis CI.
* "git branch --list" takes the "--abbrev" and "--no-abbrev" options
to control the output of the object name in its "-v"(erbose)
output, but a recent update started ignoring them; fix it before
the breakage reaches to any released version.
* Picking two versions of Git and running tests to make sure the
older one and the newer one interoperate happily has now become
possible.
* "git tag --contains" used to (ab)use the object bits to keep track
of the state of object reachability without clearing them after
use; this has been cleaned up and made to use the newer commit-slab
facility.
* The "debug" helper used in the test framework learned to run
a command under "gdb" interactively.
* The "detect attempt to create collisions" variant of SHA-1
implementation by Marc Stevens (CWI) and Dan Shumow (Microsoft)
has been integrated and made the default.
* The test framework learned to detect unterminated here documents.
* The name-hash used for detecting paths that are different only in
cases (which matter on case insensitive filesystems) has been
optimized to take advantage of multi-threading when it makes sense.
* An earlier version of sha1dc/sha1.c that was merged to 'master'
compiled incorrectly on Windows, which has been fixed.
* "what URL do we want to update this submodule?" and "are we
interested in this submodule?" are split into two distinct
concepts, and then the way used to express the latter got extended,
paving a way to make it easier to manage a project with many
submodules and make it possible to later extend use of multiple
worktrees for a project with submodules.
* Some debugging output from "git describe" were marked for l10n,
but some weren't. Mark missing ones for l10n.
* Define a new task in .travis.yml that triggers a test session on
Windows run elsewhere.
* Conversion from uchar[20] to struct object_id continues.
* The "submodule" specific field in the ref_store structure is
replaced with a more generic "gitdir" that can later be used also
when dealing with ref_store that represents the set of refs visible
from the other worktrees.
* The string-list API used a custom reallocation strategy that was
very inefficient, instead of using the usual ALLOC_GROW() macro,
which has been fixed.
(merge 950a234cbd jh/string-list-micro-optim later to maint).
* In a 2- and 3-way merge of trees, more than one source trees often
end up sharing an identical subtree; optimize by not reading the
same tree multiple times in such a case.
(merge d12a8cf0af jh/unpack-trees-micro-optim later to maint).
* The index file has a trailing SHA-1 checksum to detect file
corruption, and historically we checked it every time the index
file is used. Omit the validation during normal use, and instead
verify only in "git fsck".
* Having a git command on the upstream side of a pipe in a test
script will hide the exit status from the command, which may cause
us to fail to notice a breakage; rewrite tests in a script to avoid
this issue.
* Travis CI learns to run coccicheck.
* "git checkout" that handles a lot of paths has been optimized by
reducing the number of unnecessary checks of paths in the
has_dir_name() function.
* The internals of the refs API around the cached refs has been
streamlined.
* Output from perf tests have been updated to align their titles.
Also contains various documentation updates and code clean-ups.
Fixes since v2.12
-----------------
Unless otherwise noted, all the fixes since v2.12 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git repack --depth=<n>" for a long time busted the specified depth
when reusing delta from existing packs. This has been corrected.
* The code to parse the command line "git grep <patterns>... <rev>
[[--] <pathspec>...]" has been cleaned up, and a handful of bugs
have been fixed (e.g. we used to check "--" if it is a rev).
* "git ls-remote" and "git archive --remote" are designed to work
without being in a directory under Git's control. However, recent
updates revealed that we randomly look into a directory called
.git/ without actually doing necessary set-up when working in a
repository. Stop doing so.
* "git show-branch" expected there were only very short branch names
in the repository and used a fixed-length buffer to hold them
without checking for overflow.
* A caller of tempfile API that uses stdio interface to write to
files may ignore errors while writing, which is detected when
tempfile is closed (with a call to ferror()). By that time, the
original errno that may have told us what went wrong is likely to
be long gone and was overwritten by an irrelevant value.
close_tempfile() now resets errno to EIO to make errno at least
predictable.
* "git remote rm X", when a branch has remote X configured as the
value of its branch.*.remote, tried to remove branch.*.remote and
branch.*.merge and failed if either is unset.
* A "gc.log" file left by a backgrounded "gc --auto" disables further
automatic gc; it has been taught to run at least once a day (by
default) by ignoring a stale "gc.log" file that is too old.
* The code to parse "git -c VAR=VAL cmd" and set configuration
variable for the duration of cmd had two small bugs, which have
been fixed.
* user.email that consists of only cruft chars should consistently
error out, but didn't.
* "git upload-pack", which is a counter-part of "git fetch", did not
report a request for a ref that was not advertised as invalid.
This is generally not a problem (because "git fetch" will stop
before making such a request), but is the right thing to do.
* A leak in a codepath to read from a packed object in (rare) cases
has been plugged.
* When a redirected http transport gets an error during the
redirected request, we ignored the error we got from the server,
and ended up giving a not-so-useful error message.
* The patch subcommand of "git add -i" was meant to have paths
selection prompt just like other subcommand, unlike "git add -p"
directly jumps to hunk selection. Recently, this was broken and
"add -i" lost the paths selection dialog, but it now has been
fixed.
* Git v2.12 was shipped with an embarrassing breakage where various
operations that verify paths given from the user stopped dying when
seeing an issue, and instead later triggering segfault.
* There is no need for Python only to give a few messages to the
standard error stream, but we somehow did.
* The code to parse "git log -L..." command line was buggy when there
are many ranges specified with -L; overrun of the allocated buffer
has been fixed.
* The command-line parsing of "git log -L" copied internal data
structures using incorrect size on ILP32 systems.
* "git diff --quiet" relies on the size field in diff_filespec to be
correctly populated, but diff_populate_filespec() helper function
made an incorrect short-cut when asked only to populate the size
field for paths that need to go through convert_to_git() (e.g. CRLF
conversion).
* A few tests were run conditionally under (rare) conditions where
they cannot be run (like running cvs tests under 'root' account).
* "git branch @" created refs/heads/@ as a branch, and in general the
code that handled @{-1} and @{upstream} was a bit too loose in
disambiguating.
* "git fetch" that requests a commit by object name, when the other
side does not allow such an request, failed without much
explanation.
* "git filter-branch --prune-empty" drops a single-parent commit that
becomes a no-op, but did not drop a root commit whose tree is empty.
* Recent versions of Git treats http alternates (used in dumb http
transport) just like HTTP redirects and requires the client to
enable following it, due to security concerns. But we forgot to
give a warning when we decide not to honor the alternates.
* "git push" had a handful of codepaths that could lead to a deadlock
when unexpected error happened, which has been fixed.
* "Dumb http" transport used to misparse a nonsense http-alternates
response, which has been fixed.
* "git add -p <pathspec>" unnecessarily expanded the pathspec to a
list of individual files that matches the pathspec by running "git
ls-files <pathspec>", before feeding it to "git diff-index" to see
which paths have changes, because historically the pathspec
language supported by "diff-index" was weaker. These days they are
equivalent and there is no reason to internally expand it. This
helps both performance and avoids command line argument limit on
some platforms.
(merge 7288e12cce jk/add-i-use-pathspecs later to maint).
* "git status --porcelain" is supposed to give a stable output, but a
few strings were left as translatable by mistake.
* "git revert -m 0 $merge_commit" complained that reverting a merge
needs to say relative to which parent the reversion needs to
happen, as if "-m 0" weren't given. The correct diagnosis is that
"-m 0" does not refer to the first parent ("-m 1" does). This has
been fixed.
* Code to read submodule.<name>.ignore config did not state the
variable name correctly when giving an error message diagnosing
misconfiguration.
* Fix for NO_PTHREADS build.
* Fix for potential segv introduced in v2.11.0 and later (also
v2.10.2) to "git log --pickaxe-regex -S".
* A few unterminated here documents in tests were fixed, which in
turn revealed incorrect expectations the tests make. These tests
have been updated.
* Fix for NO_PTHREADS option.
(merge 2225e1ea20 bw/grep-recurse-submodules later to maint).
* 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").
(merge b1ef400eec jk/no-looking-at-dotgit-outside-repo-final later to maint).
* A few commands that recently learned the "--recurse-submodule"
option misbehaved when started from a subdirectory of the
superproject.
(merge b2dfeb7c00 bw/recurse-submodules-relative-fix later to maint).
* FreeBSD implementation of getcwd(3) behaved differently when an
intermediate directory is unreadable/unsearchable depending on the
length of the buffer provided, which our strbuf_getcwd() was not
aware of. strbuf_getcwd() has been taught to cope with it better.
(merge a54e938e5b rs/freebsd-getcwd-workaround later to maint).
* A recent update to "rebase -i" stopped running hooks for the "git
commit" command during "reword" action, which has been fixed.
* Removing an entry from a notes tree and then looking another note
entry from the resulting tree using the internal notes API
functions did not work as expected. No in-tree users of the API
has such access pattern, but it still is worth fixing.
* "git receive-pack" could have been forced to die by attempting
allocate an unreasonably large amount of memory with a crafted push
certificate; this has been fixed.
(merge f2214dede9 bc/push-cert-receive-fix later to maint).
* Update error handling for codepath that deals with corrupt loose
objects.
(merge 51054177b3 jk/loose-object-info-report-error later to maint).
* "git diff --submodule=diff" learned to work better in a project
with a submodule that in turn has its own submodules.
(merge 17b254cda6 sb/show-diff-for-submodule-in-diff-fix later to maint).
* Update the build dependency so that an update to /usr/bin/perl
etc. result in recomputation of perl.mak file.
(merge c59c4939c2 ab/regen-perl-mak-with-different-perl later to maint).
* "git push --recurse-submodules --push-option=<string>" learned to
propagate the push option recursively down to pushes in submodules.
* If a patch e-mail had its first paragraph after an in-body header
indented (even after a blank line after the in-body header line),
the indented line was mistook as a continuation of the in-body
header. This has been fixed.
(merge fd1062e52e lt/mailinfo-in-body-header-continuation later to maint).
* Clean up fallouts from recent tightening of the set-up sequence,
where Git barfs when repository information is accessed without
first ensuring that it was started in a repository.
(merge bccb22cbb1 jk/no-looking-at-dotgit-outside-repo later to maint).
* "git p4" used "name-rev HEAD" when it wants to learn what branch is
checked out; it should use "symbolic-ref HEAD".
(merge eff451101d ld/p4-current-branch-fix later to maint).
* "http.proxy" set to an empty string is used to disable the usage of
proxy. We broke this early last year.
(merge ae51d91105 sr/http-proxy-configuration-fix later to maint).
* $GIT_DIR may in some cases be normalized with all symlinks resolved
while "gitdir" path expansion in the pattern does not receive the
same treatment, leading to incorrect mismatch. This has been fixed.
* "git submodule" script does not work well with strange pathnames.
Protect it from a path with slashes in them, at least.
* "git fetch-pack" was not prepared to accept ERR packet that the
upload-pack can send with a human-readable error message. It
showed the packet contents with ERR prefix, so there was no data
loss, but it was redundant to say "ERR" in an error message.
(merge 8e2c7bef03 jt/fetch-pack-error-reporting later to maint).
* "ls-files --recurse-submodules" did not quite work well in a
project with nested submodules.
* gethostname(2) may not NUL terminate the buffer if hostname does
not fit; unfortunately there is no easy way to see if our buffer
was too small, but at least this will make sure we will not end up
using garbage past the end of the buffer.
(merge 5781a9a270 dt/xgethostname-nul-termination later to maint).
* A recent update broke "git add -p ../foo" from a subdirectory.
* While handy, "git_path()" is a dangerous function to use as a
callsite that uses it safely one day can be broken by changes
to other code that calls it. Reduction of its use continues.
(merge 16d2676c9e jk/war-on-git-path later to maint).
* The split-index code configuration code used an unsafe git_path()
function without copying its result out.
* Many stale HTTP(s) links have been updated in our documentation.
(merge 613416f0be jk/update-links-in-docs later to maint).
* "git-shell" rejects a request to serve a repository whose name
begins with a dash, which makes it no longer possible to get it
confused into spawning service programs like "git-upload-pack" with
an option like "--help", which in turn would spawn an interactive
pager, instead of working with the repository user asked to access
(i.e. the one whose name is "--help").
* Other minor doc, test and build updates and code cleanups.
(merge df2a6e38b7 jk/pager-in-use later to maint).
(merge 75ec4a6cb0 ab/branch-list-doc later to maint).
(merge 3e5b36c637 sg/skip-prefix-in-prettify-refname later to maint).
(merge 2c5e2865cc jk/fast-import-cleanup later to maint).
(merge 4473060bc2 ab/test-readme-updates later to maint).
(merge 48a96972fd ab/doc-submitting later to maint).
(merge f5c2bc2b96 jk/make-coccicheck-detect-errors later to maint).
(merge c105f563d1 cc/untracked later to maint).
(merge 8668976b53 jc/unused-symbols later to maint).
(merge fba275dc93 jc/bs-t-is-not-a-tab-for-sed later to maint).
(merge be6ed145de mm/ls-files-s-doc later to maint).
(merge 60b091c679 qp/bisect-docfix later to maint).
(merge 47242cd103 ah/diff-files-ours-theirs-doc later to maint).
(merge 35ad44cbd8 sb/submodule-rm-absorb later to maint).
(merge 0301f1fd92 va/i18n-perl-scripts later to maint).
(merge 733e064d98 vn/revision-shorthand-for-side-branch-log later to maint).
(merge 85999743e7 tb/doc-eol-normalization later to maint).
(merge 0747fb49fd jk/loose-object-fsck later to maint).
(merge d8f4481c4f jk/quarantine-received-objects later to maint).
(merge 7ba1ceef95 xy/format-patch-base later to maint).
(merge fa1912c89a rs/misc-cppcheck-fixes later to maint).
(merge f17d642d3b ab/push-cas-doc-n-test later to maint).
(merge 61e282425a ss/gitmodules-ignore-doc later to maint).
(merge 8d3047cd5b ss/submodule-shallow-doc later to maint).
(merge 1f9e18b772 jk/prio-queue-avoid-swap-with-self later to maint).
(merge 627fde1025 jk/submodule-init-segv-fix later to maint).
(merge d395745d81 rg/doc-pull-typofix later to maint).
(merge 01e60a9a22 rg/doc-submittingpatches-wordfix later to maint).
(merge 501d3cd7b8 sr/hooks-cwd-doc later to maint).
----------------------------------------------------------------
Changes since v2.12.0 are as follows:
Alex Henrie (1):
log: if --decorate is not given, default to --decorate=auto
Alexander Shopov (2):
l10n: bg.po: Updated Bulgarian translation (3201t)
l10n: bg.po: Updated Bulgarian translation (3195t)
Allan Xavier (1):
line-log.c: prevent crash during union of too many ranges
Andreas Heiduk (2):
Documentation: improve description for core.quotePath
diff-files: document --ours etc.
Brandon Williams (37):
attr: pass struct attr_check to collect_some_attrs
attr: use hashmap for attribute dictionary
attr: eliminate global check_all_attr array
attr: remove maybe-real, maybe-macro from git_attr
attr: tighten const correctness with git_attr and match_attr
attr: store attribute stack in attr_check structure
attr: push the bare repo check into read_attr()
attr: reformat git_attr_set_direction() function
pathspec: allow querying for attributes
pathspec: allow escaped query values
submodule--helper: add is-active subcommand
submodule status: use submodule--helper is-active
submodule sync: skip work for inactive submodules
submodule sync: use submodule--helper is-active
submodule--helper clone: check for configured submodules using helper
grep: fix help text typo
setup: allow for prefix to be passed to git commands
grep: fix bug when recursing with relative pathspec
ls-files: fix typo in variable name
ls-files: fix bug when recursing with relative pathspec
grep: set default output method
submodule: decouple url and submodule interest
submodule init: initialize active submodules
clone: teach --recurse-submodules to optionally take a pathspec
submodule--helper init: set submodule.<name>.active
submodule add: respect submodule.active and submodule.<name>.active
grep: fix builds with with no thread support
send-pack: send push options correctly in stateless-rpc case
remote-curl: allow push options
sequencer: fix missing newline
push: unmark a local variable as static
push: propagate push-options with --recurse-submodules
remote: expose parse_push_refspec function
submodule--helper: add push-check subcommand
push: propagate remote and refspec with --recurse-submodules
pathspec: fix segfault in clear_pathspec
submodule: prevent backslash expantion in submodule names
Christian Couder (25):
config: mark an error message up for translation
t1700: change here document style
config: add git_config_get_split_index()
split-index: add {add,remove}_split_index() functions
read-cache: add and then use tweak_split_index()
update-index: warn in case of split-index incoherency
t1700: add tests for core.splitIndex
Documentation/config: add information for core.splitIndex
Documentation/git-update-index: talk about core.splitIndex config var
config: add git_config_get_max_percent_split_change()
read-cache: regenerate shared index if necessary
t1700: add tests for splitIndex.maxPercentChange
Documentation/config: add splitIndex.maxPercentChange
sha1_file: make check_and_freshen_file() non static
read-cache: touch shared index files when used
config: add git_config_get_expiry() from gc.c
read-cache: unlink old sharedindex files
t1700: test shared index file expiration
read-cache: refactor read_index_from()
read-cache: use freshen_shared_index() in read_index_from()
Documentation/config: add splitIndex.sharedIndexExpire
Documentation/git-update-index: explain splitIndex.*
update-index: fix xgetcwd() related memory leak
p0004: make perf test executable
read-cache: avoid using git_path() in freshen_shared_index()
Cornelius Weig (1):
tag: generate useful reflog message
David Aguilar (3):
t7800: remove whitespace before redirect
t7800: cleanup cruft left behind by tests
difftool: handle modified symlinks in dir-diff mode
David Turner (3):
gc: ignore old gc.log files
http.postbuffer: allow full range of ssize_t values
xgethostname: handle long hostnames
Devin J. Pohly (4):
t7003: ensure --prune-empty can prune root commit
t7003: ensure --prune-empty removes entire branch when applicable
filter-branch: fix --prune-empty on parentless commits
p7000: add test for filter-branch with --prune-empty
Devin Lehmacher (3):
path.c: add xdg_cache_home
credential-cache: use XDG_CACHE_HOME for socket
credential-cache: add tests for XDG functionality
Eric Wong (3):
README: create HTTP/HTTPS links from URLs in Markdown
http: inform about alternates-as-redirects behavior
http: release strbuf on disabled alternates
Giuseppe Bilotta (4):
builtin/am: honor --signoff also when --rebasing
builtin/am: fold am_signoff() into am_append_signoff()
doc: trivial typo in git-format-patch.txt
rebase: pass --[no-]signoff option to git am
Hiroshi Shirosaki (1):
git svn: fix authentication with 'branch'
Jacob Keller (7):
doc: add documentation for OPT_STRING_LIST
name-rev: extend --refs to accept multiple patterns
name-rev: add support to exclude refs by pattern match
describe: teach --match to accept multiple patterns
describe: teach describe negative pattern matches
ls-files: fix recurse-submodules with nested submodules
ls-files: fix path used when recursing into submodules
Jean-Noel Avila (3):
i18n: remove i18n from tag reflog message
l10n: fr.po v2.13 round 1
l10n: fr.po v2.13 rnd 2
Jeff Hostetler (19):
mingw: use OpenSSL's SHA-1 routines
preload-index: avoid lstat for skip-worktree items
name-hash: specify initial size for istate.dir_hash table
hashmap: allow memihash computation to be continued
hashmap: add disallow_rehash setting
hashmap: document memihash_cont, hashmap_disallow_rehash api
name-hash: perf improvement for lazy_init_name_hash
name-hash: add test-lazy-init-name-hash
name-hash: add perf test for lazy_init_name_hash
test-online-cpus: helper to return cpu count
read-cache: force_verify_index_checksum
string-list: use ALLOC_GROW macro when reallocing string_list
read-cache: add strcmp_offset function
unpack-trees: avoid duplicate ODB lookups during checkout
p0006-read-tree-checkout: perf test to time read-tree
read-cache: speed up add_index_entry during checkout
read-cache: speed up has_dir_name (part 1)
read-cache: speed up has_dir_name (part 2)
t1450: avoid use of "sed" on the index, which is a binary file
Jeff King (132):
setup_git_env: avoid blind fall-back to ".git"
pack-objects: enforce --depth limit in reused deltas
pack-objects: convert recursion to iteration in break_delta_chain()
for_each_alternate_ref: handle failure from real_pathdup()
for_each_alternate_ref: stop trimming trailing slashes
for_each_alternate_ref: use strbuf for path allocation
for_each_alternate_ref: pass name/oid instead of ref struct
for_each_alternate_ref: replace transport code with for-each-ref
fetch-pack: cache results of for_each_alternate_ref
add oidset API
receive-pack: use oidset to de-duplicate .have lines
receive-pack: fix misleading namespace/.have comment
receive-pack: treat namespace .have lines like alternates
receive-pack: avoid duplicates between our refs and alternates
grep: move thread initialization a little lower
grep: re-order rev-parsing loop
grep: fix "--" rev/pathspec disambiguation
grep: avoid resolving revision names in --no-index case
grep: do not diagnose misspelt revs with --no-index
show-branch: drop head_len variable
show-branch: store resolved head in heap buffer
remote: avoid reading $GIT_DIR config in non-repo
grep: treat revs the same for --untracked as for --no-index
show-branch: use skip_prefix to drop magic numbers
tempfile: set errno to a known value before calling ferror()
http: restrict auth methods to what the server advertises
ident: mark error messages for translation
ident: handle NULL email when complaining of empty name
ident: reject all-crud ident name
ident: do not ignore empty config name/email
parse_config_key: use skip_prefix instead of starts_with
parse_config_key: allow matching single-level config
parse_hide_refs_config: tell parse_config_key we don't want a subsection
http: add an "auto" mode for http.emptyauth
t6300: avoid creating refs/heads/HEAD
add--interactive: fix missing file prompt for patch mode with "-i"
interpret_branch_name(): handle auto-namelen for @{-1}
interpret_branch_name: move docstring to header file
strbuf_branchname: drop return value
strbuf_branchname: add docstring
interpret_branch_name: allow callers to restrict expansions
t3204: test git-branch @-expansion corner cases
branch: restrict @-expansions when deleting
strbuf_check_ref_format(): expand only local branches
checkout: restrict @-expansions when finding branch
t/perf: use $MODERN_GIT for all repo-copying steps
t/perf: add fallback for pre-bin-wrappers versions of git
ewah: fix eword_t/uint64_t confusion
receive-pack: fix deadlock when we cannot create tmpdir
send-pack: extract parsing of "unpack" response
send-pack: use skip_prefix for parsing unpack status
send-pack: improve unpack-status error messages
send-pack: read "unpack" status even on pack-objects failure
send-pack: report signal death of pack-objects
ref-filter: move ref_cbdata definition into ref-filter.c
ref-filter: use contains_result enum consistently
ref-filter: die on parse_commit errors
ref-filter: use separate cache for contains_tag_algo
t: add an interoperability test harness
t/interop: add test of old clients against modern git-daemon
http-walker: fix buffer underflow processing remote alternates
add--interactive: do not expand pathspecs with ls-files
cherry-pick: detect bogus arguments to --mainline
rev-parse: use skip_prefix when parsing options
rev-parse: add helper for parsing "--foo/--foo="
rev-parse: simplify parsing of ref options
move odb_* declarations out of git-compat-util.h
sha1_file.c: make pack-name helper globally accessible
odb_pack_keep(): stop generating keepfile name
replace snprintf with odb_pack_name()
index-pack: make pointer-alias fallbacks safer
sha1dc: add collision-detecting sha1 implementation
sha1dc: adjust header includes for git
sha1dc: disable safe_hash feature
sequencer: drop "warning:" when stopping for edit
Makefile: add DC_SHA1 knob
t0013: add a basic sha1 collision detection test
run-command: fix segfault when cleaning forked async process
hash-object: fix buffer reuse with --path in a subdirectory
prefix_filename: move docstring to header file
prefix_filename: drop length parameter
prefix_filename: return newly allocated string
prefix_filename: simplify windows #ifdef
bundle: use prefix_filename with bundle path
pager_in_use: use git_env_bool()
fast-import: use xsnprintf for writing sha1s
fast-import: use xsnprintf for formatting headers
encode_in_pack_object_header: respect output buffer length
pack.h: define largest possible encoded object size
do not check odb_mkstemp return value for errors
odb_mkstemp: write filename into strbuf
odb_mkstemp: use git_path_buf
Makefile: detect errors in running spatch
difftool: avoid strcpy
diff: avoid fixed-size buffer for patch-ids
tag: use strbuf to format tag header
fetch: use heap buffer to format reflog
avoid using fixed PATH_MAX buffers for refs
avoid using mksnpath for refs
create_branch: move msg setup closer to point of use
create_branch: use xstrfmt for reflog message
name-rev: replace static buffer with strbuf
receive-pack: print --pack-header directly into argv array
replace unchecked snprintf calls with heap buffers
combine-diff: replace malloc/snprintf with xstrfmt
convert unchecked snprintf into xsnprintf
transport-helper: replace checked snprintf with xsnprintf
gc: replace local buffer with git_path
daemon: use an argv_array to exec children
sha1_loose_object_info: return error for corrupted objects
index-pack: detect local corruption in collision check
connect.c: handle errors from split_cmdline
receive-pack: drop tmp_objdir_env from run_update_hook
receive-pack: document user-visible quarantine effects
refs: reject ref updates while GIT_QUARANTINE_PATH is set
bisect: add git_path_bisect_terms helper
branch: add edit_description() helper
use git_path_* helper functions
replace xstrdup(git_path(...)) with git_pathdup(...)
replace strbuf_addstr(git_path()) with git_path_buf()
am: drop "dir" parameter from am_state_init
connect.c: fix leak in handle_ssh_variant
doc: use https links to avoid http redirect
doc: replace or.cz gitwiki link with git.wiki.kernel.org
gitcore-tutorial: update broken link
docs/archimport: quote sourcecontrol.net reference
docs/bisect-lk2009: update nist report link
docs/bisect-lk2009: update java code conventions link
completion: optionally disable checkout DWIM
submodule_init: die cleanly on submodules without url defined
prio_queue_reverse: don't swap elements with themselves
shell: disallow repo names beginning with dash
Jiang Xin (4):
l10n: git.pot: v2.13.0 round 1 (96 new, 37 removed)
l10n: zh_CN: for git v2.13.0 l10n round 1
l10n: git.pot: v2.13.0 round 2 (4 new, 7 removed)
l10n: zh_CN: for git v2.13.0 l10n round 2
Johan Hovold (1):
send-email: only allow one address per body tag
Johannes Schindelin (23):
git_connect(): factor out SSH variant handling
rebase--helper: add a builtin helper for interactive rebases
rebase -i: use the rebase--helper builtin
rev-parse: fix several options when running in a subdirectory
t7006: replace dubious test
Travis: also test on 32-bit Linux
setup_git_directory(): use is_dir_sep() helper
t1501: demonstrate NULL pointer access with invalid GIT_WORK_TREE
real_pathdup(): fix callsites that wanted it to die on error
setup: prepare setup_discovered_git_dir() for the root directory
setup_git_directory_1(): avoid changing global state
setup: introduce the discover_git_directory() function
setup: make read_early_config() reusable
read_early_config(): avoid .git/config hack when unneeded
read_early_config(): really discover .git/
t1309: test read_early_config()
setup_git_directory_gently_1(): avoid die()ing
t1309: document cases where we would want early config not to die()
setup.c: mention unresolved problems
t7504: document regression: reword no longer calls commit-msg
sequencer: make commit options more extensible
sequencer: allow the commit-msg hooks to run during a `reword`
difftool: fix use-after-free
Jonathan Nieder (2):
remote helpers: avoid blind fall-back to ".git" when setting GIT_DIR
has_sha1_file: don't bother if we are not in a repository
Jonathan Tan (5):
grep: do not unnecessarily query repo for "--"
upload-pack: report "not our ref" to client
http: attempt updating base URL only if no error
t/perf: export variable used in other blocks
fetch-pack: show clearer error message upon ERR
Jordi Mas (1):
l10n: Update Catalan translation
Junio C Hamano (66):
merge: drop 'git merge <message> HEAD <commit>' syntax
connect: rename tortoiseplink and putty variables
commit.c: use strchrnul() to scan for one line
attr.c: use strchrnul() to scan for one line
attr.c: update a stale comment on "struct match_attr"
attr.c: explain the lack of attr-name syntax check in parse_attr()
attr.c: complete a sentence in a comment
attr.c: mark where #if DEBUG ends more clearly
attr.c: simplify macroexpand_one()
attr.c: tighten constness around "git_attr" structure
attr.c: plug small leak in parse_attr_line()
attr.c: add push_stack() helper
attr.c: outline the future plans by heavily commenting
attr: rename function and struct related to checking attributes
attr: (re)introduce git_check_attr() and struct attr_check
attr: convert git_all_attrs() to use "struct attr_check"
attr: convert git_check_attrs() callers to use the new API
attr: retire git_check_attrs() API
attr: change validity check for attribute names to use positive logic
ref-filter: resurrect "strip" as a synonym to "lstrip"
connect.c: stop conflating ssh command names and overrides
config: move a few helper functions up
config: use git_config_parse_key() in git_config_parse_parameter()
First batch after 2.12
diff: do not short-cut CHECK_SIZE_ONLY check in diff_populate_filespec()
branch: honor --abbrev/--no-abbrev in --list mode
Second batch after 2.12
Third batch after 2.12
Fourth batch after 2.12
Preparing for 2.12.1
Makefile: make DC_SHA1 the default
Fifth batch for 2.13
Git 2.12.1
Prepare for 2.12.2
Sixth batch for 2.13
t5615: fix a here-doc syntax error
t7406: correct test case for submodule-update initial population
tests: lint for run-away here-doc
branch doc: update description for `--list`
Git 2.12.2
Seventh batch for 2.13
sha1dc: avoid CPP macro collisions
Eighth batch for 2.13
Prepare for 2.12.3
Ninth batch for 2.13
Tenth batch for 2.13
remote.[ch]: parse_push_cas_option() can be static
contrib/git-resurrect.sh: do not write \t for HT in sed scripts
Eleventh batch for 2.13
Twelfth batch for 2.13
replace: plug a memory leak
Git 2.13-rc0
Getting ready for -rc1
Git 2.13-rc1
Merging a handful of topics before -rc2
Git 2.13-rc2
Git 2.4.12
Git 2.5.6
Git 2.6.7
Git 2.7.5
Git 2.8.5
Git 2.9.4
Git 2.10.3
Git 2.11.2
Git 2.12.3
Git 2.13
Karthik Nayak (20):
ref-filter: implement %(if), %(then), and %(else) atoms
ref-filter: include reference to 'used_atom' within 'atom_value'
ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
ref-filter: modify "%(objectname:short)" to take length
ref-filter: move get_head_description() from branch.c
ref-filter: introduce format_ref_array_item()
ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
ref-filter: add support for %(upstream:track,nobracket)
ref-filter: make "%(symref)" atom work with the ':short' modifier
ref-filter: introduce refname_atom_parser_internal()
ref-filter: introduce refname_atom_parser()
ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
ref-filter: rename the 'strip' option to 'lstrip'
ref-filter: Do not abruptly die when using the 'lstrip=<N>' option
ref-filter: modify the 'lstrip=<N>' option to work with negative '<N>'
ref-filter: add an 'rstrip=<N>' option to atoms which deal with refnames
ref-filter: allow porcelain to translate messages in the output
branch, tag: use porcelain output
branch: use ref-filter printing APIs
branch: implement '--format' option
Kevin Willford (2):
name-hash: fix buffer overrun
t3008: skip lazy-init test on a single-core box
Kyle Meyer (12):
delete_ref: accept a reflog message argument
update-ref: pass reflog message to delete_ref()
rename_ref: replace empty message in HEAD's log
branch: record creation of renamed branch in HEAD's log
t1400: rename test descriptions to be unique
t1400: set core.logAllRefUpdates in "logged by touch" tests
t1400: use test_path_is_* helpers
t1400: remove a set of unused output files
t1400: use test_when_finished for cleanup
doc/config: grammar fixes for core.{editor,commentChar}
doc/revisions: remove brackets from rev^-n shorthand
t1400: use consistent style for test_expect_success calls
Lars Schneider (4):
travis-ci: build and test Git on Windows
travis-ci: add static analysis build job to run coccicheck
travis-ci: printf $STATUS as string
travis-ci: set DEVELOPER knob for Linux32 build
Linus Torvalds (3):
pathspec magic: add '^' as alias for '!'
pathspec: don't error out on all-exclusionary pathspec patterns
mailinfo: fix in-body header continuations
Luke Diamand (3):
git-p4: add failing test for name-rev rather than symbolic-ref
git-p4: add read_pipe_text() internal function
git-p4: don't use name-rev to get current branch
Matt McCutchen (4):
merge-recursive: make "CONFLICT (rename/delete)" message show both paths
fetch-pack: move code to report unmatched refs to a function
fetch_refs_via_pack: call report_unmatched_refs
fetch-pack: add specific error for fetching an unadvertised object
Maxim Moseychuk (2):
stop_progress_msg: convert xsnprintf to xstrfmt
bisect_next_all: convert xsnprintf to xstrfmt
Michael Haggerty (52):
files_rename_ref(): tidy up whitespace
refname_is_safe(): correct docstring
t5505: use "for-each-ref" to test for the non-existence of references
safe_create_leading_directories_const(): preserve errno
safe_create_leading_directories(): set errno on SCLD_EXISTS
raceproof_create_file(): new function
lock_ref_sha1_basic(): inline constant
lock_ref_sha1_basic(): use raceproof_create_file()
rename_tmp_log(): use raceproof_create_file()
rename_tmp_log(): improve error reporting
log_ref_write(): inline function
log_ref_setup(): separate code for create vs non-create
log_ref_setup(): improve robustness against races
log_ref_setup(): pass the open file descriptor back to the caller
log_ref_write_1(): don't depend on logfile argument
log_ref_setup(): manage the name of the reflog file internally
log_ref_write_1(): inline function
delete_ref_loose(): derive loose reference path from lock
delete_ref_loose(): inline function
try_remove_empty_parents(): rename parameter "name" -> "refname"
try_remove_empty_parents(): don't trash argument contents
try_remove_empty_parents(): teach to remove parents of reflogs, too
files_transaction_commit(): clean up empty directories
refs: reorder some function definitions
refs: make some ref_store lookup functions private
refs: remove some unnecessary handling of submodule == ""
register_ref_store(): new function
refs: store submodule ref stores in a hashmap
refs: push the submodule attribute down
base_ref_store_init(): remove submodule argument
files_ref_store::submodule: use NULL for the main repository
read_loose_refs(): read refs using resolve_ref_recursively()
get_ref_dir(): don't call read_loose_refs() for "refs/bisect"
refs_read_raw_ref(): new function
refs_ref_iterator_begin(): new function
refs_verify_refname_available(): implement once for all backends
refs_verify_refname_available(): use function in more places
ref-cache: rename `add_ref()` to `add_ref_entry()`
ref-cache: rename `find_ref()` to `find_ref_entry()`
ref-cache: rename `remove_entry()` to `remove_entry_from_dir()`
refs: split `ref_cache` code into separate files
ref-cache: introduce a new type, ref_cache
refs: record the ref_store in ref_cache, not ref_dir
ref-cache: use a callback function to fill the cache
refs: handle "refs/bisect/" in `loose_fill_ref_dir()`
do_for_each_entry_in_dir(): eliminate `offset` argument
get_loose_ref_dir(): function renamed from get_loose_refs()
get_loose_ref_cache(): new function
cache_ref_iterator_begin(): make function smarter
commit_packed_refs(): use reference iteration
files_pack_refs(): use reference iteration
do_for_each_entry_in_dir(): delete function
Michael J Gruber (6):
git-status: make porcelain more robust
git-prompt: add a describe style for any tags
mailmap: use Michael J Gruber's new address
describe: localize debug output fully
l10n: de: translate describe debug terms
l10n: de.po: lower case after semi-colon
Michael Rappazzo (1):
rev-parse tests: add tests executed from a subdirectory
Mike Hommey (1):
notes: do not break note_tree structure in note_tree_consolidate()
Mostyn Bramley-Moore (1):
Documentation: document elements in "ls-files -s" output in order
Nguyễn Thái Ngọc Duy (40):
attr: support quoting pathname patterns in C style
clean: use warning_errno() when appropriate
config.txt: clarify multiple key values in include.path
config.txt: reflow the second include.path paragraph
config: add conditional include
refs.h: add forward declaration for structs used in this file
git-commit.txt: list post-rewrite in HOOKS section
files-backend: make files_log_ref_write() static
files-backend.c: delete dead code in files_ref_iterator_begin()
files-backend: delete dead code in files_init_db()
files-backend: add and use files_packed_refs_path()
files-backend: make sure files_rename_ref() always reach the end
files-backend: convert git_path() to strbuf_git_path()
files-backend: move "logs/" out of TMP_RENAMED_LOG
files-backend: add and use files_reflog_path()
files-backend: add and use files_ref_path()
files-backend: remove the use of git_path()
refs.c: introduce get_main_ref_store()
refs: rename lookup_ref_store() to lookup_submodule_ref_store()
refs.c: flatten get_ref_store() a bit
refs.c: kill register_ref_store(), add register_submodule_ref_store()
refs.c: make get_main_ref_store() public and use it
path.c: move some code out of strbuf_git_path_submodule()
refs: move submodule code out of files-backend.c
files-backend: replace submodule_allowed check in files_downcast()
refs: rename get_ref_store() to get_submodule_ref_store() and make it public
refs: add new ref-store api
refs: new transaction related ref-store api
files-backend: avoid ref api targeting main ref store
refs: delete pack_refs() in favor of refs_pack_refs()
t/helper: add test-ref-store to test ref-store functions
t1405: some basic tests on main ref store
t1406: new tests for submodule ref store
refs.h: add a note about sorting order of for_each_ref_*
path.c: and an option to call real_path() in expand_user_path()
config: resolve symlinks in conditional include's patterns
config: prepare to pass more info in git_config_with_options()
config: handle conditional include when $GIT_DIR is not set up
config: correct file reading order in read_early_config()
worktree add: add --lock option
Patrick Steinhardt (8):
mailmap: add Patrick Steinhardt's work address
urlmatch: enable normalization of URLs with globs
urlmatch: split host and port fields in `struct url_info`
urlmatch: include host in urlmatch ranking
urlmatch: allow globbing for the URL host part
docs/diffcore: fix grammar in diffcore-rename header
docs/diffcore: unquote "Complete Rewrites" in headers
pathspec: honor `PATHSPEC_PREFIX_ORIGIN` with empty prefix
Peter Krefting (3):
l10n: sv.po: Update Swedish translation (3199t0f0u)
i18n: read-cache: typofix
l10n: sv.po: Update Swedish translation (3195t0f0u)
Prathamesh Chavan (1):
t2027: avoid using pipes
Quentin Pradet (1):
git-bisect.txt: add missing word
Ralf Thielow (4):
submodule.c: add missing ' in error messages
git-add--interactive.perl: add missing dot in a message
l10n: de.po: update German translation
l10n: de.po: translate 4 new messages
Ramsay Jones (3):
wrapper.c: remove unused git_mkstemp() function
wrapper.c: remove unused gitmkstemps() function
name-hash: add test-lazy-init-name-hash to .gitignore
Ray Chen (1):
l10n: zh_CN: review for git v2.13.0 l10n round 1
René Genz (3):
doc: update SubmittingPatches
fix minor typos
doc: git-pull.txt use US spelling, fix minor typo
René Scharfe (18):
sha1_file: release fallback base's memory in unpack_entry()
cocci: use ALLOC_ARRAY
strbuf: add strbuf_add_real_path()
commit: be more precise when searching for headers
commit: don't check for space twice when looking for header
log-tree: factor out fmt_output_email_subject()
pretty: use fmt_output_email_subject()
blame: move blame_entry duplication to add_blame_entry()
receive-pack: simplify run_update_post_hook()
http-push: don't check return value of lookup_unknown_object()
revision: remove declaration of path_name()
shortlog: don't set after_subject to an empty string
strbuf: support long paths w/o read rights in strbuf_getcwd() on FreeBSD
test-read-cache: setup git dir
am: close stream on error, but not stdin
files_for_each_reflog_ent_reverse(): close stream and free strbuf on error
server-info: avoid calling fclose(3) twice in update_info_file()
use HOST_NAME_MAX to size buffers for gethostname(2)
Ross Lagerwall (1):
remote: ignore failure to remove missing branch.<name>.merge
SZEDER Gábor (44):
completion: improve __git_refs()'s in-code documentation
completion tests: don't add test cruft to the test repository
completion tests: make the $cur variable local to the test helper functions
completion tests: consolidate getting path of current working directory
completion tests: check __gitdir()'s output in the error cases
completion tests: add tests for the __git_refs() helper function
completion: ensure that the repository path given on the command line exists
completion: fix most spots not respecting 'git --git-dir=<path>'
completion: respect 'git --git-dir=<path>' when listing remote refs
completion: list refs from remote when remote's name matches a directory
completion: don't list 'HEAD' when trying refs completion outside of a repo
completion: list short refs from a remote given as a URL
completion: don't offer commands when 'git --opt' needs an argument
completion: fix completion after 'git -C <path>'
rev-parse: add '--absolute-git-dir' option
completion: respect 'git -C <path>'
completion: don't use __gitdir() for git commands
completion: consolidate silencing errors from git commands
completion: don't guard git executions with __gitdir()
completion: extract repository discovery from __gitdir()
completion: cache the path to the repository
completion: restore removed line continuating backslash
completion: remove redundant __gitcomp_nl() options from _git_commit()
tests: create an interactive gdb session with the 'debug' helper
tests: make the 'test_pause' helper work in non-verbose mode
pickaxe: fix segfault with '-S<...> --pickaxe-regex'
completion: wrap __git_refs() for better option parsing
completion: support completing full refs after '--option=refs/<TAB>'
completion: support completing fully qualified non-fast-forward refspecs
completion: support excluding full refs
completion: don't disambiguate tags and branches
completion: don't disambiguate short refs
completion: let 'for-each-ref' and 'ls-remote' filter matching refs
completion: let 'for-each-ref' strip the remote name from remote branches
completion: let 'for-each-ref' filter remote branches for 'checkout' DWIMery
completion: let 'for-each-ref' sort remote branches for 'checkout' DWIMery
completion: fill COMPREPLY directly when completing refs
completion: fill COMPREPLY directly when completing fetch refspecs
completion: speed up branch and tag completion
refs.c: use skip_prefix() in prettify_refname()
completion: put matching ctags symbol names directly into COMPREPLY
completion: extract completing ctags symbol names into helper function
completion: offer ctags symbol names for 'git log -S', '-G' and '-L:'
t6500: wait for detached auto gc at the end of the test script
Santiago Torres (1):
t7004, t7030: fix here-doc syntax errors
Sebastian Schuberth (5):
contrib: git-remote-{bzr,hg} placeholders don't need Python
sha1_file: remove an used fd variable
submodule: remove a superfluous second check for the "new" variable
gitmodules: clarify what history depth a shallow clone has
gitmodules: clarify the ignore option values
Segev Finer (2):
connect: handle putty/plink also in GIT_SSH_COMMAND
connect: Add the envvar GIT_SSH_VARIANT and ssh.variant config
Sergey Ryazanov (2):
http: honor empty http.proxy option to bypass proxy
http: fix the silent ignoring of proxy misconfiguraion
Simon Ruderich (1):
githooks.txt: clarify push hooks are always executed in $GIT_DIR
Stefan Beller (36):
Documentation: fix a typo
refs: parse_hide_refs_config to use parse_config_key
submodule init: warn about falling back to a local path
rev-parse: add --show-superproject-working-tree
submodule-config: correct error reporting for invalid ignore value
connect_work_tree_and_git_dir: safely create leading directories
lib-submodule-update.sh: reorder create_lib_submodule_repo
lib-submodule-update.sh: do not use ./. as submodule remote
lib-submodule-update: teach test_submodule_content the -C <dir> flag
lib-submodule-update.sh: replace sha1 by hash
lib-submodule-update.sh: define tests for recursing into submodules
make is_submodule_populated gently
update submodules: add submodule config parsing
update submodules: add a config option to determine if submodules are updated
submodules: introduce check to see whether to touch a submodule
update submodules: move up prepare_submodule_repo_env
submodule.c: get_super_prefix_or_empty
update submodules: add submodule_move_head
unpack-trees: pass old oid to verify_clean_submodule
unpack-trees: check if we can perform the operation for submodules
entry.c: create submodules when interesting
builtin/checkout: add --recurse-submodules switch
builtin/read-tree: add --recurse-submodules switch
wt-status: simplify by using for_each_string_list_item
t3600: rename test to describe its functionality
builtin/describe: introduce --broken flag
submodule.c: use argv_array in is_submodule_modified
submodule.c: factor out early loop termination in is_submodule_modified
submodule.c: convert is_submodule_modified to use strbuf_getwholeline
submodule.c: port is_submodule_modified to use porcelain 2
submodule.c: stricter checking for submodules in is_submodule_modified
short status: improve reporting for submodule changes
unpack-trees.c: align submodule error message to the other error messages
submodule.c: correctly handle nested submodules in is_submodule_modified
diff: submodule inline diff to initialize env array.
submodule--helper: fix typo in is_active error message
Stephen Hicks (1):
rebase -i: reread the todo list if `exec` touched it
Thomas Gummerer (9):
stash: introduce push verb
stash: add test for the create command line arguments
stash: refactor stash_create
stash: teach 'push' (and 'create_stash') to honor pathspec
stash: use stash_push for no verb form
stash: allow pathspecs in the no verb form
stash: don't show internal implementation details
stash: pass the pathspec argument to git reset
stash: keep untracked files intact in stash -k
Torsten Bögershausen (1):
gitattributes.txt: document how to normalize the line endings
Trần Ngọc Quân (2):
l10n: vi.po(3198t): Updated Vietnamese translation for v2.13.0-rc0
l10n: vi.po(3195t): Update translation for v2.13.0 round 2
Valery Tolstov (1):
submodule--helper.c: remove duplicate code
Vasco Almeida (1):
l10n: pt_PT: update Portuguese translation
Vegard Nossum (2):
xdiff -W: relax end-of-file function detection
line-log: use COPY_ARRAY to fix mis-sized memcpy
brian m. carlson (41):
hex: introduce parse_oid_hex
builtin/commit: convert to struct object_id
builtin/diff-tree: convert to struct object_id
builtin/describe: convert to struct object_id
builtin/fast-export: convert to struct object_id
builtin/fmt-merge-message: convert to struct object_id
builtin/grep: convert to struct object_id
builtin/branch: convert to struct object_id
builtin/clone: convert to struct object_id
builtin/merge: convert to struct object_id
Convert remaining callers of resolve_refdup to object_id
builtin/replace: convert to struct object_id
reflog-walk: convert struct reflog_info to struct object_id
refs: convert each_reflog_ent_fn to struct object_id
refs: simplify parsing of reflog entries
sha1_file: introduce an nth_packed_object_oid function
Convert object iteration callbacks to struct object_id
builtin/merge-base: convert to struct object_id
wt-status: convert to struct object_id
hash.h: move SHA-1 implementation selection into a header file
Define new hash-size constants for allocating memory
Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ
Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ
builtin/diff: convert to struct object_id
builtin/pull: convert portions to struct object_id
builtin/receive-pack: fix incorrect pointer arithmetic
builtin/receive-pack: convert portions to struct object_id
fsck: convert init_skiplist to struct object_id
parse-options-cb: convert sha1_array_append caller to struct object_id
test-sha1-array: convert most code to struct object_id
sha1_name: convert struct disambiguate_state to object_id
sha1_name: convert disambiguate_hint_fn to take object_id
submodule: convert check_for_new_submodule_commits to object_id
builtin/pull: convert to struct object_id
sha1-array: convert internal storage for struct sha1_array to object_id
Make sha1_array_append take a struct object_id *
Convert remaining callers of sha1_array_lookup to object_id
Convert sha1_array_lookup to take struct object_id
Convert sha1_array_for_each_unique and for_each_abbrev to object_id
Rename sha1_array to oid_array
Documentation: update and rename api-sha1-array.txt
Ævar Arnfjörð Bjarmason (33):
cvs tests: skip tests that call "cvs commit" when running as root
gitweb tests: change confusing "skip_all" phrasing
gitweb tests: skip tests when we don't have Time::HiRes
doc: change erroneous --[no]-whatever into --[no-]whatever
push: mention "push.default=tracking" in the documentation
tag doc: move the description of --[no-]merged earlier
tag doc: split up the --[no-]merged documentation
tag doc: reword --[no-]merged to talk about commits, not tips
ref-filter: make combining --merged & --no-merged an error
doc/SubmittingPatches: clarify the casing convention for "area: change..."
t/README: link to metacpan.org, not search.cpan.org
t/README: change "Inside <X> part" to "Inside the <X> part"
ref-filter: add test for --contains on a non-commit
tag: remove a TODO item from the test suite
tag tests: fix a typo in a test description
for-each-ref: partly change <object> to <commit> in help
branch doc: change `git branch <pattern>` to use `<branchname>`
tag: add more incompatibles mode tests
parse-options: add OPT_NONEG to the "contains" option
tag: change misleading --list <pattern> documentation
tag: implicitly supply --list given another list-like option
tag: change --point-at to default to HEAD
ref-filter: add --no-contains option to tag/branch/for-each-ref
ref-filter: reflow recently changed branch/tag/for-each-ref docs
tag: add tests for --with and --without
t/README: clarify the test_have_prereq documentation
doc/SubmittingPatches: show how to get a CLI commit summary
rev-parse: match @{upstream}, @{u} and @{push} case-insensitively
perl: regenerate perl.mak if perl -V changes
grep: plug a trivial memory leak
push: document & test --force-with-lease with multiple remotes
completion: expand "push --delete <remote> <ref>" for refs on that <remote>
t/perf: correctly align non-ASCII descriptions in output
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.13.0-rc2
@ 2017-05-04 15:15 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-05-04 15:15 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.13.0-rc2 is now available for testing
at the usual places. It is comprised of 699 non-merge commits
since v2.12.0, contributed by 59 people, 15 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.13.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.12.0 are as follows.
Welcome to the Git development community!
Allan Xavier, Andreas Heiduk, Devin J. Pohly, Devin Lehmacher,
Hiroshi Shirosaki, Johan Hovold, Maxim Moseychuk, Mostyn
Bramley-Moore, Prathamesh Chavan, Quentin Pradet, René Genz,
Segev Finer, Sergey Ryazanov, Stephen Hicks, and Valery Tolstov.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Brandon Williams,
brian m. carlson, Christian Couder, Cornelius Weig, David
Aguilar, David Turner, Eric Wong, Giuseppe Bilotta, Jacob Keller,
Jean-Noel Avila, Jeff Hostetler, Jeff King, Johannes Schindelin,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Karthik Nayak,
Kevin Willford, Kyle Meyer, Lars Schneider, Linus Torvalds,
Luke Diamand, Matt McCutchen, Michael Haggerty, Michael J Gruber,
Michael Rappazzo, Mike Hommey, Nguyễn Thái Ngọc Duy, Patrick
Steinhardt, Peter Krefting, Ralf Thielow, Ramsay Jones, René
Scharfe, Ross Lagerwall, Santiago Torres, Sebastian Schuberth,
Simon Ruderich, Stefan Beller, SZEDER Gábor, Thomas Gummerer,
Torsten Bögershausen, and Vegard Nossum.
----------------------------------------------------------------
Git 2.13 Release Notes (draft)
==============================
Backward compatibility notes.
* 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 not scheduled to happen in the upcoming
release (yet).
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and is now removed.
* The default location "~/.git-credential-cache/socket" for the
socket used to communicate with the credential-cache daemon has
been moved to "~/.cache/git/credential/socket".
* 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.
Updates since v2.12
-------------------
UI, Workflows & Features
* "git describe" and "git name-rev" have been taught to take more
than one refname patterns to restrict the set of refs to base their
naming output on, and also learned to take negative patterns to
name refs not to be used for naming via their "--exclude" option.
* Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
once there no longer is any other branch whose name begins with
"foo/", but we didn't do so so far. Now we do.
* When "git merge" detects a path that is renamed in one history
while the other history deleted (or modified) it, it now reports
both paths to help the user understand what is going on in the two
histories being merged.
* The <url> part in "http.<url>.<variable>" configuration variable
can now be spelled with '*' that serves as wildcard.
E.g. "http.https://*.example.com.proxy" can be used to specify the
proxy used for https://a.example.com, https://b.example.com, etc.,
i.e. any host in the example.com domain.
* "git tag" did not leave useful message when adding a new entry to
reflog; this was left unnoticed for a long time because refs/tags/*
doesn't keep reflog by default.
* The "negative" pathspec feature was somewhat more cumbersome to use
than necessary in that its short-hand used "!" which needed to be
escaped from shells, and it required "exclude from what?" specified.
* The command line options for ssh invocation needs to be tweaked for
some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
while OpenSSH wants "-p <port>" to specify port to connect to), and
the variant was guessed when GIT_SSH environment variable is used
to specify it. The logic to guess now applies to the command
specified by the newer GIT_SSH_COMMAND and also core.sshcommand
configuration variable, and comes with an escape hatch for users to
deal with misdetected cases.
* The "--git-path", "--git-common-dir", and "--shared-index-path"
options of "git rev-parse" did not produce usable output. They are
now updated to show the path to the correct file, relative to where
the caller is.
* "git diff -W" has been taught to handle the case where a new
function is added at the end of the file better.
* "git update-ref -d" and other operations to delete references did
not leave any entry in HEAD's reflog when the reference being
deleted was the current branch. This is not a problem in practice
because you do not want to delete the branch you are currently on,
but caused renaming of the current branch to something else not to
be logged in a useful way.
* "Cc:" on the trailer part does not have to conform to RFC strictly,
unlike in the e-mail header. "git send-email" has been updated to
ignore anything after '>' when picking addresses, to allow non-address
cruft like " # stable 4.4" after the address.
* When "git submodule init" decides that the submodule in the working
tree is its upstream, it now gives a warning as it is not a very
common setup.
* "git stash push" takes a pathspec so that the local changes can be
stashed away only partially.
* Documentation for "git ls-files" did not refer to core.quotePath.
* The experimental "split index" feature has gained a few
configuration variables to make it easier to use.
* From a working tree of a repository, a new option of "rev-parse"
lets you ask if the repository is used as a submodule of another
project, and where the root level of the working tree of that
project (i.e. your superproject) is.
* The pathspec mechanism learned to further limit the paths that
match the pattern to those that have specified attributes attached
via the gitattributes mechanism.
* Our source code has used the SHA1_HEADER cpp macro after "#include"
in the C code to switch among the SHA-1 implementations. Instead,
list the exact header file names and switch among implementations
using "#ifdef BLK_SHA1/#include "block-sha1/sha1.h"/.../#endif";
this helps some IDE tools.
* The start-up sequence of "git" needs to figure out some configured
settings before it finds and set itself up in the location of the
repository and was quite messy due to its "chicken-and-egg" nature.
The code has been restructured.
* The command line prompt (in contrib/) learned a new 'tag' style
that can be specified with GIT_PS1_DESCRIBE_STYLE, to describe a
detached HEAD with "git describe --tags".
* The configuration file learned a new "includeIf.<condition>.path"
that includes the contents of the given path only when the
condition holds. This allows you to say "include this work-related
bit only in the repositories under my ~/work/ directory".
* Recent update to "rebase -i" started showing a message that is not
a warning with "warning:" prefix by mistake. This has been fixed.
* Recently we started passing the "--push-options" through the
external remote helper interface; now the "smart HTTP" remote
helper understands what to do with the passed information.
* "git describe --dirty" dies when it cannot be determined if the
state in the working tree matches that of HEAD (e.g. broken
repository or broken submodule). The command learned a new option
"git describe --broken" to give "$name-broken" (where $name is the
description of HEAD) in such a case.
* "git checkout" is taught the "--recurse-submodules" option.
* Recent enhancement to "git stash push" command to support pathspec
to allow only a subset of working tree changes to be stashed away
was found to be too chatty and exposed the internal implementation
detail (e.g. when it uses reset to match the index to HEAD before
doing other things, output from reset seeped out). These, and
other chattyness has been fixed.
* "git merge <message> HEAD <commit>" syntax that has been deprecated
since October 2007 has been removed.
* The refs completion for large number of refs has been sped up,
partly by giving up disambiguating ambiguous refs and partly by
eliminating most of the shell processing between 'git for-each-ref'
and 'ls-remote' and Bash's completion facility.
* On many keyboards, typing "@{" involves holding down SHIFT key and
one can easily end up with "@{Up..." when typing "@{upstream}". As
the upstream/push keywords do not appear anywhere else in the syntax,
we can safely accept them case insensitively without introducing
ambiguity or confusion to solve this.
* "git tag/branch/for-each-ref" family of commands long allowed to
filter the refs by "--contains X" (show only the refs that are
descendants of X), "--merged X" (show only the refs that are
ancestors of X), "--no-merged X" (show only the refs that are not
ancestors of X). One curious omission, "--no-contains X" (show
only the refs that are not descendants of X) has been added to
them.
* The default behaviour of "git log" in an interactive session has
been changed to enable "--decorate".
* The output from "git status --short" has been extended to show
various kinds of dirtyness in submodules differently; instead of to
"M" for modified, 'm' and '?' can be shown to signal changes only
to the working tree of the submodule but not the commit that is
checked out.
* Allow the http.postbuffer configuration variable to be set to a
size that can be expressed in size_t, which can be larger than
ulong on some platforms.
* "git rebase" learns "--signoff" option.
* The completion script (in contrib/) learned to complete "git push
--delete b<TAB>" to complete branch name to be deleted.
* "git worktree add --lock" allows to lock a worktree immediately
after it's created. This helps prevent a race between "git worktree
add; git worktree lock" and "git worktree prune".
* Completion for "git checkout <branch>" that auto-creates the branch
out of a remote tracking branch can now be disabled, as this
completion often gets in the way when completing to checkout an
existing local branch that happens to share the same prefix with
bunch of remote tracking branches.
Performance, Internal Implementation, Development Support etc.
* The code to list branches in "git branch" has been consolidated
with the more generic ref-filter API.
* Resource usage while enumerating refs from alternate object store
has been optimized to help receiving end of "push" that hosts a
repository with many "forks".
* The gitattributes machinery is being taught to work better in a
multi-threaded environment.
* "git rebase -i" starts using the recently updated "sequencer" code.
* Code and design clean-up for the refs API.
* The preload-index code has been taught not to bother with the index
entries that are paths that are not checked out by "sparse checkout".
* Some warning() messages from "git clean" were updated to show the
errno from failed system calls.
* The "parse_config_key()" API function has been cleaned up.
* A test that creates a confusing branch whose name is HEAD has been
corrected not to do so.
* The code that parses header fields in the commit object has been
updated for (micro)performance and code hygiene.
* An helper function to make it easier to append the result from
real_path() to a strbuf has been added.
* Reduce authentication round-trip over HTTP when the server supports
just a single authentication method. This also improves the
behaviour when Git is misconfigured to enable http.emptyAuth
against a server that does not authenticate without a username
(i.e. not using Kerberos etc., which makes http.emptyAuth
pointless).
* Windows port wants to use OpenSSL's implementation of SHA-1
routines, so let them.
* The t/perf performance test suite was not prepared to test not so
old versions of Git, but now it covers versions of Git that are not
so ancient.
* Add 32-bit Linux variant to the set of platforms to be tested with
Travis CI.
* "git branch --list" takes the "--abbrev" and "--no-abbrev" options
to control the output of the object name in its "-v"(erbose)
output, but a recent update started ignoring them; fix it before
the breakage reaches to any released version.
* Picking two versions of Git and running tests to make sure the
older one and the newer one interoperate happily has now become
possible.
* "git tag --contains" used to (ab)use the object bits to keep track
of the state of object reachability without clearing them after
use; this has been cleaned up and made to use the newer commit-slab
facility.
* The "debug" helper used in the test framework learned to run
a command under "gdb" interactively.
* The "detect attempt to create collisions" variant of SHA-1
implementation by Marc Stevens (CWI) and Dan Shumow (Microsoft)
has been integrated and made the default.
* The test framework learned to detect unterminated here documents.
* The name-hash used for detecting paths that are different only in
cases (which matter on case insensitive filesystems) has been
optimized to take advantage of multi-threading when it makes sense.
* An earlier version of sha1dc/sha1.c that was merged to 'master'
compiled incorrectly on Windows, which has been fixed.
* "what URL do we want to update this submodule?" and "are we
interested in this submodule?" are split into two distinct
concepts, and then the way used to express the latter got extended,
paving a way to make it easier to manage a project with many
submodules and make it possible to later extend use of multiple
worktrees for a project with submodules.
* Some debugging output from "git describe" were marked for l10n,
but some weren't. Mark missing ones for l10n.
* Define a new task in .travis.yml that triggers a test session on
Windows run elsewhere.
* Conversion from uchar[20] to struct object_id continues.
* The "submodule" specific field in the ref_store structure is
replaced with a more generic "gitdir" that can later be used also
when dealing with ref_store that represents the set of refs visible
from the other worktrees.
* The string-list API used a custom reallocation strategy that was
very inefficient, instead of using the usual ALLOC_GROW() macro,
which has been fixed.
(merge 950a234cbd jh/string-list-micro-optim later to maint).
* In a 2- and 3-way merge of trees, more than one source trees often
end up sharing an identical subtree; optimize by not reading the
same tree multiple times in such a case.
(merge d12a8cf0af jh/unpack-trees-micro-optim later to maint).
* The index file has a trailing SHA-1 checksum to detect file
corruption, and historically we checked it every time the index
file is used. Omit the validation during normal use, and instead
verify only in "git fsck".
* Having a git command on the upstream side of a pipe in a test
script will hide the exit status from the command, which may cause
us to fail to notice a breakage; rewrite tests in a script to avoid
this issue.
* Travis CI learns to run coccicheck.
* "git checkout" that handles a lot of paths has been optimized by
reducing the number of unnecessary checks of paths in the
has_dir_name() function.
* The internals of the refs API around the cached refs has been
streamlined.
* Output from perf tests have been updated to align their titles.
Also contains various documentation updates and code clean-ups.
Fixes since v2.12
-----------------
Unless otherwise noted, all the fixes since v2.12 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git repack --depth=<n>" for a long time busted the specified depth
when reusing delta from existing packs. This has been corrected.
* The code to parse the command line "git grep <patterns>... <rev>
[[--] <pathspec>...]" has been cleaned up, and a handful of bugs
have been fixed (e.g. we used to check "--" if it is a rev).
* "git ls-remote" and "git archive --remote" are designed to work
without being in a directory under Git's control. However, recent
updates revealed that we randomly look into a directory called
.git/ without actually doing necessary set-up when working in a
repository. Stop doing so.
* "git show-branch" expected there were only very short branch names
in the repository and used a fixed-length buffer to hold them
without checking for overflow.
* A caller of tempfile API that uses stdio interface to write to
files may ignore errors while writing, which is detected when
tempfile is closed (with a call to ferror()). By that time, the
original errno that may have told us what went wrong is likely to
be long gone and was overwritten by an irrelevant value.
close_tempfile() now resets errno to EIO to make errno at least
predictable.
* "git remote rm X", when a branch has remote X configured as the
value of its branch.*.remote, tried to remove branch.*.remote and
branch.*.merge and failed if either is unset.
* A "gc.log" file left by a backgrounded "gc --auto" disables further
automatic gc; it has been taught to run at least once a day (by
default) by ignoring a stale "gc.log" file that is too old.
* The code to parse "git -c VAR=VAL cmd" and set configuration
variable for the duration of cmd had two small bugs, which have
been fixed.
* user.email that consists of only cruft chars should consistently
error out, but didn't.
* "git upload-pack", which is a counter-part of "git fetch", did not
report a request for a ref that was not advertised as invalid.
This is generally not a problem (because "git fetch" will stop
before making such a request), but is the right thing to do.
* A leak in a codepath to read from a packed object in (rare) cases
has been plugged.
* When a redirected http transport gets an error during the
redirected request, we ignored the error we got from the server,
and ended up giving a not-so-useful error message.
* The patch subcommand of "git add -i" was meant to have paths
selection prompt just like other subcommand, unlike "git add -p"
directly jumps to hunk selection. Recently, this was broken and
"add -i" lost the paths selection dialog, but it now has been
fixed.
* Git v2.12 was shipped with an embarrassing breakage where various
operations that verify paths given from the user stopped dying when
seeing an issue, and instead later triggering segfault.
* There is no need for Python only to give a few messages to the
standard error stream, but we somehow did.
* The code to parse "git log -L..." command line was buggy when there
are many ranges specified with -L; overrun of the allocated buffer
has been fixed.
* The command-line parsing of "git log -L" copied internal data
structures using incorrect size on ILP32 systems.
* "git diff --quiet" relies on the size field in diff_filespec to be
correctly populated, but diff_populate_filespec() helper function
made an incorrect short-cut when asked only to populate the size
field for paths that need to go through convert_to_git() (e.g. CRLF
conversion).
* A few tests were run conditionally under (rare) conditions where
they cannot be run (like running cvs tests under 'root' account).
* "git branch @" created refs/heads/@ as a branch, and in general the
code that handled @{-1} and @{upstream} was a bit too loose in
disambiguating.
* "git fetch" that requests a commit by object name, when the other
side does not allow such an request, failed without much
explanation.
* "git filter-branch --prune-empty" drops a single-parent commit that
becomes a no-op, but did not drop a root commit whose tree is empty.
* Recent versions of Git treats http alternates (used in dumb http
transport) just like HTTP redirects and requires the client to
enable following it, due to security concerns. But we forgot to
give a warning when we decide not to honor the alternates.
* "git push" had a handful of codepaths that could lead to a deadlock
when unexpected error happened, which has been fixed.
* "Dumb http" transport used to misparse a nonsense http-alternates
response, which has been fixed.
* "git add -p <pathspec>" unnecessarily expanded the pathspec to a
list of individual files that matches the pathspec by running "git
ls-files <pathspec>", before feeding it to "git diff-index" to see
which paths have changes, because historically the pathspec
language supported by "diff-index" was weaker. These days they are
equivalent and there is no reason to internally expand it. This
helps both performance and avoids command line argument limit on
some platforms.
(merge 7288e12cce jk/add-i-use-pathspecs later to maint).
* "git status --porcelain" is supposed to give a stable output, but a
few strings were left as translatable by mistake.
* "git revert -m 0 $merge_commit" complained that reverting a merge
needs to say relative to which parent the reversion needs to
happen, as if "-m 0" weren't given. The correct diagnosis is that
"-m 0" does not refer to the first parent ("-m 1" does). This has
been fixed.
* Code to read submodule.<name>.ignore config did not state the
variable name correctly when giving an error message diagnosing
misconfiguration.
* Fix for NO_PTHREADS build.
* Fix for potential segv introduced in v2.11.0 and later (also
v2.10.2) to "git log --pickaxe-regex -S".
* A few unterminated here documents in tests were fixed, which in
turn revealed incorrect expectations the tests make. These tests
have been updated.
* Fix for NO_PTHREADS option.
(merge 2225e1ea20 bw/grep-recurse-submodules later to maint).
* 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").
(merge b1ef400eec jk/no-looking-at-dotgit-outside-repo-final later to maint).
* A few commands that recently learned the "--recurse-submodule"
option misbehaved when started from a subdirectory of the
superproject.
(merge b2dfeb7c00 bw/recurse-submodules-relative-fix later to maint).
* FreeBSD implementation of getcwd(3) behaved differently when an
intermediate directory is unreadable/unsearchable depending on the
length of the buffer provided, which our strbuf_getcwd() was not
aware of. strbuf_getcwd() has been taught to cope with it better.
(merge a54e938e5b rs/freebsd-getcwd-workaround later to maint).
* A recent update to "rebase -i" stopped running hooks for the "git
commit" command during "reword" action, which has been fixed.
* Removing an entry from a notes tree and then looking another note
entry from the resulting tree using the internal notes API
functions did not work as expected. No in-tree users of the API
has such access pattern, but it still is worth fixing.
* "git receive-pack" could have been forced to die by attempting
allocate an unreasonably large amount of memory with a crafted push
certificate; this has been fixed.
(merge f2214dede9 bc/push-cert-receive-fix later to maint).
* Update error handling for codepath that deals with corrupt loose
objects.
(merge 51054177b3 jk/loose-object-info-report-error later to maint).
* "git diff --submodule=diff" learned to work better in a project
with a submodule that in turn has its own submodules.
(merge 17b254cda6 sb/show-diff-for-submodule-in-diff-fix later to maint).
* Update the build dependency so that an update to /usr/bin/perl
etc. result in recomputation of perl.mak file.
(merge c59c4939c2 ab/regen-perl-mak-with-different-perl later to maint).
* "git push --recurse-submodules --push-option=<string>" learned to
propagate the push option recursively down to pushes in submodules.
* If a patch e-mail had its first paragraph after an in-body header
indented (even after a blank line after the in-body header line),
the indented line was mistook as a continuation of the in-body
header. This has been fixed.
(merge fd1062e52e lt/mailinfo-in-body-header-continuation later to maint).
* Clean up fallouts from recent tightening of the set-up sequence,
where Git barfs when repository information is accessed without
first ensuring that it was started in a repository.
(merge bccb22cbb1 jk/no-looking-at-dotgit-outside-repo later to maint).
* "git p4" used "name-rev HEAD" when it wants to learn what branch is
checked out; it should use "symbolic-ref HEAD".
(merge eff451101d ld/p4-current-branch-fix later to maint).
* "http.proxy" set to an empty string is used to disable the usage of
proxy. We broke this early last year.
(merge ae51d91105 sr/http-proxy-configuration-fix later to maint).
* $GIT_DIR may in some cases be normalized with all symlinks resolved
while "gitdir" path expansion in the pattern does not receive the
same treatment, leading to incorrect mismatch. This has been fixed.
* "git submodule" script does not work well with strange pathnames.
Protect it from a path with slashes in them, at least.
* "git fetch-pack" was not prepared to accept ERR packet that the
upload-pack can send with a human-readable error message. It
showed the packet contents with ERR prefix, so there was no data
loss, but it was redundant to say "ERR" in an error message.
(merge 8e2c7bef03 jt/fetch-pack-error-reporting later to maint).
* "ls-files --recurse-submodules" did not quite work well in a
project with nested submodules.
* gethostname(2) may not NUL terminate the buffer if hostname does
not fit; unfortunately there is no easy way to see if our buffer
was too small, but at least this will make sure we will not end up
using garbage past the end of the buffer.
(merge 5781a9a270 dt/xgethostname-nul-termination later to maint).
* A recent update broke "git add -p ../foo" from a subdirectory.
* While handy, "git_path()" is a dangerous function to use as a
callsite that uses it safely one day can be broken by changes
to other code that calls it. Reduction of its use continues.
(merge 16d2676c9e jk/war-on-git-path later to maint).
* The split-index code configuration code used an unsafe git_path()
function without copying its result out.
* Many stale HTTP(s) links have been updated in our documentation.
(merge 613416f0be jk/update-links-in-docs later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge df2a6e38b7 jk/pager-in-use later to maint).
(merge 75ec4a6cb0 ab/branch-list-doc later to maint).
(merge 3e5b36c637 sg/skip-prefix-in-prettify-refname later to maint).
(merge 2c5e2865cc jk/fast-import-cleanup later to maint).
(merge 4473060bc2 ab/test-readme-updates later to maint).
(merge 48a96972fd ab/doc-submitting later to maint).
(merge f5c2bc2b96 jk/make-coccicheck-detect-errors later to maint).
(merge c105f563d1 cc/untracked later to maint).
(merge 8668976b53 jc/unused-symbols later to maint).
(merge fba275dc93 jc/bs-t-is-not-a-tab-for-sed later to maint).
(merge be6ed145de mm/ls-files-s-doc later to maint).
(merge 60b091c679 qp/bisect-docfix later to maint).
(merge 47242cd103 ah/diff-files-ours-theirs-doc later to maint).
(merge 35ad44cbd8 sb/submodule-rm-absorb later to maint).
(merge 0301f1fd92 va/i18n-perl-scripts later to maint).
(merge 733e064d98 vn/revision-shorthand-for-side-branch-log later to maint).
(merge 85999743e7 tb/doc-eol-normalization later to maint).
(merge 0747fb49fd jk/loose-object-fsck later to maint).
(merge d8f4481c4f jk/quarantine-received-objects later to maint).
(merge 7ba1ceef95 xy/format-patch-base later to maint).
(merge fa1912c89a rs/misc-cppcheck-fixes later to maint).
(merge f17d642d3b ab/push-cas-doc-n-test later to maint).
(merge 61e282425a ss/gitmodules-ignore-doc later to maint).
(merge 8d3047cd5b ss/submodule-shallow-doc later to maint).
(merge 1f9e18b772 jk/prio-queue-avoid-swap-with-self later to maint).
(merge 627fde1025 jk/submodule-init-segv-fix later to maint).
(merge d395745d81 rg/doc-pull-typofix later to maint).
(merge 01e60a9a22 rg/doc-submittingpatches-wordfix later to maint).
(merge 501d3cd7b8 sr/hooks-cwd-doc later to maint).
----------------------------------------------------------------
Changes since v2.12.0 are as follows:
Alex Henrie (1):
log: if --decorate is not given, default to --decorate=auto
Allan Xavier (1):
line-log.c: prevent crash during union of too many ranges
Andreas Heiduk (2):
Documentation: improve description for core.quotePath
diff-files: document --ours etc.
Brandon Williams (37):
attr: pass struct attr_check to collect_some_attrs
attr: use hashmap for attribute dictionary
attr: eliminate global check_all_attr array
attr: remove maybe-real, maybe-macro from git_attr
attr: tighten const correctness with git_attr and match_attr
attr: store attribute stack in attr_check structure
attr: push the bare repo check into read_attr()
attr: reformat git_attr_set_direction() function
pathspec: allow querying for attributes
pathspec: allow escaped query values
submodule--helper: add is-active subcommand
submodule status: use submodule--helper is-active
submodule sync: skip work for inactive submodules
submodule sync: use submodule--helper is-active
submodule--helper clone: check for configured submodules using helper
grep: fix help text typo
setup: allow for prefix to be passed to git commands
grep: fix bug when recursing with relative pathspec
ls-files: fix typo in variable name
ls-files: fix bug when recursing with relative pathspec
grep: set default output method
submodule: decouple url and submodule interest
submodule init: initialize active submodules
clone: teach --recurse-submodules to optionally take a pathspec
submodule--helper init: set submodule.<name>.active
submodule add: respect submodule.active and submodule.<name>.active
grep: fix builds with with no thread support
send-pack: send push options correctly in stateless-rpc case
remote-curl: allow push options
sequencer: fix missing newline
push: unmark a local variable as static
push: propagate push-options with --recurse-submodules
remote: expose parse_push_refspec function
submodule--helper: add push-check subcommand
push: propagate remote and refspec with --recurse-submodules
pathspec: fix segfault in clear_pathspec
submodule: prevent backslash expantion in submodule names
Christian Couder (25):
config: mark an error message up for translation
t1700: change here document style
config: add git_config_get_split_index()
split-index: add {add,remove}_split_index() functions
read-cache: add and then use tweak_split_index()
update-index: warn in case of split-index incoherency
t1700: add tests for core.splitIndex
Documentation/config: add information for core.splitIndex
Documentation/git-update-index: talk about core.splitIndex config var
config: add git_config_get_max_percent_split_change()
read-cache: regenerate shared index if necessary
t1700: add tests for splitIndex.maxPercentChange
Documentation/config: add splitIndex.maxPercentChange
sha1_file: make check_and_freshen_file() non static
read-cache: touch shared index files when used
config: add git_config_get_expiry() from gc.c
read-cache: unlink old sharedindex files
t1700: test shared index file expiration
read-cache: refactor read_index_from()
read-cache: use freshen_shared_index() in read_index_from()
Documentation/config: add splitIndex.sharedIndexExpire
Documentation/git-update-index: explain splitIndex.*
update-index: fix xgetcwd() related memory leak
p0004: make perf test executable
read-cache: avoid using git_path() in freshen_shared_index()
Cornelius Weig (1):
tag: generate useful reflog message
David Aguilar (3):
t7800: remove whitespace before redirect
t7800: cleanup cruft left behind by tests
difftool: handle modified symlinks in dir-diff mode
David Turner (3):
gc: ignore old gc.log files
http.postbuffer: allow full range of ssize_t values
xgethostname: handle long hostnames
Devin J. Pohly (4):
t7003: ensure --prune-empty can prune root commit
t7003: ensure --prune-empty removes entire branch when applicable
filter-branch: fix --prune-empty on parentless commits
p7000: add test for filter-branch with --prune-empty
Devin Lehmacher (3):
path.c: add xdg_cache_home
credential-cache: use XDG_CACHE_HOME for socket
credential-cache: add tests for XDG functionality
Eric Wong (3):
README: create HTTP/HTTPS links from URLs in Markdown
http: inform about alternates-as-redirects behavior
http: release strbuf on disabled alternates
Giuseppe Bilotta (4):
builtin/am: honor --signoff also when --rebasing
builtin/am: fold am_signoff() into am_append_signoff()
doc: trivial typo in git-format-patch.txt
rebase: pass --[no-]signoff option to git am
Hiroshi Shirosaki (1):
git svn: fix authentication with 'branch'
Jacob Keller (7):
doc: add documentation for OPT_STRING_LIST
name-rev: extend --refs to accept multiple patterns
name-rev: add support to exclude refs by pattern match
describe: teach --match to accept multiple patterns
describe: teach describe negative pattern matches
ls-files: fix recurse-submodules with nested submodules
ls-files: fix path used when recursing into submodules
Jean-Noel Avila (1):
i18n: remove i18n from tag reflog message
Jeff Hostetler (18):
mingw: use OpenSSL's SHA-1 routines
preload-index: avoid lstat for skip-worktree items
name-hash: specify initial size for istate.dir_hash table
hashmap: allow memihash computation to be continued
hashmap: add disallow_rehash setting
hashmap: document memihash_cont, hashmap_disallow_rehash api
name-hash: perf improvement for lazy_init_name_hash
name-hash: add test-lazy-init-name-hash
name-hash: add perf test for lazy_init_name_hash
test-online-cpus: helper to return cpu count
read-cache: force_verify_index_checksum
string-list: use ALLOC_GROW macro when reallocing string_list
read-cache: add strcmp_offset function
unpack-trees: avoid duplicate ODB lookups during checkout
p0006-read-tree-checkout: perf test to time read-tree
read-cache: speed up add_index_entry during checkout
read-cache: speed up has_dir_name (part 1)
read-cache: speed up has_dir_name (part 2)
Jeff King (131):
setup_git_env: avoid blind fall-back to ".git"
pack-objects: enforce --depth limit in reused deltas
pack-objects: convert recursion to iteration in break_delta_chain()
for_each_alternate_ref: handle failure from real_pathdup()
for_each_alternate_ref: stop trimming trailing slashes
for_each_alternate_ref: use strbuf for path allocation
for_each_alternate_ref: pass name/oid instead of ref struct
for_each_alternate_ref: replace transport code with for-each-ref
fetch-pack: cache results of for_each_alternate_ref
add oidset API
receive-pack: use oidset to de-duplicate .have lines
receive-pack: fix misleading namespace/.have comment
receive-pack: treat namespace .have lines like alternates
receive-pack: avoid duplicates between our refs and alternates
grep: move thread initialization a little lower
grep: re-order rev-parsing loop
grep: fix "--" rev/pathspec disambiguation
grep: avoid resolving revision names in --no-index case
grep: do not diagnose misspelt revs with --no-index
show-branch: drop head_len variable
show-branch: store resolved head in heap buffer
remote: avoid reading $GIT_DIR config in non-repo
grep: treat revs the same for --untracked as for --no-index
show-branch: use skip_prefix to drop magic numbers
tempfile: set errno to a known value before calling ferror()
http: restrict auth methods to what the server advertises
ident: mark error messages for translation
ident: handle NULL email when complaining of empty name
ident: reject all-crud ident name
ident: do not ignore empty config name/email
parse_config_key: use skip_prefix instead of starts_with
parse_config_key: allow matching single-level config
parse_hide_refs_config: tell parse_config_key we don't want a subsection
http: add an "auto" mode for http.emptyauth
t6300: avoid creating refs/heads/HEAD
add--interactive: fix missing file prompt for patch mode with "-i"
interpret_branch_name(): handle auto-namelen for @{-1}
interpret_branch_name: move docstring to header file
strbuf_branchname: drop return value
strbuf_branchname: add docstring
interpret_branch_name: allow callers to restrict expansions
t3204: test git-branch @-expansion corner cases
branch: restrict @-expansions when deleting
strbuf_check_ref_format(): expand only local branches
checkout: restrict @-expansions when finding branch
t/perf: use $MODERN_GIT for all repo-copying steps
t/perf: add fallback for pre-bin-wrappers versions of git
ewah: fix eword_t/uint64_t confusion
receive-pack: fix deadlock when we cannot create tmpdir
send-pack: extract parsing of "unpack" response
send-pack: use skip_prefix for parsing unpack status
send-pack: improve unpack-status error messages
send-pack: read "unpack" status even on pack-objects failure
send-pack: report signal death of pack-objects
ref-filter: move ref_cbdata definition into ref-filter.c
ref-filter: use contains_result enum consistently
ref-filter: die on parse_commit errors
ref-filter: use separate cache for contains_tag_algo
t: add an interoperability test harness
t/interop: add test of old clients against modern git-daemon
http-walker: fix buffer underflow processing remote alternates
add--interactive: do not expand pathspecs with ls-files
cherry-pick: detect bogus arguments to --mainline
rev-parse: use skip_prefix when parsing options
rev-parse: add helper for parsing "--foo/--foo="
rev-parse: simplify parsing of ref options
move odb_* declarations out of git-compat-util.h
sha1_file.c: make pack-name helper globally accessible
odb_pack_keep(): stop generating keepfile name
replace snprintf with odb_pack_name()
index-pack: make pointer-alias fallbacks safer
sha1dc: add collision-detecting sha1 implementation
sha1dc: adjust header includes for git
sha1dc: disable safe_hash feature
sequencer: drop "warning:" when stopping for edit
Makefile: add DC_SHA1 knob
t0013: add a basic sha1 collision detection test
run-command: fix segfault when cleaning forked async process
hash-object: fix buffer reuse with --path in a subdirectory
prefix_filename: move docstring to header file
prefix_filename: drop length parameter
prefix_filename: return newly allocated string
prefix_filename: simplify windows #ifdef
bundle: use prefix_filename with bundle path
pager_in_use: use git_env_bool()
fast-import: use xsnprintf for writing sha1s
fast-import: use xsnprintf for formatting headers
encode_in_pack_object_header: respect output buffer length
pack.h: define largest possible encoded object size
do not check odb_mkstemp return value for errors
odb_mkstemp: write filename into strbuf
odb_mkstemp: use git_path_buf
Makefile: detect errors in running spatch
difftool: avoid strcpy
diff: avoid fixed-size buffer for patch-ids
tag: use strbuf to format tag header
fetch: use heap buffer to format reflog
avoid using fixed PATH_MAX buffers for refs
avoid using mksnpath for refs
create_branch: move msg setup closer to point of use
create_branch: use xstrfmt for reflog message
name-rev: replace static buffer with strbuf
receive-pack: print --pack-header directly into argv array
replace unchecked snprintf calls with heap buffers
combine-diff: replace malloc/snprintf with xstrfmt
convert unchecked snprintf into xsnprintf
transport-helper: replace checked snprintf with xsnprintf
gc: replace local buffer with git_path
daemon: use an argv_array to exec children
sha1_loose_object_info: return error for corrupted objects
index-pack: detect local corruption in collision check
connect.c: handle errors from split_cmdline
receive-pack: drop tmp_objdir_env from run_update_hook
receive-pack: document user-visible quarantine effects
refs: reject ref updates while GIT_QUARANTINE_PATH is set
bisect: add git_path_bisect_terms helper
branch: add edit_description() helper
use git_path_* helper functions
replace xstrdup(git_path(...)) with git_pathdup(...)
replace strbuf_addstr(git_path()) with git_path_buf()
am: drop "dir" parameter from am_state_init
connect.c: fix leak in handle_ssh_variant
doc: use https links to avoid http redirect
doc: replace or.cz gitwiki link with git.wiki.kernel.org
gitcore-tutorial: update broken link
docs/archimport: quote sourcecontrol.net reference
docs/bisect-lk2009: update nist report link
docs/bisect-lk2009: update java code conventions link
completion: optionally disable checkout DWIM
submodule_init: die cleanly on submodules without url defined
prio_queue_reverse: don't swap elements with themselves
Johan Hovold (1):
send-email: only allow one address per body tag
Johannes Schindelin (23):
git_connect(): factor out SSH variant handling
rebase--helper: add a builtin helper for interactive rebases
rebase -i: use the rebase--helper builtin
rev-parse: fix several options when running in a subdirectory
t7006: replace dubious test
Travis: also test on 32-bit Linux
setup_git_directory(): use is_dir_sep() helper
t1501: demonstrate NULL pointer access with invalid GIT_WORK_TREE
real_pathdup(): fix callsites that wanted it to die on error
setup: prepare setup_discovered_git_dir() for the root directory
setup_git_directory_1(): avoid changing global state
setup: introduce the discover_git_directory() function
setup: make read_early_config() reusable
read_early_config(): avoid .git/config hack when unneeded
read_early_config(): really discover .git/
t1309: test read_early_config()
setup_git_directory_gently_1(): avoid die()ing
t1309: document cases where we would want early config not to die()
setup.c: mention unresolved problems
t7504: document regression: reword no longer calls commit-msg
sequencer: make commit options more extensible
sequencer: allow the commit-msg hooks to run during a `reword`
difftool: fix use-after-free
Jonathan Nieder (2):
remote helpers: avoid blind fall-back to ".git" when setting GIT_DIR
has_sha1_file: don't bother if we are not in a repository
Jonathan Tan (5):
grep: do not unnecessarily query repo for "--"
upload-pack: report "not our ref" to client
http: attempt updating base URL only if no error
t/perf: export variable used in other blocks
fetch-pack: show clearer error message upon ERR
Junio C Hamano (56):
merge: drop 'git merge <message> HEAD <commit>' syntax
connect: rename tortoiseplink and putty variables
commit.c: use strchrnul() to scan for one line
attr.c: use strchrnul() to scan for one line
attr.c: update a stale comment on "struct match_attr"
attr.c: explain the lack of attr-name syntax check in parse_attr()
attr.c: complete a sentence in a comment
attr.c: mark where #if DEBUG ends more clearly
attr.c: simplify macroexpand_one()
attr.c: tighten constness around "git_attr" structure
attr.c: plug small leak in parse_attr_line()
attr.c: add push_stack() helper
attr.c: outline the future plans by heavily commenting
attr: rename function and struct related to checking attributes
attr: (re)introduce git_check_attr() and struct attr_check
attr: convert git_all_attrs() to use "struct attr_check"
attr: convert git_check_attrs() callers to use the new API
attr: retire git_check_attrs() API
attr: change validity check for attribute names to use positive logic
ref-filter: resurrect "strip" as a synonym to "lstrip"
connect.c: stop conflating ssh command names and overrides
config: move a few helper functions up
config: use git_config_parse_key() in git_config_parse_parameter()
First batch after 2.12
diff: do not short-cut CHECK_SIZE_ONLY check in diff_populate_filespec()
branch: honor --abbrev/--no-abbrev in --list mode
Second batch after 2.12
Third batch after 2.12
Fourth batch after 2.12
Preparing for 2.12.1
Makefile: make DC_SHA1 the default
Fifth batch for 2.13
Git 2.12.1
Prepare for 2.12.2
Sixth batch for 2.13
t5615: fix a here-doc syntax error
t7406: correct test case for submodule-update initial population
tests: lint for run-away here-doc
branch doc: update description for `--list`
Git 2.12.2
Seventh batch for 2.13
sha1dc: avoid CPP macro collisions
Eighth batch for 2.13
Prepare for 2.12.3
Ninth batch for 2.13
Tenth batch for 2.13
remote.[ch]: parse_push_cas_option() can be static
contrib/git-resurrect.sh: do not write \t for HT in sed scripts
Eleventh batch for 2.13
Twelfth batch for 2.13
replace: plug a memory leak
Git 2.13-rc0
Getting ready for -rc1
Git 2.13-rc1
Merging a handful of topics before -rc2
Git 2.13-rc2
Karthik Nayak (20):
ref-filter: implement %(if), %(then), and %(else) atoms
ref-filter: include reference to 'used_atom' within 'atom_value'
ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
ref-filter: modify "%(objectname:short)" to take length
ref-filter: move get_head_description() from branch.c
ref-filter: introduce format_ref_array_item()
ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
ref-filter: add support for %(upstream:track,nobracket)
ref-filter: make "%(symref)" atom work with the ':short' modifier
ref-filter: introduce refname_atom_parser_internal()
ref-filter: introduce refname_atom_parser()
ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
ref-filter: rename the 'strip' option to 'lstrip'
ref-filter: Do not abruptly die when using the 'lstrip=<N>' option
ref-filter: modify the 'lstrip=<N>' option to work with negative '<N>'
ref-filter: add an 'rstrip=<N>' option to atoms which deal with refnames
ref-filter: allow porcelain to translate messages in the output
branch, tag: use porcelain output
branch: use ref-filter printing APIs
branch: implement '--format' option
Kevin Willford (2):
name-hash: fix buffer overrun
t3008: skip lazy-init test on a single-core box
Kyle Meyer (12):
delete_ref: accept a reflog message argument
update-ref: pass reflog message to delete_ref()
rename_ref: replace empty message in HEAD's log
branch: record creation of renamed branch in HEAD's log
t1400: rename test descriptions to be unique
t1400: set core.logAllRefUpdates in "logged by touch" tests
t1400: use test_path_is_* helpers
t1400: remove a set of unused output files
t1400: use test_when_finished for cleanup
doc/config: grammar fixes for core.{editor,commentChar}
doc/revisions: remove brackets from rev^-n shorthand
t1400: use consistent style for test_expect_success calls
Lars Schneider (4):
travis-ci: build and test Git on Windows
travis-ci: add static analysis build job to run coccicheck
travis-ci: printf $STATUS as string
travis-ci: set DEVELOPER knob for Linux32 build
Linus Torvalds (3):
pathspec magic: add '^' as alias for '!'
pathspec: don't error out on all-exclusionary pathspec patterns
mailinfo: fix in-body header continuations
Luke Diamand (3):
git-p4: add failing test for name-rev rather than symbolic-ref
git-p4: add read_pipe_text() internal function
git-p4: don't use name-rev to get current branch
Matt McCutchen (4):
merge-recursive: make "CONFLICT (rename/delete)" message show both paths
fetch-pack: move code to report unmatched refs to a function
fetch_refs_via_pack: call report_unmatched_refs
fetch-pack: add specific error for fetching an unadvertised object
Maxim Moseychuk (2):
stop_progress_msg: convert xsnprintf to xstrfmt
bisect_next_all: convert xsnprintf to xstrfmt
Michael Haggerty (52):
files_rename_ref(): tidy up whitespace
refname_is_safe(): correct docstring
t5505: use "for-each-ref" to test for the non-existence of references
safe_create_leading_directories_const(): preserve errno
safe_create_leading_directories(): set errno on SCLD_EXISTS
raceproof_create_file(): new function
lock_ref_sha1_basic(): inline constant
lock_ref_sha1_basic(): use raceproof_create_file()
rename_tmp_log(): use raceproof_create_file()
rename_tmp_log(): improve error reporting
log_ref_write(): inline function
log_ref_setup(): separate code for create vs non-create
log_ref_setup(): improve robustness against races
log_ref_setup(): pass the open file descriptor back to the caller
log_ref_write_1(): don't depend on logfile argument
log_ref_setup(): manage the name of the reflog file internally
log_ref_write_1(): inline function
delete_ref_loose(): derive loose reference path from lock
delete_ref_loose(): inline function
try_remove_empty_parents(): rename parameter "name" -> "refname"
try_remove_empty_parents(): don't trash argument contents
try_remove_empty_parents(): teach to remove parents of reflogs, too
files_transaction_commit(): clean up empty directories
refs: reorder some function definitions
refs: make some ref_store lookup functions private
refs: remove some unnecessary handling of submodule == ""
register_ref_store(): new function
refs: store submodule ref stores in a hashmap
refs: push the submodule attribute down
base_ref_store_init(): remove submodule argument
files_ref_store::submodule: use NULL for the main repository
read_loose_refs(): read refs using resolve_ref_recursively()
get_ref_dir(): don't call read_loose_refs() for "refs/bisect"
refs_read_raw_ref(): new function
refs_ref_iterator_begin(): new function
refs_verify_refname_available(): implement once for all backends
refs_verify_refname_available(): use function in more places
ref-cache: rename `add_ref()` to `add_ref_entry()`
ref-cache: rename `find_ref()` to `find_ref_entry()`
ref-cache: rename `remove_entry()` to `remove_entry_from_dir()`
refs: split `ref_cache` code into separate files
ref-cache: introduce a new type, ref_cache
refs: record the ref_store in ref_cache, not ref_dir
ref-cache: use a callback function to fill the cache
refs: handle "refs/bisect/" in `loose_fill_ref_dir()`
do_for_each_entry_in_dir(): eliminate `offset` argument
get_loose_ref_dir(): function renamed from get_loose_refs()
get_loose_ref_cache(): new function
cache_ref_iterator_begin(): make function smarter
commit_packed_refs(): use reference iteration
files_pack_refs(): use reference iteration
do_for_each_entry_in_dir(): delete function
Michael J Gruber (5):
git-status: make porcelain more robust
git-prompt: add a describe style for any tags
mailmap: use Michael J Gruber's new address
describe: localize debug output fully
l10n: de: translate describe debug terms
Michael Rappazzo (1):
rev-parse tests: add tests executed from a subdirectory
Mike Hommey (1):
notes: do not break note_tree structure in note_tree_consolidate()
Mostyn Bramley-Moore (1):
Documentation: document elements in "ls-files -s" output in order
Nguyễn Thái Ngọc Duy (40):
attr: support quoting pathname patterns in C style
clean: use warning_errno() when appropriate
config.txt: clarify multiple key values in include.path
config.txt: reflow the second include.path paragraph
config: add conditional include
refs.h: add forward declaration for structs used in this file
git-commit.txt: list post-rewrite in HOOKS section
files-backend: make files_log_ref_write() static
files-backend.c: delete dead code in files_ref_iterator_begin()
files-backend: delete dead code in files_init_db()
files-backend: add and use files_packed_refs_path()
files-backend: make sure files_rename_ref() always reach the end
files-backend: convert git_path() to strbuf_git_path()
files-backend: move "logs/" out of TMP_RENAMED_LOG
files-backend: add and use files_reflog_path()
files-backend: add and use files_ref_path()
files-backend: remove the use of git_path()
refs.c: introduce get_main_ref_store()
refs: rename lookup_ref_store() to lookup_submodule_ref_store()
refs.c: flatten get_ref_store() a bit
refs.c: kill register_ref_store(), add register_submodule_ref_store()
refs.c: make get_main_ref_store() public and use it
path.c: move some code out of strbuf_git_path_submodule()
refs: move submodule code out of files-backend.c
files-backend: replace submodule_allowed check in files_downcast()
refs: rename get_ref_store() to get_submodule_ref_store() and make it public
refs: add new ref-store api
refs: new transaction related ref-store api
files-backend: avoid ref api targeting main ref store
refs: delete pack_refs() in favor of refs_pack_refs()
t/helper: add test-ref-store to test ref-store functions
t1405: some basic tests on main ref store
t1406: new tests for submodule ref store
refs.h: add a note about sorting order of for_each_ref_*
path.c: and an option to call real_path() in expand_user_path()
config: resolve symlinks in conditional include's patterns
config: prepare to pass more info in git_config_with_options()
config: handle conditional include when $GIT_DIR is not set up
config: correct file reading order in read_early_config()
worktree add: add --lock option
Patrick Steinhardt (8):
mailmap: add Patrick Steinhardt's work address
urlmatch: enable normalization of URLs with globs
urlmatch: split host and port fields in `struct url_info`
urlmatch: include host in urlmatch ranking
urlmatch: allow globbing for the URL host part
docs/diffcore: fix grammar in diffcore-rename header
docs/diffcore: unquote "Complete Rewrites" in headers
pathspec: honor `PATHSPEC_PREFIX_ORIGIN` with empty prefix
Peter Krefting (1):
i18n: read-cache: typofix
Prathamesh Chavan (1):
t2027: avoid using pipes
Quentin Pradet (1):
git-bisect.txt: add missing word
Ralf Thielow (2):
submodule.c: add missing ' in error messages
git-add--interactive.perl: add missing dot in a message
Ramsay Jones (3):
wrapper.c: remove unused git_mkstemp() function
wrapper.c: remove unused gitmkstemps() function
name-hash: add test-lazy-init-name-hash to .gitignore
René Genz (3):
doc: update SubmittingPatches
fix minor typos
doc: git-pull.txt use US spelling, fix minor typo
René Scharfe (18):
sha1_file: release fallback base's memory in unpack_entry()
cocci: use ALLOC_ARRAY
strbuf: add strbuf_add_real_path()
commit: be more precise when searching for headers
commit: don't check for space twice when looking for header
log-tree: factor out fmt_output_email_subject()
pretty: use fmt_output_email_subject()
blame: move blame_entry duplication to add_blame_entry()
receive-pack: simplify run_update_post_hook()
http-push: don't check return value of lookup_unknown_object()
revision: remove declaration of path_name()
shortlog: don't set after_subject to an empty string
strbuf: support long paths w/o read rights in strbuf_getcwd() on FreeBSD
test-read-cache: setup git dir
am: close stream on error, but not stdin
files_for_each_reflog_ent_reverse(): close stream and free strbuf on error
server-info: avoid calling fclose(3) twice in update_info_file()
use HOST_NAME_MAX to size buffers for gethostname(2)
Ross Lagerwall (1):
remote: ignore failure to remove missing branch.<name>.merge
SZEDER Gábor (44):
completion: improve __git_refs()'s in-code documentation
completion tests: don't add test cruft to the test repository
completion tests: make the $cur variable local to the test helper functions
completion tests: consolidate getting path of current working directory
completion tests: check __gitdir()'s output in the error cases
completion tests: add tests for the __git_refs() helper function
completion: ensure that the repository path given on the command line exists
completion: fix most spots not respecting 'git --git-dir=<path>'
completion: respect 'git --git-dir=<path>' when listing remote refs
completion: list refs from remote when remote's name matches a directory
completion: don't list 'HEAD' when trying refs completion outside of a repo
completion: list short refs from a remote given as a URL
completion: don't offer commands when 'git --opt' needs an argument
completion: fix completion after 'git -C <path>'
rev-parse: add '--absolute-git-dir' option
completion: respect 'git -C <path>'
completion: don't use __gitdir() for git commands
completion: consolidate silencing errors from git commands
completion: don't guard git executions with __gitdir()
completion: extract repository discovery from __gitdir()
completion: cache the path to the repository
completion: restore removed line continuating backslash
completion: remove redundant __gitcomp_nl() options from _git_commit()
tests: create an interactive gdb session with the 'debug' helper
tests: make the 'test_pause' helper work in non-verbose mode
pickaxe: fix segfault with '-S<...> --pickaxe-regex'
completion: wrap __git_refs() for better option parsing
completion: support completing full refs after '--option=refs/<TAB>'
completion: support completing fully qualified non-fast-forward refspecs
completion: support excluding full refs
completion: don't disambiguate tags and branches
completion: don't disambiguate short refs
completion: let 'for-each-ref' and 'ls-remote' filter matching refs
completion: let 'for-each-ref' strip the remote name from remote branches
completion: let 'for-each-ref' filter remote branches for 'checkout' DWIMery
completion: let 'for-each-ref' sort remote branches for 'checkout' DWIMery
completion: fill COMPREPLY directly when completing refs
completion: fill COMPREPLY directly when completing fetch refspecs
completion: speed up branch and tag completion
refs.c: use skip_prefix() in prettify_refname()
completion: put matching ctags symbol names directly into COMPREPLY
completion: extract completing ctags symbol names into helper function
completion: offer ctags symbol names for 'git log -S', '-G' and '-L:'
t6500: wait for detached auto gc at the end of the test script
Santiago Torres (1):
t7004, t7030: fix here-doc syntax errors
Sebastian Schuberth (5):
contrib: git-remote-{bzr,hg} placeholders don't need Python
sha1_file: remove an used fd variable
submodule: remove a superfluous second check for the "new" variable
gitmodules: clarify what history depth a shallow clone has
gitmodules: clarify the ignore option values
Segev Finer (2):
connect: handle putty/plink also in GIT_SSH_COMMAND
connect: Add the envvar GIT_SSH_VARIANT and ssh.variant config
Sergey Ryazanov (2):
http: honor empty http.proxy option to bypass proxy
http: fix the silent ignoring of proxy misconfiguraion
Simon Ruderich (1):
githooks.txt: clarify push hooks are always executed in $GIT_DIR
Stefan Beller (36):
Documentation: fix a typo
refs: parse_hide_refs_config to use parse_config_key
submodule init: warn about falling back to a local path
rev-parse: add --show-superproject-working-tree
submodule-config: correct error reporting for invalid ignore value
connect_work_tree_and_git_dir: safely create leading directories
lib-submodule-update.sh: reorder create_lib_submodule_repo
lib-submodule-update.sh: do not use ./. as submodule remote
lib-submodule-update: teach test_submodule_content the -C <dir> flag
lib-submodule-update.sh: replace sha1 by hash
lib-submodule-update.sh: define tests for recursing into submodules
make is_submodule_populated gently
update submodules: add submodule config parsing
update submodules: add a config option to determine if submodules are updated
submodules: introduce check to see whether to touch a submodule
update submodules: move up prepare_submodule_repo_env
submodule.c: get_super_prefix_or_empty
update submodules: add submodule_move_head
unpack-trees: pass old oid to verify_clean_submodule
unpack-trees: check if we can perform the operation for submodules
entry.c: create submodules when interesting
builtin/checkout: add --recurse-submodules switch
builtin/read-tree: add --recurse-submodules switch
wt-status: simplify by using for_each_string_list_item
t3600: rename test to describe its functionality
builtin/describe: introduce --broken flag
submodule.c: use argv_array in is_submodule_modified
submodule.c: factor out early loop termination in is_submodule_modified
submodule.c: convert is_submodule_modified to use strbuf_getwholeline
submodule.c: port is_submodule_modified to use porcelain 2
submodule.c: stricter checking for submodules in is_submodule_modified
short status: improve reporting for submodule changes
unpack-trees.c: align submodule error message to the other error messages
submodule.c: correctly handle nested submodules in is_submodule_modified
diff: submodule inline diff to initialize env array.
submodule--helper: fix typo in is_active error message
Stephen Hicks (1):
rebase -i: reread the todo list if `exec` touched it
Thomas Gummerer (9):
stash: introduce push verb
stash: add test for the create command line arguments
stash: refactor stash_create
stash: teach 'push' (and 'create_stash') to honor pathspec
stash: use stash_push for no verb form
stash: allow pathspecs in the no verb form
stash: don't show internal implementation details
stash: pass the pathspec argument to git reset
stash: keep untracked files intact in stash -k
Torsten Bögershausen (1):
gitattributes.txt: document how to normalize the line endings
Valery Tolstov (1):
submodule--helper.c: remove duplicate code
Vegard Nossum (2):
xdiff -W: relax end-of-file function detection
line-log: use COPY_ARRAY to fix mis-sized memcpy
brian m. carlson (41):
hex: introduce parse_oid_hex
builtin/commit: convert to struct object_id
builtin/diff-tree: convert to struct object_id
builtin/describe: convert to struct object_id
builtin/fast-export: convert to struct object_id
builtin/fmt-merge-message: convert to struct object_id
builtin/grep: convert to struct object_id
builtin/branch: convert to struct object_id
builtin/clone: convert to struct object_id
builtin/merge: convert to struct object_id
Convert remaining callers of resolve_refdup to object_id
builtin/replace: convert to struct object_id
reflog-walk: convert struct reflog_info to struct object_id
refs: convert each_reflog_ent_fn to struct object_id
refs: simplify parsing of reflog entries
sha1_file: introduce an nth_packed_object_oid function
Convert object iteration callbacks to struct object_id
builtin/merge-base: convert to struct object_id
wt-status: convert to struct object_id
hash.h: move SHA-1 implementation selection into a header file
Define new hash-size constants for allocating memory
Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ
Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ
builtin/diff: convert to struct object_id
builtin/pull: convert portions to struct object_id
builtin/receive-pack: fix incorrect pointer arithmetic
builtin/receive-pack: convert portions to struct object_id
fsck: convert init_skiplist to struct object_id
parse-options-cb: convert sha1_array_append caller to struct object_id
test-sha1-array: convert most code to struct object_id
sha1_name: convert struct disambiguate_state to object_id
sha1_name: convert disambiguate_hint_fn to take object_id
submodule: convert check_for_new_submodule_commits to object_id
builtin/pull: convert to struct object_id
sha1-array: convert internal storage for struct sha1_array to object_id
Make sha1_array_append take a struct object_id *
Convert remaining callers of sha1_array_lookup to object_id
Convert sha1_array_lookup to take struct object_id
Convert sha1_array_for_each_unique and for_each_abbrev to object_id
Rename sha1_array to oid_array
Documentation: update and rename api-sha1-array.txt
Ævar Arnfjörð Bjarmason (33):
cvs tests: skip tests that call "cvs commit" when running as root
gitweb tests: change confusing "skip_all" phrasing
gitweb tests: skip tests when we don't have Time::HiRes
doc: change erroneous --[no]-whatever into --[no-]whatever
push: mention "push.default=tracking" in the documentation
tag doc: move the description of --[no-]merged earlier
tag doc: split up the --[no-]merged documentation
tag doc: reword --[no-]merged to talk about commits, not tips
ref-filter: make combining --merged & --no-merged an error
doc/SubmittingPatches: clarify the casing convention for "area: change..."
t/README: link to metacpan.org, not search.cpan.org
t/README: change "Inside <X> part" to "Inside the <X> part"
ref-filter: add test for --contains on a non-commit
tag: remove a TODO item from the test suite
tag tests: fix a typo in a test description
for-each-ref: partly change <object> to <commit> in help
branch doc: change `git branch <pattern>` to use `<branchname>`
tag: add more incompatibles mode tests
parse-options: add OPT_NONEG to the "contains" option
tag: change misleading --list <pattern> documentation
tag: implicitly supply --list given another list-like option
tag: change --point-at to default to HEAD
ref-filter: add --no-contains option to tag/branch/for-each-ref
ref-filter: reflow recently changed branch/tag/for-each-ref docs
tag: add tests for --with and --without
t/README: clarify the test_have_prereq documentation
doc/SubmittingPatches: show how to get a CLI commit summary
rev-parse: match @{upstream}, @{u} and @{push} case-insensitively
perl: regenerate perl.mak if perl -V changes
grep: plug a trivial memory leak
push: document & test --force-with-lease with multiple remotes
completion: expand "push --delete <remote> <ref>" for refs on that <remote>
t/perf: correctly align non-ASCII descriptions in output
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.13.0-rc1
@ 2017-04-27 2:55 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-04-27 2:55 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.13.0-rc1 is now available for testing
at the usual places. It is comprised of 684 non-merge commits
since v2.12.0, contributed by 54 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.13.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.12.0 are as follows.
Welcome to the Git development community!
Allan Xavier, Andreas Heiduk, Devin J. Pohly, Devin Lehmacher,
Hiroshi Shirosaki, Johan Hovold, Maxim Moseychuk, Mostyn
Bramley-Moore, Prathamesh Chavan, Quentin Pradet, Segev Finer,
Sergey Ryazanov, and Valery Tolstov.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Brandon Williams, brian
m. carlson, Christian Couder, Cornelius Weig, David Aguilar,
David Turner, Eric Wong, Giuseppe Bilotta, Jacob Keller, Jeff
Hostetler, Jeff King, Johannes Schindelin, Jonathan Nieder,
Jonathan Tan, Junio C Hamano, Karthik Nayak, Kevin Willford,
Kyle Meyer, Lars Schneider, Linus Torvalds, Luke Diamand, Matt
McCutchen, Michael Haggerty, Michael J Gruber, Michael Rappazzo,
Mike Hommey, Nguyễn Thái Ngọc Duy, Patrick Steinhardt, Ralf
Thielow, Ramsay Jones, René Scharfe, Ross Lagerwall, Santiago
Torres, Sebastian Schuberth, Stefan Beller, SZEDER Gábor,
Thomas Gummerer, Torsten Bögershausen, and Vegard Nossum.
----------------------------------------------------------------
Git 2.13 Release Notes (draft)
==============================
Backward compatibility notes.
* 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 not scheduled to happen in the upcoming
release (yet).
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and is now removed.
* The default location "~/.git-credential-cache/socket" for the
socket used to communicate with the credential-cache daemon has
been moved to "~/.cache/git/credential/socket".
* 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.
Updates since v2.12
-------------------
UI, Workflows & Features
* "git describe" and "git name-rev" have been taught to take more
than one refname patterns to restrict the set of refs to base their
naming output on, and also learned to take negative patterns to
name refs not to be used for naming via their "--exclude" option.
* Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
once there no longer is any other branch whose name begins with
"foo/", but we didn't do so so far. Now we do.
* When "git merge" detects a path that is renamed in one history
while the other history deleted (or modified) it, it now reports
both paths to help the user understand what is going on in the two
histories being merged.
* The <url> part in "http.<url>.<variable>" configuration variable
can now be spelled with '*' that serves as wildcard.
E.g. "http.https://*.example.com.proxy" can be used to specify the
proxy used for https://a.example.com, https://b.example.com, etc.,
i.e. any host in the example.com domain.
* "git tag" did not leave useful message when adding a new entry to
reflog; this was left unnoticed for a long time because refs/tags/*
doesn't keep reflog by default.
* The "negative" pathspec feature was somewhat more cumbersome to use
than necessary in that its short-hand used "!" which needed to be
escaped from shells, and it required "exclude from what?" specified.
* The command line options for ssh invocation needs to be tweaked for
some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
while OpenSSH wants "-p <port>" to specify port to connect to), and
the variant was guessed when GIT_SSH environment variable is used
to specify it. The logic to guess now applies to the command
specified by the newer GIT_SSH_COMMAND and also core.sshcommand
configuration variable, and comes with an escape hatch for users to
deal with misdetected cases.
* The "--git-path", "--git-common-dir", and "--shared-index-path"
options of "git rev-parse" did not produce usable output. They are
now updated to show the path to the correct file, relative to where
the caller is.
* "git diff -W" has been taught to handle the case where a new
function is added at the end of the file better.
* "git update-ref -d" and other operations to delete references did
not leave any entry in HEAD's reflog when the reference being
deleted was the current branch. This is not a problem in practice
because you do not want to delete the branch you are currently on,
but caused renaming of the current branch to something else not to
be logged in a useful way.
* "Cc:" on the trailer part does not have to conform to RFC strictly,
unlike in the e-mail header. "git send-email" has been updated to
ignore anything after '>' when picking addresses, to allow non-address
cruft like " # stable 4.4" after the address.
* When "git submodule init" decides that the submodule in the working
tree is its upstream, it now gives a warning as it is not a very
common setup.
* "git stash push" takes a pathspec so that the local changes can be
stashed away only partially.
* Documentation for "git ls-files" did not refer to core.quotePath.
* The experimental "split index" feature has gained a few
configuration variables to make it easier to use.
* From a working tree of a repository, a new option of "rev-parse"
lets you ask if the repository is used as a submodule of another
project, and where the root level of the working tree of that
project (i.e. your superproject) is.
* The pathspec mechanism learned to further limit the paths that
match the pattern to those that have specified attributes attached
via the gitattributes mechanism.
* Our source code has used the SHA1_HEADER cpp macro after "#include"
in the C code to switch among the SHA-1 implementations. Instead,
list the exact header file names and switch among implementations
using "#ifdef BLK_SHA1/#include "block-sha1/sha1.h"/.../#endif";
this helps some IDE tools.
* The start-up sequence of "git" needs to figure out some configured
settings before it finds and set itself up in the location of the
repository and was quite messy due to its "chicken-and-egg" nature.
The code has been restructured.
* The command line prompt (in contrib/) learned a new 'tag' style
that can be specified with GIT_PS1_DESCRIBE_STYLE, to describe a
detached HEAD with "git describe --tags".
* The configuration file learned a new "includeIf.<condition>.path"
that includes the contents of the given path only when the
condition holds. This allows you to say "include this work-related
bit only in the repositories under my ~/work/ directory".
* Recent update to "rebase -i" started showing a message that is not
a warning with "warning:" prefix by mistake. This has been fixed.
* Recently we started passing the "--push-options" through the
external remote helper interface; now the "smart HTTP" remote
helper understands what to do with the passed information.
* "git describe --dirty" dies when it cannot be determined if the
state in the working tree matches that of HEAD (e.g. broken
repository or broken submodule). The command learned a new option
"git describe --broken" to give "$name-broken" (where $name is the
description of HEAD) in such a case.
* "git checkout" is taught the "--recurse-submodules" option.
* Recent enhancement to "git stash push" command to support pathspec
to allow only a subset of working tree changes to be stashed away
was found to be too chatty and exposed the internal implementation
detail (e.g. when it uses reset to match the index to HEAD before
doing other things, output from reset seeped out). These, and
other chattyness has been fixed.
* "git merge <message> HEAD <commit>" syntax that has been deprecated
since October 2007 has been removed.
* The refs completion for large number of refs has been sped up,
partly by giving up disambiguating ambiguous refs and partly by
eliminating most of the shell processing between 'git for-each-ref'
and 'ls-remote' and Bash's completion facility.
* On many keyboards, typing "@{" involves holding down SHIFT key and
one can easily end up with "@{Up..." when typing "@{upstream}". As
the upstream/push keywords do not appear anywhere else in the syntax,
we can safely accept them case insensitively without introducing
ambiguity or confusion to solve this.
* "git tag/branch/for-each-ref" family of commands long allowed to
filter the refs by "--contains X" (show only the refs that are
descendants of X), "--merged X" (show only the refs that are
ancestors of X), "--no-merged X" (show only the refs that are not
ancestors of X). One curious omission, "--no-contains X" (show
only the refs that are not descendants of X) has been added to
them.
* The default behaviour of "git log" in an interactive session has
been changed to enable "--decorate".
* The output from "git status --short" has been extended to show
various kinds of dirtyness in submodules differently; instead of to
"M" for modified, 'm' and '?' can be shown to signal changes only
to the working tree of the submodule but not the commit that is
checked out.
* Allow the http.postbuffer configuration variable to be set to a
size that can be expressed in size_t, which can be larger than
ulong on some platforms.
* "git rebase" learns "--signoff" option.
* The completion script (in contrib/) learned to complete "git push
--delete b<TAB>" to complete branch name to be deleted.
* "git worktree add --lock" allows to lock a worktree immediately
after it's created. This helps prevent a race between "git worktree
add; git worktree lock" and "git worktree prune".
Performance, Internal Implementation, Development Support etc.
* The code to list branches in "git branch" has been consolidated
with the more generic ref-filter API.
* Resource usage while enumerating refs from alternate object store
has been optimized to help receiving end of "push" that hosts a
repository with many "forks".
* The gitattributes machinery is being taught to work better in a
multi-threaded environment.
* "git rebase -i" starts using the recently updated "sequencer" code.
* Code and design clean-up for the refs API.
* The preload-index code has been taught not to bother with the index
entries that are paths that are not checked out by "sparse checkout".
* Some warning() messages from "git clean" were updated to show the
errno from failed system calls.
* The "parse_config_key()" API function has been cleaned up.
* A test that creates a confusing branch whose name is HEAD has been
corrected not to do so.
* The code that parses header fields in the commit object has been
updated for (micro)performance and code hygiene.
* An helper function to make it easier to append the result from
real_path() to a strbuf has been added.
* Reduce authentication round-trip over HTTP when the server supports
just a single authentication method. This also improves the
behaviour when Git is misconfigured to enable http.emptyAuth
against a server that does not authenticate without a username
(i.e. not using Kerberos etc., which makes http.emptyAuth
pointless).
* Windows port wants to use OpenSSL's implementation of SHA-1
routines, so let them.
* The t/perf performance test suite was not prepared to test not so
old versions of Git, but now it covers versions of Git that are not
so ancient.
* Add 32-bit Linux variant to the set of platforms to be tested with
Travis CI.
* "git branch --list" takes the "--abbrev" and "--no-abbrev" options
to control the output of the object name in its "-v"(erbose)
output, but a recent update started ignoring them; fix it before
the breakage reaches to any released version.
* Picking two versions of Git and running tests to make sure the
older one and the newer one interoperate happily has now become
possible.
* "git tag --contains" used to (ab)use the object bits to keep track
of the state of object reachability without clearing them after
use; this has been cleaned up and made to use the newer commit-slab
facility.
* The "debug" helper used in the test framework learned to run
a command under "gdb" interactively.
* The "detect attempt to create collisions" variant of SHA-1
implementation by Marc Stevens (CWI) and Dan Shumow (Microsoft)
has been integrated and made the default.
* The test framework learned to detect unterminated here documents.
* The name-hash used for detecting paths that are different only in
cases (which matter on case insensitive filesystems) has been
optimized to take advantage of multi-threading when it makes sense.
* An earlier version of sha1dc/sha1.c that was merged to 'master'
compiled incorrectly on Windows, which has been fixed.
* "what URL do we want to update this submodule?" and "are we
interested in this submodule?" are split into two distinct
concepts, and then the way used to express the latter got extended,
paving a way to make it easier to manage a project with many
submodules and make it possible to later extend use of multiple
worktrees for a project with submodules.
* Some debugging output from "git describe" were marked for l10n,
but some weren't. Mark missing ones for l10n.
* Define a new task in .travis.yml that triggers a test session on
Windows run elsewhere.
* Conversion from uchar[20] to struct object_id continues.
* The "submodule" specific field in the ref_store structure is
replaced with a more generic "gitdir" that can later be used also
when dealing with ref_store that represents the set of refs visible
from the other worktrees.
* The string-list API used a custom reallocation strategy that was
very inefficient, instead of using the usual ALLOC_GROW() macro,
which has been fixed.
(merge 950a234cbd jh/string-list-micro-optim later to maint).
* In a 2- and 3-way merge of trees, more than one source trees often
end up sharing an identical subtree; optimize by not reading the
same tree multiple times in such a case.
(merge d12a8cf0af jh/unpack-trees-micro-optim later to maint).
* The index file has a trailing SHA-1 checksum to detect file
corruption, and historically we checked it every time the index
file is used. Omit the validation during normal use, and instead
verify only in "git fsck".
* Having a git command on the upstream side of a pipe in a test
script will hide the exit status from the command, which may cause
us to fail to notice a breakage; rewrite tests in a script to avoid
this issue.
* Travis CI learns to run coccicheck.
* "git checkout" that handles a lot of paths has been optimized by
reducing the number of unnecessary checks of paths in the
has_dir_name() function.
* The internals of the refs API around the cached refs has been
streamlined.
Also contains various documentation updates and code clean-ups.
Fixes since v2.12
-----------------
Unless otherwise noted, all the fixes since v2.12 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git repack --depth=<n>" for a long time busted the specified depth
when reusing delta from existing packs. This has been corrected.
* The code to parse the command line "git grep <patterns>... <rev>
[[--] <pathspec>...]" has been cleaned up, and a handful of bugs
have been fixed (e.g. we used to check "--" if it is a rev).
* "git ls-remote" and "git archive --remote" are designed to work
without being in a directory under Git's control. However, recent
updates revealed that we randomly look into a directory called
.git/ without actually doing necessary set-up when working in a
repository. Stop doing so.
* "git show-branch" expected there were only very short branch names
in the repository and used a fixed-length buffer to hold them
without checking for overflow.
* A caller of tempfile API that uses stdio interface to write to
files may ignore errors while writing, which is detected when
tempfile is closed (with a call to ferror()). By that time, the
original errno that may have told us what went wrong is likely to
be long gone and was overwritten by an irrelevant value.
close_tempfile() now resets errno to EIO to make errno at least
predictable.
* "git remote rm X", when a branch has remote X configured as the
value of its branch.*.remote, tried to remove branch.*.remote and
branch.*.merge and failed if either is unset.
* A "gc.log" file left by a backgrounded "gc --auto" disables further
automatic gc; it has been taught to run at least once a day (by
default) by ignoring a stale "gc.log" file that is too old.
* The code to parse "git -c VAR=VAL cmd" and set configuration
variable for the duration of cmd had two small bugs, which have
been fixed.
* user.email that consists of only cruft chars should consistently
error out, but didn't.
* "git upload-pack", which is a counter-part of "git fetch", did not
report a request for a ref that was not advertised as invalid.
This is generally not a problem (because "git fetch" will stop
before making such a request), but is the right thing to do.
* A leak in a codepath to read from a packed object in (rare) cases
has been plugged.
* When a redirected http transport gets an error during the
redirected request, we ignored the error we got from the server,
and ended up giving a not-so-useful error message.
* The patch subcommand of "git add -i" was meant to have paths
selection prompt just like other subcommand, unlike "git add -p"
directly jumps to hunk selection. Recently, this was broken and
"add -i" lost the paths selection dialog, but it now has been
fixed.
* Git v2.12 was shipped with an embarrassing breakage where various
operations that verify paths given from the user stopped dying when
seeing an issue, and instead later triggering segfault.
* There is no need for Python only to give a few messages to the
standard error stream, but we somehow did.
* The code to parse "git log -L..." command line was buggy when there
are many ranges specified with -L; overrun of the allocated buffer
has been fixed.
* The command-line parsing of "git log -L" copied internal data
structures using incorrect size on ILP32 systems.
* "git diff --quiet" relies on the size field in diff_filespec to be
correctly populated, but diff_populate_filespec() helper function
made an incorrect short-cut when asked only to populate the size
field for paths that need to go through convert_to_git() (e.g. CRLF
conversion).
* A few tests were run conditionally under (rare) conditions where
they cannot be run (like running cvs tests under 'root' account).
* "git branch @" created refs/heads/@ as a branch, and in general the
code that handled @{-1} and @{upstream} was a bit too loose in
disambiguating.
* "git fetch" that requests a commit by object name, when the other
side does not allow such an request, failed without much
explanation.
* "git filter-branch --prune-empty" drops a single-parent commit that
becomes a no-op, but did not drop a root commit whose tree is empty.
* Recent versions of Git treats http alternates (used in dumb http
transport) just like HTTP redirects and requires the client to
enable following it, due to security concerns. But we forgot to
give a warning when we decide not to honor the alternates.
* "git push" had a handful of codepaths that could lead to a deadlock
when unexpected error happened, which has been fixed.
* "Dumb http" transport used to misparse a nonsense http-alternates
response, which has been fixed.
* "git add -p <pathspec>" unnecessarily expanded the pathspec to a
list of individual files that matches the pathspec by running "git
ls-files <pathspec>", before feeding it to "git diff-index" to see
which paths have changes, because historically the pathspec
language supported by "diff-index" was weaker. These days they are
equivalent and there is no reason to internally expand it. This
helps both performance and avoids command line argument limit on
some platforms.
(merge 7288e12cce jk/add-i-use-pathspecs later to maint).
* "git status --porcelain" is supposed to give a stable output, but a
few strings were left as translatable by mistake.
* "git revert -m 0 $merge_commit" complained that reverting a merge
needs to say relative to which parent the reversion needs to
happen, as if "-m 0" weren't given. The correct diagnosis is that
"-m 0" does not refer to the first parent ("-m 1" does). This has
been fixed.
* Code to read submodule.<name>.ignore config did not state the
variable name correctly when giving an error message diagnosing
misconfiguration.
* Fix for NO_PTHREADS build.
* Fix for potential segv introduced in v2.11.0 and later (also
v2.10.2) to "git log --pickaxe-regex -S".
* A few unterminated here documents in tests were fixed, which in
turn revealed incorrect expectations the tests make. These tests
have been updated.
* Fix for NO_PTHREADS option.
(merge 2225e1ea20 bw/grep-recurse-submodules later to maint).
* 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").
(merge b1ef400eec jk/no-looking-at-dotgit-outside-repo-final later to maint).
* A few commands that recently learned the "--recurse-submodule"
option misbehaved when started from a subdirectory of the
superproject.
(merge b2dfeb7c00 bw/recurse-submodules-relative-fix later to maint).
* FreeBSD implementation of getcwd(3) behaved differently when an
intermediate directory is unreadable/unsearchable depending on the
length of the buffer provided, which our strbuf_getcwd() was not
aware of. strbuf_getcwd() has been taught to cope with it better.
(merge a54e938e5b rs/freebsd-getcwd-workaround later to maint).
* A recent update to "rebase -i" stopped running hooks for the "git
commit" command during "reword" action, which has been fixed.
* Removing an entry from a notes tree and then looking another note
entry from the resulting tree using the internal notes API
functions did not work as expected. No in-tree users of the API
has such access pattern, but it still is worth fixing.
* "git receive-pack" could have been forced to die by attempting
allocate an unreasonably large amount of memory with a crafted push
certificate; this has been fixed.
(merge f2214dede9 bc/push-cert-receive-fix later to maint).
* Update error handling for codepath that deals with corrupt loose
objects.
(merge 51054177b3 jk/loose-object-info-report-error later to maint).
* "git diff --submodule=diff" learned to work better in a project
with a submodule that in turn has its own submodules.
(merge 17b254cda6 sb/show-diff-for-submodule-in-diff-fix later to maint).
* Update the build dependency so that an update to /usr/bin/perl
etc. result in recomputation of perl.mak file.
(merge c59c4939c2 ab/regen-perl-mak-with-different-perl later to maint).
* "git push --recurse-submodules --push-option=<string>" learned to
propagate the push option recursively down to pushes in submodules.
* If a patch e-mail had its first paragraph after an in-body header
indented (even after a blank line after the in-body header line),
the indented line was mistook as a continuation of the in-body
header. This has been fixed.
(merge fd1062e52e lt/mailinfo-in-body-header-continuation later to maint).
* Clean up fallouts from recent tightening of the set-up sequence,
where Git barfs when repository information is accessed without
first ensuring that it was started in a repository.
(merge bccb22cbb1 jk/no-looking-at-dotgit-outside-repo later to maint).
* "git p4" used "name-rev HEAD" when it wants to learn what branch is
checked out; it should use "symbolic-ref HEAD".
(merge eff451101d ld/p4-current-branch-fix later to maint).
* "http.proxy" set to an empty string is used to disable the usage of
proxy. We broke this early last year.
(merge ae51d91105 sr/http-proxy-configuration-fix later to maint).
* $GIT_DIR may in some cases be normalized with all symlinks resolved
while "gitdir" path expansion in the pattern does not receive the
same treatment, leading to incorrect mismatch. This has been fixed.
* "git submodule" script does not work well with strange pathnames.
Protect it from a path with slashes in them, at least.
* "git fetch-pack" was not prepared to accept ERR packet that the
upload-pack can send with a human-readable error message. It
showed the packet contents with ERR prefix, so there was no data
loss, but it was redundant to say "ERR" in an error message.
(merge 8e2c7bef03 jt/fetch-pack-error-reporting later to maint).
* "ls-files --recurse-submodules" did not quite work well in a
project with nested submodules.
* gethostname(2) may not NUL terminate the buffer if hostname does
not fit; unfortunately there is no easy way to see if our buffer
was too small, but at least this will make sure we will not end up
using garbage past the end of the buffer.
(merge 5781a9a270 dt/xgethostname-nul-termination later to maint).
* A recent update broke "git add -p ../foo" from a subdirectory.
* While handy, "git_path()" is a dangerous function to use as a
callsite that uses it safely one day can be broken by changes
to other code that calls it. Reduction of its use continues.
(merge 16d2676c9e jk/war-on-git-path later to maint).
* The split-index code configuration code used an unsafe git_path()
function without copying its result out.
* Many stale HTTP(s) links have been updated in our documentation.
(merge 613416f0be jk/update-links-in-docs later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge df2a6e38b7 jk/pager-in-use later to maint).
(merge 75ec4a6cb0 ab/branch-list-doc later to maint).
(merge 3e5b36c637 sg/skip-prefix-in-prettify-refname later to maint).
(merge 2c5e2865cc jk/fast-import-cleanup later to maint).
(merge 4473060bc2 ab/test-readme-updates later to maint).
(merge 48a96972fd ab/doc-submitting later to maint).
(merge f5c2bc2b96 jk/make-coccicheck-detect-errors later to maint).
(merge c105f563d1 cc/untracked later to maint).
(merge 8668976b53 jc/unused-symbols later to maint).
(merge fba275dc93 jc/bs-t-is-not-a-tab-for-sed later to maint).
(merge be6ed145de mm/ls-files-s-doc later to maint).
(merge 60b091c679 qp/bisect-docfix later to maint).
(merge 47242cd103 ah/diff-files-ours-theirs-doc later to maint).
(merge 35ad44cbd8 sb/submodule-rm-absorb later to maint).
(merge 0301f1fd92 va/i18n-perl-scripts later to maint).
(merge 733e064d98 vn/revision-shorthand-for-side-branch-log later to maint).
(merge 85999743e7 tb/doc-eol-normalization later to maint).
(merge 0747fb49fd jk/loose-object-fsck later to maint).
(merge d8f4481c4f jk/quarantine-received-objects later to maint).
(merge 7ba1ceef95 xy/format-patch-base later to maint).
(merge fa1912c89a rs/misc-cppcheck-fixes later to maint).
(merge f17d642d3b ab/push-cas-doc-n-test later to maint).
(merge 61e282425a ss/gitmodules-ignore-doc later to maint).
(merge 8d3047cd5b ss/submodule-shallow-doc later to maint).
----------------------------------------------------------------
Changes since v2.12.0 are as follows:
Alex Henrie (1):
log: if --decorate is not given, default to --decorate=auto
Allan Xavier (1):
line-log.c: prevent crash during union of too many ranges
Andreas Heiduk (2):
Documentation: improve description for core.quotePath
diff-files: document --ours etc.
Brandon Williams (37):
attr: pass struct attr_check to collect_some_attrs
attr: use hashmap for attribute dictionary
attr: eliminate global check_all_attr array
attr: remove maybe-real, maybe-macro from git_attr
attr: tighten const correctness with git_attr and match_attr
attr: store attribute stack in attr_check structure
attr: push the bare repo check into read_attr()
attr: reformat git_attr_set_direction() function
pathspec: allow querying for attributes
pathspec: allow escaped query values
submodule--helper: add is-active subcommand
submodule status: use submodule--helper is-active
submodule sync: skip work for inactive submodules
submodule sync: use submodule--helper is-active
submodule--helper clone: check for configured submodules using helper
grep: fix help text typo
setup: allow for prefix to be passed to git commands
grep: fix bug when recursing with relative pathspec
ls-files: fix typo in variable name
ls-files: fix bug when recursing with relative pathspec
grep: set default output method
submodule: decouple url and submodule interest
submodule init: initialize active submodules
clone: teach --recurse-submodules to optionally take a pathspec
submodule--helper init: set submodule.<name>.active
submodule add: respect submodule.active and submodule.<name>.active
grep: fix builds with with no thread support
send-pack: send push options correctly in stateless-rpc case
remote-curl: allow push options
sequencer: fix missing newline
push: unmark a local variable as static
push: propagate push-options with --recurse-submodules
remote: expose parse_push_refspec function
submodule--helper: add push-check subcommand
push: propagate remote and refspec with --recurse-submodules
pathspec: fix segfault in clear_pathspec
submodule: prevent backslash expantion in submodule names
Christian Couder (25):
config: mark an error message up for translation
t1700: change here document style
config: add git_config_get_split_index()
split-index: add {add,remove}_split_index() functions
read-cache: add and then use tweak_split_index()
update-index: warn in case of split-index incoherency
t1700: add tests for core.splitIndex
Documentation/config: add information for core.splitIndex
Documentation/git-update-index: talk about core.splitIndex config var
config: add git_config_get_max_percent_split_change()
read-cache: regenerate shared index if necessary
t1700: add tests for splitIndex.maxPercentChange
Documentation/config: add splitIndex.maxPercentChange
sha1_file: make check_and_freshen_file() non static
read-cache: touch shared index files when used
config: add git_config_get_expiry() from gc.c
read-cache: unlink old sharedindex files
t1700: test shared index file expiration
read-cache: refactor read_index_from()
read-cache: use freshen_shared_index() in read_index_from()
Documentation/config: add splitIndex.sharedIndexExpire
Documentation/git-update-index: explain splitIndex.*
update-index: fix xgetcwd() related memory leak
p0004: make perf test executable
read-cache: avoid using git_path() in freshen_shared_index()
Cornelius Weig (1):
tag: generate useful reflog message
David Aguilar (3):
t7800: remove whitespace before redirect
t7800: cleanup cruft left behind by tests
difftool: handle modified symlinks in dir-diff mode
David Turner (3):
gc: ignore old gc.log files
http.postbuffer: allow full range of ssize_t values
xgethostname: handle long hostnames
Devin J. Pohly (4):
t7003: ensure --prune-empty can prune root commit
t7003: ensure --prune-empty removes entire branch when applicable
filter-branch: fix --prune-empty on parentless commits
p7000: add test for filter-branch with --prune-empty
Devin Lehmacher (3):
path.c: add xdg_cache_home
credential-cache: use XDG_CACHE_HOME for socket
credential-cache: add tests for XDG functionality
Eric Wong (3):
README: create HTTP/HTTPS links from URLs in Markdown
http: inform about alternates-as-redirects behavior
http: release strbuf on disabled alternates
Giuseppe Bilotta (4):
builtin/am: honor --signoff also when --rebasing
builtin/am: fold am_signoff() into am_append_signoff()
doc: trivial typo in git-format-patch.txt
rebase: pass --[no-]signoff option to git am
Hiroshi Shirosaki (1):
git svn: fix authentication with 'branch'
Jacob Keller (7):
doc: add documentation for OPT_STRING_LIST
name-rev: extend --refs to accept multiple patterns
name-rev: add support to exclude refs by pattern match
describe: teach --match to accept multiple patterns
describe: teach describe negative pattern matches
ls-files: fix recurse-submodules with nested submodules
ls-files: fix path used when recursing into submodules
Jeff Hostetler (18):
mingw: use OpenSSL's SHA-1 routines
preload-index: avoid lstat for skip-worktree items
name-hash: specify initial size for istate.dir_hash table
hashmap: allow memihash computation to be continued
hashmap: add disallow_rehash setting
hashmap: document memihash_cont, hashmap_disallow_rehash api
name-hash: perf improvement for lazy_init_name_hash
name-hash: add test-lazy-init-name-hash
name-hash: add perf test for lazy_init_name_hash
test-online-cpus: helper to return cpu count
read-cache: force_verify_index_checksum
string-list: use ALLOC_GROW macro when reallocing string_list
read-cache: add strcmp_offset function
unpack-trees: avoid duplicate ODB lookups during checkout
p0006-read-tree-checkout: perf test to time read-tree
read-cache: speed up add_index_entry during checkout
read-cache: speed up has_dir_name (part 1)
read-cache: speed up has_dir_name (part 2)
Jeff King (128):
setup_git_env: avoid blind fall-back to ".git"
pack-objects: enforce --depth limit in reused deltas
pack-objects: convert recursion to iteration in break_delta_chain()
for_each_alternate_ref: handle failure from real_pathdup()
for_each_alternate_ref: stop trimming trailing slashes
for_each_alternate_ref: use strbuf for path allocation
for_each_alternate_ref: pass name/oid instead of ref struct
for_each_alternate_ref: replace transport code with for-each-ref
fetch-pack: cache results of for_each_alternate_ref
add oidset API
receive-pack: use oidset to de-duplicate .have lines
receive-pack: fix misleading namespace/.have comment
receive-pack: treat namespace .have lines like alternates
receive-pack: avoid duplicates between our refs and alternates
grep: move thread initialization a little lower
grep: re-order rev-parsing loop
grep: fix "--" rev/pathspec disambiguation
grep: avoid resolving revision names in --no-index case
grep: do not diagnose misspelt revs with --no-index
show-branch: drop head_len variable
show-branch: store resolved head in heap buffer
remote: avoid reading $GIT_DIR config in non-repo
grep: treat revs the same for --untracked as for --no-index
show-branch: use skip_prefix to drop magic numbers
tempfile: set errno to a known value before calling ferror()
http: restrict auth methods to what the server advertises
ident: mark error messages for translation
ident: handle NULL email when complaining of empty name
ident: reject all-crud ident name
ident: do not ignore empty config name/email
parse_config_key: use skip_prefix instead of starts_with
parse_config_key: allow matching single-level config
parse_hide_refs_config: tell parse_config_key we don't want a subsection
http: add an "auto" mode for http.emptyauth
t6300: avoid creating refs/heads/HEAD
add--interactive: fix missing file prompt for patch mode with "-i"
interpret_branch_name(): handle auto-namelen for @{-1}
interpret_branch_name: move docstring to header file
strbuf_branchname: drop return value
strbuf_branchname: add docstring
interpret_branch_name: allow callers to restrict expansions
t3204: test git-branch @-expansion corner cases
branch: restrict @-expansions when deleting
strbuf_check_ref_format(): expand only local branches
checkout: restrict @-expansions when finding branch
t/perf: use $MODERN_GIT for all repo-copying steps
t/perf: add fallback for pre-bin-wrappers versions of git
ewah: fix eword_t/uint64_t confusion
receive-pack: fix deadlock when we cannot create tmpdir
send-pack: extract parsing of "unpack" response
send-pack: use skip_prefix for parsing unpack status
send-pack: improve unpack-status error messages
send-pack: read "unpack" status even on pack-objects failure
send-pack: report signal death of pack-objects
ref-filter: move ref_cbdata definition into ref-filter.c
ref-filter: use contains_result enum consistently
ref-filter: die on parse_commit errors
ref-filter: use separate cache for contains_tag_algo
t: add an interoperability test harness
t/interop: add test of old clients against modern git-daemon
http-walker: fix buffer underflow processing remote alternates
add--interactive: do not expand pathspecs with ls-files
cherry-pick: detect bogus arguments to --mainline
rev-parse: use skip_prefix when parsing options
rev-parse: add helper for parsing "--foo/--foo="
rev-parse: simplify parsing of ref options
move odb_* declarations out of git-compat-util.h
sha1_file.c: make pack-name helper globally accessible
odb_pack_keep(): stop generating keepfile name
replace snprintf with odb_pack_name()
index-pack: make pointer-alias fallbacks safer
sha1dc: add collision-detecting sha1 implementation
sha1dc: adjust header includes for git
sha1dc: disable safe_hash feature
sequencer: drop "warning:" when stopping for edit
Makefile: add DC_SHA1 knob
t0013: add a basic sha1 collision detection test
run-command: fix segfault when cleaning forked async process
hash-object: fix buffer reuse with --path in a subdirectory
prefix_filename: move docstring to header file
prefix_filename: drop length parameter
prefix_filename: return newly allocated string
prefix_filename: simplify windows #ifdef
bundle: use prefix_filename with bundle path
pager_in_use: use git_env_bool()
fast-import: use xsnprintf for writing sha1s
fast-import: use xsnprintf for formatting headers
encode_in_pack_object_header: respect output buffer length
pack.h: define largest possible encoded object size
do not check odb_mkstemp return value for errors
odb_mkstemp: write filename into strbuf
odb_mkstemp: use git_path_buf
Makefile: detect errors in running spatch
difftool: avoid strcpy
diff: avoid fixed-size buffer for patch-ids
tag: use strbuf to format tag header
fetch: use heap buffer to format reflog
avoid using fixed PATH_MAX buffers for refs
avoid using mksnpath for refs
create_branch: move msg setup closer to point of use
create_branch: use xstrfmt for reflog message
name-rev: replace static buffer with strbuf
receive-pack: print --pack-header directly into argv array
replace unchecked snprintf calls with heap buffers
combine-diff: replace malloc/snprintf with xstrfmt
convert unchecked snprintf into xsnprintf
transport-helper: replace checked snprintf with xsnprintf
gc: replace local buffer with git_path
daemon: use an argv_array to exec children
sha1_loose_object_info: return error for corrupted objects
index-pack: detect local corruption in collision check
connect.c: handle errors from split_cmdline
receive-pack: drop tmp_objdir_env from run_update_hook
receive-pack: document user-visible quarantine effects
refs: reject ref updates while GIT_QUARANTINE_PATH is set
bisect: add git_path_bisect_terms helper
branch: add edit_description() helper
use git_path_* helper functions
replace xstrdup(git_path(...)) with git_pathdup(...)
replace strbuf_addstr(git_path()) with git_path_buf()
am: drop "dir" parameter from am_state_init
connect.c: fix leak in handle_ssh_variant
doc: use https links to avoid http redirect
doc: replace or.cz gitwiki link with git.wiki.kernel.org
gitcore-tutorial: update broken link
docs/archimport: quote sourcecontrol.net reference
docs/bisect-lk2009: update nist report link
docs/bisect-lk2009: update java code conventions link
Johan Hovold (1):
send-email: only allow one address per body tag
Johannes Schindelin (23):
git_connect(): factor out SSH variant handling
rebase--helper: add a builtin helper for interactive rebases
rebase -i: use the rebase--helper builtin
rev-parse: fix several options when running in a subdirectory
t7006: replace dubious test
Travis: also test on 32-bit Linux
setup_git_directory(): use is_dir_sep() helper
t1501: demonstrate NULL pointer access with invalid GIT_WORK_TREE
real_pathdup(): fix callsites that wanted it to die on error
setup: prepare setup_discovered_git_dir() for the root directory
setup_git_directory_1(): avoid changing global state
setup: introduce the discover_git_directory() function
setup: make read_early_config() reusable
read_early_config(): avoid .git/config hack when unneeded
read_early_config(): really discover .git/
t1309: test read_early_config()
setup_git_directory_gently_1(): avoid die()ing
t1309: document cases where we would want early config not to die()
setup.c: mention unresolved problems
t7504: document regression: reword no longer calls commit-msg
sequencer: make commit options more extensible
sequencer: allow the commit-msg hooks to run during a `reword`
difftool: fix use-after-free
Jonathan Nieder (2):
remote helpers: avoid blind fall-back to ".git" when setting GIT_DIR
has_sha1_file: don't bother if we are not in a repository
Jonathan Tan (5):
grep: do not unnecessarily query repo for "--"
upload-pack: report "not our ref" to client
http: attempt updating base URL only if no error
t/perf: export variable used in other blocks
fetch-pack: show clearer error message upon ERR
Junio C Hamano (54):
merge: drop 'git merge <message> HEAD <commit>' syntax
connect: rename tortoiseplink and putty variables
commit.c: use strchrnul() to scan for one line
attr.c: use strchrnul() to scan for one line
attr.c: update a stale comment on "struct match_attr"
attr.c: explain the lack of attr-name syntax check in parse_attr()
attr.c: complete a sentence in a comment
attr.c: mark where #if DEBUG ends more clearly
attr.c: simplify macroexpand_one()
attr.c: tighten constness around "git_attr" structure
attr.c: plug small leak in parse_attr_line()
attr.c: add push_stack() helper
attr.c: outline the future plans by heavily commenting
attr: rename function and struct related to checking attributes
attr: (re)introduce git_check_attr() and struct attr_check
attr: convert git_all_attrs() to use "struct attr_check"
attr: convert git_check_attrs() callers to use the new API
attr: retire git_check_attrs() API
attr: change validity check for attribute names to use positive logic
ref-filter: resurrect "strip" as a synonym to "lstrip"
connect.c: stop conflating ssh command names and overrides
config: move a few helper functions up
config: use git_config_parse_key() in git_config_parse_parameter()
First batch after 2.12
diff: do not short-cut CHECK_SIZE_ONLY check in diff_populate_filespec()
branch: honor --abbrev/--no-abbrev in --list mode
Second batch after 2.12
Third batch after 2.12
Fourth batch after 2.12
Preparing for 2.12.1
Makefile: make DC_SHA1 the default
Fifth batch for 2.13
Git 2.12.1
Prepare for 2.12.2
Sixth batch for 2.13
t5615: fix a here-doc syntax error
t7406: correct test case for submodule-update initial population
tests: lint for run-away here-doc
branch doc: update description for `--list`
Git 2.12.2
Seventh batch for 2.13
sha1dc: avoid CPP macro collisions
Eighth batch for 2.13
Prepare for 2.12.3
Ninth batch for 2.13
Tenth batch for 2.13
remote.[ch]: parse_push_cas_option() can be static
contrib/git-resurrect.sh: do not write \t for HT in sed scripts
Eleventh batch for 2.13
Twelfth batch for 2.13
replace: plug a memory leak
Git 2.13-rc0
Getting ready for -rc1
Git 2.13-rc1
Karthik Nayak (20):
ref-filter: implement %(if), %(then), and %(else) atoms
ref-filter: include reference to 'used_atom' within 'atom_value'
ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
ref-filter: modify "%(objectname:short)" to take length
ref-filter: move get_head_description() from branch.c
ref-filter: introduce format_ref_array_item()
ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
ref-filter: add support for %(upstream:track,nobracket)
ref-filter: make "%(symref)" atom work with the ':short' modifier
ref-filter: introduce refname_atom_parser_internal()
ref-filter: introduce refname_atom_parser()
ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
ref-filter: rename the 'strip' option to 'lstrip'
ref-filter: Do not abruptly die when using the 'lstrip=<N>' option
ref-filter: modify the 'lstrip=<N>' option to work with negative '<N>'
ref-filter: add an 'rstrip=<N>' option to atoms which deal with refnames
ref-filter: allow porcelain to translate messages in the output
branch, tag: use porcelain output
branch: use ref-filter printing APIs
branch: implement '--format' option
Kevin Willford (2):
name-hash: fix buffer overrun
t3008: skip lazy-init test on a single-core box
Kyle Meyer (12):
delete_ref: accept a reflog message argument
update-ref: pass reflog message to delete_ref()
rename_ref: replace empty message in HEAD's log
branch: record creation of renamed branch in HEAD's log
t1400: rename test descriptions to be unique
t1400: set core.logAllRefUpdates in "logged by touch" tests
t1400: use test_path_is_* helpers
t1400: remove a set of unused output files
t1400: use test_when_finished for cleanup
doc/config: grammar fixes for core.{editor,commentChar}
doc/revisions: remove brackets from rev^-n shorthand
t1400: use consistent style for test_expect_success calls
Lars Schneider (2):
travis-ci: build and test Git on Windows
travis-ci: add static analysis build job to run coccicheck
Linus Torvalds (3):
pathspec magic: add '^' as alias for '!'
pathspec: don't error out on all-exclusionary pathspec patterns
mailinfo: fix in-body header continuations
Luke Diamand (3):
git-p4: add failing test for name-rev rather than symbolic-ref
git-p4: add read_pipe_text() internal function
git-p4: don't use name-rev to get current branch
Matt McCutchen (4):
merge-recursive: make "CONFLICT (rename/delete)" message show both paths
fetch-pack: move code to report unmatched refs to a function
fetch_refs_via_pack: call report_unmatched_refs
fetch-pack: add specific error for fetching an unadvertised object
Maxim Moseychuk (2):
stop_progress_msg: convert xsnprintf to xstrfmt
bisect_next_all: convert xsnprintf to xstrfmt
Michael Haggerty (52):
files_rename_ref(): tidy up whitespace
refname_is_safe(): correct docstring
t5505: use "for-each-ref" to test for the non-existence of references
safe_create_leading_directories_const(): preserve errno
safe_create_leading_directories(): set errno on SCLD_EXISTS
raceproof_create_file(): new function
lock_ref_sha1_basic(): inline constant
lock_ref_sha1_basic(): use raceproof_create_file()
rename_tmp_log(): use raceproof_create_file()
rename_tmp_log(): improve error reporting
log_ref_write(): inline function
log_ref_setup(): separate code for create vs non-create
log_ref_setup(): improve robustness against races
log_ref_setup(): pass the open file descriptor back to the caller
log_ref_write_1(): don't depend on logfile argument
log_ref_setup(): manage the name of the reflog file internally
log_ref_write_1(): inline function
delete_ref_loose(): derive loose reference path from lock
delete_ref_loose(): inline function
try_remove_empty_parents(): rename parameter "name" -> "refname"
try_remove_empty_parents(): don't trash argument contents
try_remove_empty_parents(): teach to remove parents of reflogs, too
files_transaction_commit(): clean up empty directories
refs: reorder some function definitions
refs: make some ref_store lookup functions private
refs: remove some unnecessary handling of submodule == ""
register_ref_store(): new function
refs: store submodule ref stores in a hashmap
refs: push the submodule attribute down
base_ref_store_init(): remove submodule argument
files_ref_store::submodule: use NULL for the main repository
read_loose_refs(): read refs using resolve_ref_recursively()
get_ref_dir(): don't call read_loose_refs() for "refs/bisect"
refs_read_raw_ref(): new function
refs_ref_iterator_begin(): new function
refs_verify_refname_available(): implement once for all backends
refs_verify_refname_available(): use function in more places
ref-cache: rename `add_ref()` to `add_ref_entry()`
ref-cache: rename `find_ref()` to `find_ref_entry()`
ref-cache: rename `remove_entry()` to `remove_entry_from_dir()`
refs: split `ref_cache` code into separate files
ref-cache: introduce a new type, ref_cache
refs: record the ref_store in ref_cache, not ref_dir
ref-cache: use a callback function to fill the cache
refs: handle "refs/bisect/" in `loose_fill_ref_dir()`
do_for_each_entry_in_dir(): eliminate `offset` argument
get_loose_ref_dir(): function renamed from get_loose_refs()
get_loose_ref_cache(): new function
cache_ref_iterator_begin(): make function smarter
commit_packed_refs(): use reference iteration
files_pack_refs(): use reference iteration
do_for_each_entry_in_dir(): delete function
Michael J Gruber (5):
git-status: make porcelain more robust
git-prompt: add a describe style for any tags
mailmap: use Michael J Gruber's new address
describe: localize debug output fully
l10n: de: translate describe debug terms
Michael Rappazzo (1):
rev-parse tests: add tests executed from a subdirectory
Mike Hommey (1):
notes: do not break note_tree structure in note_tree_consolidate()
Mostyn Bramley-Moore (1):
Documentation: document elements in "ls-files -s" output in order
Nguyễn Thái Ngọc Duy (40):
attr: support quoting pathname patterns in C style
clean: use warning_errno() when appropriate
config.txt: clarify multiple key values in include.path
config.txt: reflow the second include.path paragraph
config: add conditional include
refs.h: add forward declaration for structs used in this file
git-commit.txt: list post-rewrite in HOOKS section
files-backend: make files_log_ref_write() static
files-backend.c: delete dead code in files_ref_iterator_begin()
files-backend: delete dead code in files_init_db()
files-backend: add and use files_packed_refs_path()
files-backend: make sure files_rename_ref() always reach the end
files-backend: convert git_path() to strbuf_git_path()
files-backend: move "logs/" out of TMP_RENAMED_LOG
files-backend: add and use files_reflog_path()
files-backend: add and use files_ref_path()
files-backend: remove the use of git_path()
refs.c: introduce get_main_ref_store()
refs: rename lookup_ref_store() to lookup_submodule_ref_store()
refs.c: flatten get_ref_store() a bit
refs.c: kill register_ref_store(), add register_submodule_ref_store()
refs.c: make get_main_ref_store() public and use it
path.c: move some code out of strbuf_git_path_submodule()
refs: move submodule code out of files-backend.c
files-backend: replace submodule_allowed check in files_downcast()
refs: rename get_ref_store() to get_submodule_ref_store() and make it public
refs: add new ref-store api
refs: new transaction related ref-store api
files-backend: avoid ref api targeting main ref store
refs: delete pack_refs() in favor of refs_pack_refs()
t/helper: add test-ref-store to test ref-store functions
t1405: some basic tests on main ref store
t1406: new tests for submodule ref store
refs.h: add a note about sorting order of for_each_ref_*
path.c: and an option to call real_path() in expand_user_path()
config: resolve symlinks in conditional include's patterns
config: prepare to pass more info in git_config_with_options()
config: handle conditional include when $GIT_DIR is not set up
config: correct file reading order in read_early_config()
worktree add: add --lock option
Patrick Steinhardt (8):
mailmap: add Patrick Steinhardt's work address
urlmatch: enable normalization of URLs with globs
urlmatch: split host and port fields in `struct url_info`
urlmatch: include host in urlmatch ranking
urlmatch: allow globbing for the URL host part
docs/diffcore: fix grammar in diffcore-rename header
docs/diffcore: unquote "Complete Rewrites" in headers
pathspec: honor `PATHSPEC_PREFIX_ORIGIN` with empty prefix
Prathamesh Chavan (1):
t2027: avoid using pipes
Quentin Pradet (1):
git-bisect.txt: add missing word
Ralf Thielow (2):
submodule.c: add missing ' in error messages
git-add--interactive.perl: add missing dot in a message
Ramsay Jones (3):
wrapper.c: remove unused git_mkstemp() function
wrapper.c: remove unused gitmkstemps() function
name-hash: add test-lazy-init-name-hash to .gitignore
René Scharfe (18):
sha1_file: release fallback base's memory in unpack_entry()
cocci: use ALLOC_ARRAY
strbuf: add strbuf_add_real_path()
commit: be more precise when searching for headers
commit: don't check for space twice when looking for header
log-tree: factor out fmt_output_email_subject()
pretty: use fmt_output_email_subject()
blame: move blame_entry duplication to add_blame_entry()
receive-pack: simplify run_update_post_hook()
http-push: don't check return value of lookup_unknown_object()
revision: remove declaration of path_name()
shortlog: don't set after_subject to an empty string
strbuf: support long paths w/o read rights in strbuf_getcwd() on FreeBSD
test-read-cache: setup git dir
am: close stream on error, but not stdin
files_for_each_reflog_ent_reverse(): close stream and free strbuf on error
server-info: avoid calling fclose(3) twice in update_info_file()
use HOST_NAME_MAX to size buffers for gethostname(2)
Ross Lagerwall (1):
remote: ignore failure to remove missing branch.<name>.merge
SZEDER Gábor (44):
completion: improve __git_refs()'s in-code documentation
completion tests: don't add test cruft to the test repository
completion tests: make the $cur variable local to the test helper functions
completion tests: consolidate getting path of current working directory
completion tests: check __gitdir()'s output in the error cases
completion tests: add tests for the __git_refs() helper function
completion: ensure that the repository path given on the command line exists
completion: fix most spots not respecting 'git --git-dir=<path>'
completion: respect 'git --git-dir=<path>' when listing remote refs
completion: list refs from remote when remote's name matches a directory
completion: don't list 'HEAD' when trying refs completion outside of a repo
completion: list short refs from a remote given as a URL
completion: don't offer commands when 'git --opt' needs an argument
completion: fix completion after 'git -C <path>'
rev-parse: add '--absolute-git-dir' option
completion: respect 'git -C <path>'
completion: don't use __gitdir() for git commands
completion: consolidate silencing errors from git commands
completion: don't guard git executions with __gitdir()
completion: extract repository discovery from __gitdir()
completion: cache the path to the repository
completion: restore removed line continuating backslash
completion: remove redundant __gitcomp_nl() options from _git_commit()
tests: create an interactive gdb session with the 'debug' helper
tests: make the 'test_pause' helper work in non-verbose mode
pickaxe: fix segfault with '-S<...> --pickaxe-regex'
completion: wrap __git_refs() for better option parsing
completion: support completing full refs after '--option=refs/<TAB>'
completion: support completing fully qualified non-fast-forward refspecs
completion: support excluding full refs
completion: don't disambiguate tags and branches
completion: don't disambiguate short refs
completion: let 'for-each-ref' and 'ls-remote' filter matching refs
completion: let 'for-each-ref' strip the remote name from remote branches
completion: let 'for-each-ref' filter remote branches for 'checkout' DWIMery
completion: let 'for-each-ref' sort remote branches for 'checkout' DWIMery
completion: fill COMPREPLY directly when completing refs
completion: fill COMPREPLY directly when completing fetch refspecs
completion: speed up branch and tag completion
refs.c: use skip_prefix() in prettify_refname()
completion: put matching ctags symbol names directly into COMPREPLY
completion: extract completing ctags symbol names into helper function
completion: offer ctags symbol names for 'git log -S', '-G' and '-L:'
t6500: wait for detached auto gc at the end of the test script
Santiago Torres (1):
t7004, t7030: fix here-doc syntax errors
Sebastian Schuberth (5):
contrib: git-remote-{bzr,hg} placeholders don't need Python
sha1_file: remove an used fd variable
submodule: remove a superfluous second check for the "new" variable
gitmodules: clarify what history depth a shallow clone has
gitmodules: clarify the ignore option values
Segev Finer (2):
connect: handle putty/plink also in GIT_SSH_COMMAND
connect: Add the envvar GIT_SSH_VARIANT and ssh.variant config
Sergey Ryazanov (2):
http: honor empty http.proxy option to bypass proxy
http: fix the silent ignoring of proxy misconfiguraion
Stefan Beller (36):
Documentation: fix a typo
refs: parse_hide_refs_config to use parse_config_key
submodule init: warn about falling back to a local path
rev-parse: add --show-superproject-working-tree
submodule-config: correct error reporting for invalid ignore value
connect_work_tree_and_git_dir: safely create leading directories
lib-submodule-update.sh: reorder create_lib_submodule_repo
lib-submodule-update.sh: do not use ./. as submodule remote
lib-submodule-update: teach test_submodule_content the -C <dir> flag
lib-submodule-update.sh: replace sha1 by hash
lib-submodule-update.sh: define tests for recursing into submodules
make is_submodule_populated gently
update submodules: add submodule config parsing
update submodules: add a config option to determine if submodules are updated
submodules: introduce check to see whether to touch a submodule
update submodules: move up prepare_submodule_repo_env
submodule.c: get_super_prefix_or_empty
update submodules: add submodule_move_head
unpack-trees: pass old oid to verify_clean_submodule
unpack-trees: check if we can perform the operation for submodules
entry.c: create submodules when interesting
builtin/checkout: add --recurse-submodules switch
builtin/read-tree: add --recurse-submodules switch
wt-status: simplify by using for_each_string_list_item
t3600: rename test to describe its functionality
builtin/describe: introduce --broken flag
submodule.c: use argv_array in is_submodule_modified
submodule.c: factor out early loop termination in is_submodule_modified
submodule.c: convert is_submodule_modified to use strbuf_getwholeline
submodule.c: port is_submodule_modified to use porcelain 2
submodule.c: stricter checking for submodules in is_submodule_modified
short status: improve reporting for submodule changes
unpack-trees.c: align submodule error message to the other error messages
submodule.c: correctly handle nested submodules in is_submodule_modified
diff: submodule inline diff to initialize env array.
submodule--helper: fix typo in is_active error message
Thomas Gummerer (9):
stash: introduce push verb
stash: add test for the create command line arguments
stash: refactor stash_create
stash: teach 'push' (and 'create_stash') to honor pathspec
stash: use stash_push for no verb form
stash: allow pathspecs in the no verb form
stash: don't show internal implementation details
stash: pass the pathspec argument to git reset
stash: keep untracked files intact in stash -k
Torsten Bögershausen (1):
gitattributes.txt: document how to normalize the line endings
Valery Tolstov (1):
submodule--helper.c: remove duplicate code
Vegard Nossum (2):
xdiff -W: relax end-of-file function detection
line-log: use COPY_ARRAY to fix mis-sized memcpy
brian m. carlson (41):
hex: introduce parse_oid_hex
builtin/commit: convert to struct object_id
builtin/diff-tree: convert to struct object_id
builtin/describe: convert to struct object_id
builtin/fast-export: convert to struct object_id
builtin/fmt-merge-message: convert to struct object_id
builtin/grep: convert to struct object_id
builtin/branch: convert to struct object_id
builtin/clone: convert to struct object_id
builtin/merge: convert to struct object_id
Convert remaining callers of resolve_refdup to object_id
builtin/replace: convert to struct object_id
reflog-walk: convert struct reflog_info to struct object_id
refs: convert each_reflog_ent_fn to struct object_id
refs: simplify parsing of reflog entries
sha1_file: introduce an nth_packed_object_oid function
Convert object iteration callbacks to struct object_id
builtin/merge-base: convert to struct object_id
wt-status: convert to struct object_id
hash.h: move SHA-1 implementation selection into a header file
Define new hash-size constants for allocating memory
Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ
Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ
builtin/diff: convert to struct object_id
builtin/pull: convert portions to struct object_id
builtin/receive-pack: fix incorrect pointer arithmetic
builtin/receive-pack: convert portions to struct object_id
fsck: convert init_skiplist to struct object_id
parse-options-cb: convert sha1_array_append caller to struct object_id
test-sha1-array: convert most code to struct object_id
sha1_name: convert struct disambiguate_state to object_id
sha1_name: convert disambiguate_hint_fn to take object_id
submodule: convert check_for_new_submodule_commits to object_id
builtin/pull: convert to struct object_id
sha1-array: convert internal storage for struct sha1_array to object_id
Make sha1_array_append take a struct object_id *
Convert remaining callers of sha1_array_lookup to object_id
Convert sha1_array_lookup to take struct object_id
Convert sha1_array_for_each_unique and for_each_abbrev to object_id
Rename sha1_array to oid_array
Documentation: update and rename api-sha1-array.txt
Ævar Arnfjörð Bjarmason (32):
cvs tests: skip tests that call "cvs commit" when running as root
gitweb tests: change confusing "skip_all" phrasing
gitweb tests: skip tests when we don't have Time::HiRes
doc: change erroneous --[no]-whatever into --[no-]whatever
push: mention "push.default=tracking" in the documentation
tag doc: move the description of --[no-]merged earlier
tag doc: split up the --[no-]merged documentation
tag doc: reword --[no-]merged to talk about commits, not tips
ref-filter: make combining --merged & --no-merged an error
doc/SubmittingPatches: clarify the casing convention for "area: change..."
t/README: link to metacpan.org, not search.cpan.org
t/README: change "Inside <X> part" to "Inside the <X> part"
ref-filter: add test for --contains on a non-commit
tag: remove a TODO item from the test suite
tag tests: fix a typo in a test description
for-each-ref: partly change <object> to <commit> in help
branch doc: change `git branch <pattern>` to use `<branchname>`
tag: add more incompatibles mode tests
parse-options: add OPT_NONEG to the "contains" option
tag: change misleading --list <pattern> documentation
tag: implicitly supply --list given another list-like option
tag: change --point-at to default to HEAD
ref-filter: add --no-contains option to tag/branch/for-each-ref
ref-filter: reflow recently changed branch/tag/for-each-ref docs
tag: add tests for --with and --without
t/README: clarify the test_have_prereq documentation
doc/SubmittingPatches: show how to get a CLI commit summary
rev-parse: match @{upstream}, @{u} and @{push} case-insensitively
perl: regenerate perl.mak if perl -V changes
grep: plug a trivial memory leak
push: document & test --force-with-lease with multiple remotes
completion: expand "push --delete <remote> <ref>" for refs on that <remote>
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.12.0-rc1
@ 2017-02-10 21:29 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-02-10 21:29 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.12.0-rc1 is now available for testing
at the usual places. It is comprised of 455 non-merge commits
since v2.11.0, contributed by 65 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.12.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.11.0 are as follows.
Welcome to the Git development community!
Alan Davies, Andreas Krey, Cornelius Weig, Denton Liu, George
Vanburgh, Igor Kushnir, Jack Bates, Kristoffer Haugsbakk, Kyle
Meyer, Luis Ressel, Lukas Puehringer, Markus Hitter, Peter Law,
Rasmus Villemoes, Rogier Goossens, Stefan Dotterweich, Steven
Penny, Vinicius Kursancew, Vladimir Panteleev, and Wolfram Sang.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
마누엘, Alex Henrie, Beat Bolli, Brandon Williams, brian
m. carlson, Chris Packham, Christian Couder, David Aguilar, David
Turner, Dennis Kaarsemaker, Dimitriy Ryazantcev, Elia Pinto,
Eric Wong, Heiko Voigt, Jacob Keller, Jeff Hostetler, Jeff King,
Johannes Schindelin, Johannes Sixt, Jonathan Tan, Junio C Hamano,
Kyle J. McKay, Lars Schneider, Linus Torvalds, Luke Diamand, Matt
McCutchen, Max Kirillov, Mike Hommey, Nguyễn Thái Ngọc Duy,
Patrick Steinhardt, Paul Mackerras, Philip Oakley, Pranit Bauva,
Ramsay Jones, René Scharfe, Richard Hansen, Santiago Torres,
Satoshi Yasushima, Stefan Beller, Stephan Beyer, SZEDER Gábor,
Torsten Bögershausen, Vasco Almeida, Vegard Nossum, and Vitaly
"_Vi" Shukela.
----------------------------------------------------------------
Git 2.12 Release Notes (draft)
==============================
Backward compatibility notes.
* Use of an empty string 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 not scheduled to happen in the upcoming release (yet).
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and will be removed in a
future release.
* An ancient script "git relink" has been removed.
Updates since v2.11
-------------------
UI, Workflows & Features
* Various updates to "git p4".
* "git p4" didn't interact with the internal of .git directory
correctly in the modern "git-worktree"-enabled world.
* "git branch --list" and friends learned "--ignore-case" option to
optionally sort branches and tags case insensitively.
* In addition to %(subject), %(body), "log --pretty=format:..."
learned a new placeholder %(trailers).
* "git rebase" learned "--quit" option, which allows a user to
remove the metadata left by an earlier "git rebase" that was
manually aborted without using "git rebase --abort".
* "git clone --reference $there --recurse-submodules $super" has been
taught to guess repositories usable as references for submodules of
$super that are embedded in $there while making a clone of the
superproject borrow objects from $there; extend the mechanism to
also allow submodules of these submodules to borrow repositories
embedded in these clones of the submodules embedded in the clone of
the superproject.
* Porcelain scripts written in Perl are getting internationalized.
* "git merge --continue" has been added as a synonym to "git commit"
to conclude a merge that has stopped due to conflicts.
* Finer-grained control of what protocols are allowed for transports
during clone/fetch/push have been enabled via a new configuration
mechanism.
* "git shortlog" learned "--committer" option to group commits by
committer, instead of author.
* GitLFS integration with "git p4" has been updated.
* The isatty() emulation for Windows has been updated to eradicate
the previous hack that depended on internals of (older) MSVC
runtime.
* Some platforms no longer understand "latin-1" that is still seen in
the wild in e-mail headers; replace them with "iso-8859-1" that is
more widely known when conversion fails from/to it.
* "git grep" has been taught to optionally recurse into submodules.
* "git rm" used to refuse to remove a submodule when it has its own
git repository embedded in its working tree. It learned to move
the repository away to $GIT_DIR/modules/ of the superproject
instead, and allow the submodule to be deleted (as long as there
will be no loss of local modifications, that is).
* A recent updates to "git p4" was not usable for older p4 but it
could be made to work with minimum changes. Do so.
* "git diff" learned diff.interHunkContext configuration variable
that gives the default value for its --inter-hunk-context option.
* The prereleaseSuffix feature of version comparison that is used in
"git tag -l" did not correctly when two or more prereleases for the
same release were present (e.g. when 2.0, 2.0-beta1, and 2.0-beta2
are there and the code needs to compare 2.0-beta1 and 2.0-beta2).
* "git submodule push" learned "--recurse-submodules=only option to
push submodules out without pushing the top-level superproject.
* "git tag" and "git verify-tag" learned to put GPG verification
status in their "--format=<placeholders>" output format.
* An ancient repository conversion tool left in contrib/ has been
removed.
* "git show-ref HEAD" used with "--verify" because the user is not
interested in seeing refs/remotes/origin/HEAD, and used with
"--head" because the user does not want HEAD to be filtered out,
i.e. "git show-ref --head --verify HEAD", did not work as expected.
* "git submodule add" used to be confused and refused to add a
locally created repository; users can now use "--force" option
to add them.
(merge 619acfc78c sb/submodule-add-force later to maint).
* Some people feel the default set of colors used by "git log --graph"
rather limiting. A mechanism to customize the set of colors has
been introduced.
* "git read-tree" and its underlying unpack_trees() machinery learned
to report problematic paths prefixed with the --super-prefix option.
* When a submodule "A", which has another submodule "B" nested within
it, is "absorbed" into the top-level superproject, the inner
submodule "B" used to be left in a strange state. The logic to
adjust the .git pointers in these submodules has been corrected.
* The user can specify a custom update method that is run when
"submodule update" updates an already checked out submodule. This
was ignored when checking the submodule out for the first time and
we instead always just checked out the commit that is bound to the
path in the superproject's index.
* The command line completion (in contrib/) learned that
"git diff --submodule=" can take "diff" as a recently added option.
* The "core.logAllRefUpdates" that used to be boolean has been
enhanced to take 'always' as well, to record ref updates to refs
other than the ones that are expected to be updated (i.e. branches,
remote-tracking branches and notes).
Performance, Internal Implementation, Development Support etc.
* Commands that operate on a log message and add lines to the trailer
blocks, such as "format-patch -s", "cherry-pick (-x|-s)", and
"commit -s", have been taught to use the logic of and share the
code with "git interpret-trailer".
* The default Travis-CI configuration specifies newer P4 and GitLFS.
* The "fast hash" that had disastrous performance issues in some
corner cases has been retired from the internal diff.
* The character width table has been updated to match Unicode 9.0
* Update the procedure to generate "tags" for developer support.
* The codeflow of setting NOATIME and CLOEXEC on file descriptors Git
opens has been simplified.
* "git diff" and its family had two experimental heuristics to shift
the contents of a hunk to make the patch easier to read. One of
them turns out to be better than the other, so leave only the
"--indent-heuristic" option and remove the other one.
* A new submodule helper "git submodule embedgitdirs" to make it
easier to move embedded .git/ directory for submodules in a
superproject to .git/modules/ (and point the latter with the former
that is turned into a "gitdir:" file) has been added.
* "git push \\server\share\dir" has recently regressed and then
fixed. A test has retroactively been added for this breakage.
* Build updates for Cygwin.
* The implementation of "real_path()" was to go there with chdir(2)
and call getcwd(3), but this obviously wouldn't be usable in a
threaded environment. Rewrite it to manually resolve relative
paths including symbolic links in path components.
* Adjust documentation to help AsciiDoctor render better while not
breaking the rendering done by AsciiDoc.
* The sequencer machinery has been further enhanced so that a later
set of patches can start using it to reimplement "rebase -i".
* Update the definition of the MacOSX test environment used by
TravisCI.
* Rewrite a scripted porcelain "git difftool" in C.
* "make -C t failed" will now run only the tests that failed in the
previous run. This is usable only when prove is not use, and gives
a useless error message when run after "make clean", but otherwise
is serviceable.
* "uchar [40]" to "struct object_id" conversion continues.
Also contains various documentation updates and code clean-ups.
Fixes since v2.10
-----------------
Unless otherwise noted, all the fixes since v2.9 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* We often decide if a session is interactive by checking if the
standard I/O streams are connected to a TTY, but isatty() that
comes with Windows incorrectly returned true if it is used on NUL
(i.e. an equivalent to /dev/null). This has been fixed.
* "git svn" did not work well with path components that are "0", and
some configuration variable it uses were not documented.
* "git rev-parse --symbolic" failed with a more recent notation like
"HEAD^-1" and "HEAD^!".
* An empty directory in a working tree that can simply be nuked used
to interfere while merging or cherry-picking a change to create a
submodule directory there, which has been fixed..
* The code in "git push" to compute if any commit being pushed in the
superproject binds a commit in a submodule that hasn't been pushed
out was overly inefficient, making it unusable even for a small
project that does not have any submodule but have a reasonable
number of refs.
* "git push --dry-run --recurse-submodule=on-demand" wasn't
"--dry-run" in the submodules.
* The output from "git worktree list" was made in readdir() order,
and was unstable.
* mergetool.<tool>.trustExitCode configuration variable did not apply
to built-in tools, but now it does.
* "git p4" LFS support was broken when LFS stores an empty blob.
* A corner case in merge-recursive regression that crept in
during 2.10 development cycle has been fixed.
* Transport with dumb http can be fooled into following foreign URLs
that the end user does not intend to, especially with the server
side redirects and http-alternates mechanism, which can lead to
security issues. Tighten the redirection and make it more obvious
to the end user when it happens.
* Update the error messages from the dumb-http client when it fails
to obtain loose objects; we used to give sensible error message
only upon 404 but we now forbid unexpected redirects that needs to
be reported with something sensible.
* When diff.renames configuration is on (and with Git 2.9 and later,
it is enabled by default, which made it worse), "git stash"
misbehaved if a file is removed and another file with a very
similar content is added.
* "git diff --no-index" did not take "--no-abbrev" option.
* "git difftool --dir-diff" had a minor regression when started from
a subdirectory, which has been fixed.
* "git commit --allow-empty --only" (no pathspec) with dirty index
ought to be an acceptable way to create a new commit that does not
change any paths, but it was forbidden, perhaps because nobody
needed it so far.
* Git 2.11 had a minor regression in "merge --ff-only" that competed
with another process that simultanously attempted to update the
index. We used to explain what went wrong with an error message,
but the new code silently failed. The error message has been
resurrected.
* A pathname that begins with "//" or "\\" on Windows is special but
path normalization logic was unaware of it.
* "git pull --rebase", when there is no new commits on our side since
we forked from the upstream, should be able to fast-forward without
invoking "git rebase", but it didn't.
* The way to specify hotkeys to "xxdiff" that is used by "git
mergetool" has been modernized to match recent versions of xxdiff.
* Unlike "git am --abort", "git cherry-pick --abort" moved HEAD back
to where cherry-pick started while picking multiple changes, when
the cherry-pick stopped to ask for help from the user, and the user
did "git reset --hard" to a different commit in order to re-attempt
the operation.
* Code cleanup in shallow boundary computation.
* A recent update to receive-pack to make it easier to drop garbage
objects made it clear that GIT_ALTERNATE_OBJECT_DIRECTORIES cannot
have a pathname with a colon in it (no surprise!), and this in turn
made it impossible to push into a repository at such a path. This
has been fixed by introducing a quoting mechanism used when
appending such a path to the colon-separated list.
* The function usage_msg_opt() has been updated to say "fatal:"
before the custom message programs give, when they want to die
with a message about wrong command line options followed by the
standard usage string.
* "git index-pack --stdin" needs an access to an existing repository,
but "git index-pack file.pack" to generate an .idx file that
corresponds to a packfile does not.
* Fix for NDEBUG builds.
* A lazy "git push" without refspec did not internally use a fully
specified refspec to perform 'current', 'simple', or 'upstream'
push, causing unnecessary "ambiguous ref" errors.
* "git p4" misbehaved when swapping a directory and a symbolic link.
* Even though an fix was attempted in Git 2.9.3 days, but running
"git difftool --dir-diff" from a subdirectory never worked. This
has been fixed.
* "git p4" that tracks multile p4 paths imported a single changelist
that touches files in these multiple paths as one commit, followed
by many empty commits. This has been fixed.
* A potential but unlikely buffer overflow in Windows port has been
fixed.
* When the http server gives an incomplete response to a smart-http
rpc call, it could lead to client waiting for a full response that
will never come. Teach the client side to notice this condition
and abort the transfer.
* Compression setting for producing packfiles were spread across
three codepaths, one of which did not honor any configuration.
Unify these so that all of them honor core.compression and
pack.compression variables the same way.
* "git fast-import" sometimes mishandled while rebalancing notes
tree, which has been fixed.
* Recent update to the default abbreviation length that auto-scales
lacked documentation update, which has been corrected.
* Leakage of lockfiles in the config subsystem has been fixed.
* It is natural that "git gc --auto" may not attempt to pack
everything into a single pack, and there is no point in warning
when the user has configured the system to use the pack bitmap,
leading to disabling further "gc".
* "git archive" did not read the standard configuration files, and
failed to notice a file that is marked as binary via the userdiff
driver configuration.
* "git blame --porcelain" misidentified the "previous" <commit, path>
pair (aka "source") when contents came from two or more files.
* "git rebase -i" with a recent update started showing an incorrect
count when squashing more than 10 commits.
* "git <cmd> @{push}" on a detached HEAD used to segfault; it has
been corrected to error out with a message.
* Running "git add a/b" when "a" is a submodule correctly errored
out, but without a meaningful error message.
(merge 2d81c48fa7 sb/pathspec-errors later to maint).
* Typing ^C to pager, which usually does not kill it, killed Git and
took the pager down as a collateral damage in certain process-tree
structure. This has been fixed.
* "git mergetool" without any pathspec on the command line that is
run from a subdirectory became no-op in Git v2.11 by mistake, which
has been fixed.
* Retire long unused/unmaintained gitview from the contrib/ area.
(merge 3120925c25 sb/remove-gitview later to maint).
* Tighten a test to avoid mistaking an extended ERE regexp engine as
a PRE regexp engine.
* An error message with an ASCII control character like '\r' in it
can alter the message to hide its early part, which is problematic
when a remote side gives such an error message that the local side
will relay with a "remote: " prefix.
(merge f290089879 jk/vreport-sanitize later to maint).
* "git fsck" inspects loose objects more carefully now.
(merge cce044df7f jk/loose-object-fsck later to maint).
* A crashing bug introduced in v2.11 timeframe has been found (it is
triggerable only in fast-import) and fixed.
(merge abd5a00268 jk/clear-delta-base-cache-fix later to maint).
* With an anticipatory tweak for remotes defined in ~/.gitconfig
(e.g. "remote.origin.prune" set to true, even though there may or
may not actually be "origin" remote defined in a particular Git
repository), "git remote rename" and other commands misinterpreted
and behaved as if such a non-existing remote actually existed.
(merge e459b073fb js/remote-rename-with-half-configured-remote later to maint).
* A few codepaths had to rely on a global variable when sorting
elements of an array because sort(3) API does not allow extra data
to be passed to the comparison function. Use qsort_s() when
natively available, and a fallback implementation of it when not,
to eliminate the need, which is a prerequisite for making the
codepath reentrant.
* "git fsck --connectivity-check" was not working at all.
(merge a2b22854bd jk/fsck-connectivity-check-fix later to maint).
* After starting "git rebase -i", which first opens the user's editor
to edit the series of patches to apply, but before saving the
contents of that file, "git status" failed to show the current
state (i.e. you are in an interactive rebase session, but you have
applied no steps yet) correctly.
(merge df9ded4984 js/status-pre-rebase-i later to maint).
* Test tweak for FreeBSD where /usr/bin/unzip is unsuitable to run
our tests but /usr/local/bin/unzip is usable.
(merge d98b2c5fce js/unzip-in-usr-bin-workaround later to maint).
* "git p4" did not work well with multiple git-p4.mapUser entries on
Windows.
(merge c3c2b05776 gv/mingw-p4-mapuser later to maint).
* "git help" enumerates executable files in $PATH; the implementation
of "is this file executable?" on Windows has been optimized.
(merge c755015f79 hv/mingw-help-is-executable later to maint).
* Test tweaks for those who have default ACL in their git source tree
that interfere with the umask test.
(merge d549d21307 mm/reset-facl-before-umask-test later to maint).
* Names of the various hook scripts must be spelled exactly, but on
Windows, an .exe binary must be named with .exe suffix; notice
$GIT_DIR/hooks/<hookname>.exe as a valid <hookname> hook.
(merge 235be51fbe js/mingw-hooks-with-exe-suffix later to maint).
* Asciidoctor, an alternative reimplementation of AsciiDoc, still
needs some changes to work with documents meant to be formatted
with AsciiDoc. "make USE_ASCIIDOCTOR=YesPlease" to use it out of
the box to document our pages is getting closer to reality.
* Correct command line completion (in contrib/) on "git svn"
(merge 2cbad17642 ew/complete-svn-authorship-options later to maint).
* Incorrect usage help message for "git worktree prune" has been fixed.
(merge 2488dcab22 ps/worktree-prune-help-fix later to maint).
* Adjust a perf test to new world order where commands that do
require a repository are really strict about having a repository.
(merge c86000c1a7 rs/p5302-create-repositories-before-tests later to maint).
* "git log --graph" did not work well with "--name-only", even though
other forms of "diff" output were handled correctly.
(merge f5022b5fed jk/log-graph-name-only later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge f2627d9b19 sb/submodule-config-cleanup later to maint).
(merge 384f1a167b sb/unpack-trees-cleanup later to maint).
(merge 874444b704 rh/diff-orderfile-doc later to maint).
(merge eafd5d9483 cw/doc-sign-off later to maint).
(merge 0aaad415bc rs/absolute-pathdup later to maint).
(merge 4432dd6b5b rs/receive-pack-cleanup later to maint).
(merge 540a398e9c sg/mailmap-self later to maint).
(merge 209df269a6 nd/rev-list-all-includes-HEAD-doc later to maint).
----------------------------------------------------------------
Changes since v2.11.0 are as follows:
Alan Davies (1):
mingw: fix colourization on Cygwin pseudo terminals
Alex Henrie (3):
bisect: improve English grammar of not-ancestors message
receive-pack: improve English grammar of denyCurrentBranch message
clone,fetch: explain the shallow-clone option a little more clearly
Andreas Krey (2):
commit: make --only --allow-empty work without paths
commit: remove 'Clever' message for --only --amend
Beat Bolli (6):
update_unicode.sh: move it into contrib/update-unicode
update_unicode.sh: remove an unnecessary subshell level
update_unicode.sh: pin the uniset repo to a known good commit
update_unicode.sh: automatically download newer definition files
update_unicode.sh: remove the plane filter
unicode_width.h: update the width tables to Unicode 9.0
Brandon Williams (40):
push: --dry-run updates submodules when --recurse-submodules=on-demand
push: fix --dry-run to not push submodules
real_path: resolve symlinks by hand
real_path: convert real_path_internal to strbuf_realpath
real_path: create real_pathdup
real_path: have callers use real_pathdup and strbuf_realpath
lib-proto-disable: variable name fix
http: always warn if libcurl version is too old
transport: add protocol policy config option
http: create function to get curl allowed protocols
transport: add from_user parameter to is_transport_allowed
transport: reformat flag #defines to be more readable
submodules: add RECURSE_SUBMODULES_ONLY value
push: add option to push only submodules
submodules: add helper to determine if a submodule is populated
submodules: add helper to determine if a submodule is initialized
submodules: load gitmodules file from commit sha1
grep: add submodules as a grep source type
grep: optionally recurse into submodules
grep: enable recurse-submodules to work on <tree> objects
grep: search history of moved submodules
mv: remove use of deprecated 'get_pathspec()'
dir: remove struct path_simplify
dir: convert fill_directory to use the pathspec struct interface
ls-tree: convert show_recursive to use the pathspec struct interface
pathspec: remove the deprecated get_pathspec function
pathspec: copy and free owned memory
pathspec: remove unused variable from unsupported_magic
pathspec: always show mnemonic and name in unsupported_magic
pathspec: simpler logic to prefix original pathspec elements
pathspec: factor global magic into its own function
pathspec: create parse_short_magic function
pathspec: create parse_long_magic function
pathspec: create parse_element_magic helper
pathspec: create strip submodule slash helpers
pathspec: small readability changes
pathspec: rename prefix_pathspec to init_pathspec_item
real_path: prevent redefinition of MAXSYMLINKS
real_path: set errno when max number of symlinks is exceeded
index: improve constness for reading blob data
Chris Packham (3):
merge: add '--continue' option as a synonym for 'git commit'
completion: add --continue option for merge
merge: ensure '--abort' option takes no arguments
Christian Couder (1):
Documentation/bisect: improve on (bad|new) and (good|bad)
Cornelius Weig (7):
doc: clarify distinction between sign-off and pgp-signing
config: add markup to core.logAllRefUpdates doc
refs: add option core.logAllRefUpdates = always
update-ref: add test cases for bare repository
doc: add doc for git-push --recurse-submodules=only
completion: add completion for --recurse-submodules=only
doc: add note about ignoring '--no-create-reflog'
David Aguilar (12):
mergetool: honor mergetool.$tool.trustExitCode for built-in tools
mergetools/vimdiff: trust Vim's exit code
difftool: fix dir-diff index creation when in a subdirectory
difftool: fix dir-diff index creation when in a subdirectory
difftool: sanitize $workdir as early as possible
difftool: chdir as early as possible
difftool: rename variables for consistency
mergetools: fix xxdiff hotkeys
gitk: Remove translated message from comments
difftool: fix bug when printing usage
t7800: simplify basic usage test
t7800: replace "wc -l" with test_line_count
David Turner (5):
submodules: allow empty working-tree dirs in merge/cherry-pick
remote-curl: don't hang when a server dies before any output
upload-pack: optionally allow fetching any sha1
auto gc: don't write bitmaps for incremental repacks
repack: die on incremental + write-bitmap-index
Dennis Kaarsemaker (1):
push: test pushing ambiguously named branches
Denton Liu (1):
Document the --no-gui option in difftool
Dimitriy Ryazantcev (1):
gitk: ru.po: Update Russian translation
Elia Pinto (2):
builtin/commit.c: remove the PATH_MAX limitation via dynamic allocation
builtin/commit.c: switch to strbuf, instead of snprintf()
Eric Wong (3):
git-svn: allow "0" in SVN path components
git-svn: document useLogAuthor and addAuthorFrom config keys
completion: fix git svn authorship switches
George Vanburgh (2):
git-p4: fix multi-path changelist empty commits
git-p4: fix git-p4.mapUser on Windows
Heiko Voigt (5):
serialize collection of changed submodules
serialize collection of refs that contain submodule changes
batch check whether submodule needs pushing into one call
submodule_needs_pushing(): explain the behaviour when we cannot answer
help: improve is_executable() on Windows
Igor Kushnir (1):
git-p4: do not pass '-r 0' to p4 commands
Jack Bates (1):
diff: handle --no-abbrev in no-index case
Jacob Keller (3):
pretty: add %(trailers) format for displaying trailers of a commit message
ref-filter: add support to display trailers as part of contents
reset: add an example of how to split a commit into two
Jeff Hostetler (1):
mingw: replace isatty() hack
Jeff King (58):
rev-parse: fix parent shorthands with --symbolic
t7610: clean up foo.XXXXXX tmpdir
http: simplify update_url_from_redirect
http: always update the base URL for redirects
remote-curl: rename shadowed options variable
http: make redirects more obvious
http: treat http-alternates like redirects
http-walker: complain about non-404 loose object errors
xdiff: drop XDL_FAST_HASH
stash: prefer plumbing over git-diff
alternates: accept double-quoted paths
tmp-objdir: quote paths we add to alternates
Makefile: reformat FIND_SOURCE_FILES
Makefile: exclude test cruft from FIND_SOURCE_FILES
Makefile: match shell scripts in FIND_SOURCE_FILES
Makefile: exclude contrib from FIND_SOURCE_FILES
parse-options: print "fatal:" before usage_msg_opt()
http: respect protocol.*.allow=user for http-alternates
README: replace gmane link with public-inbox
merge: mark usage error strings for translation
t5000: extract nongit function to test-lib-functions.sh
index-pack: complain when --stdin is used outside of a repo
t: use nongit() function where applicable
shortlog: test and document --committer option
index-pack: skip collision check when not in repository
archive-zip: load userdiff config
rebase--interactive: count squash commits above 10 correctly
blame: fix alignment with --abbrev=40
blame: handle --no-abbrev
blame: output porcelain "previous" header for each file
git_exec_path: do not return the result of getenv()
execv_dashed_external: use child_process struct
execv_dashed_external: stop exiting with negative code
execv_dashed_external: wait for child on signal death
t7810: avoid assumption about invalid regex syntax
Revert "vreportf: avoid intermediate buffer"
vreport: sanitize ASCII control chars
t1450: refactor loose-object removal
sha1_file: fix error message for alternate objects
t1450: test fsck of packed objects
sha1_file: add read_loose_object() function
fsck: parse loose object paths directly
fsck: detect trailing garbage in all object types
t1450: clean up sub-objects in duplicate-entry test
fsck: report trees as dangling
fsck: prepare dummy objects for --connectivity-check
fsck: tighten error-checks of "git fsck <head>"
fsck: do not fallback "git fsck <bogus>" to "git fsck"
fsck: check HAS_OBJ more consistently
CodingGuidelines: clarify multi-line brace style
clear_delta_base_cache(): don't modify hashmap while iterating
t1450: use "mv -f" within loose object directory
difftool: hack around -Wzero-length-format warning
fsck: move typename() printing to its own function
fsck: lazily load types under --connectivity-only
color_parse_mem: allow empty color spec
document behavior of empty color name
diff: print line prefix for --name-only output
Johannes Schindelin (56):
cherry-pick: demonstrate a segmentation fault
merge-recursive: handle NULL in add_cacheinfo() correctly
mingw: intercept isatty() to handle /dev/null as Git expects it
mingw: adjust is_console() to work with stdin
mingw: add a regression test for pushing to UNC paths
giteveryday: unbreak rendering with AsciiDoctor
git_exec_path: avoid Coverity warning about unfree()d result
sequencer: avoid unnecessary curly braces
sequencer: move "else" keyword onto the same line as preceding brace
sequencer: use a helper to find the commit message
sequencer: support a new action: 'interactive rebase'
sequencer (rebase -i): implement the 'noop' command
sequencer (rebase -i): implement the 'edit' command
sequencer (rebase -i): implement the 'exec' command
sequencer (rebase -i): learn about the 'verbose' mode
sequencer (rebase -i): write the 'done' file
sequencer (rebase -i): add support for the 'fixup' and 'squash' commands
sequencer (rebase -i): implement the short commands
sequencer (rebase -i): write an author-script file
sequencer (rebase -i): allow continuing with staged changes
sequencer (rebase -i): remove CHERRY_PICK_HEAD when no longer needed
sequencer (rebase -i): skip some revert/cherry-pick specific code path
sequencer (rebase -i): the todo can be empty when continuing
sequencer (rebase -i): update refs after a successful rebase
sequencer (rebase -i): leave a patch upon error
sequencer (rebase -i): implement the 'reword' command
sequencer (rebase -i): allow fast-forwarding for edit/reword
sequencer (rebase -i): refactor setting the reflog message
sequencer (rebase -i): set the reflog message consistently
sequencer (rebase -i): copy commit notes at end
sequencer (rebase -i): record interrupted commits in rewritten, too
sequencer (rebase -i): run the post-rewrite hook, if needed
sequencer (rebase -i): respect the rebase.autostash setting
sequencer (rebase -i): respect strategy/strategy_opts settings
sequencer (rebase -i): allow rescheduling commands
sequencer (rebase -i): implement the 'drop' command
sequencer (rebase -i): differentiate between comments and 'noop'
difftool: add a skeleton for the upcoming builtin
sequencer: update reading author-script
sequencer: use run_command() directly
sequencer (rebase -i): show only failed `git commit`'s output
sequencer (rebase -i): show only failed cherry-picks' output
sequencer (rebase -i): suggest --edit-todo upon unknown command
sequencer (rebase -i): show the progress
sequencer (rebase -i): write the progress into files
sequencer (rebase -i): write out the final message
mingw: follow-up to "replace isatty() hack"
difftool: implement the functionality in the builtin
difftool: retire the scripted version
remote rename: demonstrate a bogus "remote exists" bug
remote rename: more carefully determine whether a remote is configured
relink: retire the command
status: be prepared for not-yet-started interactive rebase
t/Makefile: add a rule to re-run previously-failed tests
test-lib: on FreeBSD, look for unzip(1) in /usr/local/bin/
mingw: allow hooks to be .exe files
Johannes Sixt (4):
t5547-push-quarantine: run the path separator test on Windows, too
normalize_path_copy(): fix pushing to //server/share/dir on Windows
t5615-alternate-env: double-quotes in file names do not work on Windows
real_path: canonicalize directory separators in root parts
Jonathan Tan (6):
fetch: do not redundantly calculate tag refmap
trailer: be stricter in parsing separators
commit: make ignore_non_trailer take buf/len
trailer: avoid unnecessary splitting on lines
trailer: have function to describe trailer layout
sequencer: use trailer's trailer layout
Junio C Hamano (37):
utf8: refactor code to decide fallback encoding
utf8: accept "latin-1" as ISO-8859-1
git_open(): untangle possible NOATIME and CLOEXEC interactions
push: do not use potentially ambiguous default refspec
git_open_cloexec(): use fcntl(2) w/ FD_CLOEXEC fallback
sha1_file: stop opening files with O_NOATIME
compression: unify pack.compression configuration parsing
pull: fast-forward "pull --rebase=true"
preparing for 2.10.3
Start post 2.11 cycle
wt-status: implement opportunisitc index update correctly
hold_locked_index(): align error handling with hold_lockfile_for_update()
lockfile: LOCK_REPORT_ON_ERROR
Early fixes for 2.11.x series
Revert "sequencer: remove useless get_dir() function"
First batch for 2.12
Second batch for 2.12
i18n: fix misconversion in shell scripts
t4201: make tests work with and without the MINGW prerequiste
Third batch for 2.12
config.abbrev: document the new default that auto-scales
diff: retire "compaction" heuristics
lockfile: move REPORT_ON_ERROR bit elsewhere
Fourth batch for 2.12
Fifth batch 2.12
Almost ready for 2.11.1
RelNotes: drop merge-later comments for maint
Sixth batch for 2.12
Seventh batch for 2.12
show-ref: remove a stale comment
relink: really remove the command
Eighth batch for 2.12
Ready for 2.11.1
Git 2.11.1
Ninth batch for 2.12; almost ready for -rc0
Git 2.12-rc0
Git 2.12-rc1
Kristoffer Haugsbakk (4):
doc: add articles (grammar)
doc: add verb in front of command to run
doc: make the intent of sentence clearer
doc: omit needless "for"
Kyle J. McKay (1):
mailinfo.c: move side-effects outside of assert
Kyle Meyer (1):
branch_get_push: do not segfault when HEAD is detached
Lars Schneider (8):
git-p4: add config to retry p4 commands; retry 3 times by default
travis-ci: update P4 to 16.2 and GitLFS to 1.5.2 in Linux build
git-p4: fix empty file processing for large file system backend GitLFS
t0021: minor filter process test cleanup
docs: warn about possible '=' in clean/smudge filter process values
t0021: fix flaky test
git-p4: add diff/merge properties to .gitattributes for GitLFS files
travis-ci: fix Perforce install on macOS
Linus Torvalds (1):
shortlog: group by committer information
Luis Ressel (1):
date-formats.txt: Typo fix
Lukas Puehringer (3):
gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag
ref-filter: add function to print single ref_array_item
builtin/tag: add --format argument for tag -v
Luke Diamand (3):
git-p4: support updating an existing shelved changelist
git-p4: support git worktrees
git-p4: avoid crash adding symlinked directory
Markus Hitter (3):
gitk: Turn off undo manager in the text widget
gitk: Remove closed file descriptors from $blobdifffd
gitk: Clear array 'commitinfo' on reload
Matt McCutchen (3):
doc: mention transfer data leaks in more places
git-gc.txt: expand discussion of races with other processes
t0001: don't let a default ACL interfere with the umask test
Max Kirillov (1):
mingw: consider that UNICODE_STRING::Length counts bytes
Mike Hommey (1):
fast-import: properly fanout notes when tree is imported
Nguyễn Thái Ngọc Duy (19):
worktree.c: zero new 'struct worktree' on allocation
worktree: reorder an if statement
get_worktrees() must return main worktree as first item even on error
worktree.c: get_worktrees() takes a new flag argument
worktree list: keep the list sorted
merge-recursive.c: use string_list_sort instead of qsort
tag, branch, for-each-ref: add --ignore-case for sorting and filtering
shallow.c: rename fields in paint_info to better express their purposes
shallow.c: stop abusing COMMIT_SLAB_SIZE for paint_info's memory pools
shallow.c: make paint_alloc slightly more robust
shallow.c: remove useless code
rebase: add --quit to cleanup rebase, leave everything else untouched
config.c: handle error case for fstat() calls
config.c: rename label unlock_and_out
config.c: handle lock file in error case in git_config_rename_...
color.c: fix color_parse_mem() with value_len == 0
color.c: trim leading spaces in color_parse_mem()
log --graph: customize the graph lines with config log.graphColors
rev-list-options.txt: update --all about HEAD
Patrick Steinhardt (1):
worktree: fix option descriptions for `prune`
Paul Mackerras (2):
gitk: Use explicit RGB green instead of "lime"
gitk: Update copyright notice to 2016
Peter Law (1):
Completion: Add support for --submodule=diff
Philip Oakley (3):
doc: gitk: remove gitview reference
doc: gitk: add the upstream repo location
doc: git-gui browser does not default to HEAD
Pranit Bauva (2):
don't use test_must_fail with grep
t9813: avoid using pipes
Ramsay Jones (1):
GIT-VERSION-GEN: do not force abbreviation length used by 'describe'
Rasmus Villemoes (2):
shallow.c: avoid theoretical pointer wrap-around
shallow.c: bit manipulation tweaks
René Scharfe (13):
compat: add qsort_s()
add QSORT_S
perf: add basic sort performance test
string-list: use QSORT_S in string_list_sort()
ref-filter: use QSORT_S in ref_array_sort()
abspath: add absolute_pathdup()
use absolute_pathdup()
use oid_to_hex_r() for converting struct object_id hashes to hex strings
use oidcpy() for copying hashes between instances of struct object_id
checkout: convert post_checkout_hook() to struct object_id
receive-pack: call string_list_clear() unconditionally
p5302: create repositories for index-pack results explicitly
dir: avoid allocation in fill_directory()
Richard Hansen (16):
.mailmap: record canonical email for Richard Hansen
rev-parse doc: pass "--" to rev-parse in the --prefix example
t7610: update branch names to match test number
t7610: move setup code to the 'setup' test case
t7610: use test_when_finished for cleanup tasks
t7610: don't rely on state from previous test
t7610: run 'git reset --hard' after each test to clean up
t7610: delete some now-unnecessary 'git reset --hard' lines
t7610: always work on a test-specific branch
t7610: don't assume the checked-out commit
t7610: spell 'git reset --hard' consistently
t7610: add test case for rerere+mergetool+subdir bug
mergetool: take the "-O" out of $orderfile
mergetool: fix running in subdir when rerere enabled
diff: document behavior of relative diff.orderFile
diff: document the format of the -O (diff.orderFile) file
Rogier Goossens (3):
gitk: Add a 'rename' option to the branch context menu
gitk: Allow checking out a remote branch
gitk: Include commit title in branch dialog
SZEDER Gábor (9):
t7004-tag: delete unnecessary tags with test_when_finished
t7004-tag: use test_config helper
t7004-tag: add version sort tests to show prerelease reordering issues
versioncmp: pass full tagnames to swap_prereleases()
versioncmp: cope with common part overlapping with prerelease suffix
versioncmp: use earliest-longest contained suffix to determine sorting order
versioncmp: factor out helper for suffix matching
versioncmp: generalize version sort suffix reordering
.mailmap: update Gábor Szeder's email address
Santiago Torres (3):
builtin/verify-tag: add --format to verify-tag
t/t7030-verify-tag: Add --format specifier tests
t/t7004-tag: Add --format specifier tests
Satoshi Yasushima (1):
gitk: Fix Japanese translation for "marked commit"
Stefan Beller (42):
submodule config: inline config_from_{name, path}
submodule-config: rename commit_sha1 to treeish_name
submodule-config: clarify parsing of null_sha1 element
submodule add: extend force flag to add existing repos
unpack-trees: fix grammar for untracked files in directories
t3600: remove useless redirect
submodule: use absolute path for computing relative path connecting
submodule helper: support super prefix
test-lib-functions.sh: teach test_commit -C <dir>
worktree: check if a submodule uses worktrees
move connect_work_tree_and_git_dir to dir.h
submodule: add absorb-git-dir function
t3600: slightly modernize style
worktree: initialize return value for submodule_uses_worktrees
submodule.h: add extern keyword to functions
submodule: modernize ok_to_remove_submodule to use argv_array
submodule: rename and add flags to ok_to_remove_submodule
rm: absorb a submodules git dir before deletion
submodule.c: use GIT_DIR_ENVIRONMENT consistently
contrib: remove gitview
pathspec: give better message for submodule related pathspec error
unpack-trees: move checkout state into check_updates
unpack-trees: remove unneeded continue
unpack-trees: factor progress setup out of check_updates
read-tree: use OPT_BOOL instead of OPT_SET_INT
t1000: modernize style
t1001: modernize style
submodule absorbgitdirs: mention in docstring help
t7411: quote URLs
t7411: test lookup of uninitialized submodules
submodule update --init: display correct path from submodule
lib-submodule-update.sh: reduce use of subshell by using "git -C"
cache.h: document index_name_pos
cache.h: document remove_index_entry_at
cache.h: document add_[file_]to_index
documentation: retire unfinished documentation
contrib: remove git-convert-objects
unpack-trees: support super-prefix option
setup: add gentle version of resolve_git_dir
cache.h: expose the dying procedure for reading gitlinks
submodule absorbing: fix worktree/gitdir pointers recursively for non-moves
submodule update: run custom update script for initial populating as well
Stefan Dotterweich (1):
gitk: Fix missing commits when using -S or -G
Stephan Beyer (5):
am: fix filename in safe_to_abort() error message
am: change safe_to_abort()'s not rewinding error into a warning
t3510: test that cherry-pick --abort does not unsafely change HEAD
sequencer: make sequencer abort safer
sequencer: remove useless get_dir() function
Steven Penny (2):
Makefile: POSIX windres
Makefile: put LIBS after LDFLAGS for imap-send
Torsten Bögershausen (1):
convert: git cherry-pick -Xrenormalize did not work
Vasco Almeida (18):
gitk: Makefile: create install bin directory
gitk: Add Portuguese translation
Git.pm: add subroutines for commenting lines
i18n: add--interactive: mark strings for translation
i18n: add--interactive: mark simple here-documents for translation
i18n: add--interactive: mark strings with interpolation for translation
i18n: clean.c: match string with git-add--interactive.perl
i18n: add--interactive: mark plural strings
i18n: add--interactive: mark patch prompt for translation
i18n: add--interactive: i18n of help_patch_cmd
i18n: add--interactive: mark edit_hunk_manually message for translation
i18n: add--interactive: remove %patch_modes entries
i18n: add--interactive: mark status words for translation
i18n: send-email: mark strings for translation
i18n: send-email: mark warnings and errors for translation
i18n: send-email: mark string with interpolation for translation
i18n: send-email: mark composing message for translation
i18n: difftool: mark warnings for translation
Vegard Nossum (1):
diff: add interhunk context config option
Vinicius Kursancew (1):
git-p4: allow submit to create shelved changelists.
Vitaly "_Vi" Shukela (1):
submodule--helper: set alternateLocation for cloned submodules
Vladimir Panteleev (5):
show-ref: accept HEAD with --verify
show-ref: allow -d to work with --verify
show-ref: move --quiet handling into show_one()
show-ref: detect dangling refs under --verify as well
show-ref: remove dead `if (verify)' check
Wolfram Sang (1):
request-pull: drop old USAGE stuff
brian m. carlson (8):
Documentation: fix warning in cat-texi.perl
Documentation: modernize cat-texi.perl
Documentation: remove unneeded argument in cat-texi.perl
Documentation: sort sources for gitman.texi
Documentation: add XSLT to fix DocBook for Texinfo
Documentation: move dblatex arguments into variable
Makefile: add a knob to enable the use of Asciidoctor
Documentation: implement linkgit macro for Asciidoctor
마누엘 (1):
asciidoctor: fix user-manual to be built by `asciidoctor`
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.12.0-rc0
@ 2017-02-03 21:51 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2017-02-03 21:51 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
An early preview release Git v2.12.0-rc0 is now available for
testing at the usual places. It is comprised of 441 non-merge
commits since v2.11.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.12.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.11.0 are as follows.
Welcome to the Git development community!
Alan Davies, Andreas Krey, Cornelius Weig, George Vanburgh,
Igor Kushnir, Jack Bates, Kristoffer Haugsbakk, Kyle Meyer,
Luis Ressel, Lukas Puehringer, Markus Hitter, Peter Law, Rasmus
Villemoes, Rogier Goossens, Stefan Dotterweich, Steven Penny,
Vinicius Kursancew, Vladimir Panteleev, and Wolfram Sang.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
마누엘, Alex Henrie, Beat Bolli, Brandon Williams, brian
m. carlson, Chris Packham, Christian Couder, David Aguilar,
David Turner, Dennis Kaarsemaker, Dimitriy Ryazantcev, Elia
Pinto, Eric Wong, Heiko Voigt, Jacob Keller, Jeff Hostetler,
Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Tan,
Junio C Hamano, Kyle J. McKay, Lars Schneider, Linus Torvalds,
Luke Diamand, Matt McCutchen, Max Kirillov, Mike Hommey, Nguyễn
Thái Ngọc Duy, Paul Mackerras, Philip Oakley, Pranit Bauva,
Ramsay Jones, René Scharfe, Richard Hansen, Santiago Torres,
Satoshi Yasushima, Stefan Beller, Stephan Beyer, SZEDER Gábor,
Torsten Bögershausen, Vasco Almeida, Vegard Nossum, and Vitaly
"_Vi" Shukela.
----------------------------------------------------------------
Git 2.12 Release Notes (draft)
==============================
Backward compatibility notes.
* Use of an empty string 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 not scheduled to happen in the upcoming release (yet).
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and will be removed in a
future release.
* An ancient script "git relink" has been removed.
Updates since v2.11
-------------------
UI, Workflows & Features
* Various updates to "git p4".
* "git p4" didn't interact with the internal of .git directory
correctly in the modern "git-worktree"-enabled world.
* "git branch --list" and friends learned "--ignore-case" option to
optionally sort branches and tags case insensitively.
* In addition to %(subject), %(body), "log --pretty=format:..."
learned a new placeholder %(trailers).
* "git rebase" learned "--quit" option, which allows a user to
remove the metadata left by an earlier "git rebase" that was
manually aborted without using "git rebase --abort".
* "git clone --reference $there --recurse-submodules $super" has been
taught to guess repositories usable as references for submodules of
$super that are embedded in $there while making a clone of the
superproject borrow objects from $there; extend the mechanism to
also allow submodules of these submodules to borrow repositories
embedded in these clones of the submodules embedded in the clone of
the superproject.
* Porcelain scripts written in Perl are getting internationalized.
* "git merge --continue" has been added as a synonym to "git commit"
to conclude a merge that has stopped due to conflicts.
* Finer-grained control of what protocols are allowed for transports
during clone/fetch/push have been enabled via a new configuration
mechanism.
* "git shortlog" learned "--committer" option to group commits by
committer, instead of author.
* GitLFS integration with "git p4" has been updated.
* The isatty() emulation for Windows has been updated to eradicate
the previous hack that depended on internals of (older) MSVC
runtime.
* Some platforms no longer understand "latin-1" that is still seen in
the wild in e-mail headers; replace them with "iso-8859-1" that is
more widely known when conversion fails from/to it.
* "git grep" has been taught to optionally recurse into submodules.
* "git rm" used to refuse to remove a submodule when it has its own
git repository embedded in its working tree. It learned to move
the repository away to $GIT_DIR/modules/ of the superproject
instead, and allow the submodule to be deleted (as long as there
will be no loss of local modifications, that is).
* A recent updates to "git p4" was not usable for older p4 but it
could be made to work with minimum changes. Do so.
* "git diff" learned diff.interHunkContext configuration variable
that gives the default value for its --inter-hunk-context option.
* The prereleaseSuffix feature of version comparison that is used in
"git tag -l" did not correctly when two or more prereleases for the
same release were present (e.g. when 2.0, 2.0-beta1, and 2.0-beta2
are there and the code needs to compare 2.0-beta1 and 2.0-beta2).
* "git submodule push" learned "--recurse-submodules=only option to
push submodules out without pushing the top-level superproject.
* "git tag" and "git verify-tag" learned to put GPG verification
status in their "--format=<placeholders>" output format.
* An ancient repository conversion tool left in contrib/ has been
removed.
* "git show-ref HEAD" used with "--verify" because the user is not
interested in seeing refs/remotes/origin/HEAD, and used with
"--head" because the user does not want HEAD to be filtered out,
i.e. "git show-ref --head --verify HEAD", did not work as expected.
* "git submodule add" used to be confused and refused to add a
locally created repository; users can now use "--force" option
to add them.
(merge 619acfc78c sb/submodule-add-force later to maint).
* Some people feel the default set of colors used by "git log --graph"
rather limiting. A mechanism to customize the set of colors has
been introduced.
* "git read-tree" and its underlying unpack_trees() machinery learned
to report problematic paths prefixed with the --super-prefix option.
* When a submodule "A", which has another submodule "B" nested within
it, is "absorbed" into the top-level superproject, the inner
submodule "B" used to be left in a strange state. The logic to
adjust the .git pointers in these submodules has been corrected.
* The user can specify a custom update method that is run when
"submodule update" updates an already checked out submodule. This
was ignored when checking the submodule out for the first time and
we instead always just checked out the commit that is bound to the
path in the superproject's index.
* The command line completion (in contrib/) learned that
"git diff --submodule=" can take "diff" as a recently added option.
* The "core.logAllRefUpdates" that used to be boolean has been
enhanced to take 'always' as well, to record ref updates to refs
other than the ones that are expected to be updated (i.e. branches,
remote-tracking branches and notes).
Performance, Internal Implementation, Development Support etc.
* Commands that operate on a log message and add lines to the trailer
blocks, such as "format-patch -s", "cherry-pick (-x|-s)", and
"commit -s", have been taught to use the logic of and share the
code with "git interpret-trailer".
* The default Travis-CI configuration specifies newer P4 and GitLFS.
* The "fast hash" that had disastrous performance issues in some
corner cases has been retired from the internal diff.
* The character width table has been updated to match Unicode 9.0
* Update the procedure to generate "tags" for developer support.
* The codeflow of setting NOATIME and CLOEXEC on file descriptors Git
opens has been simplified.
* "git diff" and its family had two experimental heuristics to shift
the contents of a hunk to make the patch easier to read. One of
them turns out to be better than the other, so leave only the
"--indent-heuristic" option and remove the other one.
* A new submodule helper "git submodule embedgitdirs" to make it
easier to move embedded .git/ directory for submodules in a
superproject to .git/modules/ (and point the latter with the former
that is turned into a "gitdir:" file) has been added.
* "git push \\server\share\dir" has recently regressed and then
fixed. A test has retroactively been added for this breakage.
* Build updates for Cygwin.
* The implementation of "real_path()" was to go there with chdir(2)
and call getcwd(3), but this obviously wouldn't be usable in a
threaded environment. Rewrite it to manually resolve relative
paths including symbolic links in path components.
* Adjust documentation to help AsciiDoctor render better while not
breaking the rendering done by AsciiDoc.
* The sequencer machinery has been further enhanced so that a later
set of patches can start using it to reimplement "rebase -i".
* Update the definition of the MacOSX test environment used by
TravisCI.
* Rewrite a scripted porcelain "git difftool" in C.
* "make -C t failed" will now run only the tests that failed in the
previous run. This is usable only when prove is not use, and gives
a useless error message when run after "make clean", but otherwise
is serviceable.
* "uchar [40]" to "struct object_id" conversion continues.
Also contains various documentation updates and code clean-ups.
Fixes since v2.10
-----------------
Unless otherwise noted, all the fixes since v2.9 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* We often decide if a session is interactive by checking if the
standard I/O streams are connected to a TTY, but isatty() that
comes with Windows incorrectly returned true if it is used on NUL
(i.e. an equivalent to /dev/null). This has been fixed.
* "git svn" did not work well with path components that are "0", and
some configuration variable it uses were not documented.
* "git rev-parse --symbolic" failed with a more recent notation like
"HEAD^-1" and "HEAD^!".
* An empty directory in a working tree that can simply be nuked used
to interfere while merging or cherry-picking a change to create a
submodule directory there, which has been fixed..
* The code in "git push" to compute if any commit being pushed in the
superproject binds a commit in a submodule that hasn't been pushed
out was overly inefficient, making it unusable even for a small
project that does not have any submodule but have a reasonable
number of refs.
* "git push --dry-run --recurse-submodule=on-demand" wasn't
"--dry-run" in the submodules.
* The output from "git worktree list" was made in readdir() order,
and was unstable.
* mergetool.<tool>.trustExitCode configuration variable did not apply
to built-in tools, but now it does.
* "git p4" LFS support was broken when LFS stores an empty blob.
* A corner case in merge-recursive regression that crept in
during 2.10 development cycle has been fixed.
* Transport with dumb http can be fooled into following foreign URLs
that the end user does not intend to, especially with the server
side redirects and http-alternates mechanism, which can lead to
security issues. Tighten the redirection and make it more obvious
to the end user when it happens.
* Update the error messages from the dumb-http client when it fails
to obtain loose objects; we used to give sensible error message
only upon 404 but we now forbid unexpected redirects that needs to
be reported with something sensible.
* When diff.renames configuration is on (and with Git 2.9 and later,
it is enabled by default, which made it worse), "git stash"
misbehaved if a file is removed and another file with a very
similar content is added.
* "git diff --no-index" did not take "--no-abbrev" option.
* "git difftool --dir-diff" had a minor regression when started from
a subdirectory, which has been fixed.
* "git commit --allow-empty --only" (no pathspec) with dirty index
ought to be an acceptable way to create a new commit that does not
change any paths, but it was forbidden, perhaps because nobody
needed it so far.
* Git 2.11 had a minor regression in "merge --ff-only" that competed
with another process that simultanously attempted to update the
index. We used to explain what went wrong with an error message,
but the new code silently failed. The error message has been
resurrected.
* A pathname that begins with "//" or "\\" on Windows is special but
path normalization logic was unaware of it.
* "git pull --rebase", when there is no new commits on our side since
we forked from the upstream, should be able to fast-forward without
invoking "git rebase", but it didn't.
* The way to specify hotkeys to "xxdiff" that is used by "git
mergetool" has been modernized to match recent versions of xxdiff.
* Unlike "git am --abort", "git cherry-pick --abort" moved HEAD back
to where cherry-pick started while picking multiple changes, when
the cherry-pick stopped to ask for help from the user, and the user
did "git reset --hard" to a different commit in order to re-attempt
the operation.
* Code cleanup in shallow boundary computation.
* A recent update to receive-pack to make it easier to drop garbage
objects made it clear that GIT_ALTERNATE_OBJECT_DIRECTORIES cannot
have a pathname with a colon in it (no surprise!), and this in turn
made it impossible to push into a repository at such a path. This
has been fixed by introducing a quoting mechanism used when
appending such a path to the colon-separated list.
* The function usage_msg_opt() has been updated to say "fatal:"
before the custom message programs give, when they want to die
with a message about wrong command line options followed by the
standard usage string.
* "git index-pack --stdin" needs an access to an existing repository,
but "git index-pack file.pack" to generate an .idx file that
corresponds to a packfile does not.
* Fix for NDEBUG builds.
* A lazy "git push" without refspec did not internally use a fully
specified refspec to perform 'current', 'simple', or 'upstream'
push, causing unnecessary "ambiguous ref" errors.
* "git p4" misbehaved when swapping a directory and a symbolic link.
* Even though an fix was attempted in Git 2.9.3 days, but running
"git difftool --dir-diff" from a subdirectory never worked. This
has been fixed.
* "git p4" that tracks multile p4 paths imported a single changelist
that touches files in these multiple paths as one commit, followed
by many empty commits. This has been fixed.
* A potential but unlikely buffer overflow in Windows port has been
fixed.
* When the http server gives an incomplete response to a smart-http
rpc call, it could lead to client waiting for a full response that
will never come. Teach the client side to notice this condition
and abort the transfer.
* Compression setting for producing packfiles were spread across
three codepaths, one of which did not honor any configuration.
Unify these so that all of them honor core.compression and
pack.compression variables the same way.
* "git fast-import" sometimes mishandled while rebalancing notes
tree, which has been fixed.
* Recent update to the default abbreviation length that auto-scales
lacked documentation update, which has been corrected.
* Leakage of lockfiles in the config subsystem has been fixed.
* It is natural that "git gc --auto" may not attempt to pack
everything into a single pack, and there is no point in warning
when the user has configured the system to use the pack bitmap,
leading to disabling further "gc".
* "git archive" did not read the standard configuration files, and
failed to notice a file that is marked as binary via the userdiff
driver configuration.
* "git blame --porcelain" misidentified the "previous" <commit, path>
pair (aka "source") when contents came from two or more files.
* "git rebase -i" with a recent update started showing an incorrect
count when squashing more than 10 commits.
* "git <cmd> @{push}" on a detached HEAD used to segfault; it has
been corrected to error out with a message.
* Running "git add a/b" when "a" is a submodule correctly errored
out, but without a meaningful error message.
(merge 2d81c48fa7 sb/pathspec-errors later to maint).
* Typing ^C to pager, which usually does not kill it, killed Git and
took the pager down as a collateral damage in certain process-tree
structure. This has been fixed.
* "git mergetool" without any pathspec on the command line that is
run from a subdirectory became no-op in Git v2.11 by mistake, which
has been fixed.
* Retire long unused/unmaintained gitview from the contrib/ area.
(merge 3120925c25 sb/remove-gitview later to maint).
* Tighten a test to avoid mistaking an extended ERE regexp engine as
a PRE regexp engine.
* An error message with an ASCII control character like '\r' in it
can alter the message to hide its early part, which is problematic
when a remote side gives such an error message that the local side
will relay with a "remote: " prefix.
(merge f290089879 jk/vreport-sanitize later to maint).
* "git fsck" inspects loose objects more carefully now.
(merge cce044df7f jk/loose-object-fsck later to maint).
* A crashing bug introduced in v2.11 timeframe has been found (it is
triggerable only in fast-import) and fixed.
(merge abd5a00268 jk/clear-delta-base-cache-fix later to maint).
* With an anticipatory tweak for remotes defined in ~/.gitconfig
(e.g. "remote.origin.prune" set to true, even though there may or
may not actually be "origin" remote defined in a particular Git
repository), "git remote rename" and other commands misinterpreted
and behaved as if such a non-existing remote actually existed.
(merge e459b073fb js/remote-rename-with-half-configured-remote later to maint).
* A few codepaths had to rely on a global variable when sorting
elements of an array because sort(3) API does not allow extra data
to be passed to the comparison function. Use qsort_s() when
natively available, and a fallback implementation of it when not,
to eliminate the need, which is a prerequisite for making the
codepath reentrant.
* "git fsck --connectivity-check" was not working at all.
(merge a2b22854bd jk/fsck-connectivity-check-fix later to maint).
* After starting "git rebase -i", which first opens the user's editor
to edit the series of patches to apply, but before saving the
contents of that file, "git status" failed to show the current
state (i.e. you are in an interactive rebase session, but you have
applied no steps yet) correctly.
(merge df9ded4984 js/status-pre-rebase-i later to maint).
* Test tweak for FreeBSD where /usr/bin/unzip is unsuitable to run
our tests but /usr/local/bin/unzip is usable.
(merge d98b2c5fce js/unzip-in-usr-bin-workaround later to maint).
* "git p4" did not work well with multiple git-p4.mapUser entries on
Windows.
(merge c3c2b05776 gv/mingw-p4-mapuser later to maint).
* "git help" enumerates executable files in $PATH; the implementation
of "is this file executable?" on Windows has been optimized.
(merge c755015f79 hv/mingw-help-is-executable later to maint).
* Test tweaks for those who have default ACL in their git source tree
that interfere with the umask test.
(merge d549d21307 mm/reset-facl-before-umask-test later to maint).
* Names of the various hook scripts must be spelled exactly, but on
Windows, an .exe binary must be named with .exe suffix; notice
$GIT_DIR/hooks/<hookname>.exe as a valid <hookname> hook.
(merge 235be51fbe js/mingw-hooks-with-exe-suffix later to maint).
* Asciidoctor, an alternative reimplementation of AsciiDoc, still
needs some changes to work with documents meant to be formatted
with AsciiDoc. "make USE_ASCIIDOCTOR=YesPlease" to use it out of
the box to document our pages is getting closer to reality.
* Other minor doc, test and build updates and code cleanups.
(merge f2627d9b19 sb/submodule-config-cleanup later to maint).
(merge 384f1a167b sb/unpack-trees-cleanup later to maint).
(merge 874444b704 rh/diff-orderfile-doc later to maint).
(merge eafd5d9483 cw/doc-sign-off later to maint).
(merge 0aaad415bc rs/absolute-pathdup later to maint).
(merge 4432dd6b5b rs/receive-pack-cleanup later to maint).
(merge 540a398e9c sg/mailmap-self later to maint).
----------------------------------------------------------------
Changes since v2.11.0 are as follows:
Alan Davies (1):
mingw: fix colourization on Cygwin pseudo terminals
Alex Henrie (3):
bisect: improve English grammar of not-ancestors message
receive-pack: improve English grammar of denyCurrentBranch message
clone,fetch: explain the shallow-clone option a little more clearly
Andreas Krey (2):
commit: make --only --allow-empty work without paths
commit: remove 'Clever' message for --only --amend
Beat Bolli (6):
update_unicode.sh: move it into contrib/update-unicode
update_unicode.sh: remove an unnecessary subshell level
update_unicode.sh: pin the uniset repo to a known good commit
update_unicode.sh: automatically download newer definition files
update_unicode.sh: remove the plane filter
unicode_width.h: update the width tables to Unicode 9.0
Brandon Williams (40):
push: --dry-run updates submodules when --recurse-submodules=on-demand
push: fix --dry-run to not push submodules
real_path: resolve symlinks by hand
real_path: convert real_path_internal to strbuf_realpath
real_path: create real_pathdup
real_path: have callers use real_pathdup and strbuf_realpath
lib-proto-disable: variable name fix
http: always warn if libcurl version is too old
transport: add protocol policy config option
http: create function to get curl allowed protocols
transport: add from_user parameter to is_transport_allowed
transport: reformat flag #defines to be more readable
submodules: add RECURSE_SUBMODULES_ONLY value
push: add option to push only submodules
submodules: add helper to determine if a submodule is populated
submodules: add helper to determine if a submodule is initialized
submodules: load gitmodules file from commit sha1
grep: add submodules as a grep source type
grep: optionally recurse into submodules
grep: enable recurse-submodules to work on <tree> objects
grep: search history of moved submodules
mv: remove use of deprecated 'get_pathspec()'
dir: remove struct path_simplify
dir: convert fill_directory to use the pathspec struct interface
ls-tree: convert show_recursive to use the pathspec struct interface
pathspec: remove the deprecated get_pathspec function
pathspec: copy and free owned memory
pathspec: remove unused variable from unsupported_magic
pathspec: always show mnemonic and name in unsupported_magic
pathspec: simpler logic to prefix original pathspec elements
pathspec: factor global magic into its own function
pathspec: create parse_short_magic function
pathspec: create parse_long_magic function
pathspec: create parse_element_magic helper
pathspec: create strip submodule slash helpers
pathspec: small readability changes
pathspec: rename prefix_pathspec to init_pathspec_item
real_path: prevent redefinition of MAXSYMLINKS
real_path: set errno when max number of symlinks is exceeded
index: improve constness for reading blob data
Chris Packham (3):
merge: add '--continue' option as a synonym for 'git commit'
completion: add --continue option for merge
merge: ensure '--abort' option takes no arguments
Christian Couder (1):
Documentation/bisect: improve on (bad|new) and (good|bad)
Cornelius Weig (5):
doc: clarify distinction between sign-off and pgp-signing
config: add markup to core.logAllRefUpdates doc
refs: add option core.logAllRefUpdates = always
update-ref: add test cases for bare repository
doc: add note about ignoring '--no-create-reflog'
David Aguilar (9):
mergetool: honor mergetool.$tool.trustExitCode for built-in tools
mergetools/vimdiff: trust Vim's exit code
difftool: fix dir-diff index creation when in a subdirectory
difftool: fix dir-diff index creation when in a subdirectory
difftool: sanitize $workdir as early as possible
difftool: chdir as early as possible
difftool: rename variables for consistency
mergetools: fix xxdiff hotkeys
gitk: Remove translated message from comments
David Turner (5):
submodules: allow empty working-tree dirs in merge/cherry-pick
remote-curl: don't hang when a server dies before any output
upload-pack: optionally allow fetching any sha1
auto gc: don't write bitmaps for incremental repacks
repack: die on incremental + write-bitmap-index
Dennis Kaarsemaker (1):
push: test pushing ambiguously named branches
Dimitriy Ryazantcev (1):
gitk: ru.po: Update Russian translation
Elia Pinto (2):
builtin/commit.c: remove the PATH_MAX limitation via dynamic allocation
builtin/commit.c: switch to strbuf, instead of snprintf()
Eric Wong (2):
git-svn: allow "0" in SVN path components
git-svn: document useLogAuthor and addAuthorFrom config keys
George Vanburgh (2):
git-p4: fix multi-path changelist empty commits
git-p4: fix git-p4.mapUser on Windows
Heiko Voigt (5):
serialize collection of changed submodules
serialize collection of refs that contain submodule changes
batch check whether submodule needs pushing into one call
submodule_needs_pushing(): explain the behaviour when we cannot answer
help: improve is_executable() on Windows
Igor Kushnir (1):
git-p4: do not pass '-r 0' to p4 commands
Jack Bates (1):
diff: handle --no-abbrev in no-index case
Jacob Keller (2):
pretty: add %(trailers) format for displaying trailers of a commit message
ref-filter: add support to display trailers as part of contents
Jeff Hostetler (1):
mingw: replace isatty() hack
Jeff King (57):
rev-parse: fix parent shorthands with --symbolic
t7610: clean up foo.XXXXXX tmpdir
http: simplify update_url_from_redirect
http: always update the base URL for redirects
remote-curl: rename shadowed options variable
http: make redirects more obvious
http: treat http-alternates like redirects
http-walker: complain about non-404 loose object errors
xdiff: drop XDL_FAST_HASH
stash: prefer plumbing over git-diff
alternates: accept double-quoted paths
tmp-objdir: quote paths we add to alternates
Makefile: reformat FIND_SOURCE_FILES
Makefile: exclude test cruft from FIND_SOURCE_FILES
Makefile: match shell scripts in FIND_SOURCE_FILES
Makefile: exclude contrib from FIND_SOURCE_FILES
parse-options: print "fatal:" before usage_msg_opt()
http: respect protocol.*.allow=user for http-alternates
README: replace gmane link with public-inbox
merge: mark usage error strings for translation
t5000: extract nongit function to test-lib-functions.sh
index-pack: complain when --stdin is used outside of a repo
t: use nongit() function where applicable
shortlog: test and document --committer option
index-pack: skip collision check when not in repository
archive-zip: load userdiff config
rebase--interactive: count squash commits above 10 correctly
blame: fix alignment with --abbrev=40
blame: handle --no-abbrev
blame: output porcelain "previous" header for each file
git_exec_path: do not return the result of getenv()
execv_dashed_external: use child_process struct
execv_dashed_external: stop exiting with negative code
execv_dashed_external: wait for child on signal death
t7810: avoid assumption about invalid regex syntax
Revert "vreportf: avoid intermediate buffer"
vreport: sanitize ASCII control chars
t1450: refactor loose-object removal
sha1_file: fix error message for alternate objects
t1450: test fsck of packed objects
sha1_file: add read_loose_object() function
fsck: parse loose object paths directly
fsck: detect trailing garbage in all object types
t1450: clean up sub-objects in duplicate-entry test
fsck: report trees as dangling
fsck: prepare dummy objects for --connectivity-check
fsck: tighten error-checks of "git fsck <head>"
fsck: do not fallback "git fsck <bogus>" to "git fsck"
fsck: check HAS_OBJ more consistently
CodingGuidelines: clarify multi-line brace style
clear_delta_base_cache(): don't modify hashmap while iterating
t1450: use "mv -f" within loose object directory
difftool: hack around -Wzero-length-format warning
fsck: move typename() printing to its own function
fsck: lazily load types under --connectivity-only
color_parse_mem: allow empty color spec
document behavior of empty color name
Johannes Schindelin (56):
cherry-pick: demonstrate a segmentation fault
merge-recursive: handle NULL in add_cacheinfo() correctly
mingw: intercept isatty() to handle /dev/null as Git expects it
mingw: adjust is_console() to work with stdin
mingw: add a regression test for pushing to UNC paths
giteveryday: unbreak rendering with AsciiDoctor
git_exec_path: avoid Coverity warning about unfree()d result
sequencer: avoid unnecessary curly braces
sequencer: move "else" keyword onto the same line as preceding brace
sequencer: use a helper to find the commit message
sequencer: support a new action: 'interactive rebase'
sequencer (rebase -i): implement the 'noop' command
sequencer (rebase -i): implement the 'edit' command
sequencer (rebase -i): implement the 'exec' command
sequencer (rebase -i): learn about the 'verbose' mode
sequencer (rebase -i): write the 'done' file
sequencer (rebase -i): add support for the 'fixup' and 'squash' commands
sequencer (rebase -i): implement the short commands
sequencer (rebase -i): write an author-script file
sequencer (rebase -i): allow continuing with staged changes
sequencer (rebase -i): remove CHERRY_PICK_HEAD when no longer needed
sequencer (rebase -i): skip some revert/cherry-pick specific code path
sequencer (rebase -i): the todo can be empty when continuing
sequencer (rebase -i): update refs after a successful rebase
sequencer (rebase -i): leave a patch upon error
sequencer (rebase -i): implement the 'reword' command
sequencer (rebase -i): allow fast-forwarding for edit/reword
sequencer (rebase -i): refactor setting the reflog message
sequencer (rebase -i): set the reflog message consistently
sequencer (rebase -i): copy commit notes at end
sequencer (rebase -i): record interrupted commits in rewritten, too
sequencer (rebase -i): run the post-rewrite hook, if needed
sequencer (rebase -i): respect the rebase.autostash setting
sequencer (rebase -i): respect strategy/strategy_opts settings
sequencer (rebase -i): allow rescheduling commands
sequencer (rebase -i): implement the 'drop' command
sequencer (rebase -i): differentiate between comments and 'noop'
difftool: add a skeleton for the upcoming builtin
sequencer: update reading author-script
sequencer: use run_command() directly
sequencer (rebase -i): show only failed `git commit`'s output
sequencer (rebase -i): show only failed cherry-picks' output
sequencer (rebase -i): suggest --edit-todo upon unknown command
sequencer (rebase -i): show the progress
sequencer (rebase -i): write the progress into files
sequencer (rebase -i): write out the final message
mingw: follow-up to "replace isatty() hack"
difftool: implement the functionality in the builtin
difftool: retire the scripted version
remote rename: demonstrate a bogus "remote exists" bug
remote rename: more carefully determine whether a remote is configured
relink: retire the command
status: be prepared for not-yet-started interactive rebase
t/Makefile: add a rule to re-run previously-failed tests
test-lib: on FreeBSD, look for unzip(1) in /usr/local/bin/
mingw: allow hooks to be .exe files
Johannes Sixt (4):
t5547-push-quarantine: run the path separator test on Windows, too
normalize_path_copy(): fix pushing to //server/share/dir on Windows
t5615-alternate-env: double-quotes in file names do not work on Windows
real_path: canonicalize directory separators in root parts
Jonathan Tan (6):
fetch: do not redundantly calculate tag refmap
trailer: be stricter in parsing separators
commit: make ignore_non_trailer take buf/len
trailer: avoid unnecessary splitting on lines
trailer: have function to describe trailer layout
sequencer: use trailer's trailer layout
Junio C Hamano (36):
utf8: refactor code to decide fallback encoding
utf8: accept "latin-1" as ISO-8859-1
git_open(): untangle possible NOATIME and CLOEXEC interactions
push: do not use potentially ambiguous default refspec
git_open_cloexec(): use fcntl(2) w/ FD_CLOEXEC fallback
sha1_file: stop opening files with O_NOATIME
compression: unify pack.compression configuration parsing
pull: fast-forward "pull --rebase=true"
preparing for 2.10.3
Start post 2.11 cycle
wt-status: implement opportunisitc index update correctly
hold_locked_index(): align error handling with hold_lockfile_for_update()
lockfile: LOCK_REPORT_ON_ERROR
Early fixes for 2.11.x series
Revert "sequencer: remove useless get_dir() function"
First batch for 2.12
Second batch for 2.12
i18n: fix misconversion in shell scripts
t4201: make tests work with and without the MINGW prerequiste
Third batch for 2.12
config.abbrev: document the new default that auto-scales
diff: retire "compaction" heuristics
lockfile: move REPORT_ON_ERROR bit elsewhere
Fourth batch for 2.12
Fifth batch 2.12
Almost ready for 2.11.1
RelNotes: drop merge-later comments for maint
Sixth batch for 2.12
Seventh batch for 2.12
show-ref: remove a stale comment
relink: really remove the command
Eighth batch for 2.12
Ready for 2.11.1
Git 2.11.1
Ninth batch for 2.12; almost ready for -rc0
Git 2.12-rc0
Kristoffer Haugsbakk (4):
doc: add articles (grammar)
doc: add verb in front of command to run
doc: make the intent of sentence clearer
doc: omit needless "for"
Kyle J. McKay (1):
mailinfo.c: move side-effects outside of assert
Kyle Meyer (1):
branch_get_push: do not segfault when HEAD is detached
Lars Schneider (8):
git-p4: add config to retry p4 commands; retry 3 times by default
travis-ci: update P4 to 16.2 and GitLFS to 1.5.2 in Linux build
git-p4: fix empty file processing for large file system backend GitLFS
t0021: minor filter process test cleanup
docs: warn about possible '=' in clean/smudge filter process values
t0021: fix flaky test
git-p4: add diff/merge properties to .gitattributes for GitLFS files
travis-ci: fix Perforce install on macOS
Linus Torvalds (1):
shortlog: group by committer information
Luis Ressel (1):
date-formats.txt: Typo fix
Lukas Puehringer (3):
gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag
ref-filter: add function to print single ref_array_item
builtin/tag: add --format argument for tag -v
Luke Diamand (3):
git-p4: support updating an existing shelved changelist
git-p4: support git worktrees
git-p4: avoid crash adding symlinked directory
Markus Hitter (3):
gitk: Turn off undo manager in the text widget
gitk: Remove closed file descriptors from $blobdifffd
gitk: Clear array 'commitinfo' on reload
Matt McCutchen (3):
doc: mention transfer data leaks in more places
git-gc.txt: expand discussion of races with other processes
t0001: don't let a default ACL interfere with the umask test
Max Kirillov (1):
mingw: consider that UNICODE_STRING::Length counts bytes
Mike Hommey (1):
fast-import: properly fanout notes when tree is imported
Nguyễn Thái Ngọc Duy (18):
worktree.c: zero new 'struct worktree' on allocation
worktree: reorder an if statement
get_worktrees() must return main worktree as first item even on error
worktree.c: get_worktrees() takes a new flag argument
worktree list: keep the list sorted
merge-recursive.c: use string_list_sort instead of qsort
tag, branch, for-each-ref: add --ignore-case for sorting and filtering
shallow.c: rename fields in paint_info to better express their purposes
shallow.c: stop abusing COMMIT_SLAB_SIZE for paint_info's memory pools
shallow.c: make paint_alloc slightly more robust
shallow.c: remove useless code
rebase: add --quit to cleanup rebase, leave everything else untouched
config.c: handle error case for fstat() calls
config.c: rename label unlock_and_out
config.c: handle lock file in error case in git_config_rename_...
color.c: fix color_parse_mem() with value_len == 0
color.c: trim leading spaces in color_parse_mem()
log --graph: customize the graph lines with config log.graphColors
Paul Mackerras (2):
gitk: Use explicit RGB green instead of "lime"
gitk: Update copyright notice to 2016
Peter Law (1):
Completion: Add support for --submodule=diff
Philip Oakley (3):
doc: gitk: remove gitview reference
doc: gitk: add the upstream repo location
doc: git-gui browser does not default to HEAD
Pranit Bauva (2):
don't use test_must_fail with grep
t9813: avoid using pipes
Ramsay Jones (1):
GIT-VERSION-GEN: do not force abbreviation length used by 'describe'
Rasmus Villemoes (2):
shallow.c: avoid theoretical pointer wrap-around
shallow.c: bit manipulation tweaks
René Scharfe (11):
compat: add qsort_s()
add QSORT_S
perf: add basic sort performance test
string-list: use QSORT_S in string_list_sort()
ref-filter: use QSORT_S in ref_array_sort()
abspath: add absolute_pathdup()
use absolute_pathdup()
use oid_to_hex_r() for converting struct object_id hashes to hex strings
use oidcpy() for copying hashes between instances of struct object_id
checkout: convert post_checkout_hook() to struct object_id
receive-pack: call string_list_clear() unconditionally
Richard Hansen (16):
.mailmap: record canonical email for Richard Hansen
rev-parse doc: pass "--" to rev-parse in the --prefix example
t7610: update branch names to match test number
t7610: move setup code to the 'setup' test case
t7610: use test_when_finished for cleanup tasks
t7610: don't rely on state from previous test
t7610: run 'git reset --hard' after each test to clean up
t7610: delete some now-unnecessary 'git reset --hard' lines
t7610: always work on a test-specific branch
t7610: don't assume the checked-out commit
t7610: spell 'git reset --hard' consistently
t7610: add test case for rerere+mergetool+subdir bug
mergetool: take the "-O" out of $orderfile
mergetool: fix running in subdir when rerere enabled
diff: document behavior of relative diff.orderFile
diff: document the format of the -O (diff.orderFile) file
Rogier Goossens (3):
gitk: Add a 'rename' option to the branch context menu
gitk: Allow checking out a remote branch
gitk: Include commit title in branch dialog
SZEDER Gábor (9):
t7004-tag: delete unnecessary tags with test_when_finished
t7004-tag: use test_config helper
t7004-tag: add version sort tests to show prerelease reordering issues
versioncmp: pass full tagnames to swap_prereleases()
versioncmp: cope with common part overlapping with prerelease suffix
versioncmp: use earliest-longest contained suffix to determine sorting order
versioncmp: factor out helper for suffix matching
versioncmp: generalize version sort suffix reordering
.mailmap: update Gábor Szeder's email address
Santiago Torres (3):
builtin/verify-tag: add --format to verify-tag
t/t7030-verify-tag: Add --format specifier tests
t/t7004-tag: Add --format specifier tests
Satoshi Yasushima (1):
gitk: Fix Japanese translation for "marked commit"
Stefan Beller (42):
submodule config: inline config_from_{name, path}
submodule-config: rename commit_sha1 to treeish_name
submodule-config: clarify parsing of null_sha1 element
submodule add: extend force flag to add existing repos
unpack-trees: fix grammar for untracked files in directories
t3600: remove useless redirect
submodule: use absolute path for computing relative path connecting
submodule helper: support super prefix
test-lib-functions.sh: teach test_commit -C <dir>
worktree: check if a submodule uses worktrees
move connect_work_tree_and_git_dir to dir.h
submodule: add absorb-git-dir function
t3600: slightly modernize style
worktree: initialize return value for submodule_uses_worktrees
submodule.h: add extern keyword to functions
submodule: modernize ok_to_remove_submodule to use argv_array
submodule: rename and add flags to ok_to_remove_submodule
rm: absorb a submodules git dir before deletion
submodule.c: use GIT_DIR_ENVIRONMENT consistently
contrib: remove gitview
pathspec: give better message for submodule related pathspec error
unpack-trees: move checkout state into check_updates
unpack-trees: remove unneeded continue
unpack-trees: factor progress setup out of check_updates
read-tree: use OPT_BOOL instead of OPT_SET_INT
t1000: modernize style
t1001: modernize style
submodule absorbgitdirs: mention in docstring help
t7411: quote URLs
t7411: test lookup of uninitialized submodules
submodule update --init: display correct path from submodule
lib-submodule-update.sh: reduce use of subshell by using "git -C"
cache.h: document index_name_pos
cache.h: document remove_index_entry_at
cache.h: document add_[file_]to_index
documentation: retire unfinished documentation
contrib: remove git-convert-objects
unpack-trees: support super-prefix option
setup: add gentle version of resolve_git_dir
cache.h: expose the dying procedure for reading gitlinks
submodule absorbing: fix worktree/gitdir pointers recursively for non-moves
submodule update: run custom update script for initial populating as well
Stefan Dotterweich (1):
gitk: Fix missing commits when using -S or -G
Stephan Beyer (5):
am: fix filename in safe_to_abort() error message
am: change safe_to_abort()'s not rewinding error into a warning
t3510: test that cherry-pick --abort does not unsafely change HEAD
sequencer: make sequencer abort safer
sequencer: remove useless get_dir() function
Steven Penny (2):
Makefile: POSIX windres
Makefile: put LIBS after LDFLAGS for imap-send
Torsten Bögershausen (1):
convert: git cherry-pick -Xrenormalize did not work
Vasco Almeida (18):
gitk: Makefile: create install bin directory
gitk: Add Portuguese translation
Git.pm: add subroutines for commenting lines
i18n: add--interactive: mark strings for translation
i18n: add--interactive: mark simple here-documents for translation
i18n: add--interactive: mark strings with interpolation for translation
i18n: clean.c: match string with git-add--interactive.perl
i18n: add--interactive: mark plural strings
i18n: add--interactive: mark patch prompt for translation
i18n: add--interactive: i18n of help_patch_cmd
i18n: add--interactive: mark edit_hunk_manually message for translation
i18n: add--interactive: remove %patch_modes entries
i18n: add--interactive: mark status words for translation
i18n: send-email: mark strings for translation
i18n: send-email: mark warnings and errors for translation
i18n: send-email: mark string with interpolation for translation
i18n: send-email: mark composing message for translation
i18n: difftool: mark warnings for translation
Vegard Nossum (1):
diff: add interhunk context config option
Vinicius Kursancew (1):
git-p4: allow submit to create shelved changelists.
Vitaly "_Vi" Shukela (1):
submodule--helper: set alternateLocation for cloned submodules
Vladimir Panteleev (5):
show-ref: accept HEAD with --verify
show-ref: allow -d to work with --verify
show-ref: move --quiet handling into show_one()
show-ref: detect dangling refs under --verify as well
show-ref: remove dead `if (verify)' check
Wolfram Sang (1):
request-pull: drop old USAGE stuff
brian m. carlson (8):
Documentation: fix warning in cat-texi.perl
Documentation: modernize cat-texi.perl
Documentation: remove unneeded argument in cat-texi.perl
Documentation: sort sources for gitman.texi
Documentation: add XSLT to fix DocBook for Texinfo
Documentation: move dblatex arguments into variable
Makefile: add a knob to enable the use of Asciidoctor
Documentation: implement linkgit macro for Asciidoctor
마누엘 (1):
asciidoctor: fix user-manual to be built by `asciidoctor`
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.11.0
@ 2016-11-29 21:21 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-11-29 21:21 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.11.0 is now available at the
usual places. It is comprised of 673 non-merge commits since
v2.10.0, contributed by 74 people, 15 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.11.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.10.0 are as follows.
Welcome to the Git development community!
Aaron M Watson, Brandon Williams, Brian Henderson, Emily Xie,
Gavin Lambert, Ian Kelling, Jeff Hostetler, jfbu, Mantas
Mikulėnas, Petr Stodulka, Satoshi Yasushima, Stefan Christ,
Vegard Nossum, yaras, and Younes Khoudli.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Alex Riesen, Anders Kaseorg, Andreas Schwab, Beat Bolli, Ben
North, brian m. carlson, Changwoo Ryu, Chris Packham, Christian
Couder, David Aguilar, David Turner, Dennis Kaarsemaker,
Dimitriy Ryazantcev, Elia Pinto, Eric Wong, Jacob Keller,
Jakub Narębski, Jean-Noel Avila, Jean-Noël AVILA, Jeff King,
Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Josh Triplett, Junio C Hamano, Karsten Blees,
Kevin Daudt, Kirill Smelkov, Lars Schneider, Linus Torvalds,
Marc Branchaud, Matthieu Moy, Michael Haggerty, Michael J
Gruber, Mike Ralphson, Nguyễn Thái Ngọc Duy, Olaf Hering,
Orgad Shaneh, Patrick Steinhardt, Pat Thoyts, Peter Krefting,
Philip Oakley, Pranit Bauva, Ralf Thielow, Ray Chen, René
Scharfe, Ronnie Sahlberg, Stefan Beller, SZEDER Gábor, Thomas
Gummerer, Tobias Klauser, Trần Ngọc Quân, Vasco Almeida,
and Дилян Палаузов.
----------------------------------------------------------------
Git 2.11 Release Notes
======================
Backward compatibility notes.
* An empty string used as a pathspec element has always meant
'everything matches', but it is too easy to write a script that
finds a path to remove in $path and run 'git rm "$paht"' by
mistake (when the user meant to give "$path"), which ends up
removing everything. This release starts warning about the
use of an empty string that is used for 'everything matches' and
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.
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and will be removed in the
next release (not this one).
* The default abbreviation length, which has historically been 7, now
scales as the repository grows, using the approximate number of
objects in the repository and a bit of math around the birthday
paradox. The logic suggests to use 12 hexdigits for the Linux
kernel, and 9 to 10 for Git itself.
Updates since v2.10
-------------------
UI, Workflows & Features
* Comes with new version of git-gui, now at its 0.21.0 tag.
* "git format-patch --cover-letter HEAD^" to format a single patch
with a separate cover letter now numbers the output as [PATCH 0/1]
and [PATCH 1/1] by default.
* An incoming "git push" that attempts to push too many bytes can now
be rejected by setting a new configuration variable at the receiving
end.
* "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
which was not intuitive, given that "git nosuchcommand" said "git:
'nosuchcommand' is not a git command".
* "git clone --recurse-submodules --reference $path $URL" is a way to
reduce network transfer cost by borrowing objects in an existing
$path repository when cloning the superproject from $URL; it
learned to also peek into $path for presence of corresponding
repositories of submodules and borrow objects from there when able.
* The "git diff --submodule={short,log}" mechanism has been enhanced
to allow "--submodule=diff" to show the patch between the submodule
commits bound to the superproject.
* Even though "git hash-objects", which is a tool to take an
on-filesystem data stream and put it into the Git object store,
can perform "outside-world-to-Git" conversions (e.g.
end-of-line conversions and application of the clean-filter), and
it has had this feature on by default from very early days, its reverse
operation "git cat-file", which takes an object from the Git object
store and externalizes it for consumption by the outside world,
lacked an equivalent mechanism to run the "Git-to-outside-world"
conversion. The command learned the "--filters" option to do so.
* Output from "git diff" can be made easier to read by intelligently selecting
which lines are common and which lines are added/deleted
when the lines before and after the changed section
are the same. A command line option (--indent-heuristic) and a
configuration variable (diff.indentHeuristic) are added to help with the
experiment to find good heuristics.
* In some projects, it is common to use "[RFC PATCH]" as the subject
prefix for a patch meant for discussion rather than application. A
new format-patch option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH"
to help the participants of such projects.
* "git add --chmod={+,-}x <pathspec>" only changed the
executable bit for paths that are either new or modified. This has
been corrected to change the executable bit for all paths that match
the given pathspec.
* When "git format-patch --stdout" output is placed as an in-body
header and it uses RFC2822 header folding, "git am" fails to
put the header line back into a single logical line. The
underlying "git mailinfo" was taught to handle this properly.
* "gitweb" can spawn "highlight" to show blob contents with
(programming) language-specific syntax highlighting, but only
when the language is known. "highlight" can however be told
to guess the language itself by giving it "--force" option, which
has been enabled.
* "git gui" l10n to Portuguese.
* When given an abbreviated object name that is not (or more
realistically, "no longer") unique, we gave a fatal error
"ambiguous argument". This error is now accompanied by a hint that
lists the objects beginning with the given prefix. During the
course of development of this new feature, numerous minor bugs were
uncovered and corrected, the most notable one of which is that we
gave "short SHA1 xxxx is ambiguous." twice without good reason.
* "git log rev^..rev" is an often-used revision range specification
to show what was done on a side branch merged at rev. This has
gained a short-hand "rev^-1". In general "rev^-$n" is the same as
"^rev^$n rev", i.e. what has happened on other branches while the
history leading to nth parent was looking the other way.
* In recent versions of cURL, GSSAPI credential delegation is
disabled by default due to CVE-2011-2192; introduce a http.delegation
configuration variable to selectively allow enabling this.
(merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint).
* "git mergetool" learned to honor "-O<orderfile>" to control the
order of paths to present to the end user.
* "git diff/log --ws-error-highlight=<kind>" lacked the corresponding
configuration variable (diff.wsErrorHighlight) to set it by default.
* "git ls-files" learned the "--recurse-submodules" option
to get a listing of tracked files across submodules (i.e. this
only works with the "--cached" option, not for listing untracked or
ignored files). This would be a useful tool to sit on the upstream
side of a pipe that is read with xargs to work on all working tree
files from the top-level superproject.
* A new credential helper that talks via "libsecret" with
implementations of XDG Secret Service API has been added to
contrib/credential/.
* The GPG verification status shown by the "%G?" pretty format specifier
was not rich enough to differentiate a signature made by an expired
key, a signature made by a revoked key, etc. New output letters
have been assigned to express them.
* In addition to purely abbreviated commit object names, "gitweb"
learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787)
into clickable links in its output.
* "git commit" created an empty commit when invoked with an index
consisting solely of intend-to-add paths (added with "git add -N").
It now requires the "--allow-empty" option to create such a commit.
The same logic prevented "git status" from showing such paths as "new files" in the
"Changes not staged for commit" section.
* The smudge/clean filter API spawns an external process
to filter the contents of each path that has a filter defined. A
new type of "process" filter API has been added to allow the first
request to run the filter for a path to spawn a single process, and
all filtering is served by this single process for multiple
paths, reducing the process creation overhead.
* The user always has to say "stash@{$N}" when naming a single
element in the default location of the stash, i.e. reflogs in
refs/stash. The "git stash" command learned to accept "git stash
apply 4" as a short-hand for "git stash apply stash@{4}".
Performance, Internal Implementation, Development Support etc.
* The delta-base-cache mechanism has been a key to the performance in
a repository with a tightly packed packfile, but it did not scale
well even with a larger value of core.deltaBaseCacheLimit.
* Enhance "git status --porcelain" output by collecting more data on
the state of the index and the working tree files, which may
further be used to teach git-prompt (in contrib/) to make fewer
calls to git.
* Extract a small helper out of the function that reads the authors
script file "git am" internally uses.
(merge a77598e jc/am-read-author-file later to maint).
* Lift calls to exit(2) and die() higher in the callchain in
sequencer.c files so that more helper functions in it can be used
by callers that want to handle error conditions themselves.
* "git am" has been taught to make an internal call to "git apply"'s
innards without spawning the latter as a separate process.
* The ref-store abstraction was introduced to the refs API so that we
can plug in different backends to store references.
* The "unsigned char sha1[20]" to "struct object_id" conversion
continues. Notable changes in this round includes that ce->sha1,
i.e. the object name recorded in the cache_entry, turns into an
object_id.
* JGit can show a fake ref "capabilities^{}" to "git fetch" when it
does not advertise any refs, but "git fetch" was not prepared to
see such an advertisement. When the other side disconnects without
giving any ref advertisement, we used to say "there may not be a
repository at that URL", but we may have seen other advertisements
like "shallow" and ".have" in which case we definitely know that a
repository is there. The code to detect this case has also been
updated.
* Some codepaths in "git pack-objects" were not ready to use an
existing pack bitmap; now they are and as a result they have
become faster.
* The codepath in "git fsck" to detect malformed tree objects has
been updated not to die but keep going after detecting them.
* We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
the time third parameter is redundant. A new QSORT() macro lets us
omit it.
* "git pack-objects" in a repository with many packfiles used to
spend a lot of time looking for/at objects in them; the accesses to
the packfiles are now optimized by checking the most-recently-used
packfile first.
(merge c9af708b1a jk/pack-objects-optim-mru later to maint).
* Codepaths involved in interacting alternate object stores have
been cleaned up.
* In order for the receiving end of "git push" to inspect the
received history and decide to reject the push, the objects sent
from the sending end need to be made available to the hook and
the mechanism for the connectivity check, and this was done
traditionally by storing the objects in the receiving repository
and letting "git gc" expire them. Instead, store the newly
received objects in a temporary area, and make them available by
reusing the alternate object store mechanism to them only while we
decide if we accept the check, and once we decide, either migrate
them to the repository or purge them immediately.
* The require_clean_work_tree() helper was recreated in C when "git
pull" was rewritten from shell; the helper is now made available to
other callers in preparation for upcoming "rebase -i" work.
* "git upload-pack" had its code cleaned-up and performance improved
by reducing use of timestamp-ordered commit-list, which was
replaced with a priority queue.
* "git diff --no-index" codepath has been updated not to try to peek
into a .git/ directory that happens to be under the current
directory, when we know we are operating outside any repository.
* Update of the sequencer codebase to make it reusable to reimplement
"rebase -i" continues.
* Git generally does not explicitly close file descriptors that were
open in the parent process when spawning a child process, but most
of the time the child does not want to access them. As Windows does
not allow removing or renaming a file that has a file descriptor
open, a slow-to-exit child can even break the parent process by
holding onto them. Use O_CLOEXEC flag to open files in various
codepaths.
* Update "interpret-trailers" machinery and teach it that people in
the real world write all sorts of cruft in the "trailer" that was
originally designed to have the neat-o "Mail-Header: like thing"
and nothing else.
Also contains various documentation updates and code clean-ups.
Fixes since v2.10
-----------------
Unless otherwise noted, all the fixes since v2.9 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* Clarify various ways to specify the "revision ranges" in the
documentation.
* "diff-highlight" script (in contrib/) learned to work better with
"git log -p --graph" output.
* The test framework left the number of tests and success/failure
count in the t/test-results directory, keyed by the name of the
test script plus the process ID. The latter however turned out not
to serve any useful purpose. The process ID part of the filename
has been removed.
* Having a submodule whose ".git" repository is somehow corrupt
caused a few commands that recurse into submodules to loop forever.
* "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
the resulting repository becomes an invalid one. Teach the command
to forbid removal of HEAD.
* A test spawned a short-lived background process, which sometimes
prevented the test directory from getting removed at the end of the
script on some platforms.
* Update a few tests that used to use GIT_CURL_VERBOSE to use the
newer GIT_TRACE_CURL.
* "git pack-objects --include-tag" was taught that when we know that
we are sending an object C, we want a tag B that directly points at
C but also a tag A that points at the tag B. We used to miss the
intermediate tag B in some cases.
* Update Japanese translation for "git-gui".
* "git fetch http::/site/path" did not die correctly and segfaulted
instead.
* "git commit-tree" stopped reading commit.gpgsign configuration
variable that was meant for Porcelain "git commit" in Git 2.9; we
forgot to update "git gui" to look at the configuration to match
this change.
* "git add --chmod={+,-}x" added recently lacked documentation, which has
been corrected.
* "git log --cherry-pick" used to include merge commits as candidates
to be matched up with other commits, resulting a lot of wasted time.
The patch-id generation logic has been updated to ignore merges and
avoid the wastage.
* The http transport (with curl-multi option, which is the default
these days) failed to remove curl-easy handle from a curlm session,
which led to unnecessary API failures.
* There were numerous corner cases in which the configuration files
are read and used or not read at all depending on the directory a
Git command was run, leading to inconsistent behaviour. The code
to set-up repository access at the beginning of a Git process has
been updated to fix them.
(merge 4d0efa1 jk/setup-sequence-update later to maint).
* "git diff -W" output needs to extend the context backward to
include the header line of the current function and also forward to
include the body of the entire current function up to the header
line of the next one. This process may have to merge two adjacent
hunks, but the code forgot to do so in some cases.
* Performance tests done via "t/perf" did not use the right
build configuration if the user relied on autoconf generated
configuration.
* "git format-patch --base=..." feature that was recently added
showed the base commit information after the "-- " e-mail signature
line, which turned out to be inconvenient. The base information
has been moved above the signature line.
* More i18n.
* Even when "git pull --rebase=preserve" (and the underlying "git
rebase --preserve") can complete without creating any new commits
(i.e. fast-forwards), it still insisted on having usable ident
information (read: user.email is set correctly), which was less
than nice. As the underlying commands used inside "git rebase"
would fail with a more meaningful error message and advice text
when the bogus ident matters, this extra check was removed.
* "git gc --aggressive" used to limit the delta-chain length to 250,
which is way too deep for gaining additional space savings and is
detrimental for runtime performance. The limit has been reduced to
50.
* Documentation for individual configuration variables to control use
of color (like `color.grep`) said that their default value is
'false', instead of saying their default is taken from `color.ui`.
When we updated the default value for color.ui from 'false' to
'auto' quite a while ago, all of them broke. This has been
corrected.
* The pretty-format specifier "%C(auto)" used by the "log" family of
commands to enable coloring of the output is taught to also issue a
color-reset sequence to the output.
* A shell script example in check-ref-format documentation has been
fixed.
* "git checkout <word>" does not follow the usual disambiguation
rules when the <word> can be both a rev and a path, to allow
checking out a branch 'foo' in a project that happens to have a
file 'foo' in the working tree without having to disambiguate.
This was poorly documented and the check was incorrect when the
command was run from a subdirectory.
* Some codepaths in "git diff" used regexec(3) on a buffer that was
mmap(2)ed, which may not have a terminating NUL, leading to a read
beyond the end of the mapped region. This was fixed by introducing
a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
extension.
* The procedure to build Git on Mac OS X for Travis CI hardcoded the
internal directory structure we assumed HomeBrew uses, which was a
no-no. The procedure has been updated to ask HomeBrew things we
need to know to fix this.
* When "git rebase -i" is given a broken instruction, it told the
user to fix it with "--edit-todo", but didn't say what the step
after that was (i.e. "--continue").
* Documentation around tools to import from CVS was fairly outdated.
* "git clone --recurse-submodules" lost the progress eye-candy in
a recent update, which has been corrected.
* A low-level function verify_packfile() was meant to show errors
that were detected without dying itself, but under some conditions
it didn't and died instead, which has been fixed.
* When "git fetch" tries to find where the history of the repository
it runs in has diverged from what the other side has, it has a
mechanism to avoid digging too deep into irrelevant side branches.
This however did not work well over the "smart-http" transport due
to a design bug, which has been fixed.
* In the codepath that comes up with the hostname to be used in an
e-mail when the user didn't tell us, we looked at the ai_canonname
field in struct addrinfo without making sure it is not NULL first.
* "git worktree", even though it used the default_abbrev setting that
ought to be affected by the core.abbrev configuration variable, ignored
the variable setting. The command has been taught to read the
default set of configuration variables to correct this.
* "git init" tried to record core.worktree in the repository's
'config' file when the GIT_WORK_TREE environment variable was set and
it was different from where GIT_DIR appears as ".git" at its top,
but the logic was faulty when .git is a "gitdir:" file that points
at the real place, causing trouble in working trees that are
managed by "git worktree". This has been corrected.
* Codepaths that read from an on-disk loose object were too loose in
validating that they are reading a proper object file and
sometimes read past the data they read from the disk, which has
been corrected. H/t to Gustavo Grieco for reporting.
* The original command line syntax for "git merge", which was "git
merge <msg> HEAD <parent>...", has been deprecated for quite some
time, and "git gui" was the last in-tree user of the syntax. This
is finally fixed, so that we can move forward with the deprecation.
* An author name that has a backslash-quoted double quote in the
human readable part ("My \"double quoted\" name"), was not unquoted
correctly while applying a patch from a piece of e-mail.
* Doc update to clarify what "log -3 --reverse" does.
* Almost everybody uses DEFAULT_ABBREV to refer to the default
setting for the abbreviation, but "git blame" peeked into
underlying variable bypassing the macro for no good reason.
* The "graph" API used in "git log --graph" miscounted the number of
output columns consumed so far when drawing a padding line, which
has been fixed; this did not affect any existing code as nobody
tried to write anything after the padding on such a line, though.
* The code that parses the format parameter of the for-each-ref command
has seen a micro-optimization.
* When we started to use cURL to talk to an imap server, we forgot to explicitly add
imap(s):// before the destination. To some folks, that didn't work
and the library tried to make HTTP(s) requests instead.
* The ./configure script generated from configure.ac was taught how
to detect support of SSL by libcurl better.
* The command-line completion script (in contrib/) learned to
complete "git cmd ^mas<HT>" to complete the negative end of
reference to "git cmd ^master".
(merge 49416ad22a cp/completion-negative-refs later to maint).
* 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".
(merge cccf74e2da nd/shallow-deepen later to maint).
* "git blame --reverse OLD path" is now DWIMmed to show how lines
in path in an old revision OLD have survived up to the current
commit.
(merge e1d09701a4 jc/blame-reverse later to maint).
* The http.emptyauth configuration variable is a way to allow an empty username to
pass when attempting to authenticate using mechanisms like
Kerberos. We took an unspecified (NULL) username and sent ":"
(i.e. no username, no password) to CURLOPT_USERPWD, but did not do
the same when the username is explicitly set to an empty string.
* "git clone" of a local repository can be done at the filesystem
level, but the codepath did not check errors while copying and
adjusting the file that lists alternate object stores.
* Documentation for "git commit" was updated to clarify that "commit
-p <paths>" adds to the current contents of the index to come up
with what to commit.
* A stray symbolic link in the $GIT_DIR/refs/ directory could make name
resolution loop forever, which has been corrected.
* The "submodule.<name>.path" stored in .gitmodules is never copied
to .git/config and such a key in .git/config has no meaning, but
the documentation described it next to submodule.<name>.url
as if both belong to .git/config. This has been fixed.
* In a worktree created via "git
worktree", "git checkout" attempts to protect users from confusion
by refusing to check out a branch that is already checked out in
another worktree. However, this also prevented checking out a
branch which is designated as the primary branch of a bare
repository, in a worktree that is connected to the bare
repository. The check has been corrected to allow it.
* "git rebase" immediately after "git clone" failed to find the fork
point from the upstream.
* When fetching from a remote that has many tags that are irrelevant
to branches we are following, we used to waste way too many cycles
checking if the object pointed at by a tag (that we are not
going to fetch!) exists in our repository too carefully.
* Protect our code from over-eager compilers.
* Recent git allows submodule.<name>.branch to use a special token
"." instead of the branch name; the documentation has been updated
to describe it.
* "git send-email" attempts to pick up valid e-mails from the
trailers, but people in the real world write non-addresses there, like
"Cc: Stable <add@re.ss> # 4.8+", which broke the output depending
on the availability and vintage of the Mail::Address perl module.
(merge dcfafc5214 mm/send-email-cc-cruft-after-address later to maint).
* The Travis CI configuration we ship ran the tests with the --verbose
option but this risks non-TAP output that happens to be "ok" to be
misinterpreted as TAP signalling a test that passed. This resulted
in unnecessary failures. This has been corrected by introducing a
new mode to run our tests in the test harness to send the verbose
output separately to the log file.
* Some AsciiDoc formatters mishandle a displayed illustration with
tabs in it. Adjust a few of them in merge-base documentation to
work around them.
* Fixed a minor regression in "git submodule" that was introduced
when more helper functions were reimplemented in C.
(merge 77b63ac31e sb/submodule-ignore-trailing-slash later to maint).
* The code that we have used for the past 10+ years to cycle
4-element ring buffers turns out to be not quite portable in
theoretical world.
(merge bb84735c80 rs/ring-buffer-wraparound later to maint).
* "git daemon" used fixed-length buffers to turn URLs to the
repository the client asked for into the server side directory
paths, using snprintf() to avoid overflowing these buffers, but
allowed possibly truncated paths to the directory. This has been
tightened to reject such a request that causes an overlong path to be
served.
(merge 6bdb0083be jk/daemon-path-ok-check-truncation later to maint).
* Recent update to git-sh-setup (a library of shell functions that
are used by our in-tree scripted Porcelain commands) included
another shell library git-sh-i18n without specifying where it is,
relying on the $PATH. This has been fixed to be more explicit by
prefixing with $(git --exec-path) output.
(merge 1073094f30 ak/sh-setup-dot-source-i18n-fix later to maint).
* Fix for a racy false-positive test failure.
(merge fdf4f6c79b as/merge-attr-sleep later to maint).
* Portability update and workaround for builds on recent Mac OS X.
(merge a296bc0132 ls/macos-update later to maint).
* Using a %(HEAD) placeholder in "for-each-ref --format=" option
caused the command to segfault when on an unborn branch.
(merge 84679d470d jc/for-each-ref-head-segfault-fix later to maint).
* "git rebase -i" did not work well with the core.commentchar
configuration variable for two reasons, both of which have been
fixed.
(merge 882cd23777 js/rebase-i-commentchar-fix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 5c238e29a8 jk/common-main later to maint).
(merge 5a5749e45b ak/pre-receive-hook-template-modefix later to maint).
(merge 6d834ac8f1 jk/rebase-config-insn-fmt-docfix later to maint).
(merge de9f7fa3b0 rs/commit-pptr-simplify later to maint).
(merge 4259d693fc sc/fmt-merge-msg-doc-markup-fix later to maint).
(merge 28fab7b23d nd/test-helpers later to maint).
(merge c2bb0c1d1e rs/cocci later to maint).
(merge 3285b7badb ps/common-info-doc later to maint).
(merge 2b090822e8 nd/worktree-lock later to maint).
(merge 4bd488ea7c jk/create-branch-remove-unused-param later to maint).
(merge 974e0044d6 tk/diffcore-delta-remove-unused later to maint).
----------------------------------------------------------------
Changes since v2.10.0 are as follows:
Aaron M Watson (1):
stash: allow stashes to be referenced by index only
Alex Henrie (6):
am: put spaces around pipe in usage string
cat-file: put spaces around pipes in usage string
git-rebase--interactive: fix English grammar
git-merge-octopus: do not capitalize "octopus"
unpack-trees: do not capitalize "working"
l10n: ca.po: update translation
Alex Riesen (2):
git-gui: support for $FILENAMES in tool definitions
git-gui: ensure the file in the diff pane is in the list of selected files
Alexander Shopov (2):
git-gui i18n: Updated Bulgarian translation (565,0f,0u)
git-gui: Mark 'All' in remote.tcl for translation
Anders Kaseorg (3):
imap-send: Tell cURL to use imap:// or imaps://
pre-receive.sample: mark it executable
git-sh-setup: be explicit where to dot-source git-sh-i18n from.
Andreas Schwab (2):
t6026-merge-attr: don't fail if sleep exits early
t6026-merge-attr: ensure that the merge driver was called
Beat Bolli (1):
SubmittingPatches: use gitk's "Copy commit summary" format
Ben North (1):
git-worktree.txt: fix typo "to"/"two", and add comma
Brandon Williams (6):
pathspec: remove unnecessary function prototypes
git: make super-prefix option
ls-files: optionally recurse into submodules
ls-files: pass through safe options for --recurse-submodules
ls-files: add pathspec matching for submodules
submodules doc: update documentation for "." used for submodule branches
Brian Henderson (3):
diff-highlight: add some tests
diff-highlight: add failing test for handling --graph output
diff-highlight: add support for --graph output
Changwoo Ryu (1):
l10n: ko.po: Update Korean translation
Chris Packham (1):
completion: support excluding refs
Christian Couder (43):
apply: make some names more specific
apply: move 'struct apply_state' to apply.h
builtin/apply: make apply_patch() return -1 or -128 instead of die()ing
builtin/apply: read_patch_file() return -1 instead of die()ing
builtin/apply: make find_header() return -128 instead of die()ing
builtin/apply: make parse_chunk() return a negative integer on error
builtin/apply: make parse_single_patch() return -1 on error
builtin/apply: make parse_whitespace_option() return -1 instead of die()ing
builtin/apply: make parse_ignorewhitespace_option() return -1 instead of die()ing
builtin/apply: move init_apply_state() to apply.c
apply: make init_apply_state() return -1 instead of exit()ing
builtin/apply: make check_apply_state() return -1 instead of die()ing
builtin/apply: move check_apply_state() to apply.c
builtin/apply: make apply_all_patches() return 128 or 1 on error
builtin/apply: make parse_traditional_patch() return -1 on error
builtin/apply: make gitdiff_*() return 1 at end of header
builtin/apply: make gitdiff_*() return -1 on error
builtin/apply: change die_on_unsafe_path() to check_unsafe_path()
builtin/apply: make build_fake_ancestor() return -1 on error
builtin/apply: make remove_file() return -1 on error
builtin/apply: make add_conflicted_stages_file() return -1 on error
builtin/apply: make add_index_file() return -1 on error
builtin/apply: make create_file() return -1 on error
builtin/apply: make write_out_one_result() return -1 on error
builtin/apply: make write_out_results() return -1 on error
unpack-objects: add --max-input-size=<size> option
builtin/apply: make try_create_file() return -1 on error
builtin/apply: make create_one_file() return -1 on error
builtin/apply: rename option parsing functions
apply: rename and move opt constants to apply.h
apply: move libified code from builtin/apply.c to apply.{c,h}
apply: make some parsing functions static again
apply: use error_errno() where possible
apply: make it possible to silently apply
apply: don't print on stdout in verbosity_silent mode
usage: add set_warn_routine()
usage: add get_error_routine() and get_warn_routine()
apply: change error_routine when silent
apply: refactor `git apply` option parsing
apply: pass apply state to build_fake_ancestor()
apply: learn to use a different index file
builtin/am: use apply API in run_apply()
split-index: s/eith/with/ typo fix
David Aguilar (4):
mergetool: add copyright
mergetool: move main program flow into a main() function
mergetool: honor diff.orderFile
mergetool: honor -O<orderfile>
David Turner (11):
rename_ref_available(): add docstring
refs: add methods for reflog
refs: add method for initial ref transaction commit
refs: make delete_refs() virtual
refs: add methods to init refs db
refs: add method to rename refs
refs: make lock generic
refs: implement iteration over only per-worktree refs
add David Turner's Two Sigma address
fsck: handle bad trees like other errors
http: http.emptyauth should allow empty (not just NULL) usernames
Dennis Kaarsemaker (1):
worktree: allow the main brach of a bare repository to be checked out
Dimitriy Ryazantcev (4):
l10n: ru.po: update Russian translation
git-gui: Update Russian translation
l10n: ru.po: update Russian translation
l10n: ru.po: update Russian translation
Elia Pinto (6):
t5541-http-push-smart.sh: use the GIT_TRACE_CURL environment var
test-lib.sh: preserve GIT_TRACE_CURL from the environment
t5550-http-fetch-dumb.sh: use the GIT_TRACE_CURL environment var
t5551-http-fetch-smart.sh: use the GIT_TRACE_CURL environment var
git-check-ref-format.txt: fixup documentation
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
Emily Xie (1):
pathspec: warn on empty strings as pathspec
Eric Wong (5):
http: warn on curl_multi_add_handle failures
http: consolidate #ifdefs for curl_multi_remove_handle
http: always remove curl easy from curlm session on release
git-svn: reduce scope of input record separator change
git-svn: "git worktree" awareness
Gavin Lambert (1):
git-svn: do not reuse caches memoized for a different architecture
Ian Kelling (2):
gitweb: remove unused guess_file_syntax() parameter
gitweb: use highlight's shebang detection
Jacob Keller (9):
format-patch: show 0/1 and 1/1 for singleton patch with cover letter
cache: add empty_tree_oid object and helper function
graph: add support for --line-prefix on all graph-aware output
diff: prepare for additional submodule formats
allow do_submodule_path to work even if submodule isn't checked out
submodule: convert show_submodule_summary to use struct object_id *
submodule: refactor show_submodule_summary with helper function
diff: teach diff to display submodule difference with an inline diff
rev-list: use hdr_termination instead of a always using a newline
Jakub Narębski (1):
configure.ac: improve description of NO_REGEX test
Jean-Noel Avila (1):
l10n: fr.po v2.11.0_rnd1
Jean-Noël AVILA (1):
i18n: i18n: diff: mark die messages for translation
Jeff Hostetler (9):
status: rename long-format print routines
status: cleanup API to wt_status_print
status: support --porcelain[=<version>]
status: collect per-file data for --porcelain=v2
status: print per-file porcelain v2 status data
status: print branch info with --porcelain=v2 --branch
git-status.txt: describe --porcelain=v2 format
test-lib-functions.sh: add lf_to_nul helper
status: unit tests for --porcelain=v2
Jeff King (117):
rebase-interactive: drop early check for valid ident
provide an initializer for "struct object_info"
sha1_file: make packed_object_info public
pack-objects: break delta cycles before delta-search phase
pack-objects: use mru list when iterating over packs
gc: default aggressive depth to 50
cache_or_unpack_entry: drop keep_cache parameter
clear_delta_base_cache_entry: use a more descriptive name
release_delta_base_cache: reuse existing detach function
delta_base_cache: use list.h for LRU
delta_base_cache: drop special treatment of blobs
delta_base_cache: use hashmap.h
t/perf: add basic perf tests for delta base cache
index-pack: add --max-input-size=<size> option
receive-pack: allow a maximum input size to be specified
test-lib: drop PID from test-results/*.count
diff-highlight: ignore test cruft
diff-highlight: add multi-byte tests
diff-highlight: avoid highlighting combined diffs
error_errno: use constant return similar to error()
color_parse_mem: initialize "struct color" temporary
t5305: move cleanup into test block
t5305: drop "dry-run" of unpack-objects
t5305: use "git -C"
t5305: simplify packname handling
pack-objects: walk tag chains for --include-tag
remote-curl: handle URLs without protocol
patch-ids: turn off rename detection
add_delta_base_cache: use list_for_each_safe
patch-ids: refuse to compute patch-id for merge commit
hash-object: always try to set up the git repository
patch-id: use RUN_SETUP_GENTLY
diff: skip implicit no-index check when given --no-index
diff: handle --no-index prefixes consistently
diff: always try to set up the repository
pager: remove obsolete comment
pager: stop loading git_default_config()
pager: make pager_program a file-local static
pager: use callbacks instead of configset
pager: handle early config
t1302: use "git -C"
test-config: setup git directory
config: only read .git/config from configured repos
init: expand comments explaining config trickery
init: reset cached config when entering new repo
t1007: factor out repeated setup
verify_packfile: check pack validity before accessing data
clone: pass --progress decision to recursive submodules
docs/cvsimport: prefer cvs-fast-export to parsecvs
docs/cvs-migration: update link to cvsps homepage
docs/cvs-migration: mention cvsimport caveats
ident: handle NULL ai_canonname
get_sha1: detect buggy calls with multiple disambiguators
get_sha1: avoid repeating ourselves via ONLY_TO_DIE
get_sha1: propagate flags to child functions
get_short_sha1: parse tags when looking for treeish
get_short_sha1: refactor init of disambiguation code
get_short_sha1: NUL-terminate hex prefix
get_short_sha1: mark ambiguity error for translation
sha1_array: let callbacks interrupt iteration
for_each_abbrev: drop duplicate objects
get_short_sha1: list ambiguous objects on error
xdiff: rename "struct group" to "struct xdlgroup"
get_short_sha1: make default disambiguation configurable
tree-walk: be more specific about corrupt tree errors
graph: fix extra spaces in graph_padding_line
t5613: drop reachable_via function
t5613: drop test_valid_repo function
t5613: use test_must_fail
t5613: whitespace/style cleanups
t5613: do not chdir in main process
find_unique_abbrev: move logic out of get_short_sha1()
clone: detect errors in normalize_path_copy
files_read_raw_ref: avoid infinite loop on broken symlinks
files_read_raw_ref: prevent infinite retry loops in general
t5613: clarify "too deep" recursion tests
link_alt_odb_entry: handle normalize_path errors
link_alt_odb_entry: refactor string handling
alternates: provide helper for adding to alternates list
alternates: provide helper for allocating alternate
alternates: encapsulate alt->base munging
alternates: use a separate scratch space
fill_sha1_file: write "boring" characters
alternates: store scratch buffer as strbuf
fill_sha1_file: write into a strbuf
count-objects: report alternates via verbose mode
sha1_file: always allow relative paths to alternates
alternates: use fspathcmp to detect duplicates
check_connected: accept an env argument
tmp-objdir: introduce API for temporary object directories
receive-pack: quarantine objects until pre-receive accepts
tmp-objdir: put quarantine information in the environment
tmp-objdir: do not migrate files starting with '.'
upload-pack: use priority queue in reachable() check
merge-base: handle --fork-point without reflog
fetch: use "quick" has_sha1_file for tag following
test-lib: handle TEST_OUTPUT_DIRECTORY with spaces
test-lib: add --verbose-log option
travis: use --verbose-log test option
test-lib: bail out when "-v" used under "prove"
daemon: detect and reject too-long paths
read info/{attributes,exclude} only when in repository
test-*-cache-tree: setup git dir
find_unique_abbrev: use 4-buffer ring
diff_unique_abbrev: rename to diff_aligned_abbrev
diff_aligned_abbrev: use "struct oid"
diff: handle sha1 abbreviations outside of repository
git-compat-util: move content inside ifdef/endif guards
doc: fix missing "::" in config list
t0021: use write_script to create rot13 shell script
t0021: put $TEST_ROOT in $PATH
t0021: use $PERL_PATH for rot13-filter.pl
t0021: fix filehandle usage on older perl
alternates: re-allow relative paths from environment
sequencer: silence -Wtautological-constant-out-of-range-compare
create_branch: drop unused "head" parameter
common-main: stop munging argv[0] path
Jiang Xin (7):
l10n: zh_CN: fixed some typos for git 2.10.0
l10n: git.pot: v2.11.0 round 1 (209 new, 53 removed)
l10n: zh_CN: for git v2.11.0 l10n round 1
i18n: fix unmatched single quote in error message
l10n: git.pot: v2.11.0 round 2 (1 new, 1 removed)
l10n: Fixed typo of git fetch-pack command
l10n: fix unmatched single quote in error message
Johannes Schindelin (63):
cat-file: fix a grammo in the man page
sequencer: lib'ify sequencer_pick_revisions()
sequencer: do not die() in do_pick_commit()
sequencer: lib'ify write_message()
sequencer: lib'ify do_recursive_merge()
sequencer: lib'ify do_pick_commit()
sequencer: lib'ify walk_revs_populate_todo()
sequencer: lib'ify prepare_revs()
sequencer: lib'ify read_and_refresh_cache()
sequencer: lib'ify read_populate_todo()
sequencer: lib'ify read_populate_opts()
sequencer: lib'ify create_seq_dir()
sequencer: lib'ify save_head()
sequencer: lib'ify save_todo()
sequencer: lib'ify save_opts()
sequencer: lib'ify fast_forward_to()
sequencer: lib'ify checkout_fast_forward()
sequencer: ensure to release the lock when we could not read the index
cat-file: introduce the --filters option
cat-file --textconv/--filters: allow specifying the path separately
cat-file: support --textconv/--filters in batch mode
git-gui: respect commit.gpgsign again
regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails
regex: add regexec_buf() that can work on a non NUL-terminated string
regex: use regexec_buf()
pull: drop confusing prefix parameter of die_on_unclean_work_tree()
pull: make code more similar to the shell script again
wt-status: make the require_clean_work_tree() function reusable
wt-status: export also the has_un{staged,committed}_changes() functions
wt-status: teach has_{unstaged,uncommitted}_changes() about submodules
wt-status: begin error messages with lower-case
reset: fix usage
sequencer: use static initializers for replay_opts
sequencer: use memoized sequencer directory path
sequencer: avoid unnecessary indirection
sequencer: future-proof remove_sequencer_state()
sequencer: plug memory leaks for the option values
sequencer: future-proof read_populate_todo()
sequencer: refactor the code to obtain a short commit name
sequencer: completely revamp the "todo" script parsing
sequencer: strip CR from the todo script
sequencer: avoid completely different messages for different actions
sequencer: get rid of the subcommand field
sequencer: remember the onelines when parsing the todo file
sequencer: prepare for rebase -i's commit functionality
sequencer: introduce a helper to read files written by scripts
sequencer: allow editing the commit message on a case-by-case basis
sequencer: support amending commits
sequencer: support cleaning up commit messages
sequencer: left-trim lines read from the script
sequencer: stop releasing the strbuf in write_message()
sequencer: roll back lock file if write_message() failed
sequencer: refactor write_message() to take a pointer/length
sequencer: teach write_message() to append an optional LF
sequencer: remove overzealous assumption in rebase -i mode
sequencer: mark action_name() for translation
sequencer: quote filenames in error messages
sequencer: start error messages consistently with lower case
sequencer: mark all error messages for translation
t6026: ensure that long-running script really is
rebase -i: highlight problems with core.commentchar
stripspace: respect repository config
rebase -i: handle core.commentChar=auto
Johannes Sixt (9):
t9903: fix broken && chain
t6026-merge-attr: clean up background process at end of test case
t3700-add: create subdirectory gently
t3700-add: do not check working tree file mode without POSIXPERM
t0060: sidestep surprising path mangling results on Windows
t0021: expect more variations in the output of uniq -c
t0021: compute file size with a single process instead of a pipeline
t0021, t5615: use $PWD instead of $(pwd) in PATH-like shell variables
t6026: clarify the point of "kill $(cat sleep.pid)"
Jonathan Nieder (1):
connect: tighten check for unexpected early hang up
Jonathan Tan (15):
tests: move test_lazy_prereq JGIT to test-lib.sh
connect: advertized capability is not a ref
mailinfo: separate in-body header processing
mailinfo: make is_scissors_line take plain char *
mailinfo: handle in-body header continuations
fetch-pack: do not reset in_vain on non-novel acks
trailer: improve const correctness
trailer: use list.h for doubly-linked list
trailer: streamline trailer item create and add
trailer: make args have their own struct
trailer: clarify failure modes in parse_trailer
trailer: allow non-trailers in trailer block
trailer: forbid leading whitespace in trailers
trailer: support values folded to multiple lines
doc: mention user-configured trailers
Josh Triplett (2):
format-patch: show base info before email signature
format-patch: add "--rfc" for the common case of [RFC PATCH]
Junio C Hamano (54):
blame: improve diagnosis for "--reverse NEW"
blame: dwim "blame --reverse OLD" as "blame --reverse OLD.."
am: refactor read_author_script()
diff.c: remove output_prefix_length field
submodule: avoid auto-discovery in prepare_submodule_repo_env()
symbolic-ref -d: do not allow removal of HEAD
Prepare for 2.9.4
Start the 2.11 cycle
First batch for 2.11
Second batch for 2.11
Third batch for 2.11
Start preparing for 2.10.1
Fourth batch for 2.11
streaming: make sure to notice corrupt object
unpack_sha1_header(): detect malformed object header
Fifth batch for 2.11
worktree: honor configuration variables
blame: use DEFAULT_ABBREV macro
Prepare for 2.10.1
Sixth batch for 2.11
diff_unique_abbrev(): document its assumption and limitation
abbrev: add FALLBACK_DEFAULT_ABBREV to prepare for auto sizing
abbrev: prepare for new world order
Git 2.10.1
Seventh batch for 2.11
t4015: split out the "setup" part of ws-error-highlight test
diff.c: refactor parse_ws_error_highlight()
diff.c: move ws-error-highlight parsing helpers up
diff: introduce diff.wsErrorHighlight option
Eighth batch for 2.11
Ninth batch for 2.11
Start preparing for 2.10.2
cocci: refactor common patterns to use xstrdup_or_null()
Tenth batch for 2.11
t3700: fix broken test under !SANITY
transport: pass summary_width down the callchain
fetch: pass summary_width down the callchain
transport: allow summary-width to be computed dynamically
transport: compute summary-width dynamically
Eleventh batch for 2.11
Getting ready for 2.11-rc0
Git 2.10.2
Git 2.11-rc0
A bit of updates post -rc0
Revert "t6026-merge-attr: ensure that the merge driver was called"
Revert "t6026-merge-attr: don't fail if sleep exits early"
t0021: remove debugging cruft
Git 2.11.0-rc1
Git 2.11-rc2
for-each-ref: do not segv with %(HEAD) on an unborn branch
mailinfo: read local configuration
archive: read local configuration
Git 2.11-rc3
Git 2.11
Karsten Blees (2):
git-gui: unicode file name support on windows
git-gui: handle the encoding of Git's output correctly
Kevin Daudt (2):
t5100-mailinfo: replace common path prefix with variable
mailinfo: unescape quoted-pair in header fields
Kirill Smelkov (3):
pack-objects: respect --local/--honor-pack-keep/--incremental when bitmap is in use
pack-objects: use reachability bitmap index when generating non-stdout pack
t/perf/run: copy config.mak.autogen & friends to build area
Lars Schneider (20):
travis-ci: ask homebrew for its path instead of hardcoding it
convert: quote filter names in error messages
convert: modernize tests
run-command: move check_pipe() from write_or_die to run_command
run-command: add clean_on_exit_handler
pkt-line: rename packet_write() to packet_write_fmt()
pkt-line: extract set_packet_header()
pkt-line: add packet_write_fmt_gently()
pkt-line: add packet_flush_gently()
pkt-line: add packet_write_gently()
pkt-line: add functions to read/write flush terminated packet streams
convert: make apply_filter() adhere to standard Git error handling
convert: prepare filter.<driver>.process option
convert: add filter.<driver>.process option
contrib/long-running-filter: add long running filter example
sha1_file: rename git_open_noatime() to git_open()
sha1_file: open window into packfiles with O_CLOEXEC
read-cache: make sure file handles are not inherited by child processes
Makefile: set NO_OPENSSL on macOS by default
travis-ci: disable GIT_TEST_HTTPD for macOS
Linus Torvalds (1):
abbrev: auto size the default abbreviation
Mantas Mikulėnas (1):
contrib: add credential helper for libsecret
Marc Branchaud (1):
RelNotes: spelling and phrasing fixups
Matthieu Moy (4):
Documentation/config: default for color.* is color.ui
parse_mailboxes: accept extra text after <...> address
t9000-addresses: update expected results after fix
Git.pm: add comment pointing to t9000
Michael Haggerty (36):
xdl_change_compact(): fix compaction heuristic to adjust ixo
xdl_change_compact(): only use heuristic if group can't be matched
is_blank_line(): take a single xrecord_t as argument
recs_match(): take two xrecord_t pointers as arguments
xdl_change_compact(): introduce the concept of a change group
resolve_gitlink_ref(): eliminate temporary variable
refs: rename struct ref_cache to files_ref_store
refs: create a base class "ref_store" for files_ref_store
add_packed_ref(): add a files_ref_store argument
get_packed_ref(): add a files_ref_store argument
resolve_missing_loose_ref(): add a files_ref_store argument
{lock,commit,rollback}_packed_refs(): add files_ref_store arguments
refs: reorder definitions
resolve_packed_ref(): rename function from resolve_missing_loose_ref()
resolve_gitlink_packed_ref(): remove function
read_raw_ref(): take a (struct ref_store *) argument
resolve_ref_recursively(): new function
resolve_gitlink_ref(): implement using resolve_ref_recursively()
resolve_gitlink_ref(): avoid memory allocation in many cases
resolve_gitlink_ref(): rename path parameter to submodule
refs: make read_raw_ref() virtual
refs: make verify_refname_available() virtual
refs: make pack_refs() virtual
refs: make create_symref() virtual
refs: make peel_ref() virtual
repack_without_refs(): add a files_ref_store argument
lock_raw_ref(): add a files_ref_store argument
commit_ref_update(): add a files_ref_store argument
lock_ref_for_update(): add a files_ref_store argument
lock_ref_sha1_basic(): add a files_ref_store argument
split_symref_update(): add a files_ref_store argument
files_ref_iterator_begin(): take a ref_store argument
refs: add method iterator_begin
diff: improve positioning of add/delete blocks in diffs
parse-options: add parse_opt_unknown_cb()
blame: honor the diff heuristic options and config
Michael J Gruber (1):
gpg-interface: use more status letters
Mike Ralphson (1):
vcs-svn/fast_export: fix timestamp fmt specifiers
Nguyễn Thái Ngọc Duy (40):
remote-curl.c: convert fetch_git() to use argv_array
transport-helper.c: refactor set_helper_option()
upload-pack: move shallow deepen code out of receive_needs()
upload-pack: move "shallow" sending code out of deepen()
upload-pack: remove unused variable "backup"
upload-pack: move "unshallow" sending code out of deepen()
upload-pack: use skip_prefix() instead of starts_with()
upload-pack: tighten number parsing at "deepen" lines
upload-pack: make check_non_tip() clean things up on error
upload-pack: move rev-list code out of check_non_tip()
fetch-pack: use skip_prefix() instead of starts_with()
fetch-pack: use a common function for verbose printing
fetch-pack.c: mark strings for translating
fetch-pack: use a separate flag for fetch in deepening mode
shallow.c: implement a generic shallow boundary finder based on rev-list
upload-pack: add deepen-since to cut shallow repos based on time
fetch: define shallow boundary with --shallow-since
clone: define shallow clone boundary based on time with --shallow-since
t5500, t5539: tests for shallow depth since a specific date
refs: add expand_ref()
upload-pack: support define shallow boundary by excluding revisions
fetch: define shallow boundary with --shallow-exclude
clone: define shallow clone boundary with --shallow-exclude
t5500, t5539: tests for shallow depth excluding a ref
upload-pack: split check_unreachable() in two, prep for get_reachable_list()
upload-pack: add get_reachable_list()
fetch, upload-pack: --deepen=N extends shallow boundary by N commits
checkout: add some spaces between code and comment
checkout.txt: document a common case that ignores ambiguation rules
checkout: fix ambiguity check in subdir
init: correct re-initialization from a linked worktree
init: call set_git_dir_init() from within init_db()
init: kill set_git_dir_init()
init: do not set unnecessary core.worktree
init: kill git_link variable
git-commit.txt: clarify --patch mode with pathspec
diff-lib: allow ita entries treated as "not yet exist in index"
diff: add --ita-[in]visible-in-index
commit: fix empty commit creation when there's no changes but ita entries
commit: don't be fooled by ita entries when creating initial commit
Olaf Hering (1):
git-gui: sort entries in tclIndex
Orgad Shaneh (1):
git-gui: Do not reset author details on amend
Pat Thoyts (7):
Allow keyboard control to work in the staging widgets.
Amend tab ordering and text widget border and highlighting.
git-gui: fix detection of Cygwin
git-gui (Windows): use git-gui.exe in `Create Desktop Shortcut`
git-gui: maintain backwards compatibility for merge syntax
git-gui: avoid persisting modified author identity
git-gui: set version 0.21
Patrick Steinhardt (1):
doc: fix location of 'info/' with $GIT_COMMON_DIR
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (2913t0f0u)
Petr Stodulka (1):
http: control GSSAPI credential delegation
Philip Oakley (14):
doc: use 'symmetric difference' consistently
doc: revisions - name the left and right sides
doc: show the actual left, right, and boundary marks
doc: revisions: give headings for the two and three dot notations
doc: revisions: extra clarification of <rev>^! notation effects
doc: revisions: single vs multi-parent notation comparison
doc: gitrevisions - use 'reachable' in page description
doc: gitrevisions - clarify 'latter case' is revision walk
doc: revisions - define `reachable`
doc: revisions - clarify reachability examples
doc: revisions: show revision expansion in examples
doc: revisions: sort examples and fix alignment of the unchanged
doc: fix merge-base ASCII art tab spacing
doc: fix the 'revert a faulty merge' ASCII art tab spacing
Pranit Bauva (2):
rev-list-options: clarify the usage of --reverse
t0040: convert all possible tests to use `test-parse-options --expect`
Ralf Thielow (7):
help: introduce option --exclude-guides
help: make option --help open man pages only for Git commands
rebase -i: improve advice on bad instruction lines
l10n: de.po: fix translation of autostash
l10n: de.po: translate 260 new messages
fetch-pack.c: correct command at the beginning of an error message
l10n: de.po: translate 210 new messages
Ray Chen (1):
l10n: zh_CN: review for git v2.10.0 l10n
René Scharfe (36):
compat: move strdup(3) replacement to its own file
introduce hex2chr() for converting two hexadecimal digits to a character
strbuf: use valid pointer in strbuf_remove()
checkout: constify parameters of checkout_stage() and checkout_merged()
unpack-trees: pass checkout state explicitly to check_updates()
sha1_file: use llist_mergesort() for sorting packs
xdiff: fix merging of hunks with -W context and -u context
contrib/coccinelle: fix semantic patch for oid_to_hex_r()
add coccicheck make target
use strbuf_addstr() for adding constant strings to a strbuf, part 2
pretty: let %C(auto) reset all attributes
introduce CHECKOUT_INIT
add COPY_ARRAY
use COPY_ARRAY
git-gui: stop using deprecated merge syntax
gitignore: ignore output files of coccicheck make target
use strbuf_addstr() instead of strbuf_addf() with "%s", part 2
use strbuf_add_unique_abbrev() for adding short hashes, part 2
add QSORT
use QSORT
remove unnecessary check before QSORT
coccicheck: use --all-includes by default
use QSORT, part 2
pretty: avoid adding reset for %C(auto) if output is empty
coccicheck: make transformation for strbuf_addf(sb, "...") more precise
show-branch: use QSORT
remove unnecessary NULL check before free(3)
use strbuf_add_unique_abbrev() for adding short hashes, part 3
pretty: fix document link for color specification
avoid pointer arithmetic involving NULL in FLEX_ALLOC_MEM
inline xalloc_flex() into FLEXPTR_ALLOC_MEM
hex: make wraparound of the index into ring-buffer explicit
valgrind: support test helpers
commit: simplify building parents list
sha1_name: make wraparound of the index into ring-buffer explicit
cocci: avoid self-references in object_id transformations
Ronnie Sahlberg (2):
refs: add a backend method structure
refs: add a transaction_commit() method
SZEDER Gábor (1):
ref-filter: strip format option after a field name only once while parsing
Satoshi Yasushima (6):
git-gui: consistently use the same word for "remote" in Japanese
git-gui: consistently use the same word for "blame" in Japanese
git-gui: apply po template to Japanese translation
git-gui: add Japanese language code
git-gui: update Japanese translation
git-gui: update Japanese information
Stefan Beller (16):
t7408: modernize style
t7408: merge short tests, factor out testing method
submodule--helper module-clone: allow multiple references
submodule--helper update-clone: allow multiple references
clone: factor out checking for an alternate path
clone: clarify option_reference as required
clone: implement optional references
clone: recursive and reference option triggers submodule alternates
xdiff: remove unneeded declarations
transport: report missing submodule pushes consistently on stderr
diff.c: use diff_options directly
diff: omit found pointer from emit_callback
diff: remove dead code
submodule: ignore trailing slash on superproject URL
submodule: ignore trailing slash in relative url
documentation: improve submodule.<name>.{url, path} description
Stefan Christ (1):
Documentation/fmt-merge-msg: fix markup in example
Thomas Gummerer (4):
add: document the chmod option
update-index: add test for chmod flags
read-cache: introduce chmod_index_entry
add: modify already added files when --chmod is given
Tobias Klauser (1):
diffcore-delta: remove unused parameter to diffcore_count_changes()
Trần Ngọc Quân (1):
l10n: vi.po: Updated translation to v2.11.0 (2913t)
Vasco Almeida (33):
l10n: pt_PT: update Portuguese translation
l10n: pt_PT: update Portuguese repository info
i18n: blame: mark error messages for translation
i18n: branch: mark option description for translation
i18n: config: mark error message for translation
i18n: merge-recursive: mark error messages for translation
i18n: merge-recursive: mark verbose message for translation
i18n: notes: mark error messages for translation
notes: spell first word of error messages in lowercase
i18n: receive-pack: mark messages for translation
i18n: show-branch: mark error messages for translation
i18n: show-branch: mark plural strings for translation
i18n: update-index: mark warnings for translation
i18n: commit: mark message for translation
i18n: connect: mark die messages for translation
i18n: ident: mark hint for translation
i18n: notes-merge: mark die messages for translation
i18n: stash: mark messages for translation
git-gui i18n: mark strings for translation
git-gui: l10n: add Portuguese translation
git-gui i18n: internationalize use of colon punctuation
git-gui i18n: mark "usage:" strings for translation
git-gui: fix incorrect use of Tcl append command
git-gui i18n: mark string in lib/error.tcl for translation
t1512: become resilient to GETTEXT_POISON build
i18n: apply: mark plural string for translation
i18n: apply: mark info messages for translation
i18n: apply: mark error messages for translation
i18n: apply: mark error message for translation
i18n: convert mark error messages for translation
i18n: credential-cache--daemon: mark advice for translation
i18n: diff: mark warnings for translation
l10n: pt_PT: update Portuguese translation
Vegard Nossum (1):
revision: new rev^-n shorthand for rev^n..rev
Younes Khoudli (1):
doc: remove reference to the traditional layout in git-tag.txt
brian m. carlson (20):
cache: convert struct cache_entry to use struct object_id
builtin/apply: convert static functions to struct object_id
builtin/blame: convert struct origin to use struct object_id
builtin/log: convert some static functions to use struct object_id
builtin/cat-file: convert struct expand_data to use struct object_id
builtin/cat-file: convert some static functions to struct object_id
builtin: convert textconv_object to use struct object_id
streaming: make stream_blob_to_fd take struct object_id
builtin/checkout: convert some static functions to struct object_id
notes-merge: convert struct notes_merge_pair to struct object_id
Convert read_mmblob to take struct object_id.
builtin/blame: convert file to use struct object_id
builtin/rm: convert to use struct object_id
notes: convert init_notes to use struct object_id
builtin/update-index: convert file to struct object_id
sha1_name: convert get_sha1_mb to struct object_id
refs: add an update_ref_oid function.
builtin/am: convert to struct object_id
builtin/commit-tree: convert to struct object_id
builtin/reset: convert to use struct object_id
jfbu (1):
l10n: fr.po fix grammar mistakes
yaras (1):
git-gui: fix initial git gui message encoding
Ævar Arnfjörð Bjarmason (3):
gitweb: fix a typo in a comment
gitweb: link to 7-char+ SHA-1s, not only 8-char+
gitweb: link to "git describe"'d commits in log messages
Дилян Палаузов (1):
./configure.ac: detect SSL in libcurl using curl-config
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.11.0-rc3
@ 2016-11-23 23:21 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-11-23 23:21 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.11.0-rc3 is now available for testing
at the usual places. It is comprised of 666 non-merge commits
since v2.10.0, contributed by 73 people, 15 of which are new faces.
It turns out that one recent fix exposed codepaths that have not
been using the API correctly, resulting apparent minor regressions
in a few programs. This hopefully final release candidate contains
fixes to them.
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.11.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.10.0 are as follows.
Welcome to the Git development community!
Aaron M Watson, Brandon Williams, Brian Henderson, Emily Xie,
Gavin Lambert, Ian Kelling, Jeff Hostetler, jfbu, Mantas
Mikulėnas, Petr Stodulka, Satoshi Yasushima, Stefan Christ,
Vegard Nossum, yaras, and Younes Khoudli.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Alex Riesen, Anders Kaseorg, Andreas Schwab, Beat Bolli, Ben
North, brian m. carlson, Changwoo Ryu, Chris Packham, Christian
Couder, David Aguilar, David Turner, Dennis Kaarsemaker,
Dimitriy Ryazantcev, Elia Pinto, Eric Wong, Jacob Keller,
Jakub Narębski, Jean-Noel Avila, Jean-Noël AVILA, Jeff King,
Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Josh Triplett, Junio C Hamano, Karsten Blees, Kevin
Daudt, Kirill Smelkov, Lars Schneider, Linus Torvalds, Matthieu
Moy, Michael Haggerty, Michael J Gruber, Mike Ralphson, Nguyễn
Thái Ngọc Duy, Olaf Hering, Orgad Shaneh, Patrick Steinhardt,
Pat Thoyts, Peter Krefting, Philip Oakley, Pranit Bauva, Ralf
Thielow, Ray Chen, René Scharfe, Ronnie Sahlberg, Stefan Beller,
SZEDER Gábor, Thomas Gummerer, Tobias Klauser, Trần Ngọc
Quân, Vasco Almeida, and Дилян Палаузов.
----------------------------------------------------------------
Git 2.11 Release Notes (draft)
==============================
Backward compatibility notes.
* An empty string used as a pathspec element has always meant
'everything matches', but it is too easy to write a script that
finds a path to remove in $path and run 'git rm "$paht"' by
mistake (when the user meant to give "$path"), which ends up
removing everything. This release starts warning about the
use of an empty string that is used for 'everything matches' and
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.
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and will be removed in the
next release (not this one).
* The default abbreviation length, which has historically been 7, now
scales as the repository grows, using the approximate number of
objects in the repository and a bit of math around the birthday
paradox. The logic suggests to use 12 hexdigits for the Linux
kernel, and 9 to 10 for Git itself.
Updates since v2.10
-------------------
UI, Workflows & Features
* Comes with new version of git-gui, now at its 0.21.0 tag.
* "git format-patch --cover-letter HEAD^" to format a single patch
with a separate cover letter now numbers the output as [PATCH 0/1]
and [PATCH 1/1] by default.
* An incoming "git push" that attempts to push too many bytes can now
be rejected by setting a new configuration variable at the receiving
end.
* "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
which was not intuitive, given that "git nosuchcommand" said "git:
'nosuchcommand' is not a git command".
* "git clone --recurse-submodules --reference $path $URL" is a way to
reduce network transfer cost by borrowing objects in an existing
$path repository when cloning the superproject from $URL; it
learned to also peek into $path for presence of corresponding
repositories of submodules and borrow objects from there when able.
* The "git diff --submodule={short,log}" mechanism has been enhanced
to allow "--submodule=diff" to show the patch between the submodule
commits bound to the superproject.
* Even though "git hash-objects", which is a tool to take an
on-filesystem data stream and put it into the Git object store,
allowed to perform the "outside-world-to-Git" conversions (e.g.
end-of-line conversions and application of the clean-filter), and
it had the feature on by default from very early days, its reverse
operation "git cat-file", which takes an object from the Git object
store and externalize for the consumption by the outside world,
lacked an equivalent mechanism to run the "Git-to-outside-world"
conversion. The command learned the "--filters" option to do so.
* Output from "git diff" can be made easier to read by selecting
which lines are common and which lines are added/deleted
intelligently when the lines before and after the changed section
are the same. A command line option is added to help with the
experiment to find a good heuristics.
* In some projects, it is common to use "[RFC PATCH]" as the subject
prefix for a patch meant for discussion rather than application. A
new option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH"
to help the participants of such projects.
* "git add --chmod=+x <pathspec>" added recently only toggled the
executable bit for paths that are either new or modified. This has
been corrected to flip the executable bit for all paths that match
the given pathspec.
* When "git format-patch --stdout" output is placed as an in-body
header and it uses the RFC2822 header folding, "git am" failed to
put the header line back into a single logical line. The
underlying "git mailinfo" was taught to handle this properly.
* "gitweb" can spawn "highlight" to show blob contents with
(programming) language-specific syntax highlighting, but only
when the language is known. "highlight" can however be told
to make the guess itself by giving it "--force" option, which
has been enabled.
* "git gui" l10n to Portuguese.
* When given an abbreviated object name that is not (or more
realistically, "no longer") unique, we gave a fatal error
"ambiguous argument". This error is now accompanied by a hint that
lists the objects beginning with the given prefix. During the
course of development of this new feature, numerous minor bugs were
uncovered and corrected, the most notable one of which is that we
gave "short SHA1 xxxx is ambiguous." twice without good reason.
* "git log rev^..rev" is an often-used revision range specification
to show what was done on a side branch merged at rev. This has
gained a short-hand "rev^-1". In general "rev^-$n" is the same as
"^rev^$n rev", i.e. what has happened on other branches while the
history leading to nth parent was looking the other way.
* In recent versions of cURL, GSSAPI credential delegation is
disabled by default due to CVE-2011-2192; introduce a configuration
to selectively allow enabling this.
(merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint).
* "git mergetool" learned to honor "-O<orderfile>" to control the
order of paths to present to the end user.
* "git diff/log --ws-error-highlight=<kind>" lacked the corresponding
configuration variable to set it by default.
* "git ls-files" learned "--recurse-submodules" option that can be
used to get a listing of tracked files across submodules (i.e. this
only works with "--cached" option, not for listing untracked or
ignored files). This would be a useful tool to sit on the upstream
side of a pipe that is read with xargs to work on all working tree
files from the top-level superproject.
* A new credential helper that talks via "libsecret" with
implementations of XDG Secret Service API has been added to
contrib/credential/.
* The GPG verification status shown in "%G?" pretty format specifier
was not rich enough to differentiate a signature made by an expired
key, a signature made by a revoked key, etc. New output letters
have been assigned to express them.
* In addition to purely abbreviated commit object names, "gitweb"
learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787)
into clickable links in its output.
* When new paths were added by "git add -N" to the index, it was
enough to circumvent the check by "git commit" to refrain from
making an empty commit without "--allow-empty". The same logic
prevented "git status" to show such a path as "new file" in the
"Changes not staged for commit" section.
* The smudge/clean filter API expect an external process is spawned
to filter the contents for each path that has a filter defined. A
new type of "process" filter API has been added to allow the first
request to run the filter for a path to spawn a single process, and
all filtering need is served by this single process for multiple
paths, reducing the process creation overhead.
* The user always has to say "stash@{$N}" when naming a single
element in the default location of the stash, i.e. reflogs in
refs/stash. The "git stash" command learned to accept "git stash
apply 4" as a short-hand for "git stash apply stash@{4}".
Performance, Internal Implementation, Development Support etc.
* The delta-base-cache mechanism has been a key to the performance in
a repository with a tightly packed packfile, but it did not scale
well even with a larger value of core.deltaBaseCacheLimit.
* Enhance "git status --porcelain" output by collecting more data on
the state of the index and the working tree files, which may
further be used to teach git-prompt (in contrib/) to make fewer
calls to git.
* Extract a small helper out of the function that reads the authors
script file "git am" internally uses.
(merge a77598e jc/am-read-author-file later to maint).
* Lifts calls to exit(2) and die() higher in the callchain in
sequencer.c files so that more helper functions in it can be used
by callers that want to handle error conditions themselves.
* "git am" has been taught to make an internal call to "git apply"'s
innards without spawning the latter as a separate process.
* The ref-store abstraction was introduced to the refs API so that we
can plug in different backends to store references.
* The "unsigned char sha1[20]" to "struct object_id" conversion
continues. Notable changes in this round includes that ce->sha1,
i.e. the object name recorded in the cache_entry, turns into an
object_id.
* JGit can show a fake ref "capabilities^{}" to "git fetch" when it
does not advertise any refs, but "git fetch" was not prepared to
see such an advertisement. When the other side disconnects without
giving any ref advertisement, we used to say "there may not be a
repository at that URL", but we may have seen other advertisement
like "shallow" and ".have" in which case we definitely know that a
repository is there. The code to detect this case has also been
updated.
* Some codepaths in "git pack-objects" were not ready to use an
existing pack bitmap; now they are and as the result they have
become faster.
* The codepath in "git fsck" to detect malformed tree objects has
been updated not to die but keep going after detecting them.
* We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
the time third parameter is redundant. A new QSORT() macro lets us
omit it.
* "git pack-objects" in a repository with many packfiles used to
spend a lot of time looking for/at objects in them; the accesses to
the packfiles are now optimized by checking the most-recently-used
packfile first.
(merge c9af708b1a jk/pack-objects-optim-mru later to maint).
* Codepaths involved in interacting alternate object store have
been cleaned up.
* In order for the receiving end of "git push" to inspect the
received history and decide to reject the push, the objects sent
from the sending end need to be made available to the hook and
the mechanism for the connectivity check, and this was done
traditionally by storing the objects in the receiving repository
and letting "git gc" to expire it. Instead, store the newly
received objects in a temporary area, and make them available by
reusing the alternate object store mechanism to them only while we
decide if we accept the check, and once we decide, either migrate
them to the repository or purge them immediately.
* The require_clean_work_tree() helper was recreated in C when "git
pull" was rewritten from shell; the helper is now made available to
other callers in preparation for upcoming "rebase -i" work.
* "git upload-pack" had its code cleaned-up and performance improved
by reducing use of timestamp-ordered commit-list, which was
replaced with a priority queue.
* "git diff --no-index" codepath has been updated not to try to peek
into .git/ directory that happens to be under the current
directory, when we know we are operating outside any repository.
* Update of the sequencer codebase to make it reusable to reimplement
"rebase -i" continues.
* Git generally does not explicitly close file descriptors that were
open in the parent process when spawning a child process, but most
of the time the child does not want to access them. As Windows does
not allow removing or renaming a file that has a file descriptor
open, a slow-to-exit child can even break the parent process by
holding onto them. Use O_CLOEXEC flag to open files in various
codepaths.
* Update "interpret-trailers" machinery and teaches it that people in
real world write all sorts of crufts in the "trailer" that was
originally designed to have the neat-o "Mail-Header: like thing"
and nothing else.
Also contains various documentation updates and code clean-ups.
Fixes since v2.10
-----------------
Unless otherwise noted, all the fixes since v2.9 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* Clarify various ways to specify the "revision ranges" in the
documentation.
* "diff-highlight" script (in contrib/) learned to work better with
"git log -p --graph" output.
* The test framework left the number of tests and success/failure
count in the t/test-results directory, keyed by the name of the
test script plus the process ID. The latter however turned out not
to serve any useful purpose. The process ID part of the filename
has been removed.
* Having a submodule whose ".git" repository is somehow corrupt
caused a few commands that recurse into submodules loop forever.
* "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
the resulting repository becomes an invalid one. Teach the command
to forbid removal of HEAD.
* A test spawned a short-lived background process, which sometimes
prevented the test directory from getting removed at the end of the
script on some platforms.
* Update a few tests that used to use GIT_CURL_VERBOSE to use the
newer GIT_TRACE_CURL.
* "git pack-objects --include-tag" was taught that when we know that
we are sending an object C, we want a tag B that directly points at
C but also a tag A that points at the tag B. We used to miss the
intermediate tag B in some cases.
* Update Japanese translation for "git-gui".
* "git fetch http::/site/path" did not die correctly and segfaulted
instead.
* "git commit-tree" stopped reading commit.gpgsign configuration
variable that was meant for Porcelain "git commit" in Git 2.9; we
forgot to update "git gui" to look at the configuration to match
this change.
* "git add --chmod=+x" added recently lacked documentation, which has
been corrected.
* "git log --cherry-pick" used to include merge commits as candidates
to be matched up with other commits, resulting a lot of wasted time.
The patch-id generation logic has been updated to ignore merges to
avoid the wastage.
* The http transport (with curl-multi option, which is the default
these days) failed to remove curl-easy handle from a curlm session,
which led to unnecessary API failures.
* There were numerous corner cases in which the configuration files
are read and used or not read at all depending on the directory a
Git command was run, leading to inconsistent behaviour. The code
to set-up repository access at the beginning of a Git process has
been updated to fix them.
(merge 4d0efa1 jk/setup-sequence-update later to maint).
* "git diff -W" output needs to extend the context backward to
include the header line of the current function and also forward to
include the body of the entire current function up to the header
line of the next one. This process may have to merge two adjacent
hunks, but the code forgot to do so in some cases.
* Performance tests done via "t/perf" did not use the same set of
build configuration if the user relied on autoconf generated
configuration.
* "git format-patch --base=..." feature that was recently added
showed the base commit information after "-- " e-mail signature
line, which turned out to be inconvenient. The base information
has been moved above the signature line.
* More i18n.
* Even when "git pull --rebase=preserve" (and the underlying "git
rebase --preserve") can complete without creating any new commit
(i.e. fast-forwards), it still insisted on having a usable ident
information (read: user.email is set correctly), which was less
than nice. As the underlying commands used inside "git rebase"
would fail with a more meaningful error message and advice text
when the bogus ident matters, this extra check was removed.
* "git gc --aggressive" used to limit the delta-chain length to 250,
which is way too deep for gaining additional space savings and is
detrimental for runtime performance. The limit has been reduced to
50.
* Documentation for individual configuration variables to control use
of color (like `color.grep`) said that their default value is
'false', instead of saying their default is taken from `color.ui`.
When we updated the default value for color.ui from 'false' to
'auto' quite a while ago, all of them broke. This has been
corrected.
* The pretty-format specifier "%C(auto)" used by the "log" family of
commands to enable coloring of the output is taught to also issue a
color-reset sequence to the output.
* A shell script example in check-ref-format documentation has been
fixed.
* "git checkout <word>" does not follow the usual disambiguation
rules when the <word> can be both a rev and a path, to allow
checking out a branch 'foo' in a project that happens to have a
file 'foo' in the working tree without having to disambiguate.
This was poorly documented and the check was incorrect when the
command was run from a subdirectory.
* Some codepaths in "git diff" used regexec(3) on a buffer that was
mmap(2)ed, which may not have a terminating NUL, leading to a read
beyond the end of the mapped region. This was fixed by introducing
a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
extension.
* The procedure to build Git on Mac OS X for Travis CI hardcoded the
internal directory structure we assumed HomeBrew uses, which was a
no-no. The procedure has been updated to ask HomeBrew things we
need to know to fix this.
* When "git rebase -i" is given a broken instruction, it told the
user to fix it with "--edit-todo", but didn't say what the step
after that was (i.e. "--continue").
* Documentation around tools to import from CVS was fairly outdated.
* "git clone --recurse-submodules" lost the progress eye-candy in
recent update, which has been corrected.
* A low-level function verify_packfile() was meant to show errors
that were detected without dying itself, but under some conditions
it didn't and died instead, which has been fixed.
* When "git fetch" tries to find where the history of the repository
it runs in has diverged from what the other side has, it has a
mechanism to avoid digging too deep into irrelevant side branches.
This however did not work well over the "smart-http" transport due
to a design bug, which has been fixed.
* In the codepath that comes up with the hostname to be used in an
e-mail when the user didn't tell us, we looked at ai_canonname
field in struct addrinfo without making sure it is not NULL first.
* "git worktree", even though it used the default_abbrev setting that
ought to be affected by core.abbrev configuration variable, ignored
the variable setting. The command has been taught to read the
default set of configuration variables to correct this.
* "git init" tried to record core.worktree in the repository's
'config' file when GIT_WORK_TREE environment variable was set and
it was different from where GIT_DIR appears as ".git" at its top,
but the logic was faulty when .git is a "gitdir:" file that points
at the real place, causing trouble in working trees that are
managed by "git worktree". This has been corrected.
* Codepaths that read from an on-disk loose object were too loose in
validating what they are reading is a proper object file and
sometimes read past the data they read from the disk, which has
been corrected. H/t to Gustavo Grieco for reporting.
* The original command line syntax for "git merge", which was "git
merge <msg> HEAD <parent>...", has been deprecated for quite some
time, and "git gui" was the last in-tree user of the syntax. This
is finally fixed, so that we can move forward with the deprecation.
* An author name, that spelled a backslash-quoted double quote in the
human readable part "My \"double quoted\" name", was not unquoted
correctly while applying a patch from a piece of e-mail.
* Doc update to clarify what "log -3 --reverse" does.
* Almost everybody uses DEFAULT_ABBREV to refer to the default
setting for the abbreviation, but "git blame" peeked into
underlying variable bypassing the macro for no good reason.
* The "graph" API used in "git log --graph" miscounted the number of
output columns consumed so far when drawing a padding line, which
has been fixed; this did not affect any existing code as nobody
tried to write anything after the padding on such a line, though.
* The code that parses the format parameter of for-each-ref command
has seen a micro-optimization.
* When we started cURL to talk to imap server when a new enough
version of cURL library is available, we forgot to explicitly add
imap(s):// before the destination. To some folks, that didn't work
and the library tried to make HTTP(s) requests instead.
* The ./configure script generated from configure.ac was taught how
to detect support of SSL by libcurl better.
* The command-line completion script (in contrib/) learned to
complete "git cmd ^mas<HT>" to complete the negative end of
reference to "git cmd ^master".
(merge 49416ad22a cp/completion-negative-refs later to maint).
* 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".
(merge cccf74e2da nd/shallow-deepen later to maint).
* It is a common mistake to say "git blame --reverse OLD path",
expecting that the command line is dwimmed as if asking how lines
in path in an old revision OLD have survived up to the current
commit.
(merge e1d09701a4 jc/blame-reverse later to maint).
* http.emptyauth configuration is a way to allow an empty username to
pass when attempting to authenticate using mechanisms like
Kerberos. We took an unspecified (NULL) username and sent ":"
(i.e. no username, no password) to CURLOPT_USERPWD, but did not do
the same when the username is explicitly set to an empty string.
* "git clone" of a local repository can be done at the filesystem
level, but the codepath did not check errors while copying and
adjusting the file that lists alternate object stores.
* Documentation for "git commit" was updated to clarify that "commit
-p <paths>" adds to the current contents of the index to come up
with what to commit.
* A stray symbolic link in $GIT_DIR/refs/ directory could make name
resolution loop forever, which has been corrected.
* The "submodule.<name>.path" stored in .gitmodules is never copied
to .git/config and such a key in .git/config has no meaning, but
the documentation described it and submodule.<name>.url next to
each other as if both belong to .git/config. This has been fixed.
* In a worktree connected to a repository elsewhere, created via "git
worktree", "git checkout" attempts to protect users from confusion
by refusing to check out a branch that is already checked out in
another worktree. However, this also prevented checking out a
branch, which is designated as the primary branch of a bare
reopsitory, in a worktree that is connected to the bare
repository. The check has been corrected to allow it.
* "git rebase" immediately after "git clone" failed to find the fork
point from the upstream.
* When fetching from a remote that has many tags that are irrelevant
to branches we are following, we used to waste way too many cycles
when checking if the object pointed at by a tag (that we are not
going to fetch!) exists in our repository too carefully.
* Protect our code from over-eager compilers.
* Recent git allows submodule.<name>.branch to use a special token
"." instead of the branch name; the documentation has been updated
to describe it.
* A hot-fix for a test added by a recent topic that went to both
'master' and 'maint' already.
* "git send-email" attempts to pick up valid e-mails from the
trailers, but people in real world write non-addresses there, like
"Cc: Stable <add@re.ss> # 4.8+", which broke the output depending
on the availability and vintage of Mail::Address perl module.
(merge dcfafc5214 mm/send-email-cc-cruft-after-address later to maint).
* The Travis CI configuration we ship ran the tests with --verbose
option but this risks non-TAP output that happens to be "ok" to be
misinterpreted as TAP signalling a test that passed. This resulted
in unnecessary failure. This has been corrected by introducing a
new mode to run our tests in the test harness to send the verbose
output separately to the log file.
* Some AsciiDoc formatter mishandles a displayed illustration with
tabs in it. Adjust a few of them in merge-base documentation to
work around them.
* A minor regression fix for "git submodule" that was introduced
when more helper functions were reimplemented in C.
(merge 77b63ac31e sb/submodule-ignore-trailing-slash later to maint).
* The code that we have used for the past 10+ years to cycle
4-element ring buffers turns out to be not quite portable in
theoretical world.
(merge bb84735c80 rs/ring-buffer-wraparound later to maint).
* "git daemon" used fixed-length buffers to turn URL to the
repository the client asked for into the server side directory
path, using snprintf() to avoid overflowing these buffers, but
allowed possibly truncated paths to the directory. This has been
tightened to reject such a request that causes overlong path to be
required to serve.
(merge 6bdb0083be jk/daemon-path-ok-check-truncation later to maint).
* Recent update to git-sh-setup (a library of shell functions that
are used by our in-tree scripted Porcelain commands) included
another shell library git-sh-i18n without specifying where it is,
relying on the $PATH. This has been fixed to be more explicit by
prefixing $(git --exec-path) output in front.
(merge 1073094f30 ak/sh-setup-dot-source-i18n-fix later to maint).
* Fix for a racy false-positive test failure.
(merge fdf4f6c79b as/merge-attr-sleep later to maint).
* Portability update and workaround for builds on recent Mac OS X.
(merge a296bc0132 ls/macos-update later to maint).
* Using a %(HEAD) placeholder in "for-each-ref --format=" option
caused the command to segfault when on an unborn branch.
(merge 84679d470d jc/for-each-ref-head-segfault-fix later to maint).
* "git rebase -i" did not work well with core.commentchar
configuration variable for two reasons, both of which have been
fixed.
(merge 882cd23777 js/rebase-i-commentchar-fix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 5c238e29a8 jk/common-main later to maint).
(merge 5a5749e45b ak/pre-receive-hook-template-modefix later to maint).
(merge 6d834ac8f1 jk/rebase-config-insn-fmt-docfix later to maint).
(merge de9f7fa3b0 rs/commit-pptr-simplify later to maint).
(merge 4259d693fc sc/fmt-merge-msg-doc-markup-fix later to maint).
(merge 28fab7b23d nd/test-helpers later to maint).
(merge c2bb0c1d1e rs/cocci later to maint).
(merge 3285b7badb ps/common-info-doc later to maint).
(merge 2b090822e8 nd/worktree-lock later to maint).
(merge 4bd488ea7c jk/create-branch-remove-unused-param later to maint).
(merge 974e0044d6 tk/diffcore-delta-remove-unused later to maint).
----------------------------------------------------------------
Changes since v2.10.0 are as follows:
Aaron M Watson (1):
stash: allow stashes to be referenced by index only
Alex Henrie (5):
am: put spaces around pipe in usage string
cat-file: put spaces around pipes in usage string
git-rebase--interactive: fix English grammar
git-merge-octopus: do not capitalize "octopus"
unpack-trees: do not capitalize "working"
Alex Riesen (2):
git-gui: support for $FILENAMES in tool definitions
git-gui: ensure the file in the diff pane is in the list of selected files
Alexander Shopov (2):
git-gui i18n: Updated Bulgarian translation (565,0f,0u)
git-gui: Mark 'All' in remote.tcl for translation
Anders Kaseorg (3):
imap-send: Tell cURL to use imap:// or imaps://
pre-receive.sample: mark it executable
git-sh-setup: be explicit where to dot-source git-sh-i18n from.
Andreas Schwab (2):
t6026-merge-attr: don't fail if sleep exits early
t6026-merge-attr: ensure that the merge driver was called
Beat Bolli (1):
SubmittingPatches: use gitk's "Copy commit summary" format
Ben North (1):
git-worktree.txt: fix typo "to"/"two", and add comma
Brandon Williams (6):
pathspec: remove unnecessary function prototypes
git: make super-prefix option
ls-files: optionally recurse into submodules
ls-files: pass through safe options for --recurse-submodules
ls-files: add pathspec matching for submodules
submodules doc: update documentation for "." used for submodule branches
Brian Henderson (3):
diff-highlight: add some tests
diff-highlight: add failing test for handling --graph output
diff-highlight: add support for --graph output
Changwoo Ryu (1):
l10n: ko.po: Update Korean translation
Chris Packham (1):
completion: support excluding refs
Christian Couder (43):
apply: make some names more specific
apply: move 'struct apply_state' to apply.h
builtin/apply: make apply_patch() return -1 or -128 instead of die()ing
builtin/apply: read_patch_file() return -1 instead of die()ing
builtin/apply: make find_header() return -128 instead of die()ing
builtin/apply: make parse_chunk() return a negative integer on error
builtin/apply: make parse_single_patch() return -1 on error
builtin/apply: make parse_whitespace_option() return -1 instead of die()ing
builtin/apply: make parse_ignorewhitespace_option() return -1 instead of die()ing
builtin/apply: move init_apply_state() to apply.c
apply: make init_apply_state() return -1 instead of exit()ing
builtin/apply: make check_apply_state() return -1 instead of die()ing
builtin/apply: move check_apply_state() to apply.c
builtin/apply: make apply_all_patches() return 128 or 1 on error
builtin/apply: make parse_traditional_patch() return -1 on error
builtin/apply: make gitdiff_*() return 1 at end of header
builtin/apply: make gitdiff_*() return -1 on error
builtin/apply: change die_on_unsafe_path() to check_unsafe_path()
builtin/apply: make build_fake_ancestor() return -1 on error
builtin/apply: make remove_file() return -1 on error
builtin/apply: make add_conflicted_stages_file() return -1 on error
builtin/apply: make add_index_file() return -1 on error
builtin/apply: make create_file() return -1 on error
builtin/apply: make write_out_one_result() return -1 on error
builtin/apply: make write_out_results() return -1 on error
unpack-objects: add --max-input-size=<size> option
builtin/apply: make try_create_file() return -1 on error
builtin/apply: make create_one_file() return -1 on error
builtin/apply: rename option parsing functions
apply: rename and move opt constants to apply.h
apply: move libified code from builtin/apply.c to apply.{c,h}
apply: make some parsing functions static again
apply: use error_errno() where possible
apply: make it possible to silently apply
apply: don't print on stdout in verbosity_silent mode
usage: add set_warn_routine()
usage: add get_error_routine() and get_warn_routine()
apply: change error_routine when silent
apply: refactor `git apply` option parsing
apply: pass apply state to build_fake_ancestor()
apply: learn to use a different index file
builtin/am: use apply API in run_apply()
split-index: s/eith/with/ typo fix
David Aguilar (4):
mergetool: add copyright
mergetool: move main program flow into a main() function
mergetool: honor diff.orderFile
mergetool: honor -O<orderfile>
David Turner (11):
rename_ref_available(): add docstring
refs: add methods for reflog
refs: add method for initial ref transaction commit
refs: make delete_refs() virtual
refs: add methods to init refs db
refs: add method to rename refs
refs: make lock generic
refs: implement iteration over only per-worktree refs
add David Turner's Two Sigma address
fsck: handle bad trees like other errors
http: http.emptyauth should allow empty (not just NULL) usernames
Dennis Kaarsemaker (1):
worktree: allow the main brach of a bare repository to be checked out
Dimitriy Ryazantcev (3):
l10n: ru.po: update Russian translation
git-gui: Update Russian translation
l10n: ru.po: update Russian translation
Elia Pinto (6):
t5541-http-push-smart.sh: use the GIT_TRACE_CURL environment var
test-lib.sh: preserve GIT_TRACE_CURL from the environment
t5550-http-fetch-dumb.sh: use the GIT_TRACE_CURL environment var
t5551-http-fetch-smart.sh: use the GIT_TRACE_CURL environment var
git-check-ref-format.txt: fixup documentation
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
Emily Xie (1):
pathspec: warn on empty strings as pathspec
Eric Wong (5):
http: warn on curl_multi_add_handle failures
http: consolidate #ifdefs for curl_multi_remove_handle
http: always remove curl easy from curlm session on release
git-svn: reduce scope of input record separator change
git-svn: "git worktree" awareness
Gavin Lambert (1):
git-svn: do not reuse caches memoized for a different architecture
Ian Kelling (2):
gitweb: remove unused guess_file_syntax() parameter
gitweb: use highlight's shebang detection
Jacob Keller (9):
format-patch: show 0/1 and 1/1 for singleton patch with cover letter
cache: add empty_tree_oid object and helper function
graph: add support for --line-prefix on all graph-aware output
diff: prepare for additional submodule formats
allow do_submodule_path to work even if submodule isn't checked out
submodule: convert show_submodule_summary to use struct object_id *
submodule: refactor show_submodule_summary with helper function
diff: teach diff to display submodule difference with an inline diff
rev-list: use hdr_termination instead of a always using a newline
Jakub Narębski (1):
configure.ac: improve description of NO_REGEX test
Jean-Noel Avila (1):
l10n: fr.po v2.11.0_rnd1
Jean-Noël AVILA (1):
i18n: i18n: diff: mark die messages for translation
Jeff Hostetler (9):
status: rename long-format print routines
status: cleanup API to wt_status_print
status: support --porcelain[=<version>]
status: collect per-file data for --porcelain=v2
status: print per-file porcelain v2 status data
status: print branch info with --porcelain=v2 --branch
git-status.txt: describe --porcelain=v2 format
test-lib-functions.sh: add lf_to_nul helper
status: unit tests for --porcelain=v2
Jeff King (116):
rebase-interactive: drop early check for valid ident
provide an initializer for "struct object_info"
sha1_file: make packed_object_info public
pack-objects: break delta cycles before delta-search phase
pack-objects: use mru list when iterating over packs
gc: default aggressive depth to 50
cache_or_unpack_entry: drop keep_cache parameter
clear_delta_base_cache_entry: use a more descriptive name
release_delta_base_cache: reuse existing detach function
delta_base_cache: use list.h for LRU
delta_base_cache: drop special treatment of blobs
delta_base_cache: use hashmap.h
t/perf: add basic perf tests for delta base cache
index-pack: add --max-input-size=<size> option
receive-pack: allow a maximum input size to be specified
test-lib: drop PID from test-results/*.count
diff-highlight: ignore test cruft
diff-highlight: add multi-byte tests
diff-highlight: avoid highlighting combined diffs
error_errno: use constant return similar to error()
color_parse_mem: initialize "struct color" temporary
t5305: move cleanup into test block
t5305: drop "dry-run" of unpack-objects
t5305: use "git -C"
t5305: simplify packname handling
pack-objects: walk tag chains for --include-tag
remote-curl: handle URLs without protocol
patch-ids: turn off rename detection
add_delta_base_cache: use list_for_each_safe
patch-ids: refuse to compute patch-id for merge commit
hash-object: always try to set up the git repository
patch-id: use RUN_SETUP_GENTLY
diff: skip implicit no-index check when given --no-index
diff: handle --no-index prefixes consistently
diff: always try to set up the repository
pager: remove obsolete comment
pager: stop loading git_default_config()
pager: make pager_program a file-local static
pager: use callbacks instead of configset
pager: handle early config
t1302: use "git -C"
test-config: setup git directory
config: only read .git/config from configured repos
init: expand comments explaining config trickery
init: reset cached config when entering new repo
t1007: factor out repeated setup
verify_packfile: check pack validity before accessing data
clone: pass --progress decision to recursive submodules
docs/cvsimport: prefer cvs-fast-export to parsecvs
docs/cvs-migration: update link to cvsps homepage
docs/cvs-migration: mention cvsimport caveats
ident: handle NULL ai_canonname
get_sha1: detect buggy calls with multiple disambiguators
get_sha1: avoid repeating ourselves via ONLY_TO_DIE
get_sha1: propagate flags to child functions
get_short_sha1: parse tags when looking for treeish
get_short_sha1: refactor init of disambiguation code
get_short_sha1: NUL-terminate hex prefix
get_short_sha1: mark ambiguity error for translation
sha1_array: let callbacks interrupt iteration
for_each_abbrev: drop duplicate objects
get_short_sha1: list ambiguous objects on error
xdiff: rename "struct group" to "struct xdlgroup"
get_short_sha1: make default disambiguation configurable
tree-walk: be more specific about corrupt tree errors
graph: fix extra spaces in graph_padding_line
t5613: drop reachable_via function
t5613: drop test_valid_repo function
t5613: use test_must_fail
t5613: whitespace/style cleanups
t5613: do not chdir in main process
find_unique_abbrev: move logic out of get_short_sha1()
clone: detect errors in normalize_path_copy
files_read_raw_ref: avoid infinite loop on broken symlinks
files_read_raw_ref: prevent infinite retry loops in general
t5613: clarify "too deep" recursion tests
link_alt_odb_entry: handle normalize_path errors
link_alt_odb_entry: refactor string handling
alternates: provide helper for adding to alternates list
alternates: provide helper for allocating alternate
alternates: encapsulate alt->base munging
alternates: use a separate scratch space
fill_sha1_file: write "boring" characters
alternates: store scratch buffer as strbuf
fill_sha1_file: write into a strbuf
count-objects: report alternates via verbose mode
sha1_file: always allow relative paths to alternates
alternates: use fspathcmp to detect duplicates
check_connected: accept an env argument
tmp-objdir: introduce API for temporary object directories
receive-pack: quarantine objects until pre-receive accepts
tmp-objdir: put quarantine information in the environment
tmp-objdir: do not migrate files starting with '.'
upload-pack: use priority queue in reachable() check
merge-base: handle --fork-point without reflog
fetch: use "quick" has_sha1_file for tag following
test-lib: handle TEST_OUTPUT_DIRECTORY with spaces
test-lib: add --verbose-log option
travis: use --verbose-log test option
test-lib: bail out when "-v" used under "prove"
daemon: detect and reject too-long paths
read info/{attributes,exclude} only when in repository
test-*-cache-tree: setup git dir
find_unique_abbrev: use 4-buffer ring
diff_unique_abbrev: rename to diff_aligned_abbrev
diff_aligned_abbrev: use "struct oid"
diff: handle sha1 abbreviations outside of repository
git-compat-util: move content inside ifdef/endif guards
doc: fix missing "::" in config list
t0021: use write_script to create rot13 shell script
t0021: put $TEST_ROOT in $PATH
t0021: use $PERL_PATH for rot13-filter.pl
t0021: fix filehandle usage on older perl
alternates: re-allow relative paths from environment
sequencer: silence -Wtautological-constant-out-of-range-compare
create_branch: drop unused "head" parameter
Jiang Xin (6):
l10n: zh_CN: fixed some typos for git 2.10.0
l10n: git.pot: v2.11.0 round 1 (209 new, 53 removed)
l10n: zh_CN: for git v2.11.0 l10n round 1
i18n: fix unmatched single quote in error message
l10n: git.pot: v2.11.0 round 2 (1 new, 1 removed)
l10n: Fixed typo of git fetch-pack command
Johannes Schindelin (63):
cat-file: fix a grammo in the man page
sequencer: lib'ify sequencer_pick_revisions()
sequencer: do not die() in do_pick_commit()
sequencer: lib'ify write_message()
sequencer: lib'ify do_recursive_merge()
sequencer: lib'ify do_pick_commit()
sequencer: lib'ify walk_revs_populate_todo()
sequencer: lib'ify prepare_revs()
sequencer: lib'ify read_and_refresh_cache()
sequencer: lib'ify read_populate_todo()
sequencer: lib'ify read_populate_opts()
sequencer: lib'ify create_seq_dir()
sequencer: lib'ify save_head()
sequencer: lib'ify save_todo()
sequencer: lib'ify save_opts()
sequencer: lib'ify fast_forward_to()
sequencer: lib'ify checkout_fast_forward()
sequencer: ensure to release the lock when we could not read the index
cat-file: introduce the --filters option
cat-file --textconv/--filters: allow specifying the path separately
cat-file: support --textconv/--filters in batch mode
git-gui: respect commit.gpgsign again
regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails
regex: add regexec_buf() that can work on a non NUL-terminated string
regex: use regexec_buf()
pull: drop confusing prefix parameter of die_on_unclean_work_tree()
pull: make code more similar to the shell script again
wt-status: make the require_clean_work_tree() function reusable
wt-status: export also the has_un{staged,committed}_changes() functions
wt-status: teach has_{unstaged,uncommitted}_changes() about submodules
wt-status: begin error messages with lower-case
reset: fix usage
sequencer: use static initializers for replay_opts
sequencer: use memoized sequencer directory path
sequencer: avoid unnecessary indirection
sequencer: future-proof remove_sequencer_state()
sequencer: plug memory leaks for the option values
sequencer: future-proof read_populate_todo()
sequencer: refactor the code to obtain a short commit name
sequencer: completely revamp the "todo" script parsing
sequencer: strip CR from the todo script
sequencer: avoid completely different messages for different actions
sequencer: get rid of the subcommand field
sequencer: remember the onelines when parsing the todo file
sequencer: prepare for rebase -i's commit functionality
sequencer: introduce a helper to read files written by scripts
sequencer: allow editing the commit message on a case-by-case basis
sequencer: support amending commits
sequencer: support cleaning up commit messages
sequencer: left-trim lines read from the script
sequencer: stop releasing the strbuf in write_message()
sequencer: roll back lock file if write_message() failed
sequencer: refactor write_message() to take a pointer/length
sequencer: teach write_message() to append an optional LF
sequencer: remove overzealous assumption in rebase -i mode
sequencer: mark action_name() for translation
sequencer: quote filenames in error messages
sequencer: start error messages consistently with lower case
sequencer: mark all error messages for translation
t6026: ensure that long-running script really is
rebase -i: highlight problems with core.commentchar
stripspace: respect repository config
rebase -i: handle core.commentChar=auto
Johannes Sixt (9):
t9903: fix broken && chain
t6026-merge-attr: clean up background process at end of test case
t3700-add: create subdirectory gently
t3700-add: do not check working tree file mode without POSIXPERM
t0060: sidestep surprising path mangling results on Windows
t0021: expect more variations in the output of uniq -c
t0021: compute file size with a single process instead of a pipeline
t0021, t5615: use $PWD instead of $(pwd) in PATH-like shell variables
t6026: clarify the point of "kill $(cat sleep.pid)"
Jonathan Nieder (1):
connect: tighten check for unexpected early hang up
Jonathan Tan (15):
tests: move test_lazy_prereq JGIT to test-lib.sh
connect: advertized capability is not a ref
mailinfo: separate in-body header processing
mailinfo: make is_scissors_line take plain char *
mailinfo: handle in-body header continuations
fetch-pack: do not reset in_vain on non-novel acks
trailer: improve const correctness
trailer: use list.h for doubly-linked list
trailer: streamline trailer item create and add
trailer: make args have their own struct
trailer: clarify failure modes in parse_trailer
trailer: allow non-trailers in trailer block
trailer: forbid leading whitespace in trailers
trailer: support values folded to multiple lines
doc: mention user-configured trailers
Josh Triplett (2):
format-patch: show base info before email signature
format-patch: add "--rfc" for the common case of [RFC PATCH]
Junio C Hamano (53):
blame: improve diagnosis for "--reverse NEW"
blame: dwim "blame --reverse OLD" as "blame --reverse OLD.."
am: refactor read_author_script()
diff.c: remove output_prefix_length field
submodule: avoid auto-discovery in prepare_submodule_repo_env()
symbolic-ref -d: do not allow removal of HEAD
Prepare for 2.9.4
Start the 2.11 cycle
First batch for 2.11
Second batch for 2.11
Third batch for 2.11
Start preparing for 2.10.1
Fourth batch for 2.11
streaming: make sure to notice corrupt object
unpack_sha1_header(): detect malformed object header
Fifth batch for 2.11
worktree: honor configuration variables
blame: use DEFAULT_ABBREV macro
Prepare for 2.10.1
Sixth batch for 2.11
diff_unique_abbrev(): document its assumption and limitation
abbrev: add FALLBACK_DEFAULT_ABBREV to prepare for auto sizing
abbrev: prepare for new world order
Git 2.10.1
Seventh batch for 2.11
t4015: split out the "setup" part of ws-error-highlight test
diff.c: refactor parse_ws_error_highlight()
diff.c: move ws-error-highlight parsing helpers up
diff: introduce diff.wsErrorHighlight option
Eighth batch for 2.11
Ninth batch for 2.11
Start preparing for 2.10.2
cocci: refactor common patterns to use xstrdup_or_null()
Tenth batch for 2.11
t3700: fix broken test under !SANITY
transport: pass summary_width down the callchain
fetch: pass summary_width down the callchain
transport: allow summary-width to be computed dynamically
transport: compute summary-width dynamically
Eleventh batch for 2.11
Getting ready for 2.11-rc0
Git 2.10.2
Git 2.11-rc0
A bit of updates post -rc0
Revert "t6026-merge-attr: ensure that the merge driver was called"
Revert "t6026-merge-attr: don't fail if sleep exits early"
t0021: remove debugging cruft
Git 2.11.0-rc1
Git 2.11-rc2
for-each-ref: do not segv with %(HEAD) on an unborn branch
mailinfo: read local configuration
archive: read local configuration
Git 2.11-rc3
Karsten Blees (2):
git-gui: unicode file name support on windows
git-gui: handle the encoding of Git's output correctly
Kevin Daudt (2):
t5100-mailinfo: replace common path prefix with variable
mailinfo: unescape quoted-pair in header fields
Kirill Smelkov (3):
pack-objects: respect --local/--honor-pack-keep/--incremental when bitmap is in use
pack-objects: use reachability bitmap index when generating non-stdout pack
t/perf/run: copy config.mak.autogen & friends to build area
Lars Schneider (20):
travis-ci: ask homebrew for its path instead of hardcoding it
convert: quote filter names in error messages
convert: modernize tests
run-command: move check_pipe() from write_or_die to run_command
run-command: add clean_on_exit_handler
pkt-line: rename packet_write() to packet_write_fmt()
pkt-line: extract set_packet_header()
pkt-line: add packet_write_fmt_gently()
pkt-line: add packet_flush_gently()
pkt-line: add packet_write_gently()
pkt-line: add functions to read/write flush terminated packet streams
convert: make apply_filter() adhere to standard Git error handling
convert: prepare filter.<driver>.process option
convert: add filter.<driver>.process option
contrib/long-running-filter: add long running filter example
sha1_file: rename git_open_noatime() to git_open()
sha1_file: open window into packfiles with O_CLOEXEC
read-cache: make sure file handles are not inherited by child processes
Makefile: set NO_OPENSSL on macOS by default
travis-ci: disable GIT_TEST_HTTPD for macOS
Linus Torvalds (1):
abbrev: auto size the default abbreviation
Mantas Mikulėnas (1):
contrib: add credential helper for libsecret
Matthieu Moy (4):
Documentation/config: default for color.* is color.ui
parse_mailboxes: accept extra text after <...> address
t9000-addresses: update expected results after fix
Git.pm: add comment pointing to t9000
Michael Haggerty (36):
xdl_change_compact(): fix compaction heuristic to adjust ixo
xdl_change_compact(): only use heuristic if group can't be matched
is_blank_line(): take a single xrecord_t as argument
recs_match(): take two xrecord_t pointers as arguments
xdl_change_compact(): introduce the concept of a change group
resolve_gitlink_ref(): eliminate temporary variable
refs: rename struct ref_cache to files_ref_store
refs: create a base class "ref_store" for files_ref_store
add_packed_ref(): add a files_ref_store argument
get_packed_ref(): add a files_ref_store argument
resolve_missing_loose_ref(): add a files_ref_store argument
{lock,commit,rollback}_packed_refs(): add files_ref_store arguments
refs: reorder definitions
resolve_packed_ref(): rename function from resolve_missing_loose_ref()
resolve_gitlink_packed_ref(): remove function
read_raw_ref(): take a (struct ref_store *) argument
resolve_ref_recursively(): new function
resolve_gitlink_ref(): implement using resolve_ref_recursively()
resolve_gitlink_ref(): avoid memory allocation in many cases
resolve_gitlink_ref(): rename path parameter to submodule
refs: make read_raw_ref() virtual
refs: make verify_refname_available() virtual
refs: make pack_refs() virtual
refs: make create_symref() virtual
refs: make peel_ref() virtual
repack_without_refs(): add a files_ref_store argument
lock_raw_ref(): add a files_ref_store argument
commit_ref_update(): add a files_ref_store argument
lock_ref_for_update(): add a files_ref_store argument
lock_ref_sha1_basic(): add a files_ref_store argument
split_symref_update(): add a files_ref_store argument
files_ref_iterator_begin(): take a ref_store argument
refs: add method iterator_begin
diff: improve positioning of add/delete blocks in diffs
parse-options: add parse_opt_unknown_cb()
blame: honor the diff heuristic options and config
Michael J Gruber (1):
gpg-interface: use more status letters
Mike Ralphson (1):
vcs-svn/fast_export: fix timestamp fmt specifiers
Nguyễn Thái Ngọc Duy (40):
remote-curl.c: convert fetch_git() to use argv_array
transport-helper.c: refactor set_helper_option()
upload-pack: move shallow deepen code out of receive_needs()
upload-pack: move "shallow" sending code out of deepen()
upload-pack: remove unused variable "backup"
upload-pack: move "unshallow" sending code out of deepen()
upload-pack: use skip_prefix() instead of starts_with()
upload-pack: tighten number parsing at "deepen" lines
upload-pack: make check_non_tip() clean things up on error
upload-pack: move rev-list code out of check_non_tip()
fetch-pack: use skip_prefix() instead of starts_with()
fetch-pack: use a common function for verbose printing
fetch-pack.c: mark strings for translating
fetch-pack: use a separate flag for fetch in deepening mode
shallow.c: implement a generic shallow boundary finder based on rev-list
upload-pack: add deepen-since to cut shallow repos based on time
fetch: define shallow boundary with --shallow-since
clone: define shallow clone boundary based on time with --shallow-since
t5500, t5539: tests for shallow depth since a specific date
refs: add expand_ref()
upload-pack: support define shallow boundary by excluding revisions
fetch: define shallow boundary with --shallow-exclude
clone: define shallow clone boundary with --shallow-exclude
t5500, t5539: tests for shallow depth excluding a ref
upload-pack: split check_unreachable() in two, prep for get_reachable_list()
upload-pack: add get_reachable_list()
fetch, upload-pack: --deepen=N extends shallow boundary by N commits
checkout: add some spaces between code and comment
checkout.txt: document a common case that ignores ambiguation rules
checkout: fix ambiguity check in subdir
init: correct re-initialization from a linked worktree
init: call set_git_dir_init() from within init_db()
init: kill set_git_dir_init()
init: do not set unnecessary core.worktree
init: kill git_link variable
git-commit.txt: clarify --patch mode with pathspec
diff-lib: allow ita entries treated as "not yet exist in index"
diff: add --ita-[in]visible-in-index
commit: fix empty commit creation when there's no changes but ita entries
commit: don't be fooled by ita entries when creating initial commit
Olaf Hering (1):
git-gui: sort entries in tclIndex
Orgad Shaneh (1):
git-gui: Do not reset author details on amend
Pat Thoyts (7):
Allow keyboard control to work in the staging widgets.
Amend tab ordering and text widget border and highlighting.
git-gui: fix detection of Cygwin
git-gui (Windows): use git-gui.exe in `Create Desktop Shortcut`
git-gui: maintain backwards compatibility for merge syntax
git-gui: avoid persisting modified author identity
git-gui: set version 0.21
Patrick Steinhardt (1):
doc: fix location of 'info/' with $GIT_COMMON_DIR
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (2913t0f0u)
Petr Stodulka (1):
http: control GSSAPI credential delegation
Philip Oakley (14):
doc: use 'symmetric difference' consistently
doc: revisions - name the left and right sides
doc: show the actual left, right, and boundary marks
doc: revisions: give headings for the two and three dot notations
doc: revisions: extra clarification of <rev>^! notation effects
doc: revisions: single vs multi-parent notation comparison
doc: gitrevisions - use 'reachable' in page description
doc: gitrevisions - clarify 'latter case' is revision walk
doc: revisions - define `reachable`
doc: revisions - clarify reachability examples
doc: revisions: show revision expansion in examples
doc: revisions: sort examples and fix alignment of the unchanged
doc: fix merge-base ASCII art tab spacing
doc: fix the 'revert a faulty merge' ASCII art tab spacing
Pranit Bauva (2):
rev-list-options: clarify the usage of --reverse
t0040: convert all possible tests to use `test-parse-options --expect`
Ralf Thielow (6):
help: introduce option --exclude-guides
help: make option --help open man pages only for Git commands
rebase -i: improve advice on bad instruction lines
l10n: de.po: fix translation of autostash
l10n: de.po: translate 260 new messages
fetch-pack.c: correct command at the beginning of an error message
Ray Chen (1):
l10n: zh_CN: review for git v2.10.0 l10n
René Scharfe (36):
compat: move strdup(3) replacement to its own file
introduce hex2chr() for converting two hexadecimal digits to a character
strbuf: use valid pointer in strbuf_remove()
checkout: constify parameters of checkout_stage() and checkout_merged()
unpack-trees: pass checkout state explicitly to check_updates()
sha1_file: use llist_mergesort() for sorting packs
xdiff: fix merging of hunks with -W context and -u context
contrib/coccinelle: fix semantic patch for oid_to_hex_r()
add coccicheck make target
use strbuf_addstr() for adding constant strings to a strbuf, part 2
pretty: let %C(auto) reset all attributes
introduce CHECKOUT_INIT
add COPY_ARRAY
use COPY_ARRAY
git-gui: stop using deprecated merge syntax
gitignore: ignore output files of coccicheck make target
use strbuf_addstr() instead of strbuf_addf() with "%s", part 2
use strbuf_add_unique_abbrev() for adding short hashes, part 2
add QSORT
use QSORT
remove unnecessary check before QSORT
coccicheck: use --all-includes by default
use QSORT, part 2
pretty: avoid adding reset for %C(auto) if output is empty
coccicheck: make transformation for strbuf_addf(sb, "...") more precise
show-branch: use QSORT
remove unnecessary NULL check before free(3)
use strbuf_add_unique_abbrev() for adding short hashes, part 3
pretty: fix document link for color specification
avoid pointer arithmetic involving NULL in FLEX_ALLOC_MEM
inline xalloc_flex() into FLEXPTR_ALLOC_MEM
hex: make wraparound of the index into ring-buffer explicit
valgrind: support test helpers
commit: simplify building parents list
sha1_name: make wraparound of the index into ring-buffer explicit
cocci: avoid self-references in object_id transformations
Ronnie Sahlberg (2):
refs: add a backend method structure
refs: add a transaction_commit() method
SZEDER Gábor (1):
ref-filter: strip format option after a field name only once while parsing
Satoshi Yasushima (6):
git-gui: consistently use the same word for "remote" in Japanese
git-gui: consistently use the same word for "blame" in Japanese
git-gui: apply po template to Japanese translation
git-gui: add Japanese language code
git-gui: update Japanese translation
git-gui: update Japanese information
Stefan Beller (16):
t7408: modernize style
t7408: merge short tests, factor out testing method
submodule--helper module-clone: allow multiple references
submodule--helper update-clone: allow multiple references
clone: factor out checking for an alternate path
clone: clarify option_reference as required
clone: implement optional references
clone: recursive and reference option triggers submodule alternates
xdiff: remove unneeded declarations
transport: report missing submodule pushes consistently on stderr
diff.c: use diff_options directly
diff: omit found pointer from emit_callback
diff: remove dead code
submodule: ignore trailing slash on superproject URL
submodule: ignore trailing slash in relative url
documentation: improve submodule.<name>.{url, path} description
Stefan Christ (1):
Documentation/fmt-merge-msg: fix markup in example
Thomas Gummerer (4):
add: document the chmod option
update-index: add test for chmod flags
read-cache: introduce chmod_index_entry
add: modify already added files when --chmod is given
Tobias Klauser (1):
diffcore-delta: remove unused parameter to diffcore_count_changes()
Trần Ngọc Quân (1):
l10n: vi.po: Updated translation to v2.11.0 (2913t)
Vasco Almeida (33):
l10n: pt_PT: update Portuguese translation
l10n: pt_PT: update Portuguese repository info
i18n: blame: mark error messages for translation
i18n: branch: mark option description for translation
i18n: config: mark error message for translation
i18n: merge-recursive: mark error messages for translation
i18n: merge-recursive: mark verbose message for translation
i18n: notes: mark error messages for translation
notes: spell first word of error messages in lowercase
i18n: receive-pack: mark messages for translation
i18n: show-branch: mark error messages for translation
i18n: show-branch: mark plural strings for translation
i18n: update-index: mark warnings for translation
i18n: commit: mark message for translation
i18n: connect: mark die messages for translation
i18n: ident: mark hint for translation
i18n: notes-merge: mark die messages for translation
i18n: stash: mark messages for translation
git-gui i18n: mark strings for translation
git-gui: l10n: add Portuguese translation
git-gui i18n: internationalize use of colon punctuation
git-gui i18n: mark "usage:" strings for translation
git-gui: fix incorrect use of Tcl append command
git-gui i18n: mark string in lib/error.tcl for translation
t1512: become resilient to GETTEXT_POISON build
i18n: apply: mark plural string for translation
i18n: apply: mark info messages for translation
i18n: apply: mark error messages for translation
i18n: apply: mark error message for translation
i18n: convert mark error messages for translation
i18n: credential-cache--daemon: mark advice for translation
i18n: diff: mark warnings for translation
l10n: pt_PT: update Portuguese translation
Vegard Nossum (1):
revision: new rev^-n shorthand for rev^n..rev
Younes Khoudli (1):
doc: remove reference to the traditional layout in git-tag.txt
brian m. carlson (20):
cache: convert struct cache_entry to use struct object_id
builtin/apply: convert static functions to struct object_id
builtin/blame: convert struct origin to use struct object_id
builtin/log: convert some static functions to use struct object_id
builtin/cat-file: convert struct expand_data to use struct object_id
builtin/cat-file: convert some static functions to struct object_id
builtin: convert textconv_object to use struct object_id
streaming: make stream_blob_to_fd take struct object_id
builtin/checkout: convert some static functions to struct object_id
notes-merge: convert struct notes_merge_pair to struct object_id
Convert read_mmblob to take struct object_id.
builtin/blame: convert file to use struct object_id
builtin/rm: convert to use struct object_id
notes: convert init_notes to use struct object_id
builtin/update-index: convert file to struct object_id
sha1_name: convert get_sha1_mb to struct object_id
refs: add an update_ref_oid function.
builtin/am: convert to struct object_id
builtin/commit-tree: convert to struct object_id
builtin/reset: convert to use struct object_id
jfbu (1):
l10n: fr.po fix grammar mistakes
yaras (1):
git-gui: fix initial git gui message encoding
Ævar Arnfjörð Bjarmason (3):
gitweb: fix a typo in a comment
gitweb: link to 7-char+ SHA-1s, not only 8-char+
gitweb: link to "git describe"'d commits in log messages
Дилян Палаузов (1):
./configure.ac: detect SSL in libcurl using curl-config
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.11.0-rc2
@ 2016-11-17 22:24 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-11-17 22:24 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.11.0-rc2 is now available for testing
at the usual places. It is comprised of 646 non-merge commits
since v2.10.0, contributed by 68 people, 14 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.11.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.10.0 are as follows.
Welcome to the Git development community!
Aaron M Watson, Brandon Williams, Brian Henderson, Emily Xie,
Gavin Lambert, Ian Kelling, Jeff Hostetler, Mantas Mikulėnas,
Petr Stodulka, Satoshi Yasushima, Stefan Christ, Vegard Nossum,
yaras, and Younes Khoudli.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Alex Riesen, Anders Kaseorg, Andreas Schwab, Beat Bolli, Ben
North, brian m. carlson, Chris Packham, Christian Couder, David
Aguilar, David Turner, Dennis Kaarsemaker, Dimitriy Ryazantcev,
Elia Pinto, Eric Wong, Jacob Keller, Jakub Narębski, Jean-Noël
AVILA, Jeff King, Jiang Xin, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Josh Triplett, Junio C Hamano,
Karsten Blees, Kevin Daudt, Kirill Smelkov, Lars Schneider,
Linus Torvalds, Matthieu Moy, Michael Haggerty, Michael J Gruber,
Mike Ralphson, Nguyễn Thái Ngọc Duy, Olaf Hering, Orgad
Shaneh, Patrick Steinhardt, Pat Thoyts, Philip Oakley, Pranit
Bauva, Ralf Thielow, Ray Chen, René Scharfe, Ronnie Sahlberg,
Stefan Beller, SZEDER Gábor, Thomas Gummerer, Tobias Klauser,
Vasco Almeida, and Дилян Палаузов.
----------------------------------------------------------------
Git 2.11 Release Notes (draft)
==============================
Backward compatibility notes.
* An empty string used as a pathspec element has always meant
'everything matches', but it is too easy to write a script that
finds a path to remove in $path and run 'git rm "$paht"' by
mistake (when the user meant to give "$path"), which ends up
removing everything. This release starts warning about the
use of an empty string that is used for 'everything matches' and
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.
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and will be removed in the
next release (not this one).
* The default abbreviation length, which has historically been 7, now
scales as the repository grows, using the approximate number of
objects in the repository and a bit of math around the birthday
paradox. The logic suggests to use 12 hexdigits for the Linux
kernel, and 9 to 10 for Git itself.
Updates since v2.10
-------------------
UI, Workflows & Features
* Comes with new version of git-gui, now at its 0.21.0 tag.
* "git format-patch --cover-letter HEAD^" to format a single patch
with a separate cover letter now numbers the output as [PATCH 0/1]
and [PATCH 1/1] by default.
* An incoming "git push" that attempts to push too many bytes can now
be rejected by setting a new configuration variable at the receiving
end.
* "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
which was not intuitive, given that "git nosuchcommand" said "git:
'nosuchcommand' is not a git command".
* "git clone --recurse-submodules --reference $path $URL" is a way to
reduce network transfer cost by borrowing objects in an existing
$path repository when cloning the superproject from $URL; it
learned to also peek into $path for presence of corresponding
repositories of submodules and borrow objects from there when able.
* The "git diff --submodule={short,log}" mechanism has been enhanced
to allow "--submodule=diff" to show the patch between the submodule
commits bound to the superproject.
* Even though "git hash-objects", which is a tool to take an
on-filesystem data stream and put it into the Git object store,
allowed to perform the "outside-world-to-Git" conversions (e.g.
end-of-line conversions and application of the clean-filter), and
it had the feature on by default from very early days, its reverse
operation "git cat-file", which takes an object from the Git object
store and externalize for the consumption by the outside world,
lacked an equivalent mechanism to run the "Git-to-outside-world"
conversion. The command learned the "--filters" option to do so.
* Output from "git diff" can be made easier to read by selecting
which lines are common and which lines are added/deleted
intelligently when the lines before and after the changed section
are the same. A command line option is added to help with the
experiment to find a good heuristics.
* In some projects, it is common to use "[RFC PATCH]" as the subject
prefix for a patch meant for discussion rather than application. A
new option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH"
to help the participants of such projects.
* "git add --chmod=+x <pathspec>" added recently only toggled the
executable bit for paths that are either new or modified. This has
been corrected to flip the executable bit for all paths that match
the given pathspec.
* When "git format-patch --stdout" output is placed as an in-body
header and it uses the RFC2822 header folding, "git am" failed to
put the header line back into a single logical line. The
underlying "git mailinfo" was taught to handle this properly.
* "gitweb" can spawn "highlight" to show blob contents with
(programming) language-specific syntax highlighting, but only
when the language is known. "highlight" can however be told
to make the guess itself by giving it "--force" option, which
has been enabled.
* "git gui" l10n to Portuguese.
* When given an abbreviated object name that is not (or more
realistically, "no longer") unique, we gave a fatal error
"ambiguous argument". This error is now accompanied by a hint that
lists the objects beginning with the given prefix. During the
course of development of this new feature, numerous minor bugs were
uncovered and corrected, the most notable one of which is that we
gave "short SHA1 xxxx is ambiguous." twice without good reason.
* "git log rev^..rev" is an often-used revision range specification
to show what was done on a side branch merged at rev. This has
gained a short-hand "rev^-1". In general "rev^-$n" is the same as
"^rev^$n rev", i.e. what has happened on other branches while the
history leading to nth parent was looking the other way.
* In recent versions of cURL, GSSAPI credential delegation is
disabled by default due to CVE-2011-2192; introduce a configuration
to selectively allow enabling this.
(merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint).
* "git mergetool" learned to honor "-O<orderfile>" to control the
order of paths to present to the end user.
* "git diff/log --ws-error-highlight=<kind>" lacked the corresponding
configuration variable to set it by default.
* "git ls-files" learned "--recurse-submodules" option that can be
used to get a listing of tracked files across submodules (i.e. this
only works with "--cached" option, not for listing untracked or
ignored files). This would be a useful tool to sit on the upstream
side of a pipe that is read with xargs to work on all working tree
files from the top-level superproject.
* A new credential helper that talks via "libsecret" with
implementations of XDG Secret Service API has been added to
contrib/credential/.
* The GPG verification status shown in "%G?" pretty format specifier
was not rich enough to differentiate a signature made by an expired
key, a signature made by a revoked key, etc. New output letters
have been assigned to express them.
* In addition to purely abbreviated commit object names, "gitweb"
learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787)
into clickable links in its output.
* When new paths were added by "git add -N" to the index, it was
enough to circumvent the check by "git commit" to refrain from
making an empty commit without "--allow-empty". The same logic
prevented "git status" to show such a path as "new file" in the
"Changes not staged for commit" section.
* The smudge/clean filter API expect an external process is spawned
to filter the contents for each path that has a filter defined. A
new type of "process" filter API has been added to allow the first
request to run the filter for a path to spawn a single process, and
all filtering need is served by this single process for multiple
paths, reducing the process creation overhead.
* The user always has to say "stash@{$N}" when naming a single
element in the default location of the stash, i.e. reflogs in
refs/stash. The "git stash" command learned to accept "git stash
apply 4" as a short-hand for "git stash apply stash@{4}".
Performance, Internal Implementation, Development Support etc.
* The delta-base-cache mechanism has been a key to the performance in
a repository with a tightly packed packfile, but it did not scale
well even with a larger value of core.deltaBaseCacheLimit.
* Enhance "git status --porcelain" output by collecting more data on
the state of the index and the working tree files, which may
further be used to teach git-prompt (in contrib/) to make fewer
calls to git.
* Extract a small helper out of the function that reads the authors
script file "git am" internally uses.
(merge a77598e jc/am-read-author-file later to maint).
* Lifts calls to exit(2) and die() higher in the callchain in
sequencer.c files so that more helper functions in it can be used
by callers that want to handle error conditions themselves.
* "git am" has been taught to make an internal call to "git apply"'s
innards without spawning the latter as a separate process.
* The ref-store abstraction was introduced to the refs API so that we
can plug in different backends to store references.
* The "unsigned char sha1[20]" to "struct object_id" conversion
continues. Notable changes in this round includes that ce->sha1,
i.e. the object name recorded in the cache_entry, turns into an
object_id.
* JGit can show a fake ref "capabilities^{}" to "git fetch" when it
does not advertise any refs, but "git fetch" was not prepared to
see such an advertisement. When the other side disconnects without
giving any ref advertisement, we used to say "there may not be a
repository at that URL", but we may have seen other advertisement
like "shallow" and ".have" in which case we definitely know that a
repository is there. The code to detect this case has also been
updated.
* Some codepaths in "git pack-objects" were not ready to use an
existing pack bitmap; now they are and as the result they have
become faster.
* The codepath in "git fsck" to detect malformed tree objects has
been updated not to die but keep going after detecting them.
* We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
the time third parameter is redundant. A new QSORT() macro lets us
omit it.
* "git pack-objects" in a repository with many packfiles used to
spend a lot of time looking for/at objects in them; the accesses to
the packfiles are now optimized by checking the most-recently-used
packfile first.
(merge c9af708b1a jk/pack-objects-optim-mru later to maint).
* Codepaths involved in interacting alternate object store have
been cleaned up.
* In order for the receiving end of "git push" to inspect the
received history and decide to reject the push, the objects sent
from the sending end need to be made available to the hook and
the mechanism for the connectivity check, and this was done
traditionally by storing the objects in the receiving repository
and letting "git gc" to expire it. Instead, store the newly
received objects in a temporary area, and make them available by
reusing the alternate object store mechanism to them only while we
decide if we accept the check, and once we decide, either migrate
them to the repository or purge them immediately.
* The require_clean_work_tree() helper was recreated in C when "git
pull" was rewritten from shell; the helper is now made available to
other callers in preparation for upcoming "rebase -i" work.
* "git upload-pack" had its code cleaned-up and performance improved
by reducing use of timestamp-ordered commit-list, which was
replaced with a priority queue.
* "git diff --no-index" codepath has been updated not to try to peek
into .git/ directory that happens to be under the current
directory, when we know we are operating outside any repository.
* Update of the sequencer codebase to make it reusable to reimplement
"rebase -i" continues.
* Git generally does not explicitly close file descriptors that were
open in the parent process when spawning a child process, but most
of the time the child does not want to access them. As Windows does
not allow removing or renaming a file that has a file descriptor
open, a slow-to-exit child can even break the parent process by
holding onto them. Use O_CLOEXEC flag to open files in various
codepaths.
* Update "interpret-trailers" machinery and teaches it that people in
real world write all sorts of crufts in the "trailer" that was
originally designed to have the neat-o "Mail-Header: like thing"
and nothing else.
Also contains various documentation updates and code clean-ups.
Fixes since v2.10
-----------------
Unless otherwise noted, all the fixes since v2.9 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* Clarify various ways to specify the "revision ranges" in the
documentation.
* "diff-highlight" script (in contrib/) learned to work better with
"git log -p --graph" output.
* The test framework left the number of tests and success/failure
count in the t/test-results directory, keyed by the name of the
test script plus the process ID. The latter however turned out not
to serve any useful purpose. The process ID part of the filename
has been removed.
* Having a submodule whose ".git" repository is somehow corrupt
caused a few commands that recurse into submodules loop forever.
* "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
the resulting repository becomes an invalid one. Teach the command
to forbid removal of HEAD.
* A test spawned a short-lived background process, which sometimes
prevented the test directory from getting removed at the end of the
script on some platforms.
* Update a few tests that used to use GIT_CURL_VERBOSE to use the
newer GIT_TRACE_CURL.
* "git pack-objects --include-tag" was taught that when we know that
we are sending an object C, we want a tag B that directly points at
C but also a tag A that points at the tag B. We used to miss the
intermediate tag B in some cases.
* Update Japanese translation for "git-gui".
* "git fetch http::/site/path" did not die correctly and segfaulted
instead.
* "git commit-tree" stopped reading commit.gpgsign configuration
variable that was meant for Porcelain "git commit" in Git 2.9; we
forgot to update "git gui" to look at the configuration to match
this change.
* "git add --chmod=+x" added recently lacked documentation, which has
been corrected.
* "git log --cherry-pick" used to include merge commits as candidates
to be matched up with other commits, resulting a lot of wasted time.
The patch-id generation logic has been updated to ignore merges to
avoid the wastage.
* The http transport (with curl-multi option, which is the default
these days) failed to remove curl-easy handle from a curlm session,
which led to unnecessary API failures.
* There were numerous corner cases in which the configuration files
are read and used or not read at all depending on the directory a
Git command was run, leading to inconsistent behaviour. The code
to set-up repository access at the beginning of a Git process has
been updated to fix them.
(merge 4d0efa1 jk/setup-sequence-update later to maint).
* "git diff -W" output needs to extend the context backward to
include the header line of the current function and also forward to
include the body of the entire current function up to the header
line of the next one. This process may have to merge two adjacent
hunks, but the code forgot to do so in some cases.
* Performance tests done via "t/perf" did not use the same set of
build configuration if the user relied on autoconf generated
configuration.
* "git format-patch --base=..." feature that was recently added
showed the base commit information after "-- " e-mail signature
line, which turned out to be inconvenient. The base information
has been moved above the signature line.
* More i18n.
* Even when "git pull --rebase=preserve" (and the underlying "git
rebase --preserve") can complete without creating any new commit
(i.e. fast-forwards), it still insisted on having a usable ident
information (read: user.email is set correctly), which was less
than nice. As the underlying commands used inside "git rebase"
would fail with a more meaningful error message and advice text
when the bogus ident matters, this extra check was removed.
* "git gc --aggressive" used to limit the delta-chain length to 250,
which is way too deep for gaining additional space savings and is
detrimental for runtime performance. The limit has been reduced to
50.
* Documentation for individual configuration variables to control use
of color (like `color.grep`) said that their default value is
'false', instead of saying their default is taken from `color.ui`.
When we updated the default value for color.ui from 'false' to
'auto' quite a while ago, all of them broke. This has been
corrected.
* The pretty-format specifier "%C(auto)" used by the "log" family of
commands to enable coloring of the output is taught to also issue a
color-reset sequence to the output.
* A shell script example in check-ref-format documentation has been
fixed.
* "git checkout <word>" does not follow the usual disambiguation
rules when the <word> can be both a rev and a path, to allow
checking out a branch 'foo' in a project that happens to have a
file 'foo' in the working tree without having to disambiguate.
This was poorly documented and the check was incorrect when the
command was run from a subdirectory.
* Some codepaths in "git diff" used regexec(3) on a buffer that was
mmap(2)ed, which may not have a terminating NUL, leading to a read
beyond the end of the mapped region. This was fixed by introducing
a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
extension.
* The procedure to build Git on Mac OS X for Travis CI hardcoded the
internal directory structure we assumed HomeBrew uses, which was a
no-no. The procedure has been updated to ask HomeBrew things we
need to know to fix this.
* When "git rebase -i" is given a broken instruction, it told the
user to fix it with "--edit-todo", but didn't say what the step
after that was (i.e. "--continue").
* Documentation around tools to import from CVS was fairly outdated.
* "git clone --recurse-submodules" lost the progress eye-candy in
recent update, which has been corrected.
* A low-level function verify_packfile() was meant to show errors
that were detected without dying itself, but under some conditions
it didn't and died instead, which has been fixed.
* When "git fetch" tries to find where the history of the repository
it runs in has diverged from what the other side has, it has a
mechanism to avoid digging too deep into irrelevant side branches.
This however did not work well over the "smart-http" transport due
to a design bug, which has been fixed.
* In the codepath that comes up with the hostname to be used in an
e-mail when the user didn't tell us, we looked at ai_canonname
field in struct addrinfo without making sure it is not NULL first.
* "git worktree", even though it used the default_abbrev setting that
ought to be affected by core.abbrev configuration variable, ignored
the variable setting. The command has been taught to read the
default set of configuration variables to correct this.
* "git init" tried to record core.worktree in the repository's
'config' file when GIT_WORK_TREE environment variable was set and
it was different from where GIT_DIR appears as ".git" at its top,
but the logic was faulty when .git is a "gitdir:" file that points
at the real place, causing trouble in working trees that are
managed by "git worktree". This has been corrected.
* Codepaths that read from an on-disk loose object were too loose in
validating what they are reading is a proper object file and
sometimes read past the data they read from the disk, which has
been corrected. H/t to Gustavo Grieco for reporting.
* The original command line syntax for "git merge", which was "git
merge <msg> HEAD <parent>...", has been deprecated for quite some
time, and "git gui" was the last in-tree user of the syntax. This
is finally fixed, so that we can move forward with the deprecation.
* An author name, that spelled a backslash-quoted double quote in the
human readable part "My \"double quoted\" name", was not unquoted
correctly while applying a patch from a piece of e-mail.
* Doc update to clarify what "log -3 --reverse" does.
* Almost everybody uses DEFAULT_ABBREV to refer to the default
setting for the abbreviation, but "git blame" peeked into
underlying variable bypassing the macro for no good reason.
* The "graph" API used in "git log --graph" miscounted the number of
output columns consumed so far when drawing a padding line, which
has been fixed; this did not affect any existing code as nobody
tried to write anything after the padding on such a line, though.
* The code that parses the format parameter of for-each-ref command
has seen a micro-optimization.
* When we started cURL to talk to imap server when a new enough
version of cURL library is available, we forgot to explicitly add
imap(s):// before the destination. To some folks, that didn't work
and the library tried to make HTTP(s) requests instead.
* The ./configure script generated from configure.ac was taught how
to detect support of SSL by libcurl better.
* The command-line completion script (in contrib/) learned to
complete "git cmd ^mas<HT>" to complete the negative end of
reference to "git cmd ^master".
(merge 49416ad22a cp/completion-negative-refs later to maint).
* 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".
(merge cccf74e2da nd/shallow-deepen later to maint).
* It is a common mistake to say "git blame --reverse OLD path",
expecting that the command line is dwimmed as if asking how lines
in path in an old revision OLD have survived up to the current
commit.
(merge e1d09701a4 jc/blame-reverse later to maint).
* http.emptyauth configuration is a way to allow an empty username to
pass when attempting to authenticate using mechanisms like
Kerberos. We took an unspecified (NULL) username and sent ":"
(i.e. no username, no password) to CURLOPT_USERPWD, but did not do
the same when the username is explicitly set to an empty string.
* "git clone" of a local repository can be done at the filesystem
level, but the codepath did not check errors while copying and
adjusting the file that lists alternate object stores.
* Documentation for "git commit" was updated to clarify that "commit
-p <paths>" adds to the current contents of the index to come up
with what to commit.
* A stray symbolic link in $GIT_DIR/refs/ directory could make name
resolution loop forever, which has been corrected.
* The "submodule.<name>.path" stored in .gitmodules is never copied
to .git/config and such a key in .git/config has no meaning, but
the documentation described it and submodule.<name>.url next to
each other as if both belong to .git/config. This has been fixed.
* In a worktree connected to a repository elsewhere, created via "git
worktree", "git checkout" attempts to protect users from confusion
by refusing to check out a branch that is already checked out in
another worktree. However, this also prevented checking out a
branch, which is designated as the primary branch of a bare
reopsitory, in a worktree that is connected to the bare
repository. The check has been corrected to allow it.
* "git rebase" immediately after "git clone" failed to find the fork
point from the upstream.
* When fetching from a remote that has many tags that are irrelevant
to branches we are following, we used to waste way too many cycles
when checking if the object pointed at by a tag (that we are not
going to fetch!) exists in our repository too carefully.
* Protect our code from over-eager compilers.
* Recent git allows submodule.<name>.branch to use a special token
"." instead of the branch name; the documentation has been updated
to describe it.
* A hot-fix for a test added by a recent topic that went to both
'master' and 'maint' already.
* "git send-email" attempts to pick up valid e-mails from the
trailers, but people in real world write non-addresses there, like
"Cc: Stable <add@re.ss> # 4.8+", which broke the output depending
on the availability and vintage of Mail::Address perl module.
(merge dcfafc5214 mm/send-email-cc-cruft-after-address later to maint).
* The Travis CI configuration we ship ran the tests with --verbose
option but this risks non-TAP output that happens to be "ok" to be
misinterpreted as TAP signalling a test that passed. This resulted
in unnecessary failure. This has been corrected by introducing a
new mode to run our tests in the test harness to send the verbose
output separately to the log file.
* Some AsciiDoc formatter mishandles a displayed illustration with
tabs in it. Adjust a few of them in merge-base documentation to
work around them.
* A minor regression fix for "git submodule" that was introduced
when more helper functions were reimplemented in C.
(merge 77b63ac31e sb/submodule-ignore-trailing-slash later to maint).
* The code that we have used for the past 10+ years to cycle
4-element ring buffers turns out to be not quite portable in
theoretical world.
(merge bb84735c80 rs/ring-buffer-wraparound later to maint).
* "git daemon" used fixed-length buffers to turn URL to the
repository the client asked for into the server side directory
path, using snprintf() to avoid overflowing these buffers, but
allowed possibly truncated paths to the directory. This has been
tightened to reject such a request that causes overlong path to be
required to serve.
(merge 6bdb0083be jk/daemon-path-ok-check-truncation later to maint).
* Recent update to git-sh-setup (a library of shell functions that
are used by our in-tree scripted Porcelain commands) included
another shell library git-sh-i18n without specifying where it is,
relying on the $PATH. This has been fixed to be more explicit by
prefixing $(git --exec-path) output in front.
(merge 1073094f30 ak/sh-setup-dot-source-i18n-fix later to maint).
* Fix for a racy false-positive test failure.
(merge fdf4f6c79b as/merge-attr-sleep later to maint).
* Portability update and workaround for builds on recent Mac OS X.
(merge a296bc0132 ls/macos-update later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 5c238e29a8 jk/common-main later to maint).
(merge 5a5749e45b ak/pre-receive-hook-template-modefix later to maint).
(merge 6d834ac8f1 jk/rebase-config-insn-fmt-docfix later to maint).
(merge de9f7fa3b0 rs/commit-pptr-simplify later to maint).
(merge 4259d693fc sc/fmt-merge-msg-doc-markup-fix later to maint).
(merge 28fab7b23d nd/test-helpers later to maint).
(merge c2bb0c1d1e rs/cocci later to maint).
(merge 3285b7badb ps/common-info-doc later to maint).
(merge 2b090822e8 nd/worktree-lock later to maint).
(merge 4bd488ea7c jk/create-branch-remove-unused-param later to maint).
(merge 974e0044d6 tk/diffcore-delta-remove-unused later to maint).
----------------------------------------------------------------
Changes since v2.10.0 are as follows:
Aaron M Watson (1):
stash: allow stashes to be referenced by index only
Alex Henrie (5):
am: put spaces around pipe in usage string
cat-file: put spaces around pipes in usage string
git-rebase--interactive: fix English grammar
git-merge-octopus: do not capitalize "octopus"
unpack-trees: do not capitalize "working"
Alex Riesen (2):
git-gui: support for $FILENAMES in tool definitions
git-gui: ensure the file in the diff pane is in the list of selected files
Alexander Shopov (2):
git-gui i18n: Updated Bulgarian translation (565,0f,0u)
git-gui: Mark 'All' in remote.tcl for translation
Anders Kaseorg (3):
imap-send: Tell cURL to use imap:// or imaps://
pre-receive.sample: mark it executable
git-sh-setup: be explicit where to dot-source git-sh-i18n from.
Andreas Schwab (2):
t6026-merge-attr: don't fail if sleep exits early
t6026-merge-attr: ensure that the merge driver was called
Beat Bolli (1):
SubmittingPatches: use gitk's "Copy commit summary" format
Ben North (1):
git-worktree.txt: fix typo "to"/"two", and add comma
Brandon Williams (6):
pathspec: remove unnecessary function prototypes
git: make super-prefix option
ls-files: optionally recurse into submodules
ls-files: pass through safe options for --recurse-submodules
ls-files: add pathspec matching for submodules
submodules doc: update documentation for "." used for submodule branches
Brian Henderson (3):
diff-highlight: add some tests
diff-highlight: add failing test for handling --graph output
diff-highlight: add support for --graph output
Chris Packham (1):
completion: support excluding refs
Christian Couder (43):
apply: make some names more specific
apply: move 'struct apply_state' to apply.h
builtin/apply: make apply_patch() return -1 or -128 instead of die()ing
builtin/apply: read_patch_file() return -1 instead of die()ing
builtin/apply: make find_header() return -128 instead of die()ing
builtin/apply: make parse_chunk() return a negative integer on error
builtin/apply: make parse_single_patch() return -1 on error
builtin/apply: make parse_whitespace_option() return -1 instead of die()ing
builtin/apply: make parse_ignorewhitespace_option() return -1 instead of die()ing
builtin/apply: move init_apply_state() to apply.c
apply: make init_apply_state() return -1 instead of exit()ing
builtin/apply: make check_apply_state() return -1 instead of die()ing
builtin/apply: move check_apply_state() to apply.c
builtin/apply: make apply_all_patches() return 128 or 1 on error
builtin/apply: make parse_traditional_patch() return -1 on error
builtin/apply: make gitdiff_*() return 1 at end of header
builtin/apply: make gitdiff_*() return -1 on error
builtin/apply: change die_on_unsafe_path() to check_unsafe_path()
builtin/apply: make build_fake_ancestor() return -1 on error
builtin/apply: make remove_file() return -1 on error
builtin/apply: make add_conflicted_stages_file() return -1 on error
builtin/apply: make add_index_file() return -1 on error
builtin/apply: make create_file() return -1 on error
builtin/apply: make write_out_one_result() return -1 on error
builtin/apply: make write_out_results() return -1 on error
unpack-objects: add --max-input-size=<size> option
builtin/apply: make try_create_file() return -1 on error
builtin/apply: make create_one_file() return -1 on error
builtin/apply: rename option parsing functions
apply: rename and move opt constants to apply.h
apply: move libified code from builtin/apply.c to apply.{c,h}
apply: make some parsing functions static again
apply: use error_errno() where possible
apply: make it possible to silently apply
apply: don't print on stdout in verbosity_silent mode
usage: add set_warn_routine()
usage: add get_error_routine() and get_warn_routine()
apply: change error_routine when silent
apply: refactor `git apply` option parsing
apply: pass apply state to build_fake_ancestor()
apply: learn to use a different index file
builtin/am: use apply API in run_apply()
split-index: s/eith/with/ typo fix
David Aguilar (4):
mergetool: add copyright
mergetool: move main program flow into a main() function
mergetool: honor diff.orderFile
mergetool: honor -O<orderfile>
David Turner (11):
rename_ref_available(): add docstring
refs: add methods for reflog
refs: add method for initial ref transaction commit
refs: make delete_refs() virtual
refs: add methods to init refs db
refs: add method to rename refs
refs: make lock generic
refs: implement iteration over only per-worktree refs
add David Turner's Two Sigma address
fsck: handle bad trees like other errors
http: http.emptyauth should allow empty (not just NULL) usernames
Dennis Kaarsemaker (1):
worktree: allow the main brach of a bare repository to be checked out
Dimitriy Ryazantcev (2):
l10n: ru.po: update Russian translation
git-gui: Update Russian translation
Elia Pinto (6):
t5541-http-push-smart.sh: use the GIT_TRACE_CURL environment var
test-lib.sh: preserve GIT_TRACE_CURL from the environment
t5550-http-fetch-dumb.sh: use the GIT_TRACE_CURL environment var
t5551-http-fetch-smart.sh: use the GIT_TRACE_CURL environment var
git-check-ref-format.txt: fixup documentation
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
Emily Xie (1):
pathspec: warn on empty strings as pathspec
Eric Wong (5):
http: warn on curl_multi_add_handle failures
http: consolidate #ifdefs for curl_multi_remove_handle
http: always remove curl easy from curlm session on release
git-svn: reduce scope of input record separator change
git-svn: "git worktree" awareness
Gavin Lambert (1):
git-svn: do not reuse caches memoized for a different architecture
Ian Kelling (2):
gitweb: remove unused guess_file_syntax() parameter
gitweb: use highlight's shebang detection
Jacob Keller (9):
format-patch: show 0/1 and 1/1 for singleton patch with cover letter
cache: add empty_tree_oid object and helper function
graph: add support for --line-prefix on all graph-aware output
diff: prepare for additional submodule formats
allow do_submodule_path to work even if submodule isn't checked out
submodule: convert show_submodule_summary to use struct object_id *
submodule: refactor show_submodule_summary with helper function
diff: teach diff to display submodule difference with an inline diff
rev-list: use hdr_termination instead of a always using a newline
Jakub Narębski (1):
configure.ac: improve description of NO_REGEX test
Jean-Noël AVILA (1):
i18n: i18n: diff: mark die messages for translation
Jeff Hostetler (9):
status: rename long-format print routines
status: cleanup API to wt_status_print
status: support --porcelain[=<version>]
status: collect per-file data for --porcelain=v2
status: print per-file porcelain v2 status data
status: print branch info with --porcelain=v2 --branch
git-status.txt: describe --porcelain=v2 format
test-lib-functions.sh: add lf_to_nul helper
status: unit tests for --porcelain=v2
Jeff King (116):
rebase-interactive: drop early check for valid ident
provide an initializer for "struct object_info"
sha1_file: make packed_object_info public
pack-objects: break delta cycles before delta-search phase
pack-objects: use mru list when iterating over packs
gc: default aggressive depth to 50
cache_or_unpack_entry: drop keep_cache parameter
clear_delta_base_cache_entry: use a more descriptive name
release_delta_base_cache: reuse existing detach function
delta_base_cache: use list.h for LRU
delta_base_cache: drop special treatment of blobs
delta_base_cache: use hashmap.h
t/perf: add basic perf tests for delta base cache
index-pack: add --max-input-size=<size> option
receive-pack: allow a maximum input size to be specified
test-lib: drop PID from test-results/*.count
diff-highlight: ignore test cruft
diff-highlight: add multi-byte tests
diff-highlight: avoid highlighting combined diffs
error_errno: use constant return similar to error()
color_parse_mem: initialize "struct color" temporary
t5305: move cleanup into test block
t5305: drop "dry-run" of unpack-objects
t5305: use "git -C"
t5305: simplify packname handling
pack-objects: walk tag chains for --include-tag
remote-curl: handle URLs without protocol
patch-ids: turn off rename detection
add_delta_base_cache: use list_for_each_safe
patch-ids: refuse to compute patch-id for merge commit
hash-object: always try to set up the git repository
patch-id: use RUN_SETUP_GENTLY
diff: skip implicit no-index check when given --no-index
diff: handle --no-index prefixes consistently
diff: always try to set up the repository
pager: remove obsolete comment
pager: stop loading git_default_config()
pager: make pager_program a file-local static
pager: use callbacks instead of configset
pager: handle early config
t1302: use "git -C"
test-config: setup git directory
config: only read .git/config from configured repos
init: expand comments explaining config trickery
init: reset cached config when entering new repo
t1007: factor out repeated setup
verify_packfile: check pack validity before accessing data
clone: pass --progress decision to recursive submodules
docs/cvsimport: prefer cvs-fast-export to parsecvs
docs/cvs-migration: update link to cvsps homepage
docs/cvs-migration: mention cvsimport caveats
ident: handle NULL ai_canonname
get_sha1: detect buggy calls with multiple disambiguators
get_sha1: avoid repeating ourselves via ONLY_TO_DIE
get_sha1: propagate flags to child functions
get_short_sha1: parse tags when looking for treeish
get_short_sha1: refactor init of disambiguation code
get_short_sha1: NUL-terminate hex prefix
get_short_sha1: mark ambiguity error for translation
sha1_array: let callbacks interrupt iteration
for_each_abbrev: drop duplicate objects
get_short_sha1: list ambiguous objects on error
xdiff: rename "struct group" to "struct xdlgroup"
get_short_sha1: make default disambiguation configurable
tree-walk: be more specific about corrupt tree errors
graph: fix extra spaces in graph_padding_line
t5613: drop reachable_via function
t5613: drop test_valid_repo function
t5613: use test_must_fail
t5613: whitespace/style cleanups
t5613: do not chdir in main process
find_unique_abbrev: move logic out of get_short_sha1()
clone: detect errors in normalize_path_copy
files_read_raw_ref: avoid infinite loop on broken symlinks
files_read_raw_ref: prevent infinite retry loops in general
t5613: clarify "too deep" recursion tests
link_alt_odb_entry: handle normalize_path errors
link_alt_odb_entry: refactor string handling
alternates: provide helper for adding to alternates list
alternates: provide helper for allocating alternate
alternates: encapsulate alt->base munging
alternates: use a separate scratch space
fill_sha1_file: write "boring" characters
alternates: store scratch buffer as strbuf
fill_sha1_file: write into a strbuf
count-objects: report alternates via verbose mode
sha1_file: always allow relative paths to alternates
alternates: use fspathcmp to detect duplicates
check_connected: accept an env argument
tmp-objdir: introduce API for temporary object directories
receive-pack: quarantine objects until pre-receive accepts
tmp-objdir: put quarantine information in the environment
tmp-objdir: do not migrate files starting with '.'
upload-pack: use priority queue in reachable() check
merge-base: handle --fork-point without reflog
fetch: use "quick" has_sha1_file for tag following
test-lib: handle TEST_OUTPUT_DIRECTORY with spaces
test-lib: add --verbose-log option
travis: use --verbose-log test option
test-lib: bail out when "-v" used under "prove"
daemon: detect and reject too-long paths
read info/{attributes,exclude} only when in repository
test-*-cache-tree: setup git dir
find_unique_abbrev: use 4-buffer ring
diff_unique_abbrev: rename to diff_aligned_abbrev
diff_aligned_abbrev: use "struct oid"
diff: handle sha1 abbreviations outside of repository
git-compat-util: move content inside ifdef/endif guards
doc: fix missing "::" in config list
t0021: use write_script to create rot13 shell script
t0021: put $TEST_ROOT in $PATH
t0021: use $PERL_PATH for rot13-filter.pl
t0021: fix filehandle usage on older perl
alternates: re-allow relative paths from environment
sequencer: silence -Wtautological-constant-out-of-range-compare
create_branch: drop unused "head" parameter
Jiang Xin (1):
l10n: zh_CN: fixed some typos for git 2.10.0
Johannes Schindelin (60):
cat-file: fix a grammo in the man page
sequencer: lib'ify sequencer_pick_revisions()
sequencer: do not die() in do_pick_commit()
sequencer: lib'ify write_message()
sequencer: lib'ify do_recursive_merge()
sequencer: lib'ify do_pick_commit()
sequencer: lib'ify walk_revs_populate_todo()
sequencer: lib'ify prepare_revs()
sequencer: lib'ify read_and_refresh_cache()
sequencer: lib'ify read_populate_todo()
sequencer: lib'ify read_populate_opts()
sequencer: lib'ify create_seq_dir()
sequencer: lib'ify save_head()
sequencer: lib'ify save_todo()
sequencer: lib'ify save_opts()
sequencer: lib'ify fast_forward_to()
sequencer: lib'ify checkout_fast_forward()
sequencer: ensure to release the lock when we could not read the index
cat-file: introduce the --filters option
cat-file --textconv/--filters: allow specifying the path separately
cat-file: support --textconv/--filters in batch mode
git-gui: respect commit.gpgsign again
regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails
regex: add regexec_buf() that can work on a non NUL-terminated string
regex: use regexec_buf()
pull: drop confusing prefix parameter of die_on_unclean_work_tree()
pull: make code more similar to the shell script again
wt-status: make the require_clean_work_tree() function reusable
wt-status: export also the has_un{staged,committed}_changes() functions
wt-status: teach has_{unstaged,uncommitted}_changes() about submodules
wt-status: begin error messages with lower-case
reset: fix usage
sequencer: use static initializers for replay_opts
sequencer: use memoized sequencer directory path
sequencer: avoid unnecessary indirection
sequencer: future-proof remove_sequencer_state()
sequencer: plug memory leaks for the option values
sequencer: future-proof read_populate_todo()
sequencer: refactor the code to obtain a short commit name
sequencer: completely revamp the "todo" script parsing
sequencer: strip CR from the todo script
sequencer: avoid completely different messages for different actions
sequencer: get rid of the subcommand field
sequencer: remember the onelines when parsing the todo file
sequencer: prepare for rebase -i's commit functionality
sequencer: introduce a helper to read files written by scripts
sequencer: allow editing the commit message on a case-by-case basis
sequencer: support amending commits
sequencer: support cleaning up commit messages
sequencer: left-trim lines read from the script
sequencer: stop releasing the strbuf in write_message()
sequencer: roll back lock file if write_message() failed
sequencer: refactor write_message() to take a pointer/length
sequencer: teach write_message() to append an optional LF
sequencer: remove overzealous assumption in rebase -i mode
sequencer: mark action_name() for translation
sequencer: quote filenames in error messages
sequencer: start error messages consistently with lower case
sequencer: mark all error messages for translation
t6026: ensure that long-running script really is
Johannes Sixt (9):
t9903: fix broken && chain
t6026-merge-attr: clean up background process at end of test case
t3700-add: create subdirectory gently
t3700-add: do not check working tree file mode without POSIXPERM
t0060: sidestep surprising path mangling results on Windows
t0021: expect more variations in the output of uniq -c
t0021: compute file size with a single process instead of a pipeline
t0021, t5615: use $PWD instead of $(pwd) in PATH-like shell variables
t6026: clarify the point of "kill $(cat sleep.pid)"
Jonathan Nieder (1):
connect: tighten check for unexpected early hang up
Jonathan Tan (14):
tests: move test_lazy_prereq JGIT to test-lib.sh
connect: advertized capability is not a ref
mailinfo: separate in-body header processing
mailinfo: make is_scissors_line take plain char *
mailinfo: handle in-body header continuations
fetch-pack: do not reset in_vain on non-novel acks
trailer: improve const correctness
trailer: use list.h for doubly-linked list
trailer: streamline trailer item create and add
trailer: make args have their own struct
trailer: clarify failure modes in parse_trailer
trailer: allow non-trailers in trailer block
trailer: forbid leading whitespace in trailers
trailer: support values folded to multiple lines
Josh Triplett (2):
format-patch: show base info before email signature
format-patch: add "--rfc" for the common case of [RFC PATCH]
Junio C Hamano (49):
blame: improve diagnosis for "--reverse NEW"
blame: dwim "blame --reverse OLD" as "blame --reverse OLD.."
am: refactor read_author_script()
diff.c: remove output_prefix_length field
submodule: avoid auto-discovery in prepare_submodule_repo_env()
symbolic-ref -d: do not allow removal of HEAD
Prepare for 2.9.4
Start the 2.11 cycle
First batch for 2.11
Second batch for 2.11
Third batch for 2.11
Start preparing for 2.10.1
Fourth batch for 2.11
streaming: make sure to notice corrupt object
unpack_sha1_header(): detect malformed object header
Fifth batch for 2.11
worktree: honor configuration variables
blame: use DEFAULT_ABBREV macro
Prepare for 2.10.1
Sixth batch for 2.11
diff_unique_abbrev(): document its assumption and limitation
abbrev: add FALLBACK_DEFAULT_ABBREV to prepare for auto sizing
abbrev: prepare for new world order
Git 2.10.1
Seventh batch for 2.11
t4015: split out the "setup" part of ws-error-highlight test
diff.c: refactor parse_ws_error_highlight()
diff.c: move ws-error-highlight parsing helpers up
diff: introduce diff.wsErrorHighlight option
Eighth batch for 2.11
Ninth batch for 2.11
Start preparing for 2.10.2
cocci: refactor common patterns to use xstrdup_or_null()
Tenth batch for 2.11
t3700: fix broken test under !SANITY
transport: pass summary_width down the callchain
fetch: pass summary_width down the callchain
transport: allow summary-width to be computed dynamically
transport: compute summary-width dynamically
Eleventh batch for 2.11
Getting ready for 2.11-rc0
Git 2.10.2
Git 2.11-rc0
A bit of updates post -rc0
Revert "t6026-merge-attr: ensure that the merge driver was called"
Revert "t6026-merge-attr: don't fail if sleep exits early"
t0021: remove debugging cruft
Git 2.11.0-rc1
Git 2.11-rc2
Karsten Blees (2):
git-gui: unicode file name support on windows
git-gui: handle the encoding of Git's output correctly
Kevin Daudt (2):
t5100-mailinfo: replace common path prefix with variable
mailinfo: unescape quoted-pair in header fields
Kirill Smelkov (3):
pack-objects: respect --local/--honor-pack-keep/--incremental when bitmap is in use
pack-objects: use reachability bitmap index when generating non-stdout pack
t/perf/run: copy config.mak.autogen & friends to build area
Lars Schneider (20):
travis-ci: ask homebrew for its path instead of hardcoding it
convert: quote filter names in error messages
convert: modernize tests
run-command: move check_pipe() from write_or_die to run_command
run-command: add clean_on_exit_handler
pkt-line: rename packet_write() to packet_write_fmt()
pkt-line: extract set_packet_header()
pkt-line: add packet_write_fmt_gently()
pkt-line: add packet_flush_gently()
pkt-line: add packet_write_gently()
pkt-line: add functions to read/write flush terminated packet streams
convert: make apply_filter() adhere to standard Git error handling
convert: prepare filter.<driver>.process option
convert: add filter.<driver>.process option
contrib/long-running-filter: add long running filter example
sha1_file: rename git_open_noatime() to git_open()
sha1_file: open window into packfiles with O_CLOEXEC
read-cache: make sure file handles are not inherited by child processes
Makefile: set NO_OPENSSL on macOS by default
travis-ci: disable GIT_TEST_HTTPD for macOS
Linus Torvalds (1):
abbrev: auto size the default abbreviation
Mantas Mikulėnas (1):
contrib: add credential helper for libsecret
Matthieu Moy (4):
Documentation/config: default for color.* is color.ui
parse_mailboxes: accept extra text after <...> address
t9000-addresses: update expected results after fix
Git.pm: add comment pointing to t9000
Michael Haggerty (36):
xdl_change_compact(): fix compaction heuristic to adjust ixo
xdl_change_compact(): only use heuristic if group can't be matched
is_blank_line(): take a single xrecord_t as argument
recs_match(): take two xrecord_t pointers as arguments
xdl_change_compact(): introduce the concept of a change group
resolve_gitlink_ref(): eliminate temporary variable
refs: rename struct ref_cache to files_ref_store
refs: create a base class "ref_store" for files_ref_store
add_packed_ref(): add a files_ref_store argument
get_packed_ref(): add a files_ref_store argument
resolve_missing_loose_ref(): add a files_ref_store argument
{lock,commit,rollback}_packed_refs(): add files_ref_store arguments
refs: reorder definitions
resolve_packed_ref(): rename function from resolve_missing_loose_ref()
resolve_gitlink_packed_ref(): remove function
read_raw_ref(): take a (struct ref_store *) argument
resolve_ref_recursively(): new function
resolve_gitlink_ref(): implement using resolve_ref_recursively()
resolve_gitlink_ref(): avoid memory allocation in many cases
resolve_gitlink_ref(): rename path parameter to submodule
refs: make read_raw_ref() virtual
refs: make verify_refname_available() virtual
refs: make pack_refs() virtual
refs: make create_symref() virtual
refs: make peel_ref() virtual
repack_without_refs(): add a files_ref_store argument
lock_raw_ref(): add a files_ref_store argument
commit_ref_update(): add a files_ref_store argument
lock_ref_for_update(): add a files_ref_store argument
lock_ref_sha1_basic(): add a files_ref_store argument
split_symref_update(): add a files_ref_store argument
files_ref_iterator_begin(): take a ref_store argument
refs: add method iterator_begin
diff: improve positioning of add/delete blocks in diffs
parse-options: add parse_opt_unknown_cb()
blame: honor the diff heuristic options and config
Michael J Gruber (1):
gpg-interface: use more status letters
Mike Ralphson (1):
vcs-svn/fast_export: fix timestamp fmt specifiers
Nguyễn Thái Ngọc Duy (40):
remote-curl.c: convert fetch_git() to use argv_array
transport-helper.c: refactor set_helper_option()
upload-pack: move shallow deepen code out of receive_needs()
upload-pack: move "shallow" sending code out of deepen()
upload-pack: remove unused variable "backup"
upload-pack: move "unshallow" sending code out of deepen()
upload-pack: use skip_prefix() instead of starts_with()
upload-pack: tighten number parsing at "deepen" lines
upload-pack: make check_non_tip() clean things up on error
upload-pack: move rev-list code out of check_non_tip()
fetch-pack: use skip_prefix() instead of starts_with()
fetch-pack: use a common function for verbose printing
fetch-pack.c: mark strings for translating
fetch-pack: use a separate flag for fetch in deepening mode
shallow.c: implement a generic shallow boundary finder based on rev-list
upload-pack: add deepen-since to cut shallow repos based on time
fetch: define shallow boundary with --shallow-since
clone: define shallow clone boundary based on time with --shallow-since
t5500, t5539: tests for shallow depth since a specific date
refs: add expand_ref()
upload-pack: support define shallow boundary by excluding revisions
fetch: define shallow boundary with --shallow-exclude
clone: define shallow clone boundary with --shallow-exclude
t5500, t5539: tests for shallow depth excluding a ref
upload-pack: split check_unreachable() in two, prep for get_reachable_list()
upload-pack: add get_reachable_list()
fetch, upload-pack: --deepen=N extends shallow boundary by N commits
checkout: add some spaces between code and comment
checkout.txt: document a common case that ignores ambiguation rules
checkout: fix ambiguity check in subdir
init: correct re-initialization from a linked worktree
init: call set_git_dir_init() from within init_db()
init: kill set_git_dir_init()
init: do not set unnecessary core.worktree
init: kill git_link variable
git-commit.txt: clarify --patch mode with pathspec
diff-lib: allow ita entries treated as "not yet exist in index"
diff: add --ita-[in]visible-in-index
commit: fix empty commit creation when there's no changes but ita entries
commit: don't be fooled by ita entries when creating initial commit
Olaf Hering (1):
git-gui: sort entries in tclIndex
Orgad Shaneh (1):
git-gui: Do not reset author details on amend
Pat Thoyts (7):
Allow keyboard control to work in the staging widgets.
Amend tab ordering and text widget border and highlighting.
git-gui: fix detection of Cygwin
git-gui (Windows): use git-gui.exe in `Create Desktop Shortcut`
git-gui: maintain backwards compatibility for merge syntax
git-gui: avoid persisting modified author identity
git-gui: set version 0.21
Patrick Steinhardt (1):
doc: fix location of 'info/' with $GIT_COMMON_DIR
Petr Stodulka (1):
http: control GSSAPI credential delegation
Philip Oakley (14):
doc: use 'symmetric difference' consistently
doc: revisions - name the left and right sides
doc: show the actual left, right, and boundary marks
doc: revisions: give headings for the two and three dot notations
doc: revisions: extra clarification of <rev>^! notation effects
doc: revisions: single vs multi-parent notation comparison
doc: gitrevisions - use 'reachable' in page description
doc: gitrevisions - clarify 'latter case' is revision walk
doc: revisions - define `reachable`
doc: revisions - clarify reachability examples
doc: revisions: show revision expansion in examples
doc: revisions: sort examples and fix alignment of the unchanged
doc: fix merge-base ASCII art tab spacing
doc: fix the 'revert a faulty merge' ASCII art tab spacing
Pranit Bauva (2):
rev-list-options: clarify the usage of --reverse
t0040: convert all possible tests to use `test-parse-options --expect`
Ralf Thielow (6):
help: introduce option --exclude-guides
help: make option --help open man pages only for Git commands
rebase -i: improve advice on bad instruction lines
l10n: de.po: fix translation of autostash
l10n: de.po: translate 260 new messages
fetch-pack.c: correct command at the beginning of an error message
Ray Chen (1):
l10n: zh_CN: review for git v2.10.0 l10n
René Scharfe (36):
compat: move strdup(3) replacement to its own file
introduce hex2chr() for converting two hexadecimal digits to a character
strbuf: use valid pointer in strbuf_remove()
checkout: constify parameters of checkout_stage() and checkout_merged()
unpack-trees: pass checkout state explicitly to check_updates()
sha1_file: use llist_mergesort() for sorting packs
xdiff: fix merging of hunks with -W context and -u context
contrib/coccinelle: fix semantic patch for oid_to_hex_r()
add coccicheck make target
use strbuf_addstr() for adding constant strings to a strbuf, part 2
pretty: let %C(auto) reset all attributes
introduce CHECKOUT_INIT
add COPY_ARRAY
use COPY_ARRAY
git-gui: stop using deprecated merge syntax
gitignore: ignore output files of coccicheck make target
use strbuf_addstr() instead of strbuf_addf() with "%s", part 2
use strbuf_add_unique_abbrev() for adding short hashes, part 2
add QSORT
use QSORT
remove unnecessary check before QSORT
coccicheck: use --all-includes by default
use QSORT, part 2
pretty: avoid adding reset for %C(auto) if output is empty
coccicheck: make transformation for strbuf_addf(sb, "...") more precise
show-branch: use QSORT
remove unnecessary NULL check before free(3)
use strbuf_add_unique_abbrev() for adding short hashes, part 3
pretty: fix document link for color specification
avoid pointer arithmetic involving NULL in FLEX_ALLOC_MEM
inline xalloc_flex() into FLEXPTR_ALLOC_MEM
hex: make wraparound of the index into ring-buffer explicit
valgrind: support test helpers
commit: simplify building parents list
sha1_name: make wraparound of the index into ring-buffer explicit
cocci: avoid self-references in object_id transformations
Ronnie Sahlberg (2):
refs: add a backend method structure
refs: add a transaction_commit() method
SZEDER Gábor (1):
ref-filter: strip format option after a field name only once while parsing
Satoshi Yasushima (6):
git-gui: consistently use the same word for "remote" in Japanese
git-gui: consistently use the same word for "blame" in Japanese
git-gui: apply po template to Japanese translation
git-gui: add Japanese language code
git-gui: update Japanese translation
git-gui: update Japanese information
Stefan Beller (16):
t7408: modernize style
t7408: merge short tests, factor out testing method
submodule--helper module-clone: allow multiple references
submodule--helper update-clone: allow multiple references
clone: factor out checking for an alternate path
clone: clarify option_reference as required
clone: implement optional references
clone: recursive and reference option triggers submodule alternates
xdiff: remove unneeded declarations
transport: report missing submodule pushes consistently on stderr
diff.c: use diff_options directly
diff: omit found pointer from emit_callback
diff: remove dead code
submodule: ignore trailing slash on superproject URL
submodule: ignore trailing slash in relative url
documentation: improve submodule.<name>.{url, path} description
Stefan Christ (1):
Documentation/fmt-merge-msg: fix markup in example
Thomas Gummerer (4):
add: document the chmod option
update-index: add test for chmod flags
read-cache: introduce chmod_index_entry
add: modify already added files when --chmod is given
Tobias Klauser (1):
diffcore-delta: remove unused parameter to diffcore_count_changes()
Vasco Almeida (32):
l10n: pt_PT: update Portuguese translation
l10n: pt_PT: update Portuguese repository info
i18n: blame: mark error messages for translation
i18n: branch: mark option description for translation
i18n: config: mark error message for translation
i18n: merge-recursive: mark error messages for translation
i18n: merge-recursive: mark verbose message for translation
i18n: notes: mark error messages for translation
notes: spell first word of error messages in lowercase
i18n: receive-pack: mark messages for translation
i18n: show-branch: mark error messages for translation
i18n: show-branch: mark plural strings for translation
i18n: update-index: mark warnings for translation
i18n: commit: mark message for translation
i18n: connect: mark die messages for translation
i18n: ident: mark hint for translation
i18n: notes-merge: mark die messages for translation
i18n: stash: mark messages for translation
git-gui i18n: mark strings for translation
git-gui: l10n: add Portuguese translation
git-gui i18n: internationalize use of colon punctuation
git-gui i18n: mark "usage:" strings for translation
git-gui: fix incorrect use of Tcl append command
git-gui i18n: mark string in lib/error.tcl for translation
t1512: become resilient to GETTEXT_POISON build
i18n: apply: mark plural string for translation
i18n: apply: mark info messages for translation
i18n: apply: mark error messages for translation
i18n: apply: mark error message for translation
i18n: convert mark error messages for translation
i18n: credential-cache--daemon: mark advice for translation
i18n: diff: mark warnings for translation
Vegard Nossum (1):
revision: new rev^-n shorthand for rev^n..rev
Younes Khoudli (1):
doc: remove reference to the traditional layout in git-tag.txt
brian m. carlson (20):
cache: convert struct cache_entry to use struct object_id
builtin/apply: convert static functions to struct object_id
builtin/blame: convert struct origin to use struct object_id
builtin/log: convert some static functions to use struct object_id
builtin/cat-file: convert struct expand_data to use struct object_id
builtin/cat-file: convert some static functions to struct object_id
builtin: convert textconv_object to use struct object_id
streaming: make stream_blob_to_fd take struct object_id
builtin/checkout: convert some static functions to struct object_id
notes-merge: convert struct notes_merge_pair to struct object_id
Convert read_mmblob to take struct object_id.
builtin/blame: convert file to use struct object_id
builtin/rm: convert to use struct object_id
notes: convert init_notes to use struct object_id
builtin/update-index: convert file to struct object_id
sha1_name: convert get_sha1_mb to struct object_id
refs: add an update_ref_oid function.
builtin/am: convert to struct object_id
builtin/commit-tree: convert to struct object_id
builtin/reset: convert to use struct object_id
yaras (1):
git-gui: fix initial git gui message encoding
Ævar Arnfjörð Bjarmason (3):
gitweb: fix a typo in a comment
gitweb: link to 7-char+ SHA-1s, not only 8-char+
gitweb: link to "git describe"'d commits in log messages
Дилян Палаузов (1):
./configure.ac: detect SSL in libcurl using curl-config
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.11.0-rc1
@ 2016-11-11 23:27 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-11-11 23:27 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.11.0-rc1 is now available for testing
at the usual places. It is comprised of 642 non-merge commits
since v2.10.0, contributed by 66 people, 14 of which are new faces.
Due to the last-minute fixups and timezone differences, there might
be a few more updates to test scripts that are necessary depending
on your platform, but otherwise this should be pretty much what the
final 2.11 will look like.
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.11.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.10.0 are as follows.
Welcome to the Git development community!
Aaron M Watson, Brandon Williams, Brian Henderson, Emily Xie,
Gavin Lambert, Ian Kelling, Jeff Hostetler, Mantas Mikulėnas,
Petr Stodulka, Satoshi Yasushima, Stefan Christ, Vegard Nossum,
yaras, and Younes Khoudli.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Alex Riesen, Anders Kaseorg, Andreas Schwab, Beat Bolli, brian
m. carlson, Chris Packham, Christian Couder, David Aguilar,
David Turner, Dennis Kaarsemaker, Dimitriy Ryazantcev, Elia
Pinto, Eric Wong, Jacob Keller, Jakub Narębski, Jean-Noël
AVILA, Jeff King, Jiang Xin, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Josh Triplett, Junio C Hamano,
Karsten Blees, Kevin Daudt, Kirill Smelkov, Lars Schneider,
Linus Torvalds, Matthieu Moy, Michael Haggerty, Michael J Gruber,
Mike Ralphson, Nguyễn Thái Ngọc Duy, Olaf Hering, Orgad
Shaneh, Patrick Steinhardt, Pat Thoyts, Philip Oakley, Pranit
Bauva, Ralf Thielow, Ray Chen, René Scharfe, Ronnie Sahlberg,
Stefan Beller, SZEDER Gábor, Thomas Gummerer, Vasco Almeida,
and Дилян Палаузов.
----------------------------------------------------------------
Git 2.11 Release Notes (draft)
==============================
Backward compatibility notes.
* An empty string used as a pathspec element has always meant
'everything matches', but it is too easy to write a script that
finds a path to remove in $path and run 'git rm "$paht"' by
mistake (when the user meant to give "$path"), which ends up
removing everything. This release starts warning about the
use of an empty string that is used for 'everything matches' and
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.
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and will be removed in the
next release (not this one).
* The default abbreviation length, which has historically been 7, now
scales as the repository grows, using the approximate number of
objects in the repository and a bit of math around the birthday
paradox. The logic suggests to use 12 hexdigits for the Linux
kernel, and 9 to 10 for Git itself.
Updates since v2.10
-------------------
UI, Workflows & Features
* Comes with new version of git-gui, now at its 0.21.0 tag.
* "git format-patch --cover-letter HEAD^" to format a single patch
with a separate cover letter now numbers the output as [PATCH 0/1]
and [PATCH 1/1] by default.
* An incoming "git push" that attempts to push too many bytes can now
be rejected by setting a new configuration variable at the receiving
end.
* "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
which was not intuitive, given that "git nosuchcommand" said "git:
'nosuchcommand' is not a git command".
* "git clone --recurse-submodules --reference $path $URL" is a way to
reduce network transfer cost by borrowing objects in an existing
$path repository when cloning the superproject from $URL; it
learned to also peek into $path for presence of corresponding
repositories of submodules and borrow objects from there when able.
* The "git diff --submodule={short,log}" mechanism has been enhanced
to allow "--submodule=diff" to show the patch between the submodule
commits bound to the superproject.
* Even though "git hash-objects", which is a tool to take an
on-filesystem data stream and put it into the Git object store,
allowed to perform the "outside-world-to-Git" conversions (e.g.
end-of-line conversions and application of the clean-filter), and
it had the feature on by default from very early days, its reverse
operation "git cat-file", which takes an object from the Git object
store and externalize for the consumption by the outside world,
lacked an equivalent mechanism to run the "Git-to-outside-world"
conversion. The command learned the "--filters" option to do so.
* Output from "git diff" can be made easier to read by selecting
which lines are common and which lines are added/deleted
intelligently when the lines before and after the changed section
are the same. A command line option is added to help with the
experiment to find a good heuristics.
* In some projects, it is common to use "[RFC PATCH]" as the subject
prefix for a patch meant for discussion rather than application. A
new option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH"
to help the participants of such projects.
* "git add --chmod=+x <pathspec>" added recently only toggled the
executable bit for paths that are either new or modified. This has
been corrected to flip the executable bit for all paths that match
the given pathspec.
* When "git format-patch --stdout" output is placed as an in-body
header and it uses the RFC2822 header folding, "git am" failed to
put the header line back into a single logical line. The
underlying "git mailinfo" was taught to handle this properly.
* "gitweb" can spawn "highlight" to show blob contents with
(programming) language-specific syntax highlighting, but only
when the language is known. "highlight" can however be told
to make the guess itself by giving it "--force" option, which
has been enabled.
* "git gui" l10n to Portuguese.
* When given an abbreviated object name that is not (or more
realistically, "no longer") unique, we gave a fatal error
"ambiguous argument". This error is now accompanied by a hint that
lists the objects beginning with the given prefix. During the
course of development of this new feature, numerous minor bugs were
uncovered and corrected, the most notable one of which is that we
gave "short SHA1 xxxx is ambiguous." twice without good reason.
* "git log rev^..rev" is an often-used revision range specification
to show what was done on a side branch merged at rev. This has
gained a short-hand "rev^-1". In general "rev^-$n" is the same as
"^rev^$n rev", i.e. what has happened on other branches while the
history leading to nth parent was looking the other way.
* In recent versions of cURL, GSSAPI credential delegation is
disabled by default due to CVE-2011-2192; introduce a configuration
to selectively allow enabling this.
(merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint).
* "git mergetool" learned to honor "-O<orderfile>" to control the
order of paths to present to the end user.
* "git diff/log --ws-error-highlight=<kind>" lacked the corresponding
configuration variable to set it by default.
* "git ls-files" learned "--recurse-submodules" option that can be
used to get a listing of tracked files across submodules (i.e. this
only works with "--cached" option, not for listing untracked or
ignored files). This would be a useful tool to sit on the upstream
side of a pipe that is read with xargs to work on all working tree
files from the top-level superproject.
* A new credential helper that talks via "libsecret" with
implementations of XDG Secret Service API has been added to
contrib/credential/.
* The GPG verification status shown in "%G?" pretty format specifier
was not rich enough to differentiate a signature made by an expired
key, a signature made by a revoked key, etc. New output letters
have been assigned to express them.
* In addition to purely abbreviated commit object names, "gitweb"
learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787)
into clickable links in its output.
* When new paths were added by "git add -N" to the index, it was
enough to circumvent the check by "git commit" to refrain from
making an empty commit without "--allow-empty". The same logic
prevented "git status" to show such a path as "new file" in the
"Changes not staged for commit" section.
* The smudge/clean filter API expect an external process is spawned
to filter the contents for each path that has a filter defined. A
new type of "process" filter API has been added to allow the first
request to run the filter for a path to spawn a single process, and
all filtering need is served by this single process for multiple
paths, reducing the process creation overhead.
* The user always has to say "stash@{$N}" when naming a single
element in the default location of the stash, i.e. reflogs in
refs/stash. The "git stash" command learned to accept "git stash
apply 4" as a short-hand for "git stash apply stash@{4}".
Performance, Internal Implementation, Development Support etc.
* The delta-base-cache mechanism has been a key to the performance in
a repository with a tightly packed packfile, but it did not scale
well even with a larger value of core.deltaBaseCacheLimit.
* Enhance "git status --porcelain" output by collecting more data on
the state of the index and the working tree files, which may
further be used to teach git-prompt (in contrib/) to make fewer
calls to git.
* Extract a small helper out of the function that reads the authors
script file "git am" internally uses.
(merge a77598e jc/am-read-author-file later to maint).
* Lifts calls to exit(2) and die() higher in the callchain in
sequencer.c files so that more helper functions in it can be used
by callers that want to handle error conditions themselves.
* "git am" has been taught to make an internal call to "git apply"'s
innards without spawning the latter as a separate process.
* The ref-store abstraction was introduced to the refs API so that we
can plug in different backends to store references.
* The "unsigned char sha1[20]" to "struct object_id" conversion
continues. Notable changes in this round includes that ce->sha1,
i.e. the object name recorded in the cache_entry, turns into an
object_id.
* JGit can show a fake ref "capabilities^{}" to "git fetch" when it
does not advertise any refs, but "git fetch" was not prepared to
see such an advertisement. When the other side disconnects without
giving any ref advertisement, we used to say "there may not be a
repository at that URL", but we may have seen other advertisement
like "shallow" and ".have" in which case we definitely know that a
repository is there. The code to detect this case has also been
updated.
* Some codepaths in "git pack-objects" were not ready to use an
existing pack bitmap; now they are and as the result they have
become faster.
* The codepath in "git fsck" to detect malformed tree objects has
been updated not to die but keep going after detecting them.
* We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
the time third parameter is redundant. A new QSORT() macro lets us
omit it.
* "git pack-objects" in a repository with many packfiles used to
spend a lot of time looking for/at objects in them; the accesses to
the packfiles are now optimized by checking the most-recently-used
packfile first.
(merge c9af708b1a jk/pack-objects-optim-mru later to maint).
* Codepaths involved in interacting alternate object store have
been cleaned up.
* In order for the receiving end of "git push" to inspect the
received history and decide to reject the push, the objects sent
from the sending end need to be made available to the hook and
the mechanism for the connectivity check, and this was done
traditionally by storing the objects in the receiving repository
and letting "git gc" to expire it. Instead, store the newly
received objects in a temporary area, and make them available by
reusing the alternate object store mechanism to them only while we
decide if we accept the check, and once we decide, either migrate
them to the repository or purge them immediately.
* The require_clean_work_tree() helper was recreated in C when "git
pull" was rewritten from shell; the helper is now made available to
other callers in preparation for upcoming "rebase -i" work.
* "git upload-pack" had its code cleaned-up and performance improved
by reducing use of timestamp-ordered commit-list, which was
replaced with a priority queue.
* "git diff --no-index" codepath has been updated not to try to peek
into .git/ directory that happens to be under the current
directory, when we know we are operating outside any repository.
* Update of the sequencer codebase to make it reusable to reimplement
"rebase -i" continues.
* Git generally does not explicitly close file descriptors that were
open in the parent process when spawning a child process, but most
of the time the child does not want to access them. As Windows does
not allow removing or renaming a file that has a file descriptor
open, a slow-to-exit child can even break the parent process by
holding onto them. Use O_CLOEXEC flag to open files in various
codepaths.
* Update "interpret-trailers" machinery and teaches it that people in
real world write all sorts of crufts in the "trailer" that was
originally designed to have the neat-o "Mail-Header: like thing"
and nothing else.
Also contains various documentation updates and code clean-ups.
Fixes since v2.10
-----------------
Unless otherwise noted, all the fixes since v2.9 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* Clarify various ways to specify the "revision ranges" in the
documentation.
* "diff-highlight" script (in contrib/) learned to work better with
"git log -p --graph" output.
* The test framework left the number of tests and success/failure
count in the t/test-results directory, keyed by the name of the
test script plus the process ID. The latter however turned out not
to serve any useful purpose. The process ID part of the filename
has been removed.
* Having a submodule whose ".git" repository is somehow corrupt
caused a few commands that recurse into submodules loop forever.
* "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
the resulting repository becomes an invalid one. Teach the command
to forbid removal of HEAD.
* A test spawned a short-lived background process, which sometimes
prevented the test directory from getting removed at the end of the
script on some platforms.
* Update a few tests that used to use GIT_CURL_VERBOSE to use the
newer GIT_TRACE_CURL.
* "git pack-objects --include-tag" was taught that when we know that
we are sending an object C, we want a tag B that directly points at
C but also a tag A that points at the tag B. We used to miss the
intermediate tag B in some cases.
* Update Japanese translation for "git-gui".
* "git fetch http::/site/path" did not die correctly and segfaulted
instead.
* "git commit-tree" stopped reading commit.gpgsign configuration
variable that was meant for Porcelain "git commit" in Git 2.9; we
forgot to update "git gui" to look at the configuration to match
this change.
* "git add --chmod=+x" added recently lacked documentation, which has
been corrected.
* "git log --cherry-pick" used to include merge commits as candidates
to be matched up with other commits, resulting a lot of wasted time.
The patch-id generation logic has been updated to ignore merges to
avoid the wastage.
* The http transport (with curl-multi option, which is the default
these days) failed to remove curl-easy handle from a curlm session,
which led to unnecessary API failures.
* There were numerous corner cases in which the configuration files
are read and used or not read at all depending on the directory a
Git command was run, leading to inconsistent behaviour. The code
to set-up repository access at the beginning of a Git process has
been updated to fix them.
(merge 4d0efa1 jk/setup-sequence-update later to maint).
* "git diff -W" output needs to extend the context backward to
include the header line of the current function and also forward to
include the body of the entire current function up to the header
line of the next one. This process may have to merge two adjacent
hunks, but the code forgot to do so in some cases.
* Performance tests done via "t/perf" did not use the same set of
build configuration if the user relied on autoconf generated
configuration.
* "git format-patch --base=..." feature that was recently added
showed the base commit information after "-- " e-mail signature
line, which turned out to be inconvenient. The base information
has been moved above the signature line.
* More i18n.
* Even when "git pull --rebase=preserve" (and the underlying "git
rebase --preserve") can complete without creating any new commit
(i.e. fast-forwards), it still insisted on having a usable ident
information (read: user.email is set correctly), which was less
than nice. As the underlying commands used inside "git rebase"
would fail with a more meaningful error message and advice text
when the bogus ident matters, this extra check was removed.
* "git gc --aggressive" used to limit the delta-chain length to 250,
which is way too deep for gaining additional space savings and is
detrimental for runtime performance. The limit has been reduced to
50.
* Documentation for individual configuration variables to control use
of color (like `color.grep`) said that their default value is
'false', instead of saying their default is taken from `color.ui`.
When we updated the default value for color.ui from 'false' to
'auto' quite a while ago, all of them broke. This has been
corrected.
* The pretty-format specifier "%C(auto)" used by the "log" family of
commands to enable coloring of the output is taught to also issue a
color-reset sequence to the output.
* A shell script example in check-ref-format documentation has been
fixed.
* "git checkout <word>" does not follow the usual disambiguation
rules when the <word> can be both a rev and a path, to allow
checking out a branch 'foo' in a project that happens to have a
file 'foo' in the working tree without having to disambiguate.
This was poorly documented and the check was incorrect when the
command was run from a subdirectory.
* Some codepaths in "git diff" used regexec(3) on a buffer that was
mmap(2)ed, which may not have a terminating NUL, leading to a read
beyond the end of the mapped region. This was fixed by introducing
a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
extension.
* The procedure to build Git on Mac OS X for Travis CI hardcoded the
internal directory structure we assumed HomeBrew uses, which was a
no-no. The procedure has been updated to ask HomeBrew things we
need to know to fix this.
* When "git rebase -i" is given a broken instruction, it told the
user to fix it with "--edit-todo", but didn't say what the step
after that was (i.e. "--continue").
* Documentation around tools to import from CVS was fairly outdated.
* "git clone --recurse-submodules" lost the progress eye-candy in
recent update, which has been corrected.
* A low-level function verify_packfile() was meant to show errors
that were detected without dying itself, but under some conditions
it didn't and died instead, which has been fixed.
* When "git fetch" tries to find where the history of the repository
it runs in has diverged from what the other side has, it has a
mechanism to avoid digging too deep into irrelevant side branches.
This however did not work well over the "smart-http" transport due
to a design bug, which has been fixed.
* In the codepath that comes up with the hostname to be used in an
e-mail when the user didn't tell us, we looked at ai_canonname
field in struct addrinfo without making sure it is not NULL first.
* "git worktree", even though it used the default_abbrev setting that
ought to be affected by core.abbrev configuration variable, ignored
the variable setting. The command has been taught to read the
default set of configuration variables to correct this.
* "git init" tried to record core.worktree in the repository's
'config' file when GIT_WORK_TREE environment variable was set and
it was different from where GIT_DIR appears as ".git" at its top,
but the logic was faulty when .git is a "gitdir:" file that points
at the real place, causing trouble in working trees that are
managed by "git worktree". This has been corrected.
* Codepaths that read from an on-disk loose object were too loose in
validating what they are reading is a proper object file and
sometimes read past the data they read from the disk, which has
been corrected. H/t to Gustavo Grieco for reporting.
* The original command line syntax for "git merge", which was "git
merge <msg> HEAD <parent>...", has been deprecated for quite some
time, and "git gui" was the last in-tree user of the syntax. This
is finally fixed, so that we can move forward with the deprecation.
* An author name, that spelled a backslash-quoted double quote in the
human readable part "My \"double quoted\" name", was not unquoted
correctly while applying a patch from a piece of e-mail.
* Doc update to clarify what "log -3 --reverse" does.
* Almost everybody uses DEFAULT_ABBREV to refer to the default
setting for the abbreviation, but "git blame" peeked into
underlying variable bypassing the macro for no good reason.
* The "graph" API used in "git log --graph" miscounted the number of
output columns consumed so far when drawing a padding line, which
has been fixed; this did not affect any existing code as nobody
tried to write anything after the padding on such a line, though.
* The code that parses the format parameter of for-each-ref command
has seen a micro-optimization.
* When we started cURL to talk to imap server when a new enough
version of cURL library is available, we forgot to explicitly add
imap(s):// before the destination. To some folks, that didn't work
and the library tried to make HTTP(s) requests instead.
* The ./configure script generated from configure.ac was taught how
to detect support of SSL by libcurl better.
* The command-line completion script (in contrib/) learned to
complete "git cmd ^mas<HT>" to complete the negative end of
reference to "git cmd ^master".
(merge 49416ad22a cp/completion-negative-refs later to maint).
* 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".
(merge cccf74e2da nd/shallow-deepen later to maint).
* It is a common mistake to say "git blame --reverse OLD path",
expecting that the command line is dwimmed as if asking how lines
in path in an old revision OLD have survived up to the current
commit.
(merge e1d09701a4 jc/blame-reverse later to maint).
* http.emptyauth configuration is a way to allow an empty username to
pass when attempting to authenticate using mechanisms like
Kerberos. We took an unspecified (NULL) username and sent ":"
(i.e. no username, no password) to CURLOPT_USERPWD, but did not do
the same when the username is explicitly set to an empty string.
* "git clone" of a local repository can be done at the filesystem
level, but the codepath did not check errors while copying and
adjusting the file that lists alternate object stores.
* Documentation for "git commit" was updated to clarify that "commit
-p <paths>" adds to the current contents of the index to come up
with what to commit.
* A stray symbolic link in $GIT_DIR/refs/ directory could make name
resolution loop forever, which has been corrected.
* The "submodule.<name>.path" stored in .gitmodules is never copied
to .git/config and such a key in .git/config has no meaning, but
the documentation described it and submodule.<name>.url next to
each other as if both belong to .git/config. This has been fixed.
* In a worktree connected to a repository elsewhere, created via "git
worktree", "git checkout" attempts to protect users from confusion
by refusing to check out a branch that is already checked out in
another worktree. However, this also prevented checking out a
branch, which is designated as the primary branch of a bare
reopsitory, in a worktree that is connected to the bare
repository. The check has been corrected to allow it.
* "git rebase" immediately after "git clone" failed to find the fork
point from the upstream.
* When fetching from a remote that has many tags that are irrelevant
to branches we are following, we used to waste way too many cycles
when checking if the object pointed at by a tag (that we are not
going to fetch!) exists in our repository too carefully.
* Protect our code from over-eager compilers.
* Recent git allows submodule.<name>.branch to use a special token
"." instead of the branch name; the documentation has been updated
to describe it.
* A hot-fix for a test added by a recent topic that went to both
'master' and 'maint' already.
* "git send-email" attempts to pick up valid e-mails from the
trailers, but people in real world write non-addresses there, like
"Cc: Stable <add@re.ss> # 4.8+", which broke the output depending
on the availability and vintage of Mail::Address perl module.
(merge dcfafc5214 mm/send-email-cc-cruft-after-address later to maint).
* The Travis CI configuration we ship ran the tests with --verbose
option but this risks non-TAP output that happens to be "ok" to be
misinterpreted as TAP signalling a test that passed. This resulted
in unnecessary failure. This has been corrected by introducing a
new mode to run our tests in the test harness to send the verbose
output separately to the log file.
* Some AsciiDoc formatter mishandles a displayed illustration with
tabs in it. Adjust a few of them in merge-base documentation to
work around them.
* A minor regression fix for "git submodule" that was introduced
when more helper functions were reimplemented in C.
(merge 77b63ac31e sb/submodule-ignore-trailing-slash later to maint).
* The code that we have used for the past 10+ years to cycle
4-element ring buffers turns out to be not quite portable in
theoretical world.
(merge bb84735c80 rs/ring-buffer-wraparound later to maint).
* "git daemon" used fixed-length buffers to turn URL to the
repository the client asked for into the server side directory
path, using snprintf() to avoid overflowing these buffers, but
allowed possibly truncated paths to the directory. This has been
tightened to reject such a request that causes overlong path to be
required to serve.
(merge 6bdb0083be jk/daemon-path-ok-check-truncation later to maint).
* Recent update to git-sh-setup (a library of shell functions that
are used by our in-tree scripted Porcelain commands) included
another shell library git-sh-i18n without specifying where it is,
relying on the $PATH. This has been fixed to be more explicit by
prefixing $(git --exec-path) output in front.
(merge 1073094f30 ak/sh-setup-dot-source-i18n-fix later to maint).
* Fix for a racy false-positive test failure.
(merge fdf4f6c79b as/merge-attr-sleep later to maint).
* Portability update and workaround for builds on recent Mac OS X.
(merge a296bc0132 ls/macos-update later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 5c238e29a8 jk/common-main later to maint).
(merge 5a5749e45b ak/pre-receive-hook-template-modefix later to maint).
(merge 6d834ac8f1 jk/rebase-config-insn-fmt-docfix later to maint).
(merge de9f7fa3b0 rs/commit-pptr-simplify later to maint).
(merge 4259d693fc sc/fmt-merge-msg-doc-markup-fix later to maint).
(merge 28fab7b23d nd/test-helpers later to maint).
(merge c2bb0c1d1e rs/cocci later to maint).
(merge 3285b7badb ps/common-info-doc later to maint).
----------------------------------------------------------------
Changes since v2.10.0 are as follows:
Aaron M Watson (1):
stash: allow stashes to be referenced by index only
Alex Henrie (5):
am: put spaces around pipe in usage string
cat-file: put spaces around pipes in usage string
git-rebase--interactive: fix English grammar
git-merge-octopus: do not capitalize "octopus"
unpack-trees: do not capitalize "working"
Alex Riesen (2):
git-gui: support for $FILENAMES in tool definitions
git-gui: ensure the file in the diff pane is in the list of selected files
Alexander Shopov (2):
git-gui i18n: Updated Bulgarian translation (565,0f,0u)
git-gui: Mark 'All' in remote.tcl for translation
Anders Kaseorg (3):
imap-send: Tell cURL to use imap:// or imaps://
pre-receive.sample: mark it executable
git-sh-setup: be explicit where to dot-source git-sh-i18n from.
Andreas Schwab (2):
t6026-merge-attr: don't fail if sleep exits early
t6026-merge-attr: ensure that the merge driver was called
Beat Bolli (1):
SubmittingPatches: use gitk's "Copy commit summary" format
Brandon Williams (6):
pathspec: remove unnecessary function prototypes
git: make super-prefix option
ls-files: optionally recurse into submodules
ls-files: pass through safe options for --recurse-submodules
ls-files: add pathspec matching for submodules
submodules doc: update documentation for "." used for submodule branches
Brian Henderson (3):
diff-highlight: add some tests
diff-highlight: add failing test for handling --graph output
diff-highlight: add support for --graph output
Chris Packham (1):
completion: support excluding refs
Christian Couder (43):
apply: make some names more specific
apply: move 'struct apply_state' to apply.h
builtin/apply: make apply_patch() return -1 or -128 instead of die()ing
builtin/apply: read_patch_file() return -1 instead of die()ing
builtin/apply: make find_header() return -128 instead of die()ing
builtin/apply: make parse_chunk() return a negative integer on error
builtin/apply: make parse_single_patch() return -1 on error
builtin/apply: make parse_whitespace_option() return -1 instead of die()ing
builtin/apply: make parse_ignorewhitespace_option() return -1 instead of die()ing
builtin/apply: move init_apply_state() to apply.c
apply: make init_apply_state() return -1 instead of exit()ing
builtin/apply: make check_apply_state() return -1 instead of die()ing
builtin/apply: move check_apply_state() to apply.c
builtin/apply: make apply_all_patches() return 128 or 1 on error
builtin/apply: make parse_traditional_patch() return -1 on error
builtin/apply: make gitdiff_*() return 1 at end of header
builtin/apply: make gitdiff_*() return -1 on error
builtin/apply: change die_on_unsafe_path() to check_unsafe_path()
builtin/apply: make build_fake_ancestor() return -1 on error
builtin/apply: make remove_file() return -1 on error
builtin/apply: make add_conflicted_stages_file() return -1 on error
builtin/apply: make add_index_file() return -1 on error
builtin/apply: make create_file() return -1 on error
builtin/apply: make write_out_one_result() return -1 on error
builtin/apply: make write_out_results() return -1 on error
unpack-objects: add --max-input-size=<size> option
builtin/apply: make try_create_file() return -1 on error
builtin/apply: make create_one_file() return -1 on error
builtin/apply: rename option parsing functions
apply: rename and move opt constants to apply.h
apply: move libified code from builtin/apply.c to apply.{c,h}
apply: make some parsing functions static again
apply: use error_errno() where possible
apply: make it possible to silently apply
apply: don't print on stdout in verbosity_silent mode
usage: add set_warn_routine()
usage: add get_error_routine() and get_warn_routine()
apply: change error_routine when silent
apply: refactor `git apply` option parsing
apply: pass apply state to build_fake_ancestor()
apply: learn to use a different index file
builtin/am: use apply API in run_apply()
split-index: s/eith/with/ typo fix
David Aguilar (4):
mergetool: add copyright
mergetool: move main program flow into a main() function
mergetool: honor diff.orderFile
mergetool: honor -O<orderfile>
David Turner (11):
rename_ref_available(): add docstring
refs: add methods for reflog
refs: add method for initial ref transaction commit
refs: make delete_refs() virtual
refs: add methods to init refs db
refs: add method to rename refs
refs: make lock generic
refs: implement iteration over only per-worktree refs
add David Turner's Two Sigma address
fsck: handle bad trees like other errors
http: http.emptyauth should allow empty (not just NULL) usernames
Dennis Kaarsemaker (1):
worktree: allow the main brach of a bare repository to be checked out
Dimitriy Ryazantcev (2):
l10n: ru.po: update Russian translation
git-gui: Update Russian translation
Elia Pinto (6):
t5541-http-push-smart.sh: use the GIT_TRACE_CURL environment var
test-lib.sh: preserve GIT_TRACE_CURL from the environment
t5550-http-fetch-dumb.sh: use the GIT_TRACE_CURL environment var
t5551-http-fetch-smart.sh: use the GIT_TRACE_CURL environment var
git-check-ref-format.txt: fixup documentation
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
Emily Xie (1):
pathspec: warn on empty strings as pathspec
Eric Wong (5):
http: warn on curl_multi_add_handle failures
http: consolidate #ifdefs for curl_multi_remove_handle
http: always remove curl easy from curlm session on release
git-svn: reduce scope of input record separator change
git-svn: "git worktree" awareness
Gavin Lambert (1):
git-svn: do not reuse caches memoized for a different architecture
Ian Kelling (2):
gitweb: remove unused guess_file_syntax() parameter
gitweb: use highlight's shebang detection
Jacob Keller (9):
format-patch: show 0/1 and 1/1 for singleton patch with cover letter
cache: add empty_tree_oid object and helper function
graph: add support for --line-prefix on all graph-aware output
diff: prepare for additional submodule formats
allow do_submodule_path to work even if submodule isn't checked out
submodule: convert show_submodule_summary to use struct object_id *
submodule: refactor show_submodule_summary with helper function
diff: teach diff to display submodule difference with an inline diff
rev-list: use hdr_termination instead of a always using a newline
Jakub Narębski (1):
configure.ac: improve description of NO_REGEX test
Jean-Noël AVILA (1):
i18n: i18n: diff: mark die messages for translation
Jeff Hostetler (9):
status: rename long-format print routines
status: cleanup API to wt_status_print
status: support --porcelain[=<version>]
status: collect per-file data for --porcelain=v2
status: print per-file porcelain v2 status data
status: print branch info with --porcelain=v2 --branch
git-status.txt: describe --porcelain=v2 format
test-lib-functions.sh: add lf_to_nul helper
status: unit tests for --porcelain=v2
Jeff King (115):
rebase-interactive: drop early check for valid ident
provide an initializer for "struct object_info"
sha1_file: make packed_object_info public
pack-objects: break delta cycles before delta-search phase
pack-objects: use mru list when iterating over packs
gc: default aggressive depth to 50
cache_or_unpack_entry: drop keep_cache parameter
clear_delta_base_cache_entry: use a more descriptive name
release_delta_base_cache: reuse existing detach function
delta_base_cache: use list.h for LRU
delta_base_cache: drop special treatment of blobs
delta_base_cache: use hashmap.h
t/perf: add basic perf tests for delta base cache
index-pack: add --max-input-size=<size> option
receive-pack: allow a maximum input size to be specified
test-lib: drop PID from test-results/*.count
diff-highlight: ignore test cruft
diff-highlight: add multi-byte tests
diff-highlight: avoid highlighting combined diffs
error_errno: use constant return similar to error()
color_parse_mem: initialize "struct color" temporary
t5305: move cleanup into test block
t5305: drop "dry-run" of unpack-objects
t5305: use "git -C"
t5305: simplify packname handling
pack-objects: walk tag chains for --include-tag
remote-curl: handle URLs without protocol
patch-ids: turn off rename detection
add_delta_base_cache: use list_for_each_safe
patch-ids: refuse to compute patch-id for merge commit
hash-object: always try to set up the git repository
patch-id: use RUN_SETUP_GENTLY
diff: skip implicit no-index check when given --no-index
diff: handle --no-index prefixes consistently
diff: always try to set up the repository
pager: remove obsolete comment
pager: stop loading git_default_config()
pager: make pager_program a file-local static
pager: use callbacks instead of configset
pager: handle early config
t1302: use "git -C"
test-config: setup git directory
config: only read .git/config from configured repos
init: expand comments explaining config trickery
init: reset cached config when entering new repo
t1007: factor out repeated setup
verify_packfile: check pack validity before accessing data
clone: pass --progress decision to recursive submodules
docs/cvsimport: prefer cvs-fast-export to parsecvs
docs/cvs-migration: update link to cvsps homepage
docs/cvs-migration: mention cvsimport caveats
ident: handle NULL ai_canonname
get_sha1: detect buggy calls with multiple disambiguators
get_sha1: avoid repeating ourselves via ONLY_TO_DIE
get_sha1: propagate flags to child functions
get_short_sha1: parse tags when looking for treeish
get_short_sha1: refactor init of disambiguation code
get_short_sha1: NUL-terminate hex prefix
get_short_sha1: mark ambiguity error for translation
sha1_array: let callbacks interrupt iteration
for_each_abbrev: drop duplicate objects
get_short_sha1: list ambiguous objects on error
xdiff: rename "struct group" to "struct xdlgroup"
get_short_sha1: make default disambiguation configurable
tree-walk: be more specific about corrupt tree errors
graph: fix extra spaces in graph_padding_line
t5613: drop reachable_via function
t5613: drop test_valid_repo function
t5613: use test_must_fail
t5613: whitespace/style cleanups
t5613: do not chdir in main process
find_unique_abbrev: move logic out of get_short_sha1()
clone: detect errors in normalize_path_copy
files_read_raw_ref: avoid infinite loop on broken symlinks
files_read_raw_ref: prevent infinite retry loops in general
t5613: clarify "too deep" recursion tests
link_alt_odb_entry: handle normalize_path errors
link_alt_odb_entry: refactor string handling
alternates: provide helper for adding to alternates list
alternates: provide helper for allocating alternate
alternates: encapsulate alt->base munging
alternates: use a separate scratch space
fill_sha1_file: write "boring" characters
alternates: store scratch buffer as strbuf
fill_sha1_file: write into a strbuf
count-objects: report alternates via verbose mode
sha1_file: always allow relative paths to alternates
alternates: use fspathcmp to detect duplicates
check_connected: accept an env argument
tmp-objdir: introduce API for temporary object directories
receive-pack: quarantine objects until pre-receive accepts
tmp-objdir: put quarantine information in the environment
tmp-objdir: do not migrate files starting with '.'
upload-pack: use priority queue in reachable() check
merge-base: handle --fork-point without reflog
fetch: use "quick" has_sha1_file for tag following
test-lib: handle TEST_OUTPUT_DIRECTORY with spaces
test-lib: add --verbose-log option
travis: use --verbose-log test option
test-lib: bail out when "-v" used under "prove"
daemon: detect and reject too-long paths
read info/{attributes,exclude} only when in repository
test-*-cache-tree: setup git dir
find_unique_abbrev: use 4-buffer ring
diff_unique_abbrev: rename to diff_aligned_abbrev
diff_aligned_abbrev: use "struct oid"
diff: handle sha1 abbreviations outside of repository
git-compat-util: move content inside ifdef/endif guards
doc: fix missing "::" in config list
t0021: use write_script to create rot13 shell script
t0021: put $TEST_ROOT in $PATH
t0021: use $PERL_PATH for rot13-filter.pl
t0021: fix filehandle usage on older perl
alternates: re-allow relative paths from environment
sequencer: silence -Wtautological-constant-out-of-range-compare
Jiang Xin (1):
l10n: zh_CN: fixed some typos for git 2.10.0
Johannes Schindelin (60):
cat-file: fix a grammo in the man page
sequencer: lib'ify sequencer_pick_revisions()
sequencer: do not die() in do_pick_commit()
sequencer: lib'ify write_message()
sequencer: lib'ify do_recursive_merge()
sequencer: lib'ify do_pick_commit()
sequencer: lib'ify walk_revs_populate_todo()
sequencer: lib'ify prepare_revs()
sequencer: lib'ify read_and_refresh_cache()
sequencer: lib'ify read_populate_todo()
sequencer: lib'ify read_populate_opts()
sequencer: lib'ify create_seq_dir()
sequencer: lib'ify save_head()
sequencer: lib'ify save_todo()
sequencer: lib'ify save_opts()
sequencer: lib'ify fast_forward_to()
sequencer: lib'ify checkout_fast_forward()
sequencer: ensure to release the lock when we could not read the index
cat-file: introduce the --filters option
cat-file --textconv/--filters: allow specifying the path separately
cat-file: support --textconv/--filters in batch mode
git-gui: respect commit.gpgsign again
regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails
regex: add regexec_buf() that can work on a non NUL-terminated string
regex: use regexec_buf()
pull: drop confusing prefix parameter of die_on_unclean_work_tree()
pull: make code more similar to the shell script again
wt-status: make the require_clean_work_tree() function reusable
wt-status: export also the has_un{staged,committed}_changes() functions
wt-status: teach has_{unstaged,uncommitted}_changes() about submodules
wt-status: begin error messages with lower-case
reset: fix usage
sequencer: use static initializers for replay_opts
sequencer: use memoized sequencer directory path
sequencer: avoid unnecessary indirection
sequencer: future-proof remove_sequencer_state()
sequencer: plug memory leaks for the option values
sequencer: future-proof read_populate_todo()
sequencer: refactor the code to obtain a short commit name
sequencer: completely revamp the "todo" script parsing
sequencer: strip CR from the todo script
sequencer: avoid completely different messages for different actions
sequencer: get rid of the subcommand field
sequencer: remember the onelines when parsing the todo file
sequencer: prepare for rebase -i's commit functionality
sequencer: introduce a helper to read files written by scripts
sequencer: allow editing the commit message on a case-by-case basis
sequencer: support amending commits
sequencer: support cleaning up commit messages
sequencer: left-trim lines read from the script
sequencer: stop releasing the strbuf in write_message()
sequencer: roll back lock file if write_message() failed
sequencer: refactor write_message() to take a pointer/length
sequencer: teach write_message() to append an optional LF
sequencer: remove overzealous assumption in rebase -i mode
sequencer: mark action_name() for translation
sequencer: quote filenames in error messages
sequencer: start error messages consistently with lower case
sequencer: mark all error messages for translation
t6026: ensure that long-running script really is
Johannes Sixt (9):
t9903: fix broken && chain
t6026-merge-attr: clean up background process at end of test case
t3700-add: create subdirectory gently
t3700-add: do not check working tree file mode without POSIXPERM
t0060: sidestep surprising path mangling results on Windows
t0021: expect more variations in the output of uniq -c
t0021: compute file size with a single process instead of a pipeline
t0021, t5615: use $PWD instead of $(pwd) in PATH-like shell variables
t6026: clarify the point of "kill $(cat sleep.pid)"
Jonathan Nieder (1):
connect: tighten check for unexpected early hang up
Jonathan Tan (14):
tests: move test_lazy_prereq JGIT to test-lib.sh
connect: advertized capability is not a ref
mailinfo: separate in-body header processing
mailinfo: make is_scissors_line take plain char *
mailinfo: handle in-body header continuations
fetch-pack: do not reset in_vain on non-novel acks
trailer: improve const correctness
trailer: use list.h for doubly-linked list
trailer: streamline trailer item create and add
trailer: make args have their own struct
trailer: clarify failure modes in parse_trailer
trailer: allow non-trailers in trailer block
trailer: forbid leading whitespace in trailers
trailer: support values folded to multiple lines
Josh Triplett (2):
format-patch: show base info before email signature
format-patch: add "--rfc" for the common case of [RFC PATCH]
Junio C Hamano (48):
blame: improve diagnosis for "--reverse NEW"
blame: dwim "blame --reverse OLD" as "blame --reverse OLD.."
am: refactor read_author_script()
diff.c: remove output_prefix_length field
submodule: avoid auto-discovery in prepare_submodule_repo_env()
symbolic-ref -d: do not allow removal of HEAD
Prepare for 2.9.4
Start the 2.11 cycle
First batch for 2.11
Second batch for 2.11
Third batch for 2.11
Start preparing for 2.10.1
Fourth batch for 2.11
streaming: make sure to notice corrupt object
unpack_sha1_header(): detect malformed object header
Fifth batch for 2.11
worktree: honor configuration variables
blame: use DEFAULT_ABBREV macro
Prepare for 2.10.1
Sixth batch for 2.11
diff_unique_abbrev(): document its assumption and limitation
abbrev: add FALLBACK_DEFAULT_ABBREV to prepare for auto sizing
abbrev: prepare for new world order
Git 2.10.1
Seventh batch for 2.11
t4015: split out the "setup" part of ws-error-highlight test
diff.c: refactor parse_ws_error_highlight()
diff.c: move ws-error-highlight parsing helpers up
diff: introduce diff.wsErrorHighlight option
Eighth batch for 2.11
Ninth batch for 2.11
Start preparing for 2.10.2
cocci: refactor common patterns to use xstrdup_or_null()
Tenth batch for 2.11
t3700: fix broken test under !SANITY
transport: pass summary_width down the callchain
fetch: pass summary_width down the callchain
transport: allow summary-width to be computed dynamically
transport: compute summary-width dynamically
Eleventh batch for 2.11
Getting ready for 2.11-rc0
Git 2.10.2
Git 2.11-rc0
A bit of updates post -rc0
Revert "t6026-merge-attr: ensure that the merge driver was called"
Revert "t6026-merge-attr: don't fail if sleep exits early"
t0021: remove debugging cruft
Git 2.11.0-rc1
Karsten Blees (2):
git-gui: unicode file name support on windows
git-gui: handle the encoding of Git's output correctly
Kevin Daudt (2):
t5100-mailinfo: replace common path prefix with variable
mailinfo: unescape quoted-pair in header fields
Kirill Smelkov (3):
pack-objects: respect --local/--honor-pack-keep/--incremental when bitmap is in use
pack-objects: use reachability bitmap index when generating non-stdout pack
t/perf/run: copy config.mak.autogen & friends to build area
Lars Schneider (20):
travis-ci: ask homebrew for its path instead of hardcoding it
convert: quote filter names in error messages
convert: modernize tests
run-command: move check_pipe() from write_or_die to run_command
run-command: add clean_on_exit_handler
pkt-line: rename packet_write() to packet_write_fmt()
pkt-line: extract set_packet_header()
pkt-line: add packet_write_fmt_gently()
pkt-line: add packet_flush_gently()
pkt-line: add packet_write_gently()
pkt-line: add functions to read/write flush terminated packet streams
convert: make apply_filter() adhere to standard Git error handling
convert: prepare filter.<driver>.process option
convert: add filter.<driver>.process option
contrib/long-running-filter: add long running filter example
sha1_file: rename git_open_noatime() to git_open()
sha1_file: open window into packfiles with O_CLOEXEC
read-cache: make sure file handles are not inherited by child processes
Makefile: set NO_OPENSSL on macOS by default
travis-ci: disable GIT_TEST_HTTPD for macOS
Linus Torvalds (1):
abbrev: auto size the default abbreviation
Mantas Mikulėnas (1):
contrib: add credential helper for libsecret
Matthieu Moy (4):
Documentation/config: default for color.* is color.ui
parse_mailboxes: accept extra text after <...> address
t9000-addresses: update expected results after fix
Git.pm: add comment pointing to t9000
Michael Haggerty (36):
xdl_change_compact(): fix compaction heuristic to adjust ixo
xdl_change_compact(): only use heuristic if group can't be matched
is_blank_line(): take a single xrecord_t as argument
recs_match(): take two xrecord_t pointers as arguments
xdl_change_compact(): introduce the concept of a change group
resolve_gitlink_ref(): eliminate temporary variable
refs: rename struct ref_cache to files_ref_store
refs: create a base class "ref_store" for files_ref_store
add_packed_ref(): add a files_ref_store argument
get_packed_ref(): add a files_ref_store argument
resolve_missing_loose_ref(): add a files_ref_store argument
{lock,commit,rollback}_packed_refs(): add files_ref_store arguments
refs: reorder definitions
resolve_packed_ref(): rename function from resolve_missing_loose_ref()
resolve_gitlink_packed_ref(): remove function
read_raw_ref(): take a (struct ref_store *) argument
resolve_ref_recursively(): new function
resolve_gitlink_ref(): implement using resolve_ref_recursively()
resolve_gitlink_ref(): avoid memory allocation in many cases
resolve_gitlink_ref(): rename path parameter to submodule
refs: make read_raw_ref() virtual
refs: make verify_refname_available() virtual
refs: make pack_refs() virtual
refs: make create_symref() virtual
refs: make peel_ref() virtual
repack_without_refs(): add a files_ref_store argument
lock_raw_ref(): add a files_ref_store argument
commit_ref_update(): add a files_ref_store argument
lock_ref_for_update(): add a files_ref_store argument
lock_ref_sha1_basic(): add a files_ref_store argument
split_symref_update(): add a files_ref_store argument
files_ref_iterator_begin(): take a ref_store argument
refs: add method iterator_begin
diff: improve positioning of add/delete blocks in diffs
parse-options: add parse_opt_unknown_cb()
blame: honor the diff heuristic options and config
Michael J Gruber (1):
gpg-interface: use more status letters
Mike Ralphson (1):
vcs-svn/fast_export: fix timestamp fmt specifiers
Nguyễn Thái Ngọc Duy (40):
remote-curl.c: convert fetch_git() to use argv_array
transport-helper.c: refactor set_helper_option()
upload-pack: move shallow deepen code out of receive_needs()
upload-pack: move "shallow" sending code out of deepen()
upload-pack: remove unused variable "backup"
upload-pack: move "unshallow" sending code out of deepen()
upload-pack: use skip_prefix() instead of starts_with()
upload-pack: tighten number parsing at "deepen" lines
upload-pack: make check_non_tip() clean things up on error
upload-pack: move rev-list code out of check_non_tip()
fetch-pack: use skip_prefix() instead of starts_with()
fetch-pack: use a common function for verbose printing
fetch-pack.c: mark strings for translating
fetch-pack: use a separate flag for fetch in deepening mode
shallow.c: implement a generic shallow boundary finder based on rev-list
upload-pack: add deepen-since to cut shallow repos based on time
fetch: define shallow boundary with --shallow-since
clone: define shallow clone boundary based on time with --shallow-since
t5500, t5539: tests for shallow depth since a specific date
refs: add expand_ref()
upload-pack: support define shallow boundary by excluding revisions
fetch: define shallow boundary with --shallow-exclude
clone: define shallow clone boundary with --shallow-exclude
t5500, t5539: tests for shallow depth excluding a ref
upload-pack: split check_unreachable() in two, prep for get_reachable_list()
upload-pack: add get_reachable_list()
fetch, upload-pack: --deepen=N extends shallow boundary by N commits
checkout: add some spaces between code and comment
checkout.txt: document a common case that ignores ambiguation rules
checkout: fix ambiguity check in subdir
init: correct re-initialization from a linked worktree
init: call set_git_dir_init() from within init_db()
init: kill set_git_dir_init()
init: do not set unnecessary core.worktree
init: kill git_link variable
git-commit.txt: clarify --patch mode with pathspec
diff-lib: allow ita entries treated as "not yet exist in index"
diff: add --ita-[in]visible-in-index
commit: fix empty commit creation when there's no changes but ita entries
commit: don't be fooled by ita entries when creating initial commit
Olaf Hering (1):
git-gui: sort entries in tclIndex
Orgad Shaneh (1):
git-gui: Do not reset author details on amend
Pat Thoyts (7):
Allow keyboard control to work in the staging widgets.
Amend tab ordering and text widget border and highlighting.
git-gui: fix detection of Cygwin
git-gui (Windows): use git-gui.exe in `Create Desktop Shortcut`
git-gui: maintain backwards compatibility for merge syntax
git-gui: avoid persisting modified author identity
git-gui: set version 0.21
Patrick Steinhardt (1):
doc: fix location of 'info/' with $GIT_COMMON_DIR
Petr Stodulka (1):
http: control GSSAPI credential delegation
Philip Oakley (14):
doc: use 'symmetric difference' consistently
doc: revisions - name the left and right sides
doc: show the actual left, right, and boundary marks
doc: revisions: give headings for the two and three dot notations
doc: revisions: extra clarification of <rev>^! notation effects
doc: revisions: single vs multi-parent notation comparison
doc: gitrevisions - use 'reachable' in page description
doc: gitrevisions - clarify 'latter case' is revision walk
doc: revisions - define `reachable`
doc: revisions - clarify reachability examples
doc: revisions: show revision expansion in examples
doc: revisions: sort examples and fix alignment of the unchanged
doc: fix merge-base ASCII art tab spacing
doc: fix the 'revert a faulty merge' ASCII art tab spacing
Pranit Bauva (2):
rev-list-options: clarify the usage of --reverse
t0040: convert all possible tests to use `test-parse-options --expect`
Ralf Thielow (6):
help: introduce option --exclude-guides
help: make option --help open man pages only for Git commands
rebase -i: improve advice on bad instruction lines
l10n: de.po: fix translation of autostash
l10n: de.po: translate 260 new messages
fetch-pack.c: correct command at the beginning of an error message
Ray Chen (1):
l10n: zh_CN: review for git v2.10.0 l10n
René Scharfe (36):
compat: move strdup(3) replacement to its own file
introduce hex2chr() for converting two hexadecimal digits to a character
strbuf: use valid pointer in strbuf_remove()
checkout: constify parameters of checkout_stage() and checkout_merged()
unpack-trees: pass checkout state explicitly to check_updates()
sha1_file: use llist_mergesort() for sorting packs
xdiff: fix merging of hunks with -W context and -u context
contrib/coccinelle: fix semantic patch for oid_to_hex_r()
add coccicheck make target
use strbuf_addstr() for adding constant strings to a strbuf, part 2
pretty: let %C(auto) reset all attributes
introduce CHECKOUT_INIT
add COPY_ARRAY
use COPY_ARRAY
git-gui: stop using deprecated merge syntax
gitignore: ignore output files of coccicheck make target
use strbuf_addstr() instead of strbuf_addf() with "%s", part 2
use strbuf_add_unique_abbrev() for adding short hashes, part 2
add QSORT
use QSORT
remove unnecessary check before QSORT
coccicheck: use --all-includes by default
use QSORT, part 2
pretty: avoid adding reset for %C(auto) if output is empty
coccicheck: make transformation for strbuf_addf(sb, "...") more precise
show-branch: use QSORT
remove unnecessary NULL check before free(3)
use strbuf_add_unique_abbrev() for adding short hashes, part 3
pretty: fix document link for color specification
avoid pointer arithmetic involving NULL in FLEX_ALLOC_MEM
inline xalloc_flex() into FLEXPTR_ALLOC_MEM
hex: make wraparound of the index into ring-buffer explicit
valgrind: support test helpers
commit: simplify building parents list
sha1_name: make wraparound of the index into ring-buffer explicit
cocci: avoid self-references in object_id transformations
Ronnie Sahlberg (2):
refs: add a backend method structure
refs: add a transaction_commit() method
SZEDER Gábor (1):
ref-filter: strip format option after a field name only once while parsing
Satoshi Yasushima (6):
git-gui: consistently use the same word for "remote" in Japanese
git-gui: consistently use the same word for "blame" in Japanese
git-gui: apply po template to Japanese translation
git-gui: add Japanese language code
git-gui: update Japanese translation
git-gui: update Japanese information
Stefan Beller (16):
t7408: modernize style
t7408: merge short tests, factor out testing method
submodule--helper module-clone: allow multiple references
submodule--helper update-clone: allow multiple references
clone: factor out checking for an alternate path
clone: clarify option_reference as required
clone: implement optional references
clone: recursive and reference option triggers submodule alternates
xdiff: remove unneeded declarations
transport: report missing submodule pushes consistently on stderr
diff.c: use diff_options directly
diff: omit found pointer from emit_callback
diff: remove dead code
submodule: ignore trailing slash on superproject URL
submodule: ignore trailing slash in relative url
documentation: improve submodule.<name>.{url, path} description
Stefan Christ (1):
Documentation/fmt-merge-msg: fix markup in example
Thomas Gummerer (4):
add: document the chmod option
update-index: add test for chmod flags
read-cache: introduce chmod_index_entry
add: modify already added files when --chmod is given
Vasco Almeida (32):
l10n: pt_PT: update Portuguese translation
l10n: pt_PT: update Portuguese repository info
i18n: blame: mark error messages for translation
i18n: branch: mark option description for translation
i18n: config: mark error message for translation
i18n: merge-recursive: mark error messages for translation
i18n: merge-recursive: mark verbose message for translation
i18n: notes: mark error messages for translation
notes: spell first word of error messages in lowercase
i18n: receive-pack: mark messages for translation
i18n: show-branch: mark error messages for translation
i18n: show-branch: mark plural strings for translation
i18n: update-index: mark warnings for translation
i18n: commit: mark message for translation
i18n: connect: mark die messages for translation
i18n: ident: mark hint for translation
i18n: notes-merge: mark die messages for translation
i18n: stash: mark messages for translation
git-gui i18n: mark strings for translation
git-gui: l10n: add Portuguese translation
git-gui i18n: internationalize use of colon punctuation
git-gui i18n: mark "usage:" strings for translation
git-gui: fix incorrect use of Tcl append command
git-gui i18n: mark string in lib/error.tcl for translation
t1512: become resilient to GETTEXT_POISON build
i18n: apply: mark plural string for translation
i18n: apply: mark info messages for translation
i18n: apply: mark error messages for translation
i18n: apply: mark error message for translation
i18n: convert mark error messages for translation
i18n: credential-cache--daemon: mark advice for translation
i18n: diff: mark warnings for translation
Vegard Nossum (1):
revision: new rev^-n shorthand for rev^n..rev
Younes Khoudli (1):
doc: remove reference to the traditional layout in git-tag.txt
brian m. carlson (20):
cache: convert struct cache_entry to use struct object_id
builtin/apply: convert static functions to struct object_id
builtin/blame: convert struct origin to use struct object_id
builtin/log: convert some static functions to use struct object_id
builtin/cat-file: convert struct expand_data to use struct object_id
builtin/cat-file: convert some static functions to struct object_id
builtin: convert textconv_object to use struct object_id
streaming: make stream_blob_to_fd take struct object_id
builtin/checkout: convert some static functions to struct object_id
notes-merge: convert struct notes_merge_pair to struct object_id
Convert read_mmblob to take struct object_id.
builtin/blame: convert file to use struct object_id
builtin/rm: convert to use struct object_id
notes: convert init_notes to use struct object_id
builtin/update-index: convert file to struct object_id
sha1_name: convert get_sha1_mb to struct object_id
refs: add an update_ref_oid function.
builtin/am: convert to struct object_id
builtin/commit-tree: convert to struct object_id
builtin/reset: convert to use struct object_id
yaras (1):
git-gui: fix initial git gui message encoding
Ævar Arnfjörð Bjarmason (3):
gitweb: fix a typo in a comment
gitweb: link to 7-char+ SHA-1s, not only 8-char+
gitweb: link to "git describe"'d commits in log messages
Дилян Палаузов (1):
./configure.ac: detect SSL in libcurl using curl-config
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.11.0-rc0
@ 2016-10-31 21:49 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-10-31 21:49 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
An early preview release Git v2.11.0-rc0 is now available for
testing at the usual places. It is comprised of 617 non-merge
commits since v2.10.0, contributed by 64 people, 14 of which are
new faces.
An updated, slightly slipped from the original, schedule is found at
http://tinyurl.com/gitCal and I am hoping that we can conclude this
cycle before US Thanksgiving.
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.11.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.10.0 are as follows.
Welcome to the Git development community!
Aaron M Watson, Brandon Williams, Brian Henderson, Emily Xie,
Gavin Lambert, Ian Kelling, Jeff Hostetler, Mantas Mikulėnas,
Petr Stodulka, Satoshi Yasushima, Stefan Christ, Vegard Nossum,
yaras, and Younes Khoudli.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Henrie,
Alex Riesen, Anders Kaseorg, Beat Bolli, brian m. carlson,
Chris Packham, Christian Couder, David Aguilar, David Turner,
Dennis Kaarsemaker, Dimitriy Ryazantcev, Elia Pinto, Eric Wong,
Jacob Keller, Jakub Narębski, Jean-Noël AVILA, Jeff King,
Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Josh Triplett, Junio C Hamano, Karsten Blees,
Kevin Daudt, Kirill Smelkov, Lars Schneider, Linus Torvalds,
Matthieu Moy, Michael Haggerty, Michael J Gruber, Mike Ralphson,
Nguyễn Thái Ngọc Duy, Olaf Hering, Orgad Shaneh, Pat
Thoyts, Philip Oakley, Pranit Bauva, Ralf Thielow, Ray Chen,
René Scharfe, Ronnie Sahlberg, Stefan Beller, SZEDER Gábor,
Thomas Gummerer, Vasco Almeida, and Дилян Палаузов.
----------------------------------------------------------------
Git 2.11 Release Notes (draft)
==============================
Backward compatibility notes.
* An empty string used as a pathspec element has always meant
'everything matches', but it is too easy to write a script that
finds a path to remove in $path and run 'git rm "$paht"' by
mistake (when the user meant to give "$path"), which ends up
removing everything. This release starts warning about the
use of an empty string that is used for 'everything matches' and
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.
* The historical argument order "git merge <msg> HEAD <commit>..."
has been deprecated for quite some time, and will be removed in the
next release (not this one).
* The default abbreviation length, which has historically been 7, now
scales as the repository grows, using the approximate number of
objects in the reopsitory and a bit of math around the birthday
paradox. The logic suggests to use 12 hexdigits for the Linux
kernel, and 9 to 10 for Git itself.
Updates since v2.10
-------------------
UI, Workflows & Features
* Comes with new version of git-gui, now at its 0.21.0 tag.
* "git format-patch --cover-letter HEAD^" to format a single patch
with a separate cover letter now numbers the output as [PATCH 0/1]
and [PATCH 1/1] by default.
* An incoming "git push" that attempts to push too many bytes can now
be rejected by setting a new configuration variable at the receiving
end.
* "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
which was not intuitive, given that "git nosuchcommand" said "git:
'nosuchcommand' is not a git command".
* "git clone --resurse-submodules --reference $path $URL" is a way to
reduce network transfer cost by borrowing objects in an existing
$path repository when cloning the superproject from $URL; it
learned to also peek into $path for presense of corresponding
repositories of submodules and borrow objects from there when able.
* The "git diff --submodule={short,log}" mechanism has been enhanced
to allow "--submodule=diff" to show the patch between the submodule
commits bound to the superproject.
* Even though "git hash-objects", which is a tool to take an
on-filesystem data stream and put it into the Git object store,
allowed to perform the "outside-world-to-Git" conversions (e.g.
end-of-line conversions and application of the clean-filter), and
it had the feature on by default from very early days, its reverse
operation "git cat-file", which takes an object from the Git object
store and externalize for the consumption by the outside world,
lacked an equivalent mechanism to run the "Git-to-outside-world"
conversion. The command learned the "--filters" option to do so.
* Output from "git diff" can be made easier to read by selecting
which lines are common and which lines are added/deleted
intelligently when the lines before and after the changed section
are the same. A command line option is added to help with the
experiment to find a good heuristics.
* In some projects, it is common to use "[RFC PATCH]" as the subject
prefix for a patch meant for discussion rather than application. A
new option "--rfc" was a short-hand for "--subject-prefix=RFC PATCH"
to help the participants of such projects.
* "git add --chmod=+x <pathspec>" added recently only toggled the
executable bit for paths that are either new or modified. This has
been corrected to flip the executable bit for all paths that match
the given pathspec.
* When "git format-patch --stdout" output is placed as an in-body
header and it uses the RFC2822 header folding, "git am" failed to
put the header line back into a single logical line. The
underlying "git mailinfo" was taught to handle this properly.
* "gitweb" can spawn "highlight" to show blob contents with
(programming) language-specific syntax highlighting, but only
when the language is known. "highlight" can however be told
to make the guess itself by giving it "--force" option, which
has been enabled.
* "git gui" l10n to Portuguese.
* When given an abbreviated object name that is not (or more
realistically, "no longer") unique, we gave a fatal error
"ambiguous argument". This error is now accompanied by hints that
lists the objects that begins with the given prefix. During the
course of development of this new feature, numerous minor bugs were
uncovered and corrected, the most notable one of which is that we
gave "short SHA1 xxxx is ambiguous." twice without good reason.
* "git log rev^..rev" is an often-used revision range specification
to show what was done on a side branch merged at rev. This has
gained a short-hand "rev^-1". In general "rev^-$n" is the same as
"^rev^$n rev", i.e. what has happened on other branches while the
history leading to nth parent was looking the other way.
* In recent versions of cURL, GSSAPI credential delegation is
disabled by default due to CVE-2011-2192; introduce a configuration
to selectively allow enabling this.
(merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint).
* "git mergetool" learned to honor "-O<orderfile>" to control the
order of paths to present to the end user.
* "git diff/log --ws-error-highlight=<kind>" lacked the corresponding
configuration variable to set it by default.
* "git ls-files" learned "--recurse-submodules" option that can be
used to get a listing of tracked files across submodules (i.e. this
only works with "--cached" option, not for listing untracked or
ignored files). This would be a useful tool to sit on the upstream
side of a pipe that is read with xargs to work on all working tree
files from the top-level superproject.
* A new credential helper that talks via "libsecret" with
implementations of XDG Secret Service API has been added to
contrib/credential/.
* The GPG verification status shown in "%G?" pretty format specifier
was not rich enough to differentiate a signature made by an expired
key, a signature made by a revoked key, etc. New output letters
have been assigned to express them.
* In addition to purely abbreviated commit object names, "gitweb"
learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787)
into clickable links in its output.
* When new paths were added by "git add -N" to the index, it was
enough to circumvent the check by "git commit" to refrain from
making an empty commit without "--allow-empty". The same logic
prevented "git status" to show such a path as "new file" in the
"Changes not staged for commit" section.
* The smudge/clean filter API expect an external process is spawned
to filter the contents for each path that has a filter defined. A
new type of "process" filter API has been added to allow the first
request to run the filter for a path to spawn a single process, and
all filtering need is served by this single process for multiple
paths, reducing the process creation overhead.
* The user always has to say "stash@{$N}" when naming a single
element in the default location of the stash, i.e. reflogs in
refs/stash. The "git stash" command learned to accept "git stash
apply 4" as a short-hand for "git stash apply stash@{4}".
Performance, Internal Implementation, Development Support etc.
* The delta-base-cache mechanism has been a key to the performance in
a repository with a tightly packed packfile, but it did not scale
well even with a larger value of core.deltaBaseCacheLimit.
* Enhance "git status --porcelain" output by collecting more data on
the state of the index and the working tree files, which may
further be used to teach git-prompt (in contrib/) to make fewer
calls to git.
* Extract a small helper out of the function that reads the authors
script file "git am" internally uses.
(merge a77598e jc/am-read-author-file later to maint).
* Lifts calls to exit(2) and die() higher in the callchain in
sequencer.c files so that more helper functions in it can be used
by callers that want to handle error conditions themselves.
* "git am" has been taught to make an internal call to "git apply"'s
innards without spawning the latter as a separate process.
* The ref-store abstraction was introduced to the refs API so that we
can plug in different backends to store references.
* The "unsigned char sha1[20]" to "struct object_id" conversion
continues. Notable changes in this round includes that ce->sha1,
i.e. the object name recorded in the cache_entry, turns into an
object_id.
* JGit can show a fake ref "capabilities^{}" to "git fetch" when it
does not advertise any refs, but "git fetch" was not prepared to
see such an advertisement. When the other side disconnects without
giving any ref advertisement, we used to say "there may not be a
repository at that URL", but we may have seen other advertisement
like "shallow" and ".have" in which case we definitely know that a
repository is there. The code to detect this case has also been
updated.
* Some codepaths in "git pack-objects" were not ready to use an
existing pack bitmap; now they are and as the result they have
become faster.
* The codepath in "git fsck" to detect malformed tree objects has
been updated not to die but keep going after detecting them.
* We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
the time third parameter is redundant. A new QSORT() macro lets us
omit it.
* "git pack-objects" in a repository with many packfiles used to
spend a lot of time looking for/at objects in them; the accesses to
the packfiles are now optimized by checking the most-recently-used
packfile first.
(merge c9af708b1a jk/pack-objects-optim-mru later to maint).
* Codepaths involved in interacting alternate object store have
been cleaned up.
* In order for the receiving end of "git push" to inspect the
received history and decide to reject the push, the objects sent
from the sending end need to be made available to the hook and
the mechanism for the connectivity check, and this was done
traditionally by storing the objects in the receiving repository
and letting "git gc" to expire it. Instead, store the newly
received objects in a temporary area, and make them available by
reusing the alternate object store mechanism to them only while we
decide if we accept the check, and once we decide, either migrate
them to the repository or purge them immediately.
* The require_clean_work_tree() helper was recreated in C when "git
pull" was rewritten from shell; the helper is now made available to
other callers in preparation for upcoming "rebase -i" work.
* "git upload-pack" had its code cleaned-up and performance improved
by reducing use of timestamp-ordered commit-list, which was
replaced with a priority queue.
* "git diff --no-index" codepath has been updated not to try to peek
into .git/ directory that happens to be under the current
directory, when we know we are operating outside any repository.
* Update of the sequencer codebase to make it reusable to reimplement
"rebase -i" continues.
* Git generally does not explicitly close file descriptors that were
open in the parent process when spawning a child process, but most
of the time the child does not want to access them. As Windows does
not allow removing or renaming a file that has a file descriptor
open, a slow-to-exit child can even break the parent process by
holding onto them. Use O_CLOEXEC flag to open files in various
codepaths.
* Update "interpret-trailers" machinery and teaches it that people in
real world write all sorts of crufts in the "trailer" that was
originally designed to have the neat-o "Mail-Header: like thing"
and nothing else.
Also contains various documentation updates and code clean-ups.
Fixes since v2.10
-----------------
Unless otherwise noted, all the fixes since v2.9 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* Clarify various ways to specify the "revision ranges" in the
documentation.
* "diff-highlight" script (in contrib/) learned to work better with
"git log -p --graph" output.
* The test framework left the number of tests and success/failure
count in the t/test-results directory, keyed by the name of the
test script plus the process ID. The latter however turned out not
to serve any useful purpose. The process ID part of the filename
has been removed.
* Having a submodule whose ".git" repository is somehow corrupt
caused a few commands that recurse into submodules loop forever.
* "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
the resulting repository becomes an invalid one. Teach the command
to forbid removal of HEAD.
* A test spawned a short-lived background process, which sometimes
prevented the test directory from getting removed at the end of the
script on some platforms.
* Update a few tests that used to use GIT_CURL_VERBOSE to use the
newer GIT_TRACE_CURL.
* "git pack-objects --include-tag" was taught that when we know that
we are sending an object C, we want a tag B that directly points at
C but also a tag A that points at the tag B. We used to miss the
intermediate tag B in some cases.
* Update Japanese translation for "git-gui".
* "git fetch http::/site/path" did not die correctly and segfaulted
instead.
* "git commit-tree" stopped reading commit.gpgsign configuration
variable that was meant for Porcelain "git commit" in Git 2.9; we
forgot to update "git gui" to look at the configuration to match
this change.
* "git add --chmod=+x" added recently lacked documentation, which has
been corrected.
* "git log --cherry-pick" used to include merge commits as candidates
to be matched up with other commits, resulting a lot of wasted time.
The patch-id generation logic has been updated to ignore merges to
avoid the wastage.
* The http transport (with curl-multi option, which is the default
these days) failed to remove curl-easy handle from a curlm session,
which led to unnecessary API failures.
* There were numerous corner cases in which the configuration files
are read and used or not read at all depending on the directory a
Git command was run, leading to inconsistent behaviour. The code
to set-up repository access at the beginning of a Git process has
been updated to fix them.
(merge 4d0efa1 jk/setup-sequence-update later to maint).
* "git diff -W" output needs to extend the context backward to
include the header line of the current function and also forward to
include the body of the entire current function up to the header
line of the next one. This process may have to merge to adjacent
hunks, but the code forgot to do so in some cases.
* Performance tests done via "t/perf" did not use the same set of
build configuration if the user relied on autoconf generated
configuration.
* "git format-patch --base=..." feature that was recently added
showed the base commit information after "-- " e-mail signature
line, which turned out to be inconvenient. The base information
has been moved above the signature line.
* More i18n.
* Even when "git pull --rebase=preserve" (and the underlying "git
rebase --preserve") can complete without creating any new commit
(i.e. fast-forwards), it still insisted on having a usable ident
information (read: user.email is set correctly), which was less
than nice. As the underlying commands used inside "git rebase"
would fail with a more meaningful error message and advice text
when the bogus ident matters, this extra check was removed.
* "git gc --aggressive" used to limit the delta-chain length to 250,
which is way too deep for gaining additional space savings and is
detrimental for runtime performance. The limit has been reduced to
50.
* Documentation for individual configuration variables to control use
of color (like `color.grep`) said that their default value is
'false', instead of saying their default is taken from `color.ui`.
When we updated the default value for color.ui from 'false' to
'auto' quite a while ago, all of them broke. This has been
corrected.
* The pretty-format specifier "%C(auto)" used by the "log" family of
commands to enable coloring of the output is taught to also issue a
color-reset sequence to the output.
* A shell script example in check-ref-format documentation has been
fixed.
* "git checkout <word>" does not follow the usual disambiguation
rules when the <word> can be both a rev and a path, to allow
checking out a branch 'foo' in a project that happens to have a
file 'foo' in the working tree without having to disambiguate.
This was poorly documented and the check was incorrect when the
command was run from a subdirectory.
* Some codepaths in "git diff" used regexec(3) on a buffer that was
mmap(2)ed, which may not have a terminating NUL, leading to a read
beyond the end of the mapped region. This was fixed by introducing
a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
extension.
* The procedure to build Git on Mac OS X for Travis CI hardcoded the
internal directory structure we assumed HomeBrew uses, which was a
no-no. The procedure has been updated to ask HomeBrew things we
need to know to fix this.
* When "git rebase -i" is given a broken instruction, it told the
user to fix it with "--edit-todo", but didn't say what the step
after that was (i.e. "--continue").
* Documentation around tools to import from CVS was fairly outdated.
* "git clone --recurse-submodules" lost the progress eye-candy in
recent update, which has been corrected.
* A low-level function verify_packfile() was meant to show errors
that were detected without dying itself, but under some conditions
it didn't and died instead, which has been fixed.
* When "git fetch" tries to find where the history of the repository
it runs in has diverged from what the other side has, it has a
mechanism to avoid digging too deep into irrelevant side branches.
This however did not work well over the "smart-http" transport due
to a design bug, which has been fixed.
* In the codepath that comes up with the hostname to be used in an
e-mail when the user didn't tell us, we looked at ai_canonname
field in struct addrinfo without making sure it is not NULL first.
* "git worktree", even though it used the default_abbrev setting that
ought to be affected by core.abbrev configuration variable, ignored
the variable setting. The command has been taught to read the
default set of configuration variables to correct this.
* "git init" tried to record core.worktree in the repository's
'config' file when GIT_WORK_TREE environment variable was set and
it was different from where GIT_DIR appears as ".git" at its top,
but the logic was faulty when .git is a "gitdir:" file that points
at the real place, causing trouble in working trees that are
managed by "git worktree". This has been corrected.
* Codepaths that read from an on-disk loose object were too loose in
validating what they are reading is a proper object file and
sometimes read past the data they read from the disk, which has
been corrected. H/t to Gustavo Grieco for reporting.
* The original command line syntax for "git merge", which was "git
merge <msg> HEAD <parent>...", has been deprecated for quite some
time, and "git gui" was the last in-tree user of the syntax. This
is finally fixed, so that we can move forward with the deprecation.
* An author name, that spelled a backslash-quoted double quote in the
human readable part "My \"double quoted\" name", was not unquoted
correctly while applying a patch from a piece of e-mail.
* Doc update to clarify what "log -3 --reverse" does.
* Almost everybody uses DEFAULT_ABBREV to refer to the default
setting for the abbreviation, but "git blame" peeked into
underlying variable bypassing the macro for no good reason.
* The "graph" API used in "git log --graph" miscounted the number of
output columns consumed so far when drawing a padding line, which
has been fixed; this did not affect any existing code as nobody
tried to write anything after the padding on such a line, though.
* The code that parses the format parameter of for-each-ref command
has seen a micro-optimization.
* When we started cURL to talk to imap server when a new enough
version of cURL library is available, we forgot to explicitly add
imap(s):// before the destination. To some folks, that didn't work
and the library tried to make HTTP(s) requests instead.
* The ./configure script generated from configure.ac was taught how
to detect support of SSL by libcurl better.
* The command-line completion script (in contrib/) learned to
complete "git cmd ^mas<HT>" to complete the negative end of
reference to "git cmd ^master".
(merge 49416ad22a cp/completion-negative-refs later to maint).
* 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".
(merge cccf74e2da nd/shallow-deepen later to maint).
* It is a common mistake to say "git blame --reverse OLD path",
expecting that the command line is dwimmed as if asking how lines
in path in an old revision OLD have survived up to the current
commit.
(merge e1d09701a4 jc/blame-reverse later to maint).
* http.emptyauth configuration is a way to allow an empty username to
pass when attempting to authenticate using mechanisms like
Kerberos. We took an unspecified (NULL) username and sent ":"
(i.e. no username, no password) to CURLOPT_USERPWD, but did not do
the same when the username is explicitly set to an empty string.
* "git clone" of a local repository can be done at the filesystem
level, but the codepath did not check errors while copying and
adjusting the file that lists alternate object stores.
* Documentation for "git commit" was updated to clarify that "commit
-p <paths>" adds to the current contents of the index to come up
with what to commit.
* A stray symbolic link in $GIT_DIR/refs/ directory could make name
resolution loop forever, which has been corrected.
* The "submodule.<name>.path" stored in .gitmodules is never copied
to .git/config and such a key in .git/config has no meaning, but
the documentation described it and submodule.<name>.url next to
each other as if both belong to .git/config. This has been fixed.
* In a worktree connected to a repository elsewhere, created via "git
worktree", "git checkout" attempts to protect users from confusion
by refusing to check out a branch that is already checked out in
another worktree. However, this also prevented checking out a
branch, which is designated as the primary branch of a bare
reopsitory, in a worktree that is connected to the bare
repository. The check has been corrected to allow it.
* "git rebase" immediately after "git clone" failed to find the fork
point from the upstream.
* When fetching from a remote that has many tags that are irrelevant
to branches we are following, we used to waste way too many cycles
when checking if the object pointed at by a tag (that we are not
going to fetch!) exists in our repository too carefully.
* Protect our code from over-eager compilers.
* Recent git allows submodule.<name>.branch to use a special token
"." instead of the branch name; the documentation has been updated
to describe it.
* A hot-fix for a test added by a recent topic that went to both
'master' and 'maint' already.
* "git send-email" attempts to pick up valid e-mails from the
trailers, but people in real world write non-addresses there, like
"Cc: Stable <add@re.ss> # 4.8+", which broke the output depending
on the availability and vintage of Mail::Address perl module.
(merge dcfafc5214 mm/send-email-cc-cruft-after-address later to maint).
* The Travis CI configuration we ship ran the tests with --verbose
option but this risks non-TAP output that happens to be "ok" to be
misinterpreted as TAP signalling a test that passed. This resulted
in unnecessary failure. This has been corrected by introducing a
new mode to run our tests in the test harness to send the verbose
output separately to the log file.
* Some AsciiDoc formatter mishandles a displayed illustration with
tabs in it. Adjust a few of them in merge-base documentation to
work around them.
* A minor regression fix for "git submodule" that was introduced
when more helper functions were reimplemented in C.
(merge 77b63ac31e sb/submodule-ignore-trailing-slash later to maint).
* The code that we have used for the past 10+ years to cycle
4-element ring buffers turns out to be not quite portable in
theoretical world.
(merge bb84735c80 rs/ring-buffer-wraparound later to maint).
* "git daemon" used fixed-length buffers to turn URL to the
repository the client asked for into the server side directory
path, using snprintf() to avoid overflowing these buffers, but
allowed possibly truncated paths to the directory. This has been
tightened to reject such a request that causes overlong path to be
required to serve.
(merge 6bdb0083be jk/daemon-path-ok-check-truncation later to maint).
* Recent update to git-sh-setup (a library of shell functions that
are used by our in-tree scripted Porcelain commands) included
another shell library git-sh-i18n without specifying where it is,
relying on the $PATH. This has been fixed to be more explicit by
prefixing $(git --exec-path) output in front.
(merge 1073094f30 ak/sh-setup-dot-source-i18n-fix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 5c238e29a8 jk/common-main later to maint).
(merge 5a5749e45b ak/pre-receive-hook-template-modefix later to maint).
(merge 6d834ac8f1 jk/rebase-config-insn-fmt-docfix later to maint).
(merge de9f7fa3b0 rs/commit-pptr-simplify later to maint).
(merge 4259d693fc sc/fmt-merge-msg-doc-markup-fix later to maint).
(merge 28fab7b23d nd/test-helpers later to maint).
----------------------------------------------------------------
Changes since v2.10.0 are as follows:
Aaron M Watson (1):
stash: allow stashes to be referenced by index only
Alex Henrie (5):
am: put spaces around pipe in usage string
cat-file: put spaces around pipes in usage string
git-rebase--interactive: fix English grammar
git-merge-octopus: do not capitalize "octopus"
unpack-trees: do not capitalize "working"
Alex Riesen (2):
git-gui: support for $FILENAMES in tool definitions
git-gui: ensure the file in the diff pane is in the list of selected files
Alexander Shopov (2):
git-gui i18n: Updated Bulgarian translation (565,0f,0u)
git-gui: Mark 'All' in remote.tcl for translation
Anders Kaseorg (3):
imap-send: Tell cURL to use imap:// or imaps://
pre-receive.sample: mark it executable
git-sh-setup: be explicit where to dot-source git-sh-i18n from.
Beat Bolli (1):
SubmittingPatches: use gitk's "Copy commit summary" format
Brandon Williams (6):
pathspec: remove unnecessary function prototypes
git: make super-prefix option
ls-files: optionally recurse into submodules
ls-files: pass through safe options for --recurse-submodules
ls-files: add pathspec matching for submodules
submodules doc: update documentation for "." used for submodule branches
Brian Henderson (3):
diff-highlight: add some tests
diff-highlight: add failing test for handling --graph output
diff-highlight: add support for --graph output
Chris Packham (1):
completion: support excluding refs
Christian Couder (42):
apply: make some names more specific
apply: move 'struct apply_state' to apply.h
builtin/apply: make apply_patch() return -1 or -128 instead of die()ing
builtin/apply: read_patch_file() return -1 instead of die()ing
builtin/apply: make find_header() return -128 instead of die()ing
builtin/apply: make parse_chunk() return a negative integer on error
builtin/apply: make parse_single_patch() return -1 on error
builtin/apply: make parse_whitespace_option() return -1 instead of die()ing
builtin/apply: make parse_ignorewhitespace_option() return -1 instead of die()ing
builtin/apply: move init_apply_state() to apply.c
apply: make init_apply_state() return -1 instead of exit()ing
builtin/apply: make check_apply_state() return -1 instead of die()ing
builtin/apply: move check_apply_state() to apply.c
builtin/apply: make apply_all_patches() return 128 or 1 on error
builtin/apply: make parse_traditional_patch() return -1 on error
builtin/apply: make gitdiff_*() return 1 at end of header
builtin/apply: make gitdiff_*() return -1 on error
builtin/apply: change die_on_unsafe_path() to check_unsafe_path()
builtin/apply: make build_fake_ancestor() return -1 on error
builtin/apply: make remove_file() return -1 on error
builtin/apply: make add_conflicted_stages_file() return -1 on error
builtin/apply: make add_index_file() return -1 on error
builtin/apply: make create_file() return -1 on error
builtin/apply: make write_out_one_result() return -1 on error
builtin/apply: make write_out_results() return -1 on error
unpack-objects: add --max-input-size=<size> option
builtin/apply: make try_create_file() return -1 on error
builtin/apply: make create_one_file() return -1 on error
builtin/apply: rename option parsing functions
apply: rename and move opt constants to apply.h
apply: move libified code from builtin/apply.c to apply.{c,h}
apply: make some parsing functions static again
apply: use error_errno() where possible
apply: make it possible to silently apply
apply: don't print on stdout in verbosity_silent mode
usage: add set_warn_routine()
usage: add get_error_routine() and get_warn_routine()
apply: change error_routine when silent
apply: refactor `git apply` option parsing
apply: pass apply state to build_fake_ancestor()
apply: learn to use a different index file
builtin/am: use apply API in run_apply()
David Aguilar (4):
mergetool: add copyright
mergetool: move main program flow into a main() function
mergetool: honor diff.orderFile
mergetool: honor -O<orderfile>
David Turner (11):
rename_ref_available(): add docstring
refs: add methods for reflog
refs: add method for initial ref transaction commit
refs: make delete_refs() virtual
refs: add methods to init refs db
refs: add method to rename refs
refs: make lock generic
refs: implement iteration over only per-worktree refs
add David Turner's Two Sigma address
fsck: handle bad trees like other errors
http: http.emptyauth should allow empty (not just NULL) usernames
Dennis Kaarsemaker (1):
worktree: allow the main brach of a bare repository to be checked out
Dimitriy Ryazantcev (2):
l10n: ru.po: update Russian translation
git-gui: Update Russian translation
Elia Pinto (6):
t5541-http-push-smart.sh: use the GIT_TRACE_CURL environment var
test-lib.sh: preserve GIT_TRACE_CURL from the environment
t5550-http-fetch-dumb.sh: use the GIT_TRACE_CURL environment var
t5551-http-fetch-smart.sh: use the GIT_TRACE_CURL environment var
git-check-ref-format.txt: fixup documentation
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
Emily Xie (1):
pathspec: warn on empty strings as pathspec
Eric Wong (5):
http: warn on curl_multi_add_handle failures
http: consolidate #ifdefs for curl_multi_remove_handle
http: always remove curl easy from curlm session on release
git-svn: reduce scope of input record separator change
git-svn: "git worktree" awareness
Gavin Lambert (1):
git-svn: do not reuse caches memoized for a different architecture
Ian Kelling (2):
gitweb: remove unused guess_file_syntax() parameter
gitweb: use highlight's shebang detection
Jacob Keller (9):
format-patch: show 0/1 and 1/1 for singleton patch with cover letter
cache: add empty_tree_oid object and helper function
graph: add support for --line-prefix on all graph-aware output
diff: prepare for additional submodule formats
allow do_submodule_path to work even if submodule isn't checked out
submodule: convert show_submodule_summary to use struct object_id *
submodule: refactor show_submodule_summary with helper function
diff: teach diff to display submodule difference with an inline diff
rev-list: use hdr_termination instead of a always using a newline
Jakub Narębski (1):
configure.ac: improve description of NO_REGEX test
Jean-Noël AVILA (1):
i18n: i18n: diff: mark die messages for translation
Jeff Hostetler (9):
status: rename long-format print routines
status: cleanup API to wt_status_print
status: support --porcelain[=<version>]
status: collect per-file data for --porcelain=v2
status: print per-file porcelain v2 status data
status: print branch info with --porcelain=v2 --branch
git-status.txt: describe --porcelain=v2 format
test-lib-functions.sh: add lf_to_nul helper
status: unit tests for --porcelain=v2
Jeff King (109):
rebase-interactive: drop early check for valid ident
provide an initializer for "struct object_info"
sha1_file: make packed_object_info public
pack-objects: break delta cycles before delta-search phase
pack-objects: use mru list when iterating over packs
gc: default aggressive depth to 50
cache_or_unpack_entry: drop keep_cache parameter
clear_delta_base_cache_entry: use a more descriptive name
release_delta_base_cache: reuse existing detach function
delta_base_cache: use list.h for LRU
delta_base_cache: drop special treatment of blobs
delta_base_cache: use hashmap.h
t/perf: add basic perf tests for delta base cache
index-pack: add --max-input-size=<size> option
receive-pack: allow a maximum input size to be specified
test-lib: drop PID from test-results/*.count
diff-highlight: ignore test cruft
diff-highlight: add multi-byte tests
diff-highlight: avoid highlighting combined diffs
error_errno: use constant return similar to error()
color_parse_mem: initialize "struct color" temporary
t5305: move cleanup into test block
t5305: drop "dry-run" of unpack-objects
t5305: use "git -C"
t5305: simplify packname handling
pack-objects: walk tag chains for --include-tag
remote-curl: handle URLs without protocol
patch-ids: turn off rename detection
add_delta_base_cache: use list_for_each_safe
patch-ids: refuse to compute patch-id for merge commit
hash-object: always try to set up the git repository
patch-id: use RUN_SETUP_GENTLY
diff: skip implicit no-index check when given --no-index
diff: handle --no-index prefixes consistently
diff: always try to set up the repository
pager: remove obsolete comment
pager: stop loading git_default_config()
pager: make pager_program a file-local static
pager: use callbacks instead of configset
pager: handle early config
t1302: use "git -C"
test-config: setup git directory
config: only read .git/config from configured repos
init: expand comments explaining config trickery
init: reset cached config when entering new repo
t1007: factor out repeated setup
verify_packfile: check pack validity before accessing data
clone: pass --progress decision to recursive submodules
docs/cvsimport: prefer cvs-fast-export to parsecvs
docs/cvs-migration: update link to cvsps homepage
docs/cvs-migration: mention cvsimport caveats
ident: handle NULL ai_canonname
get_sha1: detect buggy calls with multiple disambiguators
get_sha1: avoid repeating ourselves via ONLY_TO_DIE
get_sha1: propagate flags to child functions
get_short_sha1: parse tags when looking for treeish
get_short_sha1: refactor init of disambiguation code
get_short_sha1: NUL-terminate hex prefix
get_short_sha1: mark ambiguity error for translation
sha1_array: let callbacks interrupt iteration
for_each_abbrev: drop duplicate objects
get_short_sha1: list ambiguous objects on error
xdiff: rename "struct group" to "struct xdlgroup"
get_short_sha1: make default disambiguation configurable
tree-walk: be more specific about corrupt tree errors
graph: fix extra spaces in graph_padding_line
t5613: drop reachable_via function
t5613: drop test_valid_repo function
t5613: use test_must_fail
t5613: whitespace/style cleanups
t5613: do not chdir in main process
find_unique_abbrev: move logic out of get_short_sha1()
clone: detect errors in normalize_path_copy
files_read_raw_ref: avoid infinite loop on broken symlinks
files_read_raw_ref: prevent infinite retry loops in general
t5613: clarify "too deep" recursion tests
link_alt_odb_entry: handle normalize_path errors
link_alt_odb_entry: refactor string handling
alternates: provide helper for adding to alternates list
alternates: provide helper for allocating alternate
alternates: encapsulate alt->base munging
alternates: use a separate scratch space
fill_sha1_file: write "boring" characters
alternates: store scratch buffer as strbuf
fill_sha1_file: write into a strbuf
count-objects: report alternates via verbose mode
sha1_file: always allow relative paths to alternates
alternates: use fspathcmp to detect duplicates
check_connected: accept an env argument
tmp-objdir: introduce API for temporary object directories
receive-pack: quarantine objects until pre-receive accepts
tmp-objdir: put quarantine information in the environment
tmp-objdir: do not migrate files starting with '.'
upload-pack: use priority queue in reachable() check
merge-base: handle --fork-point without reflog
fetch: use "quick" has_sha1_file for tag following
test-lib: handle TEST_OUTPUT_DIRECTORY with spaces
test-lib: add --verbose-log option
travis: use --verbose-log test option
test-lib: bail out when "-v" used under "prove"
daemon: detect and reject too-long paths
read info/{attributes,exclude} only when in repository
test-*-cache-tree: setup git dir
find_unique_abbrev: use 4-buffer ring
diff_unique_abbrev: rename to diff_aligned_abbrev
diff_aligned_abbrev: use "struct oid"
diff: handle sha1 abbreviations outside of repository
git-compat-util: move content inside ifdef/endif guards
doc: fix missing "::" in config list
Jiang Xin (1):
l10n: zh_CN: fixed some typos for git 2.10.0
Johannes Schindelin (59):
cat-file: fix a grammo in the man page
sequencer: lib'ify sequencer_pick_revisions()
sequencer: do not die() in do_pick_commit()
sequencer: lib'ify write_message()
sequencer: lib'ify do_recursive_merge()
sequencer: lib'ify do_pick_commit()
sequencer: lib'ify walk_revs_populate_todo()
sequencer: lib'ify prepare_revs()
sequencer: lib'ify read_and_refresh_cache()
sequencer: lib'ify read_populate_todo()
sequencer: lib'ify read_populate_opts()
sequencer: lib'ify create_seq_dir()
sequencer: lib'ify save_head()
sequencer: lib'ify save_todo()
sequencer: lib'ify save_opts()
sequencer: lib'ify fast_forward_to()
sequencer: lib'ify checkout_fast_forward()
sequencer: ensure to release the lock when we could not read the index
cat-file: introduce the --filters option
cat-file --textconv/--filters: allow specifying the path separately
cat-file: support --textconv/--filters in batch mode
git-gui: respect commit.gpgsign again
regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails
regex: add regexec_buf() that can work on a non NUL-terminated string
regex: use regexec_buf()
pull: drop confusing prefix parameter of die_on_unclean_work_tree()
pull: make code more similar to the shell script again
wt-status: make the require_clean_work_tree() function reusable
wt-status: export also the has_un{staged,committed}_changes() functions
wt-status: teach has_{unstaged,uncommitted}_changes() about submodules
wt-status: begin error messages with lower-case
reset: fix usage
sequencer: use static initializers for replay_opts
sequencer: use memoized sequencer directory path
sequencer: avoid unnecessary indirection
sequencer: future-proof remove_sequencer_state()
sequencer: plug memory leaks for the option values
sequencer: future-proof read_populate_todo()
sequencer: refactor the code to obtain a short commit name
sequencer: completely revamp the "todo" script parsing
sequencer: strip CR from the todo script
sequencer: avoid completely different messages for different actions
sequencer: get rid of the subcommand field
sequencer: remember the onelines when parsing the todo file
sequencer: prepare for rebase -i's commit functionality
sequencer: introduce a helper to read files written by scripts
sequencer: allow editing the commit message on a case-by-case basis
sequencer: support amending commits
sequencer: support cleaning up commit messages
sequencer: left-trim lines read from the script
sequencer: stop releasing the strbuf in write_message()
sequencer: roll back lock file if write_message() failed
sequencer: refactor write_message() to take a pointer/length
sequencer: teach write_message() to append an optional LF
sequencer: remove overzealous assumption in rebase -i mode
sequencer: mark action_name() for translation
sequencer: quote filenames in error messages
sequencer: start error messages consistently with lower case
sequencer: mark all error messages for translation
Johannes Sixt (5):
t9903: fix broken && chain
t6026-merge-attr: clean up background process at end of test case
t3700-add: create subdirectory gently
t3700-add: do not check working tree file mode without POSIXPERM
t0060: sidestep surprising path mangling results on Windows
Jonathan Nieder (1):
connect: tighten check for unexpected early hang up
Jonathan Tan (14):
tests: move test_lazy_prereq JGIT to test-lib.sh
connect: advertized capability is not a ref
mailinfo: separate in-body header processing
mailinfo: make is_scissors_line take plain char *
mailinfo: handle in-body header continuations
fetch-pack: do not reset in_vain on non-novel acks
trailer: improve const correctness
trailer: use list.h for doubly-linked list
trailer: streamline trailer item create and add
trailer: make args have their own struct
trailer: clarify failure modes in parse_trailer
trailer: allow non-trailers in trailer block
trailer: forbid leading whitespace in trailers
trailer: support values folded to multiple lines
Josh Triplett (2):
format-patch: show base info before email signature
format-patch: add "--rfc" for the common case of [RFC PATCH]
Junio C Hamano (43):
blame: improve diagnosis for "--reverse NEW"
blame: dwim "blame --reverse OLD" as "blame --reverse OLD.."
am: refactor read_author_script()
diff.c: remove output_prefix_length field
submodule: avoid auto-discovery in prepare_submodule_repo_env()
symbolic-ref -d: do not allow removal of HEAD
Prepare for 2.9.4
Start the 2.11 cycle
First batch for 2.11
Second batch for 2.11
Third batch for 2.11
Start preparing for 2.10.1
Fourth batch for 2.11
streaming: make sure to notice corrupt object
unpack_sha1_header(): detect malformed object header
Fifth batch for 2.11
worktree: honor configuration variables
blame: use DEFAULT_ABBREV macro
Prepare for 2.10.1
Sixth batch for 2.11
diff_unique_abbrev(): document its assumption and limitation
abbrev: add FALLBACK_DEFAULT_ABBREV to prepare for auto sizing
abbrev: prepare for new world order
Git 2.10.1
Seventh batch for 2.11
t4015: split out the "setup" part of ws-error-highlight test
diff.c: refactor parse_ws_error_highlight()
diff.c: move ws-error-highlight parsing helpers up
diff: introduce diff.wsErrorHighlight option
Eighth batch for 2.11
Ninth batch for 2.11
Start preparing for 2.10.2
cocci: refactor common patterns to use xstrdup_or_null()
Tenth batch for 2.11
t3700: fix broken test under !SANITY
transport: pass summary_width down the callchain
fetch: pass summary_width down the callchain
transport: allow summary-width to be computed dynamically
transport: compute summary-width dynamically
Eleventh batch for 2.11
Getting ready for 2.11-rc0
Git 2.10.2
Git 2.11-rc0
Karsten Blees (2):
git-gui: unicode file name support on windows
git-gui: handle the encoding of Git's output correctly
Kevin Daudt (2):
t5100-mailinfo: replace common path prefix with variable
mailinfo: unescape quoted-pair in header fields
Kirill Smelkov (3):
pack-objects: respect --local/--honor-pack-keep/--incremental when bitmap is in use
pack-objects: use reachability bitmap index when generating non-stdout pack
t/perf/run: copy config.mak.autogen & friends to build area
Lars Schneider (18):
travis-ci: ask homebrew for its path instead of hardcoding it
convert: quote filter names in error messages
convert: modernize tests
run-command: move check_pipe() from write_or_die to run_command
run-command: add clean_on_exit_handler
pkt-line: rename packet_write() to packet_write_fmt()
pkt-line: extract set_packet_header()
pkt-line: add packet_write_fmt_gently()
pkt-line: add packet_flush_gently()
pkt-line: add packet_write_gently()
pkt-line: add functions to read/write flush terminated packet streams
convert: make apply_filter() adhere to standard Git error handling
convert: prepare filter.<driver>.process option
convert: add filter.<driver>.process option
contrib/long-running-filter: add long running filter example
sha1_file: rename git_open_noatime() to git_open()
sha1_file: open window into packfiles with O_CLOEXEC
read-cache: make sure file handles are not inherited by child processes
Linus Torvalds (1):
abbrev: auto size the default abbreviation
Mantas Mikulėnas (1):
contrib: add credential helper for libsecret
Matthieu Moy (4):
Documentation/config: default for color.* is color.ui
parse_mailboxes: accept extra text after <...> address
t9000-addresses: update expected results after fix
Git.pm: add comment pointing to t9000
Michael Haggerty (36):
xdl_change_compact(): fix compaction heuristic to adjust ixo
xdl_change_compact(): only use heuristic if group can't be matched
is_blank_line(): take a single xrecord_t as argument
recs_match(): take two xrecord_t pointers as arguments
xdl_change_compact(): introduce the concept of a change group
resolve_gitlink_ref(): eliminate temporary variable
refs: rename struct ref_cache to files_ref_store
refs: create a base class "ref_store" for files_ref_store
add_packed_ref(): add a files_ref_store argument
get_packed_ref(): add a files_ref_store argument
resolve_missing_loose_ref(): add a files_ref_store argument
{lock,commit,rollback}_packed_refs(): add files_ref_store arguments
refs: reorder definitions
resolve_packed_ref(): rename function from resolve_missing_loose_ref()
resolve_gitlink_packed_ref(): remove function
read_raw_ref(): take a (struct ref_store *) argument
resolve_ref_recursively(): new function
resolve_gitlink_ref(): implement using resolve_ref_recursively()
resolve_gitlink_ref(): avoid memory allocation in many cases
resolve_gitlink_ref(): rename path parameter to submodule
refs: make read_raw_ref() virtual
refs: make verify_refname_available() virtual
refs: make pack_refs() virtual
refs: make create_symref() virtual
refs: make peel_ref() virtual
repack_without_refs(): add a files_ref_store argument
lock_raw_ref(): add a files_ref_store argument
commit_ref_update(): add a files_ref_store argument
lock_ref_for_update(): add a files_ref_store argument
lock_ref_sha1_basic(): add a files_ref_store argument
split_symref_update(): add a files_ref_store argument
files_ref_iterator_begin(): take a ref_store argument
refs: add method iterator_begin
diff: improve positioning of add/delete blocks in diffs
parse-options: add parse_opt_unknown_cb()
blame: honor the diff heuristic options and config
Michael J Gruber (1):
gpg-interface: use more status letters
Mike Ralphson (1):
vcs-svn/fast_export: fix timestamp fmt specifiers
Nguyễn Thái Ngọc Duy (40):
remote-curl.c: convert fetch_git() to use argv_array
transport-helper.c: refactor set_helper_option()
upload-pack: move shallow deepen code out of receive_needs()
upload-pack: move "shallow" sending code out of deepen()
upload-pack: remove unused variable "backup"
upload-pack: move "unshallow" sending code out of deepen()
upload-pack: use skip_prefix() instead of starts_with()
upload-pack: tighten number parsing at "deepen" lines
upload-pack: make check_non_tip() clean things up on error
upload-pack: move rev-list code out of check_non_tip()
fetch-pack: use skip_prefix() instead of starts_with()
fetch-pack: use a common function for verbose printing
fetch-pack.c: mark strings for translating
fetch-pack: use a separate flag for fetch in deepening mode
shallow.c: implement a generic shallow boundary finder based on rev-list
upload-pack: add deepen-since to cut shallow repos based on time
fetch: define shallow boundary with --shallow-since
clone: define shallow clone boundary based on time with --shallow-since
t5500, t5539: tests for shallow depth since a specific date
refs: add expand_ref()
upload-pack: support define shallow boundary by excluding revisions
fetch: define shallow boundary with --shallow-exclude
clone: define shallow clone boundary with --shallow-exclude
t5500, t5539: tests for shallow depth excluding a ref
upload-pack: split check_unreachable() in two, prep for get_reachable_list()
upload-pack: add get_reachable_list()
fetch, upload-pack: --deepen=N extends shallow boundary by N commits
checkout: add some spaces between code and comment
checkout.txt: document a common case that ignores ambiguation rules
checkout: fix ambiguity check in subdir
init: correct re-initialization from a linked worktree
init: call set_git_dir_init() from within init_db()
init: kill set_git_dir_init()
init: do not set unnecessary core.worktree
init: kill git_link variable
git-commit.txt: clarify --patch mode with pathspec
diff-lib: allow ita entries treated as "not yet exist in index"
diff: add --ita-[in]visible-in-index
commit: fix empty commit creation when there's no changes but ita entries
commit: don't be fooled by ita entries when creating initial commit
Olaf Hering (1):
git-gui: sort entries in tclIndex
Orgad Shaneh (1):
git-gui: Do not reset author details on amend
Pat Thoyts (7):
Allow keyboard control to work in the staging widgets.
Amend tab ordering and text widget border and highlighting.
git-gui: fix detection of Cygwin
git-gui (Windows): use git-gui.exe in `Create Desktop Shortcut`
git-gui: maintain backwards compatibility for merge syntax
git-gui: avoid persisting modified author identity
git-gui: set version 0.21
Petr Stodulka (1):
http: control GSSAPI credential delegation
Philip Oakley (14):
doc: use 'symmetric difference' consistently
doc: revisions - name the left and right sides
doc: show the actual left, right, and boundary marks
doc: revisions: give headings for the two and three dot notations
doc: revisions: extra clarification of <rev>^! notation effects
doc: revisions: single vs multi-parent notation comparison
doc: gitrevisions - use 'reachable' in page description
doc: gitrevisions - clarify 'latter case' is revision walk
doc: revisions - define `reachable`
doc: revisions - clarify reachability examples
doc: revisions: show revision expansion in examples
doc: revisions: sort examples and fix alignment of the unchanged
doc: fix merge-base ASCII art tab spacing
doc: fix the 'revert a faulty merge' ASCII art tab spacing
Pranit Bauva (2):
rev-list-options: clarify the usage of --reverse
t0040: convert all possible tests to use `test-parse-options --expect`
Ralf Thielow (5):
help: introduce option --exclude-guides
help: make option --help open man pages only for Git commands
rebase -i: improve advice on bad instruction lines
l10n: de.po: fix translation of autostash
l10n: de.po: translate 260 new messages
Ray Chen (1):
l10n: zh_CN: review for git v2.10.0 l10n
René Scharfe (34):
compat: move strdup(3) replacement to its own file
introduce hex2chr() for converting two hexadecimal digits to a character
strbuf: use valid pointer in strbuf_remove()
checkout: constify parameters of checkout_stage() and checkout_merged()
unpack-trees: pass checkout state explicitly to check_updates()
sha1_file: use llist_mergesort() for sorting packs
xdiff: fix merging of hunks with -W context and -u context
contrib/coccinelle: fix semantic patch for oid_to_hex_r()
add coccicheck make target
use strbuf_addstr() for adding constant strings to a strbuf, part 2
pretty: let %C(auto) reset all attributes
introduce CHECKOUT_INIT
add COPY_ARRAY
use COPY_ARRAY
git-gui: stop using deprecated merge syntax
gitignore: ignore output files of coccicheck make target
use strbuf_addstr() instead of strbuf_addf() with "%s", part 2
use strbuf_add_unique_abbrev() for adding short hashes, part 2
add QSORT
use QSORT
remove unnecessary check before QSORT
coccicheck: use --all-includes by default
use QSORT, part 2
pretty: avoid adding reset for %C(auto) if output is empty
coccicheck: make transformation for strbuf_addf(sb, "...") more precise
show-branch: use QSORT
remove unnecessary NULL check before free(3)
use strbuf_add_unique_abbrev() for adding short hashes, part 3
pretty: fix document link for color specification
avoid pointer arithmetic involving NULL in FLEX_ALLOC_MEM
inline xalloc_flex() into FLEXPTR_ALLOC_MEM
hex: make wraparound of the index into ring-buffer explicit
valgrind: support test helpers
commit: simplify building parents list
Ronnie Sahlberg (2):
refs: add a backend method structure
refs: add a transaction_commit() method
SZEDER Gábor (1):
ref-filter: strip format option after a field name only once while parsing
Satoshi Yasushima (6):
git-gui: consistently use the same word for "remote" in Japanese
git-gui: consistently use the same word for "blame" in Japanese
git-gui: apply po template to Japanese translation
git-gui: add Japanese language code
git-gui: update Japanese translation
git-gui: update Japanese information
Stefan Beller (16):
t7408: modernize style
t7408: merge short tests, factor out testing method
submodule--helper module-clone: allow multiple references
submodule--helper update-clone: allow multiple references
clone: factor out checking for an alternate path
clone: clarify option_reference as required
clone: implement optional references
clone: recursive and reference option triggers submodule alternates
xdiff: remove unneeded declarations
transport: report missing submodule pushes consistently on stderr
diff.c: use diff_options directly
diff: omit found pointer from emit_callback
diff: remove dead code
submodule: ignore trailing slash on superproject URL
submodule: ignore trailing slash in relative url
documentation: improve submodule.<name>.{url, path} description
Stefan Christ (1):
Documentation/fmt-merge-msg: fix markup in example
Thomas Gummerer (4):
add: document the chmod option
update-index: add test for chmod flags
read-cache: introduce chmod_index_entry
add: modify already added files when --chmod is given
Vasco Almeida (32):
l10n: pt_PT: update Portuguese translation
l10n: pt_PT: update Portuguese repository info
i18n: blame: mark error messages for translation
i18n: branch: mark option description for translation
i18n: config: mark error message for translation
i18n: merge-recursive: mark error messages for translation
i18n: merge-recursive: mark verbose message for translation
i18n: notes: mark error messages for translation
notes: spell first word of error messages in lowercase
i18n: receive-pack: mark messages for translation
i18n: show-branch: mark error messages for translation
i18n: show-branch: mark plural strings for translation
i18n: update-index: mark warnings for translation
i18n: commit: mark message for translation
i18n: connect: mark die messages for translation
i18n: ident: mark hint for translation
i18n: notes-merge: mark die messages for translation
i18n: stash: mark messages for translation
git-gui i18n: mark strings for translation
git-gui: l10n: add Portuguese translation
git-gui i18n: internationalize use of colon punctuation
git-gui i18n: mark "usage:" strings for translation
git-gui: fix incorrect use of Tcl append command
git-gui i18n: mark string in lib/error.tcl for translation
t1512: become resilient to GETTEXT_POISON build
i18n: apply: mark plural string for translation
i18n: apply: mark info messages for translation
i18n: apply: mark error messages for translation
i18n: apply: mark error message for translation
i18n: convert mark error messages for translation
i18n: credential-cache--daemon: mark advice for translation
i18n: diff: mark warnings for translation
Vegard Nossum (1):
revision: new rev^-n shorthand for rev^n..rev
Younes Khoudli (1):
doc: remove reference to the traditional layout in git-tag.txt
brian m. carlson (20):
cache: convert struct cache_entry to use struct object_id
builtin/apply: convert static functions to struct object_id
builtin/blame: convert struct origin to use struct object_id
builtin/log: convert some static functions to use struct object_id
builtin/cat-file: convert struct expand_data to use struct object_id
builtin/cat-file: convert some static functions to struct object_id
builtin: convert textconv_object to use struct object_id
streaming: make stream_blob_to_fd take struct object_id
builtin/checkout: convert some static functions to struct object_id
notes-merge: convert struct notes_merge_pair to struct object_id
Convert read_mmblob to take struct object_id.
builtin/blame: convert file to use struct object_id
builtin/rm: convert to use struct object_id
notes: convert init_notes to use struct object_id
builtin/update-index: convert file to struct object_id
sha1_name: convert get_sha1_mb to struct object_id
refs: add an update_ref_oid function.
builtin/am: convert to struct object_id
builtin/commit-tree: convert to struct object_id
builtin/reset: convert to use struct object_id
yaras (1):
git-gui: fix initial git gui message encoding
Ævar Arnfjörð Bjarmason (3):
gitweb: fix a typo in a comment
gitweb: link to 7-char+ SHA-1s, not only 8-char+
gitweb: link to "git describe"'d commits in log messages
Дилян Палаузов (1):
./configure.ac: detect SSL in libcurl using curl-config
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.10.0
@ 2016-09-03 2:17 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-09-03 2:17 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.10.0 is now available at the
usual places. It is comprised of 639 non-merge commits since
v2.9.0, contributed by 76 people, 22 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.10.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.9.0 are as follows.
Welcome to the Git development community!
Alexander Hirsch, Andreas Brauchli, Andrew Oakley, Antoine Queru,
Ben Wijen, Christopher Layne, Dave Nicolson, David Glasser, Ed
Maste, Heiko Becker, Ingo Brückl, Jonathan Tan, Jordan DE GEA,
Josef Kufner, Keith McGuigan, Kevin Willford, LE Manh Cuong,
Michael Stahl, Parker Moore, Peter Colberg, Tom Russello,
and William Duclot.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alex Henrie, Alfred Perlstein, Armin Kunaschik, brian m. carlson,
Changwoo Ryu, Charles Bailey, Chris Packham, Christian Couder,
David A. Greene, David Aguilar, David Kastrup, David Turner,
Edward Thomson, Elia Pinto, Eric Sunshine, Eric Wong, Heiko
Voigt, Jacob Keller, Jean-Noel Avila, Jeff King, Jiang Xin,
Joey Hess, Johannes Schindelin, Johannes Sixt, John Keeping,
Jonathan Nieder, Josh Triplett, Junio C Hamano, Lars Schneider,
Lars Vogel, Linus Torvalds, Lukas Fleischer, Matthieu Moy,
Mehul Jain, Michael Haggerty, Michael J Gruber, Mike Hommey,
Nguyễn Thái Ngọc Duy, Nicolas Pitre, Orgad Shaneh, Patrick
Steinhardt, Peter Krefting, Pranit Bauva, Ramsay Jones, René
Scharfe, Ronald Wampler, Stefan Beller, SZEDER Gábor, Thomas
Braun, Thomas Gummerer, Torsten Bögershausen, Trần Ngọc
Quân, Vasco Almeida, and Ville Skyttä.
----------------------------------------------------------------
Git 2.10 Release Notes
======================
Backward compatibility notes
----------------------------
Updates since v2.9
------------------
UI, Workflows & Features
* "git pull --rebase --verify-signature" learned to warn the user
that "--verify-signature" is a no-op when rebasing.
* An upstream project can make a recommendation to shallowly clone
some submodules in the .gitmodules file it ships.
* "git worktree add" learned that '-' can be used as a short-hand for
"@{-1}", the previous branch.
* Update the funcname definition to support css files.
* The completion script (in contrib/) learned to complete "git
status" options.
* Messages that are generated by auto gc during "git push" on the
receiving end are now passed back to the sending end in such a way
that they are shown with "remote: " prefix to avoid confusing the
users.
* "git add -i/-p" learned to honor diff.compactionHeuristic
experimental knob, so that the user can work on the same hunk split
as "git diff" output.
* "upload-pack" allows a custom "git pack-objects" replacement when
responding to "fetch/clone" via the uploadpack.packObjectsHook.
(merge b738396 jk/upload-pack-hook later to maint).
* Teach format-patch and mailsplit (hence "am") how a line that
happens to begin with "From " in the e-mail message is quoted with
">", so that these lines can be restored to their original shape.
(merge d9925d1 ew/mboxrd-format-am later to maint).
* "git repack" learned the "--keep-unreachable" option, which sends
loose unreachable objects to a pack instead of leaving them loose.
This helps heuristics based on the number of loose objects
(e.g. "gc --auto").
(merge e26a8c4 jk/repack-keep-unreachable later to maint).
* "log --graph --format=" learned that "%>|(N)" specifies the width
relative to the terminal's left edge, not relative to the area to
draw text that is to the right of the ancestry-graph section. It
also now accepts negative N that means the column limit is relative
to the right border.
* 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.
(merge 531220b jc/send-email-skip-backup later to maint).
* "git submodule update" that drives many "git clone" could
eventually hit flaky servers/network conditions on one of the
submodules; the command learned to retry the attempt.
* The output coloring scheme learned two new attributes, italic and
strike, in addition to existing bold, reverse, etc.
* "git log" learns log.showSignature configuration variable, and a
command line option "--no-show-signature" to countermand it.
(merge fce04c3 mj/log-show-signature-conf later to maint).
* More markings of messages for i18n, with updates to various tests
to pass GETTEXT_POISON tests.
* "git archive" learned to handle files that are larger than 8GB and
commits far in the future than expressible by the traditional US-TAR
format.
(merge 560b0e8 jk/big-and-future-archive-tar later to maint).
* A new configuration variable core.sshCommand has been added to
specify what value for GIT_SSH_COMMAND to use per repository.
* "git worktree prune" protected worktrees that are marked as
"locked" by creating a file in a known location. "git worktree"
command learned a dedicated command pair to create and remove such
a file, so that the users do not have to do this with editor.
* A handful of "git svn" updates.
* "git push" learned to accept and pass extra options to the
receiving end so that hooks can read and react to them.
* "git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.
* "git jump" script (in contrib/) has been updated a bit.
(merge a91e692 jk/git-jump later to maint).
* "git push" and "git clone" learned to give better progress meters
to the end user who is waiting on the terminal.
* An entry "git log --decorate" for the tip of the current branch is
shown as "HEAD -> name" (where "name" is the name of the branch);
the arrow is now painted in the same color as "HEAD", not in the
color for commits.
* "git format-patch" learned format.from configuration variable to
specify the default settings for its "--from" option.
* "git am -3" calls "git merge-recursive" when it needs to fall back
to a three-way merge; this call has been turned into an internal
subroutine call instead of spawning a separate subprocess.
* The command line completion scripts (in contrib/) now knows about
"git branch --delete/--move [--remote]".
(merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).
* "git rev-parse --git-path hooks/<hook>" learned to take
core.hooksPath configuration variable (introduced during 2.9 cycle)
into account.
(merge 9445b49 ab/hooks later to maint).
* "git log --show-signature" and other commands that display the
verification status of PGP signature now shows the longer key-id,
as 32-bit key-id is so last century.
Performance, Internal Implementation, Development Support etc.
* "git fast-import" learned the same performance trick to avoid
creating too small a packfile as "git fetch" and "git push" have,
using *.unpackLimit configuration.
* When "git daemon" is run without --[init-]timeout specified, a
connection from a client that silently goes offline can hang around
for a long time, wasting resources. The socket-level KEEPALIVE has
been enabled to allow the OS to notice such failed connections.
* "git upload-pack" command has been updated to use the parse-options
API.
* The "git apply" standalone program is being libified; the first
step to move many state variables into a structure that can be
explicitly (re)initialized to make the machinery callable more
than once has been merged.
* HTTP transport gained an option to produce more detailed debugging
trace.
(merge 73e57aa ep/http-curl-trace later to maint).
* Instead of taking advantage of the fact that a struct string_list
that is allocated with all NULs happens to be the INIT_NODUP kind,
the users of string_list structures are taught to initialize them
explicitly as such, to document their behaviour better.
(merge 2721ce2 jk/string-list-static-init later to maint).
* HTTPd tests learned to show the server error log to help diagnosing
a failing tests.
(merge 44f243d nd/test-lib-httpd-show-error-log-in-verbose later to maint).
* The ownership rule for the piece of memory that hold references to
be fetched in "git fetch" was screwy, which has been cleaned up.
* "git bisect" makes an internal call to "git diff-tree" when
bisection finds the culprit, but this call did not initialize the
data structure to pass to the diff-tree API correctly.
* Further preparatory clean-up for "worktree" feature continues.
(merge 0409e0b nd/worktree-cleanup-post-head-protection later to maint).
* Formats of the various data (and how to validate them) where we use
GPG signature have been documented.
* A new run-command API function pipe_command() is introduced to
sanely feed data to the standard input while capturing data from
the standard output and the standard error of an external process,
which is cumbersome to hand-roll correctly without deadlocking.
* The codepath to sign data in a prepared buffer with GPG has been
updated to use this API to read from the status-fd to check for
errors (instead of relying on GPG's exit status).
(merge efee955 jk/gpg-interface-cleanup later to maint).
* Allow t/perf framework to use the features from the most recent
version of Git even when testing an older installed version.
* The commands in the "log/diff" family have had an FILE* pointer in the
data structure they pass around for a long time, but some codepaths
used to always write to the standard output. As a preparatory step
to make "git format-patch" available to the internal callers, these
codepaths have been updated to consistently write into that FILE*
instead.
* Conversion from unsigned char sha1[20] to struct object_id
continues.
* Improve the look of the way "git fetch" reports what happened to
each ref that was fetched.
* The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.
* Code clean-up to avoid using a variable string that compilers may
feel untrustable as printf-style format given to write_file()
helper function.
* "git p4" used a location outside $GIT_DIR/refs/ to place its
temporary branches, which has been moved to refs/git-p4-tmp/.
* Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.
* When "git fsck" reports a broken link (e.g. a tree object contains
a blob that does not exist), both containing object and the object
that is referred to were reported with their 40-hex object names.
The command learned the "--name-objects" option to show the path to
the containing object from existing refs (e.g. "HEAD~24^2:file.txt").
* Allow http daemon tests in Travis CI tests.
* Makefile assumed that -lrt is always available on platforms that
want to use clock_gettime() and CLOCK_MONOTONIC, which is not a
case for recent Mac OS X. The necessary symbols are often found in
libc on many modern systems and having -lrt on the command line, as
long as the library exists, had no effect, but when the platform
removes librt.a that is a different matter--having -lrt will break
the linkage.
This change could be seen as a regression for those who do need to
specify -lrt, as they now specifically ask for NEEDS_LIBRT when
building. Hopefully they are in the minority these days.
* Further preparatory work on the refs API before the pluggable
backend series can land.
* Error handling in the codepaths that updates refs has been
improved.
* The API to iterate over all the refs (i.e. for_each_ref(), etc.)
has been revamped.
* The handling of the "text=auto" attribute has been corrected.
$ echo "* text=auto eol=crlf" >.gitattributes
used to have the same effect as
$ echo "* text eol=crlf" >.gitattributes
i.e. declaring all files are text (ignoring "auto"). The
combination has been fixed to be equivalent to doing
$ git config core.autocrlf true
* Documentation has been updated to show better example usage
of the updated "text=auto" attribute.
* A few tests that specifically target "git rebase -i" have been
added.
* Dumb http transport on the client side has been optimized.
(merge ecba195 ew/http-walker later to maint).
* Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.
* "git fetch" exchanges batched have/ack messages between the sender
and the receiver, initially doubling every time and then falling
back to enlarge the window size linearly. The "smart http"
transport, being an half-duplex protocol, outgrows the preset limit
too quickly and becomes inefficient when interacting with a large
repository. The internal mechanism learned to grow the window size
more aggressively when working with the "smart http" transport.
* Tests for "git svn" have been taught to reuse the lib-httpd test
infrastructure when testing the subversion integration that
interacts with subversion repositories served over the http://
protocol.
(merge a8a5d25 ew/git-svn-http-tests later to maint).
* "git pack-objects" has a few options that tell it not to pack
objects found in certain packfiles, which require it to scan .idx
files of all available packs. The codepaths involved in these
operations have been optimized for a common case of not having any
non-local pack and/or any .kept pack.
* The t3700 test about "add --chmod=-x" have been made a bit more
robust and generally cleaned up.
(merge 766cdc4 ib/t3700-add-chmod-x-updates later to maint).
* The build procedure learned PAGER_ENV knob that lists what default
environment variable settings to export for popular pagers. This
mechanism is used to tweak the default settings to MORE on FreeBSD.
(merge 995bc22 ew/build-time-pager-tweaks later to maint).
* The http-backend (the server-side component of smart-http
transport) used to trickle the HTTP header one at a time. Now
these write(2)s are batched.
(merge b36045c ew/http-backend-batch-headers later to maint).
* When "git rebase" tries to compare set of changes on the updated
upstream and our own branch, it computes patch-id for all of these
changes and attempts to find matches. This has been optimized by
lazily computing the full patch-id (which is expensive) to be
compared only for changes that touch the same set of paths.
(merge ba67504 kw/patch-ids-optim later to maint).
* A handful of tests that were broken under gettext-poison build have
been fixed.
* The recent i18n patch we added during this cycle did a bit too much
refactoring of the messages to avoid word-legos; the repetition has
been reduced to help translators.
Also contains various documentation updates and code clean-ups.
Fixes since v2.9
----------------
Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* The commands in `git log` family take %C(auto) in a custom format
string. This unconditionally turned the color on, ignoring
--no-color or with --color=auto when the output is not connected to
a tty; this was corrected to make the format truly behave as
"auto".
* "git rev-list --count" whose walk-length is limited with "-n"
option did not work well with the counting optimized to look at the
bitmap index.
* "git show -W" (extend hunks to cover the entire function, delimited
by lines that match the "funcname" pattern) used to show the entire
file when a change added an entire function at the end of the file,
which has been fixed.
* The documentation set has been updated so that literal commands,
configuration variables and environment variables are consistently
typeset in fixed-width font and bold in manpages.
* "git svn propset" subcommand that was added in 2.3 days is
documented now.
* The documentation tries to consistently spell "GPG"; when
referring to the specific program name, "gpg" is used.
* "git reflog" stopped upon seeing an entry that denotes a branch
creation event (aka "unborn"), which made it appear as if the
reflog was truncated.
* The git-prompt scriptlet (in contrib/) was not friendly with those
who uses "set -u", which has been fixed.
* compat/regex code did not cleanly compile.
* A codepath that used alloca(3) to place an unbounded amount of data
on the stack has been updated to avoid doing so.
* "git update-index --add --chmod=+x file" may be usable as an escape
hatch, but not a friendly thing to force for people who do need to
use it regularly. "git add --chmod=+x file" can be used instead.
* Build improvements for gnome-keyring (in contrib/)
* "git status" used to say "working directory" when it meant "working
tree".
* Comments about misbehaving FreeBSD shells have been clarified with
the version number (9.x and before are broken, newer ones are OK).
* "git cherry-pick A" worked on an unborn branch, but "git
cherry-pick A..B" didn't.
* Fix an unintended regression in v2.9 that breaks "clone --depth"
that recurses down to submodules by forcing the submodules to also
be cloned shallowly, which many server instances that host upstream
of the submodules are not prepared for.
* Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}'
to set the default value, without enclosing it in double quotes.
* Some platform-specific code had non-ANSI strict declarations of C
functions that do not take any parameters, which has been
corrected.
* The internal code used to show local timezone offset is not
prepared to handle timestamps beyond year 2100, and gave a
bogus offset value to the caller. Use a more benign looking
+0000 instead and let "git log" going in such a case, instead
of aborting.
* One among four invocations of readlink(1) in our test suite has
been rewritten so that the test can run on systems without the
command (others are in valgrind test framework and t9802).
* t/perf needs /usr/bin/time with GNU extension; the invocation of it
is updated to "gtime" on Darwin.
* A bug, which caused "git p4" while running under verbose mode to
report paths that are omitted due to branch prefix incorrectly, has
been fixed; the command said "Ignoring file outside of prefix" for
paths that are _inside_.
* The top level documentation "git help git" still pointed at the
documentation set hosted at now-defunct google-code repository.
Update it to point to https://git.github.io/htmldocs/git.html
instead.
* A helper function that takes the contents of a commit object and
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths. Make it ignore leading blank
lines to match.
* For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.
* "gc.autoPackLimit" when set to 1 should not trigger a repacking
when there is only one pack, but the code counted poorly and did
so.
* Add a test to specify the desired behaviour that currently is not
available in "git rebase -Xsubtree=...".
* More mark-up updates to typeset strings that are expected to
literally typed by the end user in fixed-width font.
* "git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.
* "git rebase -i --autostash" did not restore the auto-stashed change
when the operation was aborted.
* Git does not know what the contents in the index should be for a
path added with "git add -N" yet, so "git grep --cached" should not
show hits (or show lack of hits, with -L) in such a path, but that
logic does not apply to "git grep", i.e. searching in the working
tree files. But we did so by mistake, which has been corrected.
* "git blame -M" missed a single line that was moved within the file.
* Fix recently introduced codepaths that are involved in parallel
submodule operations, which gave up on reading too early, and
could have wasted CPU while attempting to write under a corner
case condition.
* "git grep -i" has been taught to fold case in non-ascii locales
correctly.
* A test that unconditionally used "mktemp" learned that the command
is not necessarily available everywhere.
* There are certain house-keeping tasks that need to be performed at
the very beginning of any Git program, and programs that are not
built-in commands had to do them exactly the same way as "git"
potty does. It was easy to make mistakes in one-off standalone
programs (like test helpers). A common "main()" function that
calls cmd_main() of individual program has been introduced to
make it harder to make mistakes.
(merge de61ceb jk/common-main later to maint).
* The test framework learned a new helper test_match_signal to
check an exit code from getting killed by an expected signal.
* General code clean-up around a helper function to write a
single-liner to a file.
(merge 7eb6e10 jk/write-file later to maint).
* One part of "git am" had an oddball helper function that called
stuff from outside "his" as opposed to calling what we have "ours",
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".
* "git blame file" allowed the lineage of lines in the uncommitted,
unadded contents of "file" to be inspected, but it refused when
"file" did not appear in the current commit. When "file" was
created by renaming an existing file (but the change has not been
committed), this restriction was unnecessarily tight.
* "git add -N dir/file && git write-tree" produced an incorrect tree
when there are other paths in the same directory that sorts after
"file".
* "git fetch http://user:pass@host/repo..." scrubbed the userinfo
part, but "git push" didn't.
* "git merge" with renormalization did not work well with
merge-recursive, due to "safer crlf" conversion kicking in when it
shouldn't.
(merge 1335d76 jc/renormalize-merge-kill-safer-crlf later to maint).
* The use of strbuf in "git rm" to build filename to remove was a bit
suboptimal, which has been fixed.
* An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.
* "git notes merge" had a code to see if a path exists (and fails if
it does) and then open the path for writing (when it doesn't).
Replace it with open with O_EXCL.
* "git pack-objects" and "git index-pack" mostly operate with off_t
when talking about the offset of objects in a packfile, but there
were a handful of places that used "unsigned long" to hold that
value, leading to an unintended truncation.
* Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().
* Recent FreeBSD stopped making perl available at /usr/bin/perl;
switch the default the built-in path to /usr/local/bin/perl on not
too ancient FreeBSD releases.
* "git commit --help" said "--no-verify" is only about skipping the
pre-commit hook, and failed to say that it also skipped the
commit-msg hook.
* "git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.
* The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.
* There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.
* "git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.
* Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.
* The reflog output format is documented better, and a new format
--date=unix to report the seconds-since-epoch (without timezone)
has been added.
(merge 442f6fd jk/reflog-date later to maint).
* "git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.
* The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.
* FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.
* Squelch compiler warnings for nedmalloc (in compat/) library.
* A small memory leak in the command line parsing of "git blame"
has been plugged.
* The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.
* Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.
* "git push --force-with-lease" already had enough logic to allow
ensuring that such a push results in creation of a ref (i.e. the
receiving end did not have another push from sideways that would be
discarded by our force-pushing), but didn't expose this possibility
to the users. It does so now.
(merge 9eed4f3 jk/push-force-with-lease-creation later to maint).
* The mechanism to limit the pack window memory size, when packing is
done using multiple threads (which is the default), is per-thread,
but this was not documented clearly.
(merge 954176c ms/document-pack-window-memory-is-per-thread later to maint).
* "import-tars" fast-import script (in contrib/) used to ignore a
hardlink target and replaced it with an empty file, which has been
corrected to record the same blob as the other file the hardlink is
shared with.
(merge 04e0869 js/import-tars-hardlinks later to maint).
* "git mv dir non-existing-dir/" did not work in some environments
the same way as existing mainstream platforms. The code now moves
"dir" to "non-existing-dir", without relying on rename("A", "B/")
that strips the trailing slash of '/'.
(merge 189d035 js/mv-dir-to-new-directory later to maint).
* The "t/" hierarchy is prone to get an unusual pathname; "make test"
has been taught to make sure they do not contain paths that cannot
be checked out on Windows (and the mechanism can be reusable to
catch pathnames that are not portable to other platforms as need
arises).
(merge c2cafd3 js/test-lint-pathname later to maint).
* When "git merge-recursive" works on history with many criss-cross
merges in "verbose" mode, the names the command assigns to the
virtual merge bases could have overwritten each other by unintended
reuse of the same piece of memory.
(merge 5447a76 rs/pull-signed-tag later to maint).
* "git checkout --detach <branch>" used to give the same advice
message as that is issued when "git checkout <tag>" (or anything
that is not a branch name) is given, but asking with "--detach" is
an explicit enough sign that the user knows what is going on. The
advice message has been squelched in this case.
(merge 779b88a sb/checkout-explit-detach-no-advice later to maint).
* "git difftool" by default ignores the error exit from the backend
commands it spawns, because often they signal that they found
differences by exiting with a non-zero status code just like "diff"
does; the exit status codes 126 and above however are special in
that they are used to signal that the command is not executable,
does not exist, or killed by a signal. "git difftool" has been
taught to notice these exit status codes.
(merge 45a4f5d jk/difftool-command-not-found later to maint).
* On Windows, help.browser configuration variable used to be ignored,
which has been corrected.
(merge 6db5967 js/no-html-bypass-on-windows later to maint).
* The "git -c var[=val] cmd" facility to append a configuration
variable definition at the end of the search order was described in
git(1) manual page, but not in git-config(1), which was more likely
place for people to look for when they ask "can I make a one-shot
override, and if so how?"
(merge ae1f709 dg/document-git-c-in-git-config-doc later to maint).
* The tempfile (hence its user lockfile) API lets the caller to open
a file descriptor to a temporary file, write into it and then
finalize it by first closing the filehandle and then either
removing or renaming the temporary file. When the process spawns a
subprocess after obtaining the file descriptor, and if the
subprocess has not exited when the attempt to remove or rename is
made, the last step fails on Windows, because the subprocess has
the file descriptor still open. Open tempfile with O_CLOEXEC flag
to avoid this (on Windows, this is mapped to O_NOINHERIT).
(merge 05d1ed6 bw/mingw-avoid-inheriting-fd-to-lockfile later to maint).
* Correct an age-old calco (is that a typo-like word for calc)
in the documentation.
(merge 7841c48 ls/packet-line-protocol-doc-fix later to maint).
* Other minor clean-ups and documentation updates
(merge 02a8cfa rs/merge-add-strategies-simplification later to maint).
(merge af4941d rs/merge-recursive-string-list-init later to maint).
(merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint).
(merge ddd0bfa jk/tighten-alloc later to maint).
(merge ecf30b2 rs/mailinfo-lib later to maint).
(merge 0eb75ce sg/reflog-past-root later to maint).
(merge 4369523 hv/doc-commit-reference-style later to maint).
----------------------------------------------------------------
Changes since v2.9.0 are as follows:
Alex Henrie (2):
unpack-trees: fix English grammar in do-this-before-that messages
l10n: ca.po: update translation
Alexander Hirsch (1):
pull: warn on --verify-signatures with --rebase
Alfred Perlstein (1):
git-svn: document the 'git svn propset' command
Andreas Brauchli (1):
gitweb: escape link body in format_ref_marker
Andrew Oakley (1):
git-p4: correct hasBranchPrefix verbose output
Antoine Queru (1):
upload-pack.c: use parse-options API
Armin Kunaschik (2):
t7800: readlink may not be available
t7610: test for mktemp before test execution
Ben Wijen (2):
t6026-merge-attr: child processes must not inherit index.lock handles
mingw: ensure temporary file handles are not inherited by child processes
Changwoo Ryu (1):
l10n: ko.po: Update Korean translation
Charles Bailey (4):
t7810: fix duplicated test title
t7810-grep.sh: fix duplicated test name
t7810-grep.sh: fix a whitespace inconsistency
grep: fix grepping for "intent to add" files
Chris Packham (1):
completion: add option '--recurse-submodules' to 'git clone'
Christian Couder (50):
builtin/apply: make gitdiff_verify_name() return void
builtin/apply: avoid parameter shadowing 'p_value' global
builtin/apply: avoid parameter shadowing 'linenr' global
builtin/apply: avoid local variable shadowing 'len' parameter
builtin/apply: extract line_by_line_fuzzy_match() from match_fragment()
builtin/apply: move 'options' variable into cmd_apply()
builtin/apply: move 'read_stdin' global into cmd_apply()
builtin/apply: introduce 'struct apply_state' to start libifying
builtin/apply: move 'state' init into init_apply_state()
builtin/apply: move 'unidiff_zero' global into 'struct apply_state'
builtin/apply: move 'check' global into 'struct apply_state'
builtin/apply: move 'check_index' global into 'struct apply_state'
builtin/apply: move 'apply_in_reverse' global into 'struct apply_state'
builtin/apply: move 'apply_with_reject' global into 'struct apply_state'
builtin/apply: move 'apply_verbosely' global into 'struct apply_state'
builtin/apply: move 'update_index' global into 'struct apply_state'
builtin/apply: move 'allow_overlap' global into 'struct apply_state'
builtin/apply: move 'cached' global into 'struct apply_state'
builtin/apply: move 'diffstat' global into 'struct apply_state'
builtin/apply: move 'numstat' global into 'struct apply_state'
builtin/apply: move 'summary' global into 'struct apply_state'
builtin/apply: move 'threeway' global into 'struct apply_state'
builtin/apply: move 'no_add' global into 'struct apply_state'
builtin/apply: move 'unsafe_paths' global into 'struct apply_state'
builtin/apply: move 'line_termination' global into 'struct apply_state'
builtin/apply: move 'fake_ancestor' global into 'struct apply_state'
builtin/apply: move 'p_context' global into 'struct apply_state'
builtin/apply: move 'apply' global into 'struct apply_state'
builtin/apply: move 'patch_input_file' global into 'struct apply_state'
builtin/apply: move 'limit_by_name' global into 'struct apply_state'
builtin/apply: move 'has_include' global into 'struct apply_state'
builtin/apply: move 'p_value' global into 'struct apply_state'
builtin/apply: move 'p_value_known' global into 'struct apply_state'
builtin/apply: move 'root' global into 'struct apply_state'
builtin/apply: move 'whitespace_error' global into 'struct apply_state'
builtin/apply: move 'whitespace_option' into 'struct apply_state'
builtin/apply: remove whitespace_option arg from set_default_whitespace_mode()
builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state'
builtin/apply: move 'applied_after_fixing_ws' into 'struct apply_state'
builtin/apply: move 'ws_error_action' into 'struct apply_state'
builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
builtin/apply: move 'max_change' and 'max_len' into 'struct apply_state'
builtin/apply: move 'state_linenr' global into 'struct apply_state'
builtin/apply: move 'fn_table' global into 'struct apply_state'
builtin/apply: move 'symlink_changes' global into 'struct apply_state'
builtin/apply: move 'state' check into check_apply_state()
builtin/apply: move applying patches into apply_all_patches()
builtin/apply: add 'lock_file' pointer into 'struct apply_state'
builtin/apply: move 'newfd' global into 'struct apply_state'
.mailmap: use Christian Couder's Tuxfamily address
Christopher Layne (1):
git-svn: clone: Fail on missing url argument
Dave Nicolson (1):
Documentation: GPG capitalization
David A. Greene (1):
contrib/subtree: Add a test for subtree rebase that loses commits
David Aguilar (6):
t7900-subtree.sh: fix quoting and broken && chains
subtree: fix "git subtree split --rejoin"
subtree: adjust style to match CodingGuidelines
subtree: adjust function definitions to match CodingGuidelines
difftool: avoid $GIT_DIR and $GIT_WORK_TREE
difftool: use Git::* functions instead of passing around state
David Glasser (1):
doc: mention `git -c` in git-config(1)
David Kastrup (1):
blame: require 0 context lines while finding moved lines with -M
David Turner (3):
refs: allow log-only updates
refs: don't dereference on rename
mailmap: use main email address for dturner
Ed Maste (1):
rebase: update comment about FreeBSD /bin/sh
Edward Thomson (2):
format_commit_message: honor `color=auto` for `%C(auto)`
add: add --chmod=+x / --chmod=-x options
Elia Pinto (2):
http.c: implement the GIT_TRACE_CURL environment variable
imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
Eric Sunshine (1):
blame: drop strdup of string literal
Eric Wong (24):
fast-import: implement unpack limit
daemon: enable SO_KEEPALIVE for all sockets
fast-import: invalidate pack_id references after loosening
pretty: support "mboxrd" output format
mailsplit: support unescaping mboxrd messages
am: support --patch-format=mboxrd
git-svn: skip mergeinfo handling with --no-follow-parent
gc: fix off-by-one error with gc.autoPackLimit
xread: retry after poll on EAGAIN/EWOULDBLOCK
xwrite: poll on non-blocking FDs
git-svn: warn instead of dying when commit data is missing
hoist out handle_nonblock function for xread and xwrite
config.mak.uname: define NEEDS_LIBRT under Linux, for now
http-walker: remove unused parameter from fetch_object
http: avoid disconnecting on 404s for loose objects
http-walker: reduce O(n) ops with doubly-linked list
list: avoid incompatibility with *BSD sys/queue.h
daemon: ignore ENOTSOCK from setsockopt
configure.ac: stronger test for pthread linkage
git-svn: document svn.authorsProg in config
git-svn: allow --version to work anywhere
git svn: migrate tests to use lib-httpd
pager: move pager-specific setup into the build
http-backend: buffer headers before sending
Heiko Becker (1):
gnome-keyring: Don't hard-code pkg-config executable
Heiko Voigt (4):
submodule-config: passing name reference for .gitmodule blobs
submodule-config: combine early return code into one goto
submodule-config: fix test binary crashing when no arguments given
SubmittingPatches: document how to reference previous commits
Ingo Brückl (3):
t3700: remove unwanted leftover files before running new tests
t3700: merge two tests into one
t3700: add a test_mode_in_index helper function
Jacob Keller (1):
completion: add completion for --submodule=* diff option
Jean-Noel Avila (4):
i18n: fix typos for translation
i18n: fix git rebase interactive commit messages
i18n: simplify numeric error reporting
l10n: fr.po v2.10.0-rc2
Jeff King (107):
git_config_with_options: drop "found" counting
git_config_parse_parameter: refactor cleanup code
config: set up config_source for command-line config
config: return configset value for current_config_ functions
config: add a notion of "scope"
upload-pack: provide a hook for running pack-objects
rev-list: "adjust" results of "--count --use-bitmap-index -n"
rev-list: disable bitmaps when "-n" is used with listing objects
tree-diff: avoid alloca for large allocations
send-pack: use buffered I/O to talk to pack-objects
parse_opt_string_list: stop allocating new strings
interpret-trailers: don't duplicate option strings
blame,shortlog: don't make local option variables static
use string_list initializer consistently
fetch: document that pruning happens before fetching
repack: document --unpack-unreachable option
repack: add --keep-unreachable option
repack: extend --keep-unreachable to loose objects
add--interactive: respect diff.compactionHeuristic
bisect: always call setup_revisions after init_revisions
gpg-interface: use child_process.args
verify_signed_buffer: drop pbuf variable
verify_signed_buffer: use tempfile object
run-command: add pipe_command helper
verify_signed_buffer: use pipe_command
sign_buffer: use pipe_command
t0006: rename test-date's "show" to "relative"
t0006: test various date formats
local_tzoffset: detect errors from tm_to_time_t
t/perf: fix regression in testing older versions of git
p4211: explicitly disable renames in no-rename test
color: fix max-size comment
doc: refactor description of color format
add skip_prefix_mem helper
color: refactor parse_attr
color: allow "no-" for negating attributes
color: support "italic" attribute
color: support strike-through attribute
t9300: factor out portable "head -c" replacement
t5000: test tar files that overflow ustar headers
archive-tar: write extended headers for file sizes >= 8GB
archive-tar: write extended headers for far-future mtime
archive-tar: drop return value
add an extra level of indirection to main()
common-main: call git_extract_argv0_path()
common-main: call sanitize_stdfds()
common-main: call restore_sigpipe_to_default()
common-main: call git_setup_gettext()
tests: factor portable signal check out of t0005
t0005: use test_match_signal as appropriate
test_must_fail: use test_match_signal
t/lib-git-daemon: use test_match_signal
parse_options: allocate a new array when concatenating
Makefile: drop extra dependencies for test helpers
Makefile: use VCSSVN_LIB to refer to svn library
config: fix bogus fd check when setting up default config
branch: use non-gentle write_file for branch description
write_file: drop "gently" form
write_file: use xopen
write_file: add pointer+len variant
write_file: add format attribute
use write_file_buf where applicable
branch: use write_file_buf instead of write_file
walker: let walker_say take arbitrary formats
avoid using sha1_to_hex output as printf format
push: anonymize URL in status output
t0006: skip "far in the future" test when unsigned long is not long enough
check_everything_connected: always pass --quiet to rev-list
rev-list: add optional progress reporting
check_everything_connected: convert to argv_array
check_everything_connected: use a struct with named options
check_connected: relay errors to alternate descriptor
check_connected: add progress flag
clone: use a real progress meter for connectivity check
index-pack: add flag for showing delta-resolution progress
receive-pack: turn on index-pack resolving progress
receive-pack: relay connectivity errors to sideband
receive-pack: turn on connectivity progress
receive-pack: send keepalives during quiet periods
t5541: fix url scrubbing test when GPG is not set
diff: do not reuse worktree files that need "clean" conversion
contrib/git-jump: fix greedy regex when matching hunks
contrib/git-jump: add whitespace-checking mode
contrib/git-jump: fix typo in README
doc/rev-list-options: clarify "commit@{Nth}" for "-g" option
doc/rev-list-options: explain "-g" output formats
doc/pretty-formats: describe index/time formats for %gd
doc/pretty-formats: explain shortening of %gd
t4205: drop top-level &&-chaining
t4205: indent here documents
date: document and test "raw-local" mode
date: add "unix" format
t/perf: add tests for many-pack scenarios
sha1_file: drop free_pack_by_name
add generic most-recently-used list
find_pack_entry: replace last_found_pack with MRU cache
pack-objects: break out of want_object loop early
pack-objects: compute local/ignore_pack_keep early
am: reset cached ident date for each patch
trace: handle NULL argument in trace_disable()
trace: stop using write_or_whine_pipe()
trace: use warning() for printing trace errors
trace: cosmetic fixes for error messages
trace: correct variable name in write() error message
trace: disable key after write error
write_or_die: drop write_or_whine_pipe()
trace: do not fall back to stderr
Jiang Xin (3):
l10n: git.pot: v2.10.0 round 1 (248 new, 56 removed)
l10n: git.pot: v2.10.0 round 2 (12 new, 44 removed)
l10n: zh_CN: for git v2.10.0 l10n round 2
Joey Hess (1):
clarify %f documentation
Johannes Schindelin (59):
mingw: let the build succeed with DEVELOPER=1
perf: accommodate for MacOSX
pretty: make the skip_blank_lines() function public
commit.c: make find_commit_subject() more robust
t2300: "git --exec-path" is not usable in $PATH on Windows as-is
log: prepare log/log-tree to reuse the diffopt.close_file attribute
log-tree: respect diffopt's configured output file stream
line-log: respect diffopt's configured output file stream
graph: respect the diffopt.file setting
shortlog: support outputting to streams other than stdout
format-patch: explicitly switch off color when writing to files
format-patch: avoid freopen()
format-patch: use stdout directly
shortlog: respect the --output=<file> setting
t4211: ensure that log respects --output=<file>
color.h: remove obsolete comment about limitations on Windows
diff: do not color output when --color=auto and --output=<file> is given
t3404: fix a grammo (commands are ran -> commands are run)
commit -C: skip blank lines at the beginning of the message
sequencer: use skip_blank_lines() to find the commit subject
reset --hard: skip blank lines when reporting the commit subject
commit -S: avoid invalid pointer with empty message
mingw: declare main()'s argv as const
t3404: add a test for the --gpg-sign option
rebase -i: demonstrate a bug with --autosquash
rebase -i: we allow extra spaces after fixup!/squash!
am: counteract gender bias
diff: demonstrate a bug with --patience and --ignore-space-at-eol
diff: fix a double off-by-one with --ignore-space-at-eol
t/test-lib.sh: fix running tests with --valgrind
mingw: fix the shortlog --output=<file> test
mingw: fix regression in t1308-config-set
fsck: refactor how to describe objects
fsck_walk(): optionally name objects on the go
fsck: give the error function a chance to see the fsck_options
fsck: optionally show more helpful info for broken links
t5520: verify that `pull --rebase` shows the helpful advice when failing
die("bug"): report bugs consistently
die(_("BUG")): avoid translating bug messages
merge-recursive: clarify code in was_tracked()
prepare the builtins for a libified merge_recursive()
merge_recursive: abort properly upon errors
merge-recursive: avoid returning a wholesale struct
merge-recursive: allow write_tree_from_memory() to error out
merge-recursive: handle return values indicating errors
merge-recursive: switch to returning errors instead of dying
am -3: use merge_recursive() directly again
merge-recursive: flush output buffer before printing error messages
merge-recursive: write the commit title in one go
merge-recursive: offer an option to retain the output in 'obuf'
merge_trees(): ensure that the callers release output buffer
merge-recursive: flush output buffer even when erroring out
import-tars: support hard links
t5533: make it pass on case-sensitive filesystems
nedmalloc: fix misleading indentation
git mv: do not keep slash in `git mv dir non-existing-dir/`
t/Makefile: ensure that paths are valid on platforms we care
rev-parse: respect core.hooksPath in --git-path
Revert "display HTML in default browser using Windows' shell API"
Johannes Sixt (7):
Windows: add missing definition of ENOTSOCK
git-submodule: forward exit code of git-submodule--helper more faithfully
submodule-helper: fix indexing in clone retry error reporting path
rebase-interactive: trim leading whitespace from progress count
t4130: work around Windows limitation
config.c: avoid duplicated global static variables
commit-slab.h: avoid duplicated global static variables
John Keeping (5):
difftool: fix argument handling in subdirs
Documentation/git-push: fix placeholder formatting
push: add shorthand for --force-with-lease branch creation
push: allow pushing new branches with --force-with-lease
difftool: always honor fatal error exit codes
Jonathan Nieder (1):
doc: git-htmldocs.googlecode.com is no more
Jonathan Tan (1):
fetch-pack: grow stateless RPC windows exponentially
Jordan DE GEA (1):
worktree: allow "-" short-hand for @{-1} in add command
Josef Kufner (1):
pretty: pass graph width to pretty formatting for use in '%>|(N)'
Josh Triplett (1):
format-patch: format.from gives the default for --from
Junio C Hamano (44):
send-email: detect and offer to skip backup files
pathspec: rename free_pathspec() to clear_pathspec()
t1308: do not get fooled by symbolic links to the source tree
builtin/apply: remove misleading comment on lock_file field
blame, line-log: do not loop around deref_tag()
Start the post-2.9 cycle
clone: do not let --depth imply --shallow-submodules
Start preparing for 2.9.1
Second batch of topics for 2.10
More fixes for 2.9.1
Third batch of topics for 2.10
commit.c: remove print_commit_list()
Fourth batch of topics for 2.10
Git 2.9.1
merge: avoid "safer crlf" during recording of merge results
Fifth batch of topics for 2.10
diff: document diff-filter exclusion
Git 2.9.2
archive-tar: huge offset and future timestamps would not work on 32-bit
Sixth batch of topics for 2.10
grep: further simplify setting the pattern type
Seventh batch of topics for 2.10
date: clarify --date=raw description
Some fixes for 2.9.3
t9100: portability fix
Eighth batch of topics for 2.10
hashmap: clarify that hashmap_entry can safely be discarded
Ninth batch of topics for 2.10
Tenth batch for 2.10
Hopefully final batch for 2.9.3
Eleventh batch for 2.10
Yet another batch for 2.9.3
Twelfth batch for 2.10
Git 2.9.3
Final batch before 2.10-rc0
Git 2.10-rc0
Relnotes: decribe the updates to the "text=auto" attribute
relnotes: redo the description of text=auto fix
RelNotes: final batch of topics before -rc1
Git 2.10-rc1
Prepare for 2.10.0-rc2
Git 2.10-rc2
A few more fixes before the final 2.10
Git 2.10
Keith McGuigan (1):
builtin/fetch.c: don't free remote->name after fetch
Kevin Willford (4):
patch-ids: stop using a hand-rolled hashmap implementation
patch-ids: replace the seen indicator with a commit pointer
patch-ids: add flag to create the diff patch id using header only data
rebase: avoid computing unnecessary patch IDs
LE Manh Cuong (1):
sh-setup: enclose setting of ${VAR=default} in double-quotes
Lars Schneider (3):
git-p4: place temporary refs used for branch import under refs/git-p4-tmp
travis-ci: enable web server tests t55xx on Linux
pack-protocol: fix maximum pkt-line size
Lars Vogel (1):
Use "working tree" instead of "working directory" for git status
Linus Torvalds (1):
gpg-interface: prefer "long" key format output when verifying pgp signatures
Lukas Fleischer (4):
receive-pack: send auto-gc output over sideband 2
sideband.c: make send_sideband() return void
upload-pack.c: make send_client_data() return void
sideband.c: refactor recv_sideband()
Matthieu Moy (9):
Documentation/git-mv.txt: fix whitespace indentation
doc: typeset short command-line options as literal
doc: typeset long command-line options as literal
doc: typeset '--' as literal
doc: typeset long options with argument as literal
CodingGuidelines: formatting HEAD in documentation
doc: typeset HEAD and variants as literal
status: suggest 'git merge --abort' when appropriate
git-multimail: update to release 1.4.0
Mehul Jain (3):
t4202: refactor test
log: add "--no-show-signature" command line option
log: add log.showSignature configuration variable
Michael Haggerty (50):
t1404: demonstrate a bug resolving references
commit_ref(): if there is an empty dir in the way, delete it
read_raw_ref(): don't get confused by an empty directory
safe_create_leading_directories(): improve docstring
remove_dir_recursively(): add docstring
refname_is_safe(): use skip_prefix()
refname_is_safe(): don't allow the empty string
refname_is_safe(): insist that the refname already be normalized
commit_ref_update(): write error message to *err, not stderr
rename_ref(): remove unneeded local variable
ref_transaction_commit(): remove local variables n and updates
read_raw_ref(): rename flags argument to type
read_raw_ref(): clear *type at start of function
read_raw_ref(): rename symref argument to referent
read_raw_ref(): improve docstring
read_raw_ref(): move docstring to header file
lock_ref_sha1_basic(): remove unneeded local variable
refs: make error messages more consistent
ref_transaction_create(): disallow recursive pruning
ref_transaction_commit(): correctly report close_ref() failure
delete_branches(): use resolve_refdup()
verify_refname_available(): adjust constness in declaration
add_update(): initialize the whole ref_update
lock_ref_for_update(): new function
unlock_ref(): move definition higher in the file
ref_transaction_update(): check refname_is_safe() at a minimum
refs: resolve symbolic refs first
lock_ref_for_update(): don't re-read non-symbolic references
lock_ref_for_update(): don't resolve symrefs
commit_ref_update(): remove the flags parameter
lock_ref_sha1_basic(): only handle REF_NODEREF mode
refs: remove unnecessary "extern" keywords
do_for_each_ref(): move docstring to the header file
refs: use name "prefix" consistently
delete_refs(): add a flags argument
remote rm: handle symbolic refs correctly
get_ref_cache(): only create an instance if there is a submodule
entry_resolves_to_object(): rename function from ref_resolves_to_object()
ref_resolves_to_object(): new function
refs: introduce an iterator interface
do_for_each_ref(): reimplement using reference iteration
for_each_reflog(): don't abort for bad references
dir_iterator: new API for iterating over a directory tree
for_each_reflog(): reimplement using iterators
t1404: rename file to t1404-update-ref-errors.sh
t1404: remove "prefix" argument to test_update_rejected
t1404: document function test_update_rejected
t1404: add more tests of update-ref error handling
lock_ref_for_update(): make error handling more uniform
lock_ref_for_update(): avoid a symref resolution
Michael J Gruber (7):
cherry-pick: allow to pick to unborn branches
Documentation/technical: describe signature formats
Documentation/technical: signed tag format
Documentation/technical: signed commit format
Documentation/technical: signed merge tag format
gpg-interface: check gpg signature creation status
t/t91*: do not say how to avoid the tests
Michael Stahl (1):
document git-repack interaction of pack.threads and pack.windowMemory
Mike Hommey (2):
blame: allow to blame paths freshly added to the index
t/t8003-blame-corner-cases.sh: Use here documents
Nguyễn Thái Ngọc Duy (47):
completion: support git-worktree
worktree.c: rewrite mark_current_worktree() to avoid strbuf
git-worktree.txt: keep subcommand listing in alphabetical order
worktree.c: use is_dot_or_dotdot()
worktree: avoid 0{40}, too many zeroes, hard to read
worktree: simplify prefixing paths
worktree.c: add find_worktree()
worktree.c: add is_main_worktree()
lib-httpd.sh: print error.log on error
worktree.c: add is_worktree_locked()
pretty.c: support <direction>|(<negative number>) forms
new-command.txt: correct the command description file
grep: break down an "if" stmt in preparation for next changes
test-regex: isolate the bug test code
test-regex: expose full regcomp() to the command line
grep/icase: avoid kwsset on literal non-ascii strings
git-fetch.txt: document fetch output
fetch: refactor ref update status formatting code
fetch: change flag code for displaying tag update and deleted ref
grep/icase: avoid kwsset when -F is specified
grep: rewrite an if/else condition to avoid duplicate expression
grep/pcre: prepare locale-dependent tables for icase matching
gettext: add is_utf8_locale()
grep/pcre: support utf-8
diffcore-pickaxe: Add regcomp_or_die()
diffcore-pickaxe: support case insensitive match on non-ascii
grep.c: reuse "icase" variable
fetch: align all "remote -> local" output
fetch: reduce duplicate in ref update status lines with placeholder
connect: read $GIT_SSH_COMMAND from config file
worktree: add "lock" command
worktree: add "unlock" command
worktree.c: find_worktree() search by path suffix
pack-objects: pass length to check_pack_crc() without truncation
log: decorate HEAD -> branch with the same color for arrow and HEAD
sha1_file.c: use type off_t* for object_info->disk_sizep
index-pack: correct "len" type in unpack_data()
index-pack: report correct bad object offsets even if they are large
index-pack: correct "offset" type in unpack_entry_data()
pack-objects: do not truncate result in-pack object size on 32-bit systems
fsck: use streaming interface for large blobs in pack
test-lib.sh: introduce and use $EMPTY_TREE
test-lib.sh: introduce and use $EMPTY_BLOB
cache-tree.c: fix i-t-a entry skipping directory updates sometimes
cache-tree: do not generate empty trees as a result of all i-t-a subentries
config.mak.uname: correct perl path on FreeBSD
t7063: work around FreeBSD's lazy mtime update feature
Nicolas Pitre (1):
sideband.c: small optimization of strbuf usage
Orgad Shaneh (1):
commit: describe that --no-verify skips the commit-msg hook in the help text
Parker Moore (2):
contrib/persistent-https: update ldflags syntax for Go 1.7+
contrib/persistent-https: use Git version for build label
Patrick Steinhardt (1):
rebase -i: restore autostash on abort
Peter Colberg (2):
refs.h: fix misspelt "occurred" in a comment
config.c: fix misspelt "occurred" in an error message
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (2757t0f0u)
Pranit Bauva (2):
builtin/commit.c: memoize git-path for COMMIT_EDITMSG
strbuf: describe the return value of strbuf_read_file
Ramsay Jones (2):
regex: fix a SIZE_MAX macro redefinition warning
write_or_die: remove the unused write_or_whine() function
René Scharfe (34):
t4051: rewrite, add more tests
xdiff: factor out match_func_rec()
xdiff: handle appended chunks better with -W
xdiff: ignore empty lines before added functions with -W
xdiff: -W: don't include common trailing empty lines in context
xdiff: don't trim common tail with -W
t7810: add test for grep -W and trailing empty context lines
grep: -W: don't extend context to trailing empty lines
xdiff: fix merging of appended hunk with -W
.gitattributes: set file type for C files
notes-merge: use O_EXCL to avoid overwriting existing files
am: ignore return value of write_file()
rm: reuse strbuf for all remove_dir_recursively() calls
worktree: use strbuf_add_absolute_path() directly
use strbuf_addbuf() for appending a strbuf to another
submodule-config: use explicit empty string instead of strbuf in config_from()
strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
use strbuf_addstr() for adding constant strings to a strbuf
pass constants as first argument to st_mult()
use strbuf_addstr() instead of strbuf_addf() with "%s"
use CHILD_PROCESS_INIT to initialize automatic variables
merge-recursive: use STRING_LIST_INIT_NODUP
merge: use string_list_split() in add_strategies()
nedmalloc: work around overzealous GCC 6 warning
archive-tar: make write_extended_header() void
use strbuf_add_unique_abbrev() for adding short hashes
correct FLEXPTR_* example in comment
mailinfo: recycle strbuf in check_header()
commit: use xstrdup() in get_merge_parent()
commit: factor out set_merge_remote_desc()
merge-recursive: fix verbose output for multiple base trees
commit: use FLEX_ARRAY in struct merge_remote_desc
receive-pack: use FLEX_ALLOC_MEM in queue_command()
p3400: make test script executable
Ronald Wampler (1):
Makefile: add NEEDS_LIBRT to optionally link with librt
SZEDER Gábor (2):
reflog: continue walking the reflog past root commits
t1410: remove superfluous 'git reflog' from the 'walk past root' test
Stefan Beller (23):
submodule update: make use of the existing fetch_in_submodule function
submodule-config: keep shallow recommendation around
submodule update: learn `--[no-]recommend-shallow` option
submodule--helper: initial clone learns retry logic
submodule update: continue when a clone fails
t5614: don't use subshells
push options: {pre,post}-receive hook learns about push options
receive-pack: implement advertising and receiving push options
push: accept push options
add a test for push options
Documentation: pack-protocol correct NAK response
submodule deinit: remove outdated comment
t7406: future proof tests with hard coded depth
submodule update: respect depth in subsequent fetches
submodule update: narrow scope of local variable
submodule--helper: fix usage string for relative-path
submodule-config: keep configured branch around
gitmodules: document shallow recommendation
submodule--helper: add remote-branch helper
submodule update: allow '.' for branch value
submodule--helper: use parallel processor correctly
t7406: fix breakage on OSX
checkout: do not mention detach advice for explicit --detach option
Thomas Braun (3):
completion: factor out untracked file modes into a variable
completion: add __git_get_option_value helper
completion: add git status
Thomas Gummerer (1):
blame: fix segfault on untracked files
Tom Russello (4):
doc: clearer rule about formatting literals
doc: change environment variables format
doc: more consistency in environment variables format
doc: change configuration variables format
Torsten Bögershausen (4):
convert: unify the "auto" handling of CRLF
convert: Correct NNO tests and missing `LF will be replaced by CRLF`
git ls-files: text=auto eol=lf is supported in Git 2.10
gitattributes: Document the unified "auto" handling
Trần Ngọc Quân (2):
l10n: Updated Vietnamese translation for v2.10.0 (2789t)
l10n: Updated Vietnamese translation for v2.10.0-rc2 (2757t)
Vasco Almeida (49):
i18n: builtin/remote.c: fix mark for translation
i18n: advice: mark string about detached head for translation
i18n: advice: internationalize message for conflicts
i18n: transport: mark strings for translation
i18n: sequencer: mark entire sentences for translation
i18n: rebase-interactive: mark here-doc strings for translation
i18n: sequencer: mark string for translation
i18n: rebase-interactive: mark comments of squash for translation
i18n: merge-octopus: mark messages for translation
i18n: setup: mark strings for translation
merge-octopus: use die shell function from git-sh-setup.sh
tests: use test_i18n* functions to suppress false positives
i18n: rebase: fix marked string to use eval_gettext variant
tests: unpack-trees: update to use test_i18n* functions
i18n: rebase: mark placeholder for translation
t9003: become resilient to GETTEXT_POISON
i18n: bisect: simplify error message for i18n
t4153: fix negated test_i18ngrep call
t6030: update to use test_i18ncmp
t5523: use test_i18ngrep for negation
i18n: git-sh-setup.sh: mark strings for translation
i18n: bisect: mark strings for translation
i18n: rebase-interactive: mark strings for translation
i18n: transport-helper.c: change N_() call to _()
i18n: notes: mark strings for translation
i18n: notes: mark options for translation
i18n: merge: mark messages for translation
i18n: merge: change command option help to lowercase
i18n: sequencer: add period to error message
i18n: standardise messages
i18n: remote: mark URL fallback text for translation
i18n: remote: allow translations to reorder message
i18n: init-db: join message pieces
i18n: submodule: join strings marked for translation
i18n: submodule: escape shell variables inside eval_gettext
i18n: unmark die messages for translation
i18n: branch: mark comment when editing branch description for translation
t5541: become resilient to GETTEXT_POISON
t5510: skip tests under GETTEXT_POISON build
i18n: notes: mark comment for translation
i18n: config: unfold error messages marked for translation
i18n: setup: mark error messages for translation
i18n: archive: mark errors for translation
i18n: git-stash: mark messages for translation
t3404: become resilient to GETTEXT_POISON
t5520: become resilient to GETTEXT_POISON
t7411: become resilient to GETTEXT_POISON
l10n: pt_PT: merge git.pot
l10n: pt_PT: update Portuguese translation
Ville Skyttä (3):
git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha
completion: complete --delete, --move, and --remotes for git branch
Spelling fixes
William Duclot (1):
userdiff: add built-in pattern for CSS
brian m. carlson (11):
hex: add oid_to_hex_r()
contrib/coccinelle: add basic Coccinelle transforms
coccinelle: convert hashcpy() with null_sha1 to hashclr()
coccinelle: apply object_id Coccinelle transformations
diff: convert struct diff_filespec to struct object_id
diff: rename struct diff_filespec's sha1_valid member
merge-recursive: convert struct stage_data to use object_id
merge-recursive: convert struct merge_file_info to object_id
merge-recursive: convert leaf functions to use struct object_id
merge-recursive: convert merge_recursive_generic() to object_id
diff: convert prep_temp_blob() to struct object_id
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.10.0-rc2
@ 2016-08-26 22:31 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-08-26 22:31 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.10.0-rc2 is now available for testing
at the usual places. It is comprised of 623 non-merge commits
since v2.9.0, contributed by 71 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.10.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.9.0 are as follows.
Welcome to the Git development community!
Alexander Hirsch, Andreas Brauchli, Andrew Oakley, Antoine Queru,
Ben Wijen, Christopher Layne, Dave Nicolson, David Glasser, Ed
Maste, Heiko Becker, Ingo Brückl, Jonathan Tan, Jordan DE GEA,
Josef Kufner, Keith McGuigan, Kevin Willford, LE Manh Cuong,
Michael Stahl, Parker Moore, Peter Colberg, Tom Russello,
and William Duclot.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alex Henrie, Alfred Perlstein, Armin Kunaschik, brian m. carlson,
Charles Bailey, Chris Packham, Christian Couder, David A. Greene,
David Aguilar, David Kastrup, David Turner, Edward Thomson,
Elia Pinto, Eric Sunshine, Eric Wong, Heiko Voigt, Jacob Keller,
Jean-Noel Avila, Jeff King, Joey Hess, Johannes Schindelin,
Johannes Sixt, John Keeping, Jonathan Nieder, Josh Triplett,
Junio C Hamano, Lars Schneider, Lars Vogel, Linus Torvalds,
Lukas Fleischer, Matthieu Moy, Mehul Jain, Michael Haggerty,
Michael J Gruber, Mike Hommey, Nguyễn Thái Ngọc Duy,
Nicolas Pitre, Orgad Shaneh, Patrick Steinhardt, Pranit Bauva,
Ramsay Jones, René Scharfe, Ronald Wampler, Stefan Beller,
SZEDER Gábor, Thomas Braun, Torsten Bögershausen, Vasco
Almeida, and Ville Skyttä.
----------------------------------------------------------------
Git 2.10 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
Updates since v2.9
------------------
UI, Workflows & Features
* "git pull --rebase --verify-signature" learned to warn the user
that "--verify-signature" is a no-op when rebasing.
* An upstream project can make a recommendation to shallowly clone
some submodules in the .gitmodules file it ships.
* "git worktree add" learned that '-' can be used as a short-hand for
"@{-1}", the previous branch.
* Update the funcname definition to support css files.
* The completion script (in contrib/) learned to complete "git
status" options.
* Messages that are generated by auto gc during "git push" on the
receiving end are now passed back to the sending end in such a way
that they are shown with "remote: " prefix to avoid confusing the
users.
* "git add -i/-p" learned to honor diff.compactionHeuristic
experimental knob, so that the user can work on the same hunk split
as "git diff" output.
* "upload-pack" allows a custom "git pack-objects" replacement when
responding to "fetch/clone" via the uploadpack.packObjectsHook.
(merge b738396 jk/upload-pack-hook later to maint).
* Teach format-patch and mailsplit (hence "am") how a line that
happens to begin with "From " in the e-mail message is quoted with
">", so that these lines can be restored to their original shape.
(merge d9925d1 ew/mboxrd-format-am later to maint).
* "git repack" learned the "--keep-unreachable" option, which sends
loose unreachable objects to a pack instead of leaving them loose.
This helps heuristics based on the number of loose objects
(e.g. "gc --auto").
(merge e26a8c4 jk/repack-keep-unreachable later to maint).
* "log --graph --format=" learned that "%>|(N)" specifies the width
relative to the terminal's left edge, not relative to the area to
draw text that is to the right of the ancestry-graph section. It
also now accepts negative N that means the column limit is relative
to the right border.
* 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.
(merge 531220b jc/send-email-skip-backup later to maint).
* "git submodule update" that drives many "git clone" could
eventually hit flaky servers/network conditions on one of the
submodules; the command learned to retry the attempt.
* The output coloring scheme learned two new attributes, italic and
strike, in addition to existing bold, reverse, etc.
* "git log" learns log.showSignature configuration variable, and a
command line option "--no-show-signature" to countermand it.
(merge fce04c3 mj/log-show-signature-conf later to maint).
* More markings of messages for i18n, with updates to various tests
to pass GETTEXT_POISON tests.
* "git archive" learned to handle files that are larger than 8GB and
commits far in the future than expressible by the traditional US-TAR
format.
(merge 5caeeb8 jk/big-and-future-archive-tar later to maint).
* A new configuration variable core.sshCommand has been added to
specify what value for GIT_SSH_COMMAND to use per repository.
* "git worktree prune" protected worktrees that are marked as
"locked" by creating a file in a known location. "git worktree"
command learned a dedicated command pair to create and remove such
a file, so that the users do not have to do this with editor.
* A handful of "git svn" updates.
* "git push" learned to accept and pass extra options to the
receiving end so that hooks can read and react to them.
* "git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.
* "git jump" script (in contrib/) has been updated a bit.
(merge a91e692 jk/git-jump later to maint).
* "git push" and "git clone" learned to give better progress meters
to the end user who is waiting on the terminal.
* An entry "git log --decorate" for the tip of the current branch is
shown as "HEAD -> name" (where "name" is the name of the branch);
the arrow is now painted in the same color as "HEAD", not in the
color for commits.
* "git format-patch" learned format.from configuration variable to
specify the default settings for its "--from" option.
* "git am -3" calls "git merge-recursive" when it needs to fall back
to a three-way merge; this call has been turned into an internal
subroutine call instead of spawning a separate subprocess.
* The command line completion scripts (in contrib/) now knows about
"git branch --delete/--move [--remote]".
(merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).
* "git rev-parse --git-path hooks/<hook>" learned to take
core.hooksPath configuration variable (introduced during 2.9 cycle)
into account.
(merge 9445b49 ab/hooks later to maint).
* "git log --show-signature" and other commands that display the
verification status of PGP signature now shows the longer key-id,
as 32-bit key-id is so last century.
Performance, Internal Implementation, Development Support etc.
* "git fast-import" learned the same performance trick to avoid
creating too small a packfile as "git fetch" and "git push" have,
using *.unpackLimit configuration.
* When "git daemon" is run without --[init-]timeout specified, a
connection from a client that silently goes offline can hang around
for a long time, wasting resources. The socket-level KEEPALIVE has
been enabled to allow the OS to notice such failed connections.
* "git upload-pack" command has been updated to use the parse-options
API.
* The "git apply" standalone program is being libified; the first
step to move many state variables into a structure that can be
explicitly (re)initialized to make the machinery callable more
than once has been merged.
* HTTP transport gained an option to produce more detailed debugging
trace.
(merge 73e57aa ep/http-curl-trace later to maint).
* Instead of taking advantage of the fact that a struct string_list
that is allocated with all NULs happens to be the INIT_NODUP kind,
the users of string_list structures are taught to initialize them
explicitly as such, to document their behaviour better.
(merge 2721ce2 jk/string-list-static-init later to maint).
* HTTPd tests learned to show the server error log to help diagnosing
a failing tests.
(merge 44f243d nd/test-lib-httpd-show-error-log-in-verbose later to maint).
* The ownership rule for the piece of memory that hold references to
be fetched in "git fetch" was screwy, which has been cleaned up.
* "git bisect" makes an internal call to "git diff-tree" when
bisection finds the culprit, but this call did not initialize the
data structure to pass to the diff-tree API correctly.
* Further preparatory clean-up for "worktree" feature continues.
(merge 0409e0b nd/worktree-cleanup-post-head-protection later to maint).
* Formats of the various data (and how to validate them) where we use
GPG signature have been documented.
* A new run-command API function pipe_command() is introduced to
sanely feed data to the standard input while capturing data from
the standard output and the standard error of an external process,
which is cumbersome to hand-roll correctly without deadlocking.
* The codepath to sign data in a prepared buffer with GPG has been
updated to use this API to read from the status-fd to check for
errors (instead of relying on GPG's exit status).
(merge efee955 jk/gpg-interface-cleanup later to maint).
* Allow t/perf framework to use the features from the most recent
version of Git even when testing an older installed version.
* The commands in the "log/diff" family have had an FILE* pointer in the
data structure they pass around for a long time, but some codepaths
used to always write to the standard output. As a preparatory step
to make "git format-patch" available to the internal callers, these
codepaths have been updated to consistently write into that FILE*
instead.
* Conversion from unsigned char sha1[20] to struct object_id
continues.
* Improve the look of the way "git fetch" reports what happened to
each ref that was fetched.
* The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.
* Code clean-up to avoid using a variable string that compilers may
feel untrustable as printf-style format given to write_file()
helper function.
* "git p4" used a location outside $GIT_DIR/refs/ to place its
temporary branches, which has been moved to refs/git-p4-tmp/.
* Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.
* When "git fsck" reports a broken link (e.g. a tree object contains
a blob that does not exist), both containing object and the object
that is referred to were reported with their 40-hex object names.
The command learned the "--name-objects" option to show the path to
the containing object from existing refs (e.g. "HEAD~24^2:file.txt").
* Allow http daemon tests in Travis CI tests.
* Makefile assumed that -lrt is always available on platforms that
want to use clock_gettime() and CLOCK_MONOTONIC, which is not a
case for recent Mac OS X. The necessary symbols are often found in
libc on many modern systems and having -lrt on the command line, as
long as the library exists, had no effect, but when the platform
removes librt.a that is a different matter--having -lrt will break
the linkage.
This change could be seen as a regression for those who do need to
specify -lrt, as they now specifically ask for NEEDS_LIBRT when
building. Hopefully they are in the minority these days.
* Further preparatory work on the refs API before the pluggable
backend series can land.
* Error handling in the codepaths that updates refs has been
improved.
* The API to iterate over all the refs (i.e. for_each_ref(), etc.)
has been revamped.
* The handling of the "text=auto" attribute has been corrected.
$ echo "* text=auto eol=crlf" >.gitattributes
used to have the same effect as
$ echo "* text eol=crlf" >.gitattributes
i.e. declaring all files are text (ignoring "auto"). The
combination has been fixed to be equivalent to doing
$ git config core.autocrlf true
* Documentation has been updated to show better example usage
of the updated "text=auto" attribute.
* A few tests that specifically target "git rebase -i" have been
added.
* Dumb http transport on the client side has been optimized.
(merge ecba195 ew/http-walker later to maint).
* Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.
* "git fetch" exchanges batched have/ack messages between the sender
and the receiver, initially doubling every time and then falling
back to enlarge the window size linearly. The "smart http"
transport, being an half-duplex protocol, outgrows the preset limit
too quickly and becomes inefficient when interacting with a large
repository. The internal mechanism learned to grow the window size
more aggressively when working with the "smart http" transport.
* Tests for "git svn" have been taught to reuse the lib-httpd test
infrastructure when testing the subversion integration that
interacts with subversion repositories served over the http://
protocol.
(merge a8a5d25 ew/git-svn-http-tests later to maint).
* "git pack-objects" has a few options that tell it not to pack
objects found in certain packfiles, which require it to scan .idx
files of all available packs. The codepaths involved in these
operations have been optimized for a common case of not having any
non-local pack and/or any .kept pack.
* The t3700 test about "add --chmod=-x" have been made a bit more
robust and generally cleaned up.
(merge 766cdc4 ib/t3700-add-chmod-x-updates later to maint).
* The build procedure learned PAGER_ENV knob that lists what default
environment variable settings to export for popular pagers. This
mechanism is used to tweak the default settings to MORE on FreeBSD.
(merge 995bc22 ew/build-time-pager-tweaks later to maint).
* The http-backend (the server-side component of smart-http
transport) used to trickle the HTTP header one at a time. Now
these write(2)s are batched.
(merge b36045c ew/http-backend-batch-headers later to maint).
* When "git rebase" tries to compare set of changes on the updated
upstream and our own branch, it computes patch-id for all of these
changes and attempts to find matches. This has been optimized by
lazily computing the full patch-id (which is expensive) to be
compared only for changes that touch the same set of paths.
(merge b3dfeeb kw/patch-ids-optim later to maint).
* A handful of tests that were broken under gettext-poison build have
been fixed.
* The recent i18n patch we added during this cycle did a bit too much
refactoring of the messages to avoid word-legos; the repetition has
been reduced to help translators.
Also contains various documentation updates and code clean-ups.
Fixes since v2.9
----------------
Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* The commands in `git log` family take %C(auto) in a custom format
string. This unconditionally turned the color on, ignoring
--no-color or with --color=auto when the output is not connected to
a tty; this was corrected to make the format truly behave as
"auto".
* "git rev-list --count" whose walk-length is limited with "-n"
option did not work well with the counting optimized to look at the
bitmap index.
* "git show -W" (extend hunks to cover the entire function, delimited
by lines that match the "funcname" pattern) used to show the entire
file when a change added an entire function at the end of the file,
which has been fixed.
* The documentation set has been updated so that literal commands,
configuration variables and environment variables are consistently
typeset in fixed-width font and bold in manpages.
* "git svn propset" subcommand that was added in 2.3 days is
documented now.
* The documentation tries to consistently spell "GPG"; when
referring to the specific program name, "gpg" is used.
* "git reflog" stopped upon seeing an entry that denotes a branch
creation event (aka "unborn"), which made it appear as if the
reflog was truncated.
* The git-prompt scriptlet (in contrib/) was not friendly with those
who uses "set -u", which has been fixed.
* compat/regex code did not cleanly compile.
* A codepath that used alloca(3) to place an unbounded amount of data
on the stack has been updated to avoid doing so.
* "git update-index --add --chmod=+x file" may be usable as an escape
hatch, but not a friendly thing to force for people who do need to
use it regularly. "git add --chmod=+x file" can be used instead.
* Build improvements for gnome-keyring (in contrib/)
* "git status" used to say "working directory" when it meant "working
tree".
* Comments about misbehaving FreeBSD shells have been clarified with
the version number (9.x and before are broken, newer ones are OK).
* "git cherry-pick A" worked on an unborn branch, but "git
cherry-pick A..B" didn't.
* Fix an unintended regression in v2.9 that breaks "clone --depth"
that recurses down to submodules by forcing the submodules to also
be cloned shallowly, which many server instances that host upstream
of the submodules are not prepared for.
* Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}'
to set the default value, without enclosing it in double quotes.
* Some platform-specific code had non-ANSI strict declarations of C
functions that do not take any parameters, which has been
corrected.
* The internal code used to show local timezone offset is not
prepared to handle timestamps beyond year 2100, and gave a
bogus offset value to the caller. Use a more benign looking
+0000 instead and let "git log" going in such a case, instead
of aborting.
* One among four invocations of readlink(1) in our test suite has
been rewritten so that the test can run on systems without the
command (others are in valgrind test framework and t9802).
* t/perf needs /usr/bin/time with GNU extension; the invocation of it
is updated to "gtime" on Darwin.
* A bug, which caused "git p4" while running under verbose mode to
report paths that are omitted due to branch prefix incorrectly, has
been fixed; the command said "Ignoring file outside of prefix" for
paths that are _inside_.
* The top level documentation "git help git" still pointed at the
documentation set hosted at now-defunct google-code repository.
Update it to point to https://git.github.io/htmldocs/git.html
instead.
* A helper function that takes the contents of a commit object and
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths. Make it ignore leading blank
lines to match.
* For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.
* "gc.autoPackLimit" when set to 1 should not trigger a repacking
when there is only one pack, but the code counted poorly and did
so.
* Add a test to specify the desired behaviour that currently is not
available in "git rebase -Xsubtree=...".
* More mark-up updates to typeset strings that are expected to
literally typed by the end user in fixed-width font.
* "git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.
* "git rebase -i --autostash" did not restore the auto-stashed change
when the operation was aborted.
* Git does not know what the contents in the index should be for a
path added with "git add -N" yet, so "git grep --cached" should not
show hits (or show lack of hits, with -L) in such a path, but that
logic does not apply to "git grep", i.e. searching in the working
tree files. But we did so by mistake, which has been corrected.
* "git blame -M" missed a single line that was moved within the file.
* Fix recently introduced codepaths that are involved in parallel
submodule operations, which gave up on reading too early, and
could have wasted CPU while attempting to write under a corner
case condition.
* "git grep -i" has been taught to fold case in non-ascii locales
correctly.
* A test that unconditionally used "mktemp" learned that the command
is not necessarily available everywhere.
* There are certain house-keeping tasks that need to be performed at
the very beginning of any Git program, and programs that are not
built-in commands had to do them exactly the same way as "git"
potty does. It was easy to make mistakes in one-off standalone
programs (like test helpers). A common "main()" function that
calls cmd_main() of individual program has been introduced to
make it harder to make mistakes.
(merge de61ceb jk/common-main later to maint).
* The test framework learned a new helper test_match_signal to
check an exit code from getting killed by an expected signal.
* General code clean-up around a helper function to write a
single-liner to a file.
(merge 7eb6e10 jk/write-file later to maint).
* One part of "git am" had an oddball helper function that called
stuff from outside "his" as opposed to calling what we have "ours",
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".
* "git blame file" allowed the lineage of lines in the uncommitted,
unadded contents of "file" to be inspected, but it refused when
"file" did not appear in the current commit. When "file" was
created by renaming an existing file (but the change has not been
committed), this restriction was unnecessarily tight.
* "git add -N dir/file && git write-tree" produced an incorrect tree
when there are other paths in the same directory that sorts after
"file".
* "git fetch http://user:pass@host/repo..." scrubbed the userinfo
part, but "git push" didn't.
* "git merge" with renormalization did not work well with
merge-recursive, due to "safer crlf" conversion kicking in when it
shouldn't.
(merge 1335d76 jc/renormalize-merge-kill-safer-crlf later to maint).
* The use of strbuf in "git rm" to build filename to remove was a bit
suboptimal, which has been fixed.
* An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.
* "git notes merge" had a code to see if a path exists (and fails if
it does) and then open the path for writing (when it doesn't).
Replace it with open with O_EXCL.
* "git pack-objects" and "git index-pack" mostly operate with off_t
when talking about the offset of objects in a packfile, but there
were a handful of places that used "unsigned long" to hold that
value, leading to an unintended truncation.
* Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().
* Recent FreeBSD stopped making perl available at /usr/bin/perl;
switch the default the built-in path to /usr/local/bin/perl on not
too ancient FreeBSD releases.
* "git commit --help" said "--no-verify" is only about skipping the
pre-commit hook, and failed to say that it also skipped the
commit-msg hook.
* "git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.
* The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.
* There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.
* "git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.
* Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.
* The reflog output format is documented better, and a new format
--date=unix to report the seconds-since-epoch (without timezone)
has been added.
(merge 442f6fd jk/reflog-date later to maint).
* "git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.
* The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.
* FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.
* Squelch compiler warnings for nedmalloc (in compat/) library.
* A small memory leak in the command line parsing of "git blame"
has been plugged.
* The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.
* Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.
* "git push --force-with-lease" already had enough logic to allow
ensuring that such a push results in creation of a ref (i.e. the
receiving end did not have another push from sideways that would be
discarded by our force-pushing), but didn't expose this possibility
to the users. It does so now.
(merge 9eed4f3 jk/push-force-with-lease-creation later to maint).
* The mechanism to limit the pack window memory size, when packing is
done using multiple threads (which is the default), is per-thread,
but this was not documented clearly.
(merge 954176c ms/document-pack-window-memory-is-per-thread later to maint).
* "import-tars" fast-import script (in contrib/) used to ignore a
hardlink target and replaced it with an empty file, which has been
corrected to record the same blob as the other file the hardlink is
shared with.
(merge 04e0869 js/import-tars-hardlinks later to maint).
* "git mv dir non-existing-dir/" did not work in some environments
the same way as existing mainstream platforms. The code now moves
"dir" to "non-existing-dir", without relying on rename("A", "B/")
that strips the trailing slash of '/'.
(merge 189d035 js/mv-dir-to-new-directory later to maint).
* The "t/" hierarchy is prone to get an unusual pathname; "make test"
has been taught to make sure they do not contain paths that cannot
be checked out on Windows (and the mechanism can be reusable to
catch pathnames that are not portable to other platforms as need
arises).
(merge c2cafd3 js/test-lint-pathname later to maint).
* When "git merge-recursive" works on history with many criss-cross
merges in "verbose" mode, the names the command assigns to the
virtual merge bases could have overwritten each other by unintended
reuse of the same piece of memory.
(merge 5447a76 rs/pull-signed-tag later to maint).
* "git checkout --detach <branch>" used to give the same advice
message as that is issued when "git checkout <tag>" (or anything
that is not a branch name) is given, but asking with "--detach" is
an explicit enough sign that the user knows what is going on. The
advice message has been squelched in this case.
(merge 779b88a sb/checkout-explit-detach-no-advice later to maint).
* "git difftool" by default ignores the error exit from the backend
commands it spawns, because often they signal that they found
differences by exiting with a non-zero status code just like "diff"
does; the exit status codes 126 and above however are special in
that they are used to signal that the command is not executable,
does not exist, or killed by a signal. "git difftool" has been
taught to notice these exit status codes.
(merge 45a4f5d jk/difftool-command-not-found later to maint).
* On Windows, help.browser configuration variable used to be ignored,
which has been corrected.
(merge 6db5967 js/no-html-bypass-on-windows later to maint).
* The "git -c var[=val] cmd" facility to append a configuration
variable definition at the end of the search order was described in
git(1) manual page, but not in git-config(1), which was more likely
place for people to look for when they ask "can I make a one-shot
override, and if so how?"
(merge ae1f709 dg/document-git-c-in-git-config-doc later to maint).
* The tempfile (hence its user lockfile) API lets the caller to open
a file descriptor to a temporary file, write into it and then
finalize it by first closing the filehandle and then either
removing or renaming the temporary file. When the process spawns a
subprocess after obtaining the file descriptor, and if the
subprocess has not exited when the attempt to remove or rename is
made, the last step fails on Windows, because the subprocess has
the file descriptor still open. Open tempfile with O_CLOEXEC flag
to avoid this (on Windows, this is mapped to O_NOINHERIT).
(merge 05d1ed6 bw/mingw-avoid-inheriting-fd-to-lockfile later to maint).
* Other minor clean-ups and documentation updates
(merge 02a8cfa rs/merge-add-strategies-simplification later to maint).
(merge af4941d rs/merge-recursive-string-list-init later to maint).
(merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint).
(merge ddd0bfa jk/tighten-alloc later to maint).
(merge ecf30b2 rs/mailinfo-lib later to maint).
(merge 0eb75ce sg/reflog-past-root later to maint).
(merge 175d38c hv/doc-commit-reference-style later to maint).
----------------------------------------------------------------
Changes since v2.9.0 are as follows:
Alex Henrie (1):
unpack-trees: fix English grammar in do-this-before-that messages
Alexander Hirsch (1):
pull: warn on --verify-signatures with --rebase
Alfred Perlstein (1):
git-svn: document the 'git svn propset' command
Andreas Brauchli (1):
gitweb: escape link body in format_ref_marker
Andrew Oakley (1):
git-p4: correct hasBranchPrefix verbose output
Antoine Queru (1):
upload-pack.c: use parse-options API
Armin Kunaschik (2):
t7800: readlink may not be available
t7610: test for mktemp before test execution
Ben Wijen (2):
t6026-merge-attr: child processes must not inherit index.lock handles
mingw: ensure temporary file handles are not inherited by child processes
Charles Bailey (4):
t7810: fix duplicated test title
t7810-grep.sh: fix duplicated test name
t7810-grep.sh: fix a whitespace inconsistency
grep: fix grepping for "intent to add" files
Chris Packham (1):
completion: add option '--recurse-submodules' to 'git clone'
Christian Couder (50):
builtin/apply: make gitdiff_verify_name() return void
builtin/apply: avoid parameter shadowing 'p_value' global
builtin/apply: avoid parameter shadowing 'linenr' global
builtin/apply: avoid local variable shadowing 'len' parameter
builtin/apply: extract line_by_line_fuzzy_match() from match_fragment()
builtin/apply: move 'options' variable into cmd_apply()
builtin/apply: move 'read_stdin' global into cmd_apply()
builtin/apply: introduce 'struct apply_state' to start libifying
builtin/apply: move 'state' init into init_apply_state()
builtin/apply: move 'unidiff_zero' global into 'struct apply_state'
builtin/apply: move 'check' global into 'struct apply_state'
builtin/apply: move 'check_index' global into 'struct apply_state'
builtin/apply: move 'apply_in_reverse' global into 'struct apply_state'
builtin/apply: move 'apply_with_reject' global into 'struct apply_state'
builtin/apply: move 'apply_verbosely' global into 'struct apply_state'
builtin/apply: move 'update_index' global into 'struct apply_state'
builtin/apply: move 'allow_overlap' global into 'struct apply_state'
builtin/apply: move 'cached' global into 'struct apply_state'
builtin/apply: move 'diffstat' global into 'struct apply_state'
builtin/apply: move 'numstat' global into 'struct apply_state'
builtin/apply: move 'summary' global into 'struct apply_state'
builtin/apply: move 'threeway' global into 'struct apply_state'
builtin/apply: move 'no_add' global into 'struct apply_state'
builtin/apply: move 'unsafe_paths' global into 'struct apply_state'
builtin/apply: move 'line_termination' global into 'struct apply_state'
builtin/apply: move 'fake_ancestor' global into 'struct apply_state'
builtin/apply: move 'p_context' global into 'struct apply_state'
builtin/apply: move 'apply' global into 'struct apply_state'
builtin/apply: move 'patch_input_file' global into 'struct apply_state'
builtin/apply: move 'limit_by_name' global into 'struct apply_state'
builtin/apply: move 'has_include' global into 'struct apply_state'
builtin/apply: move 'p_value' global into 'struct apply_state'
builtin/apply: move 'p_value_known' global into 'struct apply_state'
builtin/apply: move 'root' global into 'struct apply_state'
builtin/apply: move 'whitespace_error' global into 'struct apply_state'
builtin/apply: move 'whitespace_option' into 'struct apply_state'
builtin/apply: remove whitespace_option arg from set_default_whitespace_mode()
builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state'
builtin/apply: move 'applied_after_fixing_ws' into 'struct apply_state'
builtin/apply: move 'ws_error_action' into 'struct apply_state'
builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
builtin/apply: move 'max_change' and 'max_len' into 'struct apply_state'
builtin/apply: move 'state_linenr' global into 'struct apply_state'
builtin/apply: move 'fn_table' global into 'struct apply_state'
builtin/apply: move 'symlink_changes' global into 'struct apply_state'
builtin/apply: move 'state' check into check_apply_state()
builtin/apply: move applying patches into apply_all_patches()
builtin/apply: add 'lock_file' pointer into 'struct apply_state'
builtin/apply: move 'newfd' global into 'struct apply_state'
.mailmap: use Christian Couder's Tuxfamily address
Christopher Layne (1):
git-svn: clone: Fail on missing url argument
Dave Nicolson (1):
Documentation: GPG capitalization
David A. Greene (1):
contrib/subtree: Add a test for subtree rebase that loses commits
David Aguilar (6):
t7900-subtree.sh: fix quoting and broken && chains
subtree: fix "git subtree split --rejoin"
subtree: adjust style to match CodingGuidelines
subtree: adjust function definitions to match CodingGuidelines
difftool: avoid $GIT_DIR and $GIT_WORK_TREE
difftool: use Git::* functions instead of passing around state
David Glasser (1):
doc: mention `git -c` in git-config(1)
David Kastrup (1):
blame: require 0 context lines while finding moved lines with -M
David Turner (3):
refs: allow log-only updates
refs: don't dereference on rename
mailmap: use main email address for dturner
Ed Maste (1):
rebase: update comment about FreeBSD /bin/sh
Edward Thomson (2):
format_commit_message: honor `color=auto` for `%C(auto)`
add: add --chmod=+x / --chmod=-x options
Elia Pinto (2):
http.c: implement the GIT_TRACE_CURL environment variable
imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
Eric Sunshine (1):
blame: drop strdup of string literal
Eric Wong (24):
fast-import: implement unpack limit
daemon: enable SO_KEEPALIVE for all sockets
fast-import: invalidate pack_id references after loosening
pretty: support "mboxrd" output format
mailsplit: support unescaping mboxrd messages
am: support --patch-format=mboxrd
git-svn: skip mergeinfo handling with --no-follow-parent
gc: fix off-by-one error with gc.autoPackLimit
xread: retry after poll on EAGAIN/EWOULDBLOCK
xwrite: poll on non-blocking FDs
git-svn: warn instead of dying when commit data is missing
hoist out handle_nonblock function for xread and xwrite
config.mak.uname: define NEEDS_LIBRT under Linux, for now
http-walker: remove unused parameter from fetch_object
http: avoid disconnecting on 404s for loose objects
http-walker: reduce O(n) ops with doubly-linked list
list: avoid incompatibility with *BSD sys/queue.h
daemon: ignore ENOTSOCK from setsockopt
configure.ac: stronger test for pthread linkage
git-svn: document svn.authorsProg in config
git-svn: allow --version to work anywhere
git svn: migrate tests to use lib-httpd
pager: move pager-specific setup into the build
http-backend: buffer headers before sending
Heiko Becker (1):
gnome-keyring: Don't hard-code pkg-config executable
Heiko Voigt (4):
submodule-config: passing name reference for .gitmodule blobs
submodule-config: combine early return code into one goto
submodule-config: fix test binary crashing when no arguments given
SubmittingPatches: document how to reference previous commits
Ingo Brückl (3):
t3700: remove unwanted leftover files before running new tests
t3700: merge two tests into one
t3700: add a test_mode_in_index helper function
Jacob Keller (1):
completion: add completion for --submodule=* diff option
Jean-Noel Avila (3):
i18n: fix typos for translation
i18n: fix git rebase interactive commit messages
i18n: simplify numeric error reporting
Jeff King (107):
git_config_with_options: drop "found" counting
git_config_parse_parameter: refactor cleanup code
config: set up config_source for command-line config
config: return configset value for current_config_ functions
config: add a notion of "scope"
upload-pack: provide a hook for running pack-objects
rev-list: "adjust" results of "--count --use-bitmap-index -n"
rev-list: disable bitmaps when "-n" is used with listing objects
tree-diff: avoid alloca for large allocations
send-pack: use buffered I/O to talk to pack-objects
parse_opt_string_list: stop allocating new strings
interpret-trailers: don't duplicate option strings
blame,shortlog: don't make local option variables static
use string_list initializer consistently
fetch: document that pruning happens before fetching
repack: document --unpack-unreachable option
repack: add --keep-unreachable option
repack: extend --keep-unreachable to loose objects
add--interactive: respect diff.compactionHeuristic
bisect: always call setup_revisions after init_revisions
gpg-interface: use child_process.args
verify_signed_buffer: drop pbuf variable
verify_signed_buffer: use tempfile object
run-command: add pipe_command helper
verify_signed_buffer: use pipe_command
sign_buffer: use pipe_command
t0006: rename test-date's "show" to "relative"
t0006: test various date formats
local_tzoffset: detect errors from tm_to_time_t
t/perf: fix regression in testing older versions of git
p4211: explicitly disable renames in no-rename test
color: fix max-size comment
doc: refactor description of color format
add skip_prefix_mem helper
color: refactor parse_attr
color: allow "no-" for negating attributes
color: support "italic" attribute
color: support strike-through attribute
t9300: factor out portable "head -c" replacement
t5000: test tar files that overflow ustar headers
archive-tar: write extended headers for file sizes >= 8GB
archive-tar: write extended headers for far-future mtime
archive-tar: drop return value
add an extra level of indirection to main()
common-main: call git_extract_argv0_path()
common-main: call sanitize_stdfds()
common-main: call restore_sigpipe_to_default()
common-main: call git_setup_gettext()
tests: factor portable signal check out of t0005
t0005: use test_match_signal as appropriate
test_must_fail: use test_match_signal
t/lib-git-daemon: use test_match_signal
parse_options: allocate a new array when concatenating
Makefile: drop extra dependencies for test helpers
Makefile: use VCSSVN_LIB to refer to svn library
config: fix bogus fd check when setting up default config
branch: use non-gentle write_file for branch description
write_file: drop "gently" form
write_file: use xopen
write_file: add pointer+len variant
write_file: add format attribute
use write_file_buf where applicable
branch: use write_file_buf instead of write_file
walker: let walker_say take arbitrary formats
avoid using sha1_to_hex output as printf format
push: anonymize URL in status output
t0006: skip "far in the future" test when unsigned long is not long enough
check_everything_connected: always pass --quiet to rev-list
rev-list: add optional progress reporting
check_everything_connected: convert to argv_array
check_everything_connected: use a struct with named options
check_connected: relay errors to alternate descriptor
check_connected: add progress flag
clone: use a real progress meter for connectivity check
index-pack: add flag for showing delta-resolution progress
receive-pack: turn on index-pack resolving progress
receive-pack: relay connectivity errors to sideband
receive-pack: turn on connectivity progress
receive-pack: send keepalives during quiet periods
t5541: fix url scrubbing test when GPG is not set
diff: do not reuse worktree files that need "clean" conversion
contrib/git-jump: fix greedy regex when matching hunks
contrib/git-jump: add whitespace-checking mode
contrib/git-jump: fix typo in README
doc/rev-list-options: clarify "commit@{Nth}" for "-g" option
doc/rev-list-options: explain "-g" output formats
doc/pretty-formats: describe index/time formats for %gd
doc/pretty-formats: explain shortening of %gd
t4205: drop top-level &&-chaining
t4205: indent here documents
date: document and test "raw-local" mode
date: add "unix" format
t/perf: add tests for many-pack scenarios
sha1_file: drop free_pack_by_name
add generic most-recently-used list
find_pack_entry: replace last_found_pack with MRU cache
pack-objects: break out of want_object loop early
pack-objects: compute local/ignore_pack_keep early
am: reset cached ident date for each patch
trace: handle NULL argument in trace_disable()
trace: stop using write_or_whine_pipe()
trace: use warning() for printing trace errors
trace: cosmetic fixes for error messages
trace: correct variable name in write() error message
trace: disable key after write error
write_or_die: drop write_or_whine_pipe()
trace: do not fall back to stderr
Joey Hess (1):
clarify %f documentation
Johannes Schindelin (59):
mingw: let the build succeed with DEVELOPER=1
perf: accommodate for MacOSX
pretty: make the skip_blank_lines() function public
commit.c: make find_commit_subject() more robust
t2300: "git --exec-path" is not usable in $PATH on Windows as-is
log: prepare log/log-tree to reuse the diffopt.close_file attribute
log-tree: respect diffopt's configured output file stream
line-log: respect diffopt's configured output file stream
graph: respect the diffopt.file setting
shortlog: support outputting to streams other than stdout
format-patch: explicitly switch off color when writing to files
format-patch: avoid freopen()
format-patch: use stdout directly
shortlog: respect the --output=<file> setting
t4211: ensure that log respects --output=<file>
color.h: remove obsolete comment about limitations on Windows
diff: do not color output when --color=auto and --output=<file> is given
t3404: fix a grammo (commands are ran -> commands are run)
commit -C: skip blank lines at the beginning of the message
sequencer: use skip_blank_lines() to find the commit subject
reset --hard: skip blank lines when reporting the commit subject
commit -S: avoid invalid pointer with empty message
mingw: declare main()'s argv as const
t3404: add a test for the --gpg-sign option
rebase -i: demonstrate a bug with --autosquash
rebase -i: we allow extra spaces after fixup!/squash!
am: counteract gender bias
diff: demonstrate a bug with --patience and --ignore-space-at-eol
diff: fix a double off-by-one with --ignore-space-at-eol
t/test-lib.sh: fix running tests with --valgrind
mingw: fix the shortlog --output=<file> test
mingw: fix regression in t1308-config-set
fsck: refactor how to describe objects
fsck_walk(): optionally name objects on the go
fsck: give the error function a chance to see the fsck_options
fsck: optionally show more helpful info for broken links
t5520: verify that `pull --rebase` shows the helpful advice when failing
die("bug"): report bugs consistently
die(_("BUG")): avoid translating bug messages
merge-recursive: clarify code in was_tracked()
prepare the builtins for a libified merge_recursive()
merge_recursive: abort properly upon errors
merge-recursive: avoid returning a wholesale struct
merge-recursive: allow write_tree_from_memory() to error out
merge-recursive: handle return values indicating errors
merge-recursive: switch to returning errors instead of dying
am -3: use merge_recursive() directly again
merge-recursive: flush output buffer before printing error messages
merge-recursive: write the commit title in one go
merge-recursive: offer an option to retain the output in 'obuf'
merge_trees(): ensure that the callers release output buffer
merge-recursive: flush output buffer even when erroring out
import-tars: support hard links
t5533: make it pass on case-sensitive filesystems
nedmalloc: fix misleading indentation
git mv: do not keep slash in `git mv dir non-existing-dir/`
t/Makefile: ensure that paths are valid on platforms we care
rev-parse: respect core.hooksPath in --git-path
Revert "display HTML in default browser using Windows' shell API"
Johannes Sixt (7):
Windows: add missing definition of ENOTSOCK
git-submodule: forward exit code of git-submodule--helper more faithfully
submodule-helper: fix indexing in clone retry error reporting path
rebase-interactive: trim leading whitespace from progress count
t4130: work around Windows limitation
config.c: avoid duplicated global static variables
commit-slab.h: avoid duplicated global static variables
John Keeping (5):
difftool: fix argument handling in subdirs
Documentation/git-push: fix placeholder formatting
push: add shorthand for --force-with-lease branch creation
push: allow pushing new branches with --force-with-lease
difftool: always honor fatal error exit codes
Jonathan Nieder (1):
doc: git-htmldocs.googlecode.com is no more
Jonathan Tan (1):
fetch-pack: grow stateless RPC windows exponentially
Jordan DE GEA (1):
worktree: allow "-" short-hand for @{-1} in add command
Josef Kufner (1):
pretty: pass graph width to pretty formatting for use in '%>|(N)'
Josh Triplett (1):
format-patch: format.from gives the default for --from
Junio C Hamano (42):
send-email: detect and offer to skip backup files
pathspec: rename free_pathspec() to clear_pathspec()
t1308: do not get fooled by symbolic links to the source tree
builtin/apply: remove misleading comment on lock_file field
blame, line-log: do not loop around deref_tag()
Start the post-2.9 cycle
clone: do not let --depth imply --shallow-submodules
Start preparing for 2.9.1
Second batch of topics for 2.10
More fixes for 2.9.1
Third batch of topics for 2.10
commit.c: remove print_commit_list()
Fourth batch of topics for 2.10
Git 2.9.1
merge: avoid "safer crlf" during recording of merge results
Fifth batch of topics for 2.10
diff: document diff-filter exclusion
Git 2.9.2
archive-tar: huge offset and future timestamps would not work on 32-bit
Sixth batch of topics for 2.10
grep: further simplify setting the pattern type
Seventh batch of topics for 2.10
date: clarify --date=raw description
Some fixes for 2.9.3
t9100: portability fix
Eighth batch of topics for 2.10
hashmap: clarify that hashmap_entry can safely be discarded
Ninth batch of topics for 2.10
Tenth batch for 2.10
Hopefully final batch for 2.9.3
Eleventh batch for 2.10
Yet another batch for 2.9.3
Twelfth batch for 2.10
Git 2.9.3
Final batch before 2.10-rc0
Git 2.10-rc0
Relnotes: decribe the updates to the "text=auto" attribute
relnotes: redo the description of text=auto fix
RelNotes: final batch of topics before -rc1
Git 2.10-rc1
Prepare for 2.10.0-rc2
Git 2.10-rc2
Keith McGuigan (1):
builtin/fetch.c: don't free remote->name after fetch
Kevin Willford (4):
patch-ids: stop using a hand-rolled hashmap implementation
patch-ids: replace the seen indicator with a commit pointer
patch-ids: add flag to create the diff patch id using header only data
rebase: avoid computing unnecessary patch IDs
LE Manh Cuong (1):
sh-setup: enclose setting of ${VAR=default} in double-quotes
Lars Schneider (2):
git-p4: place temporary refs used for branch import under refs/git-p4-tmp
travis-ci: enable web server tests t55xx on Linux
Lars Vogel (1):
Use "working tree" instead of "working directory" for git status
Linus Torvalds (1):
gpg-interface: prefer "long" key format output when verifying pgp signatures
Lukas Fleischer (4):
receive-pack: send auto-gc output over sideband 2
sideband.c: make send_sideband() return void
upload-pack.c: make send_client_data() return void
sideband.c: refactor recv_sideband()
Matthieu Moy (9):
Documentation/git-mv.txt: fix whitespace indentation
doc: typeset short command-line options as literal
doc: typeset long command-line options as literal
doc: typeset '--' as literal
doc: typeset long options with argument as literal
CodingGuidelines: formatting HEAD in documentation
doc: typeset HEAD and variants as literal
status: suggest 'git merge --abort' when appropriate
git-multimail: update to release 1.4.0
Mehul Jain (3):
t4202: refactor test
log: add "--no-show-signature" command line option
log: add log.showSignature configuration variable
Michael Haggerty (50):
t1404: demonstrate a bug resolving references
commit_ref(): if there is an empty dir in the way, delete it
read_raw_ref(): don't get confused by an empty directory
safe_create_leading_directories(): improve docstring
remove_dir_recursively(): add docstring
refname_is_safe(): use skip_prefix()
refname_is_safe(): don't allow the empty string
refname_is_safe(): insist that the refname already be normalized
commit_ref_update(): write error message to *err, not stderr
rename_ref(): remove unneeded local variable
ref_transaction_commit(): remove local variables n and updates
read_raw_ref(): rename flags argument to type
read_raw_ref(): clear *type at start of function
read_raw_ref(): rename symref argument to referent
read_raw_ref(): improve docstring
read_raw_ref(): move docstring to header file
lock_ref_sha1_basic(): remove unneeded local variable
refs: make error messages more consistent
ref_transaction_create(): disallow recursive pruning
ref_transaction_commit(): correctly report close_ref() failure
delete_branches(): use resolve_refdup()
verify_refname_available(): adjust constness in declaration
add_update(): initialize the whole ref_update
lock_ref_for_update(): new function
unlock_ref(): move definition higher in the file
ref_transaction_update(): check refname_is_safe() at a minimum
refs: resolve symbolic refs first
lock_ref_for_update(): don't re-read non-symbolic references
lock_ref_for_update(): don't resolve symrefs
commit_ref_update(): remove the flags parameter
lock_ref_sha1_basic(): only handle REF_NODEREF mode
refs: remove unnecessary "extern" keywords
do_for_each_ref(): move docstring to the header file
refs: use name "prefix" consistently
delete_refs(): add a flags argument
remote rm: handle symbolic refs correctly
get_ref_cache(): only create an instance if there is a submodule
entry_resolves_to_object(): rename function from ref_resolves_to_object()
ref_resolves_to_object(): new function
refs: introduce an iterator interface
do_for_each_ref(): reimplement using reference iteration
for_each_reflog(): don't abort for bad references
dir_iterator: new API for iterating over a directory tree
for_each_reflog(): reimplement using iterators
t1404: rename file to t1404-update-ref-errors.sh
t1404: remove "prefix" argument to test_update_rejected
t1404: document function test_update_rejected
t1404: add more tests of update-ref error handling
lock_ref_for_update(): make error handling more uniform
lock_ref_for_update(): avoid a symref resolution
Michael J Gruber (7):
cherry-pick: allow to pick to unborn branches
Documentation/technical: describe signature formats
Documentation/technical: signed tag format
Documentation/technical: signed commit format
Documentation/technical: signed merge tag format
gpg-interface: check gpg signature creation status
t/t91*: do not say how to avoid the tests
Michael Stahl (1):
document git-repack interaction of pack.threads and pack.windowMemory
Mike Hommey (2):
blame: allow to blame paths freshly added to the index
t/t8003-blame-corner-cases.sh: Use here documents
Nguyễn Thái Ngọc Duy (47):
completion: support git-worktree
worktree.c: rewrite mark_current_worktree() to avoid strbuf
git-worktree.txt: keep subcommand listing in alphabetical order
worktree.c: use is_dot_or_dotdot()
worktree: avoid 0{40}, too many zeroes, hard to read
worktree: simplify prefixing paths
worktree.c: add find_worktree()
worktree.c: add is_main_worktree()
lib-httpd.sh: print error.log on error
worktree.c: add is_worktree_locked()
pretty.c: support <direction>|(<negative number>) forms
new-command.txt: correct the command description file
grep: break down an "if" stmt in preparation for next changes
test-regex: isolate the bug test code
test-regex: expose full regcomp() to the command line
grep/icase: avoid kwsset on literal non-ascii strings
git-fetch.txt: document fetch output
fetch: refactor ref update status formatting code
fetch: change flag code for displaying tag update and deleted ref
grep/icase: avoid kwsset when -F is specified
grep: rewrite an if/else condition to avoid duplicate expression
grep/pcre: prepare locale-dependent tables for icase matching
gettext: add is_utf8_locale()
grep/pcre: support utf-8
diffcore-pickaxe: Add regcomp_or_die()
diffcore-pickaxe: support case insensitive match on non-ascii
grep.c: reuse "icase" variable
fetch: align all "remote -> local" output
fetch: reduce duplicate in ref update status lines with placeholder
connect: read $GIT_SSH_COMMAND from config file
worktree: add "lock" command
worktree: add "unlock" command
worktree.c: find_worktree() search by path suffix
pack-objects: pass length to check_pack_crc() without truncation
log: decorate HEAD -> branch with the same color for arrow and HEAD
sha1_file.c: use type off_t* for object_info->disk_sizep
index-pack: correct "len" type in unpack_data()
index-pack: report correct bad object offsets even if they are large
index-pack: correct "offset" type in unpack_entry_data()
pack-objects: do not truncate result in-pack object size on 32-bit systems
fsck: use streaming interface for large blobs in pack
test-lib.sh: introduce and use $EMPTY_TREE
test-lib.sh: introduce and use $EMPTY_BLOB
cache-tree.c: fix i-t-a entry skipping directory updates sometimes
cache-tree: do not generate empty trees as a result of all i-t-a subentries
config.mak.uname: correct perl path on FreeBSD
t7063: work around FreeBSD's lazy mtime update feature
Nicolas Pitre (1):
sideband.c: small optimization of strbuf usage
Orgad Shaneh (1):
commit: describe that --no-verify skips the commit-msg hook in the help text
Parker Moore (2):
contrib/persistent-https: update ldflags syntax for Go 1.7+
contrib/persistent-https: use Git version for build label
Patrick Steinhardt (1):
rebase -i: restore autostash on abort
Peter Colberg (2):
refs.h: fix misspelt "occurred" in a comment
config.c: fix misspelt "occurred" in an error message
Pranit Bauva (2):
builtin/commit.c: memoize git-path for COMMIT_EDITMSG
strbuf: describe the return value of strbuf_read_file
Ramsay Jones (2):
regex: fix a SIZE_MAX macro redefinition warning
write_or_die: remove the unused write_or_whine() function
René Scharfe (33):
t4051: rewrite, add more tests
xdiff: factor out match_func_rec()
xdiff: handle appended chunks better with -W
xdiff: ignore empty lines before added functions with -W
xdiff: -W: don't include common trailing empty lines in context
xdiff: don't trim common tail with -W
t7810: add test for grep -W and trailing empty context lines
grep: -W: don't extend context to trailing empty lines
xdiff: fix merging of appended hunk with -W
.gitattributes: set file type for C files
notes-merge: use O_EXCL to avoid overwriting existing files
am: ignore return value of write_file()
rm: reuse strbuf for all remove_dir_recursively() calls
worktree: use strbuf_add_absolute_path() directly
use strbuf_addbuf() for appending a strbuf to another
submodule-config: use explicit empty string instead of strbuf in config_from()
strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
use strbuf_addstr() for adding constant strings to a strbuf
pass constants as first argument to st_mult()
use strbuf_addstr() instead of strbuf_addf() with "%s"
use CHILD_PROCESS_INIT to initialize automatic variables
merge-recursive: use STRING_LIST_INIT_NODUP
merge: use string_list_split() in add_strategies()
nedmalloc: work around overzealous GCC 6 warning
archive-tar: make write_extended_header() void
use strbuf_add_unique_abbrev() for adding short hashes
correct FLEXPTR_* example in comment
mailinfo: recycle strbuf in check_header()
commit: use xstrdup() in get_merge_parent()
commit: factor out set_merge_remote_desc()
merge-recursive: fix verbose output for multiple base trees
commit: use FLEX_ARRAY in struct merge_remote_desc
receive-pack: use FLEX_ALLOC_MEM in queue_command()
Ronald Wampler (1):
Makefile: add NEEDS_LIBRT to optionally link with librt
SZEDER Gábor (2):
reflog: continue walking the reflog past root commits
t1410: remove superfluous 'git reflog' from the 'walk past root' test
Stefan Beller (23):
submodule update: make use of the existing fetch_in_submodule function
submodule-config: keep shallow recommendation around
submodule update: learn `--[no-]recommend-shallow` option
submodule--helper: initial clone learns retry logic
submodule update: continue when a clone fails
t5614: don't use subshells
push options: {pre,post}-receive hook learns about push options
receive-pack: implement advertising and receiving push options
push: accept push options
add a test for push options
Documentation: pack-protocol correct NAK response
submodule deinit: remove outdated comment
t7406: future proof tests with hard coded depth
submodule update: respect depth in subsequent fetches
submodule update: narrow scope of local variable
submodule--helper: fix usage string for relative-path
submodule-config: keep configured branch around
gitmodules: document shallow recommendation
submodule--helper: add remote-branch helper
submodule update: allow '.' for branch value
submodule--helper: use parallel processor correctly
t7406: fix breakage on OSX
checkout: do not mention detach advice for explicit --detach option
Thomas Braun (3):
completion: factor out untracked file modes into a variable
completion: add __git_get_option_value helper
completion: add git status
Tom Russello (4):
doc: clearer rule about formatting literals
doc: change environment variables format
doc: more consistency in environment variables format
doc: change configuration variables format
Torsten Bögershausen (4):
convert: unify the "auto" handling of CRLF
convert: Correct NNO tests and missing `LF will be replaced by CRLF`
git ls-files: text=auto eol=lf is supported in Git 2.10
gitattributes: Document the unified "auto" handling
Vasco Almeida (47):
i18n: builtin/remote.c: fix mark for translation
i18n: advice: mark string about detached head for translation
i18n: advice: internationalize message for conflicts
i18n: transport: mark strings for translation
i18n: sequencer: mark entire sentences for translation
i18n: rebase-interactive: mark here-doc strings for translation
i18n: sequencer: mark string for translation
i18n: rebase-interactive: mark comments of squash for translation
i18n: merge-octopus: mark messages for translation
i18n: setup: mark strings for translation
merge-octopus: use die shell function from git-sh-setup.sh
tests: use test_i18n* functions to suppress false positives
i18n: rebase: fix marked string to use eval_gettext variant
tests: unpack-trees: update to use test_i18n* functions
i18n: rebase: mark placeholder for translation
t9003: become resilient to GETTEXT_POISON
i18n: bisect: simplify error message for i18n
t4153: fix negated test_i18ngrep call
t6030: update to use test_i18ncmp
t5523: use test_i18ngrep for negation
i18n: git-sh-setup.sh: mark strings for translation
i18n: bisect: mark strings for translation
i18n: rebase-interactive: mark strings for translation
i18n: transport-helper.c: change N_() call to _()
i18n: notes: mark strings for translation
i18n: notes: mark options for translation
i18n: merge: mark messages for translation
i18n: merge: change command option help to lowercase
i18n: sequencer: add period to error message
i18n: standardise messages
i18n: remote: mark URL fallback text for translation
i18n: remote: allow translations to reorder message
i18n: init-db: join message pieces
i18n: submodule: join strings marked for translation
i18n: submodule: escape shell variables inside eval_gettext
i18n: unmark die messages for translation
i18n: branch: mark comment when editing branch description for translation
t5541: become resilient to GETTEXT_POISON
t5510: skip tests under GETTEXT_POISON build
i18n: notes: mark comment for translation
i18n: config: unfold error messages marked for translation
i18n: setup: mark error messages for translation
i18n: archive: mark errors for translation
i18n: git-stash: mark messages for translation
t3404: become resilient to GETTEXT_POISON
t5520: become resilient to GETTEXT_POISON
t7411: become resilient to GETTEXT_POISON
Ville Skyttä (3):
git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha
completion: complete --delete, --move, and --remotes for git branch
Spelling fixes
William Duclot (1):
userdiff: add built-in pattern for CSS
brian m. carlson (11):
hex: add oid_to_hex_r()
contrib/coccinelle: add basic Coccinelle transforms
coccinelle: convert hashcpy() with null_sha1 to hashclr()
coccinelle: apply object_id Coccinelle transformations
diff: convert struct diff_filespec to struct object_id
diff: rename struct diff_filespec's sha1_valid member
merge-recursive: convert struct stage_data to use object_id
merge-recursive: convert struct merge_file_info to object_id
merge-recursive: convert leaf functions to use struct object_id
merge-recursive: convert merge_recursive_generic() to object_id
diff: convert prep_temp_blob() to struct object_id
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.10.0-rc1
@ 2016-08-19 23:10 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-08-19 23:10 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.10.0-rc1 is now available for testing
at the usual places. It is comprised of 611 non-merge commits
since v2.9.0, contributed by 68 people, 20 of which are new faces.
Relative to v2.10-0-rc0 (the preview), there is a last-minute merge
of Linus's "Let's show longer fingerprint in the GPG output" patch
(which was a bit scary but I made sure push-certificate codepath
would not be negatively affected), among other small topics.
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.10.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.9.0 are as follows.
Welcome to the Git development community!
Alexander Hirsch, Andreas Brauchli, Andrew Oakley, Antoine
Queru, Christopher Layne, Dave Nicolson, Ed Maste, Heiko Becker,
Ingo Brückl, Jonathan Tan, Jordan DE GEA, Josef Kufner, Keith
McGuigan, Kevin Willford, LE Manh Cuong, Michael Stahl, Parker
Moore, Peter Colberg, Tom Russello, and William Duclot.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alex Henrie, Alfred Perlstein, Armin Kunaschik, brian m. carlson,
Charles Bailey, Chris Packham, Christian Couder, David A. Greene,
David Aguilar, David Kastrup, David Turner, Edward Thomson, Elia
Pinto, Eric Sunshine, Eric Wong, Heiko Voigt, Jacob Keller,
Jeff King, Joey Hess, Johannes Schindelin, Johannes Sixt,
John Keeping, Jonathan Nieder, Josh Triplett, Junio C Hamano,
Lars Schneider, Lars Vogel, Linus Torvalds, Lukas Fleischer,
Matthieu Moy, Mehul Jain, Michael Haggerty, Michael J Gruber,
Mike Hommey, Nguyễn Thái Ngọc Duy, Nicolas Pitre, Orgad
Shaneh, Patrick Steinhardt, Pranit Bauva, Ramsay Jones, René
Scharfe, Ronald Wampler, Stefan Beller, SZEDER Gábor, Thomas
Braun, Torsten Bögershausen, Vasco Almeida, and Ville Skyttä.
----------------------------------------------------------------
Git 2.10 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
Updates since v2.9
------------------
UI, Workflows & Features
* "git pull --rebase --verify-signature" learned to warn the user
that "--verify-signature" is a no-op when rebasing.
* An upstream project can make a recommendation to shallowly clone
some submodules in the .gitmodules file it ships.
* "git worktree add" learned that '-' can be used as a short-hand for
"@{-1}", the previous branch.
* Update the funcname definition to support css files.
* The completion script (in contrib/) learned to complete "git
status" options.
* Messages that are generated by auto gc during "git push" on the
receiving end are now passed back to the sending end in such a way
that they are shown with "remote: " prefix to avoid confusing the
users.
* "git add -i/-p" learned to honor diff.compactionHeuristic
experimental knob, so that the user can work on the same hunk split
as "git diff" output.
* "upload-pack" allows a custom "git pack-objects" replacement when
responding to "fetch/clone" via the uploadpack.packObjectsHook.
(merge b738396 jk/upload-pack-hook later to maint).
* Teach format-patch and mailsplit (hence "am") how a line that
happens to begin with "From " in the e-mail message is quoted with
">", so that these lines can be restored to their original shape.
(merge d9925d1 ew/mboxrd-format-am later to maint).
* "git repack" learned the "--keep-unreachable" option, which sends
loose unreachable objects to a pack instead of leaving them loose.
This helps heuristics based on the number of loose objects
(e.g. "gc --auto").
(merge e26a8c4 jk/repack-keep-unreachable later to maint).
* "log --graph --format=" learned that "%>|(N)" specifies the width
relative to the terminal's left edge, not relative to the area to
draw text that is to the right of the ancestry-graph section. It
also now accepts negative N that means the column limit is relative
to the right border.
* 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.
(merge 531220b jc/send-email-skip-backup later to maint).
* "git submodule update" that drives many "git clone" could
eventually hit flaky servers/network conditions on one of the
submodules; the command learned to retry the attempt.
* The output coloring scheme learned two new attributes, italic and
strike, in addition to existing bold, reverse, etc.
* "git log" learns log.showSignature configuration variable, and a
command line option "--no-show-signature" to countermand it.
(merge fce04c3 mj/log-show-signature-conf later to maint).
* More markings of messages for i18n, with updates to various tests
to pass GETTEXT_POISON tests.
* "git archive" learned to handle files that are larger than 8GB and
commits far in the future than expressible by the traditional US-TAR
format.
(merge 5caeeb8 jk/big-and-future-archive-tar later to maint).
* A new configuration variable core.sshCommand has been added to
specify what value for GIT_SSH_COMMAND to use per repository.
* "git worktree prune" protected worktrees that are marked as
"locked" by creating a file in a known location. "git worktree"
command learned a dedicated command pair to create and remove such
a file, so that the users do not have to do this with editor.
* A handful of "git svn" updates.
* "git push" learned to accept and pass extra options to the
receiving end so that hooks can read and react to them.
* "git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.
* "git jump" script (in contrib/) has been updated a bit.
(merge a91e692 jk/git-jump later to maint).
* "git push" and "git clone" learned to give better progress meters
to the end user who is waiting on the terminal.
* An entry "git log --decorate" for the tip of the current branch is
shown as "HEAD -> name" (where "name" is the name of the branch);
the arrow is now painted in the same color as "HEAD", not in the
color for commits.
* "git format-patch" learned format.from configuration variable to
specify the default settings for its "--from" option.
* "git am -3" calls "git merge-recursive" when it needs to fall back
to a three-way merge; this call has been turned into an internal
subroutine call instead of spawning a separate subprocess.
* The command line completion scripts (in contrib/) now knows about
"git branch --delete/--move [--remote]".
(merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).
* "git rev-parse --git-path hooks/<hook>" learned to take
core.hooksPath configuration variable (introduced during 2.9 cycle)
into account.
(merge 9445b49 ab/hooks later to maint).
* "git log --show-signature" and other commands that display the
verification status of PGP signature now shows the longer key-id,
as 32-bit key-id is so last century.
Performance, Internal Implementation, Development Support etc.
* "git fast-import" learned the same performance trick to avoid
creating too small a packfile as "git fetch" and "git push" have,
using *.unpackLimit configuration.
* When "git daemon" is run without --[init-]timeout specified, a
connection from a client that silently goes offline can hang around
for a long time, wasting resources. The socket-level KEEPALIVE has
been enabled to allow the OS to notice such failed connections.
* "git upload-pack" command has been updated to use the parse-options
API.
* The "git apply" standalone program is being libified; the first
step to move many state variables into a structure that can be
explicitly (re)initialized to make the machinery callable more
than once has been merged.
* HTTP transport gained an option to produce more detailed debugging
trace.
(merge 73e57aa ep/http-curl-trace later to maint).
* Instead of taking advantage of the fact that a struct string_list
that is allocated with all NULs happens to be the INIT_NODUP kind,
the users of string_list structures are taught to initialize them
explicitly as such, to document their behaviour better.
(merge 2721ce2 jk/string-list-static-init later to maint).
* HTTPd tests learned to show the server error log to help diagnosing
a failing tests.
(merge 44f243d nd/test-lib-httpd-show-error-log-in-verbose later to maint).
* The ownership rule for the piece of memory that hold references to
be fetched in "git fetch" was screwy, which has been cleaned up.
* "git bisect" makes an internal call to "git diff-tree" when
bisection finds the culprit, but this call did not initialize the
data structure to pass to the diff-tree API correctly.
* Further preparatory clean-up for "worktree" feature continues.
(merge 0409e0b nd/worktree-cleanup-post-head-protection later to maint).
* Formats of the various data (and how to validate them) where we use
GPG signature have been documented.
* A new run-command API function pipe_command() is introduced to
sanely feed data to the standard input while capturing data from
the standard output and the standard error of an external process,
which is cumbersome to hand-roll correctly without deadlocking.
The codepath to sign data in a prepared buffer with GPG has been
updated to use this API to read from the status-fd to check for
errors (instead of relying on GPG's exit status).
(merge efee955 jk/gpg-interface-cleanup later to maint).
* Allow t/perf framework to use the features from the most recent
version of Git even when testing an older installed version.
* The commands in the "log/diff" family have had an FILE* pointer in the
data structure they pass around for a long time, but some codepaths
used to always write to the standard output. As a preparatory step
to make "git format-patch" available to the internal callers, these
codepaths have been updated to consistently write into that FILE*
instead.
* Conversion from unsigned char sha1[20] to struct object_id
continues.
* Improve the look of the way "git fetch" reports what happened to
each ref that was fetched.
* The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.
* Code clean-up to avoid using a variable string that compilers may
feel untrustable as printf-style format given to write_file()
helper function.
* "git p4" used a location outside $GIT_DIR/refs/ to place its
temporary branches, which has been moved to refs/git-p4-tmp/.
* Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.
* When "git fsck" reports a broken link (e.g. a tree object contains
a blob that does not exist), both containing object and the object
that is referred to were reported with their 40-hex object names.
The command learned the "--name-objects" option to show the path to
the containing object from existing refs (e.g. "HEAD~24^2:file.txt").
* Allow http daemon tests in Travis CI tests.
* Makefile assumed that -lrt is always available on platforms that
want to use clock_gettime() and CLOCK_MONOTONIC, which is not a
case for recent Mac OS X. The necessary symbols are often found in
libc on many modern systems and having -lrt on the command line, as
long as the library exists, had no effect, but when the platform
removes librt.a that is a different matter--having -lrt will break
the linkage.
This change could be seen as a regression for those who do need to
specify -lrt, as they now specifically ask for NEEDS_LIBRT when
building. Hopefully they are in the minority these days.
* Further preparatory work on the refs API before the pluggable
backend series can land.
* Error handling in the codepaths that updates refs has been
improved.
* The API to iterate over all the refs (i.e. for_each_ref(), etc.)
has been revamped.
* The handling of the "text=auto" attribute has been corrected.
$ echo "* text=auto eol=crlf" >.gitattributes
used to have the same effect as
$ echo "* text eol=crlf" >.gitattributes
i.e. declaring all files are text (ignoring "auto"). The
combination has been fixed to be equivalent to doing
$ git config core.autocrlf true
* A few tests that specifically target "git rebase -i" have been
added.
* Dumb http transport on the client side has been optimized.
(merge ecba195 ew/http-walker later to maint).
* Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.
* "git fetch" exchanges batched have/ack messages between the sender
and the receiver, initially doubling every time and then falling
back to enlarge the window size linearly. The "smart http"
transport, being an half-duplex protocol, outgrows the preset limit
too quickly and becomes inefficient when interacting with a large
repository. The internal mechanism learned to grow the window size
more aggressively when working with the "smart http" transport.
* Tests for "git svn" have been taught to reuse the lib-httpd test
infrastructure when testing the subversion integration that
interacts with subversion repositories served over the http://
protocol.
(merge a8a5d25 ew/git-svn-http-tests later to maint).
* "git pack-objects" has a few options that tell it not to pack
objects found in certain packfiles, which require it to scan .idx
files of all available packs. The codepaths involved in these
operations have been optimized for a common case of not having any
non-local pack and/or any .kept pack.
* The t3700 test about "add --chmod=-x" have been made a bit more
robust and generally cleaned up.
(merge 766cdc4 ib/t3700-add-chmod-x-updates later to maint).
* The build procedure learned PAGER_ENV knob that lists what default
environment variable settings to export for popular pagers. This
mechanism is used to tweak the default settings to MORE on FreeBSD.
(merge 995bc22 ew/build-time-pager-tweaks later to maint).
* The http-backend (the server-side component of smart-http
transport) used to trickle the HTTP header one at a time. Now
these write(2)s are batched.
(merge b36045c ew/http-backend-batch-headers later to maint).
* When "git rebase" tries to compare set of changes on the updated
upstream and our own branch, it computes patch-id for all of these
changes and attempts to find matches. This has been optimized by
lazily computing the full patch-id (which is expensive) to be
compared only for changes that touch the same set of paths.
(merge b3dfeeb kw/patch-ids-optim later to maint).
* A handful of tests that were broken under gettext-poison build have
been fixed.
Also contains various documentation updates and code clean-ups.
Fixes since v2.9
----------------
Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* The commands in `git log` family take %C(auto) in a custom format
string. This unconditionally turned the color on, ignoring
--no-color or with --color=auto when the output is not connected to
a tty; this was corrected to make the format truly behave as
"auto".
* "git rev-list --count" whose walk-length is limited with "-n"
option did not work well with the counting optimized to look at the
bitmap index.
* "git show -W" (extend hunks to cover the entire function, delimited
by lines that match the "funcname" pattern) used to show the entire
file when a change added an entire function at the end of the file,
which has been fixed.
* The documentation set has been updated so that literal commands,
configuration variables and environment variables are consistently
typeset in fixed-width font and bold in manpages.
* "git svn propset" subcommand that was added in 2.3 days is
documented now.
* The documentation tries to consistently spell "GPG"; when
referring to the specific program name, "gpg" is used.
* "git reflog" stopped upon seeing an entry that denotes a branch
creation event (aka "unborn"), which made it appear as if the
reflog was truncated.
* The git-prompt scriptlet (in contrib/) was not friendly with those
who uses "set -u", which has been fixed.
* compat/regex code did not cleanly compile.
* A codepath that used alloca(3) to place an unbounded amount of data
on the stack has been updated to avoid doing so.
* "git update-index --add --chmod=+x file" may be usable as an escape
hatch, but not a friendly thing to force for people who do need to
use it regularly. "git add --chmod=+x file" can be used instead.
* Build improvements for gnome-keyring (in contrib/)
* "git status" used to say "working directory" when it meant "working
tree".
* Comments about misbehaving FreeBSD shells have been clarified with
the version number (9.x and before are broken, newer ones are OK).
* "git cherry-pick A" worked on an unborn branch, but "git
cherry-pick A..B" didn't.
* Fix an unintended regression in v2.9 that breaks "clone --depth"
that recurses down to submodules by forcing the submodules to also
be cloned shallowly, which many server instances that host upstream
of the submodules are not prepared for.
* Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}'
to set the default value, without enclosing it in double quotes.
* Some platform-specific code had non-ANSI strict declarations of C
functions that do not take any parameters, which has been
corrected.
* The internal code used to show local timezone offset is not
prepared to handle timestamps beyond year 2100, and gave a
bogus offset value to the caller. Use a more benign looking
+0000 instead and let "git log" going in such a case, instead
of aborting.
* One among four invocations of readlink(1) in our test suite has
been rewritten so that the test can run on systems without the
command (others are in valgrind test framework and t9802).
* t/perf needs /usr/bin/time with GNU extension; the invocation of it
is updated to "gtime" on Darwin.
* A bug, which caused "git p4" while running under verbose mode to
report paths that are omitted due to branch prefix incorrectly, has
been fixed; the command said "Ignoring file outside of prefix" for
paths that are _inside_.
* The top level documentation "git help git" still pointed at the
documentation set hosted at now-defunct google-code repository.
Update it to point to https://git.github.io/htmldocs/git.html
instead.
* A helper function that takes the contents of a commit object and
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths. Make it ignore leading blank
lines to match.
* For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.
* "gc.autoPackLimit" when set to 1 should not trigger a repacking
when there is only one pack, but the code counted poorly and did
so.
* Add a test to specify the desired behaviour that currently is not
available in "git rebase -Xsubtree=...".
* More mark-up updates to typeset strings that are expected to
literally typed by the end user in fixed-width font.
* "git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.
* "git rebase -i --autostash" did not restore the auto-stashed change
when the operation was aborted.
* Git does not know what the contents in the index should be for a
path added with "git add -N" yet, so "git grep --cached" should not
show hits (or show lack of hits, with -L) in such a path, but that
logic does not apply to "git grep", i.e. searching in the working
tree files. But we did so by mistake, which has been corrected.
* "git blame -M" missed a single line that was moved within the file.
* Fix recently introduced codepaths that are involved in parallel
submodule operations, which gave up on reading too early, and
could have wasted CPU while attempting to write under a corner
case condition.
* "git grep -i" has been taught to fold case in non-ascii locales
correctly.
* A test that unconditionally used "mktemp" learned that the command
is not necessarily available everywhere.
* There are certain house-keeping tasks that need to be performed at
the very beginning of any Git program, and programs that are not
built-in commands had to do them exactly the same way as "git"
potty does. It was easy to make mistakes in one-off standalone
programs (like test helpers). A common "main()" function that
calls cmd_main() of individual program has been introduced to
make it harder to make mistakes.
(merge de61ceb jk/common-main later to maint).
* The test framework learned a new helper test_match_signal to
check an exit code from getting killed by an expected signal.
* General code clean-up around a helper function to write a
single-liner to a file.
(merge 7eb6e10 jk/write-file later to maint).
* One part of "git am" had an oddball helper function that called
stuff from outside "his" as opposed to calling what we have "ours",
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".
* "git blame file" allowed the lineage of lines in the uncommitted,
unadded contents of "file" to be inspected, but it refused when
"file" did not appear in the current commit. When "file" was
created by renaming an existing file (but the change has not been
committed), this restriction was unnecessarily tight.
* "git add -N dir/file && git write-tree" produced an incorrect tree
when there are other paths in the same directory that sorts after
"file".
* "git fetch http://user:pass@host/repo..." scrubbed the userinfo
part, but "git push" didn't.
* "git merge" with renormalization did not work well with
merge-recursive, due to "safer crlf" conversion kicking in when it
shouldn't.
(merge 1335d76 jc/renormalize-merge-kill-safer-crlf later to maint).
* The use of strbuf in "git rm" to build filename to remove was a bit
suboptimal, which has been fixed.
* An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.
* "git notes merge" had a code to see if a path exists (and fails if
it does) and then open the path for writing (when it doesn't).
Replace it with open with O_EXCL.
* "git pack-objects" and "git index-pack" mostly operate with off_t
when talking about the offset of objects in a packfile, but there
were a handful of places that used "unsigned long" to hold that
value, leading to an unintended truncation.
* Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().
* Recent FreeBSD stopped making perl available at /usr/bin/perl;
switch the default the built-in path to /usr/local/bin/perl on not
too ancient FreeBSD releases.
* "git commit --help" said "--no-verify" is only about skipping the
pre-commit hook, and failed to say that it also skipped the
commit-msg hook.
* "git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.
* The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.
* There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.
* "git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.
* Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.
* The reflog output format is documented better, and a new format
--date=unix to report the seconds-since-epoch (without timezone)
has been added.
(merge 442f6fd jk/reflog-date later to maint).
* "git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.
* The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.
* FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.
* Squelch compiler warnings for netmalloc (in compat/) library.
* A small memory leak in the command line parsing of "git blame"
has been plugged.
* The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.
* Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.
* "git push --force-with-lease" already had enough logic to allow
ensuring that such a push results in creation of a ref (i.e. the
receiving end did not have another push from sideways that would be
discarded by our force-pushing), but didn't expose this possibility
to the users. It does so now.
(merge 9eed4f3 jk/push-force-with-lease-creation later to maint).
* The mechanism to limit the pack window memory size, when packing is
done using multiple threads (which is the default), is per-thread,
but this was not documented clearly.
(merge 954176c ms/document-pack-window-memory-is-per-thread later to maint).
* "import-tars" fast-import script (in contrib/) used to ignore a
hardlink target and replaced it with an empty file, which has been
corrected to record the same blob as the other file the hardlink is
shared with.
(merge 04e0869 js/import-tars-hardlinks later to maint).
* "git mv dir non-existing-dir/" did not work in some environments
the same way as existing mainstream platforms. The code now moves
"dir" to "non-existing-dir", without relying on rename("A", "B/")
that strips the trailing slash of '/'.
(merge 189d035 js/mv-dir-to-new-directory later to maint).
* The "t/" hierarchy is prone to get an unusual pathname; "make test"
has been taught to make sure they do not contain paths that cannot
be checked out on Windows (and the mechanism can be reusable to
catch pathnames that are not portable to other platforms as need
arises).
(merge c2cafd3 js/test-lint-pathname later to maint).
* When "git merge-recursive" works on history with many criss-cross
merges in "verbose" mode, the names the command assigns to the
virtual merge bases could have overwritten each other by unintended
reuse of the same piece of memory.
(merge 5447a76 rs/pull-signed-tag later to maint).
* "git checkout --detach <branch>" used to give the same advice
message as that is issued when "git checkout <tag>" (or anything
that is not a branch name) is given, but asking with "--detach" is
an explicit enough sign that the user knows what is going on. The
advice message has been squelched in this case.
(merge 779b88a sb/checkout-explit-detach-no-advice later to maint).
* "git difftool" by default ignores the error exit from the backend
commands it spawns, because often they signal that they found
differences by exiting with a non-zero status code just like "diff"
does; the exit status codes 126 and above however are special in
that they are used to signal that the command is not executable,
does not exist, or killed by a signal. "git difftool" has been
taught to notice these exit status codes.
(merge 45a4f5d jk/difftool-command-not-found later to maint).
* Other minor clean-ups and documentation updates
(merge 02a8cfa rs/merge-add-strategies-simplification later to maint).
(merge af4941d rs/merge-recursive-string-list-init later to maint).
(merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint).
(merge ddd0bfa jk/tighten-alloc later to maint).
(merge ecf30b2 rs/mailinfo-lib later to maint).
(merge 0eb75ce sg/reflog-past-root later to maint).
----------------------------------------------------------------
Changes since v2.9.0 are as follows:
Alex Henrie (1):
unpack-trees: fix English grammar in do-this-before-that messages
Alexander Hirsch (1):
pull: warn on --verify-signatures with --rebase
Alfred Perlstein (1):
git-svn: document the 'git svn propset' command
Andreas Brauchli (1):
gitweb: escape link body in format_ref_marker
Andrew Oakley (1):
git-p4: correct hasBranchPrefix verbose output
Antoine Queru (1):
upload-pack.c: use parse-options API
Armin Kunaschik (2):
t7800: readlink may not be available
t7610: test for mktemp before test execution
Charles Bailey (4):
t7810: fix duplicated test title
t7810-grep.sh: fix duplicated test name
t7810-grep.sh: fix a whitespace inconsistency
grep: fix grepping for "intent to add" files
Chris Packham (1):
completion: add option '--recurse-submodules' to 'git clone'
Christian Couder (50):
builtin/apply: make gitdiff_verify_name() return void
builtin/apply: avoid parameter shadowing 'p_value' global
builtin/apply: avoid parameter shadowing 'linenr' global
builtin/apply: avoid local variable shadowing 'len' parameter
builtin/apply: extract line_by_line_fuzzy_match() from match_fragment()
builtin/apply: move 'options' variable into cmd_apply()
builtin/apply: move 'read_stdin' global into cmd_apply()
builtin/apply: introduce 'struct apply_state' to start libifying
builtin/apply: move 'state' init into init_apply_state()
builtin/apply: move 'unidiff_zero' global into 'struct apply_state'
builtin/apply: move 'check' global into 'struct apply_state'
builtin/apply: move 'check_index' global into 'struct apply_state'
builtin/apply: move 'apply_in_reverse' global into 'struct apply_state'
builtin/apply: move 'apply_with_reject' global into 'struct apply_state'
builtin/apply: move 'apply_verbosely' global into 'struct apply_state'
builtin/apply: move 'update_index' global into 'struct apply_state'
builtin/apply: move 'allow_overlap' global into 'struct apply_state'
builtin/apply: move 'cached' global into 'struct apply_state'
builtin/apply: move 'diffstat' global into 'struct apply_state'
builtin/apply: move 'numstat' global into 'struct apply_state'
builtin/apply: move 'summary' global into 'struct apply_state'
builtin/apply: move 'threeway' global into 'struct apply_state'
builtin/apply: move 'no_add' global into 'struct apply_state'
builtin/apply: move 'unsafe_paths' global into 'struct apply_state'
builtin/apply: move 'line_termination' global into 'struct apply_state'
builtin/apply: move 'fake_ancestor' global into 'struct apply_state'
builtin/apply: move 'p_context' global into 'struct apply_state'
builtin/apply: move 'apply' global into 'struct apply_state'
builtin/apply: move 'patch_input_file' global into 'struct apply_state'
builtin/apply: move 'limit_by_name' global into 'struct apply_state'
builtin/apply: move 'has_include' global into 'struct apply_state'
builtin/apply: move 'p_value' global into 'struct apply_state'
builtin/apply: move 'p_value_known' global into 'struct apply_state'
builtin/apply: move 'root' global into 'struct apply_state'
builtin/apply: move 'whitespace_error' global into 'struct apply_state'
builtin/apply: move 'whitespace_option' into 'struct apply_state'
builtin/apply: remove whitespace_option arg from set_default_whitespace_mode()
builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state'
builtin/apply: move 'applied_after_fixing_ws' into 'struct apply_state'
builtin/apply: move 'ws_error_action' into 'struct apply_state'
builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
builtin/apply: move 'max_change' and 'max_len' into 'struct apply_state'
builtin/apply: move 'state_linenr' global into 'struct apply_state'
builtin/apply: move 'fn_table' global into 'struct apply_state'
builtin/apply: move 'symlink_changes' global into 'struct apply_state'
builtin/apply: move 'state' check into check_apply_state()
builtin/apply: move applying patches into apply_all_patches()
builtin/apply: add 'lock_file' pointer into 'struct apply_state'
builtin/apply: move 'newfd' global into 'struct apply_state'
.mailmap: use Christian Couder's Tuxfamily address
Christopher Layne (1):
git-svn: clone: Fail on missing url argument
Dave Nicolson (1):
Documentation: GPG capitalization
David A. Greene (1):
contrib/subtree: Add a test for subtree rebase that loses commits
David Aguilar (6):
t7900-subtree.sh: fix quoting and broken && chains
subtree: fix "git subtree split --rejoin"
subtree: adjust style to match CodingGuidelines
subtree: adjust function definitions to match CodingGuidelines
difftool: avoid $GIT_DIR and $GIT_WORK_TREE
difftool: use Git::* functions instead of passing around state
David Kastrup (1):
blame: require 0 context lines while finding moved lines with -M
David Turner (3):
refs: allow log-only updates
refs: don't dereference on rename
mailmap: use main email address for dturner
Ed Maste (1):
rebase: update comment about FreeBSD /bin/sh
Edward Thomson (2):
format_commit_message: honor `color=auto` for `%C(auto)`
add: add --chmod=+x / --chmod=-x options
Elia Pinto (2):
http.c: implement the GIT_TRACE_CURL environment variable
imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
Eric Sunshine (1):
blame: drop strdup of string literal
Eric Wong (24):
fast-import: implement unpack limit
daemon: enable SO_KEEPALIVE for all sockets
fast-import: invalidate pack_id references after loosening
pretty: support "mboxrd" output format
mailsplit: support unescaping mboxrd messages
am: support --patch-format=mboxrd
git-svn: skip mergeinfo handling with --no-follow-parent
gc: fix off-by-one error with gc.autoPackLimit
xread: retry after poll on EAGAIN/EWOULDBLOCK
xwrite: poll on non-blocking FDs
git-svn: warn instead of dying when commit data is missing
hoist out handle_nonblock function for xread and xwrite
config.mak.uname: define NEEDS_LIBRT under Linux, for now
http-walker: remove unused parameter from fetch_object
http: avoid disconnecting on 404s for loose objects
http-walker: reduce O(n) ops with doubly-linked list
list: avoid incompatibility with *BSD sys/queue.h
daemon: ignore ENOTSOCK from setsockopt
configure.ac: stronger test for pthread linkage
git-svn: document svn.authorsProg in config
git-svn: allow --version to work anywhere
git svn: migrate tests to use lib-httpd
pager: move pager-specific setup into the build
http-backend: buffer headers before sending
Heiko Becker (1):
gnome-keyring: Don't hard-code pkg-config executable
Heiko Voigt (3):
submodule-config: passing name reference for .gitmodule blobs
submodule-config: combine early return code into one goto
submodule-config: fix test binary crashing when no arguments given
Ingo Brückl (3):
t3700: remove unwanted leftover files before running new tests
t3700: merge two tests into one
t3700: add a test_mode_in_index helper function
Jacob Keller (1):
completion: add completion for --submodule=* diff option
Jeff King (107):
git_config_with_options: drop "found" counting
git_config_parse_parameter: refactor cleanup code
config: set up config_source for command-line config
config: return configset value for current_config_ functions
config: add a notion of "scope"
upload-pack: provide a hook for running pack-objects
rev-list: "adjust" results of "--count --use-bitmap-index -n"
rev-list: disable bitmaps when "-n" is used with listing objects
tree-diff: avoid alloca for large allocations
send-pack: use buffered I/O to talk to pack-objects
parse_opt_string_list: stop allocating new strings
interpret-trailers: don't duplicate option strings
blame,shortlog: don't make local option variables static
use string_list initializer consistently
fetch: document that pruning happens before fetching
repack: document --unpack-unreachable option
repack: add --keep-unreachable option
repack: extend --keep-unreachable to loose objects
add--interactive: respect diff.compactionHeuristic
bisect: always call setup_revisions after init_revisions
gpg-interface: use child_process.args
verify_signed_buffer: drop pbuf variable
verify_signed_buffer: use tempfile object
run-command: add pipe_command helper
verify_signed_buffer: use pipe_command
sign_buffer: use pipe_command
t0006: rename test-date's "show" to "relative"
t0006: test various date formats
local_tzoffset: detect errors from tm_to_time_t
t/perf: fix regression in testing older versions of git
p4211: explicitly disable renames in no-rename test
color: fix max-size comment
doc: refactor description of color format
add skip_prefix_mem helper
color: refactor parse_attr
color: allow "no-" for negating attributes
color: support "italic" attribute
color: support strike-through attribute
t9300: factor out portable "head -c" replacement
t5000: test tar files that overflow ustar headers
archive-tar: write extended headers for file sizes >= 8GB
archive-tar: write extended headers for far-future mtime
archive-tar: drop return value
add an extra level of indirection to main()
common-main: call git_extract_argv0_path()
common-main: call sanitize_stdfds()
common-main: call restore_sigpipe_to_default()
common-main: call git_setup_gettext()
tests: factor portable signal check out of t0005
t0005: use test_match_signal as appropriate
test_must_fail: use test_match_signal
t/lib-git-daemon: use test_match_signal
parse_options: allocate a new array when concatenating
Makefile: drop extra dependencies for test helpers
Makefile: use VCSSVN_LIB to refer to svn library
config: fix bogus fd check when setting up default config
branch: use non-gentle write_file for branch description
write_file: drop "gently" form
write_file: use xopen
write_file: add pointer+len variant
write_file: add format attribute
use write_file_buf where applicable
branch: use write_file_buf instead of write_file
walker: let walker_say take arbitrary formats
avoid using sha1_to_hex output as printf format
push: anonymize URL in status output
t0006: skip "far in the future" test when unsigned long is not long enough
check_everything_connected: always pass --quiet to rev-list
rev-list: add optional progress reporting
check_everything_connected: convert to argv_array
check_everything_connected: use a struct with named options
check_connected: relay errors to alternate descriptor
check_connected: add progress flag
clone: use a real progress meter for connectivity check
index-pack: add flag for showing delta-resolution progress
receive-pack: turn on index-pack resolving progress
receive-pack: relay connectivity errors to sideband
receive-pack: turn on connectivity progress
receive-pack: send keepalives during quiet periods
t5541: fix url scrubbing test when GPG is not set
diff: do not reuse worktree files that need "clean" conversion
contrib/git-jump: fix greedy regex when matching hunks
contrib/git-jump: add whitespace-checking mode
contrib/git-jump: fix typo in README
doc/rev-list-options: clarify "commit@{Nth}" for "-g" option
doc/rev-list-options: explain "-g" output formats
doc/pretty-formats: describe index/time formats for %gd
doc/pretty-formats: explain shortening of %gd
t4205: drop top-level &&-chaining
t4205: indent here documents
date: document and test "raw-local" mode
date: add "unix" format
t/perf: add tests for many-pack scenarios
sha1_file: drop free_pack_by_name
add generic most-recently-used list
find_pack_entry: replace last_found_pack with MRU cache
pack-objects: break out of want_object loop early
pack-objects: compute local/ignore_pack_keep early
am: reset cached ident date for each patch
trace: handle NULL argument in trace_disable()
trace: stop using write_or_whine_pipe()
trace: use warning() for printing trace errors
trace: cosmetic fixes for error messages
trace: correct variable name in write() error message
trace: disable key after write error
write_or_die: drop write_or_whine_pipe()
trace: do not fall back to stderr
Joey Hess (1):
clarify %f documentation
Johannes Schindelin (58):
mingw: let the build succeed with DEVELOPER=1
perf: accommodate for MacOSX
pretty: make the skip_blank_lines() function public
commit.c: make find_commit_subject() more robust
t2300: "git --exec-path" is not usable in $PATH on Windows as-is
log: prepare log/log-tree to reuse the diffopt.close_file attribute
log-tree: respect diffopt's configured output file stream
line-log: respect diffopt's configured output file stream
graph: respect the diffopt.file setting
shortlog: support outputting to streams other than stdout
format-patch: explicitly switch off color when writing to files
format-patch: avoid freopen()
format-patch: use stdout directly
shortlog: respect the --output=<file> setting
t4211: ensure that log respects --output=<file>
color.h: remove obsolete comment about limitations on Windows
diff: do not color output when --color=auto and --output=<file> is given
t3404: fix a grammo (commands are ran -> commands are run)
commit -C: skip blank lines at the beginning of the message
sequencer: use skip_blank_lines() to find the commit subject
reset --hard: skip blank lines when reporting the commit subject
commit -S: avoid invalid pointer with empty message
mingw: declare main()'s argv as const
t3404: add a test for the --gpg-sign option
rebase -i: demonstrate a bug with --autosquash
rebase -i: we allow extra spaces after fixup!/squash!
am: counteract gender bias
diff: demonstrate a bug with --patience and --ignore-space-at-eol
diff: fix a double off-by-one with --ignore-space-at-eol
t/test-lib.sh: fix running tests with --valgrind
mingw: fix the shortlog --output=<file> test
mingw: fix regression in t1308-config-set
fsck: refactor how to describe objects
fsck_walk(): optionally name objects on the go
fsck: give the error function a chance to see the fsck_options
fsck: optionally show more helpful info for broken links
t5520: verify that `pull --rebase` shows the helpful advice when failing
die("bug"): report bugs consistently
die(_("BUG")): avoid translating bug messages
merge-recursive: clarify code in was_tracked()
prepare the builtins for a libified merge_recursive()
merge_recursive: abort properly upon errors
merge-recursive: avoid returning a wholesale struct
merge-recursive: allow write_tree_from_memory() to error out
merge-recursive: handle return values indicating errors
merge-recursive: switch to returning errors instead of dying
am -3: use merge_recursive() directly again
merge-recursive: flush output buffer before printing error messages
merge-recursive: write the commit title in one go
merge-recursive: offer an option to retain the output in 'obuf'
merge_trees(): ensure that the callers release output buffer
merge-recursive: flush output buffer even when erroring out
import-tars: support hard links
t5533: make it pass on case-sensitive filesystems
nedmalloc: fix misleading indentation
git mv: do not keep slash in `git mv dir non-existing-dir/`
t/Makefile: ensure that paths are valid on platforms we care
rev-parse: respect core.hooksPath in --git-path
Johannes Sixt (7):
Windows: add missing definition of ENOTSOCK
git-submodule: forward exit code of git-submodule--helper more faithfully
submodule-helper: fix indexing in clone retry error reporting path
rebase-interactive: trim leading whitespace from progress count
t4130: work around Windows limitation
config.c: avoid duplicated global static variables
commit-slab.h: avoid duplicated global static variables
John Keeping (5):
difftool: fix argument handling in subdirs
Documentation/git-push: fix placeholder formatting
push: add shorthand for --force-with-lease branch creation
push: allow pushing new branches with --force-with-lease
difftool: always honor fatal error exit codes
Jonathan Nieder (1):
doc: git-htmldocs.googlecode.com is no more
Jonathan Tan (1):
fetch-pack: grow stateless RPC windows exponentially
Jordan DE GEA (1):
worktree: allow "-" short-hand for @{-1} in add command
Josef Kufner (1):
pretty: pass graph width to pretty formatting for use in '%>|(N)'
Josh Triplett (1):
format-patch: format.from gives the default for --from
Junio C Hamano (40):
send-email: detect and offer to skip backup files
pathspec: rename free_pathspec() to clear_pathspec()
t1308: do not get fooled by symbolic links to the source tree
builtin/apply: remove misleading comment on lock_file field
blame, line-log: do not loop around deref_tag()
Start the post-2.9 cycle
clone: do not let --depth imply --shallow-submodules
Start preparing for 2.9.1
Second batch of topics for 2.10
More fixes for 2.9.1
Third batch of topics for 2.10
commit.c: remove print_commit_list()
Fourth batch of topics for 2.10
Git 2.9.1
merge: avoid "safer crlf" during recording of merge results
Fifth batch of topics for 2.10
diff: document diff-filter exclusion
Git 2.9.2
archive-tar: huge offset and future timestamps would not work on 32-bit
Sixth batch of topics for 2.10
grep: further simplify setting the pattern type
Seventh batch of topics for 2.10
date: clarify --date=raw description
Some fixes for 2.9.3
t9100: portability fix
Eighth batch of topics for 2.10
hashmap: clarify that hashmap_entry can safely be discarded
Ninth batch of topics for 2.10
Tenth batch for 2.10
Hopefully final batch for 2.9.3
Eleventh batch for 2.10
Yet another batch for 2.9.3
Twelfth batch for 2.10
Git 2.9.3
Final batch before 2.10-rc0
Git 2.10-rc0
Relnotes: decribe the updates to the "text=auto" attribute
relnotes: redo the description of text=auto fix
RelNotes: final batch of topics before -rc1
Git 2.10-rc1
Keith McGuigan (1):
builtin/fetch.c: don't free remote->name after fetch
Kevin Willford (4):
patch-ids: stop using a hand-rolled hashmap implementation
patch-ids: replace the seen indicator with a commit pointer
patch-ids: add flag to create the diff patch id using header only data
rebase: avoid computing unnecessary patch IDs
LE Manh Cuong (1):
sh-setup: enclose setting of ${VAR=default} in double-quotes
Lars Schneider (2):
git-p4: place temporary refs used for branch import under refs/git-p4-tmp
travis-ci: enable web server tests t55xx on Linux
Lars Vogel (1):
Use "working tree" instead of "working directory" for git status
Linus Torvalds (1):
gpg-interface: prefer "long" key format output when verifying pgp signatures
Lukas Fleischer (4):
receive-pack: send auto-gc output over sideband 2
sideband.c: make send_sideband() return void
upload-pack.c: make send_client_data() return void
sideband.c: refactor recv_sideband()
Matthieu Moy (9):
Documentation/git-mv.txt: fix whitespace indentation
doc: typeset short command-line options as literal
doc: typeset long command-line options as literal
doc: typeset '--' as literal
doc: typeset long options with argument as literal
CodingGuidelines: formatting HEAD in documentation
doc: typeset HEAD and variants as literal
status: suggest 'git merge --abort' when appropriate
git-multimail: update to release 1.4.0
Mehul Jain (3):
t4202: refactor test
log: add "--no-show-signature" command line option
log: add log.showSignature configuration variable
Michael Haggerty (50):
t1404: demonstrate a bug resolving references
commit_ref(): if there is an empty dir in the way, delete it
read_raw_ref(): don't get confused by an empty directory
safe_create_leading_directories(): improve docstring
remove_dir_recursively(): add docstring
refname_is_safe(): use skip_prefix()
refname_is_safe(): don't allow the empty string
refname_is_safe(): insist that the refname already be normalized
commit_ref_update(): write error message to *err, not stderr
rename_ref(): remove unneeded local variable
ref_transaction_commit(): remove local variables n and updates
read_raw_ref(): rename flags argument to type
read_raw_ref(): clear *type at start of function
read_raw_ref(): rename symref argument to referent
read_raw_ref(): improve docstring
read_raw_ref(): move docstring to header file
lock_ref_sha1_basic(): remove unneeded local variable
refs: make error messages more consistent
ref_transaction_create(): disallow recursive pruning
ref_transaction_commit(): correctly report close_ref() failure
delete_branches(): use resolve_refdup()
verify_refname_available(): adjust constness in declaration
add_update(): initialize the whole ref_update
lock_ref_for_update(): new function
unlock_ref(): move definition higher in the file
ref_transaction_update(): check refname_is_safe() at a minimum
refs: resolve symbolic refs first
lock_ref_for_update(): don't re-read non-symbolic references
lock_ref_for_update(): don't resolve symrefs
commit_ref_update(): remove the flags parameter
lock_ref_sha1_basic(): only handle REF_NODEREF mode
refs: remove unnecessary "extern" keywords
do_for_each_ref(): move docstring to the header file
refs: use name "prefix" consistently
delete_refs(): add a flags argument
remote rm: handle symbolic refs correctly
get_ref_cache(): only create an instance if there is a submodule
entry_resolves_to_object(): rename function from ref_resolves_to_object()
ref_resolves_to_object(): new function
refs: introduce an iterator interface
do_for_each_ref(): reimplement using reference iteration
for_each_reflog(): don't abort for bad references
dir_iterator: new API for iterating over a directory tree
for_each_reflog(): reimplement using iterators
t1404: rename file to t1404-update-ref-errors.sh
t1404: remove "prefix" argument to test_update_rejected
t1404: document function test_update_rejected
t1404: add more tests of update-ref error handling
lock_ref_for_update(): make error handling more uniform
lock_ref_for_update(): avoid a symref resolution
Michael J Gruber (7):
cherry-pick: allow to pick to unborn branches
Documentation/technical: describe signature formats
Documentation/technical: signed tag format
Documentation/technical: signed commit format
Documentation/technical: signed merge tag format
gpg-interface: check gpg signature creation status
t/t91*: do not say how to avoid the tests
Michael Stahl (1):
document git-repack interaction of pack.threads and pack.windowMemory
Mike Hommey (2):
blame: allow to blame paths freshly added to the index
t/t8003-blame-corner-cases.sh: Use here documents
Nguyễn Thái Ngọc Duy (47):
completion: support git-worktree
worktree.c: rewrite mark_current_worktree() to avoid strbuf
git-worktree.txt: keep subcommand listing in alphabetical order
worktree.c: use is_dot_or_dotdot()
worktree: avoid 0{40}, too many zeroes, hard to read
worktree: simplify prefixing paths
worktree.c: add find_worktree()
worktree.c: add is_main_worktree()
lib-httpd.sh: print error.log on error
worktree.c: add is_worktree_locked()
pretty.c: support <direction>|(<negative number>) forms
new-command.txt: correct the command description file
grep: break down an "if" stmt in preparation for next changes
test-regex: isolate the bug test code
test-regex: expose full regcomp() to the command line
grep/icase: avoid kwsset on literal non-ascii strings
git-fetch.txt: document fetch output
fetch: refactor ref update status formatting code
fetch: change flag code for displaying tag update and deleted ref
grep/icase: avoid kwsset when -F is specified
grep: rewrite an if/else condition to avoid duplicate expression
grep/pcre: prepare locale-dependent tables for icase matching
gettext: add is_utf8_locale()
grep/pcre: support utf-8
diffcore-pickaxe: Add regcomp_or_die()
diffcore-pickaxe: support case insensitive match on non-ascii
grep.c: reuse "icase" variable
fetch: align all "remote -> local" output
fetch: reduce duplicate in ref update status lines with placeholder
connect: read $GIT_SSH_COMMAND from config file
worktree: add "lock" command
worktree: add "unlock" command
worktree.c: find_worktree() search by path suffix
pack-objects: pass length to check_pack_crc() without truncation
log: decorate HEAD -> branch with the same color for arrow and HEAD
sha1_file.c: use type off_t* for object_info->disk_sizep
index-pack: correct "len" type in unpack_data()
index-pack: report correct bad object offsets even if they are large
index-pack: correct "offset" type in unpack_entry_data()
pack-objects: do not truncate result in-pack object size on 32-bit systems
fsck: use streaming interface for large blobs in pack
test-lib.sh: introduce and use $EMPTY_TREE
test-lib.sh: introduce and use $EMPTY_BLOB
cache-tree.c: fix i-t-a entry skipping directory updates sometimes
cache-tree: do not generate empty trees as a result of all i-t-a subentries
config.mak.uname: correct perl path on FreeBSD
t7063: work around FreeBSD's lazy mtime update feature
Nicolas Pitre (1):
sideband.c: small optimization of strbuf usage
Orgad Shaneh (1):
commit: describe that --no-verify skips the commit-msg hook in the help text
Parker Moore (2):
contrib/persistent-https: update ldflags syntax for Go 1.7+
contrib/persistent-https: use Git version for build label
Patrick Steinhardt (1):
rebase -i: restore autostash on abort
Peter Colberg (2):
refs.h: fix misspelt "occurred" in a comment
config.c: fix misspelt "occurred" in an error message
Pranit Bauva (2):
builtin/commit.c: memoize git-path for COMMIT_EDITMSG
strbuf: describe the return value of strbuf_read_file
Ramsay Jones (2):
regex: fix a SIZE_MAX macro redefinition warning
write_or_die: remove the unused write_or_whine() function
René Scharfe (33):
t4051: rewrite, add more tests
xdiff: factor out match_func_rec()
xdiff: handle appended chunks better with -W
xdiff: ignore empty lines before added functions with -W
xdiff: -W: don't include common trailing empty lines in context
xdiff: don't trim common tail with -W
t7810: add test for grep -W and trailing empty context lines
grep: -W: don't extend context to trailing empty lines
xdiff: fix merging of appended hunk with -W
.gitattributes: set file type for C files
notes-merge: use O_EXCL to avoid overwriting existing files
am: ignore return value of write_file()
rm: reuse strbuf for all remove_dir_recursively() calls
worktree: use strbuf_add_absolute_path() directly
use strbuf_addbuf() for appending a strbuf to another
submodule-config: use explicit empty string instead of strbuf in config_from()
strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
use strbuf_addstr() for adding constant strings to a strbuf
pass constants as first argument to st_mult()
use strbuf_addstr() instead of strbuf_addf() with "%s"
use CHILD_PROCESS_INIT to initialize automatic variables
merge-recursive: use STRING_LIST_INIT_NODUP
merge: use string_list_split() in add_strategies()
nedmalloc: work around overzealous GCC 6 warning
archive-tar: make write_extended_header() void
use strbuf_add_unique_abbrev() for adding short hashes
correct FLEXPTR_* example in comment
mailinfo: recycle strbuf in check_header()
commit: use xstrdup() in get_merge_parent()
commit: factor out set_merge_remote_desc()
merge-recursive: fix verbose output for multiple base trees
commit: use FLEX_ARRAY in struct merge_remote_desc
receive-pack: use FLEX_ALLOC_MEM in queue_command()
Ronald Wampler (1):
Makefile: add NEEDS_LIBRT to optionally link with librt
SZEDER Gábor (2):
reflog: continue walking the reflog past root commits
t1410: remove superfluous 'git reflog' from the 'walk past root' test
Stefan Beller (23):
submodule update: make use of the existing fetch_in_submodule function
submodule-config: keep shallow recommendation around
submodule update: learn `--[no-]recommend-shallow` option
submodule--helper: initial clone learns retry logic
submodule update: continue when a clone fails
t5614: don't use subshells
push options: {pre,post}-receive hook learns about push options
receive-pack: implement advertising and receiving push options
push: accept push options
add a test for push options
Documentation: pack-protocol correct NAK response
submodule deinit: remove outdated comment
t7406: future proof tests with hard coded depth
submodule update: respect depth in subsequent fetches
submodule update: narrow scope of local variable
submodule--helper: fix usage string for relative-path
submodule-config: keep configured branch around
gitmodules: document shallow recommendation
submodule--helper: add remote-branch helper
submodule update: allow '.' for branch value
submodule--helper: use parallel processor correctly
t7406: fix breakage on OSX
checkout: do not mention detach advice for explicit --detach option
Thomas Braun (3):
completion: factor out untracked file modes into a variable
completion: add __git_get_option_value helper
completion: add git status
Tom Russello (4):
doc: clearer rule about formatting literals
doc: change environment variables format
doc: more consistency in environment variables format
doc: change configuration variables format
Torsten Bögershausen (2):
convert: unify the "auto" handling of CRLF
convert: Correct NNO tests and missing `LF will be replaced by CRLF`
Vasco Almeida (47):
i18n: builtin/remote.c: fix mark for translation
i18n: advice: mark string about detached head for translation
i18n: advice: internationalize message for conflicts
i18n: transport: mark strings for translation
i18n: sequencer: mark entire sentences for translation
i18n: rebase-interactive: mark here-doc strings for translation
i18n: sequencer: mark string for translation
i18n: rebase-interactive: mark comments of squash for translation
i18n: merge-octopus: mark messages for translation
i18n: setup: mark strings for translation
merge-octopus: use die shell function from git-sh-setup.sh
tests: use test_i18n* functions to suppress false positives
i18n: rebase: fix marked string to use eval_gettext variant
tests: unpack-trees: update to use test_i18n* functions
i18n: rebase: mark placeholder for translation
t9003: become resilient to GETTEXT_POISON
i18n: bisect: simplify error message for i18n
t4153: fix negated test_i18ngrep call
t6030: update to use test_i18ncmp
t5523: use test_i18ngrep for negation
i18n: git-sh-setup.sh: mark strings for translation
i18n: bisect: mark strings for translation
i18n: rebase-interactive: mark strings for translation
i18n: transport-helper.c: change N_() call to _()
i18n: notes: mark strings for translation
i18n: notes: mark options for translation
i18n: merge: mark messages for translation
i18n: merge: change command option help to lowercase
i18n: sequencer: add period to error message
i18n: standardise messages
i18n: remote: mark URL fallback text for translation
i18n: remote: allow translations to reorder message
i18n: init-db: join message pieces
i18n: submodule: join strings marked for translation
i18n: submodule: escape shell variables inside eval_gettext
i18n: unmark die messages for translation
i18n: branch: mark comment when editing branch description for translation
t5541: become resilient to GETTEXT_POISON
t5510: skip tests under GETTEXT_POISON build
i18n: notes: mark comment for translation
i18n: config: unfold error messages marked for translation
i18n: setup: mark error messages for translation
i18n: archive: mark errors for translation
i18n: git-stash: mark messages for translation
t3404: become resilient to GETTEXT_POISON
t5520: become resilient to GETTEXT_POISON
t7411: become resilient to GETTEXT_POISON
Ville Skyttä (3):
git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha
completion: complete --delete, --move, and --remotes for git branch
Spelling fixes
William Duclot (1):
userdiff: add built-in pattern for CSS
brian m. carlson (11):
hex: add oid_to_hex_r()
contrib/coccinelle: add basic Coccinelle transforms
coccinelle: convert hashcpy() with null_sha1 to hashclr()
coccinelle: apply object_id Coccinelle transformations
diff: convert struct diff_filespec to struct object_id
diff: rename struct diff_filespec's sha1_valid member
merge-recursive: convert struct stage_data to use object_id
merge-recursive: convert struct merge_file_info to object_id
merge-recursive: convert leaf functions to use struct object_id
merge-recursive: convert merge_recursive_generic() to object_id
diff: convert prep_temp_blob() to struct object_id
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.10.0-rc0
@ 2016-08-14 22:47 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-08-14 22:47 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
An early preview release Git v2.10.0-rc0 is now available for
testing at the usual places. It is comprised of 589 non-merge
commits since v2.9.0, contributed by 67 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.10.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.9.0 are as follows.
Welcome to the Git development community!
Alexander Hirsch, Andreas Brauchli, Andrew Oakley, Antoine
Queru, Christopher Layne, Dave Nicolson, Ed Maste, Heiko Becker,
Ingo Brückl, Jonathan Tan, Jordan DE GEA, Josef Kufner, Keith
McGuigan, Kevin Willford, LE Manh Cuong, Michael Stahl, Parker
Moore, Peter Colberg, Tom Russello, and William Duclot.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alex Henrie, Alfred Perlstein, Armin Kunaschik, brian m. carlson,
Charles Bailey, Chris Packham, Christian Couder, David A. Greene,
David Aguilar, David Kastrup, David Turner, Edward Thomson, Elia
Pinto, Eric Sunshine, Eric Wong, Heiko Voigt, Jacob Keller,
Jeff King, Joey Hess, Johannes Schindelin, Johannes Sixt,
John Keeping, Jonathan Nieder, Josh Triplett, Junio C Hamano,
Lars Schneider, Lars Vogel, Lukas Fleischer, Matthieu Moy,
Mehul Jain, Michael Haggerty, Michael J Gruber, Mike Hommey,
Nguyễn Thái Ngọc Duy, Nicolas Pitre, Orgad Shaneh, Patrick
Steinhardt, Pranit Bauva, Ramsay Jones, René Scharfe, Ronald
Wampler, Stefan Beller, SZEDER Gábor, Thomas Braun, Torsten
Bögershausen, Vasco Almeida, and Ville Skyttä.
----------------------------------------------------------------
Git 2.10 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
Updates since v2.9
------------------
UI, Workflows & Features
* "git pull --rebase --verify-signature" learned to warn the user
that "--verify-signature" is a no-op when rebasing.
* An upstream project can make a recommendation to shallowly clone
some submodules in the .gitmodules file it ships.
* "git worktree add" learned that '-' can be used as a short-hand for
"@{-1}", the previous branch.
* Update the funcname definition to support css files.
* The completion script (in contrib/) learned to complete "git
status" options.
* Messages that are generated by auto gc during "git push" on the
receiving end are now passed back to the sending end in such a way
that they are shown with "remote: " prefix to avoid confusing the
users.
* "git add -i/-p" learned to honor diff.compactionHeuristic
experimental knob, so that the user can work on the same hunk split
as "git diff" output.
* "upload-pack" allows a custom "git pack-objects" replacement when
responding to "fetch/clone" via the uploadpack.packObjectsHook.
(merge b738396 jk/upload-pack-hook later to maint).
* Teach format-patch and mailsplit (hence "am") how a line that
happens to begin with "From " in the e-mail message is quoted with
">", so that these lines can be restored to their original shape.
(merge d9925d1 ew/mboxrd-format-am later to maint).
* "git repack" learned the "--keep-unreachable" option, which sends
loose unreachable objects to a pack instead of leaving them loose.
This helps heuristics based on the number of loose objects
(e.g. "gc --auto").
(merge e26a8c4 jk/repack-keep-unreachable later to maint).
* "log --graph --format=" learned that "%>|(N)" specifies the width
relative to the terminal's left edge, not relative to the area to
draw text that is to the right of the ancestry-graph section. It
also now accepts negative N that means the column limit is relative
to the right border.
* 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.
(merge 531220b jc/send-email-skip-backup later to maint).
* "git submodule update" that drives many "git clone" could
eventually hit flaky servers/network conditions on one of the
submodules; the command learned to retry the attempt.
* The output coloring scheme learned two new attributes, italic and
strike, in addition to existing bold, reverse, etc.
* "git log" learns log.showSignature configuration variable, and a
command line option "--no-show-signature" to countermand it.
(merge fce04c3 mj/log-show-signature-conf later to maint).
* More markings of messages for i18n, with updates to various tests
to pass GETTEXT_POISON tests.
* "git archive" learned to handle files that are larger than 8GB and
commits far in the future than expressible by the traditional US-TAR
format.
(merge 5caeeb8 jk/big-and-future-archive-tar later to maint).
* A new configuration variable core.sshCommand has been added to
specify what value for GIT_SSH_COMMAND to use per repository.
* "git worktree prune" protected worktrees that are marked as
"locked" by creating a file in a known location. "git worktree"
command learned a dedicated command pair to create and remove such
a file, so that the users do not have to do this with editor.
* A handful of "git svn" updates.
* "git push" learned to accept and pass extra options to the
receiving end so that hooks can read and react to them.
* "git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.
* "git jump" script (in contrib/) has been updated a bit.
(merge a91e692 jk/git-jump later to maint).
* "git push" and "git clone" learned to give better progress meters
to the end user who is waiting on the terminal.
* An entry "git log --decorate" for the tip of the current branch is
shown as "HEAD -> name" (where "name" is the name of the branch);
the arrow is now painted in the same color as "HEAD", not in the
color for commits.
* "git format-patch" learned format.from configuration variable to
specify the default settings for its "--from" option.
* "git am -3" calls "git merge-recursive" when it needs to fall back
to a three-way merge; this call has been turned into an internal
subroutine call instead of spawning a separate subprocess.
* The command line completion scripts (in contrib/) now knows about
"git branch --delete/--move [--remote]".
(merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).
Performance, Internal Implementation, Development Support etc.
* "git fast-import" learned the same performance trick to avoid
creating too small a packfile as "git fetch" and "git push" have,
using *.unpackLimit configuration.
* When "git daemon" is run without --[init-]timeout specified, a
connection from a client that silently goes offline can hang around
for a long time, wasting resources. The socket-level KEEPALIVE has
been enabled to allow the OS to notice such failed connections.
* "git upload-pack" command has been updated to use the parse-options
API.
* The "git apply" standalone program is being libified; the first
step to move many state variables into a structure that can be
explicitly (re)initialized to make the machinery callable more
than once has been merged.
* HTTP transport gained an option to produce more detailed debugging
trace.
(merge 73e57aa ep/http-curl-trace later to maint).
* Instead of taking advantage of the fact that a struct string_list
that is allocated with all NULs happens to be the INIT_NODUP kind,
the users of string_list structures are taught to initialize them
explicitly as such, to document their behaviour better.
(merge 2721ce2 jk/string-list-static-init later to maint).
* HTTPd tests learned to show the server error log to help diagnosing
a failing tests.
(merge 44f243d nd/test-lib-httpd-show-error-log-in-verbose later to maint).
* The ownership rule for the piece of memory that hold references to
be fetched in "git fetch" was screwy, which has been cleaned up.
* "git bisect" makes an internal call to "git diff-tree" when
bisection finds the culprit, but this call did not initialize the
data structure to pass to the diff-tree API correctly.
* Further preparatory clean-up for "worktree" feature continues.
(merge 0409e0b nd/worktree-cleanup-post-head-protection later to maint).
* Formats of the various data (and how to validate them) where we use
GPG signature have been documented.
* A new run-command API function pipe_command() is introduced to
sanely feed data to the standard input while capturing data from
the standard output and the standard error of an external process,
which is cumbersome to hand-roll correctly without deadlocking.
The codepath to sign data in a prepared buffer with GPG has been
updated to use this API to read from the status-fd to check for
errors (instead of relying on GPG's exit status).
(merge efee955 jk/gpg-interface-cleanup later to maint).
* Allow t/perf framework to use the features from the most recent
version of Git even when testing an older installed version.
* The commands in the "log/diff" family have had an FILE* pointer in the
data structure they pass around for a long time, but some codepaths
used to always write to the standard output. As a preparatory step
to make "git format-patch" available to the internal callers, these
codepaths have been updated to consistently write into that FILE*
instead.
* Conversion from unsigned char sha1[20] to struct object_id
continues.
* Improve the look of the way "git fetch" reports what happened to
each ref that was fetched.
* The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.
* Code clean-up to avoid using a variable string that compilers may
feel untrustable as printf-style format given to write_file()
helper function.
* "git p4" used a location outside $GIT_DIR/refs/ to place its
temporary branches, which has been moved to refs/git-p4-tmp/.
* Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.
* When "git fsck" reports a broken link (e.g. a tree object contains
a blob that does not exist), both containing object and the object
that is referred to were reported with their 40-hex object names.
The command learned the "--name-objects" option to show the path to
the containing object from existing refs (e.g. "HEAD~24^2:file.txt").
* Allow http daemon tests in Travis CI tests.
* Makefile assumed that -lrt is always available on platforms that
want to use clock_gettime() and CLOCK_MONOTONIC, which is not a
case for recent Mac OS X. The necessary symbols are often found in
libc on many modern systems and having -lrt on the command line, as
long as the library exists, had no effect, but when the platform
removes librt.a that is a different matter--having -lrt will break
the linkage.
This change could be seen as a regression for those who do need to
specify -lrt, as they now specifically ask for NEEDS_LIBRT when
building. Hopefully they are in the minority these days.
* Further preparatory work on the refs API before the pluggable
backend series can land.
* Error handling in the codepaths that updates refs has been
improved.
* The API to iterate over all the refs (i.e. for_each_ref(), etc.)
has been revamped.
* A few tests that specifically target "git rebase -i" have been
added.
* Dumb http transport on the client side has been optimized.
(merge ecba195 ew/http-walker later to maint).
* Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.
* "git fetch" exchanges batched have/ack messages between the sender
and the receiver, initially doubling every time and then falling
back to enlarge the window size linearly. The "smart http"
transport, being an half-duplex protocol, outgrows the preset limit
too quickly and becomes inefficient when interacting with a large
repository. The internal mechanism learned to grow the window size
more aggressively when working with the "smart http" transport.
* Tests for "git svn" have been taught to reuse the lib-httpd test
infrastructure when testing the subversion integration that
interacts with subversion repositories served over the http://
protocol.
(merge a8a5d25 ew/git-svn-http-tests later to maint).
* "git pack-objects" has a few options that tell it not to pack
objects found in certain packfiles, which require it to scan .idx
files of all available packs. The codepaths involved in these
operations have been optimized for a common case of not having any
non-local pack and/or any .kept pack.
* The t3700 test about "add --chmod=-x" have been made a bit more
robust and generally cleaned up.
(merge 766cdc4 ib/t3700-add-chmod-x-updates later to maint).
* The build procedure learned PAGER_ENV knob that lists what default
environment variable settings to export for popular pagers. This
mechanism is used to tweak the default settings to MORE on FreeBSD.
(merge 995bc22 ew/build-time-pager-tweaks later to maint).
* The http-backend (the server-side component of smart-http
transport) used to trickle the HTTP header one at a time. Now
these write(2)s are batched.
(merge b36045c ew/http-backend-batch-headers later to maint).
* When "git rebase" tries to compare set of changes on the updated
upstream and our own branch, it computes patch-id for all of these
changes and attempts to find matches. This has been optimized by
lazily computing the full patch-id (which is expensive) to be
compared only for changes that touch the same set of paths.
(merge b3dfeeb kw/patch-ids-optim later to maint).
Also contains various documentation updates and code clean-ups.
Fixes since v2.9
----------------
Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* The commands in `git log` family take %C(auto) in a custom format
string. This unconditionally turned the color on, ignoring
--no-color or with --color=auto when the output is not connected to
a tty; this was corrected to make the format truly behave as
"auto".
* "git rev-list --count" whose walk-length is limited with "-n"
option did not work well with the counting optimized to look at the
bitmap index.
* "git show -W" (extend hunks to cover the entire function, delimited
by lines that match the "funcname" pattern) used to show the entire
file when a change added an entire function at the end of the file,
which has been fixed.
* The documentation set has been updated so that literal commands,
configuration variables and environment variables are consistently
typeset in fixed-width font and bold in manpages.
* "git svn propset" subcommand that was added in 2.3 days is
documented now.
* The documentation tries to consistently spell "GPG"; when
referring to the specific program name, "gpg" is used.
* "git reflog" stopped upon seeing an entry that denotes a branch
creation event (aka "unborn"), which made it appear as if the
reflog was truncated.
* The git-prompt scriptlet (in contrib/) was not friendly with those
who uses "set -u", which has been fixed.
* compat/regex code did not cleanly compile.
* A codepath that used alloca(3) to place an unbounded amount of data
on the stack has been updated to avoid doing so.
* "git update-index --add --chmod=+x file" may be usable as an escape
hatch, but not a friendly thing to force for people who do need to
use it regularly. "git add --chmod=+x file" can be used instead.
* Build improvements for gnome-keyring (in contrib/)
* "git status" used to say "working directory" when it meant "working
tree".
* Comments about misbehaving FreeBSD shells have been clarified with
the version number (9.x and before are broken, newer ones are OK).
* "git cherry-pick A" worked on an unborn branch, but "git
cherry-pick A..B" didn't.
* Fix an unintended regression in v2.9 that breaks "clone --depth"
that recurses down to submodules by forcing the submodules to also
be cloned shallowly, which many server instances that host upstream
of the submodules are not prepared for.
* Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}'
to set the default value, without enclosing it in double quotes.
* Some platform-specific code had non-ANSI strict declarations of C
functions that do not take any parameters, which has been
corrected.
* The internal code used to show local timezone offset is not
prepared to handle timestamps beyond year 2100, and gave a
bogus offset value to the caller. Use a more benign looking
+0000 instead and let "git log" going in such a case, instead
of aborting.
* One among four invocations of readlink(1) in our test suite has
been rewritten so that the test can run on systems without the
command (others are in valgrind test framework and t9802).
* t/perf needs /usr/bin/time with GNU extension; the invocation of it
is updated to "gtime" on Darwin.
* A bug, which caused "git p4" while running under verbose mode to
report paths that are omitted due to branch prefix incorrectly, has
been fixed; the command said "Ignoring file outside of prefix" for
paths that are _inside_.
* The top level documentation "git help git" still pointed at the
documentation set hosted at now-defunct google-code repository.
Update it to point to https://git.github.io/htmldocs/git.html
instead.
* A helper function that takes the contents of a commit object and
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths. Make it ignore leading blank
lines to match.
* For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.
* "gc.autoPackLimit" when set to 1 should not trigger a repacking
when there is only one pack, but the code counted poorly and did
so.
* Add a test to specify the desired behaviour that currently is not
available in "git rebase -Xsubtree=...".
* More mark-up updates to typeset strings that are expected to
literally typed by the end user in fixed-width font.
* "git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.
* "git rebase -i --autostash" did not restore the auto-stashed change
when the operation was aborted.
* Git does not know what the contents in the index should be for a
path added with "git add -N" yet, so "git grep --cached" should not
show hits (or show lack of hits, with -L) in such a path, but that
logic does not apply to "git grep", i.e. searching in the working
tree files. But we did so by mistake, which has been corrected.
* "git blame -M" missed a single line that was moved within the file.
* Fix recently introduced codepaths that are involved in parallel
submodule operations, which gave up on reading too early, and
could have wasted CPU while attempting to write under a corner
case condition.
* "git grep -i" has been taught to fold case in non-ascii locales
correctly.
* A test that unconditionally used "mktemp" learned that the command
is not necessarily available everywhere.
* There are certain house-keeping tasks that need to be performed at
the very beginning of any Git program, and programs that are not
built-in commands had to do them exactly the same way as "git"
potty does. It was easy to make mistakes in one-off standalone
programs (like test helpers). A common "main()" function that
calls cmd_main() of individual program has been introduced to
make it harder to make mistakes.
(merge de61ceb jk/common-main later to maint).
* The test framework learned a new helper test_match_signal to
check an exit code from getting killed by an expected signal.
* General code clean-up around a helper function to write a
single-liner to a file.
(merge 7eb6e10 jk/write-file later to maint).
* One part of "git am" had an oddball helper function that called
stuff from outside "his" as opposed to calling what we have "ours",
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".
* "git blame file" allowed the lineage of lines in the uncommitted,
unadded contents of "file" to be inspected, but it refused when
"file" did not appear in the current commit. When "file" was
created by renaming an existing file (but the change has not been
committed), this restriction was unnecessarily tight.
* "git add -N dir/file && git write-tree" produced an incorrect tree
when there are other paths in the same directory that sorts after
"file".
* "git fetch http://user:pass@host/repo..." scrubbed the userinfo
part, but "git push" didn't.
* "git merge" with renormalization did not work well with
merge-recursive, due to "safer crlf" conversion kicking in when it
shouldn't.
(merge 1335d76 jc/renormalize-merge-kill-safer-crlf later to maint).
* The use of strbuf in "git rm" to build filename to remove was a bit
suboptimal, which has been fixed.
* An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.
* "git notes merge" had a code to see if a path exists (and fails if
it does) and then open the path for writing (when it doesn't).
Replace it with open with O_EXCL.
* "git pack-objects" and "git index-pack" mostly operate with off_t
when talking about the offset of objects in a packfile, but there
were a handful of places that used "unsigned long" to hold that
value, leading to an unintended truncation.
* Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().
* Recent FreeBSD stopped making perl available at /usr/bin/perl;
switch the default the built-in path to /usr/local/bin/perl on not
too ancient FreeBSD releases.
* "git commit --help" said "--no-verify" is only about skipping the
pre-commit hook, and failed to say that it also skipped the
commit-msg hook.
* "git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.
* The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.
* There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.
* "git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.
* Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.
* The reflog output format is documented better, and a new format
--date=unix to report the seconds-since-epoch (without timezone)
has been added.
(merge 442f6fd jk/reflog-date later to maint).
* "git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.
* The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.
* FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.
* Squelch compiler warnings for netmalloc (in compat/) library.
* A small memory leak in the command line parsing of "git blame"
has been plugged.
* The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.
* Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.
* "git push --force-with-lease" already had enough logic to allow
ensuring that such a push results in creation of a ref (i.e. the
receiving end did not have another push from sideways that would be
discarded by our force-pushing), but didn't expose this possibility
to the users. It does so now.
(merge 9eed4f3 jk/push-force-with-lease-creation later to maint).
* The mechanism to limit the pack window memory size, when packing is
done using multiple threads (which is the default), is per-thread,
but this was not documented clearly.
(merge 954176c ms/document-pack-window-memory-is-per-thread later to maint).
* "import-tars" fast-import script (in contrib/) used to ignore a
hardlink target and replaced it with an empty file, which has been
corrected to record the same blob as the other file the hardlink is
shared with.
(merge 04e0869 js/import-tars-hardlinks later to maint).
* "git mv dir non-existing-dir/" did not work in some environments
the same way as existing mainstream platforms. The code now moves
"dir" to "non-existing-dir", without relying on rename("A", "B/")
that strips the trailing slash of '/'.
(merge 189d035 js/mv-dir-to-new-directory later to maint).
* Other minor clean-ups and documentation updates
(merge 02a8cfa rs/merge-add-strategies-simplification later to maint).
(merge af4941d rs/merge-recursive-string-list-init later to maint).
(merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint).
----------------------------------------------------------------
Changes since v2.9.0 are as follows:
Alex Henrie (1):
unpack-trees: fix English grammar in do-this-before-that messages
Alexander Hirsch (1):
pull: warn on --verify-signatures with --rebase
Alfred Perlstein (1):
git-svn: document the 'git svn propset' command
Andreas Brauchli (1):
gitweb: escape link body in format_ref_marker
Andrew Oakley (1):
git-p4: correct hasBranchPrefix verbose output
Antoine Queru (1):
upload-pack.c: use parse-options API
Armin Kunaschik (2):
t7800: readlink may not be available
t7610: test for mktemp before test execution
Charles Bailey (4):
t7810: fix duplicated test title
t7810-grep.sh: fix duplicated test name
t7810-grep.sh: fix a whitespace inconsistency
grep: fix grepping for "intent to add" files
Chris Packham (1):
completion: add option '--recurse-submodules' to 'git clone'
Christian Couder (50):
builtin/apply: make gitdiff_verify_name() return void
builtin/apply: avoid parameter shadowing 'p_value' global
builtin/apply: avoid parameter shadowing 'linenr' global
builtin/apply: avoid local variable shadowing 'len' parameter
builtin/apply: extract line_by_line_fuzzy_match() from match_fragment()
builtin/apply: move 'options' variable into cmd_apply()
builtin/apply: move 'read_stdin' global into cmd_apply()
builtin/apply: introduce 'struct apply_state' to start libifying
builtin/apply: move 'state' init into init_apply_state()
builtin/apply: move 'unidiff_zero' global into 'struct apply_state'
builtin/apply: move 'check' global into 'struct apply_state'
builtin/apply: move 'check_index' global into 'struct apply_state'
builtin/apply: move 'apply_in_reverse' global into 'struct apply_state'
builtin/apply: move 'apply_with_reject' global into 'struct apply_state'
builtin/apply: move 'apply_verbosely' global into 'struct apply_state'
builtin/apply: move 'update_index' global into 'struct apply_state'
builtin/apply: move 'allow_overlap' global into 'struct apply_state'
builtin/apply: move 'cached' global into 'struct apply_state'
builtin/apply: move 'diffstat' global into 'struct apply_state'
builtin/apply: move 'numstat' global into 'struct apply_state'
builtin/apply: move 'summary' global into 'struct apply_state'
builtin/apply: move 'threeway' global into 'struct apply_state'
builtin/apply: move 'no_add' global into 'struct apply_state'
builtin/apply: move 'unsafe_paths' global into 'struct apply_state'
builtin/apply: move 'line_termination' global into 'struct apply_state'
builtin/apply: move 'fake_ancestor' global into 'struct apply_state'
builtin/apply: move 'p_context' global into 'struct apply_state'
builtin/apply: move 'apply' global into 'struct apply_state'
builtin/apply: move 'patch_input_file' global into 'struct apply_state'
builtin/apply: move 'limit_by_name' global into 'struct apply_state'
builtin/apply: move 'has_include' global into 'struct apply_state'
builtin/apply: move 'p_value' global into 'struct apply_state'
builtin/apply: move 'p_value_known' global into 'struct apply_state'
builtin/apply: move 'root' global into 'struct apply_state'
builtin/apply: move 'whitespace_error' global into 'struct apply_state'
builtin/apply: move 'whitespace_option' into 'struct apply_state'
builtin/apply: remove whitespace_option arg from set_default_whitespace_mode()
builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state'
builtin/apply: move 'applied_after_fixing_ws' into 'struct apply_state'
builtin/apply: move 'ws_error_action' into 'struct apply_state'
builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
builtin/apply: move 'max_change' and 'max_len' into 'struct apply_state'
builtin/apply: move 'state_linenr' global into 'struct apply_state'
builtin/apply: move 'fn_table' global into 'struct apply_state'
builtin/apply: move 'symlink_changes' global into 'struct apply_state'
builtin/apply: move 'state' check into check_apply_state()
builtin/apply: move applying patches into apply_all_patches()
builtin/apply: add 'lock_file' pointer into 'struct apply_state'
builtin/apply: move 'newfd' global into 'struct apply_state'
.mailmap: use Christian Couder's Tuxfamily address
Christopher Layne (1):
git-svn: clone: Fail on missing url argument
Dave Nicolson (1):
Documentation: GPG capitalization
David A. Greene (1):
contrib/subtree: Add a test for subtree rebase that loses commits
David Aguilar (6):
t7900-subtree.sh: fix quoting and broken && chains
subtree: fix "git subtree split --rejoin"
subtree: adjust style to match CodingGuidelines
subtree: adjust function definitions to match CodingGuidelines
difftool: avoid $GIT_DIR and $GIT_WORK_TREE
difftool: use Git::* functions instead of passing around state
David Kastrup (1):
blame: require 0 context lines while finding moved lines with -M
David Turner (3):
refs: allow log-only updates
refs: don't dereference on rename
mailmap: use main email address for dturner
Ed Maste (1):
rebase: update comment about FreeBSD /bin/sh
Edward Thomson (2):
format_commit_message: honor `color=auto` for `%C(auto)`
add: add --chmod=+x / --chmod=-x options
Elia Pinto (2):
http.c: implement the GIT_TRACE_CURL environment variable
imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
Eric Sunshine (1):
blame: drop strdup of string literal
Eric Wong (24):
fast-import: implement unpack limit
daemon: enable SO_KEEPALIVE for all sockets
fast-import: invalidate pack_id references after loosening
pretty: support "mboxrd" output format
mailsplit: support unescaping mboxrd messages
am: support --patch-format=mboxrd
git-svn: skip mergeinfo handling with --no-follow-parent
gc: fix off-by-one error with gc.autoPackLimit
xread: retry after poll on EAGAIN/EWOULDBLOCK
xwrite: poll on non-blocking FDs
git-svn: warn instead of dying when commit data is missing
hoist out handle_nonblock function for xread and xwrite
config.mak.uname: define NEEDS_LIBRT under Linux, for now
http-walker: remove unused parameter from fetch_object
http: avoid disconnecting on 404s for loose objects
http-walker: reduce O(n) ops with doubly-linked list
list: avoid incompatibility with *BSD sys/queue.h
daemon: ignore ENOTSOCK from setsockopt
configure.ac: stronger test for pthread linkage
git-svn: document svn.authorsProg in config
git-svn: allow --version to work anywhere
git svn: migrate tests to use lib-httpd
pager: move pager-specific setup into the build
http-backend: buffer headers before sending
Heiko Becker (1):
gnome-keyring: Don't hard-code pkg-config executable
Heiko Voigt (3):
submodule-config: passing name reference for .gitmodule blobs
submodule-config: combine early return code into one goto
submodule-config: fix test binary crashing when no arguments given
Ingo Brückl (3):
t3700: remove unwanted leftover files before running new tests
t3700: merge two tests into one
t3700: add a test_mode_in_index helper function
Jacob Keller (1):
completion: add completion for --submodule=* diff option
Jeff King (107):
git_config_with_options: drop "found" counting
git_config_parse_parameter: refactor cleanup code
config: set up config_source for command-line config
config: return configset value for current_config_ functions
config: add a notion of "scope"
upload-pack: provide a hook for running pack-objects
rev-list: "adjust" results of "--count --use-bitmap-index -n"
rev-list: disable bitmaps when "-n" is used with listing objects
tree-diff: avoid alloca for large allocations
send-pack: use buffered I/O to talk to pack-objects
parse_opt_string_list: stop allocating new strings
interpret-trailers: don't duplicate option strings
blame,shortlog: don't make local option variables static
use string_list initializer consistently
fetch: document that pruning happens before fetching
repack: document --unpack-unreachable option
repack: add --keep-unreachable option
repack: extend --keep-unreachable to loose objects
add--interactive: respect diff.compactionHeuristic
bisect: always call setup_revisions after init_revisions
gpg-interface: use child_process.args
verify_signed_buffer: drop pbuf variable
verify_signed_buffer: use tempfile object
run-command: add pipe_command helper
verify_signed_buffer: use pipe_command
sign_buffer: use pipe_command
t0006: rename test-date's "show" to "relative"
t0006: test various date formats
local_tzoffset: detect errors from tm_to_time_t
t/perf: fix regression in testing older versions of git
p4211: explicitly disable renames in no-rename test
color: fix max-size comment
doc: refactor description of color format
add skip_prefix_mem helper
color: refactor parse_attr
color: allow "no-" for negating attributes
color: support "italic" attribute
color: support strike-through attribute
t9300: factor out portable "head -c" replacement
t5000: test tar files that overflow ustar headers
archive-tar: write extended headers for file sizes >= 8GB
archive-tar: write extended headers for far-future mtime
archive-tar: drop return value
add an extra level of indirection to main()
common-main: call git_extract_argv0_path()
common-main: call sanitize_stdfds()
common-main: call restore_sigpipe_to_default()
common-main: call git_setup_gettext()
tests: factor portable signal check out of t0005
t0005: use test_match_signal as appropriate
test_must_fail: use test_match_signal
t/lib-git-daemon: use test_match_signal
parse_options: allocate a new array when concatenating
Makefile: drop extra dependencies for test helpers
Makefile: use VCSSVN_LIB to refer to svn library
config: fix bogus fd check when setting up default config
branch: use non-gentle write_file for branch description
write_file: drop "gently" form
write_file: use xopen
write_file: add pointer+len variant
write_file: add format attribute
use write_file_buf where applicable
branch: use write_file_buf instead of write_file
walker: let walker_say take arbitrary formats
avoid using sha1_to_hex output as printf format
push: anonymize URL in status output
t0006: skip "far in the future" test when unsigned long is not long enough
check_everything_connected: always pass --quiet to rev-list
rev-list: add optional progress reporting
check_everything_connected: convert to argv_array
check_everything_connected: use a struct with named options
check_connected: relay errors to alternate descriptor
check_connected: add progress flag
clone: use a real progress meter for connectivity check
index-pack: add flag for showing delta-resolution progress
receive-pack: turn on index-pack resolving progress
receive-pack: relay connectivity errors to sideband
receive-pack: turn on connectivity progress
receive-pack: send keepalives during quiet periods
t5541: fix url scrubbing test when GPG is not set
diff: do not reuse worktree files that need "clean" conversion
contrib/git-jump: fix greedy regex when matching hunks
contrib/git-jump: add whitespace-checking mode
contrib/git-jump: fix typo in README
doc/rev-list-options: clarify "commit@{Nth}" for "-g" option
doc/rev-list-options: explain "-g" output formats
doc/pretty-formats: describe index/time formats for %gd
doc/pretty-formats: explain shortening of %gd
t4205: drop top-level &&-chaining
t4205: indent here documents
date: document and test "raw-local" mode
date: add "unix" format
t/perf: add tests for many-pack scenarios
sha1_file: drop free_pack_by_name
add generic most-recently-used list
find_pack_entry: replace last_found_pack with MRU cache
pack-objects: break out of want_object loop early
pack-objects: compute local/ignore_pack_keep early
am: reset cached ident date for each patch
trace: handle NULL argument in trace_disable()
trace: stop using write_or_whine_pipe()
trace: use warning() for printing trace errors
trace: cosmetic fixes for error messages
trace: correct variable name in write() error message
trace: disable key after write error
write_or_die: drop write_or_whine_pipe()
trace: do not fall back to stderr
Joey Hess (1):
clarify %f documentation
Johannes Schindelin (56):
mingw: let the build succeed with DEVELOPER=1
perf: accommodate for MacOSX
pretty: make the skip_blank_lines() function public
commit.c: make find_commit_subject() more robust
t2300: "git --exec-path" is not usable in $PATH on Windows as-is
log: prepare log/log-tree to reuse the diffopt.close_file attribute
log-tree: respect diffopt's configured output file stream
line-log: respect diffopt's configured output file stream
graph: respect the diffopt.file setting
shortlog: support outputting to streams other than stdout
format-patch: explicitly switch off color when writing to files
format-patch: avoid freopen()
format-patch: use stdout directly
shortlog: respect the --output=<file> setting
t4211: ensure that log respects --output=<file>
color.h: remove obsolete comment about limitations on Windows
diff: do not color output when --color=auto and --output=<file> is given
t3404: fix a grammo (commands are ran -> commands are run)
commit -C: skip blank lines at the beginning of the message
sequencer: use skip_blank_lines() to find the commit subject
reset --hard: skip blank lines when reporting the commit subject
commit -S: avoid invalid pointer with empty message
mingw: declare main()'s argv as const
t3404: add a test for the --gpg-sign option
rebase -i: demonstrate a bug with --autosquash
rebase -i: we allow extra spaces after fixup!/squash!
am: counteract gender bias
diff: demonstrate a bug with --patience and --ignore-space-at-eol
diff: fix a double off-by-one with --ignore-space-at-eol
t/test-lib.sh: fix running tests with --valgrind
mingw: fix the shortlog --output=<file> test
mingw: fix regression in t1308-config-set
fsck: refactor how to describe objects
fsck_walk(): optionally name objects on the go
fsck: give the error function a chance to see the fsck_options
fsck: optionally show more helpful info for broken links
t5520: verify that `pull --rebase` shows the helpful advice when failing
die("bug"): report bugs consistently
die(_("BUG")): avoid translating bug messages
merge-recursive: clarify code in was_tracked()
prepare the builtins for a libified merge_recursive()
merge_recursive: abort properly upon errors
merge-recursive: avoid returning a wholesale struct
merge-recursive: allow write_tree_from_memory() to error out
merge-recursive: handle return values indicating errors
merge-recursive: switch to returning errors instead of dying
am -3: use merge_recursive() directly again
merge-recursive: flush output buffer before printing error messages
merge-recursive: write the commit title in one go
merge-recursive: offer an option to retain the output in 'obuf'
merge_trees(): ensure that the callers release output buffer
merge-recursive: flush output buffer even when erroring out
import-tars: support hard links
t5533: make it pass on case-sensitive filesystems
nedmalloc: fix misleading indentation
git mv: do not keep slash in `git mv dir non-existing-dir/`
Johannes Sixt (7):
Windows: add missing definition of ENOTSOCK
git-submodule: forward exit code of git-submodule--helper more faithfully
submodule-helper: fix indexing in clone retry error reporting path
rebase-interactive: trim leading whitespace from progress count
t4130: work around Windows limitation
config.c: avoid duplicated global static variables
commit-slab.h: avoid duplicated global static variables
John Keeping (4):
difftool: fix argument handling in subdirs
Documentation/git-push: fix placeholder formatting
push: add shorthand for --force-with-lease branch creation
push: allow pushing new branches with --force-with-lease
Jonathan Nieder (1):
doc: git-htmldocs.googlecode.com is no more
Jonathan Tan (1):
fetch-pack: grow stateless RPC windows exponentially
Jordan DE GEA (1):
worktree: allow "-" short-hand for @{-1} in add command
Josef Kufner (1):
pretty: pass graph width to pretty formatting for use in '%>|(N)'
Josh Triplett (1):
format-patch: format.from gives the default for --from
Junio C Hamano (36):
send-email: detect and offer to skip backup files
pathspec: rename free_pathspec() to clear_pathspec()
t1308: do not get fooled by symbolic links to the source tree
builtin/apply: remove misleading comment on lock_file field
blame, line-log: do not loop around deref_tag()
Start the post-2.9 cycle
clone: do not let --depth imply --shallow-submodules
Start preparing for 2.9.1
Second batch of topics for 2.10
More fixes for 2.9.1
Third batch of topics for 2.10
commit.c: remove print_commit_list()
Fourth batch of topics for 2.10
Git 2.9.1
merge: avoid "safer crlf" during recording of merge results
Fifth batch of topics for 2.10
diff: document diff-filter exclusion
Git 2.9.2
archive-tar: huge offset and future timestamps would not work on 32-bit
Sixth batch of topics for 2.10
grep: further simplify setting the pattern type
Seventh batch of topics for 2.10
date: clarify --date=raw description
Some fixes for 2.9.3
t9100: portability fix
Eighth batch of topics for 2.10
hashmap: clarify that hashmap_entry can safely be discarded
Ninth batch of topics for 2.10
Tenth batch for 2.10
Hopefully final batch for 2.9.3
Eleventh batch for 2.10
Yet another batch for 2.9.3
Twelfth batch for 2.10
Git 2.9.3
Final batch before 2.10-rc0
Git 2.10-rc0
Keith McGuigan (1):
builtin/fetch.c: don't free remote->name after fetch
Kevin Willford (4):
patch-ids: stop using a hand-rolled hashmap implementation
patch-ids: replace the seen indicator with a commit pointer
patch-ids: add flag to create the diff patch id using header only data
rebase: avoid computing unnecessary patch IDs
LE Manh Cuong (1):
sh-setup: enclose setting of ${VAR=default} in double-quotes
Lars Schneider (2):
git-p4: place temporary refs used for branch import under refs/git-p4-tmp
travis-ci: enable web server tests t55xx on Linux
Lars Vogel (1):
Use "working tree" instead of "working directory" for git status
Lukas Fleischer (4):
receive-pack: send auto-gc output over sideband 2
sideband.c: make send_sideband() return void
upload-pack.c: make send_client_data() return void
sideband.c: refactor recv_sideband()
Matthieu Moy (8):
Documentation/git-mv.txt: fix whitespace indentation
doc: typeset short command-line options as literal
doc: typeset long command-line options as literal
doc: typeset '--' as literal
doc: typeset long options with argument as literal
CodingGuidelines: formatting HEAD in documentation
doc: typeset HEAD and variants as literal
status: suggest 'git merge --abort' when appropriate
Mehul Jain (3):
t4202: refactor test
log: add "--no-show-signature" command line option
log: add log.showSignature configuration variable
Michael Haggerty (50):
t1404: demonstrate a bug resolving references
commit_ref(): if there is an empty dir in the way, delete it
read_raw_ref(): don't get confused by an empty directory
safe_create_leading_directories(): improve docstring
remove_dir_recursively(): add docstring
refname_is_safe(): use skip_prefix()
refname_is_safe(): don't allow the empty string
refname_is_safe(): insist that the refname already be normalized
commit_ref_update(): write error message to *err, not stderr
rename_ref(): remove unneeded local variable
ref_transaction_commit(): remove local variables n and updates
read_raw_ref(): rename flags argument to type
read_raw_ref(): clear *type at start of function
read_raw_ref(): rename symref argument to referent
read_raw_ref(): improve docstring
read_raw_ref(): move docstring to header file
lock_ref_sha1_basic(): remove unneeded local variable
refs: make error messages more consistent
ref_transaction_create(): disallow recursive pruning
ref_transaction_commit(): correctly report close_ref() failure
delete_branches(): use resolve_refdup()
verify_refname_available(): adjust constness in declaration
add_update(): initialize the whole ref_update
lock_ref_for_update(): new function
unlock_ref(): move definition higher in the file
ref_transaction_update(): check refname_is_safe() at a minimum
refs: resolve symbolic refs first
lock_ref_for_update(): don't re-read non-symbolic references
lock_ref_for_update(): don't resolve symrefs
commit_ref_update(): remove the flags parameter
lock_ref_sha1_basic(): only handle REF_NODEREF mode
refs: remove unnecessary "extern" keywords
do_for_each_ref(): move docstring to the header file
refs: use name "prefix" consistently
delete_refs(): add a flags argument
remote rm: handle symbolic refs correctly
get_ref_cache(): only create an instance if there is a submodule
entry_resolves_to_object(): rename function from ref_resolves_to_object()
ref_resolves_to_object(): new function
refs: introduce an iterator interface
do_for_each_ref(): reimplement using reference iteration
for_each_reflog(): don't abort for bad references
dir_iterator: new API for iterating over a directory tree
for_each_reflog(): reimplement using iterators
t1404: rename file to t1404-update-ref-errors.sh
t1404: remove "prefix" argument to test_update_rejected
t1404: document function test_update_rejected
t1404: add more tests of update-ref error handling
lock_ref_for_update(): make error handling more uniform
lock_ref_for_update(): avoid a symref resolution
Michael J Gruber (7):
cherry-pick: allow to pick to unborn branches
Documentation/technical: describe signature formats
Documentation/technical: signed tag format
Documentation/technical: signed commit format
Documentation/technical: signed merge tag format
gpg-interface: check gpg signature creation status
t/t91*: do not say how to avoid the tests
Michael Stahl (1):
document git-repack interaction of pack.threads and pack.windowMemory
Mike Hommey (2):
blame: allow to blame paths freshly added to the index
t/t8003-blame-corner-cases.sh: Use here documents
Nguyễn Thái Ngọc Duy (47):
completion: support git-worktree
worktree.c: rewrite mark_current_worktree() to avoid strbuf
git-worktree.txt: keep subcommand listing in alphabetical order
worktree.c: use is_dot_or_dotdot()
worktree: avoid 0{40}, too many zeroes, hard to read
worktree: simplify prefixing paths
worktree.c: add find_worktree()
worktree.c: add is_main_worktree()
lib-httpd.sh: print error.log on error
worktree.c: add is_worktree_locked()
pretty.c: support <direction>|(<negative number>) forms
new-command.txt: correct the command description file
grep: break down an "if" stmt in preparation for next changes
test-regex: isolate the bug test code
test-regex: expose full regcomp() to the command line
grep/icase: avoid kwsset on literal non-ascii strings
git-fetch.txt: document fetch output
fetch: refactor ref update status formatting code
fetch: change flag code for displaying tag update and deleted ref
grep/icase: avoid kwsset when -F is specified
grep: rewrite an if/else condition to avoid duplicate expression
grep/pcre: prepare locale-dependent tables for icase matching
gettext: add is_utf8_locale()
grep/pcre: support utf-8
diffcore-pickaxe: Add regcomp_or_die()
diffcore-pickaxe: support case insensitive match on non-ascii
grep.c: reuse "icase" variable
fetch: align all "remote -> local" output
fetch: reduce duplicate in ref update status lines with placeholder
connect: read $GIT_SSH_COMMAND from config file
worktree: add "lock" command
worktree: add "unlock" command
worktree.c: find_worktree() search by path suffix
pack-objects: pass length to check_pack_crc() without truncation
log: decorate HEAD -> branch with the same color for arrow and HEAD
sha1_file.c: use type off_t* for object_info->disk_sizep
index-pack: correct "len" type in unpack_data()
index-pack: report correct bad object offsets even if they are large
index-pack: correct "offset" type in unpack_entry_data()
pack-objects: do not truncate result in-pack object size on 32-bit systems
fsck: use streaming interface for large blobs in pack
test-lib.sh: introduce and use $EMPTY_TREE
test-lib.sh: introduce and use $EMPTY_BLOB
cache-tree.c: fix i-t-a entry skipping directory updates sometimes
cache-tree: do not generate empty trees as a result of all i-t-a subentries
config.mak.uname: correct perl path on FreeBSD
t7063: work around FreeBSD's lazy mtime update feature
Nicolas Pitre (1):
sideband.c: small optimization of strbuf usage
Orgad Shaneh (1):
commit: describe that --no-verify skips the commit-msg hook in the help text
Parker Moore (2):
contrib/persistent-https: update ldflags syntax for Go 1.7+
contrib/persistent-https: use Git version for build label
Patrick Steinhardt (1):
rebase -i: restore autostash on abort
Peter Colberg (2):
refs.h: fix misspelt "occurred" in a comment
config.c: fix misspelt "occurred" in an error message
Pranit Bauva (2):
builtin/commit.c: memoize git-path for COMMIT_EDITMSG
strbuf: describe the return value of strbuf_read_file
Ramsay Jones (2):
regex: fix a SIZE_MAX macro redefinition warning
write_or_die: remove the unused write_or_whine() function
René Scharfe (26):
t4051: rewrite, add more tests
xdiff: factor out match_func_rec()
xdiff: handle appended chunks better with -W
xdiff: ignore empty lines before added functions with -W
xdiff: -W: don't include common trailing empty lines in context
xdiff: don't trim common tail with -W
t7810: add test for grep -W and trailing empty context lines
grep: -W: don't extend context to trailing empty lines
xdiff: fix merging of appended hunk with -W
.gitattributes: set file type for C files
notes-merge: use O_EXCL to avoid overwriting existing files
am: ignore return value of write_file()
rm: reuse strbuf for all remove_dir_recursively() calls
worktree: use strbuf_add_absolute_path() directly
use strbuf_addbuf() for appending a strbuf to another
submodule-config: use explicit empty string instead of strbuf in config_from()
strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
use strbuf_addstr() for adding constant strings to a strbuf
pass constants as first argument to st_mult()
use strbuf_addstr() instead of strbuf_addf() with "%s"
use CHILD_PROCESS_INIT to initialize automatic variables
merge-recursive: use STRING_LIST_INIT_NODUP
merge: use string_list_split() in add_strategies()
nedmalloc: work around overzealous GCC 6 warning
archive-tar: make write_extended_header() void
use strbuf_add_unique_abbrev() for adding short hashes
Ronald Wampler (1):
Makefile: add NEEDS_LIBRT to optionally link with librt
SZEDER Gábor (1):
reflog: continue walking the reflog past root commits
Stefan Beller (22):
submodule update: make use of the existing fetch_in_submodule function
submodule-config: keep shallow recommendation around
submodule update: learn `--[no-]recommend-shallow` option
submodule--helper: initial clone learns retry logic
submodule update: continue when a clone fails
t5614: don't use subshells
push options: {pre,post}-receive hook learns about push options
receive-pack: implement advertising and receiving push options
push: accept push options
add a test for push options
Documentation: pack-protocol correct NAK response
submodule deinit: remove outdated comment
t7406: future proof tests with hard coded depth
submodule update: respect depth in subsequent fetches
submodule update: narrow scope of local variable
submodule--helper: fix usage string for relative-path
submodule-config: keep configured branch around
gitmodules: document shallow recommendation
submodule--helper: add remote-branch helper
submodule update: allow '.' for branch value
submodule--helper: use parallel processor correctly
t7406: fix breakage on OSX
Thomas Braun (3):
completion: factor out untracked file modes into a variable
completion: add __git_get_option_value helper
completion: add git status
Tom Russello (4):
doc: clearer rule about formatting literals
doc: change environment variables format
doc: more consistency in environment variables format
doc: change configuration variables format
Torsten Bögershausen (1):
convert: unify the "auto" handling of CRLF
Vasco Almeida (44):
i18n: builtin/remote.c: fix mark for translation
i18n: advice: mark string about detached head for translation
i18n: advice: internationalize message for conflicts
i18n: transport: mark strings for translation
i18n: sequencer: mark entire sentences for translation
i18n: rebase-interactive: mark here-doc strings for translation
i18n: sequencer: mark string for translation
i18n: rebase-interactive: mark comments of squash for translation
i18n: merge-octopus: mark messages for translation
i18n: setup: mark strings for translation
merge-octopus: use die shell function from git-sh-setup.sh
tests: use test_i18n* functions to suppress false positives
i18n: rebase: fix marked string to use eval_gettext variant
tests: unpack-trees: update to use test_i18n* functions
i18n: rebase: mark placeholder for translation
t9003: become resilient to GETTEXT_POISON
i18n: bisect: simplify error message for i18n
t4153: fix negated test_i18ngrep call
t6030: update to use test_i18ncmp
t5523: use test_i18ngrep for negation
i18n: git-sh-setup.sh: mark strings for translation
i18n: bisect: mark strings for translation
i18n: rebase-interactive: mark strings for translation
i18n: transport-helper.c: change N_() call to _()
i18n: notes: mark strings for translation
i18n: notes: mark options for translation
i18n: merge: mark messages for translation
i18n: merge: change command option help to lowercase
i18n: sequencer: add period to error message
i18n: standardise messages
i18n: remote: mark URL fallback text for translation
i18n: remote: allow translations to reorder message
i18n: init-db: join message pieces
i18n: submodule: join strings marked for translation
i18n: submodule: escape shell variables inside eval_gettext
i18n: unmark die messages for translation
i18n: branch: mark comment when editing branch description for translation
t5541: become resilient to GETTEXT_POISON
t5510: skip tests under GETTEXT_POISON build
i18n: notes: mark comment for translation
i18n: config: unfold error messages marked for translation
i18n: setup: mark error messages for translation
i18n: archive: mark errors for translation
i18n: git-stash: mark messages for translation
Ville Skyttä (3):
git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha
completion: complete --delete, --move, and --remotes for git branch
Spelling fixes
William Duclot (1):
userdiff: add built-in pattern for CSS
brian m. carlson (11):
hex: add oid_to_hex_r()
contrib/coccinelle: add basic Coccinelle transforms
coccinelle: convert hashcpy() with null_sha1 to hashclr()
coccinelle: apply object_id Coccinelle transformations
diff: convert struct diff_filespec to struct object_id
diff: rename struct diff_filespec's sha1_valid member
merge-recursive: convert struct stage_data to use object_id
merge-recursive: convert struct merge_file_info to object_id
merge-recursive: convert leaf functions to use struct object_id
merge-recursive: convert merge_recursive_generic() to object_id
diff: convert prep_temp_blob() to struct object_id
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.9.0
@ 2016-06-13 19:45 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-06-13 19:45 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.9.0 is now available at the
usual places. It is comprised of 497 non-merge commits since
v2.8.0, contributed by 75 people, 28 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.9.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.8.0 are as follows.
Welcome to the Git development community!
Alexander Rinass, Antonin, Armin Kunaschik, Benjamin Dopplinger,
Ben Woosley, Erwan Mathoniere, Gabriel Souza Franco, Jacob
Nisnevich, Jan Durovec, Jean-Noël Avila, Kazuki Yamaguchi,
Keller Fuchs, Laurent Arnoud, Li Peng, Marios Titas, Mehul Jain,
Michael Procter, Nikola Forró, Pablo Santiago Blum de Aguiar,
Pranit Bauva, Ray Zhang, René Nyffenegger, Santiago Torres,
Saurav Sachidanand, Shin Kojima, Sidhant Sharma [:tk], Stanislav
Kolotinskiy, and Xiaolong Ye.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Kuleshov,
Alexander Shopov, brian m. carlson, Brian Norris, Changwoo
Ryu, Christian Couder, David Aguilar, David Turner, Dennis
Kaarsemaker, Dimitriy Ryazantcev, Elia Pinto, Elijah Newren,
Eric Sunshine, Eric Wong, Felipe Contreras, Jacob Keller,
Jean-Noel Avila, Jeff King, Jiang Xin, Johannes Schindelin,
Johannes Sixt, John Keeping, Junio C Hamano, Karsten Blees,
Lars Schneider, Linus Torvalds, Luke Diamand, Matthieu Moy,
Michael Haggerty, Michael J Gruber, Michael Rappazzo, Nguyễn
Thái Ngọc Duy, Ori Avtalion, Peter Krefting, Ralf Thielow,
Ramsay Jones, Ray Chen, René Scharfe, Stefan Beller, Stephen
P. Smith, Sven Strickroth, SZEDER Gábor, Torsten Bögershausen,
Trần Ngọc Quân, and Vasco Almeida.
----------------------------------------------------------------
Git 2.9 Release Notes
=====================
Backward compatibility notes
----------------------------
The end-user facing Porcelain level commands in the "git diff" and
"git log" family by default enable the rename detection; you can still
use "diff.renames" configuration variable to disable this.
Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.
The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default. You can use
the "--no-expand-tabs" option to disable this.
"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.
Updates since v2.8
------------------
UI, Workflows & Features
* Comes with git-multimail 1.3.1 (in contrib/).
* The end-user facing commands like "git diff" and "git log"
now enable the rename detection by default.
* The credential.helper configuration variable is cumulative and
there is no good way to override it from the command line. As
a special case, giving an empty string as its value now serves
as the signal to clear the values specified in various files.
* A new "interactive.diffFilter" configuration can be used to
customize the diff shown in "git add -i" sessions.
* "git p4" now allows P4 author names to be mapped to Git author
names.
* "git rebase -x" can be used without passing "-i" option.
* "git -c credential.<var>=<value> submodule" can now be used to
propagate configuration variables related to credential helper
down to the submodules.
* "git tag" can create an annotated tag without explicitly given an
"-a" (or "-s") option (i.e. when a tag message is given). A new
configuration variable, tag.forceSignAnnotated, can be used to tell
the command to create signed tag in such a situation.
* "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.
* "git pull" has been taught to pass the "--allow-unrelated-histories"
option to underlying "git merge".
* "git apply -v" learned to report paths in the patch that were
skipped via --include/--exclude mechanism or being outside the
current working directory.
* Shell completion (in contrib/) updates.
* The commit object name reported when "rebase -i" stops has been
shortened.
* "git worktree add" can be given "--no-checkout" option to only
create an empty worktree without checking out the files.
* "git mergetools" learned to drive ExamDiff.
* "git pull --rebase" learned "--[no-]autostash" option, so that
the rebase.autostash configuration variable set to true can be
overridden from the command line.
* 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 to help
such a case, and allows the users to override it with a new option,
"--no-expand-tabs".
* "git send-email" now uses a more readable timestamps when
formulating a message ID.
* "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.
* "git p4" learned to record P4 jobs in Git commit that imports from
the history in Perforce.
* "git describe --contains" often made a hard-to-justify choice of
tag to name a given commit, because it tried to come up
with a name with smallest number of hops from a tag, causing an old
commit whose close descendant that is recently tagged were not
described with respect to an old tag but with a newer tag. It did
not help that its computation of "hop" count was further tweaked to
penalize being on a side branch of a merge. The logic has been
updated to favor using the tag with the oldest tagger date, which
is a lot easier to explain to the end users: "We describe a commit
in terms of the (chronologically) oldest tag that contains the
commit."
* "git clone" learned the "--shallow-submodules" option.
* HTTP transport clients learned to throw extra HTTP headers at the
server, specified via http.extraHeader configuration variable.
* The "--compaction-heuristic" option to "git diff" family of
commands enables a heuristic to make the patch output more readable
by using a blank line as a strong hint that the contents before and
after it belong to logically separate units. It is still
experimental.
* A new configuration variable core.hooksPath allows customizing
where the hook directory is.
* An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
submodule honor -c credential.* from command line, 2016-02-29)
turned out to be a convoluted no-op; implement what it wanted to do
correctly, and stop filtering settings given via "git -c var=val".
* "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). This is a stop-gap
measure in that "commit --short --dry-run" still gives an incorrect
result.
* The experimental "multiple worktree" feature gains more safety to
forbid operations on a branch that is checked out or being actively
worked on elsewhere, by noticing that e.g. it is being rebased.
* "git format-patch" learned a new "--base" option to record what
(public, well-known) commit the original series was built on in
its output.
* "git commit" learned to pay attention to the "commit.verbose"
configuration variable and act as if the "--verbose" option
was given from the command line.
* Updated documentation gives hints to GMail users with two-factor
auth enabled that they need app-specific-password when using
"git send-email".
* The manpage output of our documentation did not render well in
terminal; typeset literals in bold by default to make them stand
out more.
* The mark-up in the top-level README.md file has been updated to
typeset CLI command names differently from the body text.
Performance, Internal Implementation, Development Support etc.
* The embedded args argv-array in the child process is used to build
the command line to run pack-objects instead of using a separate
array of strings.
* A test for tags has been restructured so that more parts of it can
easily be run on a platform without a working GnuPG.
* The startup_info data, which records if we are working inside a
repository (among other things), are now uniformly available to Git
subcommand implementations, and Git avoids attempting to touch
references when we are not in a repository.
* The command line argument parser for "receive-pack" has been
rewritten to use parse-options.
* A major part of "git submodule update" has been ported to C to take
advantage of the recently added framework to run download tasks in
parallel. Other updates to "git submodule" that move pieces of
logic to C continues.
* Rename bunch of tests on "git clone" for better organization.
* The tests that involve running httpd leaked the system-wide
configuration in /etc/gitconfig to the tested environment.
* Build updates for MSVC.
* 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.
* Code restructuring around the "refs" API to prepare for pluggable
refs backends.
* Sources to many test helper binaries and the generated helpers
have been moved to t/helper/ subdirectory to reduce clutter at the
top level of the tree.
* Unify internal logic between "git tag -v" and "git verify-tag"
commands by making one directly call into the other.
* "merge-recursive" strategy incorrectly checked if a path that is
involved in its internal merge exists in the working tree.
* The test scripts for "git p4" (but not "git p4" implementation
itself) has been updated so that they would work even on a system
where the installed version of Python is python 3.
* As nobody maintains our in-tree git.spec.in and distros use their
own spec file, we stopped pretending that we support "make rpm".
* Move from "unsigned char[20]" to "struct object_id" continues.
* The code for warning_errno/die_errno has been refactored and a new
error_errno() reporting helper is introduced.
(merge 1da045f nd/error-errno later to maint).
* Running tests with '-x' option to trace the individual command
executions is a useful way to debug test scripts, but some tests
that capture the standard error stream and check what the command
said can be broken with the trace output mixed in. When running
our tests under "bash", however, we can redirect the trace output
to another file descriptor to keep the standard error of programs
being tested intact.
* t0040 had too many unnecessary repetitions in its test data. Teach
test-parse-options program so that a caller can tell what it
expects in its output, so that these repetitions can be cleaned up.
* Add perf test for "rebase -i".
* Common mistakes when writing gitlink: in our documentation are
found by "make check-docs".
* t9xxx series has been updated primarily for readability, while
fixing small bugs in it. A few scripted Porcelain commands have
also been updated to fix possible bugs around their use of
"test -z" and "test -n".
* CI test was taught to run git-svn tests.
* "git cat-file --batch-all" has been sped up, by taking advantage
of the fact that it does not have to read a list of objects, in two
ways.
* test updates to make it more readable and maintainable.
(merge e6273f4 es/t1500-modernize later to maint).
* "make DEVELOPER=1" worked as expected; setting DEVELOPER=1 in
config.mak didn't.
(merge 51dd3e8 mm/makefile-developer-can-be-in-config-mak later to maint).
* The way how "submodule--helper list" signals unmatch error to its
callers has been updated.
* A bash-ism "local" has been removed from "git submodule" scripted
Porcelain.
Also contains various documentation updates and code clean-ups.
Fixes since v2.8
----------------
Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git config --get-urlmatch", unlike other variants of the "git
config --get" family, did not signal error with its exit status
when there was no matching configuration.
* The "--local-env-vars" and "--resolve-git-dir" options of "git
rev-parse" failed to work outside a repository when the command's
option parsing was rewritten in 1.8.5 era.
* "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.
* Fetching of history by naming a commit object name directly didn't
work across remote-curl transport.
* A small memory leak in an error codepath has been plugged in xdiff
code.
* strbuf_getwholeline() did not NUL-terminate the buffer on certain
corner cases in its error codepath.
* "git mergetool" did not work well with conflicts that both sides
deleted.
* "git send-email" had trouble parsing alias file in mailrc format
when lines in it had trailing whitespaces on them.
* When "git merge --squash" stopped due to conflict, the concluding
"git commit" failed to read in the SQUASH_MSG that shows the log
messages from all the squashed commits.
* "git merge FETCH_HEAD" dereferenced NULL pointer when merging
nothing into an unborn history (which is arguably unusual usage,
which perhaps was the reason why nobody noticed it).
* When "git worktree" feature is in use, "git branch -d" allowed
deletion of a branch that is checked out in another worktree,
which was wrong.
* 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.
* "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.
* "git send-pack --all <there>" was broken when its command line
option parsing was written in the 2.6 timeframe.
* "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.
* 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.
* 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).
* 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.
* "git commit" misbehaved in a few minor ways when an empty message
is given via -m '', all of which has been corrected.
* Support for CRAM-MD5 authentication method in "git imap-send" did
not work well.
* Upcoming OpenSSL 1.1.0 will break compilation by updating a few API
elements we use in imap-send, which has been adjusted for the change.
* The socks5:// proxy support added back in 2.6.4 days was not aware
that socks5h:// proxies behave differently from socks5:// proxies.
* "git config" had a codepath that tried to pass a NULL to
printf("%s"), which nobody seems to have noticed.
* On Cygwin, object creation uses the "create a temporary and then
rename it to the final name" pattern, not "create a temporary,
hardlink it to the final name and then unlink the temporary"
pattern.
This is necessary to use Git on Windows shared directories, and is
already enabled for the MinGW and plain Windows builds. It also
has been used in Cygwin packaged versions of Git for quite a while.
See http://thread.gmane.org/gmane.comp.version-control.git/291853
* "merge-octopus" strategy did not ensure that the index is clean
when merge begins.
* When "git merge" notices that the merge can be resolved purely at
the tree level (without having to merge blobs) and the resulting
tree happens to already exist in the object store, it forgot to
update the index, which left an inconsistent state that would
break later operations.
* "git submodule" reports the paths of submodules the command
recurses into, but these paths were incorrectly reported when
the command was not run from the root level of the superproject.
* 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.
* "git mv old new" did not adjust the path for a submodule that lives
as a subdirectory inside old/ directory correctly.
* "git replace -e" did not honour "core.editor" configuration.
* "git push" from a corrupt repository that attempts to push a large
number of refs deadlocked; the thread to relay rejection notices
for these ref updates blocked on writing them to the main thread,
after the main thread at the receiving end notices that the push
failed and decides not to read these notices and return a failure.
* mmap emulation on Windows has been optimized and work better without
consuming paging store when not needed.
* A question by "git send-email" to ask the identity of the sender
has been updated.
* UI consistency improvements for "git mergetool".
* "git rebase -m" could be asked to rebase an entire branch starting
from the root, but failed by assuming that there always is a parent
commit to the first commit on the branch.
* Fix a broken "p4 lfs" test.
* Recent update to Git LFS broke "git p4" by changing the output from
its "lfs pointer" subcommand.
* "git fetch" test t5510 was flaky while running a (forced) automagic
garbage collection.
* Documentation updates to help contributors setting up Travis CI
test for their patches.
* Some multi-byte encoding can have a backslash byte as a later part
of one letter, which would confuse "highlight" filter used in
gitweb.
* "git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake. Rework "git rebase" that
relied on this mistake so that it reads commit.gpgsign and pass (or
not pass) the -S option to "git commit-tree" to keep the end-user
expectation the same, while teaching "git commit-tree" to ignore
the configuration variable. This will stop requiring the users to
sign commit objects used internally as an implementation detail of
"git stash".
* "http.cookieFile" configuration variable clearly wants a pathname,
but we forgot to treat it as such by e.g. applying tilde expansion.
* Consolidate description of tilde-expansion that is done to
configuration variables that take pathname to a single place.
* Correct faulty recommendation to use "git submodule deinit ." when
de-initialising all submodules, which would result in a strange
error message in a pathological corner case.
* Many 'linkgit:<git documentation page>' references were broken,
which are all fixed with this.
* "git rerere" can get confused by conflict markers deliberately left
by the inner merge step, because they are indistinguishable from
the real conflict markers left by the outermost merge which are
what the end user and "rerere" need to look at. This was fixed by
making the conflict markers left by the inner merges a bit longer.
(merge 0f9fd5c jc/ll-merge-internal later to maint).
* CI test was taught to build documentation pages.
* "git fsck" learned to catch NUL byte in a commit object as
potential error and warn.
* Portability enhancement for "rebase -i" to help platforms whose
shell does not like "for i in <empty>" (which is not POSIX-kosher).
* On Windows, .git and optionally any files whose name starts with a
dot are now marked as hidden, with a core.hideDotFiles knob to
customize this behaviour.
* Documentation for "git merge --verify-signatures" has been updated
to clarify that the signature of only the commit at the tip is
verified. Also the phrasing used for signature and key validity is
adjusted to align with that used by OpenPGP.
* A couple of bugs around core.autocrlf have been fixed.
* 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.
* "git difftool" learned to handle unmerged paths correctly in
dir-diff mode.
* The "are we talking with TTY, doing an interactive session?"
detection has been updated to work better for "Git for Windows".
* We forgot to add "git log --decorate=auto" to documentation when we
added the feature back in v2.1.0 timeframe.
(merge 462cbb4 rj/log-decorate-auto later to maint).
* "git fast-import --export-marks" would overwrite the existing marks
file even when it makes a dump from its custom die routine.
Prevent it from doing so when we have an import-marks file but
haven't finished reading it.
(merge f4beed6 fc/fast-import-broken-marks-file later to maint).
* "git rebase -i", after it fails to auto-resolve the conflict, had
an unnecessary call to "git rerere" from its very early days, which
was spotted recently; the call has been removed.
(merge 7063693 js/rebase-i-dedup-call-to-rerere later to maint).
* Other minor clean-ups and documentation updates
(merge cd82b7a pa/cherry-pick-doc-typo later to maint).
(merge 2bb73ae rs/patch-id-use-skip-prefix later to maint).
(merge aa20cbc rs/apply-name-terminate later to maint).
(merge fe17fc0 jc/t2300-setup later to maint).
(merge e256eec jk/shell-portability later to maint).
----------------------------------------------------------------
Changes since v2.8.0 are as follows:
Adam Dinwoodie (2):
config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
commit: --amend -m '' silently fails to wipe message
Alexander Kuleshov (1):
submodule-config: use hashmap_iter_first()
Alexander Rinass (1):
diff: run arguments through precompose_argv
Alexander Shopov (1):
l10n: Updated Bulgarian translation of git (2597t,0f,0u)
Antonin (1):
l10n: fr.po Fixed grammar mistake
Armin Kunaschik (2):
t4151: make sure argument to 'test -z' is given
t0008: 4 tests fail with ksh88
Ben Woosley (1):
git-rebase--merge: don't include absent parent as a base
Benjamin Dopplinger (1):
README.md: format CLI commands with code syntax
Brian Norris (3):
Documentation: config: improve word ordering for http.cookieFile
http: expand http.cookieFile as a path
config: consistently format $variables in monospaced font
Changwoo Ryu (1):
l10n: ko.po: Update Korean translation
Christian Couder (5):
Documentation: talk about pager in api-trace.txt
builtin/apply: get rid of useless 'name' variable
builtin/apply: handle parse_binary() failure
builtin/apply: free patch when parse_chunk() fails
Git/SVN: die when there is no commit metadata
David Aguilar (4):
mergetool: support delete/delete conflicts
mergetool: honor tempfile configuration when resolving delete conflicts
difftool: initialize variables for readability
difftool: handle unmerged files in dir-diff mode
David Turner (5):
refs: move head_ref{,_submodule} to the common code
refs: move for_each_*ref* functions into common code
files-backend: break out ref reading
refs: move resolve_ref_unsafe into common code
refs: on symref reflog expire, lock symref not referrent
Dennis Kaarsemaker (1):
Makefile: remove dependency on git.spec
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Elia Pinto (1):
api-trace.txt: fix typo
Elijah Newren (6):
merge-recursive: remove duplicate code
merge-recursive: do not check working copy when creating a virtual merge base
t7605: add a testcase demonstrating a bug with trivial merges
builtin/merge.c: fix a bug with trivial merges
merge-octopus: abort if index does not match HEAD
t6044: new merge testcases for when index doesn't match HEAD
Eric Sunshine (10):
lib-gpg: drop unnecessary "missing GPG" warning
t6302: normalize names and descriptions of signed tags
t6302: also test annotated in addition to signed tags
t6302: skip only signed tags rather than all tests when GPG is missing
git-format-patch.txt: don't show -s as shorthand for multiple options
t1500: be considerate to future potential tests
t1500: test_rev_parse: facilitate future test enhancements
t1500: avoid changing working directory outside of tests
t1500: avoid setting configuration options outside of tests
t1500: avoid setting environment variables outside of tests
Eric Wong (4):
send-email: more meaningful Message-ID
send-email: do not load Data::Dumper
pack-objects: warn on split packs disabling bitmaps
.mailmap: update to my shorter email address
Erwan Mathoniere (1):
Documentation: bold literals in man
Felipe Contreras (1):
fast-import: do not truncate exported marks file
Gabriel Souza Franco (2):
fetch-pack: fix object_id of exact sha1
fetch-pack: update the documentation for "<refs>..." arguments
Jacob Keller (7):
submodule: don't pass empty string arguments to submodule--helper clone
submodule: check argc count for git submodule--helper clone
submodule: fix submodule--helper clone usage
submodule: fix segmentation fault in submodule--helper clone
quote: implement sq_quotef()
git: submodule honor -c credential.* from command line
xdiff: add recs_match helper function
Jacob Nisnevich (2):
mergetools: create mergetool_find_win32_cmd() helper function for winmerge
mergetools: add support for ExamDiff
Jan Durovec (2):
git-p4: clean-up code style in tests
git-p4: add P4 jobs to git commit message
Jean-Noel Avila (1):
l10n: fr.po v2.9.0rnd1
Jeff King (56):
credential: let empty credential specs reset helper list
t1515: add tests for rev-parse out-of-repo helpers
add--interactive: allow custom diff highlighting programs
rev-parse: let some options run outside repository
strbuf_getwholeline: NUL-terminate getdelim buffer on error
setup: make startup_info available everywhere
setup: set startup_info->have_repository more reliably
remote: don't resolve HEAD in non-repository
mailmap: do not resolve blobs in a non-repository
grep: turn off gitlink detection for --no-index
use setup_git_directory() in test-* programs
setup: document check_repository_format()
wrap shared_repository global in get/set accessors
lazily load core.sharedrepository
check_repository_format_gently: stop using git_config_early
config: drop git_config_early
setup: refactor repo format reading and verification
init: use setup.c's repo version verification
setup: unify repository version callbacks
setup: drop repository_format_version global
verify_repository_format: mark messages for translation
send-email: ignore trailing whitespace in mailrc alias file
credential-cache--daemon: clarify "exit" action semantics
t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env
git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
branch: fix shortening of non-remote symrefs
commit: do not ignore an empty message given by -m ''
config: lower-case first word of error strings
git_config_set_multivar_in_file: all non-zero returns are errors
git_config_set_multivar_in_file: handle "unset" errors
t5532: use write_script
send-pack: close demux pipe before finishing async process
run-command: teach async threads to ignore SIGPIPE
send-pack: isolate sigpipe in demuxer thread
fetch-pack: isolate sigpipe in demuxer thread
t5504: drop sigpipe=ok from push tests
remote.c: spell __attribute__ correctly
t5550: fix typo in $HTTPD_URL
t5550: break submodule config test into multiple sub-tests
submodule: export sanitized GIT_CONFIG_PARAMETERS
submodule--helper: move config-sanitizing to submodule.c
submodule: use prepare_submodule_repo_env consistently
submodule: stop sanitizing config options
t6302: simplify non-gpg cases
rebase--interactive: avoid empty list in shell for-loop
test-lib: set BASH_XTRACEFD automatically
t/lib-git-svn: drop $remote_git_svn and $git_svn_id
t9100,t3419: enclose all test code in single-quotes
t9107: use "return 1" instead of "exit 1"
t9107: switch inverted single/double quotes in test
t9103: modernize test style
always quote shell arguments to test -z/-n
cat-file: avoid noop calls to sha1_object_info_extended
cat-file: default to --buffer when --batch-all-objects is used
archive-tar: convert snprintf to xsnprintf
test-lib: add in-shell "env" replacement
Jiang Xin (2):
l10n: git.pot: v2.9.0 round 1 (104 new, 37 removed)
l10n: zh_CN: for git v2.9.0 l10n round 1
Johannes Schindelin (16):
replace --edit: respect core.editor
name-rev: include taggerdate in considering the best name
win32mmap: set errno appropriately
mmap(win32): avoid copy-on-write when it is unnecessary
mmap(win32): avoid expensive fstat() call
http: support sending custom HTTP headers
tests: adjust the configuration for Apache 2.2
t5551: make the test for extra HTTP headers more robust
t3404: fix typo
submodule: ensure that -c http.extraheader is heeded
mingw: introduce the 'core.hideDotFiles' setting
mingw: remove unnecessary definition
Windows: only add a no-op pthread_sigmask() when needed
perf: let's disable symlinks when they are not available
perf: make the tests work in worktrees
perf: run "rebase -i" under perf
Johannes Sixt (4):
Windows: shorten code by re-using convert_slashes()
Windows: add pthread_sigmask() that does nothing
t6044: replace seq by test_seq
rebase -i: remove an unnecessary 'rerere' invocation
John Keeping (3):
config: fail if --get-urlmatch finds no value
Documentation/git-config: use bulleted list for exit codes
Documentation/git-config: fix --get-all description
Junio C Hamano (82):
rerere: split conflict ID further
rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
index-pack: correct --keep[=<msg>]
index-pack: add a helper function to derive .idx/.keep filename
rerere: handle leftover rr-cache/$ID directory and postimage files
rerere: delay the recording of preimage
rerere: allow multiple variants to exist
t4200: rerere a merge with two identical conflicts
rerere: do use multiple variants
apply: remove unused call to free() in gitdiff_{old,new}name()
merge: fix NULL pointer dereference when merging nothing into void
merge: refuse to create too cool a merge by default
pretty: enable --expand-tabs by default for selected pretty formats
pretty: allow tweaking tabwidth in --expand-tabs
submodule--helper: do not borrow absolute_path() result for too long
Git 2.8.1
First batch for post 2.8 cycle
pretty: test --expand-tabs
Makefile: fix misdirected redirections
Second batch for post 2.8 cycle
Makefile: stop pretending to support rpmbuild
rerere: gc and clear
rerere: move code related to "forget" together
rerere: split code to call ll_merge() further
rerere: adjust 'forget' to multi-variant world order
setup.c: do not feed NULL to "%.*s" even with precision 0
Third batch for post 2.8 cycle
http: differentiate socks5:// and socks5h://
t1020: do not overuse printf and use write_script
t3404: use write_script
Fourth batch for post 2.8 cycle
Start preparing for 2.8.2
fsck_commit_buffer(): do not special case the last validation
ll-merge: fix typo in comment
Prepare for 2.8.2
Makefile: clean *.o files we create
Fifth batch for post 2.8 cycle
t3033: avoid 'ambiguous refs' warning
pull: pass --allow-unrelated-histories to "git merge"
Sixth batch for post 2.8 cycle
send-email: fix grammo in the prompt that asks e-mail recipients
Seventh batch for post 2.8 cycle
Git 2.8.2
Eighth batch for 2.9
diff: undocument the compaction heuristic knobs for experimentation
Start preparing for 2.8.3
commit-tree: do not pay attention to commit.gpgsign
Ninth batch for 2.9
config: describe 'pathname' value type
Tenth batch for 2.9
Almost ready for 2.8.3
test-lib-functions.sh: remove misleading comment on test_seq
test-lib-functions.sh: rewrite test_seq without Perl
ll-merge: use a longer conflict marker for internal merge
t6036: remove pointless test that expects failure
Documentation: fix linkgit references
fsck: detect and warn a commit with embedded NUL
ci: validate "linkgit:" in documentation
test-parse-options: fix output when callback option fails
test-parse-options: --expect=<string> option to simplify tests
t0040: remove unused test helpers
t0040: convert a few tests to use test-parse-options --expect
Eleventh batch for 2.9
rerere: plug memory leaks upon "rerere forget" failure
Twelfth batch for 2.9
Thirteenth batch for 2.9
Git 2.8.3
rerere: remove an null statement
Git 2.9-rc0
t4204: do not let $name variable clobbered
Start preparing for 2.8.4
Final batch before 2.9-rc1
More topics for 2.8.4
Git 2.9-rc1
t5500 & t7403: lose bash-ism "local"
t2300: run git-sh-setup in an environment that better mimics the real life
Almost ready for 2.9-rc2
Git 2.8.4
Git 2.9-rc2
diff: disable compaction heuristic for now
Hopefully the final last-minute update before 2.9 final
Git 2.9
Karsten Blees (1):
mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)
Kazuki Yamaguchi (10):
branch -d: refuse deleting a branch which is currently checked out
refs: add a new function set_worktree_head_symref
branch -m: update all per-worktree HEADs
set_worktree_head_symref(): fix error message
imap-send: use HMAC() function provided by OpenSSL
imap-send: check NULL return of SSL_CTX_new()
imap-send: avoid deprecated TLSv1_method()
configure: remove checking for HMAC_CTX_cleanup
imap-send: check for NOLOGIN capability only when using LOGIN command
imap-send: fix CRAM-MD5 response calculation
Keller Fuchs (1):
Documentation: clarify signature verification
Lars Schneider (8):
git-p4: map a P4 user to Git author name and email address
travis-ci: update Git-LFS and P4 to the latest version
travis-ci: express Linux/OS X dependency versions more clearly
git-p4: fix Git LFS pointer parsing
t9824: fix wrong reference value
Documentation: add setup instructions for Travis CI
travis-ci: build documentation
travis-ci: enable Git SVN tests t91xx on Linux
Laurent Arnoud (1):
tag: add the option to force signing of annotated tags
Li Peng (1):
typofix: assorted typofixes in comments, documentation and messages
Linus Torvalds (1):
pretty: expand tabs in indented logs to make things line up properly
Luke Diamand (3):
git-p4 tests: cd to / before running python
git-p4 tests: work with python3 as well as python2
git-p4 tests: time_in_seconds should use $PYTHON_PATH
Marios Titas (2):
ident: check for useConfigOnly before auto-detection of name/email
ident: give "please tell me" message upon useConfigOnly error
Matthieu Moy (13):
Documentation/diff-config: fix description of diff.renames
t4001-diff-rename: wrap file creations in a test
t: add tests for diff.renames (true/false/unset)
log: introduce init_log_defaults()
diff: activate diff.renames by default
lockfile: mark strings for translation
lockfile: improve error message when lockfile exists
git.spec.in: use README.md, not README
README.md: don't take 'commandname' literally
git-multimail: update to release 1.3.0
git-multimail: update to release 1.3.1
Makefile: move 'ifdef DEVELOPER' after config.mak* inclusion
Makefile: add $(DEVELOPER_CFLAGS) variable
Mehul Jain (9):
git-pull.c: introduce git_pull_config()
pull --rebase: add --[no-]autostash flag
t5520: use consistent capitalization in test titles
t5520: ensure consistent test conditions
t5520: use better test to check stderr output
t5520: factor out common "successful autostash" code
t5520: factor out common "failing autostash" code
t5520: reduce commom lines of code
t5520: test --[no-]autostash with pull.rebase=true
Michael Haggerty (19):
t1430: test the output and error of some commands more carefully
t1430: clean up broken refs/tags/shadow
t1430: don't rely on symbolic-ref for creating broken symrefs
t1430: test for-each-ref in the presence of badly-named refs
t1430: improve test coverage of deletion of badly-named refs
resolve_missing_loose_ref(): simplify semantics
resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
resolve_ref_unsafe(): ensure flags is always set
resolve_ref_1(): eliminate local variable
resolve_ref_1(): reorder code
resolve_ref_1(): eliminate local variable "bad_name"
read_raw_ref(): manage own scratch space
files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
read_raw_ref(): change flags parameter to unsigned int
fsck_head_link(): remove unneeded flag variable
cmd_merge(): remove unneeded flag variable
checkout_paths(): remove unneeded flag variable
check_aliased_update(): check that dst_name is non-NULL
show_head_ref(): check the result of resolve_ref_namespace()
Michael J Gruber (1):
completion: complete --cherry-mark for git log
Michael Procter (1):
upload-pack: use argv_array for pack_objects
Michael Rappazzo (1):
Documentation: add instructions to help setup gmail 2FA
Nguyễn Thái Ngọc Duy (62):
git-apply.txt: remove a space
git-apply.txt: mention the behavior inside a subdir
apply: report patch skipping in verbose mode
test helpers: move test-* to t/helper/ subdirectory
dir.c: remove dead function fnmatch_icase()
wrapper.c: delete dead function git_mkstemps()
dir.c: rename str(n)cmp_icase to fspath(n)cmp
path.c: add git_common_path() and strbuf_git_common_path()
worktree.c: store "id" instead of "git_dir"
worktree.c: make find_shared_symref() return struct worktree *
worktree.c: mark current worktree
path.c: refactor and add worktree_git_path()
wt-status.c: split rebase detection out of wt_status_get_state()
wt-status.c: make wt_status_check_rebase() work on any worktree
worktree.c: avoid referencing to worktrees[i] multiple times
worktree.c: check whether branch is rebased in another worktree
wt-status.c: split bisect detection out of wt_status_get_state()
worktree.c: check whether branch is bisected in another worktree
branch: do not rename a branch under bisect or rebase
remote.c: specify correct plural form in "commit diverge" message
usage.c: move format processing out of die_errno()
usage.c: add warning_errno() and error_errno()
bisect.c: use die_errno() and warning_errno()
builtin/am.c: use error_errno()
builtin/branch.c: use error_errno()
builtin/fetch.c: use error_errno()
builtin/help.c: use warning_errno()
builtin/mailsplit.c: use error_errno()
builtin/merge-file.c: use error_errno()
builtin/pack-objects.c: use die_errno() and warning_errno()
builtin/rm.c: use warning_errno()
builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
builtin/upload-archive.c: use error_errno()
builtin/worktree.c: use error_errno()
check-racy.c: use error_errno()
combine-diff.c: use error_errno()
compat/win32/syslog.c: use warning_errno()
config.c: use error_errno()
connected.c: use error_errno()
copy.c: use error_errno()
credential-cache--daemon.c: use warning_errno()
diff-no-index.c: use error_errno()
editor.c: use error_errno()
entry.c: use error_errno()
fast-import.c: use error_errno()
gpg-interface.c: use error_errno()
grep.c: use error_errno()
http.c: use error_errno() and warning_errno()
ident.c: use warning_errno()
mailmap.c: use error_errno()
reachable.c: use error_errno()
rerere.c: use error_errno() and warning_errno()
run-command.c: use error_errno()
sequencer.c: use error_errno()
server-info.c: use error_errno()
sha1_file.c: use {error,die,warning}_errno()
transport-helper.c: use error_errno()
unpack-trees.c: use error_errno()
upload-pack.c: use error_errno()
vcs-svn: use error_errno()
wrapper.c: use warning_errno()
wrap-for-bin.sh: regenerate bin-wrappers when switching branches
Nikola Forró (1):
difftool/mergetool: make the form of yes/no questions consistent
Ori Avtalion (1):
Documentation: git diff --check detects conflict markers
Pablo Santiago Blum de Aguiar (1):
git-cherry-pick.txt: correct a small typo
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (2597t0f0u)
Pranit Bauva (9):
t/t7502 : drop duplicate test
api-parse-options.txt: document OPT_CMDMODE()
t0040-test-parse-options.sh: fix style issues
test-parse-options: print quiet as integer
t0040-parse-options: improve test coverage
t/t7507: improve test coverage
parse-options.c: make OPTION_COUNTUP respect "unspecified" values
t7507-commit-verbose: improve test coverage by testing number of diffs
commit: add a commit.verbose config variable
Ralf Thielow (5):
completion: add option '--guides' to 'git help'
completion: add 'revisions' and 'everyday' to 'git help'
rebase-i: print an abbreviated hash when stop for editing
string_list: use string-list API in unsorted_string_list_lookup()
l10n: de.po: translate 104 new messages
Ramsay Jones (3):
xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
xdiff/xprepare: fix a memory leak
log: document the --decorate=auto option
Ray Chen (1):
l10n: zh_CN: review for git v2.9.0 l10n round 1
Ray Zhang (1):
worktree: add: introduce --checkout option
René Nyffenegger (1):
Documentation: fix typo 'In such these cases'
René Scharfe (3):
apply: remove unused parameters from name_terminate()
patch-id: use starts_with() and skip_prefix()
perf: make the tests work without a worktree
SZEDER Gábor (6):
diffcore: fix iteration order of identical files during rename detection
for-each-ref: fix description of '--contains' in manpage
test-lib: simplify '--option=value' parsing
t9824: fix broken &&-chain in a subshell
t5510: run auto-gc in the foreground
Documentation/git-send-email: fix typo in gmail 2FA section
Santiago Torres (6):
builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
t7030: test verifying multiple tags
verify-tag: update variable name and type
verify-tag: prepare verify_tag for libification
verify-tag: move tag verification code to tag.c
tag -v: verify directly rather than exec-ing verify-tag
Saurav Sachidanand (1):
dir: store EXC_FLAG_* values in unsigned integers
Shin Kojima (1):
gitweb: apply fallback encoding before highlight
Sidhant Sharma [:tk] (1):
builtin/receive-pack.c: use parse_options API
Stanislav Kolotinskiy (1):
git-send-pack: fix --all option when used with directory
Stefan Beller (46):
submodule-config: keep update strategy around
submodule-config: drop check against NULL
fetching submodules: respect `submodule.fetchJobs` config option
submodule update: direct error message to stderr
run_processes_parallel: treat output of children as byte array
run_processes_parallel: rename parameters for the callbacks
git submodule update: have a dedicated helper for cloning
submodule helper: remove double 'fatal: ' prefix
submodule update: expose parallelism to the user
clone: allow an explicit argument for parallel submodule clones
clone tests: rename t57* => t56*
rebase: decouple --exec from --interactive
t3404: cleanup double empty lines between tests
submodule foreach: correct path display in recursive submodules
submodule update --init: correct path handling in recursive submodules
submodule status: correct path handling in recursive submodules
submodule update: align reporting path for custom command execution
submodule update: test recursive path reporting from subdirectory
t7407: make expectation as clear as possible
recursive submodules: test for relative paths
submodule--helper: fix potential NULL-dereference
submodule--helper clone: create the submodule path just once
notes: don't leak memory in git_config_get_notes_strategy
abbrev_sha1_in_line: don't leak memory
bundle: don't leak an fd in case of early return
credential-cache, send_request: close fd when done
submodule--helper, module_clone: always operate on absolute paths
submodule--helper, module_clone: catch fprintf failure
submodule: port resolve_relative_url from shell to C
submodule: port init from shell to C
xdiff: implement empty line chunk heuristic
mv: allow moving nested submodules
clone: add `--shallow-submodules` flag
config doc: improve exit code listing
config.c: drop local variable
submodule-config: don't shadow `cache`
submodule init: fail gracefully with a missing .gitmodules file
submodule--helper update-clone: abort gracefully on missing .gitmodules
submodule deinit test: fix broken && chain in subshell
submodule init: redirect stdout to stderr
t7300: mark test with SANITY
submodule deinit: require '--all' instead of '.' for all submodules
t3513: do not compress backup tar file
t6041: do not compress backup tar file
submodule--helper: offer a consistent API
submodule: remove bashism from shell script
Stephen P. Smith (1):
wt-status.c: set commitable bit if there is a meaningful merge.
Sven Strickroth (3):
commit: do not lose SQUASH_MSG contents
MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
MSVC: use shipped headers instead of fallback definitions
Torsten Bögershausen (6):
correct blame for files commited with CRLF
t0027: make commit_chk_wrnNNO() reliable
convert: allow core.autocrlf=input and core.eol=crlf
t0027: test cases for combined attributes
convert.c: ident + core.autocrlf didn't work
t5601: Remove trailing space in sed expression
Trần Ngọc Quân (1):
l10n: Updated Vietnamese translation (2597t)
Vasco Almeida (19):
l10n: fr: fix transcation of "dir"
l10n: fr: fix wrongly translated option name
l10n: fr: change "id de clé" to match "id-clé"
l10n: fr: don't translate "merge" as a parameter
i18n: index-pack: use plural string instead of normal one
i18n: builtin/branch.c: mark option for translation
i18n: unpack-trees: mark strings for translation
i18n: builtin/rm.c: remove a comma ',' from string
i18n: branch: unmark string for translation
i18n: branch: move comment for translators
i18n: git-parse-remote.sh: mark strings for translation
i18n: builtin/pull.c: mark placeholders for translation
i18n: builtin/pull.c: split strings marked for translation
i18n: remote: add comment for translators
Documentation/git-mailinfo: fix typo
i18n: unpack-trees: avoid substituting only a verb in sentences
l10n: pt_PT: merge git.pot file
l10n: pt_PT: update according to git-gui glossary
l10n: pt_PT: update Portuguese translation
Xiaolong Ye (4):
patch-ids: make commit_patch_id() a public helper function
format-patch: add '--base' option to record base tree info
format-patch: introduce --base=auto option
format-patch: introduce format.useAutoBase configuration
brian m. carlson (6):
sha1-name: introduce a get_oid() function
test-match-trees: convert to use struct object_id
match-trees: convert shift_tree() and shift_tree_by() to use object_id
struct name_entry: use struct object_id instead of unsigned char sha1[20]
tree-walk: convert tree_entry_extract() to use struct object_id
match-trees: convert several leaf functions to use struct object_id
Ævar Arnfjörð Bjarmason (4):
githooks.txt: improve the intro section
githooks.txt: amend dangerous advice about 'update' hook ACL
githooks.txt: minor improvements to the grammar & phrasing
hooks: allow customizing where the hook directory is
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.9.0-rc2
@ 2016-06-07 5:57 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-06-07 5:57 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.9.0-rc2 is now available for testing
at the usual places. It is comprised of 477 non-merge commits
since v2.8.0, contributed by 67 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.9.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.8.0 are as follows.
Welcome to the Git development community!
Alexander Rinass, Armin Kunaschik, Benjamin Dopplinger,
Ben Woosley, Erwan Mathoniere, Gabriel Souza Franco, Jacob
Nisnevich, Jan Durovec, Jean-Noël Avila, Kazuki Yamaguchi,
Keller Fuchs, Laurent Arnoud, Li Peng, Marios Titas, Mehul Jain,
Michael Procter, Nikola Forró, Pablo Santiago Blum de Aguiar,
Pranit Bauva, Ray Zhang, René Nyffenegger, Santiago Torres,
Saurav Sachidanand, Shin Kojima, Sidhant Sharma [:tk], Stanislav
Kolotinskiy, and Xiaolong Ye.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Kuleshov,
brian m. carlson, Brian Norris, Christian Couder, David Aguilar,
David Turner, Dennis Kaarsemaker, Elia Pinto, Elijah Newren,
Eric Sunshine, Eric Wong, Felipe Contreras, Jacob Keller,
Jeff King, Jiang Xin, Johannes Schindelin, Johannes Sixt,
John Keeping, Junio C Hamano, Karsten Blees, Lars Schneider,
Linus Torvalds, Luke Diamand, Matthieu Moy, Michael Haggerty,
Michael J Gruber, Michael Rappazzo, Nguyễn Thái Ngọc
Duy, Ori Avtalion, Ralf Thielow, Ramsay Jones, René Scharfe,
Stefan Beller, Stephen P. Smith, Sven Strickroth, SZEDER Gábor,
Torsten Bögershausen, and Vasco Almeida.
----------------------------------------------------------------
Git 2.9 Release Notes (draft)
=============================
Backward compatibility notes
----------------------------
The end-user facing Porcelain level commands in the "git diff" and
"git log" family by default enable the rename detection; you can still
use "diff.renames" configuration variable to disable this.
Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.
The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default. You can use
the "--no-expand-tabs" option to disable this.
"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.
Updates since v2.8
------------------
UI, Workflows & Features
* Comes with git-multimail 1.3.1 (in contrib/).
* The end-user facing commands like "git diff" and "git log"
now enable the rename detection by default.
* The credential.helper configuration variable is cumulative and
there is no good way to override it from the command line. As
a special case, giving an empty string as its value now serves
as the signal to clear the values specified in various files.
* A new "interactive.diffFilter" configuration can be used to
customize the diff shown in "git add -i" sessions.
* "git p4" now allows P4 author names to be mapped to Git author
names.
* "git rebase -x" can be used without passing "-i" option.
* "git -c credential.<var>=<value> submodule" can now be used to
propagate configuration variables related to credential helper
down to the submodules.
* "git tag" can create an annotated tag without explicitly given an
"-a" (or "-s") option (i.e. when a tag message is given). A new
configuration variable, tag.forceSignAnnotated, can be used to tell
the command to create signed tag in such a situation.
* "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.
* "git pull" has been taught to pass the "--allow-unrelated-histories"
option to underlying "git merge".
* "git apply -v" learned to report paths in the patch that were
skipped via --include/--exclude mechanism or being outside the
current working directory.
* Shell completion (in contrib/) updates.
* The commit object name reported when "rebase -i" stops has been
shortened.
* "git worktree add" can be given "--no-checkout" option to only
create an empty worktree without checking out the files.
* "git mergetools" learned to drive ExamDiff.
* "git pull --rebase" learned "--[no-]autostash" option, so that
the rebase.autostash configuration variable set to true can be
overridden from the command line.
* 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 to help
such a case, and allows the users to override it with a new option,
"--no-expand-tabs".
* "git send-email" now uses a more readable timestamps when
formulating a message ID.
* "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.
* "git p4" learned to record P4 jobs in Git commit that imports from
the history in Perforce.
* "git describe --contains" often made a hard-to-justify choice of
tag to name a given commit, because it tried to come up
with a name with smallest number of hops from a tag, causing an old
commit whose close descendant that is recently tagged were not
described with respect to an old tag but with a newer tag. It did
not help that its computation of "hop" count was further tweaked to
penalize being on a side branch of a merge. The logic has been
updated to favor using the tag with the oldest tagger date, which
is a lot easier to explain to the end users: "We describe a commit
in terms of the (chronologically) oldest tag that contains the
commit."
* "git clone" learned the "--shallow-submodules" option.
* HTTP transport clients learned to throw extra HTTP headers at the
server, specified via http.extraHeader configuration variable.
* Patch output from "git diff" and friends has been tweaked to be
more readable by using a blank line as a strong hint that the
contents before and after it belong to logically separate units.
* A new configuration variable core.hooksPath allows customizing
where the hook directory is.
* An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
submodule honor -c credential.* from command line, 2016-02-29)
turned out to be a convoluted no-op; implement what it wanted to do
correctly, and stop filtering settings given via "git -c var=val".
* "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). This is a stop-gap
measure in that "commit --short --dry-run" still gives an incorrect
result.
* The experimental "multiple worktree" feature gains more safety to
forbid operations on a branch that is checked out or being actively
worked on elsewhere, by noticing that e.g. it is being rebased.
* "git format-patch" learned a new "--base" option to record what
(public, well-known) commit the original series was built on in
its output.
* "git commit" learned to pay attention to the "commit.verbose"
configuration variable and act as if the "--verbose" option
was given from the command line.
* Updated documentation gives hints to GMail users with two-factor
auth enabled that they need app-specific-password when using
"git send-email".
* The manpage output of our documentation did not render well in
terminal; typeset literals in bold by default to make them stand
out more.
* The mark-up in the top-level README.md file has been updated to
typeset CLI command names differently from the body text.
Performance, Internal Implementation, Development Support etc.
* The embedded args argv-array in the child process is used to build
the command line to run pack-objects instead of using a separate
array of strings.
* A test for tags has been restructured so that more parts of it can
easily be run on a platform without a working GnuPG.
* The startup_info data, which records if we are working inside a
repository (among other things), are now uniformly available to Git
subcommand implementations, and Git avoids attempting to touch
references when we are not in a repository.
* The command line argument parser for "receive-pack" has been
rewritten to use parse-options.
* A major part of "git submodule update" has been ported to C to take
advantage of the recently added framework to run download tasks in
parallel. Other updates to "git submodule" that move pieces of
logic to C continues.
* Rename bunch of tests on "git clone" for better organization.
* The tests that involve running httpd leaked the system-wide
configuration in /etc/gitconfig to the tested environment.
* Build updates for MSVC.
* 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.
* Code restructuring around the "refs" API to prepare for pluggable
refs backends.
* Sources to many test helper binaries and the generated helpers
have been moved to t/helper/ subdirectory to reduce clutter at the
top level of the tree.
* Unify internal logic between "git tag -v" and "git verify-tag"
commands by making one directly call into the other.
* "merge-recursive" strategy incorrectly checked if a path that is
involved in its internal merge exists in the working tree.
* The test scripts for "git p4" (but not "git p4" implementation
itself) has been updated so that they would work even on a system
where the installed version of Python is python 3.
* As nobody maintains our in-tree git.spec.in and distros use their
own spec file, we stopped pretending that we support "make rpm".
* Move from "unsigned char[20]" to "struct object_id" continues.
* The code for warning_errno/die_errno has been refactored and a new
error_errno() reporting helper is introduced.
(merge 1da045f nd/error-errno later to maint).
* Running tests with '-x' option to trace the individual command
executions is a useful way to debug test scripts, but some tests
that capture the standard error stream and check what the command
said can be broken with the trace output mixed in. When running
our tests under "bash", however, we can redirect the trace output
to another file descriptor to keep the standard error of programs
being tested intact.
* t0040 had too many unnecessary repetitions in its test data. Teach
test-parse-options program so that a caller can tell what it
expects in its output, so that these repetitions can be cleaned up.
* Add perf test for "rebase -i".
* Common mistakes when writing gitlink: in our documentation are
found by "make check-docs".
* t9xxx series has been updated primarily for readability, while
fixing small bugs in it. A few scripted Porcelain commands have
also been updated to fix possible bugs around their use of
"test -z" and "test -n".
* CI test was taught to run git-svn tests.
* "git cat-file --batch-all" has been sped up, by taking advantage
of the fact that it does not have to read a list of objects, in two
ways.
* test updates to make it more readable and maintainable.
(merge e6273f4 es/t1500-modernize later to maint).
* "make DEVELOPER=1" worked as expected; setting DEVELOPER=1 in
config.mak didn't.
(merge 51dd3e8 mm/makefile-developer-can-be-in-config-mak later to maint).
* The way how "submodule--helper list" signals unmatch error to its
callers has been updated.
* A bash-ism "local" has been removed from "git submodule" scripted
Porcelain.
Also contains various documentation updates and code clean-ups.
Fixes since v2.8
----------------
Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git config --get-urlmatch", unlike other variants of the "git
config --get" family, did not signal error with its exit status
when there was no matching configuration.
* The "--local-env-vars" and "--resolve-git-dir" options of "git
rev-parse" failed to work outside a repository when the command's
option parsing was rewritten in 1.8.5 era.
* "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.
* Fetching of history by naming a commit object name directly didn't
work across remote-curl transport.
* A small memory leak in an error codepath has been plugged in xdiff
code.
* strbuf_getwholeline() did not NUL-terminate the buffer on certain
corner cases in its error codepath.
* "git mergetool" did not work well with conflicts that both sides
deleted.
* "git send-email" had trouble parsing alias file in mailrc format
when lines in it had trailing whitespaces on them.
* When "git merge --squash" stopped due to conflict, the concluding
"git commit" failed to read in the SQUASH_MSG that shows the log
messages from all the squashed commits.
* "git merge FETCH_HEAD" dereferenced NULL pointer when merging
nothing into an unborn history (which is arguably unusual usage,
which perhaps was the reason why nobody noticed it).
* When "git worktree" feature is in use, "git branch -d" allowed
deletion of a branch that is checked out in another worktree,
which was wrong.
* 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.
* "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.
* "git send-pack --all <there>" was broken when its command line
option parsing was written in the 2.6 timeframe.
* "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.
* 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.
* 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).
* 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.
* "git commit" misbehaved in a few minor ways when an empty message
is given via -m '', all of which has been corrected.
* Support for CRAM-MD5 authentication method in "git imap-send" did
not work well.
* Upcoming OpenSSL 1.1.0 will break compilation by updating a few API
elements we use in imap-send, which has been adjusted for the change.
* The socks5:// proxy support added back in 2.6.4 days was not aware
that socks5h:// proxies behave differently from socks5:// proxies.
* "git config" had a codepath that tried to pass a NULL to
printf("%s"), which nobody seems to have noticed.
* On Cygwin, object creation uses the "create a temporary and then
rename it to the final name" pattern, not "create a temporary,
hardlink it to the final name and then unlink the temporary"
pattern.
This is necessary to use Git on Windows shared directories, and is
already enabled for the MinGW and plain Windows builds. It also
has been used in Cygwin packaged versions of Git for quite a while.
See http://thread.gmane.org/gmane.comp.version-control.git/291853
* "merge-octopus" strategy did not ensure that the index is clean
when merge begins.
* When "git merge" notices that the merge can be resolved purely at
the tree level (without having to merge blobs) and the resulting
tree happens to already exist in the object store, it forgot to
update the index, which left an inconsistent state that would
break later operations.
* "git submodule" reports the paths of submodules the command
recurses into, but these paths were incorrectly reported when
the command was not run from the root level of the superproject.
* 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.
* "git mv old new" did not adjust the path for a submodule that lives
as a subdirectory inside old/ directory correctly.
* "git replace -e" did not honour "core.editor" configuration.
* "git push" from a corrupt repository that attempts to push a large
number of refs deadlocked; the thread to relay rejection notices
for these ref updates blocked on writing them to the main thread,
after the main thread at the receiving end notices that the push
failed and decides not to read these notices and return a failure.
* mmap emulation on Windows has been optimized and work better without
consuming paging store when not needed.
* A question by "git send-email" to ask the identity of the sender
has been updated.
* UI consistency improvements for "git mergetool".
* "git rebase -m" could be asked to rebase an entire branch starting
from the root, but failed by assuming that there always is a parent
commit to the first commit on the branch.
* Fix a broken "p4 lfs" test.
* Recent update to Git LFS broke "git p4" by changing the output from
its "lfs pointer" subcommand.
* "git fetch" test t5510 was flaky while running a (forced) automagic
garbage collection.
* Documentation updates to help contributors setting up Travis CI
test for their patches.
* Some multi-byte encoding can have a backslash byte as a later part
of one letter, which would confuse "highlight" filter used in
gitweb.
* "git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake. Rework "git rebase" that
relied on this mistake so that it reads commit.gpgsign and pass (or
not pass) the -S option to "git commit-tree" to keep the end-user
expectation the same, while teaching "git commit-tree" to ignore
the configuration variable. This will stop requiring the users to
sign commit objects used internally as an implementation detail of
"git stash".
* "http.cookieFile" configuration variable clearly wants a pathname,
but we forgot to treat it as such by e.g. applying tilde expansion.
* Consolidate description of tilde-expansion that is done to
configuration variables that take pathname to a single place.
* Correct faulty recommendation to use "git submodule deinit ." when
de-initialising all submodules, which would result in a strange
error message in a pathological corner case.
* Many 'linkgit:<git documentation page>' references were broken,
which are all fixed with this.
* "git rerere" can get confused by conflict markers deliberately left
by the inner merge step, because they are indistinguishable from
the real conflict markers left by the outermost merge which are
what the end user and "rerere" need to look at. This was fixed by
making the conflict markers left by the inner merges a bit longer.
(merge 0f9fd5c jc/ll-merge-internal later to maint).
* CI test was taught to build documentation pages.
* "git fsck" learned to catch NUL byte in a commit object as
potential error and warn.
* Portability enhancement for "rebase -i" to help platforms whose
shell does not like "for i in <empty>" (which is not POSIX-kosher).
* On Windows, .git and optionally any files whose name starts with a
dot are now marked as hidden, with a core.hideDotFiles knob to
customize this behaviour.
* Documentation for "git merge --verify-signatures" has been updated
to clarify that the signature of only the commit at the tip is
verified. Also the phrasing used for signature and key validity is
adjusted to align with that used by OpenPGP.
* A couple of bugs around core.autocrlf have been fixed.
* 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.
* "git difftool" learned to handle unmerged paths correctly in
dir-diff mode.
* The "are we talking with TTY, doing an interactive session?"
detection has been updated to work better for "Git for Windows".
* We forgot to add "git log --decorate=auto" to documentation when we
added the feature back in v2.1.0 timeframe.
(merge 462cbb4 rj/log-decorate-auto later to maint).
* "git fast-import --export-marks" would overwrite the existing marks
file even when it makes a dump from its custom die routine.
Prevent it from doing so when we have an import-marks file but
haven't finished reading it.
(merge f4beed6 fc/fast-import-broken-marks-file later to maint).
* "git rebase -i", after it fails to auto-resolve the conflict, had
an unnecessary call to "git rerere" from its very early days, which
was spotted recently; the call has been removed.
(merge 7063693 js/rebase-i-dedup-call-to-rerere later to maint).
* Other minor clean-ups and documentation updates
(merge cd82b7a pa/cherry-pick-doc-typo later to maint).
(merge 2bb73ae rs/patch-id-use-skip-prefix later to maint).
(merge aa20cbc rs/apply-name-terminate later to maint).
----------------------------------------------------------------
Changes since v2.8.0 are as follows:
Adam Dinwoodie (2):
config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
commit: --amend -m '' silently fails to wipe message
Alexander Kuleshov (1):
submodule-config: use hashmap_iter_first()
Alexander Rinass (1):
diff: run arguments through precompose_argv
Armin Kunaschik (2):
t4151: make sure argument to 'test -z' is given
t0008: 4 tests fail with ksh88
Ben Woosley (1):
git-rebase--merge: don't include absent parent as a base
Benjamin Dopplinger (1):
README.md: format CLI commands with code syntax
Brian Norris (3):
Documentation: config: improve word ordering for http.cookieFile
http: expand http.cookieFile as a path
config: consistently format $variables in monospaced font
Christian Couder (5):
Documentation: talk about pager in api-trace.txt
builtin/apply: get rid of useless 'name' variable
builtin/apply: handle parse_binary() failure
builtin/apply: free patch when parse_chunk() fails
Git/SVN: die when there is no commit metadata
David Aguilar (4):
mergetool: support delete/delete conflicts
mergetool: honor tempfile configuration when resolving delete conflicts
difftool: initialize variables for readability
difftool: handle unmerged files in dir-diff mode
David Turner (5):
refs: move head_ref{,_submodule} to the common code
refs: move for_each_*ref* functions into common code
files-backend: break out ref reading
refs: move resolve_ref_unsafe into common code
refs: on symref reflog expire, lock symref not referrent
Dennis Kaarsemaker (1):
Makefile: remove dependency on git.spec
Elia Pinto (1):
api-trace.txt: fix typo
Elijah Newren (6):
merge-recursive: remove duplicate code
merge-recursive: do not check working copy when creating a virtual merge base
t7605: add a testcase demonstrating a bug with trivial merges
builtin/merge.c: fix a bug with trivial merges
merge-octopus: abort if index does not match HEAD
t6044: new merge testcases for when index doesn't match HEAD
Eric Sunshine (10):
lib-gpg: drop unnecessary "missing GPG" warning
t6302: normalize names and descriptions of signed tags
t6302: also test annotated in addition to signed tags
t6302: skip only signed tags rather than all tests when GPG is missing
git-format-patch.txt: don't show -s as shorthand for multiple options
t1500: be considerate to future potential tests
t1500: test_rev_parse: facilitate future test enhancements
t1500: avoid changing working directory outside of tests
t1500: avoid setting configuration options outside of tests
t1500: avoid setting environment variables outside of tests
Eric Wong (4):
send-email: more meaningful Message-ID
send-email: do not load Data::Dumper
pack-objects: warn on split packs disabling bitmaps
.mailmap: update to my shorter email address
Erwan Mathoniere (1):
Documentation: bold literals in man
Felipe Contreras (1):
fast-import: do not truncate exported marks file
Gabriel Souza Franco (2):
fetch-pack: fix object_id of exact sha1
fetch-pack: update the documentation for "<refs>..." arguments
Jacob Keller (7):
submodule: don't pass empty string arguments to submodule--helper clone
submodule: check argc count for git submodule--helper clone
submodule: fix submodule--helper clone usage
submodule: fix segmentation fault in submodule--helper clone
quote: implement sq_quotef()
git: submodule honor -c credential.* from command line
xdiff: add recs_match helper function
Jacob Nisnevich (2):
mergetools: create mergetool_find_win32_cmd() helper function for winmerge
mergetools: add support for ExamDiff
Jan Durovec (2):
git-p4: clean-up code style in tests
git-p4: add P4 jobs to git commit message
Jeff King (55):
credential: let empty credential specs reset helper list
t1515: add tests for rev-parse out-of-repo helpers
add--interactive: allow custom diff highlighting programs
rev-parse: let some options run outside repository
strbuf_getwholeline: NUL-terminate getdelim buffer on error
setup: make startup_info available everywhere
setup: set startup_info->have_repository more reliably
remote: don't resolve HEAD in non-repository
mailmap: do not resolve blobs in a non-repository
grep: turn off gitlink detection for --no-index
use setup_git_directory() in test-* programs
setup: document check_repository_format()
wrap shared_repository global in get/set accessors
lazily load core.sharedrepository
check_repository_format_gently: stop using git_config_early
config: drop git_config_early
setup: refactor repo format reading and verification
init: use setup.c's repo version verification
setup: unify repository version callbacks
setup: drop repository_format_version global
verify_repository_format: mark messages for translation
send-email: ignore trailing whitespace in mailrc alias file
credential-cache--daemon: clarify "exit" action semantics
t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env
git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
branch: fix shortening of non-remote symrefs
commit: do not ignore an empty message given by -m ''
config: lower-case first word of error strings
git_config_set_multivar_in_file: all non-zero returns are errors
git_config_set_multivar_in_file: handle "unset" errors
t5532: use write_script
send-pack: close demux pipe before finishing async process
run-command: teach async threads to ignore SIGPIPE
send-pack: isolate sigpipe in demuxer thread
fetch-pack: isolate sigpipe in demuxer thread
t5504: drop sigpipe=ok from push tests
remote.c: spell __attribute__ correctly
t5550: fix typo in $HTTPD_URL
t5550: break submodule config test into multiple sub-tests
submodule: export sanitized GIT_CONFIG_PARAMETERS
submodule--helper: move config-sanitizing to submodule.c
submodule: use prepare_submodule_repo_env consistently
submodule: stop sanitizing config options
t6302: simplify non-gpg cases
rebase--interactive: avoid empty list in shell for-loop
test-lib: set BASH_XTRACEFD automatically
t/lib-git-svn: drop $remote_git_svn and $git_svn_id
t9100,t3419: enclose all test code in single-quotes
t9107: use "return 1" instead of "exit 1"
t9107: switch inverted single/double quotes in test
t9103: modernize test style
always quote shell arguments to test -z/-n
cat-file: avoid noop calls to sha1_object_info_extended
cat-file: default to --buffer when --batch-all-objects is used
archive-tar: convert snprintf to xsnprintf
Johannes Schindelin (16):
replace --edit: respect core.editor
name-rev: include taggerdate in considering the best name
win32mmap: set errno appropriately
mmap(win32): avoid copy-on-write when it is unnecessary
mmap(win32): avoid expensive fstat() call
http: support sending custom HTTP headers
tests: adjust the configuration for Apache 2.2
t5551: make the test for extra HTTP headers more robust
t3404: fix typo
submodule: ensure that -c http.extraheader is heeded
mingw: introduce the 'core.hideDotFiles' setting
mingw: remove unnecessary definition
Windows: only add a no-op pthread_sigmask() when needed
perf: let's disable symlinks when they are not available
perf: make the tests work in worktrees
perf: run "rebase -i" under perf
Johannes Sixt (4):
Windows: shorten code by re-using convert_slashes()
Windows: add pthread_sigmask() that does nothing
t6044: replace seq by test_seq
rebase -i: remove an unnecessary 'rerere' invocation
John Keeping (3):
config: fail if --get-urlmatch finds no value
Documentation/git-config: use bulleted list for exit codes
Documentation/git-config: fix --get-all description
Junio C Hamano (77):
rerere: split conflict ID further
rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
index-pack: correct --keep[=<msg>]
index-pack: add a helper function to derive .idx/.keep filename
rerere: handle leftover rr-cache/$ID directory and postimage files
rerere: delay the recording of preimage
rerere: allow multiple variants to exist
t4200: rerere a merge with two identical conflicts
rerere: do use multiple variants
apply: remove unused call to free() in gitdiff_{old,new}name()
merge: fix NULL pointer dereference when merging nothing into void
merge: refuse to create too cool a merge by default
pretty: enable --expand-tabs by default for selected pretty formats
pretty: allow tweaking tabwidth in --expand-tabs
submodule--helper: do not borrow absolute_path() result for too long
Git 2.8.1
First batch for post 2.8 cycle
pretty: test --expand-tabs
Makefile: fix misdirected redirections
Second batch for post 2.8 cycle
Makefile: stop pretending to support rpmbuild
rerere: gc and clear
rerere: move code related to "forget" together
rerere: split code to call ll_merge() further
rerere: adjust 'forget' to multi-variant world order
setup.c: do not feed NULL to "%.*s" even with precision 0
Third batch for post 2.8 cycle
http: differentiate socks5:// and socks5h://
t1020: do not overuse printf and use write_script
t3404: use write_script
Fourth batch for post 2.8 cycle
Start preparing for 2.8.2
fsck_commit_buffer(): do not special case the last validation
ll-merge: fix typo in comment
Prepare for 2.8.2
Makefile: clean *.o files we create
Fifth batch for post 2.8 cycle
t3033: avoid 'ambiguous refs' warning
pull: pass --allow-unrelated-histories to "git merge"
Sixth batch for post 2.8 cycle
send-email: fix grammo in the prompt that asks e-mail recipients
Seventh batch for post 2.8 cycle
Git 2.8.2
Eighth batch for 2.9
diff: undocument the compaction heuristic knobs for experimentation
Start preparing for 2.8.3
commit-tree: do not pay attention to commit.gpgsign
Ninth batch for 2.9
config: describe 'pathname' value type
Tenth batch for 2.9
Almost ready for 2.8.3
test-lib-functions.sh: remove misleading comment on test_seq
test-lib-functions.sh: rewrite test_seq without Perl
ll-merge: use a longer conflict marker for internal merge
t6036: remove pointless test that expects failure
Documentation: fix linkgit references
fsck: detect and warn a commit with embedded NUL
ci: validate "linkgit:" in documentation
test-parse-options: fix output when callback option fails
test-parse-options: --expect=<string> option to simplify tests
t0040: remove unused test helpers
t0040: convert a few tests to use test-parse-options --expect
Eleventh batch for 2.9
rerere: plug memory leaks upon "rerere forget" failure
Twelfth batch for 2.9
Thirteenth batch for 2.9
Git 2.8.3
rerere: remove an null statement
Git 2.9-rc0
t4204: do not let $name variable clobbered
Start preparing for 2.8.4
Final batch before 2.9-rc1
More topics for 2.8.4
Git 2.9-rc1
Almost ready for 2.9-rc2
Git 2.8.4
Git 2.9-rc2
Karsten Blees (1):
mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)
Kazuki Yamaguchi (10):
branch -d: refuse deleting a branch which is currently checked out
refs: add a new function set_worktree_head_symref
branch -m: update all per-worktree HEADs
set_worktree_head_symref(): fix error message
imap-send: use HMAC() function provided by OpenSSL
imap-send: check NULL return of SSL_CTX_new()
imap-send: avoid deprecated TLSv1_method()
configure: remove checking for HMAC_CTX_cleanup
imap-send: check for NOLOGIN capability only when using LOGIN command
imap-send: fix CRAM-MD5 response calculation
Keller Fuchs (1):
Documentation: clarify signature verification
Lars Schneider (8):
git-p4: map a P4 user to Git author name and email address
travis-ci: update Git-LFS and P4 to the latest version
travis-ci: express Linux/OS X dependency versions more clearly
git-p4: fix Git LFS pointer parsing
t9824: fix wrong reference value
Documentation: add setup instructions for Travis CI
travis-ci: build documentation
travis-ci: enable Git SVN tests t91xx on Linux
Laurent Arnoud (1):
tag: add the option to force signing of annotated tags
Li Peng (1):
typofix: assorted typofixes in comments, documentation and messages
Linus Torvalds (1):
pretty: expand tabs in indented logs to make things line up properly
Luke Diamand (3):
git-p4 tests: cd to / before running python
git-p4 tests: work with python3 as well as python2
git-p4 tests: time_in_seconds should use $PYTHON_PATH
Marios Titas (2):
ident: check for useConfigOnly before auto-detection of name/email
ident: give "please tell me" message upon useConfigOnly error
Matthieu Moy (13):
Documentation/diff-config: fix description of diff.renames
t4001-diff-rename: wrap file creations in a test
t: add tests for diff.renames (true/false/unset)
log: introduce init_log_defaults()
diff: activate diff.renames by default
lockfile: mark strings for translation
lockfile: improve error message when lockfile exists
git.spec.in: use README.md, not README
README.md: don't take 'commandname' literally
git-multimail: update to release 1.3.0
git-multimail: update to release 1.3.1
Makefile: move 'ifdef DEVELOPER' after config.mak* inclusion
Makefile: add $(DEVELOPER_CFLAGS) variable
Mehul Jain (9):
git-pull.c: introduce git_pull_config()
pull --rebase: add --[no-]autostash flag
t5520: use consistent capitalization in test titles
t5520: ensure consistent test conditions
t5520: use better test to check stderr output
t5520: factor out common "successful autostash" code
t5520: factor out common "failing autostash" code
t5520: reduce commom lines of code
t5520: test --[no-]autostash with pull.rebase=true
Michael Haggerty (19):
t1430: test the output and error of some commands more carefully
t1430: clean up broken refs/tags/shadow
t1430: don't rely on symbolic-ref for creating broken symrefs
t1430: test for-each-ref in the presence of badly-named refs
t1430: improve test coverage of deletion of badly-named refs
resolve_missing_loose_ref(): simplify semantics
resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
resolve_ref_unsafe(): ensure flags is always set
resolve_ref_1(): eliminate local variable
resolve_ref_1(): reorder code
resolve_ref_1(): eliminate local variable "bad_name"
read_raw_ref(): manage own scratch space
files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
read_raw_ref(): change flags parameter to unsigned int
fsck_head_link(): remove unneeded flag variable
cmd_merge(): remove unneeded flag variable
checkout_paths(): remove unneeded flag variable
check_aliased_update(): check that dst_name is non-NULL
show_head_ref(): check the result of resolve_ref_namespace()
Michael J Gruber (1):
completion: complete --cherry-mark for git log
Michael Procter (1):
upload-pack: use argv_array for pack_objects
Michael Rappazzo (1):
Documentation: add instructions to help setup gmail 2FA
Nguyễn Thái Ngọc Duy (62):
git-apply.txt: remove a space
git-apply.txt: mention the behavior inside a subdir
apply: report patch skipping in verbose mode
test helpers: move test-* to t/helper/ subdirectory
dir.c: remove dead function fnmatch_icase()
wrapper.c: delete dead function git_mkstemps()
dir.c: rename str(n)cmp_icase to fspath(n)cmp
path.c: add git_common_path() and strbuf_git_common_path()
worktree.c: store "id" instead of "git_dir"
worktree.c: make find_shared_symref() return struct worktree *
worktree.c: mark current worktree
path.c: refactor and add worktree_git_path()
wt-status.c: split rebase detection out of wt_status_get_state()
wt-status.c: make wt_status_check_rebase() work on any worktree
worktree.c: avoid referencing to worktrees[i] multiple times
worktree.c: check whether branch is rebased in another worktree
wt-status.c: split bisect detection out of wt_status_get_state()
worktree.c: check whether branch is bisected in another worktree
branch: do not rename a branch under bisect or rebase
remote.c: specify correct plural form in "commit diverge" message
usage.c: move format processing out of die_errno()
usage.c: add warning_errno() and error_errno()
bisect.c: use die_errno() and warning_errno()
builtin/am.c: use error_errno()
builtin/branch.c: use error_errno()
builtin/fetch.c: use error_errno()
builtin/help.c: use warning_errno()
builtin/mailsplit.c: use error_errno()
builtin/merge-file.c: use error_errno()
builtin/pack-objects.c: use die_errno() and warning_errno()
builtin/rm.c: use warning_errno()
builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
builtin/upload-archive.c: use error_errno()
builtin/worktree.c: use error_errno()
check-racy.c: use error_errno()
combine-diff.c: use error_errno()
compat/win32/syslog.c: use warning_errno()
config.c: use error_errno()
connected.c: use error_errno()
copy.c: use error_errno()
credential-cache--daemon.c: use warning_errno()
diff-no-index.c: use error_errno()
editor.c: use error_errno()
entry.c: use error_errno()
fast-import.c: use error_errno()
gpg-interface.c: use error_errno()
grep.c: use error_errno()
http.c: use error_errno() and warning_errno()
ident.c: use warning_errno()
mailmap.c: use error_errno()
reachable.c: use error_errno()
rerere.c: use error_errno() and warning_errno()
run-command.c: use error_errno()
sequencer.c: use error_errno()
server-info.c: use error_errno()
sha1_file.c: use {error,die,warning}_errno()
transport-helper.c: use error_errno()
unpack-trees.c: use error_errno()
upload-pack.c: use error_errno()
vcs-svn: use error_errno()
wrapper.c: use warning_errno()
wrap-for-bin.sh: regenerate bin-wrappers when switching branches
Nikola Forró (1):
difftool/mergetool: make the form of yes/no questions consistent
Ori Avtalion (1):
Documentation: git diff --check detects conflict markers
Pablo Santiago Blum de Aguiar (1):
git-cherry-pick.txt: correct a small typo
Pranit Bauva (9):
t/t7502 : drop duplicate test
api-parse-options.txt: document OPT_CMDMODE()
t0040-test-parse-options.sh: fix style issues
test-parse-options: print quiet as integer
t0040-parse-options: improve test coverage
t/t7507: improve test coverage
parse-options.c: make OPTION_COUNTUP respect "unspecified" values
t7507-commit-verbose: improve test coverage by testing number of diffs
commit: add a commit.verbose config variable
Ralf Thielow (4):
completion: add option '--guides' to 'git help'
completion: add 'revisions' and 'everyday' to 'git help'
rebase-i: print an abbreviated hash when stop for editing
string_list: use string-list API in unsorted_string_list_lookup()
Ramsay Jones (3):
xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
xdiff/xprepare: fix a memory leak
log: document the --decorate=auto option
Ray Zhang (1):
worktree: add: introduce --checkout option
René Nyffenegger (1):
Documentation: fix typo 'In such these cases'
René Scharfe (3):
apply: remove unused parameters from name_terminate()
patch-id: use starts_with() and skip_prefix()
perf: make the tests work without a worktree
SZEDER Gábor (6):
diffcore: fix iteration order of identical files during rename detection
for-each-ref: fix description of '--contains' in manpage
test-lib: simplify '--option=value' parsing
t9824: fix broken &&-chain in a subshell
t5510: run auto-gc in the foreground
Documentation/git-send-email: fix typo in gmail 2FA section
Santiago Torres (6):
builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
t7030: test verifying multiple tags
verify-tag: update variable name and type
verify-tag: prepare verify_tag for libification
verify-tag: move tag verification code to tag.c
tag -v: verify directly rather than exec-ing verify-tag
Saurav Sachidanand (1):
dir: store EXC_FLAG_* values in unsigned integers
Shin Kojima (1):
gitweb: apply fallback encoding before highlight
Sidhant Sharma [:tk] (1):
builtin/receive-pack.c: use parse_options API
Stanislav Kolotinskiy (1):
git-send-pack: fix --all option when used with directory
Stefan Beller (46):
submodule-config: keep update strategy around
submodule-config: drop check against NULL
fetching submodules: respect `submodule.fetchJobs` config option
submodule update: direct error message to stderr
run_processes_parallel: treat output of children as byte array
run_processes_parallel: rename parameters for the callbacks
git submodule update: have a dedicated helper for cloning
submodule helper: remove double 'fatal: ' prefix
submodule update: expose parallelism to the user
clone: allow an explicit argument for parallel submodule clones
clone tests: rename t57* => t56*
rebase: decouple --exec from --interactive
t3404: cleanup double empty lines between tests
submodule foreach: correct path display in recursive submodules
submodule update --init: correct path handling in recursive submodules
submodule status: correct path handling in recursive submodules
submodule update: align reporting path for custom command execution
submodule update: test recursive path reporting from subdirectory
t7407: make expectation as clear as possible
recursive submodules: test for relative paths
submodule--helper: fix potential NULL-dereference
submodule--helper clone: create the submodule path just once
notes: don't leak memory in git_config_get_notes_strategy
abbrev_sha1_in_line: don't leak memory
bundle: don't leak an fd in case of early return
credential-cache, send_request: close fd when done
submodule--helper, module_clone: always operate on absolute paths
submodule--helper, module_clone: catch fprintf failure
submodule: port resolve_relative_url from shell to C
submodule: port init from shell to C
xdiff: implement empty line chunk heuristic
mv: allow moving nested submodules
clone: add `--shallow-submodules` flag
config doc: improve exit code listing
config.c: drop local variable
submodule-config: don't shadow `cache`
submodule init: fail gracefully with a missing .gitmodules file
submodule--helper update-clone: abort gracefully on missing .gitmodules
submodule deinit test: fix broken && chain in subshell
submodule init: redirect stdout to stderr
t7300: mark test with SANITY
submodule deinit: require '--all' instead of '.' for all submodules
t3513: do not compress backup tar file
t6041: do not compress backup tar file
submodule--helper: offer a consistent API
submodule: remove bashism from shell script
Stephen P. Smith (1):
wt-status.c: set commitable bit if there is a meaningful merge.
Sven Strickroth (3):
commit: do not lose SQUASH_MSG contents
MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
MSVC: use shipped headers instead of fallback definitions
Torsten Bögershausen (6):
correct blame for files commited with CRLF
t0027: make commit_chk_wrnNNO() reliable
convert: allow core.autocrlf=input and core.eol=crlf
t0027: test cases for combined attributes
convert.c: ident + core.autocrlf didn't work
t5601: Remove trailing space in sed expression
Vasco Almeida (16):
l10n: fr: fix transcation of "dir"
l10n: fr: fix wrongly translated option name
l10n: fr: change "id de clé" to match "id-clé"
l10n: fr: don't translate "merge" as a parameter
i18n: index-pack: use plural string instead of normal one
i18n: builtin/branch.c: mark option for translation
i18n: unpack-trees: mark strings for translation
i18n: builtin/rm.c: remove a comma ',' from string
i18n: branch: unmark string for translation
i18n: branch: move comment for translators
i18n: git-parse-remote.sh: mark strings for translation
i18n: builtin/pull.c: mark placeholders for translation
i18n: builtin/pull.c: split strings marked for translation
i18n: remote: add comment for translators
Documentation/git-mailinfo: fix typo
i18n: unpack-trees: avoid substituting only a verb in sentences
Xiaolong Ye (4):
patch-ids: make commit_patch_id() a public helper function
format-patch: add '--base' option to record base tree info
format-patch: introduce --base=auto option
format-patch: introduce format.useAutoBase configuration
brian m. carlson (6):
sha1-name: introduce a get_oid() function
test-match-trees: convert to use struct object_id
match-trees: convert shift_tree() and shift_tree_by() to use object_id
struct name_entry: use struct object_id instead of unsigned char sha1[20]
tree-walk: convert tree_entry_extract() to use struct object_id
match-trees: convert several leaf functions to use struct object_id
Ævar Arnfjörð Bjarmason (4):
githooks.txt: improve the intro section
githooks.txt: amend dangerous advice about 'update' hook ACL
githooks.txt: minor improvements to the grammar & phrasing
hooks: allow customizing where the hook directory is
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.9.0-rc1
@ 2016-05-31 21:53 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-05-31 21:53 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.9.0-rc1 is now available for testing
at the usual places. It is comprised of 462 non-merge commits
since v2.8.0, contributed by 63 people, 24 of which are new faces.
There still are a few topics yet to be merged to 'master' for the
upcoming release, but otherwise this is pretty much "feature
complete". One known brown-paper-bag breakage exists in t/perf/,
whose fix is still in 'next'.
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.9.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.8.0 are as follows.
Welcome to the Git development community!
Alexander Rinass, Armin Kunaschik, Ben Woosley, Gabriel Souza
Franco, Jacob Nisnevich, Jan Durovec, Jean-Noël Avila, Kazuki
Yamaguchi, Keller Fuchs, Laurent Arnoud, Li Peng, Marios Titas,
Mehul Jain, Michael Procter, Nikola Forró, Pranit Bauva, Ray
Zhang, René Nyffenegger, Santiago Torres, Saurav Sachidanand,
Shin Kojima, Sidhant Sharma [:tk], Stanislav Kolotinskiy,
and Xiaolong Ye.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Kuleshov,
brian m. carlson, Brian Norris, Christian Couder, David Aguilar,
David Turner, Dennis Kaarsemaker, Elia Pinto, Elijah Newren,
Eric Sunshine, Eric Wong, Felipe Contreras, Jacob Keller,
Jeff King, Jiang Xin, Johannes Schindelin, Johannes Sixt,
John Keeping, Junio C Hamano, Karsten Blees, Lars Schneider,
Linus Torvalds, Luke Diamand, Matthieu Moy, Michael Haggerty,
Michael J Gruber, Michael Rappazzo, Nguyễn Thái Ngọc Duy,
Ori Avtalion, Ralf Thielow, Ramsay Jones, Stefan Beller, Stephen
P. Smith, Sven Strickroth, SZEDER Gábor, Torsten Bögershausen,
and Vasco Almeida.
----------------------------------------------------------------
Git 2.9 Release Notes (draft)
=============================
Backward compatibility notes
----------------------------
The end-user facing Porcelain level commands in the "git diff" and
"git log" family by default enable the rename detection; you can still
use "diff.renames" configuration variable to disable this.
Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.
The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default. You can use
the "--no-expand-tabs" option to disable this.
"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.
Updates since v2.8
------------------
UI, Workflows & Features
* Comes with git-multimail 1.3.1 (in contrib/).
* The end-user facing commands like "git diff" and "git log"
now enable the rename detection by default.
* The credential.helper configuration variable is cumulative and
there is no good way to override it from the command line. As
a special case, giving an empty string as its value now serves
as the signal to clear the values specified in various files.
* A new "interactive.diffFilter" configuration can be used to
customize the diff shown in "git add -i" sessions.
* "git p4" now allows P4 author names to be mapped to Git author
names.
* "git rebase -x" can be used without passing "-i" option.
* "git -c credential.<var>=<value> submodule" can now be used to
propagate configuration variables related to credential helper
down to the submodules.
* "git tag" can create an annotated tag without explicitly given an
"-a" (or "-s") option (i.e. when a tag message is given). A new
configuration variable, tag.forceSignAnnotated, can be used to tell
the command to create signed tag in such a situation.
* "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.
* "git pull" has been taught to pass the "--allow-unrelated-histories"
option to underlying "git merge".
* "git apply -v" learned to report paths in the patch that were
skipped via --include/--exclude mechanism or being outside the
current working directory.
* Shell completion (in contrib/) updates.
* The commit object name reported when "rebase -i" stops has been
shortened.
* "git worktree add" can be given "--no-checkout" option to only
create an empty worktree without checking out the files.
* "git mergetools" learned to drive ExamDiff.
* "git pull --rebase" learned "--[no-]autostash" option, so that
the rebase.autostash configuration variable set to true can be
overridden from the command line.
* 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 to help
such a case, and allows the users to override it with a new option,
"--no-expand-tabs".
* "git send-email" now uses a more readable timestamps when
formulating a message ID.
* "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.
* "git p4" learned to record P4 jobs in Git commit that imports from
the history in Perforce.
* "git describe --contains" often made a hard-to-justify choice of
tag to name a given commit, because it tried to come up
with a name with smallest number of hops from a tag, causing an old
commit whose close descendant that is recently tagged were not
described with respect to an old tag but with a newer tag. It did
not help that its computation of "hop" count was further tweaked to
penalize being on a side branch of a merge. The logic has been
updated to favor using the tag with the oldest tagger date, which
is a lot easier to explain to the end users: "We describe a commit
in terms of the (chronologically) oldest tag that contains the
commit."
(merge 7550424 js/name-rev-use-oldest-ref later to maint).
* "git clone" learned the "--shallow-submodules" option.
* HTTP transport clients learned to throw extra HTTP headers at the
server, specified via http.extraHeader configuration variable.
* Patch output from "git diff" and friends has been tweaked to be
more readable by using a blank line as a strong hint that the
contents before and after it belong to logically separate units.
* A new configuration variable core.hooksPath allows customizing
where the hook directory is.
* An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
submodule honor -c credential.* from command line, 2016-02-29)
turned out to be a convoluted no-op; implement what it wanted to do
correctly, and stop filtering settings given via "git -c var=val".
* "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). This is a stop-gap
measure in that "commit --short --dry-run" still gives an incorrect
result.
* The experimental "multiple worktree" feature gains more safety to
forbid operations on a branch that is checked out or being actively
worked on elsewhere, by noticing that e.g. it is being rebased.
* "git format-patch" learned a new "--base" option to record what
(public, well-known) commit the original series was built on in
its output.
* "git commit" learned to pay attention to the "commit.verbose"
configuration variable and act as if the "--verbose" option
was given from the command line.
* Updated documentation gives hints to GMail users with two-factor
auth enabled that they need app-specific-password when using
"git send-email".
Performance, Internal Implementation, Development Support etc.
* The embedded args argv-array in the child process is used to build
the command line to run pack-objects instead of using a separate
array of strings.
* A test for tags has been restructured so that more parts of it can
easily be run on a platform without a working GnuPG.
* The startup_info data, which records if we are working inside a
repository (among other things), are now uniformly available to Git
subcommand implementations, and Git avoids attempting to touch
references when we are not in a repository.
* The command line argument parser for "receive-pack" has been
rewritten to use parse-options.
* A major part of "git submodule update" has been ported to C to take
advantage of the recently added framework to run download tasks in
parallel. Other updates to "git submodule" that move pieces of
logic to C continues.
* Rename bunch of tests on "git clone" for better organization.
* The tests that involve running httpd leaked the system-wide
configuration in /etc/gitconfig to the tested environment.
* Build updates for MSVC.
* 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.
* Code restructuring around the "refs" API to prepare for pluggable
refs backends.
* Sources to many test helper binaries and the generated helpers
have been moved to t/helper/ subdirectory to reduce clutter at the
top level of the tree.
* Unify internal logic between "git tag -v" and "git verify-tag"
commands by making one directly call into the other.
* "merge-recursive" strategy incorrectly checked if a path that is
involved in its internal merge exists in the working tree.
* The test scripts for "git p4" (but not "git p4" implementation
itself) has been updated so that they would work even on a system
where the installed version of Python is python 3.
* As nobody maintains our in-tree git.spec.in and distros use their
own spec file, we stopped pretending that we support "make rpm".
* Move from "unsigned char[20]" to "struct object_id" continues.
* The code for warning_errno/die_errno has been refactored and a new
error_errno() reporting helper is introduced.
(merge 1da045f nd/error-errno later to maint).
* Running tests with '-x' option to trace the individual command
executions is a useful way to debug test scripts, but some tests
that capture the standard error stream and check what the command
said can be broken with the trace output mixed in. When running
our tests under "bash", however, we can redirect the trace output
to another file descriptor to keep the standard error of programs
being tested intact.
(merge d88785e jk/test-send-sh-x-trace-elsewhere later to maint).
* t0040 had too many unnecessary repetitions in its test data. Teach
test-parse-options program so that a caller can tell what it
expects in its output, so that these repetitions can be cleaned up.
* Add perf test for "rebase -i".
* Common mistakes when writing gitlink: in our documentation are
found by "make check-docs".
* t9xxx series has been updated primarily for readability, while
fixing small bugs in it. A few scripted Porcelain commands have
also been updated to fix possible bugs around their use of
"test -z" and "test -n".
* CI test was taught to run git-svn tests.
* "git cat-file --batch-all" has been sped up, by taking advantage
of the fact that it does not have to read a list of objects, in two
ways.
* test updates to make it more readable and maintainable.
(merge e6273f4 es/t1500-modernize later to maint).
Also contains various documentation updates and code clean-ups.
Fixes since v2.8
----------------
Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git config --get-urlmatch", unlike other variants of the "git
config --get" family, did not signal error with its exit status
when there was no matching configuration.
* The "--local-env-vars" and "--resolve-git-dir" options of "git
rev-parse" failed to work outside a repository when the command's
option parsing was rewritten in 1.8.5 era.
* "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.
* Fetching of history by naming a commit object name directly didn't
work across remote-curl transport.
* A small memory leak in an error codepath has been plugged in xdiff
code.
* strbuf_getwholeline() did not NUL-terminate the buffer on certain
corner cases in its error codepath.
* "git mergetool" did not work well with conflicts that both sides
deleted.
* "git send-email" had trouble parsing alias file in mailrc format
when lines in it had trailing whitespaces on them.
* When "git merge --squash" stopped due to conflict, the concluding
"git commit" failed to read in the SQUASH_MSG that shows the log
messages from all the squashed commits.
* "git merge FETCH_HEAD" dereferenced NULL pointer when merging
nothing into an unborn history (which is arguably unusual usage,
which perhaps was the reason why nobody noticed it).
* When "git worktree" feature is in use, "git branch -d" allowed
deletion of a branch that is checked out in another worktree,
which was wrong.
* 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.
* "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.
* "git send-pack --all <there>" was broken when its command line
option parsing was written in the 2.6 timeframe.
* "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.
* 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.
* 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).
* 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.
* "git commit" misbehaved in a few minor ways when an empty message
is given via -m '', all of which has been corrected.
* Support for CRAM-MD5 authentication method in "git imap-send" did
not work well.
* Upcoming OpenSSL 1.1.0 will break compilation by updating a few API
elements we use in imap-send, which has been adjusted for the change.
* The socks5:// proxy support added back in 2.6.4 days was not aware
that socks5h:// proxies behave differently from socks5:// proxies.
* "git config" had a codepath that tried to pass a NULL to
printf("%s"), which nobody seems to have noticed.
* On Cygwin, object creation uses the "create a temporary and then
rename it to the final name" pattern, not "create a temporary,
hardlink it to the final name and then unlink the temporary"
pattern.
This is necessary to use Git on Windows shared directories, and is
already enabled for the MinGW and plain Windows builds. It also
has been used in Cygwin packaged versions of Git for quite a while.
See http://thread.gmane.org/gmane.comp.version-control.git/291853
* "merge-octopus" strategy did not ensure that the index is clean
when merge begins.
* When "git merge" notices that the merge can be resolved purely at
the tree level (without having to merge blobs) and the resulting
tree happens to already exist in the object store, it forgot to
update the index, which left an inconsistent state that would
break later operations.
* "git submodule" reports the paths of submodules the command
recurses into, but these paths were incorrectly reported when
the command was not run from the root level of the superproject.
* 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.
* "git mv old new" did not adjust the path for a submodule that lives
as a subdirectory inside old/ directory correctly.
* "git replace -e" did not honour "core.editor" configuration.
* "git push" from a corrupt repository that attempts to push a large
number of refs deadlocked; the thread to relay rejection notices
for these ref updates blocked on writing them to the main thread,
after the main thread at the receiving end notices that the push
failed and decides not to read these notices and return a failure.
* mmap emulation on Windows has been optimized and work better without
consuming paging store when not needed.
* A question by "git send-email" to ask the identity of the sender
has been updated.
* UI consistency improvements for "git mergetool".
* "git rebase -m" could be asked to rebase an entire branch starting
from the root, but failed by assuming that there always is a parent
commit to the first commit on the branch.
* Fix a broken "p4 lfs" test.
* Recent update to Git LFS broke "git p4" by changing the output from
its "lfs pointer" subcommand.
* "git fetch" test t5510 was flaky while running a (forced) automagic
garbage collection.
* Documentation updates to help contributors setting up Travis CI
test for their patches.
* Some multi-byte encoding can have a backslash byte as a later part
of one letter, which would confuse "highlight" filter used in
gitweb.
* "git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake. Rework "git rebase" that
relied on this mistake so that it reads commit.gpgsign and pass (or
not pass) the -S option to "git commit-tree" to keep the end-user
expectation the same, while teaching "git commit-tree" to ignore
the configuration variable. This will stop requiring the users to
sign commit objects used internally as an implementation detail of
"git stash".
* "http.cookieFile" configuration variable clearly wants a pathname,
but we forgot to treat it as such by e.g. applying tilde expansion.
(merge e5a39ad bn/http-cookiefile-config later to maint).
* Consolidate description of tilde-expansion that is done to
configuration variables that take pathname to a single place.
(merge dca83ab jc/config-pathname-type later to maint).
* Correct faulty recommendation to use "git submodule deinit ." when
de-initialising all submodules, which would result in a strange
error message in a pathological corner case.
(merge f6a5279 sb/submodule-deinit-all later to maint).
* Many 'linkgit:<git documentation page>' references were broken,
which are all fixed with this.
(merge 1cca17d jc/linkgit-fix later to maint).
* "git rerere" can get confused by conflict markers deliberately left
by the inner merge step, because they are indistinguishable from
the real conflict markers left by the outermost merge which are
what the end user and "rerere" need to look at. This was fixed by
making the conflict markers left by the inner merges a bit longer.
(merge 0f9fd5c jc/ll-merge-internal later to maint).
* CI test was taught to build documentation pages.
(merge b98712b ls/travis-build-doc later to maint).
* "git fsck" learned to catch NUL byte in a commit object as
potential error and warn.
(merge 6d2d780 jc/fsck-nul-in-commit later to maint).
* Portability enhancement for "rebase -i" to help platforms whose
shell does not like "for i in <empty>" (which is not POSIX-kosher).
(merge 8e98b35 jk/rebase-interactive-eval-fix later to maint).
* On Windows, .git and optionally any files whose name starts with a
dot are now marked as hidden, with a core.hideDotFiles knob to
customize this behaviour.
(merge ebf31e7 js/windows-dotgit later to maint).
* Documentation for "git merge --verify-signatures" has been updated
to clarify that the signature of only the commit at the tip is
verified. Also the phrasing used for signature and key validity is
adjusted to align with that used by OpenPGP.
(merge 05a5869 kf/gpg-sig-verification-doc later to maint).
* A couple of bugs around core.autocrlf have been fixed.
(merge caa47ad tb/core-eol-fix later to maint).
* 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.
(merge 90a78b8 ar/diff-args-osx-precompose later to maint).
* "git difftool" learned to handle unmerged paths correctly in
dir-diff mode.
(merge 366f9ce da/difftool later to maint).
* The "are we talking with TTY, doing an interactive session?"
detection has been updated to work better for "Git for Windows".
(merge f7f90e0 kb/msys2-tty later to maint).
* We forgot to add "git log --decorate=auto" to documentation when we
added the feature back in v2.1.0 timeframe.
(merge 462cbb4 rj/log-decorate-auto later to maint).
* "git fast-import --export-marks" would overwrite the existing marks
file even when it makes a dump from its custom die routine.
Prevent it from doing so when we have an import-marks file but
haven't finished reading it.
(merge f4beed6 fc/fast-import-broken-marks-file later to maint).
* Other minor clean-ups and documentation updates
(merge 832c0e5 lp/typofixes later to maint).
(merge f5ee54a sb/z-is-gnutar-ism later to maint).
(merge 2e3926b va/i18n-misc-updates later to maint).
(merge f212dcc bn/config-doc-tt-varnames later to maint).
(merge f54bea4 nd/remote-plural-ours-plus-theirs later to maint).
(merge 2bb0518 ak/t4151-ls-files-could-be-empty later to maint).
(merge 4df4313 jc/test-seq later to maint).
(merge a75a308 tb/t5601-sed-fix later to maint).
(merge 6c1fbe1 va/i18n-remote-comment-to-align later to maint).
(merge dee2303 va/mailinfo-doc-typofix later to maint).
----------------------------------------------------------------
Changes since v2.8.0 are as follows:
Adam Dinwoodie (2):
config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
commit: --amend -m '' silently fails to wipe message
Alexander Kuleshov (1):
submodule-config: use hashmap_iter_first()
Alexander Rinass (1):
diff: run arguments through precompose_argv
Armin Kunaschik (2):
t4151: make sure argument to 'test -z' is given
t0008: 4 tests fail with ksh88
Ben Woosley (1):
git-rebase--merge: don't include absent parent as a base
Brian Norris (3):
Documentation: config: improve word ordering for http.cookieFile
http: expand http.cookieFile as a path
config: consistently format $variables in monospaced font
Christian Couder (5):
Documentation: talk about pager in api-trace.txt
builtin/apply: get rid of useless 'name' variable
builtin/apply: handle parse_binary() failure
builtin/apply: free patch when parse_chunk() fails
Git/SVN: die when there is no commit metadata
David Aguilar (4):
mergetool: support delete/delete conflicts
mergetool: honor tempfile configuration when resolving delete conflicts
difftool: initialize variables for readability
difftool: handle unmerged files in dir-diff mode
David Turner (5):
refs: move head_ref{,_submodule} to the common code
refs: move for_each_*ref* functions into common code
files-backend: break out ref reading
refs: move resolve_ref_unsafe into common code
refs: on symref reflog expire, lock symref not referrent
Dennis Kaarsemaker (1):
Makefile: remove dependency on git.spec
Elia Pinto (1):
api-trace.txt: fix typo
Elijah Newren (6):
merge-recursive: remove duplicate code
merge-recursive: do not check working copy when creating a virtual merge base
t7605: add a testcase demonstrating a bug with trivial merges
builtin/merge.c: fix a bug with trivial merges
merge-octopus: abort if index does not match HEAD
t6044: new merge testcases for when index doesn't match HEAD
Eric Sunshine (10):
lib-gpg: drop unnecessary "missing GPG" warning
t6302: normalize names and descriptions of signed tags
t6302: also test annotated in addition to signed tags
t6302: skip only signed tags rather than all tests when GPG is missing
git-format-patch.txt: don't show -s as shorthand for multiple options
t1500: be considerate to future potential tests
t1500: test_rev_parse: facilitate future test enhancements
t1500: avoid changing working directory outside of tests
t1500: avoid setting configuration options outside of tests
t1500: avoid setting environment variables outside of tests
Eric Wong (4):
send-email: more meaningful Message-ID
send-email: do not load Data::Dumper
pack-objects: warn on split packs disabling bitmaps
.mailmap: update to my shorter email address
Felipe Contreras (1):
fast-import: do not truncate exported marks file
Gabriel Souza Franco (2):
fetch-pack: fix object_id of exact sha1
fetch-pack: update the documentation for "<refs>..." arguments
Jacob Keller (7):
submodule: don't pass empty string arguments to submodule--helper clone
submodule: check argc count for git submodule--helper clone
submodule: fix submodule--helper clone usage
submodule: fix segmentation fault in submodule--helper clone
quote: implement sq_quotef()
git: submodule honor -c credential.* from command line
xdiff: add recs_match helper function
Jacob Nisnevich (2):
mergetools: create mergetool_find_win32_cmd() helper function for winmerge
mergetools: add support for ExamDiff
Jan Durovec (2):
git-p4: clean-up code style in tests
git-p4: add P4 jobs to git commit message
Jeff King (55):
credential: let empty credential specs reset helper list
t1515: add tests for rev-parse out-of-repo helpers
add--interactive: allow custom diff highlighting programs
rev-parse: let some options run outside repository
strbuf_getwholeline: NUL-terminate getdelim buffer on error
setup: make startup_info available everywhere
setup: set startup_info->have_repository more reliably
remote: don't resolve HEAD in non-repository
mailmap: do not resolve blobs in a non-repository
grep: turn off gitlink detection for --no-index
use setup_git_directory() in test-* programs
setup: document check_repository_format()
wrap shared_repository global in get/set accessors
lazily load core.sharedrepository
check_repository_format_gently: stop using git_config_early
config: drop git_config_early
setup: refactor repo format reading and verification
init: use setup.c's repo version verification
setup: unify repository version callbacks
setup: drop repository_format_version global
verify_repository_format: mark messages for translation
send-email: ignore trailing whitespace in mailrc alias file
credential-cache--daemon: clarify "exit" action semantics
t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env
git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
branch: fix shortening of non-remote symrefs
commit: do not ignore an empty message given by -m ''
config: lower-case first word of error strings
git_config_set_multivar_in_file: all non-zero returns are errors
git_config_set_multivar_in_file: handle "unset" errors
t5532: use write_script
send-pack: close demux pipe before finishing async process
run-command: teach async threads to ignore SIGPIPE
send-pack: isolate sigpipe in demuxer thread
fetch-pack: isolate sigpipe in demuxer thread
t5504: drop sigpipe=ok from push tests
remote.c: spell __attribute__ correctly
t5550: fix typo in $HTTPD_URL
t5550: break submodule config test into multiple sub-tests
submodule: export sanitized GIT_CONFIG_PARAMETERS
submodule--helper: move config-sanitizing to submodule.c
submodule: use prepare_submodule_repo_env consistently
submodule: stop sanitizing config options
t6302: simplify non-gpg cases
rebase--interactive: avoid empty list in shell for-loop
test-lib: set BASH_XTRACEFD automatically
t/lib-git-svn: drop $remote_git_svn and $git_svn_id
t9100,t3419: enclose all test code in single-quotes
t9107: use "return 1" instead of "exit 1"
t9107: switch inverted single/double quotes in test
t9103: modernize test style
always quote shell arguments to test -z/-n
cat-file: avoid noop calls to sha1_object_info_extended
cat-file: default to --buffer when --batch-all-objects is used
archive-tar: convert snprintf to xsnprintf
Johannes Schindelin (16):
replace --edit: respect core.editor
name-rev: include taggerdate in considering the best name
win32mmap: set errno appropriately
mmap(win32): avoid copy-on-write when it is unnecessary
mmap(win32): avoid expensive fstat() call
http: support sending custom HTTP headers
tests: adjust the configuration for Apache 2.2
t5551: make the test for extra HTTP headers more robust
t3404: fix typo
submodule: ensure that -c http.extraheader is heeded
mingw: introduce the 'core.hideDotFiles' setting
mingw: remove unnecessary definition
Windows: only add a no-op pthread_sigmask() when needed
perf: let's disable symlinks when they are not available
perf: make the tests work in worktrees
perf: run "rebase -i" under perf
Johannes Sixt (3):
Windows: shorten code by re-using convert_slashes()
Windows: add pthread_sigmask() that does nothing
t6044: replace seq by test_seq
John Keeping (3):
config: fail if --get-urlmatch finds no value
Documentation/git-config: use bulleted list for exit codes
Documentation/git-config: fix --get-all description
Junio C Hamano (74):
rerere: split conflict ID further
rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
index-pack: correct --keep[=<msg>]
index-pack: add a helper function to derive .idx/.keep filename
rerere: handle leftover rr-cache/$ID directory and postimage files
rerere: delay the recording of preimage
rerere: allow multiple variants to exist
t4200: rerere a merge with two identical conflicts
rerere: do use multiple variants
apply: remove unused call to free() in gitdiff_{old,new}name()
merge: fix NULL pointer dereference when merging nothing into void
merge: refuse to create too cool a merge by default
pretty: enable --expand-tabs by default for selected pretty formats
pretty: allow tweaking tabwidth in --expand-tabs
submodule--helper: do not borrow absolute_path() result for too long
Git 2.8.1
First batch for post 2.8 cycle
pretty: test --expand-tabs
Makefile: fix misdirected redirections
Second batch for post 2.8 cycle
Makefile: stop pretending to support rpmbuild
rerere: gc and clear
rerere: move code related to "forget" together
rerere: split code to call ll_merge() further
rerere: adjust 'forget' to multi-variant world order
setup.c: do not feed NULL to "%.*s" even with precision 0
Third batch for post 2.8 cycle
http: differentiate socks5:// and socks5h://
t1020: do not overuse printf and use write_script
t3404: use write_script
Fourth batch for post 2.8 cycle
Start preparing for 2.8.2
fsck_commit_buffer(): do not special case the last validation
ll-merge: fix typo in comment
Prepare for 2.8.2
Makefile: clean *.o files we create
Fifth batch for post 2.8 cycle
t3033: avoid 'ambiguous refs' warning
pull: pass --allow-unrelated-histories to "git merge"
Sixth batch for post 2.8 cycle
send-email: fix grammo in the prompt that asks e-mail recipients
Seventh batch for post 2.8 cycle
Git 2.8.2
Eighth batch for 2.9
diff: undocument the compaction heuristic knobs for experimentation
Start preparing for 2.8.3
commit-tree: do not pay attention to commit.gpgsign
Ninth batch for 2.9
config: describe 'pathname' value type
Tenth batch for 2.9
Almost ready for 2.8.3
test-lib-functions.sh: remove misleading comment on test_seq
test-lib-functions.sh: rewrite test_seq without Perl
ll-merge: use a longer conflict marker for internal merge
t6036: remove pointless test that expects failure
Documentation: fix linkgit references
fsck: detect and warn a commit with embedded NUL
ci: validate "linkgit:" in documentation
test-parse-options: fix output when callback option fails
test-parse-options: --expect=<string> option to simplify tests
t0040: remove unused test helpers
t0040: convert a few tests to use test-parse-options --expect
Eleventh batch for 2.9
rerere: plug memory leaks upon "rerere forget" failure
Twelfth batch for 2.9
Thirteenth batch for 2.9
Git 2.8.3
rerere: remove an null statement
Git 2.9-rc0
t4204: do not let $name variable clobbered
Start preparing for 2.8.4
Final batch before 2.9-rc1
More topics for 2.8.4
Git 2.9-rc1
Karsten Blees (1):
mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)
Kazuki Yamaguchi (10):
branch -d: refuse deleting a branch which is currently checked out
refs: add a new function set_worktree_head_symref
branch -m: update all per-worktree HEADs
set_worktree_head_symref(): fix error message
imap-send: use HMAC() function provided by OpenSSL
imap-send: check NULL return of SSL_CTX_new()
imap-send: avoid deprecated TLSv1_method()
configure: remove checking for HMAC_CTX_cleanup
imap-send: check for NOLOGIN capability only when using LOGIN command
imap-send: fix CRAM-MD5 response calculation
Keller Fuchs (1):
Documentation: clarify signature verification
Lars Schneider (8):
git-p4: map a P4 user to Git author name and email address
travis-ci: update Git-LFS and P4 to the latest version
travis-ci: express Linux/OS X dependency versions more clearly
git-p4: fix Git LFS pointer parsing
t9824: fix wrong reference value
Documentation: add setup instructions for Travis CI
travis-ci: build documentation
travis-ci: enable Git SVN tests t91xx on Linux
Laurent Arnoud (1):
tag: add the option to force signing of annotated tags
Li Peng (1):
typofix: assorted typofixes in comments, documentation and messages
Linus Torvalds (1):
pretty: expand tabs in indented logs to make things line up properly
Luke Diamand (3):
git-p4 tests: cd to / before running python
git-p4 tests: work with python3 as well as python2
git-p4 tests: time_in_seconds should use $PYTHON_PATH
Marios Titas (2):
ident: check for useConfigOnly before auto-detection of name/email
ident: give "please tell me" message upon useConfigOnly error
Matthieu Moy (11):
Documentation/diff-config: fix description of diff.renames
t4001-diff-rename: wrap file creations in a test
t: add tests for diff.renames (true/false/unset)
log: introduce init_log_defaults()
diff: activate diff.renames by default
lockfile: mark strings for translation
lockfile: improve error message when lockfile exists
git.spec.in: use README.md, not README
README.md: don't take 'commandname' literally
git-multimail: update to release 1.3.0
git-multimail: update to release 1.3.1
Mehul Jain (9):
git-pull.c: introduce git_pull_config()
pull --rebase: add --[no-]autostash flag
t5520: use consistent capitalization in test titles
t5520: ensure consistent test conditions
t5520: use better test to check stderr output
t5520: factor out common "successful autostash" code
t5520: factor out common "failing autostash" code
t5520: reduce commom lines of code
t5520: test --[no-]autostash with pull.rebase=true
Michael Haggerty (19):
t1430: test the output and error of some commands more carefully
t1430: clean up broken refs/tags/shadow
t1430: don't rely on symbolic-ref for creating broken symrefs
t1430: test for-each-ref in the presence of badly-named refs
t1430: improve test coverage of deletion of badly-named refs
resolve_missing_loose_ref(): simplify semantics
resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
resolve_ref_unsafe(): ensure flags is always set
resolve_ref_1(): eliminate local variable
resolve_ref_1(): reorder code
resolve_ref_1(): eliminate local variable "bad_name"
read_raw_ref(): manage own scratch space
files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
read_raw_ref(): change flags parameter to unsigned int
fsck_head_link(): remove unneeded flag variable
cmd_merge(): remove unneeded flag variable
checkout_paths(): remove unneeded flag variable
check_aliased_update(): check that dst_name is non-NULL
show_head_ref(): check the result of resolve_ref_namespace()
Michael J Gruber (1):
completion: complete --cherry-mark for git log
Michael Procter (1):
upload-pack: use argv_array for pack_objects
Michael Rappazzo (1):
Documentation: add instructions to help setup gmail 2FA
Nguyễn Thái Ngọc Duy (62):
git-apply.txt: remove a space
git-apply.txt: mention the behavior inside a subdir
apply: report patch skipping in verbose mode
test helpers: move test-* to t/helper/ subdirectory
dir.c: remove dead function fnmatch_icase()
wrapper.c: delete dead function git_mkstemps()
dir.c: rename str(n)cmp_icase to fspath(n)cmp
path.c: add git_common_path() and strbuf_git_common_path()
worktree.c: store "id" instead of "git_dir"
worktree.c: make find_shared_symref() return struct worktree *
worktree.c: mark current worktree
path.c: refactor and add worktree_git_path()
wt-status.c: split rebase detection out of wt_status_get_state()
wt-status.c: make wt_status_check_rebase() work on any worktree
worktree.c: avoid referencing to worktrees[i] multiple times
worktree.c: check whether branch is rebased in another worktree
wt-status.c: split bisect detection out of wt_status_get_state()
worktree.c: check whether branch is bisected in another worktree
branch: do not rename a branch under bisect or rebase
remote.c: specify correct plural form in "commit diverge" message
usage.c: move format processing out of die_errno()
usage.c: add warning_errno() and error_errno()
bisect.c: use die_errno() and warning_errno()
builtin/am.c: use error_errno()
builtin/branch.c: use error_errno()
builtin/fetch.c: use error_errno()
builtin/help.c: use warning_errno()
builtin/mailsplit.c: use error_errno()
builtin/merge-file.c: use error_errno()
builtin/pack-objects.c: use die_errno() and warning_errno()
builtin/rm.c: use warning_errno()
builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
builtin/upload-archive.c: use error_errno()
builtin/worktree.c: use error_errno()
check-racy.c: use error_errno()
combine-diff.c: use error_errno()
compat/win32/syslog.c: use warning_errno()
config.c: use error_errno()
connected.c: use error_errno()
copy.c: use error_errno()
credential-cache--daemon.c: use warning_errno()
diff-no-index.c: use error_errno()
editor.c: use error_errno()
entry.c: use error_errno()
fast-import.c: use error_errno()
gpg-interface.c: use error_errno()
grep.c: use error_errno()
http.c: use error_errno() and warning_errno()
ident.c: use warning_errno()
mailmap.c: use error_errno()
reachable.c: use error_errno()
rerere.c: use error_errno() and warning_errno()
run-command.c: use error_errno()
sequencer.c: use error_errno()
server-info.c: use error_errno()
sha1_file.c: use {error,die,warning}_errno()
transport-helper.c: use error_errno()
unpack-trees.c: use error_errno()
upload-pack.c: use error_errno()
vcs-svn: use error_errno()
wrapper.c: use warning_errno()
wrap-for-bin.sh: regenerate bin-wrappers when switching branches
Nikola Forró (1):
difftool/mergetool: make the form of yes/no questions consistent
Ori Avtalion (1):
Documentation: git diff --check detects conflict markers
Pranit Bauva (9):
t/t7502 : drop duplicate test
api-parse-options.txt: document OPT_CMDMODE()
t0040-test-parse-options.sh: fix style issues
test-parse-options: print quiet as integer
t0040-parse-options: improve test coverage
t/t7507: improve test coverage
parse-options.c: make OPTION_COUNTUP respect "unspecified" values
t7507-commit-verbose: improve test coverage by testing number of diffs
commit: add a commit.verbose config variable
Ralf Thielow (4):
completion: add option '--guides' to 'git help'
completion: add 'revisions' and 'everyday' to 'git help'
rebase-i: print an abbreviated hash when stop for editing
string_list: use string-list API in unsorted_string_list_lookup()
Ramsay Jones (3):
xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
xdiff/xprepare: fix a memory leak
log: document the --decorate=auto option
Ray Zhang (1):
worktree: add: introduce --checkout option
René Nyffenegger (1):
Documentation: fix typo 'In such these cases'
SZEDER Gábor (5):
diffcore: fix iteration order of identical files during rename detection
for-each-ref: fix description of '--contains' in manpage
test-lib: simplify '--option=value' parsing
t9824: fix broken &&-chain in a subshell
t5510: run auto-gc in the foreground
Santiago Torres (6):
builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
t7030: test verifying multiple tags
verify-tag: update variable name and type
verify-tag: prepare verify_tag for libification
verify-tag: move tag verification code to tag.c
tag -v: verify directly rather than exec-ing verify-tag
Saurav Sachidanand (1):
dir: store EXC_FLAG_* values in unsigned integers
Shin Kojima (1):
gitweb: apply fallback encoding before highlight
Sidhant Sharma [:tk] (1):
builtin/receive-pack.c: use parse_options API
Stanislav Kolotinskiy (1):
git-send-pack: fix --all option when used with directory
Stefan Beller (44):
submodule-config: keep update strategy around
submodule-config: drop check against NULL
fetching submodules: respect `submodule.fetchJobs` config option
submodule update: direct error message to stderr
run_processes_parallel: treat output of children as byte array
run_processes_parallel: rename parameters for the callbacks
git submodule update: have a dedicated helper for cloning
submodule helper: remove double 'fatal: ' prefix
submodule update: expose parallelism to the user
clone: allow an explicit argument for parallel submodule clones
clone tests: rename t57* => t56*
rebase: decouple --exec from --interactive
t3404: cleanup double empty lines between tests
submodule foreach: correct path display in recursive submodules
submodule update --init: correct path handling in recursive submodules
submodule status: correct path handling in recursive submodules
submodule update: align reporting path for custom command execution
submodule update: test recursive path reporting from subdirectory
t7407: make expectation as clear as possible
recursive submodules: test for relative paths
submodule--helper: fix potential NULL-dereference
submodule--helper clone: create the submodule path just once
notes: don't leak memory in git_config_get_notes_strategy
abbrev_sha1_in_line: don't leak memory
bundle: don't leak an fd in case of early return
credential-cache, send_request: close fd when done
submodule--helper, module_clone: always operate on absolute paths
submodule--helper, module_clone: catch fprintf failure
submodule: port resolve_relative_url from shell to C
submodule: port init from shell to C
xdiff: implement empty line chunk heuristic
mv: allow moving nested submodules
clone: add `--shallow-submodules` flag
config doc: improve exit code listing
config.c: drop local variable
submodule-config: don't shadow `cache`
submodule init: fail gracefully with a missing .gitmodules file
submodule--helper update-clone: abort gracefully on missing .gitmodules
submodule deinit test: fix broken && chain in subshell
submodule init: redirect stdout to stderr
t7300: mark test with SANITY
submodule deinit: require '--all' instead of '.' for all submodules
t3513: do not compress backup tar file
t6041: do not compress backup tar file
Stephen P. Smith (1):
wt-status.c: set commitable bit if there is a meaningful merge.
Sven Strickroth (3):
commit: do not lose SQUASH_MSG contents
MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
MSVC: use shipped headers instead of fallback definitions
Torsten Bögershausen (6):
correct blame for files commited with CRLF
t0027: make commit_chk_wrnNNO() reliable
convert: allow core.autocrlf=input and core.eol=crlf
t0027: test cases for combined attributes
convert.c: ident + core.autocrlf didn't work
t5601: Remove trailing space in sed expression
Vasco Almeida (16):
l10n: fr: fix transcation of "dir"
l10n: fr: fix wrongly translated option name
l10n: fr: change "id de clé" to match "id-clé"
l10n: fr: don't translate "merge" as a parameter
i18n: index-pack: use plural string instead of normal one
i18n: builtin/branch.c: mark option for translation
i18n: unpack-trees: mark strings for translation
i18n: builtin/rm.c: remove a comma ',' from string
i18n: branch: unmark string for translation
i18n: branch: move comment for translators
i18n: git-parse-remote.sh: mark strings for translation
i18n: builtin/pull.c: mark placeholders for translation
i18n: builtin/pull.c: split strings marked for translation
i18n: remote: add comment for translators
Documentation/git-mailinfo: fix typo
i18n: unpack-trees: avoid substituting only a verb in sentences
Xiaolong Ye (4):
patch-ids: make commit_patch_id() a public helper function
format-patch: add '--base' option to record base tree info
format-patch: introduce --base=auto option
format-patch: introduce format.useAutoBase configuration
brian m. carlson (6):
sha1-name: introduce a get_oid() function
test-match-trees: convert to use struct object_id
match-trees: convert shift_tree() and shift_tree_by() to use object_id
struct name_entry: use struct object_id instead of unsigned char sha1[20]
tree-walk: convert tree_entry_extract() to use struct object_id
match-trees: convert several leaf functions to use struct object_id
Ævar Arnfjörð Bjarmason (4):
githooks.txt: improve the intro section
githooks.txt: amend dangerous advice about 'update' hook ACL
githooks.txt: minor improvements to the grammar & phrasing
hooks: allow customizing where the hook directory is
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.9.0-rc0
@ 2016-05-23 23:23 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-05-23 23:23 UTC (permalink / raw)
To: git
An early preview release Git v2.9.0-rc0 is now available for
testing at the usual places. It is comprised of 443 non-merge
commits since v2.8.0, contributed by 60 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.9.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.8.0 are as follows.
Welcome to the Git development community!
Alexander Rinass, Armin Kunaschik, Ben Woosley, Gabriel Souza
Franco, Jacob Nisnevich, Jan Durovec, Jean-Noël Avila, Kazuki
Yamaguchi, Keller Fuchs, Laurent Arnoud, Li Peng, Marios Titas,
Mehul Jain, Michael Procter, Nikola Forró, Pranit Bauva, Ray
Zhang, René Nyffenegger, Santiago Torres, Saurav Sachidanand,
Shin Kojima, Sidhant Sharma [:tk], Stanislav Kolotinskiy,
and Xiaolong Ye.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Kuleshov,
brian m. carlson, Brian Norris, Christian Couder, David Aguilar,
David Turner, Dennis Kaarsemaker, Elia Pinto, Elijah Newren,
Eric Sunshine, Eric Wong, Jacob Keller, Jeff King, Jiang Xin,
Johannes Schindelin, Johannes Sixt, John Keeping, Junio C Hamano,
Lars Schneider, Linus Torvalds, Luke Diamand, Matthieu Moy,
Michael Haggerty, Michael J Gruber, Nguyễn Thái Ngọc Duy,
Ori Avtalion, Ralf Thielow, Ramsay Jones, Stefan Beller, Stephen
P. Smith, Sven Strickroth, SZEDER Gábor, Torsten Bögershausen,
and Vasco Almeida.
----------------------------------------------------------------
Git 2.9 Release Notes (draft)
=============================
Backward compatibility note
---------------------------
The end-user facing Porcelain level commands in the "git diff" and
"git log" by default enables the rename detection; you can still use
"diff.renames" configuration variable to disable this.
Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.
The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default. You can use
the "--no-expand-tabs" option to disable this.
"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.
Updates since v2.8
------------------
UI, Workflows & Features
* Comes with git-multimail 1.3.1 (in contrib/).
* The end-user facing Porcelain level commands like "diff" and "log"
now enables the rename detection by default.
* The credential.helper configuration variable is cumulative and
there is no good way to override it from the command line. As
a special case, giving an empty string as its value now serves
as the signal to clear the values specified in various files.
* A new "interactive.diffFilter" configuration can be used to
customize the diff shown in "git add -i" session.
* "git p4" now allows P4 author names to be mapped to Git author
names.
* "git rebase -x" can be used without passing "-i" option.
* "git -c credential.<var>=<value> submodule" can now be used to
propagate configuration variables related to credential helper
down to the submodules.
* "git tag" can create an annotated tag without explicitly given an
"-a" (or "-s") option (i.e. when a tag message is given). A new
configuration variable, tag.forceSignAnnotated, can be used to tell
the command to create signed tag in such a situation.
* "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.
* "git pull" has been taught to pass --allow-unrelated-histories
option to underlying "git merge".
* "git apply -v" learned to report paths in the patch that were
skipped via --include/--exclude mechanism or being outside the
current working directory.
* Shell completion (in contrib/) updates.
* The commit object name reported when "rebase -i" stops has been
shortened.
* "git worktree add" can be given "--no-checkout" option to only
create an empty worktree without checking out the files.
* "git mergetools" learned to drive ExamDiff.
* "git pull --rebase" learned "--[no-]autostash" option, so that
the rebase.autostash configuration variable set to true can be
overridden from the command line.
* 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".
* "git send-email" now uses a more readable timestamps when
formulating a message ID.
* "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.
(merge d9d501b068 jc/rerere-multi later to maint).
* "git p4" learned to record P4 jobs in Git commit that imports from
the history in Perforce.
* "git describe --contains" often made a hard-to-justify choice of
tag to give name to a given commit, because it tried to come up
with a name with smallest number of hops from a tag, causing an old
commit whose close descendant that is recently tagged were not
described with respect to an old tag but with a newer tag. It did
not help that its computation of "hop" count was further tweaked to
penalize being on a side branch of a merge. The logic has been
updated to favor using the tag with the oldest tagger date, which
is a lot easier to explain to the end users: "We describe a commit
in terms of the (chronologically) oldest tag that contains the
commit."
(merge 7550424 js/name-rev-use-oldest-ref later to maint).
* "git clone" learned "--shallow-submodules" option.
* HTTP transport clients learned to throw extra HTTP headers at the
server, specified via http.extraHeader configuration variable.
* Patch output from "git diff" and friends has been tweaked to be
more readable by using a blank line as a strong hint that the
contents before and after it belong to a logically separate unit.
* A new configuration variable core.hooksPath allows customizing
where the hook directory is.
* An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
submodule honor -c credential.* from command line, 2016-02-29)
turned out to be a convoluted no-op; implement what it wanted to do
correctly, and stop filtering settings given via "git -c var=val".
* "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). This is a stop-gap
measure in that "commit --short --dry-run" still gives an incorrect
result.
* The experimental "multiple worktree" feature gains more safety to
forbid operations on a branch that is checked out or being actively
worked on elsewhere, by noticing that e.g. it is being rebased.
* "git format-patch" learned a new "--base" option to record what
(public, well-known) commit the original series was built on in
its output.
* "git commit" learned to pay attention to "commit.verbose"
configuration variable and act as if "--verbose" option was
given from the command line.
Performance, Internal Implementation, Development Support etc.
* The embedded args argv-array in the child process is used to build
the command line to run pack-objects instead of using a separate
array of strings.
* A test for tags has been restructured so that more parts of it can
easily be run on a platform without a working GnuPG.
* The startup_info data, which records if we are working inside a
repository (among other things), are now uniformly available to Git
subcommand implementations, and Git avoids attempting to touch
references when we are not in a repository.
* The command line argument parser for "receive-pack" has been
rewritten to use parse-options.
* A major part of "git submodule update" has been ported to C to take
advantage of the recently added framework to run download tasks in
parallel.
* Rename bunch of tests on "git clone" for better organization.
* The tests that involve running httpd leaked the system-wide
configuration in /etc/gitconfig to the tested environment.
* Build updates for MSVC.
* 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.
* Code restructuring around the "refs" area to prepare for pluggable
refs backends.
* Sources to many test helper binaries (and the generated helpers)
have been moved to t/helper/ subdirectory to reduce clutter at the
top level of the tree.
* Unify internal logic between "git tag -v" and "git verify-tag"
commands by making one directly call into the other.
(merge bef234b st/verify-tag later to maint).
* "merge-recursive" strategy incorrectly checked if a path that is
involved in its internal merge exists in the working tree.
* The test scripts for "git p4" (but not "git p4" implementation
itself) has been updated so that they would work even on a system
where the installed version of Python is python 3.
* As nobody maintains our in-tree git.spec.in and distros use their
own spec file, we stopped pretending that we support "make rpm".
* Move from unsigned char[20] to struct object_id continues.
* Update of "git submodule" to move pieces of logic to C continues.
* The code for warning_errno/die_errno has been refactored and a new
error_errno() reporting helper is introduced.
(merge 1da045f nd/error-errno later to maint).
* Running tests with '-x' option to trace the individual command
executions is a useful way to debug test scripts, but some tests
that capture the standard error stream and check what the command
said can be broken with the trace output mixed in. When running
our tests under "bash", however, we can redirect the trace output
to another file descriptor to keep the standard error of programs
being tested intact.
(merge d88785e jk/test-send-sh-x-trace-elsewhere later to maint).
* t0040 had too many unnecessary repetitions in its test data. Teach
test-parse-options program so that a caller can tell what it
expects in its output, so that these repetitions can be cleaned up.
* Add perf test for "rebase -i"
* Common mistakes when writing gitlink: in our documentation are
found by "make check-docs".
* t9xxx series has been updated primarily for readability, while
fixing small bugs in it. A few scripted Porcelains have also been
updated to fix possible bugs around their use of "test -z" and
"test -n".
* CI test was taught to run git-svn tests.
Also contains various documentation updates and code clean-ups.
Fixes since v2.8
----------------
Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git config --get-urlmatch", unlike other variants of the "git
config --get" family, did not signal error with its exit status
when there was no matching configuration.
* The "--local-env-vars" and "--resolve-git-dir" options of "git
rev-parse" failed to work outside a repository when the command's
option parsing was rewritten in 1.8.5 era.
* "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.
* Fetching of history by naming a commit object name directly didn't
work across remote-curl transport.
* A small memory leak in an error codepath has been plugged in xdiff
code.
* strbuf_getwholeline() did not NUL-terminate the buffer on certain
corner cases in its error codepath.
* "git mergetool" did not work well with conflicts that both sides
deleted.
* "git send-email" had trouble parsing alias file in mailrc format
when lines in it had trailing whitespaces on them.
* When "git merge --squash" stopped due to conflict, the concluding
"git commit" failed to read in the SQUASH_MSG that shows the log
messages from all the squashed commits.
* "git merge FETCH_HEAD" dereferenced NULL pointer when merging
nothing into an unborn history (which is arguably unusual usage,
which perhaps was the reason why nobody noticed it).
* When "git worktree" feature is in use, "git branch -d" allowed
deletion of a branch that is checked out in another worktree,
which was wrong.
* 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.
* "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.
* "git send-pack --all <there>" was broken when its command line
option parsing was written in the 2.6 timeframe.
* "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.
* 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.
* 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).
* 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.
* "git commit" misbehaved in a few minor ways when an empty message
is given via -m '', all of which has been corrected.
* Support for CRAM-MD5 authentication method in "git imap-send" did
not work well.
* 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.
* The socks5:// proxy support added back in 2.6.4 days was not aware
that socks5h:// proxies behave differently.
* "git config" had a codepath that tried to pass a NULL to
printf("%s"), which nobody seems to have noticed.
* On Cygwin, object creation uses the "create a temporary and then
rename it to the final name" pattern, not "create a temporary,
hardlink it to the final name and then unlink the temporary"
pattern.
This is necessary to use Git on Windows shared directories, and is
already enabled for the MinGW and plain Windows builds. It also
has been used in Cygwin packaged versions of Git for quite a while.
See http://thread.gmane.org/gmane.comp.version-control.git/291853
* "merge-octopus" strategy did not ensure that the index is clean
when merge begins.
* When "git merge" notices that the merge can be resolved purely at
the tree level (without having to merge blobs) and the resulting
tree happens to already exist in the object store, it forgot to
update the index, which lead to an inconsistent state for later
operations.
* "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.
* 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.
* "git mv old new" did not adjust the path for a submodule that lives
as a subdirectory inside old/ directory correctly.
* "git replace -e" did not honour "core.editor" configuration.
* "git push" from a corrupt repository that attempts to push a large
number of refs deadlocked; the thread to relay rejection notices
for these ref updates blocked on writing them to the main thread,
after the main thread at the receiving end notices that the push
failed and decides not to read these notices and return a failure.
* mmap emulation on Windows has been optimized and work better without
consuming paging store when not needed.
* A question by "git send-email" to ask the identity of the sender
has been updated.
* UI consistency improvements for "git mergetool".
* "git rebase -m" could be asked to rebase an entire branch starting
from the root, but failed by assuming that there always is a parent
commit to the first commit on the branch.
(merge 79f4344 bw/rebase-merge-entire-branch later to maint).
* Fix a broken "p4 lfs" test.
* Recent update to Git LFS broke "git p4" by changing the output from
its "lfs pointer" subcommand.
* "git fetch" test t5510 was flaky while running a (forced) automagic
garbage collection.
* Documentation updates to help contributors setting up Travis CI
test for their patches.
* Some multi-byte encoding can have a backslash byte as a later part
of one letter, which would confuse "highlight" filter used in
gitweb.
* "git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake. Rework "git rebase" that
relied on this mistake so that it reads commit.gpgsign and pass (or
not pass) the -S option to "git commit-tree" to keep the end-user
expectation the same, while teaching "git commit-tree" to ignore
the configuration variable. This will stop requiring the users to
sign commit objects used internally as an implementation detail of
"git stash".
(merge 6694856 jc/commit-tree-ignore-commit-gpgsign later to maint).
* "http.cookieFile" configuration variable clearly wants a pathname,
but we forgot to treat it as such by e.g. applying tilde expansion.
(merge e5a39ad bn/http-cookiefile-config later to maint).
* Consolidate description of tilde-expansion that is done to
configuration variables that take pathname to a single place.
(merge dca83ab jc/config-pathname-type later to maint).
* Correct faulty recommendation to use "git submodule deinit ." when
de-initialising all submodules, which would result in a strange
error message in a pathological corner case.
(merge f6a5279 sb/submodule-deinit-all later to maint).
* Many 'linkgit:<git documentation page>' references were broken,
which are all fixed with this.
(merge 1cca17d jc/linkgit-fix later to maint).
* "git rerere" can get confused by conflict markers deliberately left
by the inner merge step, because they are indistinguishable from
the real conflict markers left by the outermost merge which are
what the end user and "rerere" need to look at. This was fixed by
making the conflict markers left by the inner merges a bit longer.
(merge 0f9fd5c jc/ll-merge-internal later to maint).
* CI test was taught to build documentation pages.
(merge b98712b ls/travis-build-doc later to maint).
* "git fsck" learned to catch NUL byte in a commit object as
potential error and warn.
(merge 6d2d780 jc/fsck-nul-in-commit later to maint).
* Portability enhancement for "rebase -i" to help platforms whose
shell does not like "for i in <empty>" (which is not POSIX-kosher).
(merge 8e98b35 jk/rebase-interative-eval-fix later to maint).
* On Windows, .git and optionally any files whose name starts with a
dot are now marked as hidden, with a core.hideDotFiles knob to
customize this behaviour.
(merge ebf31e7 js/windows-dotgit later to maint).
* Documentation for "git merge --verify-signatures" has been updated
to clarify that the signature of only the commit at the tip is
verified. Also the phrasing used for signature and key validity is
adjusted to align with that used by OpenPGP.
(merge 05a5869 kf/gpg-sig-verification-doc later to maint).
* A couple of bugs around core.autocrlf have been fixed.
(merge caa47ad tb/core-eol-fix later to maint).
* 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.
(merge 90a78b8 ar/diff-args-osx-precompose later to maint).
* "git difftool" learned to handle unmerged paths correctly in
dir-diff mode.
(merge 366f9ce da/difftool later to maint).
* Other minor clean-ups and documentation updates
(merge 832c0e5 lp/typofixes later to maint).
(merge f5ee54a sb/z-is-gnutar-ism later to maint).
(merge 2e3926b va/i18n-misc-updates later to maint).
(merge f212dcc bn/config-doc-tt-varnames later to maint).
(merge f54bea4 nd/remote-plural-ours-plus-theirs later to maint).
(merge 2bb0518 ak/t4151-ls-files-could-be-empty later to maint).
(merge 4df4313 jc/test-seq later to maint).
(merge a75a308 tb/t5601-sed-fix later to maint).
(merge 6c1fbe1 va/i18n-remote-comment-to-align later to maint).
(merge dee2303 va/mailinfo-doc-typofix later to maint).
----------------------------------------------------------------
Changes since v2.8.0 are as follows:
Adam Dinwoodie (2):
config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
commit: --amend -m '' silently fails to wipe message
Alexander Kuleshov (1):
submodule-config: use hashmap_iter_first()
Alexander Rinass (1):
diff: run arguments through precompose_argv
Armin Kunaschik (1):
t4151: make sure argument to 'test -z' is given
Ben Woosley (1):
git-rebase--merge: don't include absent parent as a base
Brian Norris (3):
Documentation: config: improve word ordering for http.cookieFile
http: expand http.cookieFile as a path
config: consistently format $variables in monospaced font
Christian Couder (5):
Documentation: talk about pager in api-trace.txt
builtin/apply: get rid of useless 'name' variable
builtin/apply: handle parse_binary() failure
builtin/apply: free patch when parse_chunk() fails
Git/SVN: die when there is no commit metadata
David Aguilar (4):
mergetool: support delete/delete conflicts
mergetool: honor tempfile configuration when resolving delete conflicts
difftool: initialize variables for readability
difftool: handle unmerged files in dir-diff mode
David Turner (5):
refs: move head_ref{,_submodule} to the common code
refs: move for_each_*ref* functions into common code
files-backend: break out ref reading
refs: move resolve_ref_unsafe into common code
refs: on symref reflog expire, lock symref not referrent
Dennis Kaarsemaker (1):
Makefile: remove dependency on git.spec
Elia Pinto (1):
api-trace.txt: fix typo
Elijah Newren (6):
merge-recursive: remove duplicate code
merge-recursive: do not check working copy when creating a virtual merge base
t7605: add a testcase demonstrating a bug with trivial merges
builtin/merge.c: fix a bug with trivial merges
t6044: new merge testcases for when index doesn't match HEAD
merge-octopus: abort if index does not match HEAD
Eric Sunshine (5):
lib-gpg: drop unnecessary "missing GPG" warning
t6302: normalize names and descriptions of signed tags
t6302: also test annotated in addition to signed tags
t6302: skip only signed tags rather than all tests when GPG is missing
git-format-patch.txt: don't show -s as shorthand for multiple options
Eric Wong (4):
send-email: more meaningful Message-ID
send-email: do not load Data::Dumper
pack-objects: warn on split packs disabling bitmaps
.mailmap: update to my shorter email address
Gabriel Souza Franco (2):
fetch-pack: fix object_id of exact sha1
fetch-pack: update the documentation for "<refs>..." arguments
Jacob Keller (7):
submodule: don't pass empty string arguments to submodule--helper clone
submodule: check argc count for git submodule--helper clone
submodule: fix submodule--helper clone usage
submodule: fix segmentation fault in submodule--helper clone
quote: implement sq_quotef()
git: submodule honor -c credential.* from command line
xdiff: add recs_match helper function
Jacob Nisnevich (2):
mergetools: create mergetool_find_win32_cmd() helper function for winmerge
mergetools: add support for ExamDiff
Jan Durovec (2):
git-p4: clean-up code style in tests
git-p4: add P4 jobs to git commit message
Jeff King (52):
credential: let empty credential specs reset helper list
t1515: add tests for rev-parse out-of-repo helpers
add--interactive: allow custom diff highlighting programs
rev-parse: let some options run outside repository
strbuf_getwholeline: NUL-terminate getdelim buffer on error
setup: make startup_info available everywhere
setup: set startup_info->have_repository more reliably
remote: don't resolve HEAD in non-repository
mailmap: do not resolve blobs in a non-repository
grep: turn off gitlink detection for --no-index
use setup_git_directory() in test-* programs
setup: document check_repository_format()
wrap shared_repository global in get/set accessors
lazily load core.sharedrepository
check_repository_format_gently: stop using git_config_early
config: drop git_config_early
setup: refactor repo format reading and verification
init: use setup.c's repo version verification
setup: unify repository version callbacks
setup: drop repository_format_version global
verify_repository_format: mark messages for translation
send-email: ignore trailing whitespace in mailrc alias file
credential-cache--daemon: clarify "exit" action semantics
t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env
git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
branch: fix shortening of non-remote symrefs
commit: do not ignore an empty message given by -m ''
config: lower-case first word of error strings
git_config_set_multivar_in_file: all non-zero returns are errors
git_config_set_multivar_in_file: handle "unset" errors
t5532: use write_script
send-pack: close demux pipe before finishing async process
run-command: teach async threads to ignore SIGPIPE
send-pack: isolate sigpipe in demuxer thread
fetch-pack: isolate sigpipe in demuxer thread
t5504: drop sigpipe=ok from push tests
remote.c: spell __attribute__ correctly
t5550: fix typo in $HTTPD_URL
t5550: break submodule config test into multiple sub-tests
submodule: export sanitized GIT_CONFIG_PARAMETERS
submodule--helper: move config-sanitizing to submodule.c
submodule: use prepare_submodule_repo_env consistently
submodule: stop sanitizing config options
t6302: simplify non-gpg cases
rebase--interactive: avoid empty list in shell for-loop
test-lib: set BASH_XTRACEFD automatically
t/lib-git-svn: drop $remote_git_svn and $git_svn_id
t9100,t3419: enclose all test code in single-quotes
t9107: use "return 1" instead of "exit 1"
t9107: switch inverted single/double quotes in test
t9103: modernize test style
always quote shell arguments to test -z/-n
Johannes Schindelin (16):
replace --edit: respect core.editor
name-rev: include taggerdate in considering the best name
win32mmap: set errno appropriately
mmap(win32): avoid copy-on-write when it is unnecessary
mmap(win32): avoid expensive fstat() call
http: support sending custom HTTP headers
tests: adjust the configuration for Apache 2.2
t5551: make the test for extra HTTP headers more robust
t3404: fix typo
submodule: ensure that -c http.extraheader is heeded
mingw: introduce the 'core.hideDotFiles' setting
mingw: remove unnecessary definition
Windows: only add a no-op pthread_sigmask() when needed
perf: let's disable symlinks when they are not available
perf: make the tests work in worktrees
perf: run "rebase -i" under perf
Johannes Sixt (2):
Windows: shorten code by re-using convert_slashes()
Windows: add pthread_sigmask() that does nothing
John Keeping (3):
config: fail if --get-urlmatch finds no value
Documentation/git-config: use bulleted list for exit codes
Documentation/git-config: fix --get-all description
Junio C Hamano (69):
rerere: split conflict ID further
rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
index-pack: correct --keep[=<msg>]
index-pack: add a helper function to derive .idx/.keep filename
rerere: handle leftover rr-cache/$ID directory and postimage files
rerere: delay the recording of preimage
rerere: allow multiple variants to exist
t4200: rerere a merge with two identical conflicts
rerere: do use multiple variants
apply: remove unused call to free() in gitdiff_{old,new}name()
merge: fix NULL pointer dereference when merging nothing into void
merge: refuse to create too cool a merge by default
pretty: enable --expand-tabs by default for selected pretty formats
pretty: allow tweaking tabwidth in --expand-tabs
submodule--helper: do not borrow absolute_path() result for too long
Git 2.8.1
First batch for post 2.8 cycle
pretty: test --expand-tabs
Makefile: fix misdirected redirections
Second batch for post 2.8 cycle
Makefile: stop pretending to support rpmbuild
rerere: gc and clear
rerere: move code related to "forget" together
rerere: split code to call ll_merge() further
rerere: adjust 'forget' to multi-variant world order
setup.c: do not feed NULL to "%.*s" even with precision 0
Third batch for post 2.8 cycle
http: differentiate socks5:// and socks5h://
t1020: do not overuse printf and use write_script
t3404: use write_script
Fourth batch for post 2.8 cycle
Start preparing for 2.8.2
fsck_commit_buffer(): do not special case the last validation
ll-merge: fix typo in comment
Prepare for 2.8.2
Makefile: clean *.o files we create
Fifth batch for post 2.8 cycle
t3033: avoid 'ambiguous refs' warning
pull: pass --allow-unrelated-histories to "git merge"
Sixth batch for post 2.8 cycle
send-email: fix grammo in the prompt that asks e-mail recipients
Seventh batch for post 2.8 cycle
Git 2.8.2
Eighth batch for 2.9
diff: undocument the compaction heuristic knobs for experimentation
Start preparing for 2.8.3
commit-tree: do not pay attention to commit.gpgsign
Ninth batch for 2.9
config: describe 'pathname' value type
Tenth batch for 2.9
Almost ready for 2.8.3
test-lib-functions.sh: remove misleading comment on test_seq
test-lib-functions.sh: rewrite test_seq without Perl
ll-merge: use a longer conflict marker for internal merge
t6036: remove pointless test that expects failure
Documentation: fix linkgit references
fsck: detect and warn a commit with embedded NUL
ci: validate "linkgit:" in documentation
test-parse-options: fix output when callback option fails
test-parse-options: --expect=<string> option to simplify tests
t0040: remove unused test helpers
t0040: convert a few tests to use test-parse-options --expect
Eleventh batch for 2.9
rerere: plug memory leaks upon "rerere forget" failure
Twelfth batch for 2.9
Thirteenth batch for 2.9
Git 2.8.3
rerere: remove an null statement
Git 2.9-rc0
Kazuki Yamaguchi (10):
branch -d: refuse deleting a branch which is currently checked out
refs: add a new function set_worktree_head_symref
branch -m: update all per-worktree HEADs
set_worktree_head_symref(): fix error message
imap-send: use HMAC() function provided by OpenSSL
imap-send: check NULL return of SSL_CTX_new()
imap-send: avoid deprecated TLSv1_method()
configure: remove checking for HMAC_CTX_cleanup
imap-send: check for NOLOGIN capability only when using LOGIN command
imap-send: fix CRAM-MD5 response calculation
Keller Fuchs (1):
Documentation: clarify signature verification
Lars Schneider (8):
git-p4: map a P4 user to Git author name and email address
travis-ci: update Git-LFS and P4 to the latest version
travis-ci: express Linux/OS X dependency versions more clearly
git-p4: fix Git LFS pointer parsing
t9824: fix wrong reference value
Documentation: add setup instructions for Travis CI
travis-ci: build documentation
travis-ci: enable Git SVN tests t91xx on Linux
Laurent Arnoud (1):
tag: add the option to force signing of annotated tags
Li Peng (1):
typofix: assorted typofixes in comments, documentation and messages
Linus Torvalds (1):
pretty: expand tabs in indented logs to make things line up properly
Luke Diamand (3):
git-p4 tests: cd to / before running python
git-p4 tests: work with python3 as well as python2
git-p4 tests: time_in_seconds should use $PYTHON_PATH
Marios Titas (2):
ident: check for useConfigOnly before auto-detection of name/email
ident: give "please tell me" message upon useConfigOnly error
Matthieu Moy (11):
Documentation/diff-config: fix description of diff.renames
t4001-diff-rename: wrap file creations in a test
t: add tests for diff.renames (true/false/unset)
log: introduce init_log_defaults()
diff: activate diff.renames by default
lockfile: mark strings for translation
lockfile: improve error message when lockfile exists
git.spec.in: use README.md, not README
README.md: don't take 'commandname' literally
git-multimail: update to release 1.3.0
git-multimail: update to release 1.3.1
Mehul Jain (9):
git-pull.c: introduce git_pull_config()
pull --rebase: add --[no-]autostash flag
t5520: use consistent capitalization in test titles
t5520: ensure consistent test conditions
t5520: use better test to check stderr output
t5520: factor out common "successful autostash" code
t5520: factor out common "failing autostash" code
t5520: reduce commom lines of code
t5520: test --[no-]autostash with pull.rebase=true
Michael Haggerty (19):
t1430: test the output and error of some commands more carefully
t1430: clean up broken refs/tags/shadow
t1430: don't rely on symbolic-ref for creating broken symrefs
t1430: test for-each-ref in the presence of badly-named refs
t1430: improve test coverage of deletion of badly-named refs
resolve_missing_loose_ref(): simplify semantics
resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
resolve_ref_unsafe(): ensure flags is always set
resolve_ref_1(): eliminate local variable
resolve_ref_1(): reorder code
resolve_ref_1(): eliminate local variable "bad_name"
read_raw_ref(): manage own scratch space
files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
read_raw_ref(): change flags parameter to unsigned int
fsck_head_link(): remove unneeded flag variable
cmd_merge(): remove unneeded flag variable
checkout_paths(): remove unneeded flag variable
check_aliased_update(): check that dst_name is non-NULL
show_head_ref(): check the result of resolve_ref_namespace()
Michael J Gruber (1):
completion: complete --cherry-mark for git log
Michael Procter (1):
upload-pack: use argv_array for pack_objects
Nguyễn Thái Ngọc Duy (62):
git-apply.txt: remove a space
git-apply.txt: mention the behavior inside a subdir
apply: report patch skipping in verbose mode
test helpers: move test-* to t/helper/ subdirectory
dir.c: remove dead function fnmatch_icase()
wrapper.c: delete dead function git_mkstemps()
dir.c: rename str(n)cmp_icase to fspath(n)cmp
path.c: add git_common_path() and strbuf_git_common_path()
worktree.c: store "id" instead of "git_dir"
worktree.c: make find_shared_symref() return struct worktree *
worktree.c: mark current worktree
path.c: refactor and add worktree_git_path()
wt-status.c: split rebase detection out of wt_status_get_state()
wt-status.c: make wt_status_check_rebase() work on any worktree
worktree.c: avoid referencing to worktrees[i] multiple times
worktree.c: check whether branch is rebased in another worktree
wt-status.c: split bisect detection out of wt_status_get_state()
worktree.c: check whether branch is bisected in another worktree
branch: do not rename a branch under bisect or rebase
remote.c: specify correct plural form in "commit diverge" message
usage.c: move format processing out of die_errno()
usage.c: add warning_errno() and error_errno()
bisect.c: use die_errno() and warning_errno()
builtin/am.c: use error_errno()
builtin/branch.c: use error_errno()
builtin/fetch.c: use error_errno()
builtin/help.c: use warning_errno()
builtin/mailsplit.c: use error_errno()
builtin/merge-file.c: use error_errno()
builtin/pack-objects.c: use die_errno() and warning_errno()
builtin/rm.c: use warning_errno()
builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
builtin/upload-archive.c: use error_errno()
builtin/worktree.c: use error_errno()
check-racy.c: use error_errno()
combine-diff.c: use error_errno()
compat/win32/syslog.c: use warning_errno()
config.c: use error_errno()
connected.c: use error_errno()
copy.c: use error_errno()
credential-cache--daemon.c: use warning_errno()
diff-no-index.c: use error_errno()
editor.c: use error_errno()
entry.c: use error_errno()
fast-import.c: use error_errno()
gpg-interface.c: use error_errno()
grep.c: use error_errno()
http.c: use error_errno() and warning_errno()
ident.c: use warning_errno()
mailmap.c: use error_errno()
reachable.c: use error_errno()
rerere.c: use error_errno() and warning_errno()
run-command.c: use error_errno()
sequencer.c: use error_errno()
server-info.c: use error_errno()
sha1_file.c: use {error,die,warning}_errno()
transport-helper.c: use error_errno()
unpack-trees.c: use error_errno()
upload-pack.c: use error_errno()
vcs-svn: use error_errno()
wrapper.c: use warning_errno()
wrap-for-bin.sh: regenerate bin-wrappers when switching branches
Nikola Forró (1):
difftool/mergetool: make the form of yes/no questions consistent
Ori Avtalion (1):
Documentation: git diff --check detects conflict markers
Pranit Bauva (9):
t/t7502 : drop duplicate test
api-parse-options.txt: document OPT_CMDMODE()
t0040-test-parse-options.sh: fix style issues
test-parse-options: print quiet as integer
t0040-parse-options: improve test coverage
t/t7507: improve test coverage
parse-options.c: make OPTION_COUNTUP respect "unspecified" values
t7507-commit-verbose: improve test coverage by testing number of diffs
commit: add a commit.verbose config variable
Ralf Thielow (4):
completion: add option '--guides' to 'git help'
completion: add 'revisions' and 'everyday' to 'git help'
rebase-i: print an abbreviated hash when stop for editing
string_list: use string-list API in unsorted_string_list_lookup()
Ramsay Jones (2):
xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
xdiff/xprepare: fix a memory leak
Ray Zhang (1):
worktree: add: introduce --checkout option
René Nyffenegger (1):
Documentation: fix typo 'In such these cases'
SZEDER Gábor (5):
diffcore: fix iteration order of identical files during rename detection
for-each-ref: fix description of '--contains' in manpage
test-lib: simplify '--option=value' parsing
t9824: fix broken &&-chain in a subshell
t5510: run auto-gc in the foreground
Santiago Torres (6):
builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
t7030: test verifying multiple tags
verify-tag: update variable name and type
verify-tag: prepare verify_tag for libification
verify-tag: move tag verification code to tag.c
tag -v: verify directly rather than exec-ing verify-tag
Saurav Sachidanand (1):
dir: store EXC_FLAG_* values in unsigned integers
Shin Kojima (1):
gitweb: apply fallback encoding before highlight
Sidhant Sharma [:tk] (1):
builtin/receive-pack.c: use parse_options API
Stanislav Kolotinskiy (1):
git-send-pack: fix --all option when used with directory
Stefan Beller (44):
submodule-config: keep update strategy around
submodule-config: drop check against NULL
fetching submodules: respect `submodule.fetchJobs` config option
submodule update: direct error message to stderr
run_processes_parallel: treat output of children as byte array
run_processes_parallel: rename parameters for the callbacks
git submodule update: have a dedicated helper for cloning
submodule helper: remove double 'fatal: ' prefix
submodule update: expose parallelism to the user
clone: allow an explicit argument for parallel submodule clones
clone tests: rename t57* => t56*
rebase: decouple --exec from --interactive
t3404: cleanup double empty lines between tests
submodule foreach: correct path display in recursive submodules
submodule update --init: correct path handling in recursive submodules
submodule status: correct path handling in recursive submodules
submodule update: align reporting path for custom command execution
submodule update: test recursive path reporting from subdirectory
t7407: make expectation as clear as possible
recursive submodules: test for relative paths
submodule--helper: fix potential NULL-dereference
submodule--helper clone: create the submodule path just once
notes: don't leak memory in git_config_get_notes_strategy
abbrev_sha1_in_line: don't leak memory
bundle: don't leak an fd in case of early return
credential-cache, send_request: close fd when done
submodule--helper, module_clone: always operate on absolute paths
submodule--helper, module_clone: catch fprintf failure
submodule: port resolve_relative_url from shell to C
submodule: port init from shell to C
xdiff: implement empty line chunk heuristic
mv: allow moving nested submodules
clone: add `--shallow-submodules` flag
config doc: improve exit code listing
config.c: drop local variable
submodule-config: don't shadow `cache`
submodule init: fail gracefully with a missing .gitmodules file
submodule--helper update-clone: abort gracefully on missing .gitmodules
submodule deinit test: fix broken && chain in subshell
submodule init: redirect stdout to stderr
t7300: mark test with SANITY
submodule deinit: require '--all' instead of '.' for all submodules
t3513: do not compress backup tar file
t6041: do not compress backup tar file
Stephen P. Smith (1):
wt-status.c: set commitable bit if there is a meaningful merge.
Sven Strickroth (3):
commit: do not lose SQUASH_MSG contents
MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
MSVC: use shipped headers instead of fallback definitions
Torsten Bögershausen (6):
correct blame for files commited with CRLF
t0027: make commit_chk_wrnNNO() reliable
convert: allow core.autocrlf=input and core.eol=crlf
t0027: test cases for combined attributes
convert.c: ident + core.autocrlf didn't work
t5601: Remove trailing space in sed expression
Vasco Almeida (16):
l10n: fr: fix transcation of "dir"
l10n: fr: fix wrongly translated option name
l10n: fr: change "id de clé" to match "id-clé"
l10n: fr: don't translate "merge" as a parameter
i18n: index-pack: use plural string instead of normal one
i18n: builtin/branch.c: mark option for translation
i18n: unpack-trees: mark strings for translation
i18n: builtin/rm.c: remove a comma ',' from string
i18n: branch: unmark string for translation
i18n: branch: move comment for translators
i18n: git-parse-remote.sh: mark strings for translation
i18n: builtin/pull.c: mark placeholders for translation
i18n: builtin/pull.c: split strings marked for translation
i18n: remote: add comment for translators
Documentation/git-mailinfo: fix typo
i18n: unpack-trees: avoid substituting only a verb in sentences
Xiaolong Ye (4):
patch-ids: make commit_patch_id() a public helper function
format-patch: add '--base' option to record base tree info
format-patch: introduce --base=auto option
format-patch: introduce format.useAutoBase configuration
brian m. carlson (6):
sha1-name: introduce a get_oid() function
test-match-trees: convert to use struct object_id
match-trees: convert shift_tree() and shift_tree_by() to use object_id
struct name_entry: use struct object_id instead of unsigned char sha1[20]
tree-walk: convert tree_entry_extract() to use struct object_id
match-trees: convert several leaf functions to use struct object_id
Ævar Arnfjörð Bjarmason (4):
githooks.txt: improve the intro section
githooks.txt: amend dangerous advice about 'update' hook ACL
githooks.txt: minor improvements to the grammar & phrasing
hooks: allow customizing where the hook directory is
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.8.0
@ 2016-03-28 22:42 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-03-28 22:42 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.8.0 is now available at the
usual places. It is comprised of 532 non-merge commits since
v2.7.0, contributed by 74 people, 22 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.8.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.7.0 are as follows.
Welcome to the Git development community!
마누엘, Adam Dinwoodie, Andrew Wheeler, Changwoo Ryu,
Christoph Egger, Christoph Hoopmann, Dan Aloni, Dave Ware, David
A. Wheeler, Dickson Wong, Felipe Gonçalves Assis, GyuYong Jung,
Jon Griffiths, Kazutoshi Satoda, Lars Vogel, Martin Amdisen,
Matthew Kraai, Paul Wagland, Rob Mayoff, Romain Picard, Vasco
Almeida, and Victor Leschuk.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Kuleshov, Alexander Shopov, Alex Henrie, Audric
Schiltknecht, brian m. carlson, Carlos Martín Nieto, Christian
Couder, David A. Greene, David Turner, Dennis Kaarsemaker,
Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elia Pinto,
Eric Sunshine, Eric Wong, Guillermo S. Romero, Jacob Keller,
Jean-Noel Avila, Jeff King, Jiang Xin, Johannes Schindelin,
Johannes Sixt, John Keeping, Jonathan Nieder, Junio C Hamano,
Karsten Blees, Karthik Nayak, Knut Franke, Lars Schneider,
Matthieu Moy, Matt McCutchen, Michael J Gruber, Mike Hommey,
Nguyễn Thái Ngọc Duy, Øyvind A. Holm, Patrick Steinhardt,
Pat Thoyts, Peter Krefting, Ralf Thielow, Ray Chen, Sebastian
Schuberth, Shawn O. Pearce, Stefan Beller, Stephen P. Smith,
SZEDER Gábor, Thomas Ackermann, Thomas Braun, Thomas Gummerer,
Tobias Klauser, Torsten Bögershausen, Trần Ngọc Quân,
and Will Palmer.
----------------------------------------------------------------
Git 2.8 Release Notes
=====================
Backward compatibility note
---------------------------
The rsync:// transport has been removed.
Updates since v2.7
------------------
UI, Workflows & Features
* It turns out "git clone" over rsync transport has been broken when
the source repository has packed references for a long time, and
nobody noticed nor complained about it.
* "push" learned that its "--delete" option can be shortened to
"-d", just like "branch --delete" and "branch -d" are the same
thing.
* "git blame" learned to produce the progress eye-candy when it takes
too much time before emitting the first line of the result.
* "git grep" can now be configured (or told from the command line)
how many threads to use when searching in the working tree files.
* 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).
* "git grep" by default does not fall back to its "--no-index"
behavior outside a directory under Git's control (otherwise the
user may by mistake end up running a huge recursive search); with a
new configuration (set in $HOME/.gitconfig--by definition this
cannot be set in the config file per project), this safety can be
disabled.
* "git pull --rebase" has been extended to allow invoking
"rebase -i".
* "git p4" learned to cope with the type of a file getting changed.
* "git format-patch" learned to notice format.outputDirectory
configuration variable. This allows "-o <dir>" option to be
omitted on the command line if you always use the same directory in
your workflow.
* "interpret-trailers" has been taught to optionally update a file in
place, instead of always writing the result to the standard output.
* Many commands that read files that are expected to contain text
that is generated (or can be edited) by the end user to control
their behavior (e.g. "git grep -f <filename>") have been updated
to be more tolerant to lines that are terminated with CRLF (they
used to treat such a line to contain payload that ends with CR,
which is usually not what the users expect).
* "git notes merge" used to limit the source of the merged notes tree
to somewhere under refs/notes/ hierarchy, which was too limiting
when inventing a workflow to exchange notes with remote
repositories using remote-tracking notes trees (located in e.g.
refs/remote-notes/ or somesuch).
* "git ls-files" learned a new "--eol" option to help diagnose
end-of-line problems.
* "ls-remote" learned an option to show which branch the remote
repository advertises as its primary by pointing its HEAD at.
* New http.proxyAuthMethod configuration variable can be used to
specify what authentication method to use, as a way to work around
proxies that do not give error response expected by libcurl when
CURLAUTH_ANY is used. Also, the codepath for proxy authentication
has been taught to use credential API to store the authentication
material in user's keyrings.
* Update the untracked cache subsystem and change its primary UI from
"git update-index" to "git config".
* There were a few "now I am doing this thing" progress messages in
the TCP connection code that can be triggered by setting a verbose
option internally in the code, but "git fetch -v" and friends never
passed the verbose option down to that codepath.
* Clean/smudge filters defined in a configuration file of lower
precedence can now be overridden to be a pass-through no-op by
setting the variable to an empty string.
* A new "<branch>^{/!-<pattern>}" notation can be used to name a
commit that is reachable from <branch> that does not match the
given <pattern>.
* The "user.useConfigOnly" configuration variable can be used to
force the user to always set user.email & user.name configuration
variables, serving as a reminder for those who work on multiple
projects and do not want to put these in their $HOME/.gitconfig.
* "git fetch" and friends that make network connections can now be
told to only use ipv4 (or ipv6).
* Some authentication methods do not need username or password, but
libcurl needs some hint that it needs to perform authentication.
Supplying an empty username and password string is a valid way to
do so, but you can set the http.[<url>.]emptyAuth configuration
variable to achieve the same, if you find it cleaner.
* You can now set http.[<url>.]pinnedpubkey to specify the pinned
public key when building with recent enough versions of libcURL.
* The configuration system has been taught to phrase where it found a
bad configuration variable in a better way in its error messages.
"git config" learnt a new "--show-origin" option to indicate where
the values come from.
* The "credential-cache" daemon process used to run in whatever
directory it happened to start in, but this made umount(2)ing the
filesystem that houses the repository harder; now the process
chdir()s to the directory that house its own socket on startup.
* When "git submodule update" did not result in fetching the commit
object in the submodule that is referenced by the superproject, the
command learned to retry another fetch, specifically asking for
that commit that may not be connected to the refs it usually
fetches.
* "git merge-recursive" learned "--no-renames" option to disable its
rename detection logic.
* Across the transition at around Git version 2.0, the user used to
get a pretty loud warning when running "git push" without setting
push.default configuration variable. We no longer warn because the
transition was completed a long time ago.
* README has been renamed to README.md and its contents got tweaked
slightly to make it easier on the eyes.
Performance, Internal Implementation, Development Support etc.
* Add a framework to spawn a group of processes in parallel, and use
it to run "git fetch --recurse-submodules" in parallel.
* A slight update to the Makefile to mark ".PHONY" targets as such
correctly.
* In-core storage of the reverse index for .pack files (which lets
you go from a pack offset to an object name) has been streamlined.
* d95138e6 (setup: set env $GIT_WORK_TREE when work tree is set, like
$GIT_DIR, 2015-06-26) attempted to work around a glitch in alias
handling by overwriting GIT_WORK_TREE environment variable to
affect subprocesses when set_git_work_tree() gets called, which
resulted in a rather unpleasant regression to "clone" and "init".
Try to address the same issue by always restoring the environment
and respawning the real underlying command when handling alias.
* The low-level code that is used to create symbolic references has
been updated to share more code with the code that deals with
normal references.
* strbuf_getline() and friends have been redefined to make it easier
to identify which callsite of (new) strbuf_getline_lf() should
allow and silently ignore carriage-return at the end of the line to
help users on DOSsy systems.
* "git shortlog" used to accumulate various pieces of information
regardless of what was asked to be shown in the final output. It
has been optimized by noticing what need not to be collected
(e.g. there is no need to collect the log messages when showing
only the number of changes).
* "git checkout $branch" (and other operations that share the same
underlying machinery) has been optimized.
* Automated tests in Travis CI environment has been optimized by
persisting runtime statistics of previous "prove" run, executing
tests that take longer before other ones; this reduces the total
wallclock time.
* Test scripts have been updated to remove assumptions that are not
portable between Git for POSIX and Git for Windows, or to skip ones
with expectations that are not satisfiable on Git for Windows.
* Some calls to strcpy(3) triggers a false warning from static
analyzers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in a couple of protrams that are already safe
has been rewritten to avoid false warnings.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat. The API has been removed and its users have been
rewritten to simplify the overall code complexity.
* Help those who debug http(s) part of the system.
(merge 0054045 sp/remote-curl-ssl-strerror later to maint).
* The internal API to interact with "remote.*" configuration
variables has been streamlined.
* The ref-filter's format-parsing code has been refactored, in
preparation for "branch --format" and friends.
* Traditionally, the tests that try commands that work on the
contents in the working tree were named with "worktree" in their
filenames, but with the recent addition of "git worktree"
subcommand, whose tests are also named similarly, it has become
harder to tell them apart. The traditional tests have been renamed
to use "work-tree" instead in an attempt to differentiate them.
(merge 5549029 mg/work-tree-tests later to maint).
* Many codepaths forget to check return value from git_config_set();
the function is made to die() to make sure we do not proceed when
setting a configuration variable failed.
(merge 3d18064 ps/config-error later to maint).
* Handling of errors while writing into our internal asynchronous
process has been made more robust, which reduces flakiness in our
tests.
(merge 43f3afc jk/epipe-in-async later to maint).
* There is a new DEVELOPER knob that enables many compiler warning
options in the Makefile.
* The way the test scripts configure the Apache web server has been
updated to work also for Apache 2.4 running on RedHat derived
distros.
* Out of maintenance gcc on OSX 10.6 fails to compile the code in
'master'; work it around by using clang by default on the platform.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat, in many cases. The API has been removed and its
users have been rewritten to simplify the overall code complexity.
This incidentally also closes some heap-corruption holes.
* Recent versions of GNU grep is pickier than before to decide if a
file is "binary" and refuse to give line-oriented hits when we
expect it to, unless explicitly told with "-a" option. As our
scripted Porcelains use sane_grep wrapper for line-oriented data,
even when the line may contain non-ASCII payload we took from
end-user data, use "grep -a" to implement sane_grep wrapper when
using an implementation of "grep" that takes the "-a" option.
Also contains various documentation updates and code clean-ups.
Fixes since v2.7
----------------
Unless otherwise noted, all the fixes since v2.7 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* An earlier change in 2.5.x-era broke users' hooks and aliases by
exporting GIT_WORK_TREE to point at the root of the working tree,
interfering when they tried to use a different working tree without
setting GIT_WORK_TREE environment themselves.
* The "exclude_list" structure has the usual "alloc, nr" pair of
fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
array.
* Paths that have been told the index about with "add -N" are not
quite yet in the index, but a few commands behaved as if they
already are in a harmful way.
* "git send-email" was confused by escaped quotes stored in the alias
files saved by "mutt", which has been corrected.
* A few non-portable C construct have been spotted by clang compiler
and have been fixed.
* The documentation has been updated to hint the connection between
the '--signoff' option and DCO.
* "git reflog" incorrectly assumed that all objects that used to be
at the tip of a ref must be commits, which caused it to segfault.
* The ignore mechanism saw a few regressions around untracked file
listing and sparse checkout selection areas in 2.7.0; the change
that is responsible for the regression has been reverted.
* Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
(e.g. COMMIT_EDITMSG) that is meant to be left after the command is
done. This however did not work well if the repository is set to
be shared with core.sharedRepository and the umask of the previous
user is tighter. They have been made to work better by calling
unlink(2) and retrying after fopen(3) fails with EPERM.
* Asking gitweb for a nonexistent commit left a warning in the server
log.
Somebody may want to follow this up with an additional test, perhaps?
IIRC, we do test that no Perl warnings are given to the server log,
so this should have been caught if our test coverage were good.
* "git rebase", unlike all other callers of "gc --auto", did not
ignore the exit code from "gc --auto".
* Many codepaths that run "gc --auto" before exiting kept packfiles
mapped and left the file descriptors to them open, which was not
friendly to systems that cannot remove files that are open. They
now close the packs before doing so.
* A recent optimization to filter-branch in v2.7.0 introduced a
regression when --prune-empty filter is used, which has been
corrected.
* The description for SANITY prerequisite the test suite uses has
been clarified both in the comment and in the implementation.
* "git tag" started listing a tag "foo" as "tags/foo" when a branch
named "foo" exists in the same repository; remove this unnecessary
disambiguation, which is a regression introduced in v2.7.0.
* The way "git svn" uses auth parameter was broken by Subversion
1.9.0 and later.
* The "split" subcommand of "git subtree" (in contrib/) incorrectly
skipped merges when it shouldn't, which was corrected.
* A few options of "git diff" did not work well when the command was
run from a subdirectory.
* The command line completion learned a handful of additional options
and command specific syntax.
* dirname() emulation has been added, as Msys2 lacks it.
* The underlying machinery used by "ls-files -o" and other commands
has been taught not to create empty submodule ref cache for a
directory that is not a submodule. This removes a ton of wasted
CPU cycles.
* "git worktree" had a broken code that attempted to auto-fix
possible inconsistency that results from end-users moving a
worktree to different places without telling Git (the original
repository needs to maintain back-pointers to its worktrees,
but "mv" run by end-users who are not familiar with that fact
will obviously not adjust them), which actually made things
worse when triggered.
* The low-level merge machinery has been taught to use CRLF line
termination when inserting conflict markers to merged contents that
are themselves CRLF line-terminated.
* "git push --force-with-lease" has been taught to report if the push
needed to force (or fast-forwarded).
* The emulated "yes" command used in our test scripts has been
tweaked not to spend too much time generating unnecessary output
that is not used, to help those who test on Windows where it would
not stop until it fills the pipe buffer due to lack of SIGPIPE.
* The documentation for "git clean" has been corrected; it mentioned
that .git/modules/* are removed by giving two "-f", which has never
been the case.
* The vimdiff backend for "git mergetool" has been tweaked to arrange
and number buffers in the order that would match the expectation of
majority of people who read left to right, then top down and assign
buffers 1 2 3 4 "mentally" to local base remote merge windows based
on that order.
* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
rev, i.e. the object named by the the pathname with wildcard
characters in a tree object.
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
* "git rev-parse --git-common-dir" used in the worktree feature
misbehaved when run from a subdirectory.
(merge 17f1365 nd/git-common-dir-fix later to maint).
* "git worktree add -B <branchname>" did not work.
* The "v(iew)" subcommand of the interactive "git am -i" command was
broken in 2.6.0 timeframe when the command was rewritten in C.
(merge 708b8cc jc/am-i-v-fix later to maint).
* "git merge-tree" used to mishandle "both sides added" conflict with
its own "create a fake ancestor file that has the common parts of
what both sides have added and do a 3-way merge" logic; this has
been updated to use the usual "3-way merge with an empty blob as
the fake common ancestor file" approach used in the rest of the
system.
(merge 907681e jk/no-diff-emit-common later to maint).
* The memory ownership rule of fill_textconv() API, which was a bit
tricky, has been documented a bit better.
(merge a64e6a4 jk/more-comments-on-textconv later to maint).
* Update various codepaths to avoid manually-counted malloc().
(merge 08c95df jk/tighten-alloc later to maint).
* The documentation did not clearly state that the 'simple' mode is
now the default for "git push" when push.default configuration is
not set.
(merge f6b1fb3 mm/push-simple-doc later to maint).
* Recent versions of GNU grep are pickier when their input contains
arbitrary binary data, which some of our tests uses. Rewrite the
tests to sidestep the problem.
(merge 3b1442d jk/grep-binary-workaround-in-test later to maint).
* A helper function "git submodule" uses since v2.7.0 to list the
modules that match the pathspec argument given to its subcommands
(e.g. "submodule add <repo> <path>") has been fixed.
(merge 2b56bb7 sb/submodule-module-list-fix later to maint).
* "git config section.var value" to set a value in per-repository
configuration file failed when it was run outside any repository,
but didn't say the reason correctly.
(merge 638fa62 js/config-set-in-non-repository later to maint).
* The code to read the pack data using the offsets stored in the pack
idx file has been made more carefully check the validity of the
data in the idx.
(merge 7465feb jk/pack-idx-corruption-safety later to maint).
* Other minor clean-ups and documentation updates
(merge f459823 ak/extract-argv0-last-dir-sep later to maint).
(merge 63ca1c0 ak/git-strip-extension-from-dashed-command later to maint).
(merge 4867f11 ps/plug-xdl-merge-leak later to maint).
(merge 4938686 dt/initial-ref-xn-commit-doc later to maint).
(merge 9537f21 ma/update-hooks-sample-typofix later to maint).
----------------------------------------------------------------
Changes since v2.7.0 are as follows:
Adam Dinwoodie (1):
t9117: test specifying full url to git svn init -T
Alex Henrie (2):
stripspace: call U+0020 a "space" instead of a "blank"
l10n: ca.po: update translation
Alexander Kuleshov (3):
format-patch: introduce format.outputDirectory configuration
exec_cmd.c: use find_last_dir_sep() for code simplification
git.c: simplify stripping extension of a file in handle_builtin()
Alexander Shopov (1):
gitk: Update Bulgarian translation (311t)
Andrew Wheeler (1):
push: fix ref status reporting for --force-with-lease
Audric Schiltknecht (1):
l10n: fr.po: Correct case in sentence
Carlos Martín Nieto (1):
Disown ssh+git and git+ssh
Changwoo Ryu (4):
l10n: ko.po: Add Korean translation
l10n: ko.po: Update Korean translation
l10n: ko: Update Korean translation
l10n: ko.po: Update Korean translation
Christian Couder (11):
dir: free untracked cache when removing it
update-index: use enum for untracked cache options
update-index: add --test-untracked-cache
update-index: add untracked cache notifications
update-index: move 'uc' var declaration
dir: add {new,add}_untracked_cache()
dir: add remove_untracked_cache()
dir: simplify untracked cache "ident" field
config: add core.untrackedCache
test-dump-untracked-cache: don't modify the untracked cache
t7063: add tests for core.untrackedCache
Christoph Egger (1):
http: implement public key pinning
Christoph Hoopmann (1):
l10n: de.po: fix typo
Dan Aloni (1):
ident: add user.useConfigOnly boolean for when ident shouldn't be guessed
Dave Ware (1):
contrib/subtree: fix "subtree split" skipped-merge bug
David A. Greene (1):
contrib/subtree: Make testing easier
David A. Wheeler (1):
Expand documentation describing --signoff
David Turner (3):
do_compare_entry: use already-computed path
unpack-trees: fix accidentally quadratic behavior
refs: document transaction semantics
Dennis Kaarsemaker (1):
reflog-walk: don't segfault on non-commit sha1's in the reflog
Dickson Wong (1):
mergetool: reorder vim/gvim buffers in three-way diffs
Dimitriy Ryazantcev (3):
l10n: ru.po: update Russian translation
l10n: ru.po: update Russian translation
l10n: ru.po: update Russian translation
Edmundo Carmona Antoranz (1):
blame: add support for --[no-]progress option
Elia Pinto (92):
Makefile: add missing phony target
contrib/examples/git-commit.sh: use the $( ... ) construct for command substitution
contrib/examples/git-fetch.sh: use the $( ... ) construct for command substitution
contrib/examples/git-merge.sh: use the $( ... ) construct for command substitution
contrib/examples/git-repack.sh: use the $( ... ) construct for command substitution
contrib/examples/git-revert.sh: use the $( ... ) construct for command substitution
contrib/thunderbird-patch-inline/appp.sh: use the $( ... ) construct for command substitution
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
t/lib-httpd.sh: use the $( ... ) construct for command substitution
test-sha1.sh: use the $( ... ) construct for command substitution
unimplemented.sh: use the $( ... ) construct for command substitution
t/t1100-commit-tree-options.sh: use the $( ... ) construct for command substitution
t/t1401-symbolic-ref.sh: use the $( ... ) construct for command substitution
t/t1410-reflog.sh: use the $( ... ) construct for command substitution
t/t1511-rev-parse-caret.sh: use the $( ... ) construct for command substitution
t/t1512-rev-parse-disambiguation.sh: use the $( ... ) construct for command substitution
t/t1700-split-index.sh: use the $( ... ) construct for command substitution
t/t2025-worktree-add.sh: use the $( ... ) construct for command substitution
t/t2102-update-index-symlinks.sh: use the $( ... ) construct for command substitution
t/t3030-merge-recursive.sh: use the $( ... ) construct for command substitution
t/t3100-ls-tree-restrict.sh: use the $( ... ) construct for command substitution
t/t3101-ls-tree-dirname.sh: use the $( ... ) construct for command substitution
t/t3210-pack-refs.sh: use the $( ... ) construct for command substitution
t/t3403-rebase-skip.sh: use the $( ... ) construct for command substitution
t/t3511-cherry-pick-x.sh: use the $( ... ) construct for command substitution
t/t3600-rm.sh: use the $( ... ) construct for command substitution
t/t3700-add.sh: use the $( ... ) construct for command substitution
t/t5100-mailinfo.sh: use the $( ... ) construct for command substitution
t/t5300-pack-object.sh: use the $( ... ) construct for command substitution
t/t5301-sliding-window.sh: use the $( ... ) construct for command substitution
t/t5302-pack-index.sh: use the $( ... ) construct for command substitution
t/t5303-pack-corruption-resilience.sh: use the $( ... ) construct for command substitution
t/t5304-prune.sh: use the $( ... ) construct for command substitution
t/t5305-include-tag.sh: use the $( ... ) construct for command substitution
t/t5500-fetch-pack.sh: use the $( ... ) construct for command substitution
t/t5505-remote.sh: use the $( ... ) construct for command substitution
t/t5506-remote-groups.sh: use the $( ... ) construct for command substitution
t/t5510-fetch.sh: use the $( ... ) construct for command substitution
t/t5515-fetch-merge-logic.sh: use the $( ... ) construct for command substitution
t/t5516-fetch-push.sh: use the $( ... ) construct for command substitution
t/t5517-push-mirror.sh: use the $( ... ) construct for command substitution
t/t5522-pull-symlink.sh: use the $( ... ) construct for command substitution
t/t5530-upload-pack-error.sh: use the $( ... ) construct for command substitution
t/t5532-fetch-proxy.sh: use the $( ... ) construct for command substitution
t/t5537-fetch-shallow.sh: use the $( ... ) construct for command substitution
t/t5538-push-shallow.sh: use the $( ... ) construct for command substitution
t/t5550-http-fetch-dumb.sh: use the $( ... ) construct for command substitution
t/t5570-git-daemon.sh: use the $( ... ) construct for command substitution
t/t5601-clone.sh: use the $( ... ) construct for command substitution
t/t5700-clone-reference.sh: use the $( ... ) construct for command substitution
t/t5710-info-alternate.sh: use the $( ... ) construct for command substitution
t/t5900-repo-selection.sh: use the $( ... ) construct for command substitution
t/t6001-rev-list-graft.sh: use the $( ... ) construct for command substitution
t/t6002-rev-list-bisect.sh: use the $( ... ) construct for command substitution
t/t6015-rev-list-show-all-parents.sh: use the $( ... ) construct for command substitution
t/t6032-merge-large-rename.sh: use the $( ... ) construct for command substitution
t/t6132-pathspec-exclude.sh: use the $( ... ) construct for command substitution
t/t7001-mv.sh: use the $( ... ) construct for command substitution
t/t7003-filter-branch.sh: use the $( ... ) construct for command substitution
t/t7004-tag.sh: use the $( ... ) construct for command substitution
t/t7006-pager.sh: use the $( ... ) construct for command substitution
t/t7103-reset-bare.sh: use the $( ... ) construct for command substitution
t/t7406-submodule-update.sh: use the $( ... ) construct for command substitution
t/t7408-submodule-reference.sh: use the $( ... ) construct for command substitution
t/t7504-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7505-prepare-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7602-merge-octopus-many.sh: use the $( ... ) construct for command substitution
t/t7700-repack.sh: use the $( ... ) construct for command substitution
t/t8003-blame-corner-cases.sh: use the $( ... ) construct for command substitution
t/t9001-send-email.sh: use the $( ... ) construct for command substitution
t9100-git-svn-basic.sh: use the $( ... ) construct for command substitution
t9101-git-svn-props.sh: use the $( ... ) construct for command substitution
t9104-git-svn-follow-parent.sh: use the $( ... ) construct for command substitution
t9105-git-svn-commit-diff.sh: use the $( ... ) construct for command substitution
t9107-git-svn-migrate.sh: use the $( ... ) construct for command substitution
t9108-git-svn-glob.sh: use the $( ... ) construct for command substitution
t9109-git-svn-multi-glob.sh: use the $( ... ) construct for command substitution
t9110-git-svn-use-svm-props.sh: use the $( ... ) construct for command substitution
t9114-git-svn-dcommit-merge.sh: use the $( ... ) construct for command substitution
t9118-git-svn-funky-branch-names.sh: use the $( ... ) construct for command substitution
t9119-git-svn-info.sh: use the $( ... ) construct for command substitution
t9129-git-svn-i18n-commitencoding.sh: use the $( ... ) construct for command substitution
t9130-git-svn-authors-file.sh: use the $( ... ) construct for command substitution
t9132-git-svn-broken-symlink.sh: use the $( ... ) construct for command substitution
t9137-git-svn-dcommit-clobber-series.sh: use the $( ... ) construct for command substitution
t9138-git-svn-authors-prog.sh: use the $( ... ) construct for command substitution
t9145-git-svn-master-branch.sh: use the $( ... ) construct for command substitution
t9150-svk-mergetickets.sh: use the $( ... ) construct for command substitution
t9300-fast-import.sh: use the $( ... ) construct for command substitution
t9350-fast-export.sh: use the $( ... ) construct for command substitution
t9501-gitweb-standalone-http-status.sh: use the $( ... ) construct for command substitution
t9901-git-web--browse.sh: use the $( ... ) construct for command substitution
Eric Sunshine (2):
git-compat-util: st_add4: work around gcc 4.2.x compiler crash
Revert "config.mak.uname: use clang for Mac OS X 10.6"
Eric Wong (10):
git-send-email: do not double-escape quotes from mutt
for-each-ref: document `creatordate` and `creator` fields
git-svn: fix auth parameter handling on SVN 1.9.0+
pass transport verbosity down to git_connect
connect & http: support -4 and -6 switches for remote operations
t5570: add tests for "git {clone,fetch,pull} -v"
git-svn: hoist out utf8 prep from t9129 to lib-git-svn
tests: remove no-op full-svn-test target
git-svn: shorten glob error message
git-svn: fix URL canonicalization during init w/ SVN 1.7+
Felipe Gonçalves Assis (7):
merge-recursive: option to disable renames
merge-recursive: more consistent interface
merge-strategies.txt: fix typo
merge-recursive: find-renames resets threshold
t3034: add rename threshold tests
t3034: test option to disable renames
t3034: test deprecated interface
Guillermo S. Romero (1):
gitk: Follow themed bgcolor in help dialogs
GyuYong Jung (1):
git-cvsserver.perl: fix typo
Jacob Keller (1):
notes: allow merging from arbitrary references
Jean-Noel Avila (5):
l10n: fr.po v2.8.0 round 1 2509t
l10n: fr.po v2.8.0 round 2
l10n: fr.po v2.8.0 round 3
gitk: Update French translation (311t)
gitk: fr.po: Sync translations with git
Jeff King (86):
pack-revindex: drop hash table
pack-revindex: store entries directly in packed_git
create_symref: modernize variable names
create_symref: use existing ref-lock code
create_symref: write reflog while holding lock
run-command: don't warn on SIGPIPE deaths
avoid shifting signed integers 31 bits
bswap: add NO_UNALIGNED_LOADS define
checkout,clone: check return value of create_symref
lock_ref_sha1_basic: always fill old_oid while holding lock
lock_ref_sha1_basic: handle REF_NODEREF with invalid refs
rebase: ignore failures from "gc --auto"
shortlog: match both "Author:" and "author" on stdin
shortlog: use strbufs to read from stdin
shortlog: replace hand-parsing of author with pretty-printer
shortlog: optimize "--summary" mode
shortlog: optimize out useless "<none>" normalization
shortlog: optimize out useless string list
shortlog: don't warn on empty author
filter-branch: resolve $commit^{tree} in no-index case
clean: make is_git_repository a public function
resolve_gitlink_ref: ignore non-repository paths
t6300: use test_atom for some un-modern tests
tag: do not show ambiguous tag names as "tags/foo"
transport: drop support for git-over-rsync
give "nbuf" strbuf a more meaningful name
checkout-index: simplify "-z" option parsing
checkout-index: handle "--no-prefix" option
checkout-index: handle "--no-index" option
checkout-index: disallow "--no-stage" option
apply, ls-files: simplify "-z" parsing
fmt_ident: refactor strictness checks
test-path-utils: use xsnprintf in favor of strcpy
rerere: replace strcpy with xsnprintf
checkout: reorder check_filename conditional
check_filename: tighten dwim-wildcard ambiguity
get_sha1: don't die() on bogus search strings
http-push: stop using name_path
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
git-config: better document default behavior for `--include`
ref-filter: use string_list_split over strbuf_split
reflog_expire_cfg: NUL-terminate pattern field
add helpers for detecting size_t overflow
tree-diff: catch integer overflow in combine_diff_path allocation
diff: clarify textconv interface
harden REALLOC_ARRAY and xcalloc against size_t overflow
add helpers for allocating flex-array structs
argv-array: add detach function
convert manual allocations to argv_array
convert trivial cases to ALLOC_ARRAY
use xmallocz to avoid size arithmetic
convert trivial cases to FLEX_ARRAY macros
use st_add and st_mult for allocation size computation
prepare_{git,shell}_cmd: use argv_array
write_untracked_extension: use FLEX_ALLOC helper
fast-import: simplify allocation in start_packfile
fetch-pack: simplify add_sought_entry
test-path-utils: fix normalize_path_copy output buffer size
sequencer: simplify memory allocation of get_message
git-compat-util: drop mempcpy compat code
transport_anonymize_url: use xstrfmt
diff_populate_gitlink: use a strbuf
convert ewah/bitmap code to use xmalloc
ewah: convert to REALLOC_ARRAY, etc
merge-one-file: use empty blob for add/add base
merge-tree: drop generate_common strategy
xdiff: drop XDL_EMIT_COMMON
t5313: test bounds-checks of corrupted/malicious pack/idx files
nth_packed_object_offset: bounds-check extended offset
use_pack: handle signed off_t overflow
write_or_die: handle EPIPE in async threads
fetch-pack: ignore SIGPIPE in sideband demuxer
test_must_fail: report number of unexpected signal
t5504: handle expected output from SIGPIPE death
compat/mingw: brown paper bag fix for 50a6c8e
t9700: fix test for perl older than 5.14
tree-diff: catch integer overflow in combine_diff_path allocation
http-push: stop using name_path
add helpers for detecting size_t overflow
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
Jiang Xin (7):
l10n: git.pot: v2.8.0 round 1 (48 new, 16 removed)
http: honor no_http env variable to bypass proxy
l10n: zh_CN: for git v2.8.0 l10n round 1
l10n: git.pot: v2.8.0 round 2 (21 new, 1 removed)
l10n: zh_CN: for git v2.8.0 l10n round 2
l10n: git.pot: Add one new message for Git 2.8.0
l10n: zh_CN: for git v2.8.0 l10n round 3
Johannes Schindelin (51):
commit: allow editing the commit message even in shared repos
Handle more file writes correctly in shared repos
Refactor skipping DOS drive prefixes
compat/basename: make basename() conform to POSIX
compat/basename.c: provide a dirname() compatibility function
t0060: verify that basename() and dirname() work as expected
config.mak.uname: support MSys2
config.mak.uname: supporting 64-bit MSys2
fetch: release pack files before garbage-collecting
am: release pack files before garbage-collecting
merge: release pack files before garbage-collecting
receive-pack: release pack files before garbage-collecting
pull: allow interactive rebase with --rebase=interactive
remote: handle the config setting branch.*.rebase=interactive
completion: add missing branch.*.rebase values
nedmalloc: allow compiling with MSys2's compiler
compat/mingw: support MSys2-based MinGW build
compat/winansi: support compiling with MSys2
t0060: loosen overly strict expectations
mingw: avoid redefining S_* constants
mingw: avoid warnings when casting HANDLEs to int
mingw: squash another warning about a cast
mingw: uglify (a, 0) definitions to shut up warnings
mingw: let's use gettext with MSYS2
mingw: do not trust MSYS2's MinGW gettext.sh
Git.pm: stop assuming that absolute paths start with a slash
mingw: prepare the TMPDIR environment variable for shell scripts
mingw: let lstat() fail with errno == ENOTDIR when appropriate
merge-file: let conflict markers match end-of-line style of the context
merge-file: ensure that conflict sections match eol style
mingw: fix t5601-clone.sh
mingw: accomodate t0060-path-utils for MSYS2
mingw: disable mkfifo-based tests
tests: turn off git-daemon tests if FIFOs are not available
mingw: skip test in t1508 that fails due to path conversion
mingw: fix t9700's assumption about directory separators
mingw: work around pwd issues in the tests
mingw: mark t9100's test cases with appropriate prereqs
mingw: avoid illegal filename in t9118
mingw: handle the missing POSIXPERM prereq in t9124
mingw: skip a test in t9130 that cannot pass on Windows
mingw: do not bother to test funny file names
test-lib: limit the output of the yes utility
gitignore: ignore generated test-fake-ssh executable
t5505: 'remote add x y' should work when url.y.insteadOf = x
git config: report when trying to modify a non-existing repo config
Mark win32's pthread_exit() as NORETURN
config --show-origin: report paths with forward slashes
t1300-repo-config: make it resilient to being run via 'sh -x'
t1300: fix the new --show-origin tests on Windows
mingw: skip some tests in t9115 due to file name issues
Johannes Sixt (3):
t/t5100: no need to use 'echo' command substitutions for globbing
mingw: avoid linking to the C library's isalpha()
t0001: fix GIT_* environment variable check under --valgrind
John Keeping (3):
completion: add missing git-rebase options
t8005: avoid grep on non-ASCII data
t9200: avoid grep on non-ASCII data
Jon Griffiths (3):
credential-cache--daemon: refactor check_socket_directory
credential-cache--daemon: disallow relative socket path
credential-cache--daemon: change to the socket dir on startup
Jonathan Nieder (1):
submodule.c: write "Fetching submodule <foo>" to stderr
Junio C Hamano (59):
First batch for post 2.7 cycle
strbuf: miniscule style fix
strbuf: make strbuf_getline_crlf() global
strbuf: introduce strbuf_getline_{lf,nul}()
mktree: there are only two possible line terminations
check-attr: there are only two possible line terminations
check-ignore: there are only two possible line terminations
update-index: there are only two possible line terminations
checkout-index: there are only two possible line terminations
strbuf: give strbuf_getline() to the "most text friendly" variant
hash-object: read --stdin-paths with strbuf_getline()
revision: read --stdin with strbuf_getline()
rev-parse: read parseopt spec with strbuf_getline()
ident.c: read /etc/mailname with strbuf_getline()
remote.c: read $GIT_DIR/remotes/* with strbuf_getline()
clone/sha1_file: read info/alternates with strbuf_getline()
transport-helper: read helper response with strbuf_getline()
cat-file: read batch stream with strbuf_getline()
column: read lines with strbuf_getline()
send-pack: read list of refs with strbuf_getline()
grep: read -f file with strbuf_getline()
test-sha1-array: read command stream with strbuf_getline()
test-lib: clarify and tighten SANITY
Second batch for 2.8 cycle
Third batch for 2.8 cycle
git: remove an early return from save_env_before_alias()
git: protect against unbalanced calls to {save,restore}_env()
git: simplify environment save/restore logic
Fourth batch for 2.8.cycle
Getting closer to 2.7.1
restore_env(): free the saved environment variable once we are done
Fifth batch for 2.8 cycle
Git 2.7.1
Sixth batch for the 2.8 cycle
pager: lose a separate argv[]
pager: factor out a helper to prepare a child process to run the pager
am -i: fix "v"iew
Start preparing for 2.7.2
Seventh batch for the 2.8 cycle
Git 2.7.2
Eighth batch for 2.8
Git 2.8-rc0
Git 2.8-rc1
gitignore: document that unignoring a directory unignores everything in it
Git 2.7.3
Git 2.8-rc2
sane_grep: pass "-a" if grep accepts it
rebase-i: clarify "is this commit relevant?" test
RelNotes for 2.8.0: typofix
Git 2.8-rc3
Git 2.4.11
Git 2.5.5
Git 2.6.6
Git 2.7.4
Revert "Merge branch 'jc/exclusion-doc'"
Revert "Merge branch 'nd/exclusion-regression-fix'"
RelNotes: remove the mention of !reinclusion
Git 2.8-rc4
Git 2.8
Karsten Blees (1):
mingw: factor out Windows specific environment setup
Karthik Nayak (10):
ref-filter: bump 'used_atom' and related code to the top
ref-filter: introduce struct used_atom
ref-filter: introduce parsing functions for each valid atom
ref-filter: introduce color_atom_parser()
ref-filter: introduce parse_align_position()
ref-filter: introduce align_atom_parser()
ref-filter: align: introduce long-form syntax
ref-filter: introduce remote_ref_atom_parser()
ref-filter: introduce contents_atom_parser()
ref-filter: introduce objectname_atom_parser()
Kazutoshi Satoda (2):
git-svn: enable "svn.pathnameencoding" on dcommit
git-svn: apply "svn.pathnameencoding" before URL encoding
Knut Franke (2):
http: allow selection of proxy authentication method
http: use credential API to handle proxy authentication
Lars Schneider (10):
travis-ci: run previously failed tests first, then slowest to fastest
travis-ci: explicity use container-based infrastructure
convert: treat an empty string for clean/smudge filters as "cat"
t: do not hide Git's exit code in tests using 'nul_to_q'
rename git_config_from_buf to git_config_from_mem
config: add 'origin_type' to config_source struct
config: add '--show-origin' option to print the origin of a config value
add DEVELOPER makefile knob to check for acknowledged warnings
Documentation: use ASCII quotation marks in git-p4
Documentation: fix git-p4 AsciiDoc formatting
Lars Vogel (1):
git-add doc: do not say working directory when you mean working tree
Martin Amdisen (1):
templates/hooks: fix minor typo in the sample update-hook
Matt McCutchen (1):
Documentation/git-clean.txt: don't mention deletion of .git/modules/*
Matthew Kraai (1):
Documentation: remove unnecessary backslashes
Matthieu Moy (8):
Documentation/git-push: document that 'simple' is the default
README: use markdown syntax
README.md: add hyperlinks on filenames
README.md: move the link to git-scm.com up
README.md: don't call git stupid in the title
README.md: move down historical explanation about the name
push: remove "push.default is unset" warning message
Documentation: fix broken linkgit to git-config
Michael J Gruber (5):
t9100: fix breakage when SHELL_PATH is not /bin/sh
tests: rename work-tree tests to *work-tree*
t/lib-httpd: load mod_unixd
t5510: do not leave changed cwd
wt-status: allow "ahead " to be picked up by l10n
Mike Hommey (1):
notes: allow treeish expressions as notes ref
Nguyễn Thái Ngọc Duy (25):
blame: remove obsolete comment
add and use a convenience macro ce_intent_to_add()
Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR"
git.c: make it clear save_env() is for alias handling only
setup.c: re-fix d95138e (setup: set env $GIT_WORK_TREE when ..
git.c: make sure we do not leak GIT_* to alias scripts
grep: make it clear i-t-a entries are ignored
dir.c: clean the entire struct in clear_exclude_list()
Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match"
worktree.c: fix indentation
diff-no-index: do not take a redundant prefix argument
diff: make -O and --output work in subdirectory
worktree: stop supporting moving worktrees manually
rev-parse: take prefix into account in --git-common-dir
dir.c: fix match_pathname()
dir.c: support tracing exclude
dir.c: support marking some patterns already matched
dir.c: don't exclude whole dir prematurely
worktree: fix "add -B"
worktree add -B: do the checkout test before update branch
sha1_file.c: mark strings for translation
builtin/checkout.c: mark strings for translation
builtin/clone.c: mark strings for translation
ref-filter.c: mark strings for translation
trailer.c: mark strings for translation
Pat Thoyts (1):
t0008: avoid absolute path
Patrick Steinhardt (18):
push: add '--delete' flag to synopsis
push: add '-d' as shorthand for '--delete'
config: introduce set_or_die wrappers
branch: report errors in tracking branch setup
branch: die on config error when unsetting upstream
branch: die on config error when editing branch description
submodule: die on config error when linking modules
submodule--helper: die on config error when cloning module
remote: die on config error when setting URL
remote: die on config error when setting/adding branches
remote: die on config error when manipulating remotes
clone: die on config error in cmd_clone
init-db: die on config errors when initializing empty repo
sequencer: die on config error when saving replay opts
compat: die when unable to set core.precomposeunicode
config: rename git_config_set to git_config_set_gently
config: rename git_config_set_or_die to git_config_set
xdiff/xmerge: fix memory leak in xdl_merge
Paul Wagland (2):
completion: complete show-branch "--date-order"
completion: update completion arguments for stash
Peter Krefting (3):
l10n: sv.po: Fix inconsistent translation of "progress meter"
l10n: sv.po: Update Swedish translation (2509t0f0u)
l10n: sv.po: Update Swedish translation (2530t0f0u)
Ralf Thielow (8):
l10n: TEAMS: update Ralf Thielow's email address
l10n: de.po: add space to abbreviation "z. B."
l10n: de.po: fix interactive rebase message
l10n: de.po: translate "command" as "Befehl"
l10n: de.po: translate 48 new messages
l10n: de.po: translate 22 new messages
l10n: de.po: add missing newlines
gitk: Update German translation
Ray Chen (1):
l10n: zh_CN: review for git v2.8.0 l10n round 2
Rob Mayoff (1):
contrib/subtree: unwrap tag refs
Romain Picard (1):
git-p4.py: add support for filetype change
SZEDER Gábor (2):
t6050-replace: make failing editor test more robust
completion: fix mis-indentation in _git_stash()
Sebastian Schuberth (3):
docs: clarify that passing --depth to git-clone implies --single-branch
docs: say "commits" in the --depth option wording for git-clone
docs: clarify that --depth for git-fetch works with newly initialized repos
Shawn O. Pearce (1):
remote-curl: include curl_errorstr on SSL setup failures
Stefan Beller (11):
xread: poll on non blocking fds
strbuf: add strbuf_read_once to read without blocking
sigchain: add command to pop all common signals
run-command: add an asynchronous parallel child processor
fetch_populated_submodules: use new parallel job processing
submodules: allow parallel fetching, add tests and documentation
submodule helper list: respect correct path prefix
submodule: try harder to fetch needed sha1 by direct fetching sha1
run-command: do not pass child process data into callbacks
Documentation: reword rebase summary
submodule: fix regression for deinit without submodules
Stephen P. Smith (4):
user-manual: remove temporary branch entry from todo list
glossary: define the term shallow clone
user-manual: add section documenting shallow clones
user-manual: add addition gitweb information
Thomas Ackermann (1):
documentation: fix some typos
Thomas Braun (1):
completion: complete "diff --word-diff-regex="
Thomas Gummerer (11):
t7810: correct --no-index test
builtin/grep: add grep.fallbackToNoIndex config
ls-remote: document --quiet option
ls-remote: document --refs option
ls-remote: fix synopsis
ls-remote: use parse-options api
ls-remote: add support for showing symrefs
remote: use parse_config_key
remote: simplify remote_is_configured()
remote: actually check if remote exits
remote: use remote_is_configured() for add and rename
Tobias Klauser (2):
trailer: allow to write to files other than stdout
interpret-trailers: add option for in-place editing
Torsten Bögershausen (9):
ls-files: add eol diagnostics
t0027: add tests for get_stream_filter()
convert.c: remove unused parameter 'path'
convert.c: remove input_crlf_action()
convert.c: use text_eol_is_crlf()
convert.c: refactor crlf_action
convert.c: simplify text_stat
convert.c: correct attr_action()
config.mak.uname: use clang for Mac OS X 10.6
Trần Ngọc Quân (2):
l10n: vi.po (2509t): Updated Vietnamese translation
l10n: vi.po (2530t): Update translation
Vasco Almeida (1):
l10n: pt_PT: Update and add new translations
Victor Leschuk (4):
grep: allow threading even on a single-core machine
grep: slight refactoring to the code that disables threading
grep: add --threads=<num> option and grep.threads configuration
git-svn: loosen config globs limitations
Will Palmer (2):
test for '!' handling in rev-parse's named commits
object name: introduce '^{/!-<negative pattern>}' notation
brian m. carlson (1):
http: add option to try authentication without username
Øyvind A. Holm (1):
gitweb: squelch "uninitialized value" warning
마누엘 (1):
mingw: try to delete target directory before renaming
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.8.0-rc4
@ 2016-03-21 21:32 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-03-21 21:32 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.8.0-rc4 is now available for testing
at the usual places. It is comprised of 521 non-merge commits
since v2.7.0, contributed by 73 people, 21 of which are new faces.
Relative to v2.8.0-rc3, this reverts the change to the gitignore
mechanism (which also is used in a reverse sense to implement the
sparse checkout feature), as the code seemed to be a bit premature
for general consumption (I haven't queued any replacements yet, but
after 2.8 final I do expect the effort to continue). Also a new
workaround for GCC 4.2 that dies with "internal compiler error" has
been queued, which would help those who compile with that version of
the compiler (including MacOSX 10.6 and FreeBSD 9.x).
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.8.0-rc4' 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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.7.0 are as follows.
Welcome to the Git development community!
마누엘, Adam Dinwoodie, Andrew Wheeler, Changwoo Ryu,
Christoph Egger, Christoph Hoopmann, Dan Aloni, Dave Ware, David
A. Wheeler, Dickson Wong, Felipe Gonçalves Assis, GyuYong Jung,
Jon Griffiths, Kazutoshi Satoda, Lars Vogel, Martin Amdisen,
Matthew Kraai, Paul Wagland, Rob Mayoff, Romain Picard, and
Victor Leschuk.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Kuleshov, Alexander Shopov, Alex Henrie, Audric
Schiltknecht, brian m. carlson, Carlos Martín Nieto, Christian
Couder, David A. Greene, David Turner, Dennis Kaarsemaker,
Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elia Pinto,
Eric Sunshine, Eric Wong, Guillermo S. Romero, Jacob Keller,
Jean-Noel Avila, Jeff King, Jiang Xin, Johannes Schindelin,
Johannes Sixt, John Keeping, Jonathan Nieder, Junio C Hamano,
Karsten Blees, Karthik Nayak, Knut Franke, Lars Schneider,
Matthieu Moy, Matt McCutchen, Michael J Gruber, Mike Hommey,
Nguyễn Thái Ngọc Duy, Øyvind A. Holm, Patrick Steinhardt,
Pat Thoyts, Peter Krefting, Ralf Thielow, Ray Chen, Sebastian
Schuberth, Shawn O. Pearce, Stefan Beller, Stephen P. Smith,
SZEDER Gábor, Thomas Ackermann, Thomas Braun, Thomas Gummerer,
Tobias Klauser, Torsten Bögershausen, Trần Ngọc Quân,
and Will Palmer.
----------------------------------------------------------------
Git 2.8 Release Notes (draft)
=============================
Backward compatibility note
---------------------------
The rsync:// transport has been removed.
Updates since v2.7
------------------
UI, Workflows & Features
* It turns out "git clone" over rsync transport has been broken when
the source repository has packed references for a long time, and
nobody noticed nor complained about it.
* "push" learned that its "--delete" option can be shortened to
"-d", just like "branch --delete" and "branch -d" are the same
thing.
* "git blame" learned to produce the progress eye-candy when it takes
too much time before emitting the first line of the result.
* "git grep" can now be configured (or told from the command line)
how many threads to use when searching in the working tree files.
* 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).
* "git grep" by default does not fall back to its "--no-index"
behaviour outside a directory under Git's control (otherwise the
user may by mistake end up running a huge recursive search); with a
new configuration (set in $HOME/.gitconfig--by definition this
cannot be set in the config file per project), this safety can be
disabled.
* "git pull --rebase" has been extended to allow invoking
"rebase -i".
* "git p4" learned to cope with the type of a file getting changed.
* "git format-patch" learned to notice format.outputDirectory
configuration variable. This allows "-o <dir>" option to be
omitted on the command line if you always use the same directory in
your workflow.
* "interpret-trailers" has been taught to optionally update a file in
place, instead of always writing the result to the standard output.
* Many commands that read files that are expected to contain text
that is generated (or can be edited) by the end user to control
their behaviour (e.g. "git grep -f <filename>") have been updated
to be more tolerant to lines that are terminated with CRLF (they
used to treat such a line to contain payload that ends with CR,
which is usually not what the users expect).
* "git notes merge" used to limit the source of the merged notes tree
to somewhere under refs/notes/ hierarchy, which was too limiting
when inventing a workflow to exchange notes with remote
repositories using remote-tracking notes trees (located in e.g.
refs/remote-notes/ or somesuch).
* "git ls-files" learned a new "--eol" option to help diagnose
end-of-line problems.
* "ls-remote" learned an option to show which branch the remote
repository advertises as its primary by pointing its HEAD at.
* New http.proxyAuthMethod configuration variable can be used to
specify what authentication method to use, as a way to work around
proxies that do not give error response expected by libcurl when
CURLAUTH_ANY is used. Also, the codepath for proxy authentication
has been taught to use credential API to store the authentication
material in user's keyrings.
* Update the untracked cache subsystem and change its primary UI from
"git update-index" to "git config".
* There were a few "now I am doing this thing" progress messages in
the TCP connection code that can be triggered by setting a verbose
option internally in the code, but "git fetch -v" and friends never
passed the verbose option down to that codepath.
* Clean/smudge filters defined in a configuration file of lower
precedence can now be overridden to be a pass-through no-op by
setting the variable to an empty string.
* A new "<branch>^{/!-<pattern>}" notation can be used to name a
commit that is reachable from <branch> that does not match the
given <pattern>.
* The "user.useConfigOnly" configuration variable can be used to
force the user to always set user.email & user.name configuration
variables, serving as a reminder for those who work on multiple
projects and do not want to put these in their $HOME/.gitconfig.
* "git fetch" and friends that make network connections can now be
told to only use ipv4 (or ipv6).
* Some authentication methods do not need username or password, but
libcurl needs some hint that it needs to perform authentication.
Supplying an empty username and password string is a valid way to
do so, but you can set the http.[<url>.]emptyAuth configuration
variable to achieve the same, if you find it cleaner.
* You can now set http.[<url>.]pinnedpubkey to specify the pinned
public key when building with recent enough versions of libcURL.
* The configuration system has been taught to phrase where it found a
bad configuration variable in a better way in its error messages.
"git config" learnt a new "--show-origin" option to indicate where
the values come from.
* The "credential-cache" daemon process used to run in whatever
directory it happened to start in, but this made umount(2)ing the
filesystem that houses the repository harder; now the process
chdir()s to the directory that house its own socket on startup.
* When "git submodule update" did not result in fetching the commit
object in the submodule that is referenced by the superproject, the
command learned to retry another fetch, specifically asking for
that commit that may not be connected to the refs it usually
fetches.
* "git merge-recursive" learned "--no-renames" option to disable its
rename detection logic.
* Across the transition at around Git version 2.0, the user used to
get a pretty loud warning when running "git push" without setting
push.default configuration variable. We no longer warn because the
transition was completed a long time ago.
* README has been renamed to README.md and its contents got tweaked
slightly to make it easier on the eyes.
Performance, Internal Implementation, Development Support etc.
* Add a framework to spawn a group of processes in parallel, and use
it to run "git fetch --recurse-submodules" in parallel.
* A slight update to the Makefile to mark ".PHONY" targets as such
correctly.
* In-core storage of the reverse index for .pack files (which lets
you go from a pack offset to an object name) has been streamlined.
* d95138e6 (setup: set env $GIT_WORK_TREE when work tree is set, like
$GIT_DIR, 2015-06-26) attempted to work around a glitch in alias
handling by overwriting GIT_WORK_TREE environment variable to
affect subprocesses when set_git_work_tree() gets called, which
resulted in a rather unpleasant regression to "clone" and "init".
Try to address the same issue by always restoring the environment
and respawning the real underlying command when handling alias.
* The low-level code that is used to create symbolic references has
been updated to share more code with the code that deals with
normal references.
* strbuf_getline() and friends have been redefined to make it easier
to identify which callsite of (new) strbuf_getline_lf() should
allow and silently ignore carriage-return at the end of the line to
help users on DOSsy systems.
* "git shortlog" used to accumulate various pieces of information
regardless of what was asked to be shown in the final output. It
has been optimized by noticing what need not to be collected
(e.g. there is no need to collect the log messages when showing
only the number of changes).
* "git checkout $branch" (and other operations that share the same
underlying machinery) has been optimized.
* Automated tests in Travis CI environment has been optimized by
persisting runtime statistics of previous "prove" run, executing
tests that take longer before other ones; this reduces the total
wallclock time.
* Test scripts have been updated to remove assumptions that are not
portable between Git for POSIX and Git for Windows, or to skip ones
with expectations that are not satisfiable on Git for Windows.
* Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in a couple of protrams that are already safe
has been rewritten to avoid false warnings.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat. The API has been removed and its users have been
rewritten to simplify the overall code complexity.
* Help those who debug http(s) part of the system.
(merge 0054045 sp/remote-curl-ssl-strerror later to maint).
* The internal API to interact with "remote.*" configuration
variables has been streamlined.
* The ref-filter's format-parsing code has been refactored, in
preparation for "branch --format" and friends.
* Traditionally, the tests that try commands that work on the
contents in the working tree were named with "worktree" in their
filenames, but with the recent addition of "git worktree"
subcommand, whose tests are also named similarly, it has become
harder to tell them apart. The traditional tests have been renamed
to use "work-tree" instead in an attempt to differentiate them.
(merge 5549029 mg/work-tree-tests later to maint).
* Many codepaths forget to check return value from git_config_set();
the function is made to die() to make sure we do not proceed when
setting a configuration variable failed.
(merge 3d18064 ps/config-error later to maint).
* Handling of errors while writing into our internal asynchronous
process has been made more robust, which reduces flakiness in our
tests.
(merge 43f3afc jk/epipe-in-async later to maint).
* There is a new DEVELOPER knob that enables many compiler warning
options in the Makefile.
* The way the test scripts configure the Apache web server has been
updated to work also for Apache 2.4 running on RedHat derived
distros.
* Out of maintenance gcc on OSX 10.6 fails to compile the code in
'master'; work it around by using clang by default on the platform.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat, in many cases. The API has been removed and its
users have been rewritten to simplify the overall code complexity.
This incidentally also closes some heap-corruption holes.
* Recent versions of GNU grep is pickier than before to decide if a
file is "binary" and refuse to give line-oriented hits when we
expect it to, unless explicitly told with "-a" option. As our
scripted Porcelains use sane_grep wrapper for line-oriented data,
even when the line may contain non-ASCII payload we took from
end-user data, use "grep -a" to implement sane_grep wrapper when
using an implementation of "grep" that takes the "-a" option.
Also contains various documentation updates and code clean-ups.
Fixes since v2.7
----------------
Unless otherwise noted, all the fixes since v2.7 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* An earlier change in 2.5.x-era broke users' hooks and aliases by
exporting GIT_WORK_TREE to point at the root of the working tree,
interfering when they tried to use a different working tree without
setting GIT_WORK_TREE environment themselves.
* The "exclude_list" structure has the usual "alloc, nr" pair of
fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
array.
* Paths that have been told the index about with "add -N" are not
quite yet in the index, but a few commands behaved as if they
already are in a harmful way.
* "git send-email" was confused by escaped quotes stored in the alias
files saved by "mutt", which has been corrected.
* A few unportable C construct have been spotted by clang compiler
and have been fixed.
* The documentation has been updated to hint the connection between
the '--signoff' option and DCO.
* "git reflog" incorrectly assumed that all objects that used to be
at the tip of a ref must be commits, which caused it to segfault.
* The ignore mechanism saw a few regressions around untracked file
listing and sparse checkout selection areas in 2.7.0; the change
that is responsible for the regression has been reverted.
* Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
(e.g. COMMIT_EDITMSG) that is meant to be left after the command is
done. This however did not work well if the repository is set to
be shared with core.sharedRepository and the umask of the previous
user is tighter. They have been made to work better by calling
unlink(2) and retrying after fopen(3) fails with EPERM.
* Asking gitweb for a nonexistent commit left a warning in the server
log.
Somebody may want to follow this up with an additional test, perhaps?
IIRC, we do test that no Perl warnings are given to the server log,
so this should have been caught if our test coverage were good.
* "git rebase", unlike all other callers of "gc --auto", did not
ignore the exit code from "gc --auto".
* Many codepaths that run "gc --auto" before exiting kept packfiles
mapped and left the file descriptors to them open, which was not
friendly to systems that cannot remove files that are open. They
now close the packs before doing so.
* A recent optimization to filter-branch in v2.7.0 introduced a
regression when --prune-empty filter is used, which has been
corrected.
* The description for SANITY prerequisite the test suite uses has
been clarified both in the comment and in the implementation.
* "git tag" started listing a tag "foo" as "tags/foo" when a branch
named "foo" exists in the same repository; remove this unnecessary
disambiguation, which is a regression introduced in v2.7.0.
* The way "git svn" uses auth parameter was broken by Subversion
1.9.0 and later.
* The "split" subcommand of "git subtree" (in contrib/) incorrectly
skipped merges when it shouldn't, which was corrected.
* A few options of "git diff" did not work well when the command was
run from a subdirectory.
* The command line completion learned a handful of additional options
and command specific syntax.
* dirname() emulation has been added, as Msys2 lacks it.
* The underlying machinery used by "ls-files -o" and other commands
has been taught not to create empty submodule ref cache for a
directory that is not a submodule. This removes a ton of wasted
CPU cycles.
* "git worktree" had a broken code that attempted to auto-fix
possible inconsistency that results from end-users moving a
worktree to different places without telling Git (the original
repository needs to maintain backpointers to its worktrees, but
"mv" run by end-users who are not familiar with that fact will
obviously not adjust them), which actually made things worse
when triggered.
* The low-level merge machinery has been taught to use CRLF line
termination when inserting conflict markers to merged contents that
are themselves CRLF line-terminated.
* "git push --force-with-lease" has been taught to report if the push
needed to force (or fast-forwarded).
* The emulated "yes" command used in our test scripts has been
tweaked not to spend too much time generating unnecessary output
that is not used, to help those who test on Windows where it would
not stop until it fills the pipe buffer due to lack of SIGPIPE.
* The documentation for "git clean" has been corrected; it mentioned
that .git/modules/* are removed by giving two "-f", which has never
been the case.
* The vimdiff backend for "git mergetool" has been tweaked to arrange
and number buffers in the order that would match the expectation of
majority of people who read left to right, then top down and assign
buffers 1 2 3 4 "mentally" to local base remote merge windows based
on that order.
* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
rev, i.e. the object named by the the pathname with wildcard
characters in a tree object.
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
* "git rev-parse --git-common-dir" used in the worktree feature
misbehaved when run from a subdirectory.
(merge 17f1365 nd/git-common-dir-fix later to maint).
* "git worktree add -B <branchname>" did not work.
* The "v(iew)" subcommand of the interactive "git am -i" command was
broken in 2.6.0 timeframe when the command was rewritten in C.
(merge 708b8cc jc/am-i-v-fix later to maint).
* "git merge-tree" used to mishandle "both sides added" conflict with
its own "create a fake ancestor file that has the common parts of
what both sides have added and do a 3-way merge" logic; this has
been updated to use the usual "3-way merge with an empty blob as
the fake common ancestor file" approach used in the rest of the
system.
(merge 907681e jk/no-diff-emit-common later to maint).
* The memory ownership rule of fill_textconv() API, which was a bit
tricky, has been documented a bit better.
(merge a64e6a4 jk/more-comments-on-textconv later to maint).
* Update various codepaths to avoid manually-counted malloc().
(merge 08c95df jk/tighten-alloc later to maint).
* The documentation did not clearly state that the 'simple' mode is
now the default for "git push" when push.default configuration is
not set.
(merge f6b1fb3 mm/push-simple-doc later to maint).
* Recent versions of GNU grep are pickier when their input contains
arbitrary binary data, which some of our tests uses. Rewrite the
tests to sidestep the problem.
(merge 3b1442d jk/grep-binary-workaround-in-test later to maint).
* A helper function "git submodule" uses since v2.7.0 to list the
modules that match the pathspec argument given to its subcommands
(e.g. "submodule add <repo> <path>") has been fixed.
(merge 2b56bb7 sb/submodule-module-list-fix later to maint).
* "git config section.var value" to set a value in per-repository
configuration file failed when it was run outside any repository,
but didn't say the reason correctly.
(merge 638fa62 js/config-set-in-non-repository later to maint).
* The code to read the pack data using the offsets stored in the pack
idx file has been made more carefully check the validity of the
data in the idx.
(merge 7465feb jk/pack-idx-corruption-safety later to maint).
* Other minor clean-ups and documentation updates
(merge f459823 ak/extract-argv0-last-dir-sep later to maint).
(merge 63ca1c0 ak/git-strip-extension-from-dashed-command later to maint).
(merge 4867f11 ps/plug-xdl-merge-leak later to maint).
(merge 4938686 dt/initial-ref-xn-commit-doc later to maint).
(merge 9537f21 ma/update-hooks-sample-typofix later to maint).
----------------------------------------------------------------
Changes since v2.7.0 are as follows:
Adam Dinwoodie (1):
t9117: test specifying full url to git svn init -T
Alex Henrie (1):
stripspace: call U+0020 a "space" instead of a "blank"
Alexander Kuleshov (3):
format-patch: introduce format.outputDirectory configuration
exec_cmd.c: use find_last_dir_sep() for code simplification
git.c: simplify stripping extension of a file in handle_builtin()
Alexander Shopov (1):
gitk: Update Bulgarian translation (311t)
Andrew Wheeler (1):
push: fix ref status reporting for --force-with-lease
Audric Schiltknecht (1):
l10n: fr.po: Correct case in sentence
Carlos Martín Nieto (1):
Disown ssh+git and git+ssh
Changwoo Ryu (4):
l10n: ko.po: Add Korean translation
l10n: ko.po: Update Korean translation
l10n: ko: Update Korean translation
l10n: ko.po: Update Korean translation
Christian Couder (11):
dir: free untracked cache when removing it
update-index: use enum for untracked cache options
update-index: add --test-untracked-cache
update-index: add untracked cache notifications
update-index: move 'uc' var declaration
dir: add {new,add}_untracked_cache()
dir: add remove_untracked_cache()
dir: simplify untracked cache "ident" field
config: add core.untrackedCache
test-dump-untracked-cache: don't modify the untracked cache
t7063: add tests for core.untrackedCache
Christoph Egger (1):
http: implement public key pinning
Christoph Hoopmann (1):
l10n: de.po: fix typo
Dan Aloni (1):
ident: add user.useConfigOnly boolean for when ident shouldn't be guessed
Dave Ware (1):
contrib/subtree: fix "subtree split" skipped-merge bug
David A. Greene (1):
contrib/subtree: Make testing easier
David A. Wheeler (1):
Expand documentation describing --signoff
David Turner (3):
do_compare_entry: use already-computed path
unpack-trees: fix accidentally quadratic behavior
refs: document transaction semantics
Dennis Kaarsemaker (1):
reflog-walk: don't segfault on non-commit sha1's in the reflog
Dickson Wong (1):
mergetool: reorder vim/gvim buffers in three-way diffs
Dimitriy Ryazantcev (3):
l10n: ru.po: update Russian translation
l10n: ru.po: update Russian translation
l10n: ru.po: update Russian translation
Edmundo Carmona Antoranz (1):
blame: add support for --[no-]progress option
Elia Pinto (92):
Makefile: add missing phony target
contrib/examples/git-commit.sh: use the $( ... ) construct for command substitution
contrib/examples/git-fetch.sh: use the $( ... ) construct for command substitution
contrib/examples/git-merge.sh: use the $( ... ) construct for command substitution
contrib/examples/git-repack.sh: use the $( ... ) construct for command substitution
contrib/examples/git-revert.sh: use the $( ... ) construct for command substitution
contrib/thunderbird-patch-inline/appp.sh: use the $( ... ) construct for command substitution
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
t/lib-httpd.sh: use the $( ... ) construct for command substitution
test-sha1.sh: use the $( ... ) construct for command substitution
unimplemented.sh: use the $( ... ) construct for command substitution
t/t1100-commit-tree-options.sh: use the $( ... ) construct for command substitution
t/t1401-symbolic-ref.sh: use the $( ... ) construct for command substitution
t/t1410-reflog.sh: use the $( ... ) construct for command substitution
t/t1511-rev-parse-caret.sh: use the $( ... ) construct for command substitution
t/t1512-rev-parse-disambiguation.sh: use the $( ... ) construct for command substitution
t/t1700-split-index.sh: use the $( ... ) construct for command substitution
t/t2025-worktree-add.sh: use the $( ... ) construct for command substitution
t/t2102-update-index-symlinks.sh: use the $( ... ) construct for command substitution
t/t3030-merge-recursive.sh: use the $( ... ) construct for command substitution
t/t3100-ls-tree-restrict.sh: use the $( ... ) construct for command substitution
t/t3101-ls-tree-dirname.sh: use the $( ... ) construct for command substitution
t/t3210-pack-refs.sh: use the $( ... ) construct for command substitution
t/t3403-rebase-skip.sh: use the $( ... ) construct for command substitution
t/t3511-cherry-pick-x.sh: use the $( ... ) construct for command substitution
t/t3600-rm.sh: use the $( ... ) construct for command substitution
t/t3700-add.sh: use the $( ... ) construct for command substitution
t/t5100-mailinfo.sh: use the $( ... ) construct for command substitution
t/t5300-pack-object.sh: use the $( ... ) construct for command substitution
t/t5301-sliding-window.sh: use the $( ... ) construct for command substitution
t/t5302-pack-index.sh: use the $( ... ) construct for command substitution
t/t5303-pack-corruption-resilience.sh: use the $( ... ) construct for command substitution
t/t5304-prune.sh: use the $( ... ) construct for command substitution
t/t5305-include-tag.sh: use the $( ... ) construct for command substitution
t/t5500-fetch-pack.sh: use the $( ... ) construct for command substitution
t/t5505-remote.sh: use the $( ... ) construct for command substitution
t/t5506-remote-groups.sh: use the $( ... ) construct for command substitution
t/t5510-fetch.sh: use the $( ... ) construct for command substitution
t/t5515-fetch-merge-logic.sh: use the $( ... ) construct for command substitution
t/t5516-fetch-push.sh: use the $( ... ) construct for command substitution
t/t5517-push-mirror.sh: use the $( ... ) construct for command substitution
t/t5522-pull-symlink.sh: use the $( ... ) construct for command substitution
t/t5530-upload-pack-error.sh: use the $( ... ) construct for command substitution
t/t5532-fetch-proxy.sh: use the $( ... ) construct for command substitution
t/t5537-fetch-shallow.sh: use the $( ... ) construct for command substitution
t/t5538-push-shallow.sh: use the $( ... ) construct for command substitution
t/t5550-http-fetch-dumb.sh: use the $( ... ) construct for command substitution
t/t5570-git-daemon.sh: use the $( ... ) construct for command substitution
t/t5601-clone.sh: use the $( ... ) construct for command substitution
t/t5700-clone-reference.sh: use the $( ... ) construct for command substitution
t/t5710-info-alternate.sh: use the $( ... ) construct for command substitution
t/t5900-repo-selection.sh: use the $( ... ) construct for command substitution
t/t6001-rev-list-graft.sh: use the $( ... ) construct for command substitution
t/t6002-rev-list-bisect.sh: use the $( ... ) construct for command substitution
t/t6015-rev-list-show-all-parents.sh: use the $( ... ) construct for command substitution
t/t6032-merge-large-rename.sh: use the $( ... ) construct for command substitution
t/t6132-pathspec-exclude.sh: use the $( ... ) construct for command substitution
t/t7001-mv.sh: use the $( ... ) construct for command substitution
t/t7003-filter-branch.sh: use the $( ... ) construct for command substitution
t/t7004-tag.sh: use the $( ... ) construct for command substitution
t/t7006-pager.sh: use the $( ... ) construct for command substitution
t/t7103-reset-bare.sh: use the $( ... ) construct for command substitution
t/t7406-submodule-update.sh: use the $( ... ) construct for command substitution
t/t7408-submodule-reference.sh: use the $( ... ) construct for command substitution
t/t7504-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7505-prepare-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7602-merge-octopus-many.sh: use the $( ... ) construct for command substitution
t/t7700-repack.sh: use the $( ... ) construct for command substitution
t/t8003-blame-corner-cases.sh: use the $( ... ) construct for command substitution
t/t9001-send-email.sh: use the $( ... ) construct for command substitution
t9100-git-svn-basic.sh: use the $( ... ) construct for command substitution
t9101-git-svn-props.sh: use the $( ... ) construct for command substitution
t9104-git-svn-follow-parent.sh: use the $( ... ) construct for command substitution
t9105-git-svn-commit-diff.sh: use the $( ... ) construct for command substitution
t9107-git-svn-migrate.sh: use the $( ... ) construct for command substitution
t9108-git-svn-glob.sh: use the $( ... ) construct for command substitution
t9109-git-svn-multi-glob.sh: use the $( ... ) construct for command substitution
t9110-git-svn-use-svm-props.sh: use the $( ... ) construct for command substitution
t9114-git-svn-dcommit-merge.sh: use the $( ... ) construct for command substitution
t9118-git-svn-funky-branch-names.sh: use the $( ... ) construct for command substitution
t9119-git-svn-info.sh: use the $( ... ) construct for command substitution
t9129-git-svn-i18n-commitencoding.sh: use the $( ... ) construct for command substitution
t9130-git-svn-authors-file.sh: use the $( ... ) construct for command substitution
t9132-git-svn-broken-symlink.sh: use the $( ... ) construct for command substitution
t9137-git-svn-dcommit-clobber-series.sh: use the $( ... ) construct for command substitution
t9138-git-svn-authors-prog.sh: use the $( ... ) construct for command substitution
t9145-git-svn-master-branch.sh: use the $( ... ) construct for command substitution
t9150-svk-mergetickets.sh: use the $( ... ) construct for command substitution
t9300-fast-import.sh: use the $( ... ) construct for command substitution
t9350-fast-export.sh: use the $( ... ) construct for command substitution
t9501-gitweb-standalone-http-status.sh: use the $( ... ) construct for command substitution
t9901-git-web--browse.sh: use the $( ... ) construct for command substitution
Eric Sunshine (2):
git-compat-util: st_add4: work around gcc 4.2.x compiler crash
Revert "config.mak.uname: use clang for Mac OS X 10.6"
Eric Wong (10):
git-send-email: do not double-escape quotes from mutt
for-each-ref: document `creatordate` and `creator` fields
git-svn: fix auth parameter handling on SVN 1.9.0+
pass transport verbosity down to git_connect
connect & http: support -4 and -6 switches for remote operations
t5570: add tests for "git {clone,fetch,pull} -v"
git-svn: hoist out utf8 prep from t9129 to lib-git-svn
tests: remove no-op full-svn-test target
git-svn: shorten glob error message
git-svn: fix URL canonicalization during init w/ SVN 1.7+
Felipe Gonçalves Assis (7):
merge-recursive: option to disable renames
merge-recursive: more consistent interface
merge-strategies.txt: fix typo
merge-recursive: find-renames resets threshold
t3034: add rename threshold tests
t3034: test option to disable renames
t3034: test deprecated interface
Guillermo S. Romero (1):
gitk: Follow themed bgcolor in help dialogs
GyuYong Jung (1):
git-cvsserver.perl: fix typo
Jacob Keller (1):
notes: allow merging from arbitrary references
Jean-Noel Avila (5):
l10n: fr.po v2.8.0 round 1 2509t
l10n: fr.po v2.8.0 round 2
l10n: fr.po v2.8.0 round 3
gitk: Update French translation (311t)
gitk: fr.po: Sync translations with git
Jeff King (86):
pack-revindex: drop hash table
pack-revindex: store entries directly in packed_git
create_symref: modernize variable names
create_symref: use existing ref-lock code
create_symref: write reflog while holding lock
run-command: don't warn on SIGPIPE deaths
avoid shifting signed integers 31 bits
bswap: add NO_UNALIGNED_LOADS define
checkout,clone: check return value of create_symref
lock_ref_sha1_basic: always fill old_oid while holding lock
lock_ref_sha1_basic: handle REF_NODEREF with invalid refs
rebase: ignore failures from "gc --auto"
shortlog: match both "Author:" and "author" on stdin
shortlog: use strbufs to read from stdin
shortlog: replace hand-parsing of author with pretty-printer
shortlog: optimize "--summary" mode
shortlog: optimize out useless "<none>" normalization
shortlog: optimize out useless string list
shortlog: don't warn on empty author
filter-branch: resolve $commit^{tree} in no-index case
clean: make is_git_repository a public function
resolve_gitlink_ref: ignore non-repository paths
t6300: use test_atom for some un-modern tests
tag: do not show ambiguous tag names as "tags/foo"
transport: drop support for git-over-rsync
give "nbuf" strbuf a more meaningful name
checkout-index: simplify "-z" option parsing
checkout-index: handle "--no-prefix" option
checkout-index: handle "--no-index" option
checkout-index: disallow "--no-stage" option
apply, ls-files: simplify "-z" parsing
fmt_ident: refactor strictness checks
test-path-utils: use xsnprintf in favor of strcpy
rerere: replace strcpy with xsnprintf
checkout: reorder check_filename conditional
check_filename: tighten dwim-wildcard ambiguity
get_sha1: don't die() on bogus search strings
http-push: stop using name_path
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
git-config: better document default behavior for `--include`
ref-filter: use string_list_split over strbuf_split
reflog_expire_cfg: NUL-terminate pattern field
add helpers for detecting size_t overflow
tree-diff: catch integer overflow in combine_diff_path allocation
diff: clarify textconv interface
harden REALLOC_ARRAY and xcalloc against size_t overflow
add helpers for allocating flex-array structs
argv-array: add detach function
convert manual allocations to argv_array
convert trivial cases to ALLOC_ARRAY
use xmallocz to avoid size arithmetic
convert trivial cases to FLEX_ARRAY macros
use st_add and st_mult for allocation size computation
prepare_{git,shell}_cmd: use argv_array
write_untracked_extension: use FLEX_ALLOC helper
fast-import: simplify allocation in start_packfile
fetch-pack: simplify add_sought_entry
test-path-utils: fix normalize_path_copy output buffer size
sequencer: simplify memory allocation of get_message
git-compat-util: drop mempcpy compat code
transport_anonymize_url: use xstrfmt
diff_populate_gitlink: use a strbuf
convert ewah/bitmap code to use xmalloc
ewah: convert to REALLOC_ARRAY, etc
merge-one-file: use empty blob for add/add base
merge-tree: drop generate_common strategy
xdiff: drop XDL_EMIT_COMMON
t5313: test bounds-checks of corrupted/malicious pack/idx files
nth_packed_object_offset: bounds-check extended offset
use_pack: handle signed off_t overflow
write_or_die: handle EPIPE in async threads
fetch-pack: ignore SIGPIPE in sideband demuxer
test_must_fail: report number of unexpected signal
t5504: handle expected output from SIGPIPE death
compat/mingw: brown paper bag fix for 50a6c8e
t9700: fix test for perl older than 5.14
tree-diff: catch integer overflow in combine_diff_path allocation
http-push: stop using name_path
add helpers for detecting size_t overflow
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
Jiang Xin (7):
l10n: git.pot: v2.8.0 round 1 (48 new, 16 removed)
http: honor no_http env variable to bypass proxy
l10n: zh_CN: for git v2.8.0 l10n round 1
l10n: git.pot: v2.8.0 round 2 (21 new, 1 removed)
l10n: zh_CN: for git v2.8.0 l10n round 2
l10n: git.pot: Add one new message for Git 2.8.0
l10n: zh_CN: for git v2.8.0 l10n round 3
Johannes Schindelin (47):
commit: allow editing the commit message even in shared repos
Handle more file writes correctly in shared repos
Refactor skipping DOS drive prefixes
compat/basename: make basename() conform to POSIX
compat/basename.c: provide a dirname() compatibility function
t0060: verify that basename() and dirname() work as expected
config.mak.uname: support MSys2
config.mak.uname: supporting 64-bit MSys2
fetch: release pack files before garbage-collecting
am: release pack files before garbage-collecting
merge: release pack files before garbage-collecting
receive-pack: release pack files before garbage-collecting
pull: allow interactive rebase with --rebase=interactive
remote: handle the config setting branch.*.rebase=interactive
completion: add missing branch.*.rebase values
nedmalloc: allow compiling with MSys2's compiler
compat/mingw: support MSys2-based MinGW build
compat/winansi: support compiling with MSys2
t0060: loosen overly strict expectations
mingw: avoid redefining S_* constants
mingw: avoid warnings when casting HANDLEs to int
mingw: squash another warning about a cast
mingw: uglify (a, 0) definitions to shut up warnings
mingw: let's use gettext with MSYS2
mingw: do not trust MSYS2's MinGW gettext.sh
Git.pm: stop assuming that absolute paths start with a slash
mingw: prepare the TMPDIR environment variable for shell scripts
mingw: let lstat() fail with errno == ENOTDIR when appropriate
merge-file: let conflict markers match end-of-line style of the context
merge-file: ensure that conflict sections match eol style
mingw: fix t5601-clone.sh
mingw: accomodate t0060-path-utils for MSYS2
mingw: disable mkfifo-based tests
tests: turn off git-daemon tests if FIFOs are not available
mingw: skip test in t1508 that fails due to path conversion
mingw: fix t9700's assumption about directory separators
mingw: work around pwd issues in the tests
mingw: mark t9100's test cases with appropriate prereqs
mingw: avoid illegal filename in t9118
mingw: handle the missing POSIXPERM prereq in t9124
mingw: skip a test in t9130 that cannot pass on Windows
mingw: do not bother to test funny file names
test-lib: limit the output of the yes utility
gitignore: ignore generated test-fake-ssh executable
t5505: 'remote add x y' should work when url.y.insteadOf = x
git config: report when trying to modify a non-existing repo config
Mark win32's pthread_exit() as NORETURN
Johannes Sixt (3):
t/t5100: no need to use 'echo' command substitutions for globbing
mingw: avoid linking to the C library's isalpha()
t0001: fix GIT_* environment variable check under --valgrind
John Keeping (3):
completion: add missing git-rebase options
t8005: avoid grep on non-ASCII data
t9200: avoid grep on non-ASCII data
Jon Griffiths (3):
credential-cache--daemon: refactor check_socket_directory
credential-cache--daemon: disallow relative socket path
credential-cache--daemon: change to the socket dir on startup
Jonathan Nieder (1):
submodule.c: write "Fetching submodule <foo>" to stderr
Junio C Hamano (58):
First batch for post 2.7 cycle
strbuf: miniscule style fix
strbuf: make strbuf_getline_crlf() global
strbuf: introduce strbuf_getline_{lf,nul}()
mktree: there are only two possible line terminations
check-attr: there are only two possible line terminations
check-ignore: there are only two possible line terminations
update-index: there are only two possible line terminations
checkout-index: there are only two possible line terminations
strbuf: give strbuf_getline() to the "most text friendly" variant
hash-object: read --stdin-paths with strbuf_getline()
revision: read --stdin with strbuf_getline()
rev-parse: read parseopt spec with strbuf_getline()
ident.c: read /etc/mailname with strbuf_getline()
remote.c: read $GIT_DIR/remotes/* with strbuf_getline()
clone/sha1_file: read info/alternates with strbuf_getline()
transport-helper: read helper response with strbuf_getline()
cat-file: read batch stream with strbuf_getline()
column: read lines with strbuf_getline()
send-pack: read list of refs with strbuf_getline()
grep: read -f file with strbuf_getline()
test-sha1-array: read command stream with strbuf_getline()
test-lib: clarify and tighten SANITY
Second batch for 2.8 cycle
Third batch for 2.8 cycle
git: remove an early return from save_env_before_alias()
git: protect against unbalanced calls to {save,restore}_env()
git: simplify environment save/restore logic
Fourth batch for 2.8.cycle
Getting closer to 2.7.1
restore_env(): free the saved environment variable once we are done
Fifth batch for 2.8 cycle
Git 2.7.1
Sixth batch for the 2.8 cycle
pager: lose a separate argv[]
pager: factor out a helper to prepare a child process to run the pager
am -i: fix "v"iew
Start preparing for 2.7.2
Seventh batch for the 2.8 cycle
Git 2.7.2
Eighth batch for 2.8
Git 2.8-rc0
Git 2.8-rc1
gitignore: document that unignoring a directory unignores everything in it
Git 2.7.3
Git 2.8-rc2
sane_grep: pass "-a" if grep accepts it
rebase-i: clarify "is this commit relevant?" test
RelNotes for 2.8.0: typofix
Git 2.8-rc3
Git 2.4.11
Git 2.5.5
Git 2.6.6
Git 2.7.4
Revert "Merge branch 'jc/exclusion-doc'"
Revert "Merge branch 'nd/exclusion-regression-fix'"
RelNotes: remove the mention of !reinclusion
Git 2.8-rc4
Karsten Blees (1):
mingw: factor out Windows specific environment setup
Karthik Nayak (10):
ref-filter: bump 'used_atom' and related code to the top
ref-filter: introduce struct used_atom
ref-filter: introduce parsing functions for each valid atom
ref-filter: introduce color_atom_parser()
ref-filter: introduce parse_align_position()
ref-filter: introduce align_atom_parser()
ref-filter: align: introduce long-form syntax
ref-filter: introduce remote_ref_atom_parser()
ref-filter: introduce contents_atom_parser()
ref-filter: introduce objectname_atom_parser()
Kazutoshi Satoda (2):
git-svn: enable "svn.pathnameencoding" on dcommit
git-svn: apply "svn.pathnameencoding" before URL encoding
Knut Franke (2):
http: allow selection of proxy authentication method
http: use credential API to handle proxy authentication
Lars Schneider (8):
travis-ci: run previously failed tests first, then slowest to fastest
travis-ci: explicity use container-based infrastructure
convert: treat an empty string for clean/smudge filters as "cat"
t: do not hide Git's exit code in tests using 'nul_to_q'
rename git_config_from_buf to git_config_from_mem
config: add 'origin_type' to config_source struct
config: add '--show-origin' option to print the origin of a config value
add DEVELOPER makefile knob to check for acknowledged warnings
Lars Vogel (1):
git-add doc: do not say working directory when you mean working tree
Martin Amdisen (1):
templates/hooks: fix minor typo in the sample update-hook
Matt McCutchen (1):
Documentation/git-clean.txt: don't mention deletion of .git/modules/*
Matthew Kraai (1):
Documentation: remove unnecessary backslashes
Matthieu Moy (8):
Documentation/git-push: document that 'simple' is the default
README: use markdown syntax
README.md: add hyperlinks on filenames
README.md: move the link to git-scm.com up
README.md: don't call git stupid in the title
README.md: move down historical explanation about the name
push: remove "push.default is unset" warning message
Documentation: fix broken linkgit to git-config
Michael J Gruber (5):
t9100: fix breakage when SHELL_PATH is not /bin/sh
tests: rename work-tree tests to *work-tree*
t/lib-httpd: load mod_unixd
t5510: do not leave changed cwd
wt-status: allow "ahead " to be picked up by l10n
Mike Hommey (1):
notes: allow treeish expressions as notes ref
Nguyễn Thái Ngọc Duy (25):
blame: remove obsolete comment
add and use a convenience macro ce_intent_to_add()
Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR"
git.c: make it clear save_env() is for alias handling only
setup.c: re-fix d95138e (setup: set env $GIT_WORK_TREE when ..
git.c: make sure we do not leak GIT_* to alias scripts
grep: make it clear i-t-a entries are ignored
dir.c: clean the entire struct in clear_exclude_list()
Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match"
worktree.c: fix indentation
diff-no-index: do not take a redundant prefix argument
diff: make -O and --output work in subdirectory
worktree: stop supporting moving worktrees manually
rev-parse: take prefix into account in --git-common-dir
dir.c: fix match_pathname()
dir.c: support tracing exclude
dir.c: support marking some patterns already matched
dir.c: don't exclude whole dir prematurely
worktree: fix "add -B"
worktree add -B: do the checkout test before update branch
sha1_file.c: mark strings for translation
builtin/checkout.c: mark strings for translation
builtin/clone.c: mark strings for translation
ref-filter.c: mark strings for translation
trailer.c: mark strings for translation
Pat Thoyts (1):
t0008: avoid absolute path
Patrick Steinhardt (18):
push: add '--delete' flag to synopsis
push: add '-d' as shorthand for '--delete'
config: introduce set_or_die wrappers
branch: report errors in tracking branch setup
branch: die on config error when unsetting upstream
branch: die on config error when editing branch description
submodule: die on config error when linking modules
submodule--helper: die on config error when cloning module
remote: die on config error when setting URL
remote: die on config error when setting/adding branches
remote: die on config error when manipulating remotes
clone: die on config error in cmd_clone
init-db: die on config errors when initializing empty repo
sequencer: die on config error when saving replay opts
compat: die when unable to set core.precomposeunicode
config: rename git_config_set to git_config_set_gently
config: rename git_config_set_or_die to git_config_set
xdiff/xmerge: fix memory leak in xdl_merge
Paul Wagland (2):
completion: complete show-branch "--date-order"
completion: update completion arguments for stash
Peter Krefting (3):
l10n: sv.po: Fix inconsistent translation of "progress meter"
l10n: sv.po: Update Swedish translation (2509t0f0u)
l10n: sv.po: Update Swedish translation (2530t0f0u)
Ralf Thielow (8):
l10n: TEAMS: update Ralf Thielow's email address
l10n: de.po: add space to abbreviation "z. B."
l10n: de.po: fix interactive rebase message
l10n: de.po: translate "command" as "Befehl"
l10n: de.po: translate 48 new messages
l10n: de.po: translate 22 new messages
l10n: de.po: add missing newlines
gitk: Update German translation
Ray Chen (1):
l10n: zh_CN: review for git v2.8.0 l10n round 2
Rob Mayoff (1):
contrib/subtree: unwrap tag refs
Romain Picard (1):
git-p4.py: add support for filetype change
SZEDER Gábor (2):
t6050-replace: make failing editor test more robust
completion: fix mis-indentation in _git_stash()
Sebastian Schuberth (3):
docs: clarify that passing --depth to git-clone implies --single-branch
docs: say "commits" in the --depth option wording for git-clone
docs: clarify that --depth for git-fetch works with newly initialized repos
Shawn O. Pearce (1):
remote-curl: include curl_errorstr on SSL setup failures
Stefan Beller (10):
xread: poll on non blocking fds
strbuf: add strbuf_read_once to read without blocking
sigchain: add command to pop all common signals
run-command: add an asynchronous parallel child processor
fetch_populated_submodules: use new parallel job processing
submodules: allow parallel fetching, add tests and documentation
submodule helper list: respect correct path prefix
submodule: try harder to fetch needed sha1 by direct fetching sha1
run-command: do not pass child process data into callbacks
Documentation: reword rebase summary
Stephen P. Smith (4):
user-manual: remove temporary branch entry from todo list
glossary: define the term shallow clone
user-manual: add section documenting shallow clones
user-manual: add addition gitweb information
Thomas Ackermann (1):
documentation: fix some typos
Thomas Braun (1):
completion: complete "diff --word-diff-regex="
Thomas Gummerer (11):
t7810: correct --no-index test
builtin/grep: add grep.fallbackToNoIndex config
ls-remote: document --quiet option
ls-remote: document --refs option
ls-remote: fix synopsis
ls-remote: use parse-options api
ls-remote: add support for showing symrefs
remote: use parse_config_key
remote: simplify remote_is_configured()
remote: actually check if remote exits
remote: use remote_is_configured() for add and rename
Tobias Klauser (2):
trailer: allow to write to files other than stdout
interpret-trailers: add option for in-place editing
Torsten Bögershausen (9):
ls-files: add eol diagnostics
t0027: add tests for get_stream_filter()
convert.c: remove unused parameter 'path'
convert.c: remove input_crlf_action()
convert.c: use text_eol_is_crlf()
convert.c: refactor crlf_action
convert.c: simplify text_stat
convert.c: correct attr_action()
config.mak.uname: use clang for Mac OS X 10.6
Trần Ngọc Quân (1):
l10n: vi.po (2509t): Updated Vietnamese translation
Victor Leschuk (4):
grep: allow threading even on a single-core machine
grep: slight refactoring to the code that disables threading
grep: add --threads=<num> option and grep.threads configuration
git-svn: loosen config globs limitations
Will Palmer (2):
test for '!' handling in rev-parse's named commits
object name: introduce '^{/!-<negative pattern>}' notation
brian m. carlson (1):
http: add option to try authentication without username
Øyvind A. Holm (1):
gitweb: squelch "uninitialized value" warning
마누엘 (1):
mingw: try to delete target directory before renaming
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.8.0-rc3
@ 2016-03-16 22:24 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-03-16 22:24 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.8.0-rc3 is now available for testing
at the usual places. It is comprised of 498 non-merge commits
since v2.7.0, contributed by 69 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.8.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.7.0 are as follows.
Welcome to the Git development community!
마누엘, Adam Dinwoodie, Andrew Wheeler, Changwoo Ryu,
Christoph Egger, Christoph Hoopmann, Dan Aloni, Dave Ware, David
A. Wheeler, Dickson Wong, Felipe Gonçalves Assis, GyuYong Jung,
Jon Griffiths, Kazutoshi Satoda, Lars Vogel, Martin Amdisen,
Matthew Kraai, Paul Wagland, Rob Mayoff, Romain Picard, and
Victor Leschuk.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Kuleshov, Alex Henrie, Audric Schiltknecht, brian
m. carlson, Carlos Martín Nieto, Christian Couder, David
A. Greene, David Turner, Dennis Kaarsemaker, Dimitriy Ryazantcev,
Edmundo Carmona Antoranz, Elia Pinto, Eric Wong, Jacob Keller,
Jean-Noel Avila, Jeff King, Jiang Xin, Johannes Schindelin,
Johannes Sixt, John Keeping, Jonathan Nieder, Junio C Hamano,
Karsten Blees, Karthik Nayak, Knut Franke, Lars Schneider,
Matthieu Moy, Matt McCutchen, Michael J Gruber, Mike Hommey,
Nguyễn Thái Ngọc Duy, Øyvind A. Holm, Patrick Steinhardt,
Pat Thoyts, Peter Krefting, Ralf Thielow, Sebastian Schuberth,
Shawn O. Pearce, Stefan Beller, Stephen P. Smith, SZEDER Gábor,
Thomas Ackermann, Thomas Braun, Thomas Gummerer, Tobias Klauser,
Torsten Bögershausen, Trần Ngọc Quân, and Will Palmer.
----------------------------------------------------------------
Git 2.8 Release Notes (draft)
=============================
Backward compatibility note
---------------------------
The rsync:// transport has been removed.
Updates since v2.7
------------------
UI, Workflows & Features
* It turns out "git clone" over rsync transport has been broken when
the source repository has packed references for a long time, and
nobody noticed nor complained about it.
* "push" learned that its "--delete" option can be shortened to
"-d", just like "branch --delete" and "branch -d" are the same
thing.
* "git blame" learned to produce the progress eye-candy when it takes
too much time before emitting the first line of the result.
* "git grep" can now be configured (or told from the command line)
how many threads to use when searching in the working tree files.
* 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).
* "git grep" by default does not fall back to its "--no-index"
behaviour outside a directory under Git's control (otherwise the
user may by mistake end up running a huge recursive search); with a
new configuration (set in $HOME/.gitconfig--by definition this
cannot be set in the config file per project), this safety can be
disabled.
* "git pull --rebase" has been extended to allow invoking
"rebase -i".
* "git p4" learned to cope with the type of a file getting changed.
* "git format-patch" learned to notice format.outputDirectory
configuration variable. This allows "-o <dir>" option to be
omitted on the command line if you always use the same directory in
your workflow.
* "interpret-trailers" has been taught to optionally update a file in
place, instead of always writing the result to the standard output.
* Many commands that read files that are expected to contain text
that is generated (or can be edited) by the end user to control
their behaviour (e.g. "git grep -f <filename>") have been updated
to be more tolerant to lines that are terminated with CRLF (they
used to treat such a line to contain payload that ends with CR,
which is usually not what the users expect).
* "git notes merge" used to limit the source of the merged notes tree
to somewhere under refs/notes/ hierarchy, which was too limiting
when inventing a workflow to exchange notes with remote
repositories using remote-tracking notes trees (located in e.g.
refs/remote-notes/ or somesuch).
* "git ls-files" learned a new "--eol" option to help diagnose
end-of-line problems.
* "ls-remote" learned an option to show which branch the remote
repository advertises as its primary by pointing its HEAD at.
* New http.proxyAuthMethod configuration variable can be used to
specify what authentication method to use, as a way to work around
proxies that do not give error response expected by libcurl when
CURLAUTH_ANY is used. Also, the codepath for proxy authentication
has been taught to use credential API to store the authentication
material in user's keyrings.
* Update the untracked cache subsystem and change its primary UI from
"git update-index" to "git config".
* There were a few "now I am doing this thing" progress messages in
the TCP connection code that can be triggered by setting a verbose
option internally in the code, but "git fetch -v" and friends never
passed the verbose option down to that codepath.
* Clean/smudge filters defined in a configuration file of lower
precedence can now be overridden to be a pass-through no-op by
setting the variable to an empty string.
* A new "<branch>^{/!-<pattern>}" notation can be used to name a
commit that is reachable from <branch> that does not match the
given <pattern>.
* The "user.useConfigOnly" configuration variable can be used to
force the user to always set user.email & user.name configuration
variables, serving as a reminder for those who work on multiple
projects and do not want to put these in their $HOME/.gitconfig.
* "git fetch" and friends that make network connections can now be
told to only use ipv4 (or ipv6).
* Some authentication methods do not need username or password, but
libcurl needs some hint that it needs to perform authentication.
Supplying an empty username and password string is a valid way to
do so, but you can set the http.[<url>.]emptyAuth configuration
variable to achieve the same, if you find it cleaner.
* You can now set http.[<url>.]pinnedpubkey to specify the pinned
public key when building with recent enough versions of libcURL.
* The configuration system has been taught to phrase where it found a
bad configuration variable in a better way in its error messages.
"git config" learnt a new "--show-origin" option to indicate where
the values come from.
* The "credential-cache" daemon process used to run in whatever
directory it happened to start in, but this made umount(2)ing the
filesystem that houses the repository harder; now the process
chdir()s to the directory that house its own socket on startup.
* When "git submodule update" did not result in fetching the commit
object in the submodule that is referenced by the superproject, the
command learned to retry another fetch, specifically asking for
that commit that may not be connected to the refs it usually
fetches.
* "git merge-recursive" learned "--no-renames" option to disable its
rename detection logic.
* Across the transition at around Git version 2.0, the user used to
get a pretty loud warning when running "git push" without setting
push.default configuration variable. We no longer warn because the
transition was completed a long time ago.
* README has been renamed to README.md and its contents got tweaked
slightly to make it easier on the eyes.
Performance, Internal Implementation, Development Support etc.
* Add a framework to spawn a group of processes in parallel, and use
it to run "git fetch --recurse-submodules" in parallel.
* A slight update to the Makefile to mark ".PHONY" targets as such
correctly.
* In-core storage of the reverse index for .pack files (which lets
you go from a pack offset to an object name) has been streamlined.
* d95138e6 (setup: set env $GIT_WORK_TREE when work tree is set, like
$GIT_DIR, 2015-06-26) attempted to work around a glitch in alias
handling by overwriting GIT_WORK_TREE environment variable to
affect subprocesses when set_git_work_tree() gets called, which
resulted in a rather unpleasant regression to "clone" and "init".
Try to address the same issue by always restoring the environment
and respawning the real underlying command when handling alias.
* The low-level code that is used to create symbolic references has
been updated to share more code with the code that deals with
normal references.
* strbuf_getline() and friends have been redefined to make it easier
to identify which callsite of (new) strbuf_getline_lf() should
allow and silently ignore carriage-return at the end of the line to
help users on DOSsy systems.
* "git shortlog" used to accumulate various pieces of information
regardless of what was asked to be shown in the final output. It
has been optimized by noticing what need not to be collected
(e.g. there is no need to collect the log messages when showing
only the number of changes).
* "git checkout $branch" (and other operations that share the same
underlying machinery) has been optimized.
* Automated tests in Travis CI environment has been optimized by
persisting runtime statistics of previous "prove" run, executing
tests that take longer before other ones; this reduces the total
wallclock time.
* Test scripts have been updated to remove assumptions that are not
portable between Git for POSIX and Git for Windows, or to skip ones
with expectations that are not satisfiable on Git for Windows.
* Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in a couple of protrams that are already safe
has been rewritten to avoid false warnings.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat. The API has been removed and its users have been
rewritten to simplify the overall code complexity.
* Help those who debug http(s) part of the system.
(merge 0054045 sp/remote-curl-ssl-strerror later to maint).
* The internal API to interact with "remote.*" configuration
variables has been streamlined.
* The ref-filter's format-parsing code has been refactored, in
preparation for "branch --format" and friends.
* Traditionally, the tests that try commands that work on the
contents in the working tree were named with "worktree" in their
filenames, but with the recent addition of "git worktree"
subcommand, whose tests are also named similarly, it has become
harder to tell them apart. The traditional tests have been renamed
to use "work-tree" instead in an attempt to differentiate them.
(merge 5549029 mg/work-tree-tests later to maint).
* Many codepaths forget to check return value from git_config_set();
the function is made to die() to make sure we do not proceed when
setting a configuration variable failed.
(merge 3d18064 ps/config-error later to maint).
* Handling of errors while writing into our internal asynchronous
process has been made more robust, which reduces flakiness in our
tests.
(merge 43f3afc jk/epipe-in-async later to maint).
* There is a new DEVELOPER knob that enables many compiler warning
options in the Makefile.
* The way the test scripts configure the Apache web server has been
updated to work also for Apache 2.4 running on RedHat derived
distros.
* Out of maintenance gcc on OSX 10.6 fails to compile the code in
'master'; work it around by using clang by default on the platform.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat, in many cases. The API has been removed and its
users have been rewritten to simplify the overall code complexity.
This incidentally also closes some heap-corruption holes.
* Recent versions of GNU grep is pickier than before to decide if a
file is "binary" and refuse to give line-oriented hits when we
expect it to, unless explicitly told with "-a" option. As our
scripted Porcelains use sane_grep wrapper for line-oriented data,
even when the line may contain non-ASCII payload we took from
end-user data, use "grep -a" to implement sane_grep wrapper when
using an implementation of "grep" that takes the "-a" option.
Also contains various documentation updates and code clean-ups.
Fixes since v2.7
----------------
Unless otherwise noted, all the fixes since v2.7 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* An earlier change in 2.5.x-era broke users' hooks and aliases by
exporting GIT_WORK_TREE to point at the root of the working tree,
interfering when they tried to use a different working tree without
setting GIT_WORK_TREE environment themselves.
* The "exclude_list" structure has the usual "alloc, nr" pair of
fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
array.
* Paths that have been told the index about with "add -N" are not
quite yet in the index, but a few commands behaved as if they
already are in a harmful way.
* "git send-email" was confused by escaped quotes stored in the alias
files saved by "mutt", which has been corrected.
* A few unportable C construct have been spotted by clang compiler
and have been fixed.
* The documentation has been updated to hint the connection between
the '--signoff' option and DCO.
* "git reflog" incorrectly assumed that all objects that used to be
at the tip of a ref must be commits, which caused it to segfault.
* The ignore mechanism saw a few regressions around untracked file
listing and sparse checkout selection areas in 2.7.0; the change
that is responsible for the regression has been reverted.
* Another try to improve the ignore mechanism that lets you say "this
is excluded" and then later say "oh, no, this part (that is a
subset of the previous part) is not excluded". This has still a
known limitation, though.
* Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
(e.g. COMMIT_EDITMSG) that is meant to be left after the command is
done. This however did not work well if the repository is set to
be shared with core.sharedRepository and the umask of the previous
user is tighter. They have been made to work better by calling
unlink(2) and retrying after fopen(3) fails with EPERM.
* Asking gitweb for a nonexistent commit left a warning in the server
log.
Somebody may want to follow this up with an additional test, perhaps?
IIRC, we do test that no Perl warnings are given to the server log,
so this should have been caught if our test coverage were good.
* "git rebase", unlike all other callers of "gc --auto", did not
ignore the exit code from "gc --auto".
* Many codepaths that run "gc --auto" before exiting kept packfiles
mapped and left the file descriptors to them open, which was not
friendly to systems that cannot remove files that are open. They
now close the packs before doing so.
* A recent optimization to filter-branch in v2.7.0 introduced a
regression when --prune-empty filter is used, which has been
corrected.
* The description for SANITY prerequisite the test suite uses has
been clarified both in the comment and in the implementation.
* "git tag" started listing a tag "foo" as "tags/foo" when a branch
named "foo" exists in the same repository; remove this unnecessary
disambiguation, which is a regression introduced in v2.7.0.
* The way "git svn" uses auth parameter was broken by Subversion
1.9.0 and later.
* The "split" subcommand of "git subtree" (in contrib/) incorrectly
skipped merges when it shouldn't, which was corrected.
* A few options of "git diff" did not work well when the command was
run from a subdirectory.
* The command line completion learned a handful of additional options
and command specific syntax.
* dirname() emulation has been added, as Msys2 lacks it.
* The underlying machinery used by "ls-files -o" and other commands
has been taught not to create empty submodule ref cache for a
directory that is not a submodule. This removes a ton of wasted
CPU cycles.
* "git worktree" had a broken code that attempted to auto-fix
possible inconsistency that results from end-users moving a
worktree to different places without telling Git (the original
repository needs to maintain backpointers to its worktrees, but
"mv" run by end-users who are not familiar with that fact will
obviously not adjust them), which actually made things worse
when triggered.
* The low-level merge machinery has been taught to use CRLF line
termination when inserting conflict markers to merged contents that
are themselves CRLF line-terminated.
* "git push --force-with-lease" has been taught to report if the push
needed to force (or fast-forwarded).
* The emulated "yes" command used in our test scripts has been
tweaked not to spend too much time generating unnecessary output
that is not used, to help those who test on Windows where it would
not stop until it fills the pipe buffer due to lack of SIGPIPE.
* The documentation for "git clean" has been corrected; it mentioned
that .git/modules/* are removed by giving two "-f", which has never
been the case.
* The vimdiff backend for "git mergetool" has been tweaked to arrange
and number buffers in the order that would match the expectation of
majority of people who read left to right, then top down and assign
buffers 1 2 3 4 "mentally" to local base remote merge windows based
on that order.
* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
rev, i.e. the object named by the the pathname with wildcard
characters in a tree object.
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
* "git rev-parse --git-common-dir" used in the worktree feature
misbehaved when run from a subdirectory.
(merge 17f1365 nd/git-common-dir-fix later to maint).
* "git worktree add -B <branchname>" did not work.
* The "v(iew)" subcommand of the interactive "git am -i" command was
broken in 2.6.0 timeframe when the command was rewritten in C.
(merge 708b8cc jc/am-i-v-fix later to maint).
* "git merge-tree" used to mishandle "both sides added" conflict with
its own "create a fake ancestor file that has the common parts of
what both sides have added and do a 3-way merge" logic; this has
been updated to use the usual "3-way merge with an empty blob as
the fake common ancestor file" approach used in the rest of the
system.
(merge 907681e jk/no-diff-emit-common later to maint).
* The memory ownership rule of fill_textconv() API, which was a bit
tricky, has been documented a bit better.
(merge a64e6a4 jk/more-comments-on-textconv later to maint).
* Update various codepaths to avoid manually-counted malloc().
(merge 08c95df jk/tighten-alloc later to maint).
* The documentation did not clearly state that the 'simple' mode is
now the default for "git push" when push.default configuration is
not set.
(merge f6b1fb3 mm/push-simple-doc later to maint).
* Recent versions of GNU grep are pickier when their input contains
arbitrary binary data, which some of our tests uses. Rewrite the
tests to sidestep the problem.
(merge 3b1442d jk/grep-binary-workaround-in-test later to maint).
* A helper function "git submodule" uses since v2.7.0 to list the
modules that match the pathspec argument given to its subcommands
(e.g. "submodule add <repo> <path>") has been fixed.
(merge 2b56bb7 sb/submodule-module-list-fix later to maint).
* "git config section.var value" to set a value in per-repository
configuration file failed when it was run outside any repository,
but didn't say the reason correctly.
(merge 638fa62 js/config-set-in-non-repository later to maint).
* The code to read the pack data using the offsets stored in the pack
idx file has been made more carefully check the validity of the
data in the idx.
(merge 7465feb jk/pack-idx-corruption-safety later to maint).
* Other minor clean-ups and documentation updates
(merge f459823 ak/extract-argv0-last-dir-sep later to maint).
(merge 63ca1c0 ak/git-strip-extension-from-dashed-command later to maint).
(merge 4867f11 ps/plug-xdl-merge-leak later to maint).
(merge 4938686 dt/initial-ref-xn-commit-doc later to maint).
(merge 9537f21 ma/update-hooks-sample-typofix later to maint).
----------------------------------------------------------------
Changes since v2.7.0 are as follows:
Adam Dinwoodie (1):
t9117: test specifying full url to git svn init -T
Alex Henrie (1):
stripspace: call U+0020 a "space" instead of a "blank"
Alexander Kuleshov (3):
format-patch: introduce format.outputDirectory configuration
exec_cmd.c: use find_last_dir_sep() for code simplification
git.c: simplify stripping extension of a file in handle_builtin()
Andrew Wheeler (1):
push: fix ref status reporting for --force-with-lease
Audric Schiltknecht (1):
l10n: fr.po: Correct case in sentence
Carlos Martín Nieto (1):
Disown ssh+git and git+ssh
Changwoo Ryu (3):
l10n: ko.po: Add Korean translation
l10n: ko.po: Update Korean translation
l10n: ko: Update Korean translation
Christian Couder (11):
dir: free untracked cache when removing it
update-index: use enum for untracked cache options
update-index: add --test-untracked-cache
update-index: add untracked cache notifications
update-index: move 'uc' var declaration
dir: add {new,add}_untracked_cache()
dir: add remove_untracked_cache()
dir: simplify untracked cache "ident" field
config: add core.untrackedCache
test-dump-untracked-cache: don't modify the untracked cache
t7063: add tests for core.untrackedCache
Christoph Egger (1):
http: implement public key pinning
Christoph Hoopmann (1):
l10n: de.po: fix typo
Dan Aloni (1):
ident: add user.useConfigOnly boolean for when ident shouldn't be guessed
Dave Ware (1):
contrib/subtree: fix "subtree split" skipped-merge bug
David A. Greene (1):
contrib/subtree: Make testing easier
David A. Wheeler (1):
Expand documentation describing --signoff
David Turner (3):
do_compare_entry: use already-computed path
unpack-trees: fix accidentally quadratic behavior
refs: document transaction semantics
Dennis Kaarsemaker (1):
reflog-walk: don't segfault on non-commit sha1's in the reflog
Dickson Wong (1):
mergetool: reorder vim/gvim buffers in three-way diffs
Dimitriy Ryazantcev (2):
l10n: ru.po: update Russian translation
l10n: ru.po: update Russian translation
Edmundo Carmona Antoranz (1):
blame: add support for --[no-]progress option
Elia Pinto (92):
Makefile: add missing phony target
contrib/examples/git-commit.sh: use the $( ... ) construct for command substitution
contrib/examples/git-fetch.sh: use the $( ... ) construct for command substitution
contrib/examples/git-merge.sh: use the $( ... ) construct for command substitution
contrib/examples/git-repack.sh: use the $( ... ) construct for command substitution
contrib/examples/git-revert.sh: use the $( ... ) construct for command substitution
contrib/thunderbird-patch-inline/appp.sh: use the $( ... ) construct for command substitution
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
t/lib-httpd.sh: use the $( ... ) construct for command substitution
test-sha1.sh: use the $( ... ) construct for command substitution
unimplemented.sh: use the $( ... ) construct for command substitution
t/t1100-commit-tree-options.sh: use the $( ... ) construct for command substitution
t/t1401-symbolic-ref.sh: use the $( ... ) construct for command substitution
t/t1410-reflog.sh: use the $( ... ) construct for command substitution
t/t1511-rev-parse-caret.sh: use the $( ... ) construct for command substitution
t/t1512-rev-parse-disambiguation.sh: use the $( ... ) construct for command substitution
t/t1700-split-index.sh: use the $( ... ) construct for command substitution
t/t2025-worktree-add.sh: use the $( ... ) construct for command substitution
t/t2102-update-index-symlinks.sh: use the $( ... ) construct for command substitution
t/t3030-merge-recursive.sh: use the $( ... ) construct for command substitution
t/t3100-ls-tree-restrict.sh: use the $( ... ) construct for command substitution
t/t3101-ls-tree-dirname.sh: use the $( ... ) construct for command substitution
t/t3210-pack-refs.sh: use the $( ... ) construct for command substitution
t/t3403-rebase-skip.sh: use the $( ... ) construct for command substitution
t/t3511-cherry-pick-x.sh: use the $( ... ) construct for command substitution
t/t3600-rm.sh: use the $( ... ) construct for command substitution
t/t3700-add.sh: use the $( ... ) construct for command substitution
t/t5100-mailinfo.sh: use the $( ... ) construct for command substitution
t/t5300-pack-object.sh: use the $( ... ) construct for command substitution
t/t5301-sliding-window.sh: use the $( ... ) construct for command substitution
t/t5302-pack-index.sh: use the $( ... ) construct for command substitution
t/t5303-pack-corruption-resilience.sh: use the $( ... ) construct for command substitution
t/t5304-prune.sh: use the $( ... ) construct for command substitution
t/t5305-include-tag.sh: use the $( ... ) construct for command substitution
t/t5500-fetch-pack.sh: use the $( ... ) construct for command substitution
t/t5505-remote.sh: use the $( ... ) construct for command substitution
t/t5506-remote-groups.sh: use the $( ... ) construct for command substitution
t/t5510-fetch.sh: use the $( ... ) construct for command substitution
t/t5515-fetch-merge-logic.sh: use the $( ... ) construct for command substitution
t/t5516-fetch-push.sh: use the $( ... ) construct for command substitution
t/t5517-push-mirror.sh: use the $( ... ) construct for command substitution
t/t5522-pull-symlink.sh: use the $( ... ) construct for command substitution
t/t5530-upload-pack-error.sh: use the $( ... ) construct for command substitution
t/t5532-fetch-proxy.sh: use the $( ... ) construct for command substitution
t/t5537-fetch-shallow.sh: use the $( ... ) construct for command substitution
t/t5538-push-shallow.sh: use the $( ... ) construct for command substitution
t/t5550-http-fetch-dumb.sh: use the $( ... ) construct for command substitution
t/t5570-git-daemon.sh: use the $( ... ) construct for command substitution
t/t5601-clone.sh: use the $( ... ) construct for command substitution
t/t5700-clone-reference.sh: use the $( ... ) construct for command substitution
t/t5710-info-alternate.sh: use the $( ... ) construct for command substitution
t/t5900-repo-selection.sh: use the $( ... ) construct for command substitution
t/t6001-rev-list-graft.sh: use the $( ... ) construct for command substitution
t/t6002-rev-list-bisect.sh: use the $( ... ) construct for command substitution
t/t6015-rev-list-show-all-parents.sh: use the $( ... ) construct for command substitution
t/t6032-merge-large-rename.sh: use the $( ... ) construct for command substitution
t/t6132-pathspec-exclude.sh: use the $( ... ) construct for command substitution
t/t7001-mv.sh: use the $( ... ) construct for command substitution
t/t7003-filter-branch.sh: use the $( ... ) construct for command substitution
t/t7004-tag.sh: use the $( ... ) construct for command substitution
t/t7006-pager.sh: use the $( ... ) construct for command substitution
t/t7103-reset-bare.sh: use the $( ... ) construct for command substitution
t/t7406-submodule-update.sh: use the $( ... ) construct for command substitution
t/t7408-submodule-reference.sh: use the $( ... ) construct for command substitution
t/t7504-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7505-prepare-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7602-merge-octopus-many.sh: use the $( ... ) construct for command substitution
t/t7700-repack.sh: use the $( ... ) construct for command substitution
t/t8003-blame-corner-cases.sh: use the $( ... ) construct for command substitution
t/t9001-send-email.sh: use the $( ... ) construct for command substitution
t9100-git-svn-basic.sh: use the $( ... ) construct for command substitution
t9101-git-svn-props.sh: use the $( ... ) construct for command substitution
t9104-git-svn-follow-parent.sh: use the $( ... ) construct for command substitution
t9105-git-svn-commit-diff.sh: use the $( ... ) construct for command substitution
t9107-git-svn-migrate.sh: use the $( ... ) construct for command substitution
t9108-git-svn-glob.sh: use the $( ... ) construct for command substitution
t9109-git-svn-multi-glob.sh: use the $( ... ) construct for command substitution
t9110-git-svn-use-svm-props.sh: use the $( ... ) construct for command substitution
t9114-git-svn-dcommit-merge.sh: use the $( ... ) construct for command substitution
t9118-git-svn-funky-branch-names.sh: use the $( ... ) construct for command substitution
t9119-git-svn-info.sh: use the $( ... ) construct for command substitution
t9129-git-svn-i18n-commitencoding.sh: use the $( ... ) construct for command substitution
t9130-git-svn-authors-file.sh: use the $( ... ) construct for command substitution
t9132-git-svn-broken-symlink.sh: use the $( ... ) construct for command substitution
t9137-git-svn-dcommit-clobber-series.sh: use the $( ... ) construct for command substitution
t9138-git-svn-authors-prog.sh: use the $( ... ) construct for command substitution
t9145-git-svn-master-branch.sh: use the $( ... ) construct for command substitution
t9150-svk-mergetickets.sh: use the $( ... ) construct for command substitution
t9300-fast-import.sh: use the $( ... ) construct for command substitution
t9350-fast-export.sh: use the $( ... ) construct for command substitution
t9501-gitweb-standalone-http-status.sh: use the $( ... ) construct for command substitution
t9901-git-web--browse.sh: use the $( ... ) construct for command substitution
Eric Wong (10):
git-send-email: do not double-escape quotes from mutt
for-each-ref: document `creatordate` and `creator` fields
git-svn: fix auth parameter handling on SVN 1.9.0+
pass transport verbosity down to git_connect
connect & http: support -4 and -6 switches for remote operations
t5570: add tests for "git {clone,fetch,pull} -v"
git-svn: hoist out utf8 prep from t9129 to lib-git-svn
tests: remove no-op full-svn-test target
git-svn: shorten glob error message
git-svn: fix URL canonicalization during init w/ SVN 1.7+
Felipe Gonçalves Assis (7):
merge-recursive: option to disable renames
merge-recursive: more consistent interface
merge-strategies.txt: fix typo
merge-recursive: find-renames resets threshold
t3034: add rename threshold tests
t3034: test option to disable renames
t3034: test deprecated interface
GyuYong Jung (1):
git-cvsserver.perl: fix typo
Jacob Keller (1):
notes: allow merging from arbitrary references
Jean-Noel Avila (2):
l10n: fr.po v2.8.0 round 1 2509t
l10n: fr.po v2.8.0 round 2
Jeff King (86):
pack-revindex: drop hash table
pack-revindex: store entries directly in packed_git
create_symref: modernize variable names
create_symref: use existing ref-lock code
create_symref: write reflog while holding lock
run-command: don't warn on SIGPIPE deaths
avoid shifting signed integers 31 bits
bswap: add NO_UNALIGNED_LOADS define
checkout,clone: check return value of create_symref
lock_ref_sha1_basic: always fill old_oid while holding lock
lock_ref_sha1_basic: handle REF_NODEREF with invalid refs
rebase: ignore failures from "gc --auto"
shortlog: match both "Author:" and "author" on stdin
shortlog: use strbufs to read from stdin
shortlog: replace hand-parsing of author with pretty-printer
shortlog: optimize "--summary" mode
shortlog: optimize out useless "<none>" normalization
shortlog: optimize out useless string list
shortlog: don't warn on empty author
filter-branch: resolve $commit^{tree} in no-index case
clean: make is_git_repository a public function
resolve_gitlink_ref: ignore non-repository paths
t6300: use test_atom for some un-modern tests
tag: do not show ambiguous tag names as "tags/foo"
transport: drop support for git-over-rsync
give "nbuf" strbuf a more meaningful name
checkout-index: simplify "-z" option parsing
checkout-index: handle "--no-prefix" option
checkout-index: handle "--no-index" option
checkout-index: disallow "--no-stage" option
apply, ls-files: simplify "-z" parsing
fmt_ident: refactor strictness checks
test-path-utils: use xsnprintf in favor of strcpy
rerere: replace strcpy with xsnprintf
checkout: reorder check_filename conditional
check_filename: tighten dwim-wildcard ambiguity
get_sha1: don't die() on bogus search strings
http-push: stop using name_path
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
git-config: better document default behavior for `--include`
ref-filter: use string_list_split over strbuf_split
reflog_expire_cfg: NUL-terminate pattern field
add helpers for detecting size_t overflow
tree-diff: catch integer overflow in combine_diff_path allocation
diff: clarify textconv interface
harden REALLOC_ARRAY and xcalloc against size_t overflow
add helpers for allocating flex-array structs
argv-array: add detach function
convert manual allocations to argv_array
convert trivial cases to ALLOC_ARRAY
use xmallocz to avoid size arithmetic
convert trivial cases to FLEX_ARRAY macros
use st_add and st_mult for allocation size computation
prepare_{git,shell}_cmd: use argv_array
write_untracked_extension: use FLEX_ALLOC helper
fast-import: simplify allocation in start_packfile
fetch-pack: simplify add_sought_entry
test-path-utils: fix normalize_path_copy output buffer size
sequencer: simplify memory allocation of get_message
git-compat-util: drop mempcpy compat code
transport_anonymize_url: use xstrfmt
diff_populate_gitlink: use a strbuf
convert ewah/bitmap code to use xmalloc
ewah: convert to REALLOC_ARRAY, etc
merge-one-file: use empty blob for add/add base
merge-tree: drop generate_common strategy
xdiff: drop XDL_EMIT_COMMON
t5313: test bounds-checks of corrupted/malicious pack/idx files
nth_packed_object_offset: bounds-check extended offset
use_pack: handle signed off_t overflow
write_or_die: handle EPIPE in async threads
fetch-pack: ignore SIGPIPE in sideband demuxer
test_must_fail: report number of unexpected signal
t5504: handle expected output from SIGPIPE death
compat/mingw: brown paper bag fix for 50a6c8e
t9700: fix test for perl older than 5.14
add helpers for detecting size_t overflow
tree-diff: catch integer overflow in combine_diff_path allocation
http-push: stop using name_path
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
Jiang Xin (7):
l10n: git.pot: v2.8.0 round 1 (48 new, 16 removed)
http: honor no_http env variable to bypass proxy
l10n: zh_CN: for git v2.8.0 l10n round 1
l10n: git.pot: v2.8.0 round 2 (21 new, 1 removed)
l10n: zh_CN: for git v2.8.0 l10n round 2
l10n: git.pot: Add one new message for Git 2.8.0
l10n: zh_CN: for git v2.8.0 l10n round 3
Johannes Schindelin (47):
commit: allow editing the commit message even in shared repos
Handle more file writes correctly in shared repos
Refactor skipping DOS drive prefixes
compat/basename: make basename() conform to POSIX
compat/basename.c: provide a dirname() compatibility function
t0060: verify that basename() and dirname() work as expected
config.mak.uname: support MSys2
config.mak.uname: supporting 64-bit MSys2
fetch: release pack files before garbage-collecting
am: release pack files before garbage-collecting
merge: release pack files before garbage-collecting
receive-pack: release pack files before garbage-collecting
pull: allow interactive rebase with --rebase=interactive
remote: handle the config setting branch.*.rebase=interactive
completion: add missing branch.*.rebase values
nedmalloc: allow compiling with MSys2's compiler
compat/mingw: support MSys2-based MinGW build
compat/winansi: support compiling with MSys2
t0060: loosen overly strict expectations
mingw: avoid redefining S_* constants
mingw: avoid warnings when casting HANDLEs to int
mingw: squash another warning about a cast
mingw: uglify (a, 0) definitions to shut up warnings
mingw: let's use gettext with MSYS2
mingw: do not trust MSYS2's MinGW gettext.sh
Git.pm: stop assuming that absolute paths start with a slash
mingw: prepare the TMPDIR environment variable for shell scripts
mingw: let lstat() fail with errno == ENOTDIR when appropriate
merge-file: let conflict markers match end-of-line style of the context
merge-file: ensure that conflict sections match eol style
mingw: fix t5601-clone.sh
mingw: accomodate t0060-path-utils for MSYS2
mingw: disable mkfifo-based tests
tests: turn off git-daemon tests if FIFOs are not available
mingw: skip test in t1508 that fails due to path conversion
mingw: fix t9700's assumption about directory separators
mingw: work around pwd issues in the tests
mingw: mark t9100's test cases with appropriate prereqs
mingw: avoid illegal filename in t9118
mingw: handle the missing POSIXPERM prereq in t9124
mingw: skip a test in t9130 that cannot pass on Windows
mingw: do not bother to test funny file names
test-lib: limit the output of the yes utility
gitignore: ignore generated test-fake-ssh executable
t5505: 'remote add x y' should work when url.y.insteadOf = x
git config: report when trying to modify a non-existing repo config
Mark win32's pthread_exit() as NORETURN
Johannes Sixt (3):
t/t5100: no need to use 'echo' command substitutions for globbing
mingw: avoid linking to the C library's isalpha()
t0001: fix GIT_* environment variable check under --valgrind
John Keeping (3):
completion: add missing git-rebase options
t8005: avoid grep on non-ASCII data
t9200: avoid grep on non-ASCII data
Jon Griffiths (3):
credential-cache--daemon: refactor check_socket_directory
credential-cache--daemon: disallow relative socket path
credential-cache--daemon: change to the socket dir on startup
Jonathan Nieder (1):
submodule.c: write "Fetching submodule <foo>" to stderr
Junio C Hamano (50):
First batch for post 2.7 cycle
strbuf: miniscule style fix
strbuf: make strbuf_getline_crlf() global
strbuf: introduce strbuf_getline_{lf,nul}()
mktree: there are only two possible line terminations
check-attr: there are only two possible line terminations
check-ignore: there are only two possible line terminations
update-index: there are only two possible line terminations
checkout-index: there are only two possible line terminations
strbuf: give strbuf_getline() to the "most text friendly" variant
hash-object: read --stdin-paths with strbuf_getline()
revision: read --stdin with strbuf_getline()
rev-parse: read parseopt spec with strbuf_getline()
ident.c: read /etc/mailname with strbuf_getline()
remote.c: read $GIT_DIR/remotes/* with strbuf_getline()
clone/sha1_file: read info/alternates with strbuf_getline()
transport-helper: read helper response with strbuf_getline()
cat-file: read batch stream with strbuf_getline()
column: read lines with strbuf_getline()
send-pack: read list of refs with strbuf_getline()
grep: read -f file with strbuf_getline()
test-sha1-array: read command stream with strbuf_getline()
test-lib: clarify and tighten SANITY
Second batch for 2.8 cycle
Third batch for 2.8 cycle
git: remove an early return from save_env_before_alias()
git: protect against unbalanced calls to {save,restore}_env()
git: simplify environment save/restore logic
Fourth batch for 2.8.cycle
Getting closer to 2.7.1
restore_env(): free the saved environment variable once we are done
Fifth batch for 2.8 cycle
Git 2.7.1
Sixth batch for the 2.8 cycle
pager: lose a separate argv[]
pager: factor out a helper to prepare a child process to run the pager
am -i: fix "v"iew
Start preparing for 2.7.2
Seventh batch for the 2.8 cycle
Git 2.7.2
Eighth batch for 2.8
Git 2.8-rc0
Git 2.8-rc1
gitignore: document that unignoring a directory unignores everything in it
Git 2.7.3
Git 2.8-rc2
sane_grep: pass "-a" if grep accepts it
rebase-i: clarify "is this commit relevant?" test
RelNotes for 2.8.0: typofix
Git 2.8-rc3
Karsten Blees (1):
mingw: factor out Windows specific environment setup
Karthik Nayak (10):
ref-filter: bump 'used_atom' and related code to the top
ref-filter: introduce struct used_atom
ref-filter: introduce parsing functions for each valid atom
ref-filter: introduce color_atom_parser()
ref-filter: introduce parse_align_position()
ref-filter: introduce align_atom_parser()
ref-filter: align: introduce long-form syntax
ref-filter: introduce remote_ref_atom_parser()
ref-filter: introduce contents_atom_parser()
ref-filter: introduce objectname_atom_parser()
Kazutoshi Satoda (2):
git-svn: enable "svn.pathnameencoding" on dcommit
git-svn: apply "svn.pathnameencoding" before URL encoding
Knut Franke (2):
http: allow selection of proxy authentication method
http: use credential API to handle proxy authentication
Lars Schneider (8):
travis-ci: run previously failed tests first, then slowest to fastest
travis-ci: explicity use container-based infrastructure
convert: treat an empty string for clean/smudge filters as "cat"
t: do not hide Git's exit code in tests using 'nul_to_q'
rename git_config_from_buf to git_config_from_mem
config: add 'origin_type' to config_source struct
config: add '--show-origin' option to print the origin of a config value
add DEVELOPER makefile knob to check for acknowledged warnings
Lars Vogel (1):
git-add doc: do not say working directory when you mean working tree
Martin Amdisen (1):
templates/hooks: fix minor typo in the sample update-hook
Matt McCutchen (1):
Documentation/git-clean.txt: don't mention deletion of .git/modules/*
Matthew Kraai (1):
Documentation: remove unnecessary backslashes
Matthieu Moy (7):
Documentation/git-push: document that 'simple' is the default
README: use markdown syntax
README.md: add hyperlinks on filenames
README.md: move the link to git-scm.com up
README.md: don't call git stupid in the title
README.md: move down historical explanation about the name
push: remove "push.default is unset" warning message
Michael J Gruber (5):
t9100: fix breakage when SHELL_PATH is not /bin/sh
tests: rename work-tree tests to *work-tree*
t/lib-httpd: load mod_unixd
t5510: do not leave changed cwd
wt-status: allow "ahead " to be picked up by l10n
Mike Hommey (1):
notes: allow treeish expressions as notes ref
Nguyễn Thái Ngọc Duy (25):
blame: remove obsolete comment
add and use a convenience macro ce_intent_to_add()
Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR"
git.c: make it clear save_env() is for alias handling only
setup.c: re-fix d95138e (setup: set env $GIT_WORK_TREE when ..
git.c: make sure we do not leak GIT_* to alias scripts
grep: make it clear i-t-a entries are ignored
dir.c: clean the entire struct in clear_exclude_list()
Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match"
worktree.c: fix indentation
diff-no-index: do not take a redundant prefix argument
diff: make -O and --output work in subdirectory
worktree: stop supporting moving worktrees manually
rev-parse: take prefix into account in --git-common-dir
dir.c: fix match_pathname()
dir.c: support tracing exclude
dir.c: support marking some patterns already matched
dir.c: don't exclude whole dir prematurely
worktree: fix "add -B"
worktree add -B: do the checkout test before update branch
sha1_file.c: mark strings for translation
builtin/checkout.c: mark strings for translation
builtin/clone.c: mark strings for translation
ref-filter.c: mark strings for translation
trailer.c: mark strings for translation
Pat Thoyts (1):
t0008: avoid absolute path
Patrick Steinhardt (18):
push: add '--delete' flag to synopsis
push: add '-d' as shorthand for '--delete'
config: introduce set_or_die wrappers
branch: report errors in tracking branch setup
branch: die on config error when unsetting upstream
branch: die on config error when editing branch description
submodule: die on config error when linking modules
submodule--helper: die on config error when cloning module
remote: die on config error when setting URL
remote: die on config error when setting/adding branches
remote: die on config error when manipulating remotes
clone: die on config error in cmd_clone
init-db: die on config errors when initializing empty repo
sequencer: die on config error when saving replay opts
compat: die when unable to set core.precomposeunicode
config: rename git_config_set to git_config_set_gently
config: rename git_config_set_or_die to git_config_set
xdiff/xmerge: fix memory leak in xdl_merge
Paul Wagland (2):
completion: complete show-branch "--date-order"
completion: update completion arguments for stash
Peter Krefting (2):
l10n: sv.po: Fix inconsistent translation of "progress meter"
l10n: sv.po: Update Swedish translation (2509t0f0u)
Ralf Thielow (5):
l10n: TEAMS: update Ralf Thielow's email address
l10n: de.po: add space to abbreviation "z. B."
l10n: de.po: fix interactive rebase message
l10n: de.po: translate "command" as "Befehl"
l10n: de.po: translate 48 new messages
Rob Mayoff (1):
contrib/subtree: unwrap tag refs
Romain Picard (1):
git-p4.py: add support for filetype change
SZEDER Gábor (2):
t6050-replace: make failing editor test more robust
completion: fix mis-indentation in _git_stash()
Sebastian Schuberth (3):
docs: clarify that passing --depth to git-clone implies --single-branch
docs: say "commits" in the --depth option wording for git-clone
docs: clarify that --depth for git-fetch works with newly initialized repos
Shawn O. Pearce (1):
remote-curl: include curl_errorstr on SSL setup failures
Stefan Beller (10):
xread: poll on non blocking fds
strbuf: add strbuf_read_once to read without blocking
sigchain: add command to pop all common signals
run-command: add an asynchronous parallel child processor
fetch_populated_submodules: use new parallel job processing
submodules: allow parallel fetching, add tests and documentation
submodule helper list: respect correct path prefix
submodule: try harder to fetch needed sha1 by direct fetching sha1
run-command: do not pass child process data into callbacks
Documentation: reword rebase summary
Stephen P. Smith (4):
user-manual: remove temporary branch entry from todo list
glossary: define the term shallow clone
user-manual: add section documenting shallow clones
user-manual: add addition gitweb information
Thomas Ackermann (1):
documentation: fix some typos
Thomas Braun (1):
completion: complete "diff --word-diff-regex="
Thomas Gummerer (11):
t7810: correct --no-index test
builtin/grep: add grep.fallbackToNoIndex config
ls-remote: document --quiet option
ls-remote: document --refs option
ls-remote: fix synopsis
ls-remote: use parse-options api
ls-remote: add support for showing symrefs
remote: use parse_config_key
remote: simplify remote_is_configured()
remote: actually check if remote exits
remote: use remote_is_configured() for add and rename
Tobias Klauser (2):
trailer: allow to write to files other than stdout
interpret-trailers: add option for in-place editing
Torsten Bögershausen (9):
ls-files: add eol diagnostics
t0027: add tests for get_stream_filter()
convert.c: remove unused parameter 'path'
convert.c: remove input_crlf_action()
convert.c: use text_eol_is_crlf()
convert.c: refactor crlf_action
convert.c: simplify text_stat
convert.c: correct attr_action()
config.mak.uname: use clang for Mac OS X 10.6
Trần Ngọc Quân (1):
l10n: vi.po (2509t): Updated Vietnamese translation
Victor Leschuk (4):
grep: allow threading even on a single-core machine
grep: slight refactoring to the code that disables threading
grep: add --threads=<num> option and grep.threads configuration
git-svn: loosen config globs limitations
Will Palmer (2):
test for '!' handling in rev-parse's named commits
object name: introduce '^{/!-<negative pattern>}' notation
brian m. carlson (1):
http: add option to try authentication without username
Øyvind A. Holm (1):
gitweb: squelch "uninitialized value" warning
마누엘 (1):
mingw: try to delete target directory before renaming
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.8.0-rc2
@ 2016-03-10 23:04 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-03-10 23:04 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.8.0-rc2 is now available for testing
at the usual places. It is comprised of 459 non-merge commits
since v2.7.0, contributed by 60 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.8.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.7.0 are as follows.
Welcome to the Git development community!
마누엘, Andrew Wheeler, Changwoo Ryu, Christoph Egger,
Dan Aloni, Dave Ware, David A. Wheeler, Dickson Wong, Felipe
Gonçalves Assis, GyuYong Jung, Jon Griffiths, Kazutoshi Satoda,
Lars Vogel, Martin Amdisen, Matthew Kraai, Paul Wagland, Rob
Mayoff, Romain Picard, and Victor Leschuk.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Kuleshov, Alex Henrie, brian m. carlson, Christian
Couder, David A. Greene, David Turner, Dennis Kaarsemaker,
Edmundo Carmona Antoranz, Elia Pinto, Eric Wong, Jacob Keller,
Jeff King, Jiang Xin, Johannes Schindelin, Johannes Sixt,
John Keeping, Jonathan Nieder, Junio C Hamano, Karsten Blees,
Karthik Nayak, Knut Franke, Lars Schneider, Matthieu Moy, Matt
McCutchen, Michael J Gruber, Mike Hommey, Nguyễn Thái Ngọc
Duy, Øyvind A. Holm, Patrick Steinhardt, Pat Thoyts, Sebastian
Schuberth, Shawn O. Pearce, Stefan Beller, Stephen P. Smith,
SZEDER Gábor, Thomas Ackermann, Thomas Braun, Thomas Gummerer,
Tobias Klauser, Torsten Bögershausen, and Will Palmer.
----------------------------------------------------------------
Git 2.8 Release Notes (draft)
=============================
Backward compatibility note
---------------------------
The rsync:// transport has been removed.
Updates since v2.7
------------------
UI, Workflows & Features
* It turns out "git clone" over rsync transport has been broken when
the source repository has packed references for a long time, and
nobody noticed nor complained about it.
* "branch --delete" has "branch -d" but "push --delete" does not.
* "git blame" learned to produce the progress eye-candy when it takes
too much time before emitting the first line of the result.
* "git grep" can now be configured (or told from the command line)
how many threads to use when searching in the working tree files.
* 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).
* "git grep" by default does not fall back to its "--no-index"
behaviour outside a directory under Git's control (otherwise the
user may by mistake end up running a huge recursive search); with a
new configuration (set in $HOME/.gitconfig--by definition this
cannot be set in the config file per project), this safety can be
disabled.
* "git pull --rebase" has been extended to allow invoking
"rebase -i".
* "git p4" learned to cope with the type of a file getting changed.
* "git format-patch" learned to notice format.outputDirectory
configuration variable. This allows "-o <dir>" option to be
omitted on the command line if you always use the same directory in
your workflow.
* "interpret-trailers" has been taught to optionally update a file in
place, instead of always writing the result to the standard output.
* Many commands that read files that are expected to contain text
that is generated (or can be edited) by the end user to control
their behaviour (e.g. "git grep -f <filename>") have been updated
to be more tolerant to lines that are terminated with CRLF (they
used to treat such a line to contain payload that ends with CR,
which is usually not what the users expect).
* "git notes merge" used to limit the source of the merged notes tree
to somewhere under refs/notes/ hierarchy, which was too limiting
when inventing a workflow to exchange notes with remote
repositories using remote-tracking notes trees (located in e.g.
refs/remote-notes/ or somesuch).
* "git ls-files" learned a new "--eol" option to help diagnose
end-of-line problems.
* "ls-remote" learned an option to show which branch the remote
repository advertises as its primary by pointing its HEAD at.
* New http.proxyAuthMethod configuration variable can be used to
specify what authentication method to use, as a way to work around
proxies that do not give error response expected by libcurl when
CURLAUTH_ANY is used. Also, the codepath for proxy authentication
has been taught to use credential API to store the authentication
material in user's keyrings.
* Update the untracked cache subsystem and change its primary UI from
"git update-index" to "git config".
* There were a few "now I am doing this thing" progress messages in
the TCP connection code that can be triggered by setting a verbose
option internally in the code, but "git fetch -v" and friends never
passed the verbose option down to that codepath.
* Clean/smudge filters defined in a configuration file of lower
precedence can now be overridden to be a pass-through no-op by
setting the variable to an empty string.
* A new "<branch>^{/!-<pattern>}" notation can be used to name a
commit that is reachable from <branch> that does not match the
given <pattern>.
* The "user.useConfigOnly" configuration variable can be used to
force the user to always set user.email & user.name configuration
variables, serving as a reminder for those who work on multiple
projects and do not want to put these in their $HOME/.gitconfig.
* "git fetch" and friends that make network connections can now be
told to only use ipv4 (or ipv6).
* Some authentication methods do not need username or password, but
libcurl needs some hint that it needs to perform authentication.
Supplying an empty username and password string is a valid way to
do so, but you can set the http.[<url>.]emptyAuth configuration
variable to achieve the same, if you find it cleaner.
* You can now set http.[<url>.]pinnedpubkey to specify the pinned
public key when building with recent enough versions of libcURL.
* The configuration system has been taught to phrase where it found a
bad configuration variable in a better way in its error messages.
"git config" learnt a new "--show-origin" option to indicate where
the values come from.
* The "credential-cache" daemon process used to run in whatever
directory it happened to start in, but this made umount(2)ing the
filesystem that houses the repository harder; now the process
chdir()s to the directory that house its own socket on startup.
* When "git submodule update" did not result in fetching the commit
object in the submodule that is referenced by the superproject, the
command learned to retry another fetch, specifically asking for
that commit that may not be connected to the refs it usually
fetches.
* "git merge-recursive" learned "--no-renames" option to disable its
rename detection logic.
* Across the transition at around Git version 2.0, the user used to
get a pretty loud warning when running "git push" without setting
push.default configuration variable. We no longer warn, given that
the transition is over long time ago.
* README has been renamed to README.md and its contents got tweaked
slightly to make it easier on the eyes.
Performance, Internal Implementation, Development Support etc.
* Add a framework to spawn a group of processes in parallel, and use
it to run "git fetch --recurse-submodules" in parallel.
* A slight update to the Makefile to mark "phoney" targets
as such correctly.
* In-core storage of the reverse index for .pack files (which lets
you go from a pack offset to an object name) has been streamlined.
* d95138e6 (setup: set env $GIT_WORK_TREE when work tree is set, like
$GIT_DIR, 2015-06-26) attempted to work around a glitch in alias
handling by overwriting GIT_WORK_TREE environment variable to
affect subprocesses when set_git_work_tree() gets called, which
resulted in a rather unpleasant regression to "clone" and "init".
Try to address the same issue by always restoring the environment
and respawning the real underlying command when handling alias.
* The low-level code that is used to create symbolic references has
been updated to share more code with the code that deals with
normal references.
* strbuf_getline() and friends have been redefined to make it easier
to identify which callsite of (new) strbuf_getline_lf() should
allow and silently ignore carriage-return at the end of the line to
help users on DOSsy systems.
* "git shortlog" used to accumulate various pieces of information
regardless of what was asked to be shown in the final output. It
has been optimized by noticing what need not to be collected
(e.g. there is no need to collect the log messages when showing
only the number of changes).
* "git checkout $branch" (and other operations that share the same
underlying machinery) has been optimized.
* Automated tests in Travis CI environment has been optimized by
persisting runtime statistics of previous "prove" run, executing
tests that take longer before other ones; this reduces the total
wallclock time.
* Test scripts have been updated to remove assumptions that are not
portable between Git for POSIX and Git for Windows, or to skip ones
with expectations that are not satisfiable on Git for Windows.
* Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in test-path-utils that are already safe has
been rewritten to avoid false wanings.
* Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in "git rerere" that are already safe has been
rewritten to avoid false wanings.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat. The API has been removed and its users have been
rewritten to simplify the overall code complexity.
* Help those who debug http(s) part of the system.
(merge 0054045 sp/remote-curl-ssl-strerror later to maint).
* The internal API to interact with "remote.*" configuration
variables has been streamlined.
* The ref-filter's format-parsing code has been refactored, in
preparation for "branch --format" and friends.
* Traditionally, the tests that try commands that work on the
contents in the working tree were named with "worktree" in their
filenames, but with the recent addition of "git worktree"
subcommand, whose tests are also named similarly, it has become
harder to tell them apart. The traditional tests have been renamed
to use "work-tree" instead in an attempt to differentiate them.
(merge 5549029 mg/work-tree-tests later to maint).
* Many codepaths forget to check return value from git_config_set();
the function is made to die() to make sure we do not proceed when
setting a configuration variable failed.
(merge 3d18064 ps/config-error later to maint).
* Handling of errors while writing into our internal asynchronous
process has been made more robust, which reduces flakiness in our
tests.
(merge 43f3afc jk/epipe-in-async later to maint).
* There is a new DEVELOPER knob that enables many compiler warning
options in the Makefile.
* The way the test scripts configure the Apache web server has been
updated to work also for Apache 2.4 running on RedHat derived
distros.
* Out of maintenance gcc on OSX 10.6 fails to compile the code in
'master'; work it around by using clang by default on the platform.
Also contains various documentation updates and code clean-ups.
Fixes since v2.7
----------------
Unless otherwise noted, all the fixes since v2.7 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* An earlier change in 2.5.x-era broke users' hooks and aliases by
exporting GIT_WORK_TREE to point at the root of the working tree,
interfering when they tried to use a different working tree without
setting GIT_WORK_TREE environment themselves.
* The "exclude_list" structure has the usual "alloc, nr" pair of
fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
array.
* Paths that have been told the index about with "add -N" are not
quite yet in the index, but a few commands behaved as if they
already are in a harmful way.
* "git send-email" was confused by escaped quotes stored in the alias
files saved by "mutt", which has been corrected.
* A few unportable C construct have been spotted by clang compiler
and have been fixed.
* The documentation has been updated to hint the connection between
the '--signoff' option and DCO.
* "git reflog" incorrectly assumed that all objects that used to be
at the tip of a ref must be commits, which caused it to segfault.
* The ignore mechanism saw a few regressions around untracked file
listing and sparse checkout selection areas in 2.7.0; the change
that is responsible for the regression has been reverted.
* Another try to improve the ignore mechanism that lets you say "this
is excluded" and then later say "oh, no, this part (that is a
subset of the previous part) is not excluded". This has still a
known limitation, though.
* Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
(e.g. COMMIT_EDITMSG) that is meant to be left after the command is
done. This however did not work well if the repository is set to
be shared with core.sharedRepository and the umask of the previous
user is tighter. They have been made to work better by calling
unlink(2) and retrying after fopen(3) fails with EPERM.
* Asking gitweb for a nonexistent commit left a warning in the server
log.
Somebody may want to follow this up with an additional test, perhaps?
IIRC, we do test that no Perl warnings are given to the server log,
so this should have been caught if our test coverage were good.
* "git rebase", unlike all other callers of "gc --auto", did not
ignore the exit code from "gc --auto".
* Many codepaths that run "gc --auto" before exiting kept packfiles
mapped and left the file descriptors to them open, which was not
friendly to systems that cannot remove files that are open. They
now close the packs before doing so.
* A recent optimization to filter-branch in v2.7.0 introduced a
regression when --prune-empty filter is used, which has been
corrected.
* The description for SANITY prerequisite the test suite uses has
been clarified both in the comment and in the implementation.
* "git tag" started listing a tag "foo" as "tags/foo" when a branch
named "foo" exists in the same repository; remove this unnecessary
disambiguation, which is a regression introduced in v2.7.0.
* The way "git svn" uses auth parameter was broken by Subversion
1.9.0 and later.
* The "split" subcommand of "git subtree" (in contrib/) incorrectly
skipped merges when it shouldn't, which was corrected.
* A few options of "git diff" did not work well when the command was
run from a subdirectory.
* The command line completion learned a handful of additional options
and command specific syntax.
* dirname() emulation has been added, as Msys2 lacks it.
* The underlying machinery used by "ls-files -o" and other commands
have been taught not to create empty submodule ref cache for a
directory that is not a submodule. This removes a ton of wasted
CPU cycles.
* "git worktree" had a broken code that attempted to auto-fix
possible inconsistency that results from end-users moving a
worktree to different places without telling Git (the original
repository needs to maintain backpointers to its worktrees, but
"mv" run by end-users who are not familiar with that fact will
obviously not adjust them), which actually made things worse
when triggered.
* The low-level merge machinery has been taught to use CRLF line
termination when inserting conflict markers to merged contents that
are themselves CRLF line-terminated.
* "git push --force-with-lease" has been taught to report if the push
needed to force (or fast-forwarded).
* The emulated "yes" command used in our test scripts has been
tweaked not to spend too much time generating unnecessary output
that is not used, to help those who test on Windows where it would
not stop until it fills the pipe buffer due to lack of SIGPIPE.
* The documentation for "git clean" has been corrected; it mentioned
that .git/modules/* are removed by giving two "-f", which has never
been the case.
* The vimdiff backend for "git mergetool" has been tweaked to arrange
and number buffers in the order that would match the expectation of
majority of people who read left to right, then top down and assign
buffers 1 2 3 4 "mentally" to local base remote merge windows based
on that order.
* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
rev, i.e. the object named by the the pathname with wildcard
characters in a tree object.
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
* "git rev-parse --git-common-dir" used in the worktree feature
misbehaved when run from a subdirectory.
(merge 17f1365 nd/git-common-dir-fix later to maint).
* "git worktree add -B <branchname>" did not work.
* The "v(iew)" subcommand of the interactive "git am -i" command was
broken in 2.6.0 timeframe when the command was rewritten in C.
(merge 708b8cc jc/am-i-v-fix later to maint).
* "git merge-tree" used to mishandle "both sides added" conflict with
its own "create a fake ancestor file that has the common parts of
what both sides have added and do a 3-way merge" logic; this has
been updated to use the usual "3-way merge with an empty blob as
the fake common ancestor file" approach used in the rest of the
system.
(merge 907681e jk/no-diff-emit-common later to maint).
* The memory ownership rule of fill_textconv() API, which was a bit
tricky, has been documented a bit better.
(merge a64e6a4 jk/more-comments-on-textconv later to maint).
* Update various codepaths to avoid manually-counted malloc().
(merge 08c95df jk/tighten-alloc later to maint).
* The documentation did not clearly state that the 'simple' mode is
now the default for "git push" when push.default configuration is
not set.
(merge f6b1fb3 mm/push-simple-doc later to maint).
* Recent versions of GNU grep are pickier when their input contains
arbitrary binary data, which some of our tests uses. Rewrite the
tests to sidestep the problem.
(merge 3b1442d jk/grep-binary-workaround-in-test later to maint).
* A helper function "git submodule" uses since v2.7.0 to list the
modules that match the pathspec argument given to its subcommands
(e.g. "submodule add <repo> <path>") has been fixed.
(merge 2b56bb7 sb/submodule-module-list-fix later to maint).
* "git config section.var value" to set a value in per-repository
configuration file failed when it was run outside any repository,
but didn't say the reason correctly.
(merge 638fa62 js/config-set-in-non-repository later to maint).
* The code to read the pack data using the offsets stored in the pack
idx file has been made more carefully check the validity of the
data in the idx.
(merge 7465feb jk/pack-idx-corruption-safety later to maint).
* Other minor clean-ups and documentation updates
(merge f459823 ak/extract-argv0-last-dir-sep later to maint).
(merge 63ca1c0 ak/git-strip-extension-from-dashed-command later to maint).
(merge 4867f11 ps/plug-xdl-merge-leak later to maint).
(merge 4938686 dt/initial-ref-xn-commit-doc later to maint).
(merge 9537f21 ma/update-hooks-sample-typofix later to maint).
----------------------------------------------------------------
Changes since v2.7.0 are as follows:
Alex Henrie (1):
stripspace: call U+0020 a "space" instead of a "blank"
Alexander Kuleshov (3):
format-patch: introduce format.outputDirectory configuration
exec_cmd.c: use find_last_dir_sep() for code simplification
git.c: simplify stripping extension of a file in handle_builtin()
Andrew Wheeler (1):
push: fix ref status reporting for --force-with-lease
Changwoo Ryu (1):
l10n: ko.po: Add Korean translation
Christian Couder (11):
dir: free untracked cache when removing it
update-index: use enum for untracked cache options
update-index: add --test-untracked-cache
update-index: add untracked cache notifications
update-index: move 'uc' var declaration
dir: add {new,add}_untracked_cache()
dir: add remove_untracked_cache()
dir: simplify untracked cache "ident" field
config: add core.untrackedCache
test-dump-untracked-cache: don't modify the untracked cache
t7063: add tests for core.untrackedCache
Christoph Egger (1):
http: implement public key pinning
Dan Aloni (1):
ident: add user.useConfigOnly boolean for when ident shouldn't be guessed
Dave Ware (1):
contrib/subtree: fix "subtree split" skipped-merge bug
David A. Greene (1):
contrib/subtree: Make testing easier
David A. Wheeler (1):
Expand documentation describing --signoff
David Turner (3):
do_compare_entry: use already-computed path
unpack-trees: fix accidentally quadratic behavior
refs: document transaction semantics
Dennis Kaarsemaker (1):
reflog-walk: don't segfault on non-commit sha1's in the reflog
Dickson Wong (1):
mergetool: reorder vim/gvim buffers in three-way diffs
Edmundo Carmona Antoranz (1):
blame: add support for --[no-]progress option
Elia Pinto (92):
Makefile: add missing phony target
contrib/examples/git-commit.sh: use the $( ... ) construct for command substitution
contrib/examples/git-fetch.sh: use the $( ... ) construct for command substitution
contrib/examples/git-merge.sh: use the $( ... ) construct for command substitution
contrib/examples/git-repack.sh: use the $( ... ) construct for command substitution
contrib/examples/git-revert.sh: use the $( ... ) construct for command substitution
contrib/thunderbird-patch-inline/appp.sh: use the $( ... ) construct for command substitution
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
t/lib-httpd.sh: use the $( ... ) construct for command substitution
test-sha1.sh: use the $( ... ) construct for command substitution
unimplemented.sh: use the $( ... ) construct for command substitution
t/t1100-commit-tree-options.sh: use the $( ... ) construct for command substitution
t/t1401-symbolic-ref.sh: use the $( ... ) construct for command substitution
t/t1410-reflog.sh: use the $( ... ) construct for command substitution
t/t1511-rev-parse-caret.sh: use the $( ... ) construct for command substitution
t/t1512-rev-parse-disambiguation.sh: use the $( ... ) construct for command substitution
t/t1700-split-index.sh: use the $( ... ) construct for command substitution
t/t2025-worktree-add.sh: use the $( ... ) construct for command substitution
t/t2102-update-index-symlinks.sh: use the $( ... ) construct for command substitution
t/t3030-merge-recursive.sh: use the $( ... ) construct for command substitution
t/t3100-ls-tree-restrict.sh: use the $( ... ) construct for command substitution
t/t3101-ls-tree-dirname.sh: use the $( ... ) construct for command substitution
t/t3210-pack-refs.sh: use the $( ... ) construct for command substitution
t/t3403-rebase-skip.sh: use the $( ... ) construct for command substitution
t/t3511-cherry-pick-x.sh: use the $( ... ) construct for command substitution
t/t3600-rm.sh: use the $( ... ) construct for command substitution
t/t3700-add.sh: use the $( ... ) construct for command substitution
t/t5100-mailinfo.sh: use the $( ... ) construct for command substitution
t/t5300-pack-object.sh: use the $( ... ) construct for command substitution
t/t5301-sliding-window.sh: use the $( ... ) construct for command substitution
t/t5302-pack-index.sh: use the $( ... ) construct for command substitution
t/t5303-pack-corruption-resilience.sh: use the $( ... ) construct for command substitution
t/t5304-prune.sh: use the $( ... ) construct for command substitution
t/t5305-include-tag.sh: use the $( ... ) construct for command substitution
t/t5500-fetch-pack.sh: use the $( ... ) construct for command substitution
t/t5505-remote.sh: use the $( ... ) construct for command substitution
t/t5506-remote-groups.sh: use the $( ... ) construct for command substitution
t/t5510-fetch.sh: use the $( ... ) construct for command substitution
t/t5515-fetch-merge-logic.sh: use the $( ... ) construct for command substitution
t/t5516-fetch-push.sh: use the $( ... ) construct for command substitution
t/t5517-push-mirror.sh: use the $( ... ) construct for command substitution
t/t5522-pull-symlink.sh: use the $( ... ) construct for command substitution
t/t5530-upload-pack-error.sh: use the $( ... ) construct for command substitution
t/t5532-fetch-proxy.sh: use the $( ... ) construct for command substitution
t/t5537-fetch-shallow.sh: use the $( ... ) construct for command substitution
t/t5538-push-shallow.sh: use the $( ... ) construct for command substitution
t/t5550-http-fetch-dumb.sh: use the $( ... ) construct for command substitution
t/t5570-git-daemon.sh: use the $( ... ) construct for command substitution
t/t5601-clone.sh: use the $( ... ) construct for command substitution
t/t5700-clone-reference.sh: use the $( ... ) construct for command substitution
t/t5710-info-alternate.sh: use the $( ... ) construct for command substitution
t/t5900-repo-selection.sh: use the $( ... ) construct for command substitution
t/t6001-rev-list-graft.sh: use the $( ... ) construct for command substitution
t/t6002-rev-list-bisect.sh: use the $( ... ) construct for command substitution
t/t6015-rev-list-show-all-parents.sh: use the $( ... ) construct for command substitution
t/t6032-merge-large-rename.sh: use the $( ... ) construct for command substitution
t/t6132-pathspec-exclude.sh: use the $( ... ) construct for command substitution
t/t7001-mv.sh: use the $( ... ) construct for command substitution
t/t7003-filter-branch.sh: use the $( ... ) construct for command substitution
t/t7004-tag.sh: use the $( ... ) construct for command substitution
t/t7006-pager.sh: use the $( ... ) construct for command substitution
t/t7103-reset-bare.sh: use the $( ... ) construct for command substitution
t/t7406-submodule-update.sh: use the $( ... ) construct for command substitution
t/t7408-submodule-reference.sh: use the $( ... ) construct for command substitution
t/t7504-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7505-prepare-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7602-merge-octopus-many.sh: use the $( ... ) construct for command substitution
t/t7700-repack.sh: use the $( ... ) construct for command substitution
t/t8003-blame-corner-cases.sh: use the $( ... ) construct for command substitution
t/t9001-send-email.sh: use the $( ... ) construct for command substitution
t9100-git-svn-basic.sh: use the $( ... ) construct for command substitution
t9101-git-svn-props.sh: use the $( ... ) construct for command substitution
t9104-git-svn-follow-parent.sh: use the $( ... ) construct for command substitution
t9105-git-svn-commit-diff.sh: use the $( ... ) construct for command substitution
t9107-git-svn-migrate.sh: use the $( ... ) construct for command substitution
t9108-git-svn-glob.sh: use the $( ... ) construct for command substitution
t9109-git-svn-multi-glob.sh: use the $( ... ) construct for command substitution
t9110-git-svn-use-svm-props.sh: use the $( ... ) construct for command substitution
t9114-git-svn-dcommit-merge.sh: use the $( ... ) construct for command substitution
t9118-git-svn-funky-branch-names.sh: use the $( ... ) construct for command substitution
t9119-git-svn-info.sh: use the $( ... ) construct for command substitution
t9129-git-svn-i18n-commitencoding.sh: use the $( ... ) construct for command substitution
t9130-git-svn-authors-file.sh: use the $( ... ) construct for command substitution
t9132-git-svn-broken-symlink.sh: use the $( ... ) construct for command substitution
t9137-git-svn-dcommit-clobber-series.sh: use the $( ... ) construct for command substitution
t9138-git-svn-authors-prog.sh: use the $( ... ) construct for command substitution
t9145-git-svn-master-branch.sh: use the $( ... ) construct for command substitution
t9150-svk-mergetickets.sh: use the $( ... ) construct for command substitution
t9300-fast-import.sh: use the $( ... ) construct for command substitution
t9350-fast-export.sh: use the $( ... ) construct for command substitution
t9501-gitweb-standalone-http-status.sh: use the $( ... ) construct for command substitution
t9901-git-web--browse.sh: use the $( ... ) construct for command substitution
Eric Wong (8):
git-send-email: do not double-escape quotes from mutt
for-each-ref: document `creatordate` and `creator` fields
git-svn: fix auth parameter handling on SVN 1.9.0+
pass transport verbosity down to git_connect
connect & http: support -4 and -6 switches for remote operations
t5570: add tests for "git {clone,fetch,pull} -v"
git-svn: hoist out utf8 prep from t9129 to lib-git-svn
tests: remove no-op full-svn-test target
Felipe Gonçalves Assis (7):
merge-recursive: option to disable renames
merge-recursive: more consistent interface
merge-strategies.txt: fix typo
merge-recursive: find-renames resets threshold
t3034: add rename threshold tests
t3034: test option to disable renames
t3034: test deprecated interface
GyuYong Jung (1):
git-cvsserver.perl: fix typo
Jacob Keller (1):
notes: allow merging from arbitrary references
Jeff King (79):
pack-revindex: drop hash table
pack-revindex: store entries directly in packed_git
create_symref: modernize variable names
create_symref: use existing ref-lock code
create_symref: write reflog while holding lock
run-command: don't warn on SIGPIPE deaths
avoid shifting signed integers 31 bits
bswap: add NO_UNALIGNED_LOADS define
checkout,clone: check return value of create_symref
lock_ref_sha1_basic: always fill old_oid while holding lock
lock_ref_sha1_basic: handle REF_NODEREF with invalid refs
rebase: ignore failures from "gc --auto"
shortlog: match both "Author:" and "author" on stdin
shortlog: use strbufs to read from stdin
shortlog: replace hand-parsing of author with pretty-printer
shortlog: optimize "--summary" mode
shortlog: optimize out useless "<none>" normalization
shortlog: optimize out useless string list
shortlog: don't warn on empty author
filter-branch: resolve $commit^{tree} in no-index case
clean: make is_git_repository a public function
resolve_gitlink_ref: ignore non-repository paths
t6300: use test_atom for some un-modern tests
tag: do not show ambiguous tag names as "tags/foo"
transport: drop support for git-over-rsync
give "nbuf" strbuf a more meaningful name
checkout-index: simplify "-z" option parsing
checkout-index: handle "--no-prefix" option
checkout-index: handle "--no-index" option
checkout-index: disallow "--no-stage" option
apply, ls-files: simplify "-z" parsing
fmt_ident: refactor strictness checks
test-path-utils: use xsnprintf in favor of strcpy
rerere: replace strcpy with xsnprintf
checkout: reorder check_filename conditional
check_filename: tighten dwim-wildcard ambiguity
get_sha1: don't die() on bogus search strings
http-push: stop using name_path
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
git-config: better document default behavior for `--include`
ref-filter: use string_list_split over strbuf_split
reflog_expire_cfg: NUL-terminate pattern field
add helpers for detecting size_t overflow
tree-diff: catch integer overflow in combine_diff_path allocation
diff: clarify textconv interface
harden REALLOC_ARRAY and xcalloc against size_t overflow
add helpers for allocating flex-array structs
argv-array: add detach function
convert manual allocations to argv_array
convert trivial cases to ALLOC_ARRAY
use xmallocz to avoid size arithmetic
convert trivial cases to FLEX_ARRAY macros
use st_add and st_mult for allocation size computation
prepare_{git,shell}_cmd: use argv_array
write_untracked_extension: use FLEX_ALLOC helper
fast-import: simplify allocation in start_packfile
fetch-pack: simplify add_sought_entry
test-path-utils: fix normalize_path_copy output buffer size
sequencer: simplify memory allocation of get_message
git-compat-util: drop mempcpy compat code
transport_anonymize_url: use xstrfmt
diff_populate_gitlink: use a strbuf
convert ewah/bitmap code to use xmalloc
ewah: convert to REALLOC_ARRAY, etc
merge-one-file: use empty blob for add/add base
merge-tree: drop generate_common strategy
xdiff: drop XDL_EMIT_COMMON
t5313: test bounds-checks of corrupted/malicious pack/idx files
nth_packed_object_offset: bounds-check extended offset
use_pack: handle signed off_t overflow
write_or_die: handle EPIPE in async threads
fetch-pack: ignore SIGPIPE in sideband demuxer
test_must_fail: report number of unexpected signal
t5504: handle expected output from SIGPIPE death
compat/mingw: brown paper bag fix for 50a6c8e
t9700: fix test for perl older than 5.14
Jiang Xin (1):
http: honor no_http env variable to bypass proxy
Johannes Schindelin (47):
commit: allow editing the commit message even in shared repos
Handle more file writes correctly in shared repos
Refactor skipping DOS drive prefixes
compat/basename: make basename() conform to POSIX
compat/basename.c: provide a dirname() compatibility function
t0060: verify that basename() and dirname() work as expected
config.mak.uname: support MSys2
config.mak.uname: supporting 64-bit MSys2
fetch: release pack files before garbage-collecting
am: release pack files before garbage-collecting
merge: release pack files before garbage-collecting
receive-pack: release pack files before garbage-collecting
pull: allow interactive rebase with --rebase=interactive
remote: handle the config setting branch.*.rebase=interactive
completion: add missing branch.*.rebase values
nedmalloc: allow compiling with MSys2's compiler
compat/mingw: support MSys2-based MinGW build
compat/winansi: support compiling with MSys2
t0060: loosen overly strict expectations
mingw: avoid redefining S_* constants
mingw: avoid warnings when casting HANDLEs to int
mingw: squash another warning about a cast
mingw: uglify (a, 0) definitions to shut up warnings
mingw: let's use gettext with MSYS2
mingw: do not trust MSYS2's MinGW gettext.sh
Git.pm: stop assuming that absolute paths start with a slash
mingw: prepare the TMPDIR environment variable for shell scripts
mingw: let lstat() fail with errno == ENOTDIR when appropriate
merge-file: let conflict markers match end-of-line style of the context
merge-file: ensure that conflict sections match eol style
mingw: fix t5601-clone.sh
mingw: accomodate t0060-path-utils for MSYS2
mingw: disable mkfifo-based tests
tests: turn off git-daemon tests if FIFOs are not available
mingw: skip test in t1508 that fails due to path conversion
mingw: fix t9700's assumption about directory separators
mingw: work around pwd issues in the tests
mingw: mark t9100's test cases with appropriate prereqs
mingw: avoid illegal filename in t9118
mingw: handle the missing POSIXPERM prereq in t9124
mingw: skip a test in t9130 that cannot pass on Windows
mingw: do not bother to test funny file names
test-lib: limit the output of the yes utility
gitignore: ignore generated test-fake-ssh executable
t5505: 'remote add x y' should work when url.y.insteadOf = x
git config: report when trying to modify a non-existing repo config
Mark win32's pthread_exit() as NORETURN
Johannes Sixt (3):
t/t5100: no need to use 'echo' command substitutions for globbing
mingw: avoid linking to the C library's isalpha()
t0001: fix GIT_* environment variable check under --valgrind
John Keeping (3):
completion: add missing git-rebase options
t8005: avoid grep on non-ASCII data
t9200: avoid grep on non-ASCII data
Jon Griffiths (3):
credential-cache--daemon: refactor check_socket_directory
credential-cache--daemon: disallow relative socket path
credential-cache--daemon: change to the socket dir on startup
Jonathan Nieder (1):
submodule.c: write "Fetching submodule <foo>" to stderr
Junio C Hamano (46):
First batch for post 2.7 cycle
strbuf: miniscule style fix
strbuf: make strbuf_getline_crlf() global
strbuf: introduce strbuf_getline_{lf,nul}()
mktree: there are only two possible line terminations
check-attr: there are only two possible line terminations
check-ignore: there are only two possible line terminations
update-index: there are only two possible line terminations
checkout-index: there are only two possible line terminations
strbuf: give strbuf_getline() to the "most text friendly" variant
hash-object: read --stdin-paths with strbuf_getline()
revision: read --stdin with strbuf_getline()
rev-parse: read parseopt spec with strbuf_getline()
ident.c: read /etc/mailname with strbuf_getline()
remote.c: read $GIT_DIR/remotes/* with strbuf_getline()
clone/sha1_file: read info/alternates with strbuf_getline()
transport-helper: read helper response with strbuf_getline()
cat-file: read batch stream with strbuf_getline()
column: read lines with strbuf_getline()
send-pack: read list of refs with strbuf_getline()
grep: read -f file with strbuf_getline()
test-sha1-array: read command stream with strbuf_getline()
test-lib: clarify and tighten SANITY
Second batch for 2.8 cycle
Third batch for 2.8 cycle
git: remove an early return from save_env_before_alias()
git: protect against unbalanced calls to {save,restore}_env()
git: simplify environment save/restore logic
Fourth batch for 2.8.cycle
Getting closer to 2.7.1
restore_env(): free the saved environment variable once we are done
Fifth batch for 2.8 cycle
Git 2.7.1
Sixth batch for the 2.8 cycle
pager: lose a separate argv[]
pager: factor out a helper to prepare a child process to run the pager
am -i: fix "v"iew
Start preparing for 2.7.2
Seventh batch for the 2.8 cycle
Git 2.7.2
Eighth batch for 2.8
Git 2.8-rc0
Git 2.8-rc1
gitignore: document that unignoring a directory unignores everything in it
Git 2.7.3
Git 2.8-rc2
Karsten Blees (1):
mingw: factor out Windows specific environment setup
Karthik Nayak (10):
ref-filter: bump 'used_atom' and related code to the top
ref-filter: introduce struct used_atom
ref-filter: introduce parsing functions for each valid atom
ref-filter: introduce color_atom_parser()
ref-filter: introduce parse_align_position()
ref-filter: introduce align_atom_parser()
ref-filter: align: introduce long-form syntax
ref-filter: introduce remote_ref_atom_parser()
ref-filter: introduce contents_atom_parser()
ref-filter: introduce objectname_atom_parser()
Kazutoshi Satoda (2):
git-svn: enable "svn.pathnameencoding" on dcommit
git-svn: apply "svn.pathnameencoding" before URL encoding
Knut Franke (2):
http: allow selection of proxy authentication method
http: use credential API to handle proxy authentication
Lars Schneider (8):
travis-ci: run previously failed tests first, then slowest to fastest
travis-ci: explicity use container-based infrastructure
convert: treat an empty string for clean/smudge filters as "cat"
t: do not hide Git's exit code in tests using 'nul_to_q'
rename git_config_from_buf to git_config_from_mem
config: add 'origin_type' to config_source struct
config: add '--show-origin' option to print the origin of a config value
add DEVELOPER makefile knob to check for acknowledged warnings
Lars Vogel (1):
git-add doc: do not say working directory when you mean working tree
Martin Amdisen (1):
templates/hooks: fix minor typo in the sample update-hook
Matt McCutchen (1):
Documentation/git-clean.txt: don't mention deletion of .git/modules/*
Matthew Kraai (1):
Documentation: remove unnecessary backslashes
Matthieu Moy (7):
Documentation/git-push: document that 'simple' is the default
README: use markdown syntax
README.md: add hyperlinks on filenames
README.md: move the link to git-scm.com up
README.md: don't call git stupid in the title
README.md: move down historical explanation about the name
push: remove "push.default is unset" warning message
Michael J Gruber (4):
t9100: fix breakage when SHELL_PATH is not /bin/sh
tests: rename work-tree tests to *work-tree*
t/lib-httpd: load mod_unixd
t5510: do not leave changed cwd
Mike Hommey (1):
notes: allow treeish expressions as notes ref
Nguyễn Thái Ngọc Duy (25):
blame: remove obsolete comment
add and use a convenience macro ce_intent_to_add()
Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR"
git.c: make it clear save_env() is for alias handling only
setup.c: re-fix d95138e (setup: set env $GIT_WORK_TREE when ..
git.c: make sure we do not leak GIT_* to alias scripts
grep: make it clear i-t-a entries are ignored
dir.c: clean the entire struct in clear_exclude_list()
Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match"
worktree.c: fix indentation
diff-no-index: do not take a redundant prefix argument
diff: make -O and --output work in subdirectory
worktree: stop supporting moving worktrees manually
rev-parse: take prefix into account in --git-common-dir
dir.c: fix match_pathname()
dir.c: support tracing exclude
dir.c: support marking some patterns already matched
dir.c: don't exclude whole dir prematurely
worktree: fix "add -B"
worktree add -B: do the checkout test before update branch
sha1_file.c: mark strings for translation
builtin/checkout.c: mark strings for translation
builtin/clone.c: mark strings for translation
ref-filter.c: mark strings for translation
trailer.c: mark strings for translation
Pat Thoyts (1):
t0008: avoid absolute path
Patrick Steinhardt (18):
push: add '--delete' flag to synopsis
push: add '-d' as shorthand for '--delete'
config: introduce set_or_die wrappers
branch: report errors in tracking branch setup
branch: die on config error when unsetting upstream
branch: die on config error when editing branch description
submodule: die on config error when linking modules
submodule--helper: die on config error when cloning module
remote: die on config error when setting URL
remote: die on config error when setting/adding branches
remote: die on config error when manipulating remotes
clone: die on config error in cmd_clone
init-db: die on config errors when initializing empty repo
sequencer: die on config error when saving replay opts
compat: die when unable to set core.precomposeunicode
config: rename git_config_set to git_config_set_gently
config: rename git_config_set_or_die to git_config_set
xdiff/xmerge: fix memory leak in xdl_merge
Paul Wagland (2):
completion: complete show-branch "--date-order"
completion: update completion arguments for stash
Rob Mayoff (1):
contrib/subtree: unwrap tag refs
Romain Picard (1):
git-p4.py: add support for filetype change
SZEDER Gábor (2):
t6050-replace: make failing editor test more robust
completion: fix mis-indentation in _git_stash()
Sebastian Schuberth (3):
docs: clarify that passing --depth to git-clone implies --single-branch
docs: say "commits" in the --depth option wording for git-clone
docs: clarify that --depth for git-fetch works with newly initialized repos
Shawn O. Pearce (1):
remote-curl: include curl_errorstr on SSL setup failures
Stefan Beller (10):
xread: poll on non blocking fds
strbuf: add strbuf_read_once to read without blocking
sigchain: add command to pop all common signals
run-command: add an asynchronous parallel child processor
fetch_populated_submodules: use new parallel job processing
submodules: allow parallel fetching, add tests and documentation
submodule helper list: respect correct path prefix
submodule: try harder to fetch needed sha1 by direct fetching sha1
run-command: do not pass child process data into callbacks
Documentation: reword rebase summary
Stephen P. Smith (4):
user-manual: remove temporary branch entry from todo list
glossary: define the term shallow clone
user-manual: add section documenting shallow clones
user-manual: add addition gitweb information
Thomas Ackermann (1):
documentation: fix some typos
Thomas Braun (1):
completion: complete "diff --word-diff-regex="
Thomas Gummerer (11):
t7810: correct --no-index test
builtin/grep: add grep.fallbackToNoIndex config
ls-remote: document --quiet option
ls-remote: document --refs option
ls-remote: fix synopsis
ls-remote: use parse-options api
ls-remote: add support for showing symrefs
remote: use parse_config_key
remote: simplify remote_is_configured()
remote: actually check if remote exits
remote: use remote_is_configured() for add and rename
Tobias Klauser (2):
trailer: allow to write to files other than stdout
interpret-trailers: add option for in-place editing
Torsten Bögershausen (9):
ls-files: add eol diagnostics
t0027: add tests for get_stream_filter()
convert.c: remove unused parameter 'path'
convert.c: remove input_crlf_action()
convert.c: use text_eol_is_crlf()
convert.c: refactor crlf_action
convert.c: simplify text_stat
convert.c: correct attr_action()
config.mak.uname: use clang for Mac OS X 10.6
Victor Leschuk (3):
grep: allow threading even on a single-core machine
grep: slight refactoring to the code that disables threading
grep: add --threads=<num> option and grep.threads configuration
Will Palmer (2):
test for '!' handling in rev-parse's named commits
object name: introduce '^{/!-<negative pattern>}' notation
brian m. carlson (1):
http: add option to try authentication without username
Øyvind A. Holm (1):
gitweb: squelch "uninitialized value" warning
마누엘 (1):
mingw: try to delete target directory before renaming
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.8.0-rc1
@ 2016-03-04 22:31 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-03-04 22:31 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.8.0-rc1 is now available for testing
at the usual places. It is comprised of 453 non-merge commits
since v2.7.0, contributed by 59 people, 19 of which are new faces.
There still is a known regression around "git status" (and "ls-files
-o") relative to v2.7.2, which we may end up resolving by reverting
a topic before v2.8.0 final. We'll see how it goes.
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.8.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.7.0 are as follows.
Welcome to the Git development community!
마누엘, Andrew Wheeler, Changwoo Ryu, Christoph Egger,
Dan Aloni, Dave Ware, David A. Wheeler, Dickson Wong, Felipe
Gonçalves Assis, GyuYong Jung, Jon Griffiths, Kazutoshi Satoda,
Lars Vogel, Martin Amdisen, Matthew Kraai, Paul Wagland, Rob
Mayoff, Romain Picard, and Victor Leschuk.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Kuleshov, Alex Henrie, brian m. carlson, Christian
Couder, David A. Greene, David Turner, Dennis Kaarsemaker,
Edmundo Carmona Antoranz, Elia Pinto, Eric Wong, Jacob Keller,
Jeff King, Johannes Schindelin, Johannes Sixt, John Keeping,
Jonathan Nieder, Junio C Hamano, Karsten Blees, Karthik Nayak,
Knut Franke, Lars Schneider, Matthieu Moy, Matt McCutchen,
Michael J Gruber, Mike Hommey, Nguyễn Thái Ngọc Duy,
Øyvind A. Holm, Patrick Steinhardt, Pat Thoyts, Sebastian
Schuberth, Shawn O. Pearce, Stefan Beller, Stephen P. Smith,
SZEDER Gábor, Thomas Ackermann, Thomas Braun, Thomas Gummerer,
Tobias Klauser, Torsten Bögershausen, and Will Palmer.
----------------------------------------------------------------
Git 2.8 Release Notes (draft)
=============================
Backward compatibility note
---------------------------
The rsync:// transport has been removed.
Updates since v2.7
------------------
UI, Workflows & Features
* It turns out "git clone" over rsync transport has been broken when
the source repository has packed references for a long time, and
nobody noticed nor complained about it.
* "branch --delete" has "branch -d" but "push --delete" does not.
* "git blame" learned to produce the progress eye-candy when it takes
too much time before emitting the first line of the result.
* "git grep" can now be configured (or told from the command line)
how many threads to use when searching in the working tree files.
* 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).
* "git grep" by default does not fall back to its "--no-index"
behaviour outside a directory under Git's control (otherwise the
user may by mistake end up running a huge recursive search); with a
new configuration (set in $HOME/.gitconfig--by definition this
cannot be set in the config file per project), this safety can be
disabled.
* "git pull --rebase" has been extended to allow invoking
"rebase -i".
* "git p4" learned to cope with the type of a file getting changed.
* "git format-patch" learned to notice format.outputDirectory
configuration variable. This allows "-o <dir>" option to be
omitted on the command line if you always use the same directory in
your workflow.
* "interpret-trailers" has been taught to optionally update a file in
place, instead of always writing the result to the standard output.
* Many commands that read files that are expected to contain text
that is generated (or can be edited) by the end user to control
their behaviour (e.g. "git grep -f <filename>") have been updated
to be more tolerant to lines that are terminated with CRLF (they
used to treat such a line to contain payload that ends with CR,
which is usually not what the users expect).
* "git notes merge" used to limit the source of the merged notes tree
to somewhere under refs/notes/ hierarchy, which was too limiting
when inventing a workflow to exchange notes with remote
repositories using remote-tracking notes trees (located in e.g.
refs/remote-notes/ or somesuch).
* "git ls-files" learned a new "--eol" option to help diagnose
end-of-line problems.
* "ls-remote" learned an option to show which branch the remote
repository advertises as its primary by pointing its HEAD at.
* New http.proxyAuthMethod configuration variable can be used to
specify what authentication method to use, as a way to work around
proxies that do not give error response expected by libcurl when
CURLAUTH_ANY is used. Also, the codepath for proxy authentication
has been taught to use credential API to store the authentication
material in user's keyrings.
* Update the untracked cache subsystem and change its primary UI from
"git update-index" to "git config".
* There were a few "now I am doing this thing" progress messages in
the TCP connection code that can be triggered by setting a verbose
option internally in the code, but "git fetch -v" and friends never
passed the verbose option down to that codepath.
* Clean/smudge filters defined in a configuration file of lower
precedence can now be overridden to be a pass-through no-op by
setting the variable to an empty string.
* A new "<branch>^{/!-<pattern>}" notation can be used to name a
commit that is reachable from <branch> that does not match the
given <pattern>.
* The "user.useConfigOnly" configuration variable can be used to
force the user to always set user.email & user.name configuration
variables, serving as a reminder for those who work on multiple
projects and do not want to put these in their $HOME/.gitconfig.
* "git fetch" and friends that make network connections can now be
told to only use ipv4 (or ipv6).
* Some authentication methods do not need username or password, but
libcurl needs some hint that it needs to perform authentication.
Supplying an empty username and password string is a valid way to
do so, but you can set the http.[<url>.]emptyAuth configuration
variable to achieve the same, if you find it cleaner.
* You can now set http.[<url>.]pinnedpubkey to specify the pinned
public key when building with recent enough versions of libcURL.
* The configuration system has been taught to phrase where it found a
bad configuration variable in a better way in its error messages.
"git config" learnt a new "--show-origin" option to indicate where
the values come from.
* The "credential-cache" daemon process used to run in whatever
directory it happened to start in, but this made umount(2)ing the
filesystem that houses the repository harder; now the process
chdir()s to the directory that house its own socket on startup.
* When "git submodule update" did not result in fetching the commit
object in the submodule that is referenced by the superproject, the
command learned to retry another fetch, specifically asking for
that commit that may not be connected to the refs it usually
fetches.
* "git merge-recursive" learned "--no-renames" option to disable its
rename detection logic.
* Across the transition at around Git version 2.0, the user used to
get a pretty loud warning when running "git push" without setting
push.default configuration variable. We no longer warn, given that
the transition is over long time ago.
* README has been renamed to README.md and its contents got tweaked
slightly to make it easier on the eyes.
Performance, Internal Implementation, Development Support etc.
* Add a framework to spawn a group of processes in parallel, and use
it to run "git fetch --recurse-submodules" in parallel.
* A slight update to the Makefile to mark "phoney" targets
as such correctly.
* In-core storage of the reverse index for .pack files (which lets
you go from a pack offset to an object name) has been streamlined.
* d95138e6 (setup: set env $GIT_WORK_TREE when work tree is set, like
$GIT_DIR, 2015-06-26) attempted to work around a glitch in alias
handling by overwriting GIT_WORK_TREE environment variable to
affect subprocesses when set_git_work_tree() gets called, which
resulted in a rather unpleasant regression to "clone" and "init".
Try to address the same issue by always restoring the environment
and respawning the real underlying command when handling alias.
* The low-level code that is used to create symbolic references has
been updated to share more code with the code that deals with
normal references.
* strbuf_getline() and friends have been redefined to make it easier
to identify which callsite of (new) strbuf_getline_lf() should
allow and silently ignore carriage-return at the end of the line to
help users on DOSsy systems.
* "git shortlog" used to accumulate various pieces of information
regardless of what was asked to be shown in the final output. It
has been optimized by noticing what need not to be collected
(e.g. there is no need to collect the log messages when showing
only the number of changes).
* "git checkout $branch" (and other operations that share the same
underlying machinery) has been optimized.
* Automated tests in Travis CI environment has been optimized by
persisting runtime statistics of previous "prove" run, executing
tests that take longer before other ones; this reduces the total
wallclock time.
* Test scripts have been updated to remove assumptions that are not
portable between Git for POSIX and Git for Windows, or to skip ones
with expectations that are not satisfiable on Git for Windows.
* Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in test-path-utils that are already safe has
been rewritten to avoid false wanings.
* Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in "git rerere" that are already safe has been
rewritten to avoid false wanings.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat. The API has been removed and its users have been
rewritten to simplify the overall code complexity.
* Help those who debug http(s) part of the system.
(merge 0054045 sp/remote-curl-ssl-strerror later to maint).
* The internal API to interact with "remote.*" configuration
variables has been streamlined.
* The ref-filter's format-parsing code has been refactored, in
preparation for "branch --format" and friends.
* Traditionally, the tests that try commands that work on the
contents in the working tree were named with "worktree" in their
filenames, but with the recent addition of "git worktree"
subcommand, whose tests are also named similarly, it has become
harder to tell them apart. The traditional tests have been renamed
to use "work-tree" instead in an attempt to differentiate them.
(merge 5549029 mg/work-tree-tests later to maint).
* Many codepaths forget to check return value from git_config_set();
the function is made to die() to make sure we do not proceed when
setting a configuration variable failed.
(merge 3d18064 ps/config-error later to maint).
* Handling of errors while writing into our internal asynchronous
process has been made more robust, which reduces flakiness in our
tests.
(merge 43f3afc jk/epipe-in-async later to maint).
* There is a new DEVELOPER knob that enables many compiler warning
options in the Makefile.
* The way the test scripts configure the Apache web server has been
updated to work also for Apache 2.4 running on RedHat derived
distros.
* Out of maintenance gcc on OSX 10.6 fails to compile the code in
'master'; work it around by using clang by default on the platform.
Also contains various documentation updates and code clean-ups.
Fixes since v2.7
----------------
Unless otherwise noted, all the fixes since v2.7 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* An earlier change in 2.5.x-era broke users' hooks and aliases by
exporting GIT_WORK_TREE to point at the root of the working tree,
interfering when they tried to use a different working tree without
setting GIT_WORK_TREE environment themselves.
* The "exclude_list" structure has the usual "alloc, nr" pair of
fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
array.
* Paths that have been told the index about with "add -N" are not
quite yet in the index, but a few commands behaved as if they
already are in a harmful way.
* "git send-email" was confused by escaped quotes stored in the alias
files saved by "mutt", which has been corrected.
* A few unportable C construct have been spotted by clang compiler
and have been fixed.
* The documentation has been updated to hint the connection between
the '--signoff' option and DCO.
* "git reflog" incorrectly assumed that all objects that used to be
at the tip of a ref must be commits, which caused it to segfault.
* The ignore mechanism saw a few regressions around untracked file
listing and sparse checkout selection areas in 2.7.0; the change
that is responsible for the regression has been reverted.
* Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
(e.g. COMMIT_EDITMSG) that is meant to be left after the command is
done. This however did not work well if the repository is set to
be shared with core.sharedRepository and the umask of the previous
user is tighter. They have been made to work better by calling
unlink(2) and retrying after fopen(3) fails with EPERM.
* Asking gitweb for a nonexistent commit left a warning in the server
log.
Somebody may want to follow this up with an additional test, perhaps?
IIRC, we do test that no Perl warnings are given to the server log,
so this should have been caught if our test coverage were good.
* "git rebase", unlike all other callers of "gc --auto", did not
ignore the exit code from "gc --auto".
* Many codepaths that run "gc --auto" before exiting kept packfiles
mapped and left the file descriptors to them open, which was not
friendly to systems that cannot remove files that are open. They
now close the packs before doing so.
* A recent optimization to filter-branch in v2.7.0 introduced a
regression when --prune-empty filter is used, which has been
corrected.
* The description for SANITY prerequisite the test suite uses has
been clarified both in the comment and in the implementation.
* "git tag" started listing a tag "foo" as "tags/foo" when a branch
named "foo" exists in the same repository; remove this unnecessary
disambiguation, which is a regression introduced in v2.7.0.
* The way "git svn" uses auth parameter was broken by Subversion
1.9.0 and later.
* The "split" subcommand of "git subtree" (in contrib/) incorrectly
skipped merges when it shouldn't, which was corrected.
* A few options of "git diff" did not work well when the command was
run from a subdirectory.
* The command line completion learned a handful of additional options
and command specific syntax.
* dirname() emulation has been added, as Msys2 lacks it.
* The underlying machinery used by "ls-files -o" and other commands
have been taught not to create empty submodule ref cache for a
directory that is not a submodule. This removes a ton of wasted
CPU cycles.
* "git worktree" had a broken code that attempted to auto-fix
possible inconsistency that results from end-users moving a
worktree to different places without telling Git (the original
repository needs to maintain backpointers to its worktrees, but
"mv" run by end-users who are not familiar with that fact will
obviously not adjust them), which actually made things worse
when triggered.
* The low-level merge machinery has been taught to use CRLF line
termination when inserting conflict markers to merged contents that
are themselves CRLF line-terminated.
* "git push --force-with-lease" has been taught to report if the push
needed to force (or fast-forwarded).
* The emulated "yes" command used in our test scripts has been
tweaked not to spend too much time generating unnecessary output
that is not used, to help those who test on Windows where it would
not stop until it fills the pipe buffer due to lack of SIGPIPE.
* The documentation for "git clean" has been corrected; it mentioned
that .git/modules/* are removed by giving two "-f", which has never
been the case.
* The vimdiff backend for "git mergetool" has been tweaked to arrange
and number buffers in the order that would match the expectation of
majority of people who read left to right, then top down and assign
buffers 1 2 3 4 "mentally" to local base remote merge windows based
on that order.
* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
rev, i.e. the object named by the the pathname with wildcard
characters in a tree object.
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
* "git rev-parse --git-common-dir" used in the worktree feature
misbehaved when run from a subdirectory.
(merge 17f1365 nd/git-common-dir-fix later to maint).
* Another try to add support to the ignore mechanism that lets you
say "this is excluded" and then later say "oh, no, this part (that
is a subset of the previous part) is not excluded".
* "git worktree add -B <branchname>" did not work.
* The "v(iew)" subcommand of the interactive "git am -i" command was
broken in 2.6.0 timeframe when the command was rewritten in C.
(merge 708b8cc jc/am-i-v-fix later to maint).
* "git merge-tree" used to mishandle "both sides added" conflict with
its own "create a fake ancestor file that has the common parts of
what both sides have added and do a 3-way merge" logic; this has
been updated to use the usual "3-way merge with an empty blob as
the fake common ancestor file" approach used in the rest of the
system.
(merge 907681e jk/no-diff-emit-common later to maint).
* The memory ownership rule of fill_textconv() API, which was a bit
tricky, has been documented a bit better.
(merge a64e6a4 jk/more-comments-on-textconv later to maint).
* Update various codepaths to avoid manually-counted malloc().
(merge 08c95df jk/tighten-alloc later to maint).
* The documentation did not clearly state that the 'simple' mode is
now the default for "git push" when push.default configuration is
not set.
(merge f6b1fb3 mm/push-simple-doc later to maint).
* Recent versions of GNU grep are pickier when their input contains
arbitrary binary data, which some of our tests uses. Rewrite the
tests to sidestep the problem.
(merge 3b1442d jk/grep-binary-workaround-in-test later to maint).
* A helper function "git submodule" uses since v2.7.0 to list the
modules that match the pathspec argument given to its subcommands
(e.g. "submodule add <repo> <path>") has been fixed.
(merge 2b56bb7 sb/submodule-module-list-fix later to maint).
* "git config section.var value" to set a value in per-repository
configuration file failed when it was run outside any repository,
but didn't say the reason correctly.
(merge 638fa62 js/config-set-in-non-repository later to maint).
* The code to read the pack data using the offsets stored in the pack
idx file has been made more carefully check the validity of the
data in the idx.
(merge 7465feb jk/pack-idx-corruption-safety later to maint).
* Other minor clean-ups and documentation updates
(merge f459823 ak/extract-argv0-last-dir-sep later to maint).
(merge 63ca1c0 ak/git-strip-extension-from-dashed-command later to maint).
(merge 4867f11 ps/plug-xdl-merge-leak later to maint).
(merge 4938686 dt/initial-ref-xn-commit-doc later to maint).
(merge 9537f21 ma/update-hooks-sample-typofix later to maint).
----------------------------------------------------------------
Changes since v2.7.0 are as follows:
Alex Henrie (1):
stripspace: call U+0020 a "space" instead of a "blank"
Alexander Kuleshov (3):
format-patch: introduce format.outputDirectory configuration
exec_cmd.c: use find_last_dir_sep() for code simplification
git.c: simplify stripping extension of a file in handle_builtin()
Andrew Wheeler (1):
push: fix ref status reporting for --force-with-lease
Changwoo Ryu (1):
l10n: ko.po: Add Korean translation
Christian Couder (11):
dir: free untracked cache when removing it
update-index: use enum for untracked cache options
update-index: add --test-untracked-cache
update-index: add untracked cache notifications
update-index: move 'uc' var declaration
dir: add {new,add}_untracked_cache()
dir: add remove_untracked_cache()
dir: simplify untracked cache "ident" field
config: add core.untrackedCache
test-dump-untracked-cache: don't modify the untracked cache
t7063: add tests for core.untrackedCache
Christoph Egger (1):
http: implement public key pinning
Dan Aloni (1):
ident: add user.useConfigOnly boolean for when ident shouldn't be guessed
Dave Ware (1):
contrib/subtree: fix "subtree split" skipped-merge bug
David A. Greene (1):
contrib/subtree: Make testing easier
David A. Wheeler (1):
Expand documentation describing --signoff
David Turner (3):
do_compare_entry: use already-computed path
unpack-trees: fix accidentally quadratic behavior
refs: document transaction semantics
Dennis Kaarsemaker (1):
reflog-walk: don't segfault on non-commit sha1's in the reflog
Dickson Wong (1):
mergetool: reorder vim/gvim buffers in three-way diffs
Edmundo Carmona Antoranz (1):
blame: add support for --[no-]progress option
Elia Pinto (92):
Makefile: add missing phony target
contrib/examples/git-commit.sh: use the $( ... ) construct for command substitution
contrib/examples/git-fetch.sh: use the $( ... ) construct for command substitution
contrib/examples/git-merge.sh: use the $( ... ) construct for command substitution
contrib/examples/git-repack.sh: use the $( ... ) construct for command substitution
contrib/examples/git-revert.sh: use the $( ... ) construct for command substitution
contrib/thunderbird-patch-inline/appp.sh: use the $( ... ) construct for command substitution
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
t/lib-httpd.sh: use the $( ... ) construct for command substitution
test-sha1.sh: use the $( ... ) construct for command substitution
unimplemented.sh: use the $( ... ) construct for command substitution
t/t1100-commit-tree-options.sh: use the $( ... ) construct for command substitution
t/t1401-symbolic-ref.sh: use the $( ... ) construct for command substitution
t/t1410-reflog.sh: use the $( ... ) construct for command substitution
t/t1511-rev-parse-caret.sh: use the $( ... ) construct for command substitution
t/t1512-rev-parse-disambiguation.sh: use the $( ... ) construct for command substitution
t/t1700-split-index.sh: use the $( ... ) construct for command substitution
t/t2025-worktree-add.sh: use the $( ... ) construct for command substitution
t/t2102-update-index-symlinks.sh: use the $( ... ) construct for command substitution
t/t3030-merge-recursive.sh: use the $( ... ) construct for command substitution
t/t3100-ls-tree-restrict.sh: use the $( ... ) construct for command substitution
t/t3101-ls-tree-dirname.sh: use the $( ... ) construct for command substitution
t/t3210-pack-refs.sh: use the $( ... ) construct for command substitution
t/t3403-rebase-skip.sh: use the $( ... ) construct for command substitution
t/t3511-cherry-pick-x.sh: use the $( ... ) construct for command substitution
t/t3600-rm.sh: use the $( ... ) construct for command substitution
t/t3700-add.sh: use the $( ... ) construct for command substitution
t/t5100-mailinfo.sh: use the $( ... ) construct for command substitution
t/t5300-pack-object.sh: use the $( ... ) construct for command substitution
t/t5301-sliding-window.sh: use the $( ... ) construct for command substitution
t/t5302-pack-index.sh: use the $( ... ) construct for command substitution
t/t5303-pack-corruption-resilience.sh: use the $( ... ) construct for command substitution
t/t5304-prune.sh: use the $( ... ) construct for command substitution
t/t5305-include-tag.sh: use the $( ... ) construct for command substitution
t/t5500-fetch-pack.sh: use the $( ... ) construct for command substitution
t/t5505-remote.sh: use the $( ... ) construct for command substitution
t/t5506-remote-groups.sh: use the $( ... ) construct for command substitution
t/t5510-fetch.sh: use the $( ... ) construct for command substitution
t/t5515-fetch-merge-logic.sh: use the $( ... ) construct for command substitution
t/t5516-fetch-push.sh: use the $( ... ) construct for command substitution
t/t5517-push-mirror.sh: use the $( ... ) construct for command substitution
t/t5522-pull-symlink.sh: use the $( ... ) construct for command substitution
t/t5530-upload-pack-error.sh: use the $( ... ) construct for command substitution
t/t5532-fetch-proxy.sh: use the $( ... ) construct for command substitution
t/t5537-fetch-shallow.sh: use the $( ... ) construct for command substitution
t/t5538-push-shallow.sh: use the $( ... ) construct for command substitution
t/t5550-http-fetch-dumb.sh: use the $( ... ) construct for command substitution
t/t5570-git-daemon.sh: use the $( ... ) construct for command substitution
t/t5601-clone.sh: use the $( ... ) construct for command substitution
t/t5700-clone-reference.sh: use the $( ... ) construct for command substitution
t/t5710-info-alternate.sh: use the $( ... ) construct for command substitution
t/t5900-repo-selection.sh: use the $( ... ) construct for command substitution
t/t6001-rev-list-graft.sh: use the $( ... ) construct for command substitution
t/t6002-rev-list-bisect.sh: use the $( ... ) construct for command substitution
t/t6015-rev-list-show-all-parents.sh: use the $( ... ) construct for command substitution
t/t6032-merge-large-rename.sh: use the $( ... ) construct for command substitution
t/t6132-pathspec-exclude.sh: use the $( ... ) construct for command substitution
t/t7001-mv.sh: use the $( ... ) construct for command substitution
t/t7003-filter-branch.sh: use the $( ... ) construct for command substitution
t/t7004-tag.sh: use the $( ... ) construct for command substitution
t/t7006-pager.sh: use the $( ... ) construct for command substitution
t/t7103-reset-bare.sh: use the $( ... ) construct for command substitution
t/t7406-submodule-update.sh: use the $( ... ) construct for command substitution
t/t7408-submodule-reference.sh: use the $( ... ) construct for command substitution
t/t7504-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7505-prepare-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7602-merge-octopus-many.sh: use the $( ... ) construct for command substitution
t/t7700-repack.sh: use the $( ... ) construct for command substitution
t/t8003-blame-corner-cases.sh: use the $( ... ) construct for command substitution
t/t9001-send-email.sh: use the $( ... ) construct for command substitution
t9100-git-svn-basic.sh: use the $( ... ) construct for command substitution
t9101-git-svn-props.sh: use the $( ... ) construct for command substitution
t9104-git-svn-follow-parent.sh: use the $( ... ) construct for command substitution
t9105-git-svn-commit-diff.sh: use the $( ... ) construct for command substitution
t9107-git-svn-migrate.sh: use the $( ... ) construct for command substitution
t9108-git-svn-glob.sh: use the $( ... ) construct for command substitution
t9109-git-svn-multi-glob.sh: use the $( ... ) construct for command substitution
t9110-git-svn-use-svm-props.sh: use the $( ... ) construct for command substitution
t9114-git-svn-dcommit-merge.sh: use the $( ... ) construct for command substitution
t9118-git-svn-funky-branch-names.sh: use the $( ... ) construct for command substitution
t9119-git-svn-info.sh: use the $( ... ) construct for command substitution
t9129-git-svn-i18n-commitencoding.sh: use the $( ... ) construct for command substitution
t9130-git-svn-authors-file.sh: use the $( ... ) construct for command substitution
t9132-git-svn-broken-symlink.sh: use the $( ... ) construct for command substitution
t9137-git-svn-dcommit-clobber-series.sh: use the $( ... ) construct for command substitution
t9138-git-svn-authors-prog.sh: use the $( ... ) construct for command substitution
t9145-git-svn-master-branch.sh: use the $( ... ) construct for command substitution
t9150-svk-mergetickets.sh: use the $( ... ) construct for command substitution
t9300-fast-import.sh: use the $( ... ) construct for command substitution
t9350-fast-export.sh: use the $( ... ) construct for command substitution
t9501-gitweb-standalone-http-status.sh: use the $( ... ) construct for command substitution
t9901-git-web--browse.sh: use the $( ... ) construct for command substitution
Eric Wong (8):
git-send-email: do not double-escape quotes from mutt
for-each-ref: document `creatordate` and `creator` fields
git-svn: fix auth parameter handling on SVN 1.9.0+
pass transport verbosity down to git_connect
connect & http: support -4 and -6 switches for remote operations
t5570: add tests for "git {clone,fetch,pull} -v"
git-svn: hoist out utf8 prep from t9129 to lib-git-svn
tests: remove no-op full-svn-test target
Felipe Gonçalves Assis (7):
merge-recursive: option to disable renames
merge-recursive: more consistent interface
merge-strategies.txt: fix typo
merge-recursive: find-renames resets threshold
t3034: add rename threshold tests
t3034: test option to disable renames
t3034: test deprecated interface
GyuYong Jung (1):
git-cvsserver.perl: fix typo
Jacob Keller (1):
notes: allow merging from arbitrary references
Jeff King (79):
pack-revindex: drop hash table
pack-revindex: store entries directly in packed_git
create_symref: modernize variable names
create_symref: use existing ref-lock code
create_symref: write reflog while holding lock
run-command: don't warn on SIGPIPE deaths
avoid shifting signed integers 31 bits
bswap: add NO_UNALIGNED_LOADS define
checkout,clone: check return value of create_symref
lock_ref_sha1_basic: always fill old_oid while holding lock
lock_ref_sha1_basic: handle REF_NODEREF with invalid refs
rebase: ignore failures from "gc --auto"
shortlog: match both "Author:" and "author" on stdin
shortlog: use strbufs to read from stdin
shortlog: replace hand-parsing of author with pretty-printer
shortlog: optimize "--summary" mode
shortlog: optimize out useless "<none>" normalization
shortlog: optimize out useless string list
shortlog: don't warn on empty author
filter-branch: resolve $commit^{tree} in no-index case
clean: make is_git_repository a public function
resolve_gitlink_ref: ignore non-repository paths
t6300: use test_atom for some un-modern tests
tag: do not show ambiguous tag names as "tags/foo"
transport: drop support for git-over-rsync
give "nbuf" strbuf a more meaningful name
checkout-index: simplify "-z" option parsing
checkout-index: handle "--no-prefix" option
checkout-index: handle "--no-index" option
checkout-index: disallow "--no-stage" option
apply, ls-files: simplify "-z" parsing
fmt_ident: refactor strictness checks
test-path-utils: use xsnprintf in favor of strcpy
rerere: replace strcpy with xsnprintf
checkout: reorder check_filename conditional
check_filename: tighten dwim-wildcard ambiguity
get_sha1: don't die() on bogus search strings
http-push: stop using name_path
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
git-config: better document default behavior for `--include`
ref-filter: use string_list_split over strbuf_split
reflog_expire_cfg: NUL-terminate pattern field
add helpers for detecting size_t overflow
tree-diff: catch integer overflow in combine_diff_path allocation
diff: clarify textconv interface
harden REALLOC_ARRAY and xcalloc against size_t overflow
add helpers for allocating flex-array structs
argv-array: add detach function
convert manual allocations to argv_array
convert trivial cases to ALLOC_ARRAY
use xmallocz to avoid size arithmetic
convert trivial cases to FLEX_ARRAY macros
use st_add and st_mult for allocation size computation
prepare_{git,shell}_cmd: use argv_array
write_untracked_extension: use FLEX_ALLOC helper
fast-import: simplify allocation in start_packfile
fetch-pack: simplify add_sought_entry
test-path-utils: fix normalize_path_copy output buffer size
sequencer: simplify memory allocation of get_message
git-compat-util: drop mempcpy compat code
transport_anonymize_url: use xstrfmt
diff_populate_gitlink: use a strbuf
convert ewah/bitmap code to use xmalloc
ewah: convert to REALLOC_ARRAY, etc
merge-one-file: use empty blob for add/add base
merge-tree: drop generate_common strategy
xdiff: drop XDL_EMIT_COMMON
t5313: test bounds-checks of corrupted/malicious pack/idx files
nth_packed_object_offset: bounds-check extended offset
use_pack: handle signed off_t overflow
write_or_die: handle EPIPE in async threads
fetch-pack: ignore SIGPIPE in sideband demuxer
test_must_fail: report number of unexpected signal
t5504: handle expected output from SIGPIPE death
compat/mingw: brown paper bag fix for 50a6c8e
t9700: fix test for perl older than 5.14
Johannes Schindelin (47):
commit: allow editing the commit message even in shared repos
Handle more file writes correctly in shared repos
Refactor skipping DOS drive prefixes
compat/basename: make basename() conform to POSIX
compat/basename.c: provide a dirname() compatibility function
t0060: verify that basename() and dirname() work as expected
config.mak.uname: support MSys2
config.mak.uname: supporting 64-bit MSys2
fetch: release pack files before garbage-collecting
am: release pack files before garbage-collecting
merge: release pack files before garbage-collecting
receive-pack: release pack files before garbage-collecting
pull: allow interactive rebase with --rebase=interactive
remote: handle the config setting branch.*.rebase=interactive
completion: add missing branch.*.rebase values
nedmalloc: allow compiling with MSys2's compiler
compat/mingw: support MSys2-based MinGW build
compat/winansi: support compiling with MSys2
t0060: loosen overly strict expectations
mingw: avoid redefining S_* constants
mingw: avoid warnings when casting HANDLEs to int
mingw: squash another warning about a cast
mingw: uglify (a, 0) definitions to shut up warnings
mingw: let's use gettext with MSYS2
mingw: do not trust MSYS2's MinGW gettext.sh
Git.pm: stop assuming that absolute paths start with a slash
mingw: prepare the TMPDIR environment variable for shell scripts
mingw: let lstat() fail with errno == ENOTDIR when appropriate
merge-file: let conflict markers match end-of-line style of the context
merge-file: ensure that conflict sections match eol style
mingw: fix t5601-clone.sh
mingw: accomodate t0060-path-utils for MSYS2
mingw: disable mkfifo-based tests
tests: turn off git-daemon tests if FIFOs are not available
mingw: skip test in t1508 that fails due to path conversion
mingw: fix t9700's assumption about directory separators
mingw: work around pwd issues in the tests
mingw: mark t9100's test cases with appropriate prereqs
mingw: avoid illegal filename in t9118
mingw: handle the missing POSIXPERM prereq in t9124
mingw: skip a test in t9130 that cannot pass on Windows
mingw: do not bother to test funny file names
test-lib: limit the output of the yes utility
gitignore: ignore generated test-fake-ssh executable
t5505: 'remote add x y' should work when url.y.insteadOf = x
git config: report when trying to modify a non-existing repo config
Mark win32's pthread_exit() as NORETURN
Johannes Sixt (3):
t/t5100: no need to use 'echo' command substitutions for globbing
mingw: avoid linking to the C library's isalpha()
t0001: fix GIT_* environment variable check under --valgrind
John Keeping (3):
completion: add missing git-rebase options
t8005: avoid grep on non-ASCII data
t9200: avoid grep on non-ASCII data
Jon Griffiths (3):
credential-cache--daemon: refactor check_socket_directory
credential-cache--daemon: disallow relative socket path
credential-cache--daemon: change to the socket dir on startup
Jonathan Nieder (1):
submodule.c: write "Fetching submodule <foo>" to stderr
Junio C Hamano (43):
First batch for post 2.7 cycle
strbuf: miniscule style fix
strbuf: make strbuf_getline_crlf() global
strbuf: introduce strbuf_getline_{lf,nul}()
mktree: there are only two possible line terminations
check-attr: there are only two possible line terminations
check-ignore: there are only two possible line terminations
update-index: there are only two possible line terminations
checkout-index: there are only two possible line terminations
strbuf: give strbuf_getline() to the "most text friendly" variant
hash-object: read --stdin-paths with strbuf_getline()
revision: read --stdin with strbuf_getline()
rev-parse: read parseopt spec with strbuf_getline()
ident.c: read /etc/mailname with strbuf_getline()
remote.c: read $GIT_DIR/remotes/* with strbuf_getline()
clone/sha1_file: read info/alternates with strbuf_getline()
transport-helper: read helper response with strbuf_getline()
cat-file: read batch stream with strbuf_getline()
column: read lines with strbuf_getline()
send-pack: read list of refs with strbuf_getline()
grep: read -f file with strbuf_getline()
test-sha1-array: read command stream with strbuf_getline()
test-lib: clarify and tighten SANITY
Second batch for 2.8 cycle
Third batch for 2.8 cycle
git: remove an early return from save_env_before_alias()
git: protect against unbalanced calls to {save,restore}_env()
git: simplify environment save/restore logic
Fourth batch for 2.8.cycle
Getting closer to 2.7.1
restore_env(): free the saved environment variable once we are done
Fifth batch for 2.8 cycle
Git 2.7.1
Sixth batch for the 2.8 cycle
pager: lose a separate argv[]
pager: factor out a helper to prepare a child process to run the pager
am -i: fix "v"iew
Start preparing for 2.7.2
Seventh batch for the 2.8 cycle
Git 2.7.2
Eighth batch for 2.8
Git 2.8-rc0
Git 2.8-rc1
Karsten Blees (1):
mingw: factor out Windows specific environment setup
Karthik Nayak (10):
ref-filter: bump 'used_atom' and related code to the top
ref-filter: introduce struct used_atom
ref-filter: introduce parsing functions for each valid atom
ref-filter: introduce color_atom_parser()
ref-filter: introduce parse_align_position()
ref-filter: introduce align_atom_parser()
ref-filter: align: introduce long-form syntax
ref-filter: introduce remote_ref_atom_parser()
ref-filter: introduce contents_atom_parser()
ref-filter: introduce objectname_atom_parser()
Kazutoshi Satoda (2):
git-svn: enable "svn.pathnameencoding" on dcommit
git-svn: apply "svn.pathnameencoding" before URL encoding
Knut Franke (2):
http: allow selection of proxy authentication method
http: use credential API to handle proxy authentication
Lars Schneider (8):
travis-ci: run previously failed tests first, then slowest to fastest
travis-ci: explicity use container-based infrastructure
convert: treat an empty string for clean/smudge filters as "cat"
t: do not hide Git's exit code in tests using 'nul_to_q'
rename git_config_from_buf to git_config_from_mem
config: add 'origin_type' to config_source struct
config: add '--show-origin' option to print the origin of a config value
add DEVELOPER makefile knob to check for acknowledged warnings
Lars Vogel (1):
git-add doc: do not say working directory when you mean working tree
Martin Amdisen (1):
templates/hooks: fix minor typo in the sample update-hook
Matt McCutchen (1):
Documentation/git-clean.txt: don't mention deletion of .git/modules/*
Matthew Kraai (1):
Documentation: remove unnecessary backslashes
Matthieu Moy (7):
Documentation/git-push: document that 'simple' is the default
README: use markdown syntax
README.md: add hyperlinks on filenames
README.md: move the link to git-scm.com up
README.md: don't call git stupid in the title
README.md: move down historical explanation about the name
push: remove "push.default is unset" warning message
Michael J Gruber (3):
t9100: fix breakage when SHELL_PATH is not /bin/sh
tests: rename work-tree tests to *work-tree*
t/lib-httpd: load mod_unixd
Mike Hommey (1):
notes: allow treeish expressions as notes ref
Nguyễn Thái Ngọc Duy (25):
blame: remove obsolete comment
add and use a convenience macro ce_intent_to_add()
Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR"
git.c: make it clear save_env() is for alias handling only
setup.c: re-fix d95138e (setup: set env $GIT_WORK_TREE when ..
git.c: make sure we do not leak GIT_* to alias scripts
grep: make it clear i-t-a entries are ignored
dir.c: clean the entire struct in clear_exclude_list()
Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match"
worktree.c: fix indentation
diff-no-index: do not take a redundant prefix argument
diff: make -O and --output work in subdirectory
worktree: stop supporting moving worktrees manually
rev-parse: take prefix into account in --git-common-dir
dir.c: fix match_pathname()
dir.c: support tracing exclude
dir.c: support marking some patterns already matched
dir.c: don't exclude whole dir prematurely
worktree: fix "add -B"
worktree add -B: do the checkout test before update branch
sha1_file.c: mark strings for translation
builtin/checkout.c: mark strings for translation
builtin/clone.c: mark strings for translation
ref-filter.c: mark strings for translation
trailer.c: mark strings for translation
Pat Thoyts (1):
t0008: avoid absolute path
Patrick Steinhardt (18):
push: add '--delete' flag to synopsis
push: add '-d' as shorthand for '--delete'
config: introduce set_or_die wrappers
branch: report errors in tracking branch setup
branch: die on config error when unsetting upstream
branch: die on config error when editing branch description
submodule: die on config error when linking modules
submodule--helper: die on config error when cloning module
remote: die on config error when setting URL
remote: die on config error when setting/adding branches
remote: die on config error when manipulating remotes
clone: die on config error in cmd_clone
init-db: die on config errors when initializing empty repo
sequencer: die on config error when saving replay opts
compat: die when unable to set core.precomposeunicode
config: rename git_config_set to git_config_set_gently
config: rename git_config_set_or_die to git_config_set
xdiff/xmerge: fix memory leak in xdl_merge
Paul Wagland (2):
completion: complete show-branch "--date-order"
completion: update completion arguments for stash
Rob Mayoff (1):
contrib/subtree: unwrap tag refs
Romain Picard (1):
git-p4.py: add support for filetype change
SZEDER Gábor (2):
t6050-replace: make failing editor test more robust
completion: fix mis-indentation in _git_stash()
Sebastian Schuberth (3):
docs: clarify that passing --depth to git-clone implies --single-branch
docs: say "commits" in the --depth option wording for git-clone
docs: clarify that --depth for git-fetch works with newly initialized repos
Shawn O. Pearce (1):
remote-curl: include curl_errorstr on SSL setup failures
Stefan Beller (9):
xread: poll on non blocking fds
strbuf: add strbuf_read_once to read without blocking
sigchain: add command to pop all common signals
run-command: add an asynchronous parallel child processor
fetch_populated_submodules: use new parallel job processing
submodules: allow parallel fetching, add tests and documentation
submodule helper list: respect correct path prefix
submodule: try harder to fetch needed sha1 by direct fetching sha1
run-command: do not pass child process data into callbacks
Stephen P. Smith (4):
user-manual: remove temporary branch entry from todo list
glossary: define the term shallow clone
user-manual: add section documenting shallow clones
user-manual: add addition gitweb information
Thomas Ackermann (1):
documentation: fix some typos
Thomas Braun (1):
completion: complete "diff --word-diff-regex="
Thomas Gummerer (11):
t7810: correct --no-index test
builtin/grep: add grep.fallbackToNoIndex config
ls-remote: document --quiet option
ls-remote: document --refs option
ls-remote: fix synopsis
ls-remote: use parse-options api
ls-remote: add support for showing symrefs
remote: use parse_config_key
remote: simplify remote_is_configured()
remote: actually check if remote exits
remote: use remote_is_configured() for add and rename
Tobias Klauser (2):
trailer: allow to write to files other than stdout
interpret-trailers: add option for in-place editing
Torsten Bögershausen (9):
ls-files: add eol diagnostics
t0027: add tests for get_stream_filter()
convert.c: remove unused parameter 'path'
convert.c: remove input_crlf_action()
convert.c: use text_eol_is_crlf()
convert.c: refactor crlf_action
convert.c: simplify text_stat
convert.c: correct attr_action()
config.mak.uname: use clang for Mac OS X 10.6
Victor Leschuk (3):
grep: allow threading even on a single-core machine
grep: slight refactoring to the code that disables threading
grep: add --threads=<num> option and grep.threads configuration
Will Palmer (2):
test for '!' handling in rev-parse's named commits
object name: introduce '^{/!-<negative pattern>}' notation
brian m. carlson (1):
http: add option to try authentication without username
Øyvind A. Holm (1):
gitweb: squelch "uninitialized value" warning
마누엘 (1):
mingw: try to delete target directory before renaming
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.8.0-rc0
@ 2016-02-26 23:41 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-02-26 23:41 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
An early preview release Git v2.8.0-rc0 is now available for
testing at the usual places. It is comprised of 436 non-merge
commits since v2.7.0, contributed by 58 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.8.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.7.0 are as follows.
Welcome to the Git development community!
마누엘, Andrew Wheeler, Changwoo Ryu, Christoph Egger,
Dan Aloni, Dave Ware, David A. Wheeler, Dickson Wong, Felipe
Gonçalves Assis, GyuYong Jung, Jon Griffiths, Kazutoshi Satoda,
Lars Vogel, Martin Amdisen, Matthew Kraai, Paul Wagland, Rob
Mayoff, Romain Picard, and Victor Leschuk.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Kuleshov, Alex Henrie, brian m. carlson, Christian
Couder, David A. Greene, David Turner, Dennis Kaarsemaker,
Edmundo Carmona Antoranz, Elia Pinto, Eric Wong, Jacob Keller,
Jeff King, Johannes Schindelin, Johannes Sixt, John Keeping,
Jonathan Nieder, Junio C Hamano, Karsten Blees, Karthik Nayak,
Knut Franke, Lars Schneider, Matthieu Moy, Matt McCutchen,
Michael J Gruber, Mike Hommey, Nguyễn Thái Ngọc Duy,
Øyvind A. Holm, Patrick Steinhardt, Pat Thoyts, Sebastian
Schuberth, Shawn O. Pearce, Stefan Beller, Stephen P. Smith,
SZEDER Gábor, Thomas Braun, Thomas Gummerer, Tobias Klauser,
Torsten Bögershausen, and Will Palmer.
----------------------------------------------------------------
Git 2.8 Release Notes (draft)
=============================
Backward compatibility note
---------------------------
The rsync:// transport has been removed.
Updates since v2.7
------------------
UI, Workflows & Features
* It turns out "git clone" over rsync transport has been broken when
the source repository has packed references for a long time, and
nobody noticed nor complained about it.
* "branch --delete" has "branch -d" but "push --delete" does not.
* "git blame" learned to produce the progress eye-candy when it takes
too much time before emitting the first line of the result.
* "git grep" can now be configured (or told from the command line)
how many threads to use when searching in the working tree files.
* 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).
* "git grep" by default does not fall back to its "--no-index"
behaviour outside a directory under Git's control (otherwise the
user may by mistake end up running a huge recursive search); with a
new configuration (set in $HOME/.gitconfig--by definition this
cannot be set in the config file per project), this safety can be
disabled.
* "git pull --rebase" has been extended to allow invoking
"rebase -i".
* "git p4" learned to cope with the type of a file getting changed.
* "git format-patch" learned to notice format.outputDirectory
configuration variable. This allows "-o <dir>" option to be
omitted on the command line if you always use the same directory in
your workflow.
* "interpret-trailers" has been taught to optionally update a file in
place, instead of always writing the result to the standard output.
* Many commands that read files that are expected to contain text
that is generated (or can be edited) by the end user to control
their behaviour (e.g. "git grep -f <filename>") have been updated
to be more tolerant to lines that are terminated with CRLF (they
used to treat such a line to contain payload that ends with CR,
which is usually not what the users expect).
* "git notes merge" used to limit the source of the merged notes tree
to somewhere under refs/notes/ hierarchy, which was too limiting
when inventing a workflow to exchange notes with remote
repositories using remote-tracking notes trees (located in e.g.
refs/remote-notes/ or somesuch).
* "git ls-files" learned a new "--eol" option to help diagnose
end-of-line problems.
* "ls-remote" learned an option to show which branch the remote
repository advertises as its primary by pointing its HEAD at.
* New http.proxyAuthMethod configuration variable can be used to
specify what authentication method to use, as a way to work around
proxies that do not give error response expected by libcurl when
CURLAUTH_ANY is used. Also, the codepath for proxy authentication
has been taught to use credential API to store the authentication
material in user's keyrings.
* Update the untracked cache subsystem and change its primary UI from
"git update-index" to "git config".
* There were a few "now I am doing this thing" progress messages in
the TCP connection code that can be triggered by setting a verbose
option internally in the code, but "git fetch -v" and friends never
passed the verbose option down to that codepath.
* Clean/smudge filters defined in a configuration file of lower
precedence can now be overridden to be a pass-through no-op by
setting the variable to an empty string.
* A new "<branch>^{/!-<pattern>}" notation can be used to name a
commit that is reachable from <branch> that does not match the
given <pattern>.
* The "user.useConfigOnly" configuration variable can be used to
force the user to always set user.email & user.name configuration
variables, serving as a reminder for those who work on multiple
projects and do not want to put these in their $HOME/.gitconfig.
* "git fetch" and friends that make network connections can now be
told to only use ipv4 (or ipv6).
* Some authentication methods do not need username or password, but
libcurl needs some hint that it needs to perform authentication.
Supplying an empty username and password string is a valid way to
do so, but you can set the http.[<url>.]emptyAuth configuration
variable to achieve the same, if you find it cleaner.
* You can now set http.[<url>.]pinnedpubkey to specify the pinned
public key when building with recent enough versions of libcURL.
* The configuration system has been taught to phrase where it found a
bad configuration variable in a better way in its error messages.
"git config" learnt a new "--show-origin" option to indicate where
the values come from.
* The "credential-cache" daemon process used to run in whatever
directory it happened to start in, but this made umount(2)ing the
filesystem that houses the repository harder; now the process
chdir()s to the directory that house its own socket on startup.
* When "git submodule update" did not result in fetching the commit
object in the submodule that is referenced by the superproject, the
command learned to retry another fetch, specifically asking for
that commit that may not be connected to the refs it usually
fetches.
* "git merge-recursive" learned "--no-renames" option to disable its
rename detection logic.
* Across the transition at around Git version 2.0, the user used to
get a pretty loud warning when running "git push" without setting
push.default configuration variable. We no longer warn, given that
the transition is over long time ago.
* README has been renamed to README.md and its contents got tweaked
slightly to make it easier on the eyes.
Performance, Internal Implementation, Development Support etc.
* Add a framework to spawn a group of processes in parallel, and use
it to run "git fetch --recurse-submodules" in parallel.
* A slight update to the Makefile to mark "phoney" targets
as such correctly.
* In-core storage of the reverse index for .pack files (which lets
you go from a pack offset to an object name) has been streamlined.
* d95138e6 (setup: set env $GIT_WORK_TREE when work tree is set, like
$GIT_DIR, 2015-06-26) attempted to work around a glitch in alias
handling by overwriting GIT_WORK_TREE environment variable to
affect subprocesses when set_git_work_tree() gets called, which
resulted in a rather unpleasant regression to "clone" and "init".
Try to address the same issue by always restoring the environment
and respawning the real underlying command when handling alias.
* The low-level code that is used to create symbolic references has
been updated to share more code with the code that deals with
normal references.
* strbuf_getline() and friends have been redefined to make it easier
to identify which callsite of (new) strbuf_getline_lf() should
allow and silently ignore carriage-return at the end of the line to
help users on DOSsy systems.
* "git shortlog" used to accumulate various pieces of information
regardless of what was asked to be shown in the final output. It
has been optimized by noticing what need not to be collected
(e.g. there is no need to collect the log messages when showing
only the number of changes).
* "git checkout $branch" (and other operations that share the same
underlying machinery) has been optimized.
* Automated tests in Travis CI environment has been optimized by
persisting runtime statistics of previous "prove" run, executing
tests that take longer before other ones; this reduces the total
wallclock time.
* Test scripts have been updated to remove assumptions that are not
portable between Git for POSIX and Git for Windows, or to skip ones
with expectations that are not satisfiable on Git for Windows.
* Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in test-path-utils that are already safe has
been rewritten to avoid false wanings.
* Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues. A few
calls to strcpy(3) in "git rerere" that are already safe has been
rewritten to avoid false wanings.
* The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat. The API has been removed and its users have been
rewritten to simplify the overall code complexity.
* Help those who debug http(s) part of the system.
(merge 0054045 sp/remote-curl-ssl-strerror later to maint).
* The internal API to interact with "remote.*" configuration
variables has been streamlined.
* The ref-filter's format-parsing code has been refactored, in
preparation for "branch --format" and friends.
* Traditionally, the tests that try commands that work on the
contents in the working tree were named with "worktree" in their
filenames, but with the recent addition of "git worktree"
subcommand, whose tests are also named similarly, it has become
harder to tell them apart. The traditional tests have been renamed
to use "work-tree" instead in an attempt to differentiate them.
(merge 5549029 mg/work-tree-tests later to maint).
* Many codepaths forget to check return value from git_config_set();
the function is made to die() to make sure we do not proceed when
setting a configuration variable failed.
(merge 3d18064 ps/config-error later to maint).
* Handling of errors while writing into our internal asynchronous
process has been made more robust, which reduces flakiness in our
tests.
(merge 43f3afc jk/epipe-in-async later to maint).
* There is a new DEVELOPER knob that enables many compiler warning
options in the Makefile.
Also contains various documentation updates and code clean-ups.
Fixes since v2.7
----------------
Unless otherwise noted, all the fixes since v2.7 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* An earlier change in 2.5.x-era broke users' hooks and aliases by
exporting GIT_WORK_TREE to point at the root of the working tree,
interfering when they tried to use a different working tree without
setting GIT_WORK_TREE environment themselves.
* The "exclude_list" structure has the usual "alloc, nr" pair of
fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
array.
* Paths that have been told the index about with "add -N" are not
quite yet in the index, but a few commands behaved as if they
already are in a harmful way.
* "git send-email" was confused by escaped quotes stored in the alias
files saved by "mutt", which has been corrected.
* A few unportable C construct have been spotted by clang compiler
and have been fixed.
* The documentation has been updated to hint the connection between
the '--signoff' option and DCO.
* "git reflog" incorrectly assumed that all objects that used to be
at the tip of a ref must be commits, which caused it to segfault.
* The ignore mechanism saw a few regressions around untracked file
listing and sparse checkout selection areas in 2.7.0; the change
that is responsible for the regression has been reverted.
* Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
(e.g. COMMIT_EDITMSG) that is meant to be left after the command is
done. This however did not work well if the repository is set to
be shared with core.sharedRepository and the umask of the previous
user is tighter. They have been made to work better by calling
unlink(2) and retrying after fopen(3) fails with EPERM.
* Asking gitweb for a nonexistent commit left a warning in the server
log.
Somebody may want to follow this up with an additional test, perhaps?
IIRC, we do test that no Perl warnings are given to the server log,
so this should have been caught if our test coverage were good.
* "git rebase", unlike all other callers of "gc --auto", did not
ignore the exit code from "gc --auto".
* Many codepaths that run "gc --auto" before exiting kept packfiles
mapped and left the file descriptors to them open, which was not
friendly to systems that cannot remove files that are open. They
now close the packs before doing so.
* A recent optimization to filter-branch in v2.7.0 introduced a
regression when --prune-empty filter is used, which has been
corrected.
* The description for SANITY prerequisite the test suite uses has
been clarified both in the comment and in the implementation.
* "git tag" started listing a tag "foo" as "tags/foo" when a branch
named "foo" exists in the same repository; remove this unnecessary
disambiguation, which is a regression introduced in v2.7.0.
* The way "git svn" uses auth parameter was broken by Subversion
1.9.0 and later.
* The "split" subcommand of "git subtree" (in contrib/) incorrectly
skipped merges when it shouldn't, which was corrected.
* A few options of "git diff" did not work well when the command was
run from a subdirectory.
* The command line completion learned a handful of additional options
and command specific syntax.
* dirname() emulation has been added, as Msys2 lacks it.
* The underlying machinery used by "ls-files -o" and other commands
have been taught not to create empty submodule ref cache for a
directory that is not a submodule. This removes a ton of wasted
CPU cycles.
* "git worktree" had a broken code that attempted to auto-fix
possible inconsistency that results from end-users moving a
worktree to different places without telling Git (the original
repository needs to maintain backpointers to its worktrees, but
"mv" run by end-users who are not familiar with that fact will
obviously not adjust them), which actually made things worse
when triggered.
* The low-level merge machinery has been taught to use CRLF line
termination when inserting conflict markers to merged contents that
are themselves CRLF line-terminated.
* "git push --force-with-lease" has been taught to report if the push
needed to force (or fast-forwarded).
* The emulated "yes" command used in our test scripts has been
tweaked not to spend too much time generating unnecessary output
that is not used, to help those who test on Windows where it would
not stop until it fills the pipe buffer due to lack of SIGPIPE.
* The documentation for "git clean" has been corrected; it mentioned
that .git/modules/* are removed by giving two "-f", which has never
been the case.
* The vimdiff backend for "git mergetool" has been tweaked to arrange
and number buffers in the order that would match the expectation of
majority of people who read left to right, then top down and assign
buffers 1 2 3 4 "mentally" to local base remote merge windows based
on that order.
* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
rev, i.e. the object named by the the pathname with wildcard
characters in a tree object.
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
* "git rev-parse --git-common-dir" used in the worktree feature
misbehaved when run from a subdirectory.
(merge 17f1365 nd/git-common-dir-fix later to maint).
* Another try to add support to the ignore mechanism that lets you
say "this is excluded" and then later say "oh, no, this part (that
is a subset of the previous part) is not excluded".
* "git worktree add -B <branchname>" did not work.
* The "v(iew)" subcommand of the interactive "git am -i" command was
broken in 2.6.0 timeframe when the command was rewritten in C.
(merge 708b8cc jc/am-i-v-fix later to maint).
* "git merge-tree" used to mishandle "both sides added" conflict with
its own "create a fake ancestor file that has the common parts of
what both sides have added and do a 3-way merge" logic; this has
been updated to use the usual "3-way merge with an empty blob as
the fake common ancestor file" approach used in the rest of the
system.
(merge 907681e jk/no-diff-emit-common later to maint).
* The memory ownership rule of fill_textconv() API, which was a bit
tricky, has been documented a bit better.
(merge a64e6a4 jk/more-comments-on-textconv later to maint).
* Update various codepaths to avoid manually-counted malloc().
(merge 08c95df jk/tighten-alloc later to maint).
* The documentation did not clearly state that the 'simple' mode is
now the default for "git push" when push.default configuration is
not set.
(merge f6b1fb3 mm/push-simple-doc later to maint).
* Recent versions of GNU grep are pickier when their input contains
arbitrary binary data, which some of our tests uses. Rewrite the
tests to sidestep the problem.
(merge 3b1442d jk/grep-binary-workaround-in-test later to maint).
* A helper function "git submodule" uses since v2.7.0 to list the
modules that match the pathspec argument given to its subcommands
(e.g. "submodule add <repo> <path>") has been fixed.
(merge 2b56bb7 sb/submodule-module-list-fix later to maint).
* "git config section.var value" to set a value in per-repository
configuration file failed when it was run outside any repository,
but didn't say the reason correctly.
(merge 638fa62 js/config-set-in-non-repository later to maint).
* Other minor clean-ups and documentation updates
(merge f459823 ak/extract-argv0-last-dir-sep later to maint).
(merge 63ca1c0 ak/git-strip-extension-from-dashed-command later to maint).
(merge 4867f11 ps/plug-xdl-merge-leak later to maint).
(merge 4938686 dt/initial-ref-xn-commit-doc later to maint).
(merge 9537f21 ma/update-hooks-sample-typofix later to maint).
----------------------------------------------------------------
Changes since v2.7.0 are as follows:
Alex Henrie (1):
stripspace: call U+0020 a "space" instead of a "blank"
Alexander Kuleshov (3):
format-patch: introduce format.outputDirectory configuration
exec_cmd.c: use find_last_dir_sep() for code simplification
git.c: simplify stripping extension of a file in handle_builtin()
Andrew Wheeler (1):
push: fix ref status reporting for --force-with-lease
Changwoo Ryu (1):
l10n: ko.po: Add Korean translation
Christian Couder (11):
dir: free untracked cache when removing it
update-index: use enum for untracked cache options
update-index: add --test-untracked-cache
update-index: add untracked cache notifications
update-index: move 'uc' var declaration
dir: add {new,add}_untracked_cache()
dir: add remove_untracked_cache()
dir: simplify untracked cache "ident" field
config: add core.untrackedCache
test-dump-untracked-cache: don't modify the untracked cache
t7063: add tests for core.untrackedCache
Christoph Egger (1):
http: implement public key pinning
Dan Aloni (1):
ident: add user.useConfigOnly boolean for when ident shouldn't be guessed
Dave Ware (1):
contrib/subtree: fix "subtree split" skipped-merge bug
David A. Greene (1):
contrib/subtree: Make testing easier
David A. Wheeler (1):
Expand documentation describing --signoff
David Turner (3):
do_compare_entry: use already-computed path
unpack-trees: fix accidentally quadratic behavior
refs: document transaction semantics
Dennis Kaarsemaker (1):
reflog-walk: don't segfault on non-commit sha1's in the reflog
Dickson Wong (1):
mergetool: reorder vim/gvim buffers in three-way diffs
Edmundo Carmona Antoranz (1):
blame: add support for --[no-]progress option
Elia Pinto (92):
Makefile: add missing phony target
contrib/examples/git-commit.sh: use the $( ... ) construct for command substitution
contrib/examples/git-fetch.sh: use the $( ... ) construct for command substitution
contrib/examples/git-merge.sh: use the $( ... ) construct for command substitution
contrib/examples/git-repack.sh: use the $( ... ) construct for command substitution
contrib/examples/git-revert.sh: use the $( ... ) construct for command substitution
contrib/thunderbird-patch-inline/appp.sh: use the $( ... ) construct for command substitution
git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
t/lib-httpd.sh: use the $( ... ) construct for command substitution
test-sha1.sh: use the $( ... ) construct for command substitution
unimplemented.sh: use the $( ... ) construct for command substitution
t/t1100-commit-tree-options.sh: use the $( ... ) construct for command substitution
t/t1401-symbolic-ref.sh: use the $( ... ) construct for command substitution
t/t1410-reflog.sh: use the $( ... ) construct for command substitution
t/t1511-rev-parse-caret.sh: use the $( ... ) construct for command substitution
t/t1512-rev-parse-disambiguation.sh: use the $( ... ) construct for command substitution
t/t1700-split-index.sh: use the $( ... ) construct for command substitution
t/t2025-worktree-add.sh: use the $( ... ) construct for command substitution
t/t2102-update-index-symlinks.sh: use the $( ... ) construct for command substitution
t/t3030-merge-recursive.sh: use the $( ... ) construct for command substitution
t/t3100-ls-tree-restrict.sh: use the $( ... ) construct for command substitution
t/t3101-ls-tree-dirname.sh: use the $( ... ) construct for command substitution
t/t3210-pack-refs.sh: use the $( ... ) construct for command substitution
t/t3403-rebase-skip.sh: use the $( ... ) construct for command substitution
t/t3511-cherry-pick-x.sh: use the $( ... ) construct for command substitution
t/t3600-rm.sh: use the $( ... ) construct for command substitution
t/t3700-add.sh: use the $( ... ) construct for command substitution
t/t5100-mailinfo.sh: use the $( ... ) construct for command substitution
t/t5300-pack-object.sh: use the $( ... ) construct for command substitution
t/t5301-sliding-window.sh: use the $( ... ) construct for command substitution
t/t5302-pack-index.sh: use the $( ... ) construct for command substitution
t/t5303-pack-corruption-resilience.sh: use the $( ... ) construct for command substitution
t/t5304-prune.sh: use the $( ... ) construct for command substitution
t/t5305-include-tag.sh: use the $( ... ) construct for command substitution
t/t5500-fetch-pack.sh: use the $( ... ) construct for command substitution
t/t5505-remote.sh: use the $( ... ) construct for command substitution
t/t5506-remote-groups.sh: use the $( ... ) construct for command substitution
t/t5510-fetch.sh: use the $( ... ) construct for command substitution
t/t5515-fetch-merge-logic.sh: use the $( ... ) construct for command substitution
t/t5516-fetch-push.sh: use the $( ... ) construct for command substitution
t/t5517-push-mirror.sh: use the $( ... ) construct for command substitution
t/t5522-pull-symlink.sh: use the $( ... ) construct for command substitution
t/t5530-upload-pack-error.sh: use the $( ... ) construct for command substitution
t/t5532-fetch-proxy.sh: use the $( ... ) construct for command substitution
t/t5537-fetch-shallow.sh: use the $( ... ) construct for command substitution
t/t5538-push-shallow.sh: use the $( ... ) construct for command substitution
t/t5550-http-fetch-dumb.sh: use the $( ... ) construct for command substitution
t/t5570-git-daemon.sh: use the $( ... ) construct for command substitution
t/t5601-clone.sh: use the $( ... ) construct for command substitution
t/t5700-clone-reference.sh: use the $( ... ) construct for command substitution
t/t5710-info-alternate.sh: use the $( ... ) construct for command substitution
t/t5900-repo-selection.sh: use the $( ... ) construct for command substitution
t/t6001-rev-list-graft.sh: use the $( ... ) construct for command substitution
t/t6002-rev-list-bisect.sh: use the $( ... ) construct for command substitution
t/t6015-rev-list-show-all-parents.sh: use the $( ... ) construct for command substitution
t/t6032-merge-large-rename.sh: use the $( ... ) construct for command substitution
t/t6132-pathspec-exclude.sh: use the $( ... ) construct for command substitution
t/t7001-mv.sh: use the $( ... ) construct for command substitution
t/t7003-filter-branch.sh: use the $( ... ) construct for command substitution
t/t7004-tag.sh: use the $( ... ) construct for command substitution
t/t7006-pager.sh: use the $( ... ) construct for command substitution
t/t7103-reset-bare.sh: use the $( ... ) construct for command substitution
t/t7406-submodule-update.sh: use the $( ... ) construct for command substitution
t/t7408-submodule-reference.sh: use the $( ... ) construct for command substitution
t/t7504-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7505-prepare-commit-msg-hook.sh: use the $( ... ) construct for command substitution
t/t7602-merge-octopus-many.sh: use the $( ... ) construct for command substitution
t/t7700-repack.sh: use the $( ... ) construct for command substitution
t/t8003-blame-corner-cases.sh: use the $( ... ) construct for command substitution
t/t9001-send-email.sh: use the $( ... ) construct for command substitution
t9100-git-svn-basic.sh: use the $( ... ) construct for command substitution
t9101-git-svn-props.sh: use the $( ... ) construct for command substitution
t9104-git-svn-follow-parent.sh: use the $( ... ) construct for command substitution
t9105-git-svn-commit-diff.sh: use the $( ... ) construct for command substitution
t9107-git-svn-migrate.sh: use the $( ... ) construct for command substitution
t9108-git-svn-glob.sh: use the $( ... ) construct for command substitution
t9109-git-svn-multi-glob.sh: use the $( ... ) construct for command substitution
t9110-git-svn-use-svm-props.sh: use the $( ... ) construct for command substitution
t9114-git-svn-dcommit-merge.sh: use the $( ... ) construct for command substitution
t9118-git-svn-funky-branch-names.sh: use the $( ... ) construct for command substitution
t9119-git-svn-info.sh: use the $( ... ) construct for command substitution
t9129-git-svn-i18n-commitencoding.sh: use the $( ... ) construct for command substitution
t9130-git-svn-authors-file.sh: use the $( ... ) construct for command substitution
t9132-git-svn-broken-symlink.sh: use the $( ... ) construct for command substitution
t9137-git-svn-dcommit-clobber-series.sh: use the $( ... ) construct for command substitution
t9138-git-svn-authors-prog.sh: use the $( ... ) construct for command substitution
t9145-git-svn-master-branch.sh: use the $( ... ) construct for command substitution
t9150-svk-mergetickets.sh: use the $( ... ) construct for command substitution
t9300-fast-import.sh: use the $( ... ) construct for command substitution
t9350-fast-export.sh: use the $( ... ) construct for command substitution
t9501-gitweb-standalone-http-status.sh: use the $( ... ) construct for command substitution
t9901-git-web--browse.sh: use the $( ... ) construct for command substitution
Eric Wong (8):
git-send-email: do not double-escape quotes from mutt
for-each-ref: document `creatordate` and `creator` fields
git-svn: fix auth parameter handling on SVN 1.9.0+
pass transport verbosity down to git_connect
connect & http: support -4 and -6 switches for remote operations
t5570: add tests for "git {clone,fetch,pull} -v"
git-svn: hoist out utf8 prep from t9129 to lib-git-svn
tests: remove no-op full-svn-test target
Felipe Gonçalves Assis (7):
merge-recursive: option to disable renames
merge-recursive: more consistent interface
merge-strategies.txt: fix typo
merge-recursive: find-renames resets threshold
t3034: add rename threshold tests
t3034: test option to disable renames
t3034: test deprecated interface
GyuYong Jung (1):
git-cvsserver.perl: fix typo
Jacob Keller (1):
notes: allow merging from arbitrary references
Jeff King (74):
pack-revindex: drop hash table
pack-revindex: store entries directly in packed_git
create_symref: modernize variable names
create_symref: use existing ref-lock code
create_symref: write reflog while holding lock
run-command: don't warn on SIGPIPE deaths
avoid shifting signed integers 31 bits
bswap: add NO_UNALIGNED_LOADS define
checkout,clone: check return value of create_symref
lock_ref_sha1_basic: always fill old_oid while holding lock
lock_ref_sha1_basic: handle REF_NODEREF with invalid refs
rebase: ignore failures from "gc --auto"
shortlog: match both "Author:" and "author" on stdin
shortlog: use strbufs to read from stdin
shortlog: replace hand-parsing of author with pretty-printer
shortlog: optimize "--summary" mode
shortlog: optimize out useless "<none>" normalization
shortlog: optimize out useless string list
shortlog: don't warn on empty author
filter-branch: resolve $commit^{tree} in no-index case
clean: make is_git_repository a public function
resolve_gitlink_ref: ignore non-repository paths
t6300: use test_atom for some un-modern tests
tag: do not show ambiguous tag names as "tags/foo"
transport: drop support for git-over-rsync
give "nbuf" strbuf a more meaningful name
checkout-index: simplify "-z" option parsing
checkout-index: handle "--no-prefix" option
checkout-index: handle "--no-index" option
checkout-index: disallow "--no-stage" option
apply, ls-files: simplify "-z" parsing
fmt_ident: refactor strictness checks
test-path-utils: use xsnprintf in favor of strcpy
rerere: replace strcpy with xsnprintf
checkout: reorder check_filename conditional
check_filename: tighten dwim-wildcard ambiguity
get_sha1: don't die() on bogus search strings
http-push: stop using name_path
show_object_with_name: simplify by using path_name()
list-objects: convert name_path to a strbuf
list-objects: drop name_path entirely
list-objects: pass full pathname to callbacks
git-config: better document default behavior for `--include`
ref-filter: use string_list_split over strbuf_split
reflog_expire_cfg: NUL-terminate pattern field
add helpers for detecting size_t overflow
tree-diff: catch integer overflow in combine_diff_path allocation
diff: clarify textconv interface
harden REALLOC_ARRAY and xcalloc against size_t overflow
add helpers for allocating flex-array structs
argv-array: add detach function
convert manual allocations to argv_array
convert trivial cases to ALLOC_ARRAY
use xmallocz to avoid size arithmetic
convert trivial cases to FLEX_ARRAY macros
use st_add and st_mult for allocation size computation
prepare_{git,shell}_cmd: use argv_array
write_untracked_extension: use FLEX_ALLOC helper
fast-import: simplify allocation in start_packfile
fetch-pack: simplify add_sought_entry
test-path-utils: fix normalize_path_copy output buffer size
sequencer: simplify memory allocation of get_message
git-compat-util: drop mempcpy compat code
transport_anonymize_url: use xstrfmt
diff_populate_gitlink: use a strbuf
convert ewah/bitmap code to use xmalloc
ewah: convert to REALLOC_ARRAY, etc
merge-one-file: use empty blob for add/add base
merge-tree: drop generate_common strategy
xdiff: drop XDL_EMIT_COMMON
write_or_die: handle EPIPE in async threads
fetch-pack: ignore SIGPIPE in sideband demuxer
test_must_fail: report number of unexpected signal
t5504: handle expected output from SIGPIPE death
Johannes Schindelin (46):
commit: allow editing the commit message even in shared repos
Handle more file writes correctly in shared repos
Refactor skipping DOS drive prefixes
compat/basename: make basename() conform to POSIX
compat/basename.c: provide a dirname() compatibility function
t0060: verify that basename() and dirname() work as expected
config.mak.uname: support MSys2
config.mak.uname: supporting 64-bit MSys2
fetch: release pack files before garbage-collecting
am: release pack files before garbage-collecting
merge: release pack files before garbage-collecting
receive-pack: release pack files before garbage-collecting
pull: allow interactive rebase with --rebase=interactive
remote: handle the config setting branch.*.rebase=interactive
completion: add missing branch.*.rebase values
nedmalloc: allow compiling with MSys2's compiler
compat/mingw: support MSys2-based MinGW build
compat/winansi: support compiling with MSys2
t0060: loosen overly strict expectations
mingw: avoid redefining S_* constants
mingw: avoid warnings when casting HANDLEs to int
mingw: squash another warning about a cast
mingw: uglify (a, 0) definitions to shut up warnings
mingw: let's use gettext with MSYS2
mingw: do not trust MSYS2's MinGW gettext.sh
Git.pm: stop assuming that absolute paths start with a slash
mingw: prepare the TMPDIR environment variable for shell scripts
mingw: let lstat() fail with errno == ENOTDIR when appropriate
merge-file: let conflict markers match end-of-line style of the context
merge-file: ensure that conflict sections match eol style
mingw: fix t5601-clone.sh
mingw: accomodate t0060-path-utils for MSYS2
mingw: disable mkfifo-based tests
tests: turn off git-daemon tests if FIFOs are not available
mingw: skip test in t1508 that fails due to path conversion
mingw: fix t9700's assumption about directory separators
mingw: work around pwd issues in the tests
mingw: mark t9100's test cases with appropriate prereqs
mingw: avoid illegal filename in t9118
mingw: handle the missing POSIXPERM prereq in t9124
mingw: skip a test in t9130 that cannot pass on Windows
mingw: do not bother to test funny file names
test-lib: limit the output of the yes utility
gitignore: ignore generated test-fake-ssh executable
t5505: 'remote add x y' should work when url.y.insteadOf = x
git config: report when trying to modify a non-existing repo config
Johannes Sixt (2):
t/t5100: no need to use 'echo' command substitutions for globbing
mingw: avoid linking to the C library's isalpha()
John Keeping (3):
completion: add missing git-rebase options
t8005: avoid grep on non-ASCII data
t9200: avoid grep on non-ASCII data
Jon Griffiths (3):
credential-cache--daemon: refactor check_socket_directory
credential-cache--daemon: disallow relative socket path
credential-cache--daemon: change to the socket dir on startup
Jonathan Nieder (1):
submodule.c: write "Fetching submodule <foo>" to stderr
Junio C Hamano (42):
First batch for post 2.7 cycle
strbuf: miniscule style fix
strbuf: make strbuf_getline_crlf() global
strbuf: introduce strbuf_getline_{lf,nul}()
mktree: there are only two possible line terminations
check-attr: there are only two possible line terminations
check-ignore: there are only two possible line terminations
update-index: there are only two possible line terminations
checkout-index: there are only two possible line terminations
strbuf: give strbuf_getline() to the "most text friendly" variant
hash-object: read --stdin-paths with strbuf_getline()
revision: read --stdin with strbuf_getline()
rev-parse: read parseopt spec with strbuf_getline()
ident.c: read /etc/mailname with strbuf_getline()
remote.c: read $GIT_DIR/remotes/* with strbuf_getline()
clone/sha1_file: read info/alternates with strbuf_getline()
transport-helper: read helper response with strbuf_getline()
cat-file: read batch stream with strbuf_getline()
column: read lines with strbuf_getline()
send-pack: read list of refs with strbuf_getline()
grep: read -f file with strbuf_getline()
test-sha1-array: read command stream with strbuf_getline()
test-lib: clarify and tighten SANITY
Second batch for 2.8 cycle
Third batch for 2.8 cycle
git: remove an early return from save_env_before_alias()
git: protect against unbalanced calls to {save,restore}_env()
git: simplify environment save/restore logic
Fourth batch for 2.8.cycle
Getting closer to 2.7.1
restore_env(): free the saved environment variable once we are done
Fifth batch for 2.8 cycle
Git 2.7.1
Sixth batch for the 2.8 cycle
pager: lose a separate argv[]
pager: factor out a helper to prepare a child process to run the pager
am -i: fix "v"iew
Start preparing for 2.7.2
Seventh batch for the 2.8 cycle
Git 2.7.2
Eighth batch for 2.8
Git 2.8-rc0
Karsten Blees (1):
mingw: factor out Windows specific environment setup
Karthik Nayak (10):
ref-filter: bump 'used_atom' and related code to the top
ref-filter: introduce struct used_atom
ref-filter: introduce parsing functions for each valid atom
ref-filter: introduce color_atom_parser()
ref-filter: introduce parse_align_position()
ref-filter: introduce align_atom_parser()
ref-filter: align: introduce long-form syntax
ref-filter: introduce remote_ref_atom_parser()
ref-filter: introduce contents_atom_parser()
ref-filter: introduce objectname_atom_parser()
Kazutoshi Satoda (2):
git-svn: enable "svn.pathnameencoding" on dcommit
git-svn: apply "svn.pathnameencoding" before URL encoding
Knut Franke (2):
http: allow selection of proxy authentication method
http: use credential API to handle proxy authentication
Lars Schneider (8):
travis-ci: run previously failed tests first, then slowest to fastest
travis-ci: explicity use container-based infrastructure
convert: treat an empty string for clean/smudge filters as "cat"
t: do not hide Git's exit code in tests using 'nul_to_q'
rename git_config_from_buf to git_config_from_mem
config: add 'origin_type' to config_source struct
config: add '--show-origin' option to print the origin of a config value
add DEVELOPER makefile knob to check for acknowledged warnings
Lars Vogel (1):
git-add doc: do not say working directory when you mean working tree
Martin Amdisen (1):
templates/hooks: fix minor typo in the sample update-hook
Matt McCutchen (1):
Documentation/git-clean.txt: don't mention deletion of .git/modules/*
Matthew Kraai (1):
Documentation: remove unnecessary backslashes
Matthieu Moy (7):
Documentation/git-push: document that 'simple' is the default
README: use markdown syntax
README.md: add hyperlinks on filenames
README.md: move the link to git-scm.com up
README.md: don't call git stupid in the title
README.md: move down historical explanation about the name
push: remove "push.default is unset" warning message
Michael J Gruber (2):
t9100: fix breakage when SHELL_PATH is not /bin/sh
tests: rename work-tree tests to *work-tree*
Mike Hommey (1):
notes: allow treeish expressions as notes ref
Nguyễn Thái Ngọc Duy (20):
blame: remove obsolete comment
add and use a convenience macro ce_intent_to_add()
Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR"
git.c: make it clear save_env() is for alias handling only
setup.c: re-fix d95138e (setup: set env $GIT_WORK_TREE when ..
git.c: make sure we do not leak GIT_* to alias scripts
grep: make it clear i-t-a entries are ignored
dir.c: clean the entire struct in clear_exclude_list()
Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match"
worktree.c: fix indentation
diff-no-index: do not take a redundant prefix argument
diff: make -O and --output work in subdirectory
worktree: stop supporting moving worktrees manually
rev-parse: take prefix into account in --git-common-dir
dir.c: fix match_pathname()
dir.c: support tracing exclude
dir.c: support marking some patterns already matched
dir.c: don't exclude whole dir prematurely
worktree: fix "add -B"
worktree add -B: do the checkout test before update branch
Pat Thoyts (1):
t0008: avoid absolute path
Patrick Steinhardt (18):
push: add '--delete' flag to synopsis
push: add '-d' as shorthand for '--delete'
config: introduce set_or_die wrappers
branch: report errors in tracking branch setup
branch: die on config error when unsetting upstream
branch: die on config error when editing branch description
submodule: die on config error when linking modules
submodule--helper: die on config error when cloning module
remote: die on config error when setting URL
remote: die on config error when setting/adding branches
remote: die on config error when manipulating remotes
clone: die on config error in cmd_clone
init-db: die on config errors when initializing empty repo
sequencer: die on config error when saving replay opts
compat: die when unable to set core.precomposeunicode
config: rename git_config_set to git_config_set_gently
config: rename git_config_set_or_die to git_config_set
xdiff/xmerge: fix memory leak in xdl_merge
Paul Wagland (2):
completion: complete show-branch "--date-order"
completion: update completion arguments for stash
Rob Mayoff (1):
contrib/subtree: unwrap tag refs
Romain Picard (1):
git-p4.py: add support for filetype change
SZEDER Gábor (2):
t6050-replace: make failing editor test more robust
completion: fix mis-indentation in _git_stash()
Sebastian Schuberth (3):
docs: clarify that passing --depth to git-clone implies --single-branch
docs: say "commits" in the --depth option wording for git-clone
docs: clarify that --depth for git-fetch works with newly initialized repos
Shawn O. Pearce (1):
remote-curl: include curl_errorstr on SSL setup failures
Stefan Beller (8):
xread: poll on non blocking fds
strbuf: add strbuf_read_once to read without blocking
sigchain: add command to pop all common signals
run-command: add an asynchronous parallel child processor
fetch_populated_submodules: use new parallel job processing
submodules: allow parallel fetching, add tests and documentation
submodule helper list: respect correct path prefix
submodule: try harder to fetch needed sha1 by direct fetching sha1
Stephen P. Smith (4):
user-manual: remove temporary branch entry from todo list
glossary: define the term shallow clone
user-manual: add section documenting shallow clones
user-manual: add addition gitweb information
Thomas Braun (1):
completion: complete "diff --word-diff-regex="
Thomas Gummerer (11):
t7810: correct --no-index test
builtin/grep: add grep.fallbackToNoIndex config
ls-remote: document --quiet option
ls-remote: document --refs option
ls-remote: fix synopsis
ls-remote: use parse-options api
ls-remote: add support for showing symrefs
remote: use parse_config_key
remote: simplify remote_is_configured()
remote: actually check if remote exits
remote: use remote_is_configured() for add and rename
Tobias Klauser (2):
trailer: allow to write to files other than stdout
interpret-trailers: add option for in-place editing
Torsten Bögershausen (8):
ls-files: add eol diagnostics
t0027: add tests for get_stream_filter()
convert.c: remove unused parameter 'path'
convert.c: remove input_crlf_action()
convert.c: use text_eol_is_crlf()
convert.c: refactor crlf_action
convert.c: simplify text_stat
convert.c: correct attr_action()
Victor Leschuk (3):
grep: allow threading even on a single-core machine
grep: slight refactoring to the code that disables threading
grep: add --threads=<num> option and grep.threads configuration
Will Palmer (2):
test for '!' handling in rev-parse's named commits
object name: introduce '^{/!-<negative pattern>}' notation
brian m. carlson (1):
http: add option to try authentication without username
Øyvind A. Holm (1):
gitweb: squelch "uninitialized value" warning
마누엘 (1):
mingw: try to delete target directory before renaming
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.7.0
@ 2016-01-04 23:43 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2016-01-04 23:43 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.7.0 is now available at the
usual places. It is comprised of 539 non-merge commits since
v2.6.0, contributed by 81 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.7.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.6.0 are as follows.
Welcome to the Git development community!
Atousa Pahlevan Duprat, Audric Schiltknecht, Ben Boeckel,
Blake Burkhart, Dair Grant, Edmundo Carmona Antoranz, Élie
Bouttier, Eric N. Vander Weele, Fabio Porcedda, Gabor Bernat,
GIRARD Etienne, James McCoy, Juerg Haefliger, Noam Postavsky,
Rainer M. Canavan, Ray Donnelly, Remi Pommarel, Renee Margaret
McConahy, Sidhant Sharma, Stefan Agner, Takashi Iwai, Tobias
Klauser, Waldek Maleska, Xue Fuqiao, YOKOTA Hiroshi, and
Андрей Рыбак.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Shopov, Alexey Shumkin, Alex Henrie, Alex Riesen,
Antoine Delaite, Beat Bolli, brian m. carlson, Charles Bailey,
Christian Couder, Clemens Buchacher, Daniel Knittl-Frank, David
Aguilar, David Turner, Dennis Kaarsemaker, Dimitriy Ryazantcev,
Doug Kelly, Elia Pinto, Fabian Ruch, Fredrik Medley, Giuseppe
Bilotta, Jacob Keller, Jean-Noel Avila, Jeff King, Jiang Xin,
Johannes Schindelin, Johannes Sixt, John Keeping, Junio C Hamano,
Karthik Nayak, Lars Schneider, Lukas Fleischer, Luke Diamand,
Matthieu Moy, Max Kirillov, Michael Haggerty, Michael J Gruber,
Michael Rappazzo, Mike Crowe, Namhyung Kim, Nguyễn Thái Ngọc
Duy, Pat Thoyts, Paul Mackerras, Peter Krefting, Ralf Thielow,
Ramsay Jones, René Scharfe, Ronnie Sahlberg, Sam Hocevar,
Stefan Beller, Stefan Naewe, Stephan Beyer, SZEDER Gábor,
Techlive Zheng, Torsten Bögershausen, and Trần Ngọc Quân.
----------------------------------------------------------------
Git 2.7 Release Notes
=====================
Updates since v2.6
------------------
UI, Workflows & Features
* The appearance of "gitk", particularly on high DPI monitors, have
been improved. "gitk" also comes with an undated translation for
Swedish and Japanese.
* "git remote" learned "get-url" subcommand to show the URL for a
given remote name used for fetching and pushing.
* There was no way to defeat a configured rebase.autostash variable
from the command line, as "git rebase --no-autostash" was missing.
* "git log --date=local" used to only show the normal (default)
format in the local timezone. The command learned to take 'local'
as an instruction to use the local timezone with other formats,
* The refs used during a "git bisect" session is now per-worktree so
that independent bisect sessions can be done in different worktrees
created with "git worktree add".
* Users who are too busy to type three extra keystrokes to ask for
"git stash show -p" can now set stash.showPatch configuration
variable to true to always see the actual patch, not just the list
of paths affected with feel for the extent of damage via diffstat.
* "quiltimport" allows to specify the series file by honoring the
$QUILT_SERIES environment and also --series command line option.
* 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.
* "git interpret-trailers" can now run outside of a Git repository.
* "git p4" learned to reencode the pathname it uses to communicate
with the p4 depot with a new option.
* Give progress meter to "git filter-branch".
* Allow a later "!/abc/def" to override an earlier "/abc" that
appears in the same .gitignore file to make it easier to express
"everything in /abc directory is ignored, except for ...".
* Teach "git p4" to send large blobs outside the repository by
talking to Git LFS.
* Prepare for Git on-disk repository representation to undergo
backward incompatible changes by introducing a new repository
format version "1", with an extension mechanism.
* "git worktree" learned a "list" subcommand.
* "git clone --dissociate" learned that it can be used even when
"--reference" was not used at the same time.
* "git blame" learnt to take "--first-parent" and "--reverse" at the
same time when it makes sense.
* "git checkout" did not follow the usual "--[no-]progress"
convention and implemented only "--quiet" that is essentially
a superset of "--no-progress". Extend the command to support the
usual "--[no-]progress".
* The semantics of transfer.hideRefs configuration variable have been
extended to work better with the ref "namespace" feature that lets
you throw unrelated bunches of repositories in a single physical
repository and virtually serve them as separate ones.
* send-email config variables whose values are pathnames now go
through the ~username/ expansion.
* bash completion learnt to TAB-complete recipient addresses given
to send-email.
* The credential-cache daemon can be told to ignore SIGHUP to work
around issue when running Git from inside emacs.
* "git push" learned new configuration for doing "--recurse-submodules"
on each push.
* "format-patch" has learned a new option to zero-out the commit
object name on the mbox "From " line.
Performance, Internal Implementation, Development Support etc.
* The infrastructure to rewrite "git submodule" in C is being built
incrementally. Let's polish these early parts well enough and make
them graduate to 'next' and 'master', so that the more involved
follow-up can start cooking on a solid ground.
* 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. The version merged
to the 'master' branch earlier had a performance regression in "tag
--contains", which has since been corrected.
* Because "test_when_finished" in our test framework queues the
clean-up tasks to be done in a shell variable, it should not be
used inside a subshell. Add a mechanism to allow 'bash' to catch
such uses, and fix the ones that were found.
* The debugging infrastructure for pkt-line based communication has
been improved to mark the side-band communication specifically.
* Update "git branch" that list existing branches, using the
ref-filter API that is shared with "git tag" and "git
for-each-ref".
* The test for various line-ending conversions has been enhanced.
* A few test scripts around "git p4" have been improved for
portability.
* Many allocations that is manually counted (correctly) that are
followed by strcpy/sprintf have been replaced with a less error
prone constructs such as xstrfmt.
* The internal stripspace() function has been moved to where it
logically belongs to, i.e. strbuf API, and the command line parser
of "git stripspace" has been updated to use the parse_options API.
* "git am" used to spawn "git mailinfo" via run_command() API once
per each patch, but learned to make a direct call to mailinfo()
instead.
* The implementation of "git mailinfo" was refactored so that a
mailinfo() function can be directly called from inside a process.
* With a "debug" helper, debugging of a single "git" invocation in
our test scripts has become a lot easier.
* The "configure" script did not test for -lpthread correctly, which
upset some linkers.
* Cross completed task off of subtree project's todo list.
* Test cleanups for the subtree project.
* Clean up style in an ancient test t9300.
* Work around some test flakiness with p4d.
* Fsck did not correctly detect a NUL-truncated header in a tag.
* Use a safer behavior when we hit errors verifying remote certificates.
* Speed up filter-branch for cases where we only care about rewriting
commits, not tree data.
* The parse-options API has been updated to make "-h" command line
option work more consistently in all commands.
* "git svn rebase/mkdirs" got optimized by keeping track of empty
directories better.
* Fix some racy client/server tests by treating SIGPIPE the same as a
normal non-zero exit.
* The necessary infrastructure to build topics using the free Travis
CI has been added. Developers forking from this topic (and enabling
Travis) can do their own builds, and we can turn on auto-builds for
git/git (including build-status for pull requests that people
open).
* The write(2) emulation for Windows learned to set errno to EPIPE
when necessary.
Also contains various documentation updates and code clean-ups.
Fixes since v2.6
----------------
Unless otherwise noted, all the fixes since v2.6 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* Very small number of options take a parameter that is optional
(which is not a great UI element as they can only appear at the end
of the command line). Add notice to documentation of each and
every one of them.
* "git blame --first-parent v1.0..v2.0" was not rejected but did not
limit the blame to commits on the first parent chain.
* "git subtree" (in contrib/) now can take whitespaces in the
pathnames, not only in the in-tree pathname but the name of the
directory that the repository is in.
* The ssh transport, just like any other transport over the network,
did not clear GIT_* environment variables, but it is possible to
use SendEnv and AcceptEnv to leak them to the remote invocation of
Git, which is not a good idea at all. Explicitly clear them just
like we do for the local transport.
* Correct "git p4 --detect-labels" so that it does not fail to create
a tag that points at a commit that is also being imported.
* The Makefile always runs the library archiver with hardcoded "crs"
options, which was inconvenient for exotic platforms on which
people want to use programs with totally different set of command
line options.
* Customization to change the behaviour with "make -w" and "make -s"
in our Makefile was broken when they were used together.
* Allocation related functions and stdio are unsafe things to call
inside a signal handler, and indeed killing the pager can cause
glibc to deadlock waiting on allocation mutex as our signal handler
tries to free() some data structures in wait_for_pager(). Reduce
these unsafe calls.
* The way how --ref/--notes to specify the notes tree reference are
DWIMmed was not clearly documented.
* "git gc" used to barf when a symbolic ref has gone dangling
(e.g. the branch that used to be your upstream's default when you
cloned from it is now gone, and you did "fetch --prune").
* "git clone --dissociate" runs a big "git repack" process at the
end, and it helps to close file descriptors that are open on the
packs and their idx files before doing so on filesystems that
cannot remove a file that is still open.
* Description of the "log.follow" configuration variable in "git log"
documentation is now also copied to "git config" documentation.
* "git rebase -i" had a minor regression recently, which stopped
considering a line that begins with an indented '#' in its insn
sheet not a comment. Further, the code was still too picky on
Windows where CRLF left by the editor is turned into a trailing CR
on the line read via the "read" built-in command of bash. Both of
these issues are now fixed.
* After "git checkout --detach", "git status" reported a fairly
useless "HEAD detached at HEAD", instead of saying at which exact
commit.
* When "git send-email" wanted to talk over Net::SMTP::SSL,
Net::Cmd::datasend() did not like to be fed too many bytes at the
same time and failed to send messages. Send the payload one line
at a time to work around the problem.
* When "git am" was rewritten as a built-in, it stopped paying
attention to user.signingkey, which was fixed.
* It was not possible to use a repository-lookalike created by "git
worktree add" as a local source of "git clone".
* On a case insensitive filesystems, setting GIT_WORK_TREE variable
using a random cases that does not agree with what the filesystem
thinks confused Git that it wasn't inside the working tree.
* Performance-measurement tests did not work without an installed Git.
* A test script for the HTTP service had a timing dependent bug,
which was fixed.
* There were some classes of errors that "git fsck" diagnosed to its
standard error that did not cause it to exit with non-zero status.
* Work around "git p4" failing when the P4 depot records the contents
in UTF-16 without UTF-16 BOM.
* When "git gc --auto" is backgrounded, its diagnosis message is
lost. Save it to a file in $GIT_DIR and show it next time the "gc
--auto" is run.
* The submodule code has been taught to work better with separate
work trees created via "git worktree add".
* "git gc" is safe to run anytime only because it has the built-in
grace period to protect young objects. In order to run with no
grace period, the user must make sure that the repository is
quiescent.
* A recent "filter-branch --msg-filter" broke skipping of the commit
object header, which is fixed.
* The normalize_ceiling_entry() function does not muck with the end
of the path it accepts, and the real world callers do rely on that,
but a test insisted that the function drops a trailing slash.
* A test for interaction between untracked cache and sparse checkout
added in Git 2.5 days were flaky.
* A couple of commands still showed "[options]" in their usage string
to note where options should come on their command line, but we
spell that "[<options>]" in most places these days.
* The synopsis text and the usage string of subcommands that read
list of things from the standard input are often shown as if they
only take input from a file on a filesystem, which was misleading.
* "git am -3" had a small regression where it is aborted in its error
handling codepath when underlying merge-recursive failed in certain
ways, as it assumed that the internal call to merge-recursive will
never die, which is not the case (yet).
* The linkage order of libraries was wrong in places around libcurl.
* The name-hash subsystem that is used to cope with case insensitive
filesystems keeps track of directories and their on-filesystem
cases for all the paths in the index by holding a pointer to a
randomly chosen cache entry that is inside the directory (for its
ce->ce_name component). This pointer was not updated even when the
cache entry was removed from the index, leading to use after free.
This was fixed by recording the path for each directory instead of
borrowing cache entries and restructuring the API somewhat.
* "git merge-file" tried to signal how many conflicts it found, which
obviously would not work well when there are too many of them.
* The error message from "git blame --contents --reverse" incorrectly
talked about "--contents --children".
* "git imap-send" did not compile well with older version of cURL library.
* Merging a branch that removes a path and another that changes the
mode bits on the same path should have conflicted at the path, but
it didn't and silently favoured the removal.
* "git --literal-pathspecs add -u/-A" without any command line
argument misbehaved ever since Git 2.0.
* "git daemon" uses "run_command()" without "finish_command()", so it
needs to release resources itself, which it forgot to do.
* "git status --branch --short" accessed beyond the constant string
"HEAD", which has been corrected.
* We peek objects from submodule's object store by linking it to the
list of alternate object databases, but the code to do so forgot to
correctly initialize the list.
* The code to prepare the working tree side of temporary directory
for the "dir-diff" feature forgot that symbolic links need not be
copied (or symlinked) to the temporary area, as the code already
special cases and overwrites them. Besides, it was wrong to try
computing the object name of the target of symbolic link, which may
not even exist or may be a directory.
* A Range: request can be responded with a full response and when
asked properly libcurl knows how to strip the result down to the
requested range. However, we were hand-crafting a range request
and it did not kick in.
* Having a leftover .idx file without corresponding .pack file in
the repository hurts performance; "git gc" learned to prune them.
* Apple's common crypto implementation of SHA1_Update() does not take
more than 4GB at a time, and we now have a compile-time workaround
for it.
* Produce correct "dirty" marker for shell prompts, even when we
are on an orphan or an unborn branch.
* A build without NO_IPv6 used to use gethostbyname() when guessing
user's hostname, instead of getaddrinfo() that is used in other
codepaths in such a build.
* The exit code of git-fsck did not reflect some types of errors
found in packed objects, which has been corrected.
* The helper used to iterate over loose object directories to prune
stale objects did not closedir() immediately when it is done with a
directory--a callback such as the one used for "git prune" may want
to do rmdir(), but it would fail on open directory on platforms
such as WinXP.
* "git p4" used to import Perforce CLs that touch only paths outside
the client spec as empty commits. It has been corrected to ignore
them instead, with a new configuration git-p4.keepEmptyCommits as a
backward compatibility knob.
* The completion script (in contrib/) used to list "git column"
(which is not an end-user facing command) as one of the choices
(merge 160fcdb sg/completion-no-column later to maint).
* The error reporting from "git send-email", when SMTP TLS fails, has
been improved.
(merge 9d60524 jk/send-email-ssl-errors later to maint).
* When getpwuid() on the system returned NULL (e.g. the user is not
in the /etc/passwd file or other uid-to-name mappings), the
codepath to find who the user is to record it in the reflog barfed
and died. Loosen the check in this codepath, which already accepts
questionable ident string (e.g. host part of the e-mail address is
obviously bogus), and in general when we operate fmt_ident() function
in non-strict mode.
(merge 92bcbb9 jk/ident-loosen-getpwuid later to maint).
* "git symbolic-ref" forgot to report a failure with its exit status.
(merge f91b273 jk/symbolic-ref-maint later to maint).
* History traversal with "git log --source" that starts with an
annotated tag failed to report the tag as "source", due to an
old regression in the command line parser back in v2.2 days.
(merge 728350b jk/pending-keep-tag-name later to maint).
* "git p4" when interacting with multiple depots at the same time
used to incorrectly drop changes.
* Code clean-up, minor fixes etc.
----------------------------------------------------------------
Changes since v2.6.0 are as follows:
Alex Henrie (5):
merge: grammofix in please-commit-before-merge message
pull: enclose <options> in brackets in the usage string
gitk: l10n: Update Catalan translation
l10n: ca.po: update translation
l10n: ca.po: update translation
Alex Riesen (1):
clone: allow "--dissociate" without reference
Alexander Shopov (2):
l10n: Updated Bulgarian translation of git (2477t,0f,0u)
l10n: Updated Bulgarian translation of git (2477t,0f,0u)
Alexey Shumkin (2):
t7900-subtree: test the "space in a subdirectory name" case
contrib/subtree: respect spaces in a repository path
Antoine Delaite (1):
bisect: add the terms old/new
Atousa Pahlevan Duprat (2):
sha1: provide another level of indirection for the SHA-1 functions
sha1: allow limiting the size of the data passed to SHA1_Update()
Audric Schiltknecht (1):
l10n: fr.po: Fix typo
Beat Bolli (1):
gitk: Add missing accelerators
Ben Boeckel (1):
remote: add get-url subcommand
Blake Burkhart (2):
http: limit redirection to protocol-whitelist
http: limit redirection depth
Charles Bailey (2):
http: treat config options sslCAPath and sslCAInfo as paths
t3404: fix quoting of redirect for some versions of bash
Christian Couder (4):
quote: fix broken sq_quote_buf() related comment
quote: move comment before sq_quote_buf()
Documentation/git-update-index: add missing opts to synopsys
Documentation/git-update-index: add missing opts to synopsis
Clemens Buchacher (1):
allow hooks to ignore their standard input stream
Dair Grant (1):
git-svn: improve rebase/mkdirs performance
Daniel Knittl-Frank (1):
Escape Git's exec path in contrib/rerere-train.sh script
David Aguilar (1):
difftool: ignore symbolic links in use_wt_file
David Turner (11):
refs: clean up common_list
path: optimize common dir checking
refs: make refs/bisect/* per-worktree
t7063: fix flaky untracked-cache test
name-hash: don't reuse cache_entry in dir_entry
http.c: use CURLOPT_RANGE for range requests
copy_msg(): rename to copy_reflog_msg()
initdb: make safe_create_dir public
files_log_ref_write: new function
refs: break out ref conflict checks
verify_pack: do not ignore return value of verification function
Dennis Kaarsemaker (3):
git-p4: import the ctypes module
t5813: avoid creating urls that break on cygwin
check-ignore: correct documentation about output
Dimitriy Ryazantcev (3):
l10n: ru.po: update Russian translation
gitk: Update Russian translation
l10n: ru.po: update Russian translation
Doug Kelly (2):
t5304: test cleaning pack garbage
gc: remove garbage .idx files from pack dir
Edmundo Carmona Antoranz (1):
checkout: add --progress option
Elia Pinto (1):
ident.c: add support for IPv6
Eric N. Vander Weele (1):
log: Update log.follow doc and add to config.txt
Fabian Ruch (1):
rebase -i: remember merge options beyond continue actions
Fabio Porcedda (1):
contrib/subtree: remove "push" command from the "todo" file
Fredrik Medley (1):
rebase-i-exec: Allow space in SHELL_PATH
GIRARD Etienne (1):
git-p4: clean up after p4 submit failure
Gabor Bernat (1):
filter-branch: add passed/remaining seconds on progress
Giuseppe Bilotta (2):
gitk: Match ttk fonts to gitk fonts
gitk: Let .bleft.mid widgets 'breathe'
Jacob Keller (3):
notes: correct documentation of DWIMery for notes references
sendemail: teach git-send-email to dump alias names
completion: add support for completing email aliases
James McCoy (1):
filter-branch: remove multi-line headers in msg filter
Jean-Noel Avila (2):
l10n: fr v2.7.0 round 1 (2477t)
l10n: fr.po v2.7.0 round 2 (2477t)
Jeff King (100):
introduce "extensions" form of core.repositoryformatversion
introduce "preciousObjects" repository extension
run-command: provide in_async query function
pkt-line: show packets in async processes as "sideband"
fast-import: switch crash-report date to iso8601
date: make "local" orthogonal to date format
git_connect: clear GIT_* environment for ssh
git_connect: clarify conn->use_shell flag
blame: handle --first-parent
transport: add a protocol-whitelist environment variable
submodule: allow only certain protocols for submodule fetches
show-branch: avoid segfault with --reflog of unborn branch
mailsplit: fix FILE* leak in split_maildir
archive-tar: fix minor indentation violation
fsck: don't fsck alternates for connectivity-only check
add xsnprintf helper function
add git_path_buf helper function
strbuf: make strbuf_complete_line more generic
add reentrant variants of sha1_to_hex and find_unique_abbrev
fsck: use strbuf to generate alternate directories
mailsplit: make PATH_MAX buffers dynamic
trace: use strbuf for quote_crnl output
progress: store throughput display in a strbuf
test-dump-cache-tree: avoid overflow of cache-tree name
compat/inet_ntop: fix off-by-one in inet_ntop4
convert trivial sprintf / strcpy calls to xsnprintf
archive-tar: use xsnprintf for trivial formatting
use xsnprintf for generating git object headers
find_short_object_filename: convert sprintf to xsnprintf
stop_progress_msg: convert sprintf to xsnprintf
compat/hstrerror: convert sprintf to snprintf
grep: use xsnprintf to format failure message
entry.c: convert strcpy to xsnprintf
add_packed_git: convert strcpy into xsnprintf
http-push: replace strcat with xsnprintf
receive-pack: convert strncpy to xsnprintf
replace trivial malloc + sprintf / strcpy calls with xstrfmt
config: use xstrfmt in normalize_value
fetch: replace static buffer with xstrfmt
use strip_suffix and xstrfmt to replace suffix
ref-filter: drop sprintf and strcpy calls
help: drop prepend function in favor of xstrfmt
mailmap: replace strcpy with xstrdup
read_branches_file: simplify string handling
read_remotes_file: simplify string handling
resolve_ref: use strbufs for internal buffers
upload-archive: convert sprintf to strbuf
remote-ext: simplify git pkt-line generation
http-push: use strbuf instead of fwrite_buffer
http-walker: store url in a strbuf
sha1_get_pack_name: use a strbuf
transport: refactor protocol whitelist code
react to errors in xdi_diff
xdiff: reject files larger than ~1GB
merge-file: enforce MAX_XDIFF_SIZE on incoming files
precompose_utf8: drop unused variable
probe_utf8_pathname_composition: use internal strbuf
init: use strbufs to store paths
apply: convert root string to strbuf
transport: use strbufs for status table "quickref" strings
merge-recursive: convert malloc / strcpy to strbuf
enter_repo: convert fixed-size buffers to strbufs
remove_leading_path: use a strbuf for internal storage
write_loose_object: convert to strbuf
diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat
fetch-pack: use argv_array for index-pack / unpack-objects
http-push: use an argv_array for setup_revisions
stat_tracking_info: convert to argv_array
daemon: use cld->env_array when re-spawning
use sha1_to_hex_r() instead of strcpy
drop strcpy in favor of raw sha1_to_hex
color: add overflow checks for parsing colors
use alloc_ref rather than hand-allocating "struct ref"
avoid sprintf and strcpy with flex arrays
receive-pack: simplify keep_arg computation
help: clean up kfmclient munging
prefer memcpy to strcpy
color: add color_set helper for copying raw colors
notes: document length of fanout path with a constant
convert strncpy to memcpy
fsck: drop inode-sorting code
Makefile: drop D_INO_IN_DIRENT build knob
fsck: use for_each_loose_file_in_objdir
use strbuf_complete to conditionally append slash
name-rev: use strip_suffix to avoid magic numbers
t6031: move triple-rename test to t3030
t6031: generalize for recursive and resolve strategies
merge: detect delete/modechange conflict
add_submodule_odb: initialize alt_odb list earlier
merge-file: clamp exit code to maximum 127
http: use off_t to store partial file size
filter-branch: skip index read/write when possible
blame: fix object casting regression
ident: make xgetpwuid_self() a static local helper
ident: keep a flag for bogus default_email
ident: loosen getpwuid error in non-strict mode
ident: fix undefined variable when NO_IPV6 is set
revision.c: propagate tag names from pending array
symbolic-ref: propagate error code from create_symref()
t1401: test reflog creation for git-symbolic-ref
Jiang Xin (4):
l10n: git.pot: v2.7.0 round 1 (66 new, 29 removed)
l10n: zh_CN: for git v2.7.0 l10n round 1
l10n: git.pot: v2.7.0 round 2 (2 new, 2 removed)
l10n: zh_CN: for git v2.7.0 l10n round 2
Johannes Schindelin (13):
setup: fix "inside work tree" detection on case-insensitive filesystems
t5700: demonstrate a Windows file locking issue with `git clone --dissociate`
sha1_file: consolidate code to close a pack's file descriptor
gc: demonstrate failure with stale remote HEAD
sha1_file.c: add a function to release all packs
clone --dissociate: avoid locking pack files
pack-objects: do not get distracted by broken symrefs
imap-send: only use CURLOPT_LOGIN_OPTIONS if it is actually available
Squelch warning about an integer overflow
Silence GCC's "cast of pointer to integer of a different size" warning
t3404: "rebase -i" gets broken when insn sheet uses CR/LF line endings
test: facilitate debugging Git executables in tests with gdb
mingw: emulate write(2) that fails with a EPIPE
Johannes Sixt (10):
prune: close directory earlier during loose-object directory traversal
read_branches_file: plug a FILE* leak
compat/mingw.c: remove printf format warning
modernize t9300: single-quote placement and indentation
modernize t9300: use test_must_fail
modernize t9300: use test_must_be_empty
modernize t9300: wrap lines after &&
modernize t9300: use test_when_finished for clean-up
modernize t9300: mark here-doc words to ignore tab indentation
modernize t9300: move test preparations into test_expect_success
John Keeping (22):
Documentation/blame-options: don't list date formats
Documentation/config: don't list date formats
Documentation/git-for-each-ref: don't list date formats
Documentation/rev-list: don't list date formats
t6300: introduce test_date() helper
t6300: add test for "raw" date format
date: check for "local" before anything else
t6300: make UTC and local dates different
t6300: add tests for "-local" date formats
t7610: don't use test_config in a subshell
t5801: don't use test_when_finished in a subshell
test-lib-functions: support "test_config -C <dir> ..."
t7800: don't use test_config in a subshell
test-lib-functions: detect test_when_finished in subshell
interpret-trailers: allow running outside a repository
Makefile: fix MAKEFLAGS tests with multiple flags
rebase: support --no-autostash
Documentation/git-rebase: fix --no-autostash formatting
Documentation: fix section header mark-up
send-email: expand path in sendemail.smtpsslcertpath config
send-email: die if CA path doesn't exist
send-email: enable SSL level 1 debug output
Juerg Haefliger (1):
git-quiltimport: add commandline option --series <file>
Junio C Hamano (100):
rerere: fix an off-by-one non-bug
rerere: handle conflicts with multiple stage #1 entries
rerere: plug conflict ID leaks
rerere: lift PATH_MAX limitation
rerere: write out each record of MERGE_RR in one go
rerere: report autoupdated paths only after actually updating them
rerere: drop want_sp parameter from is_cmarker()
rerere: stop looping unnecessarily
rerere: do not leak mmfile[] for a path with multiple stage #1 entries
rerere: explain the rerere I/O abstraction
rerere: fix benign off-by-one non-bug and clarify code
rerere: explain MERGE_RR management helpers
rerere: explain the primary codepath
rerere: explain "rerere forget" codepath
rerere: explain the remainder
rerere: refactor "replay" part of do_plain_rerere()
rerere: further de-dent do_plain_rerere()
rerere: further clarify do_rerere_one_path()
rerere: call conflict-ids IDs
rerere: use "struct rerere_id" instead of "char *" for conflict ID
rerere: un-nest merge() further
prepare_packed_git(): refactor garbage reporting in pack directory
Makefile: allow $(ARFLAGS) specified from the command line
filter-branch: make report-progress more readable
fsck: exit with non-zero when problems are found
Git 2.3.10
Git 2.4.10
Git 2.5.4
Git 2.6.1
Start cycle toward 2.7
Second batch for 2.7
am -3: do not let failed merge from completing the error codepath
Documentation/gc: warn against --prune=<now>
Third batch for 2.7
Fourth batch for 2.7
Git 2.6.2
Fifth batch for 2.7
usage: do not insist that standard input must come from a file
mailinfo: remove a no-op call convert_to_utf8(it, "")
mailinfo: fold decode_header_bq() into decode_header()
mailinfo: fix an off-by-one error in the boundary stack
mailinfo: explicitly close file handle to the patch output
Sixth batch for 2.7
mailinfo: plug strbuf leak during continuation line handling
mailinfo: move handle_boundary() lower
mailinfo: move read_one_header_line() closer to its callers
mailinfo: move check_header() after the helpers it uses
mailinfo: move cleanup_space() before its users
mailinfo: move definition of MAX_HDR_PARSED closer to its use
mailinfo: get rid of function-local static states
mailinfo: do not let handle_body() touch global "line" directly
mailinfo: do not let handle_boundary() touch global "line" directly
mailinfo: do not let find_boundary() touch global "line" directly
mailinfo: move global "line" into mailinfo() function
mailinfo: introduce "struct mailinfo" to hold globals
mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
mailinfo: move global "FILE *fin, *fout" to struct mailinfo
mailinfo: move filter/header stage to struct mailinfo
mailinfo: move patch_lines to struct mailinfo
mailinfo: move add_message_id and message_id to struct mailinfo
mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
mailinfo: move metainfo_charset to struct mailinfo
mailinfo: move check for metainfo_charset to convert_to_utf8()
mailinfo: move transfer_encoding to struct mailinfo
mailinfo: move charset to struct mailinfo
mailinfo: move cmitmsg and patchfile to struct mailinfo
mailinfo: move [ps]_hdr_data to struct mailinfo
mailinfo: move content/content_top to struct mailinfo
mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
mailinfo: keep the parsed log message in a strbuf
mailinfo: libify
mailinfo: handle charset conversion errors in the caller
am: make direct call to mailinfo
mailinfo: remove calls to exit() and die() deep in the callchain
Documentation/everyday: match undefline with the text
Documentation: match underline with the text
Documentation: match undefline with the text in old release notes
Documentation: AsciiDoc spells em-dash as double-dashes, not triple
add: simplify -u/-A without pathspec
Seventh batch for 2.7
rebase-i: work around Windows CRLF line endings
Eighth batch for 2.7
Ninth batch for 2.7
Tenth batch for 2.7
Git 2.6.3
Eleventh batch for 2.7
RelNotes update for 2.7
Prepare for 2.6.4
Git 2.6.4
Update release notes to 2.7
Git 2.7-rc0
Prepare for 2.6.5
Update release notes to 2.7
Update draft release notes to 2.6.5
Git 2.7-rc1
Update release notes to 2.7
Git 2.7-rc2
Git 2.7-rc3
Git 2.6.5
Git 2.7
Karthik Nayak (35):
t6302: for-each-ref tests for ref-filter APIs
tag: libify parse_opt_points_at()
ref-filter: implement '--points-at' option
for-each-ref: add '--points-at' option
ref-filter: add parse_opt_merge_filter()
ref-filter: implement '--merged' and '--no-merged' options
for-each-ref: add '--merged' and '--no-merged' options
parse-option: rename parse_opt_with_commit()
parse-options.h: add macros for '--contains' option
ref-filter: implement '--contains' option
for-each-ref: add '--contains' option
ref-filter: move `struct atom_value` to ref-filter.c
ref-filter: introduce ref_formatting_state and ref_formatting_stack
utf8: add function to align a string into given strbuf
ref-filter: introduce handler function for each atom
ref-filter: introduce match_atom_name()
ref-filter: implement an `align` atom
ref-filter: add option to filter out tags, branches and remotes
ref-filter: add support for %(contents:lines=X)
ref-filter: add support to sort by version
ref-filter: add option to match literal pattern
tag.c: use 'ref-filter' data structures
tag.c: use 'ref-filter' APIs
tag.c: implement '--format' option
tag.c: implement '--merged' and '--no-merged' options
branch: refactor width computation
branch: bump get_head_description() to the top
branch: roll show_detached HEAD into regular ref_list
branch: move 'current' check down to the presentation layer
branch: drop non-commit error reporting
branch.c: use 'ref-filter' data structures
branch.c: use 'ref-filter' APIs
branch: add '--points-at' option
tag.c: use the correct algorithm for the '--contains' option
ref-filter: fallback on alphabetical comparison
Lars Schneider (21):
git-p4: add config git-p4.pathEncoding
git-p4: improve path encoding verbose output
git-p4: use replacement character for non UTF-8 characters in paths
git-p4: add test case for "Translation of file content failed" error
git-p4: handle "Translation of file content failed"
git-p4: add optional type specifier to gitConfig reader
git-p4: add gitConfigInt reader
git-p4: return an empty list if a list config has no values
git-p4: add file streaming progress in verbose mode
git-p4: check free space during streaming
git-p4: add support for large file systems
git-p4: add Git LFS backend for large file system
git-p4: avoid "stat" command in t9815 git-p4-submit-fail
git-p4: skip t9819 test case on case insensitive file systems
git-p4: retry kill/cleanup operations in tests with timeout
git-p4: add p4d timeout in tests
git-p4: add trap to kill p4d on test exit
implement test_might_fail using a refactored test_must_fail
add "ok=sigpipe" to test_must_fail and use it to fix flaky tests
Add Travis CI support
git-p4: add option to keep empty commits
Lukas Fleischer (4):
config.txt: document the semantics of hideRefs with namespaces
upload-pack: strip refs before calling ref_is_hidden()
hideRefs: add support for matching full refs
t5509: add basic tests for hideRefs
Luke Diamand (7):
git-p4: failing test for ignoring invalid p4 labels
git-p4: do not terminate creating tag for unknown commit
git-p4: fix P4 label import for unprocessed commits
git-p4: add failing test for submit from detached head
git-p4: add option to system() to return subshell status
git-p4: work with a detached head
git-p4: failing test case for skipping changes with multiple depots
Matthieu Moy (12):
bisect: sanity check on terms
bisect: add 'git bisect terms' to view the current terms
bisect: allow setting any user-specified in 'git bisect start'
strtoul_ui: reject negative values
Documentation: use 'keyid' consistently, not 'key-id'
Documentation/grep: fix documentation of -O
Documentation: explain optional arguments better
t3203: test 'detached at' after checkout --detach
status: don't say 'HEAD detached at HEAD'
rebase-i: explicitly accept tab as separator in commands
rebase-i: loosen over-eager check_bad_cmd check
git-multimail: update to release 1.2.0
Max Kirillov (6):
submodule refactor: use strbuf_git_path_submodule() in add_submodule_odb()
path: implement common_dir handling in git_pathdup_submodule()
blame: fix option name in error message
blame: test to describe use of blame --reverse --first-parent
blame: extract find_single_final
blame: allow blame --reverse --first-parent when it makes sense
Michael Haggerty (4):
pack_if_possible_fn(): use ref_type() instead of is_per_worktree_ref()
refname_is_safe(): improve docstring
refs/refs-internal.h: new header file
refs: split filesystem-based refs code into a new file
Michael J Gruber (2):
t2026: rename worktree prune test
Documentation/diff: give --word-diff-regex=. example
Michael Rappazzo (5):
worktree: add top-level worktree.c
worktree: refactor find_linked_symref function
worktree: add a function to get worktree details
worktree: add details to the worktree struct
worktree: add 'list' command
Mike Crowe (3):
push: add recurseSubmodules config option
push: test that --recurse-submodules on command line overrides config
push: follow the "last one wins" convention for --recurse-submodules
Namhyung Kim (1):
stash: allow "stash show" diff output configurable
Nguyễn Thái Ngọc Duy (12):
path.c: delete an extra space
gc: save log from daemonized gc --auto and print it next time
dir.c: make last_exclude_matching_from_list() run til the end
dir.c: don't exclude whole dir prematurely if neg pattern may match
t0002: add test for enter_repo(), non-strict mode
enter_repo: avoid duplicating logic, use is_git_directory() instead
enter_repo: allow .git files in strict mode
clone: allow --local from a linked checkout
clone: better error when --reference is a linked checkout
ls-remote.txt: delete unsupported option
mailinfo: fix passing wrong address to git_mailinfo_config
git-check-ref-format.txt: typo, s/avoids/avoid/
Noam Postavsky (1):
credential-cache: new option to ignore sighup
Pat Thoyts (1):
remote-http(s): support SOCKS proxies
Peter Krefting (4):
gitk: sv.po: Update Swedish translation (311t)
l10n: sv.po: Update Swedish translation (2477t0f0u)
l10n: sv: Fix bad translation
l10n: sv.po: Update Swedish translation (2477t0f0u)
Rainer M. Canavan (1):
configure.ac: use $LIBS not $CFLAGS when testing -lpthread
Ralf Thielow (4):
am, credential-cache: add angle brackets to usage string
push: don't mark options of recurse-submodules for translation
l10n: de.po: improve some translations
l10n: de.po: translate 68 new messages
Ramsay Jones (1):
http: fix some printf format warnings
Ray Donnelly (1):
test-path-utils.c: remove incorrect assumption
Remi Pommarel (3):
Makefile: link libcurl before zlib
Makefile: make curl-config path configurable
configure.ac: detect ssl need with libcurl
Renee Margaret McConahy (1):
am: configure gpg at startup
René Scharfe (17):
use pop_commit() for consuming the first entry of a struct commit_list
t7060: add test for status --branch on a detached HEAD
wt-status: exit early using goto in wt_shortstatus_print_tracking()
wt-status: avoid building bogus branch name with detached HEAD
wt-status: don't skip a magical number of characters blindly
wt-status: use skip_prefix() to get rid of magic string length constants
show-branch: use argv_array for default arguments
run-command: factor out child_process_clear()
daemon: plug memory leak
parse-options: deduplicate parse_options_usage() calls
parse-options: inline parse_options_usage() at its only remaining caller
parse-options: allow -h as a short option
t1450: add tests for NUL in headers of commits and tags
grep: stop using PARSE_OPT_NO_INTERNAL_HELP
fsck: treat a NUL in a tag header as an error
show-ref: stop using PARSE_OPT_NO_INTERNAL_HELP
wt-status: correct and simplify check for detached HEAD
Ronnie Sahlberg (2):
verify_refname_available(): rename function
verify_refname_available(): new function
SZEDER Gábor (8):
bash prompt: test dirty index and worktree while on an orphan branch
bash prompt: remove a redundant 'git diff' option
bash prompt: indicate dirty index even on orphan branches
filter-branch: deal with object name vs. pathname ambiguity in tree-filter
Make error message after failing commit_lock_file() less confusing
completion: remove 'git column' from porcelain commands
completion: fix completing unstuck email alias arguments
credential-store: don't pass strerror to die_errno()
Sam Hocevar (2):
git-p4: support multiple depot paths in p4 submit
git-p4: reduce number of server queries for fetches
Sidhant Sharma (1):
worktree: usage: denote <branch> as optional with 'add'
Stefan Agner (1):
git-send-email.perl: Fixed sending of many/huge changes/patches
Stefan Beller (5):
submodule: rewrite `module_list` shell function in C
submodule: rewrite `module_name` shell function in C
submodule: rewrite `module_clone` shell function in C
submodule-config: "goto" removal in parse_config()
document submodule sync --recursive
Stefan Naewe (1):
revision.c: fix possible null pointer arithmetic
Stephan Beyer (2):
t5561: get rid of racy appending to logfile
t/perf: make runner work even if Git is not installed
Takashi Iwai (4):
pager: don't use unsafe functions in signal handlers
gitk: Update msgid's for menu items with accelerator
gitk: Add accelerators to Japanese locale
gitk: Add accelerator to German locale
Techlive Zheng (7):
contrib/subtree: Clean and refactor test code
contrib/subtree: Add test for missing subtree
contrib/subtree: Add tests for subtree add
contrib/subtree: Add merge tests
contrib/subtree: Add split tests
contrib/subtree: Make each test self-contained
contrib/subtree: Handle '--prefix' argument with a slash appended
Tobias Klauser (8):
connect: fix typo in result string of prot_name()
Documentation/interpret-trailers: Grammar fix
strbuf: make stripspace() part of strbuf
stripspace: use parse-options for command-line parsing
credential-cache--daemon: remove unused #include "sigchain.h"
diff: remove unused #include "sigchain.h"
read-cache: remove unused #include "sigchain.h"
shallow: remove unused #include "sigchain.h"
Torsten Bögershausen (1):
t0027: improve test for not-normalized files
Trần Ngọc Quân (2):
Updated Vietnamese translation
l10n: vi.po: Updated translation (2477t)
Waldek Maleska (1):
Correct fscanf formatting string for I64u values
Xue Fuqiao (2):
Documentation: fix header markup
user-manual: fix the description of fast-forward
YOKOTA Hiroshi (16):
gitk: Color name update
gitk: Re-sync line number in Japanese message catalogue
gitk: Update Japanese message catalog
gitk: Translate more to Japanese catalog
gitk: Translate Japanese catalog
gitk: Fix wrong translation
gitk: Update Japanese translation
gitk: Fix translation around copyright sign
gitk: Update Japanese translation
gitk: Update fuzzy messages
gitk: Change last translator line
gitk: Update year
gitk: Remove unused line
gitk: Improve translation message
gitk: Update "Language:" header
gitk: Update revision date in Japanese PO file
brian m. carlson (15):
sha1_file: introduce has_object_file helper.
Convert struct ref to use object_id.
add_sought_entry_mem: convert to struct object_id
parse_fetch: convert to use struct object_id
get_remote_heads: convert to struct object_id
push_refs_with_export: convert to struct object_id
ref_newer: convert to use struct object_id
object: introduce get_object_hash macro.
Add several uses of get_object_hash.
Convert struct object to object_id
Remove get_object_hash.
remote: convert functions to struct object_id
sha1_file.c: introduce a null_oid constant
format-patch: add an option to suppress commit hash
format-patch: check that header line has expected format
Élie Bouttier (1):
l10n: fr.po: Fix typo
Андрей Рыбак (1):
Documentation: make environment variable formatting more consistent
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.6.0
@ 2015-09-28 23:20 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-09-28 23:20 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.6.0 is now available at the
usual places. It is comprised of 479 non-merge commits since
v2.5.0, contributed by 67 people, 15 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.6.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.5.0 are as follows.
Welcome to the Git development community!
Antoine Delaite, Brett Randall, Brian Degenhardt, Brian Norris,
Erik Elfström, Galan Rémi, Guillaume Pagès, Ismael Luceno,
Jan Viktorin, Jose F. Morales, Lars Schneider, Matthieu Prat,
Michael Rappazzo, Simon A. Eugster, and Zoë Blade.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alejandro R. Sedeño, Alexander Shopov, Alex Henrie, Andreas
Schwab, Beat Bolli, brian m. carlson, Charles Bailey, Christian
Couder, Clemens Buchacher, Dave Borowitz, David Aguilar, David
Turner, Edward Thomson, Elia Pinto, Eric Sunshine, Giuseppe
Bilotta, Heiko Voigt, Ilya Bobyr, Jacob Keller, Jean-Noel
Avila, Jeff King, Jiang Xin, Jim Hill, Johannes Schindelin,
Johannes Sixt, Junio C Hamano, Karsten Blees, Karthik Nayak,
Kevin Daudt, Marc Branchaud, Matthieu Moy, Michael Haggerty,
Michael J Gruber, Mike Hommey, Nguyễn Thái Ngọc Duy, Patrick
Steinhardt, Paul Mackerras, Paul Tan, Peter Krefting, Philip
Oakley, Phillip Sz, Ralf Thielow, Ramsay Jones, Ray Chen, Remi
Lespinet, René Scharfe, Stefan Beller, Sven Strickroth, SZEDER
Gábor, Thomas Ackermann, Thomas Braun, and Trần Ngọc Quân.
----------------------------------------------------------------
Git 2.6 Release Notes
=====================
Updates since v2.5
------------------
UI, Workflows & Features
* An asterisk as a substring (as opposed to the entirety) of a path
component for both side of a refspec, e.g.
"refs/heads/o*:refs/remotes/heads/i*", is now allowed.
* New userdiff pattern definition for fountain screenwriting markup
format has been added.
* "git log" and friends learned a new "--date=format:..." option to
format timestamps using system's strftime(3).
* "git fast-import" learned to respond to the get-mark command via
its cat-blob-fd interface.
* "git rebase -i" learned "drop commit-object-name subject" command
as another way to skip replaying of a commit.
* A new configuration variable can enable "--follow" automatically
when "git log" is run with one pathspec argument.
* "git status" learned to show a more detailed information regarding
the "rebase -i" session in progress.
* "git cat-file" learned "--batch-all-objects" option to enumerate all
available objects in the repository more quickly than "rev-list
--all --objects" (the output includes unreachable objects, though).
* "git fsck" learned to ignore errors on a set of known-to-be-bad
objects, and also allows the warning levels of various kinds of
non-critical breakages to be tweaked.
* "git rebase -i"'s list of todo is made configurable.
* "git send-email" now performs alias-expansion on names that are
given via --cccmd, etc.
* An environment variable GIT_REPLACE_REF_BASE tells Git to look into
refs hierarchy other than refs/replace/ for the object replacement
data.
* Allow untracked cache (experimental) to be used when sparse
checkout (experimental) is also in use.
* "git pull --rebase" has been taught to pay attention to
rebase.autostash configuration.
* The command-line completion script (in contrib/) has been updated.
* A negative !ref entry in multi-value transfer.hideRefs
configuration can be used to say "don't hide this one".
* After "git am" without "-3" stops, running "git am -3" pays attention
to "-3" only for the patch that caused the original invocation
to stop.
* When linked worktree is used, simultaneous "notes merge" instances
for the same ref in refs/notes/* are prevented from stomping on
each other.
* "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.
* A new configuration variable http.sslVersion can be used to specify
what specific version of SSL/TLS to use to make a connection.
* "git notes merge" can be told with "--strategy=<how>" option how to
automatically handle conflicts; this can now be configured by
setting notes.mergeStrategy configuration variable.
* "git log --cc" did not show any patch, even though most of the time
the user meant "git log --cc -p -m" to see patch output for commits
with a single parent, and combined diff for merge commits. The
command is taught to DWIM "--cc" (without "--raw" and other forms
of output specification) to "--cc -p -m".
* "git config --list" output was hard to parse when values consist of
multiple lines. "--name-only" option is added to help this.
* A handful of usability & cosmetic fixes to gitk and l10n updates.
* A completely empty e-mail address <> is now allowed in the authors
file used by git-svn, to match the way it accepts the output from
authors-prog.
Performance, Internal Implementation, Development Support etc.
* In preparation for allowing different "backends" to store the refs
in a way different from the traditional "one ref per file in
$GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
direct filesystem access to ref-like things like CHERRY_PICK_HEAD
from scripts and programs has been reduced.
* Computation of untracked status indicator by bash prompt
script (in contrib/) has been optimized.
* Memory use reduction when commit-slab facility is used to annotate
sparsely (which is not recommended in the first place).
* Clean up refs API and make "git clone" less intimate with the
implementation detail.
* "git pull" was reimplemented in C.
* The packet tracing machinery allows to capture an incoming pack
data to a file for debugging.
* Move machinery to parse human-readable scaled numbers like 1k, 4M,
and 2G as an option parameter's value from pack-objects to
parse-options API, to make it available to other codepaths.
* "git verify-tag" and "git verify-commit" have been taught to share
more code, and then learned to optionally show the verification
message from the underlying GPG implementation.
* Various enhancements around "git am" reading patches generated by
foreign SCM have been made.
* Ref listing by "git branch -l" and "git tag -l" commands has
started to be rebuilt, based on the for-each-ref machinery.
* The code to perform multi-tree merges has been taught to repopulate
the cache-tree upon a successful merge into the index, so that
subsequent "diff-index --cached" (hence "status") and "write-tree"
(hence "commit") will go faster.
The same logic in "git checkout" may now be removed, but that is a
separate issue.
* Tests that assume how reflogs are represented on the filesystem too
much have been corrected.
* "git am" has been rewritten in "C".
* 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.
* The "lockfile" API has been rebuilt on top of a new "tempfile" API.
* 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).
* The gitmodules API that is accessed from the C code learned to
cache stuff lazily.
Also contains various documentation updates and code clean-ups.
Fixes since v2.5
----------------
Unless otherwise noted, all the fixes since v2.5 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git subtree" (in contrib/) depended on "git log" output to be
stable, which was a no-no. Apply a workaround to force a
particular date format.
(merge e7aac44 da/subtree-date-confusion later to maint).
* An attempt to delete a ref by pushing into a repository whose HEAD
symbolic reference points at an unborn branch that cannot be
created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
points at refs/heads/a) failed.
(merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).
* The low-level "git send-pack" did not honor 'user.signingkey'
configuration variable when sending a signed-push.
(merge d830d39 db/send-pack-user-signingkey later to maint).
* "sparse checkout" misbehaved for a path that is excluded from the
checkout when switching between branches that differ at the path.
(merge 7d78241 as/sparse-checkout-removal later to maint).
* An experimental "untracked cache" feature used uname(2) in a
slightly unportable way.
(merge 100e433 cb/uname-in-untracked later to maint).
* A "rebase" replays changes of the local branch on top of something
else, as such they are placed in stage #3 and referred to as
"theirs", while the changes in the new base, typically a foreign
work, are placed in stage #2 and referred to as "ours". Clarify
the "checkout --ours/--theirs".
(merge f303016 se/doc-checkout-ours-theirs later to maint).
* The "rev-parse --parseopt" mode parsed the option specification
and the argument hint in a strange way to allow '=' and other
special characters in the option name while forbidding them from
the argument hint. This made it impossible to define an option
like "--pair <key>=<value>" with "pair=key=value" specification,
which instead would have defined a "--pair=key <value>" option.
(merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).
* Often a fast-import stream builds a new commit on top of the
previous commit it built, and it often unconditionally emits a
"from" command to specify the first parent, which can be omitted in
such a case. This caused fast-import to forget the tree of the
previous commit and then re-read it from scratch, which was
inefficient. Optimize for this common case.
(merge 0df3245 mh/fast-import-optimize-current-from later to maint).
* Running an aliased command from a subdirectory when the .git thing
in the working tree is a gitfile pointing elsewhere did not work.
(merge d95138e nd/export-worktree later to maint).
* "Is this subdirectory a separate repository that should not be
touched?" check "git clean" was inefficient. This was replaced
with a more optimized check.
(merge fbf2fec ee/clean-remove-dirs later to maint).
* The "new-worktree-mode" hack in "checkout" that was added in
nd/multiple-work-trees topic has been removed by updating the
implementation of new "worktree add".
(merge 65f9b75 es/worktree-add-cleanup later to maint).
* Remove remaining cruft from "git checkout --to", which
transitioned to "git worktree add".
(merge 114ff88 es/worktree-add later to maint).
* An off-by-one error made "git remote" to mishandle a remote with a
single letter nickname.
(merge bc598c3 mh/get-remote-group-fix later to maint).
* "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.
(merge adef956 ps/guess-repo-name-at-root later to maint).
* Running tests with the "-x" option to make them verbose had some
unpleasant interactions with other features of the test suite.
(merge 9b5fe78 jk/test-with-x later to maint).
* t1509 test that requires a dedicated VM environment had some
bitrot, which has been corrected.
(merge faacc5a ps/t1509-chroot-test-fixup later to maint).
* "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.
Note that this is irrelevant for 'master' with "git pull" rewritten
in C.
(merge 13e0e28 mm/pull-upload-pack later to maint).
* 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.
(merge dff6f28 cb/open-noatime-clear-errno later to maint).
* 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().
(merge f4c3edc jk/long-error-messages later to maint).
* strbuf_read() used to have one extra iteration (and an unnecessary
strbuf_grow() of 8kB), which was eliminated.
(merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).
* We rewrote one of the build scripts in Perl but this reimplements
in Bourne shell.
(merge 57cee8a sg/help-group later to maint).
* The experimental untracked-cache feature were buggy when paths with
a few levels of subdirectories are involved.
(merge 73f9145 dt/untracked-subdir later to maint).
* "interpret-trailers" helper mistook a single-liner log message that
has a colon as the end of existing trailer.
* The "interpret-trailers" helper mistook a multi-paragraph title of
a commit log message with a colon in it as the end of the trailer
block.
(merge 5c99995 cc/trailers-corner-case-fix later to maint).
* "git describe" without argument defaulted to describe the HEAD
commit, but "git describe --contains" didn't. Arguably, in a
repository used for active development, such defaulting would not
be very useful as the tip of branch is typically not tagged, but it
is better to be consistent.
(merge 2bd0706 sg/describe-contains later to maint).
* 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.
(merge 68c757f db/push-sign-if-asked later to maint).
* Because the configuration system does not allow "alias.0foo" and
"pager.0foo" as the configuration key, the user cannot use '0foo'
as a custom command name anyway, but "git 0foo" tried to look these
keys up and emitted useless warnings before saying '0foo is not a
git command'. These warning messages have been squelched.
(merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint).
* "git rev-list" does not take "--notes" option, but did not complain
when one is given.
(merge 2aea7a5 jk/rev-list-has-no-notes later to maint).
* When re-priming the cache-tree opportunistically while committing
the in-core index as-is, we mistakenly invalidated the in-core
index too aggressively, causing the experimental split-index code
to unnecessarily rewrite the on-disk index file(s).
(merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint).
* "git archive" did not use zip64 extension when creating an archive
with more than 64k entries, which nobody should need, right ;-)?
(merge 88329ca rs/archive-zip-many later to maint).
* The code in "multiple-worktree" support that attempted to recover
from an inconsistent state updated an incorrect file.
(merge 82fde87 nd/fixup-linked-gitdir later to maint).
* On case insensitive systems, "git p4" did not work well with client
specs.
* "git init empty && git -C empty log" said "bad default revision 'HEAD'",
which was found to be a bit confusing to new users.
(merge ce11360 jk/log-missing-default-HEAD later to maint).
* Recent versions of scripted "git am" has a performance regression in
"git am --skip" codepath, which no longer exists in the built-in
version on the 'master' front. Fix the regression in the last
scripted version that appear in 2.5.x maintenance track and older.
(merge b9d6689 js/maint-am-skip-performance-regression later to maint).
* The branch descriptions that are set with "git branch --edit-description"
option were used in many places but they weren't clearly documented.
(merge 561d2b7 po/doc-branch-desc later to maint).
* Code cleanups and documentation updates.
(merge 1c601af es/doc-clean-outdated-tools later to maint).
(merge 3581304 kn/tag-doc-fix later to maint).
(merge 3a59e59 kb/i18n-doc later to maint).
(merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
(merge 14691e3 sb/parse-options-codeformat later to maint).
(merge 4a6ada3 ad/bisect-cleanup later to maint).
(merge da4c5ad ta/docfix-index-format-tech later to maint).
(merge ae25fd3 sb/check-return-from-read-ref later to maint).
(merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
(merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
(merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
(merge 1269847 sg/t3020-typofix later to maint).
(merge 8b54c23 jc/calloc-pathspec later to maint).
(merge a6926b8 po/po-readme later to maint).
(merge 54d160e ss/fix-config-fd-leak later to maint).
(merge b80fa84 ah/submodule-typofix-in-error later to maint).
(merge 99885bc ah/reflog-typofix-in-error later to maint).
(merge 9476c2c ah/read-tree-usage-string later to maint).
(merge b8c1d27 ah/pack-objects-usage-strings later to maint).
(merge 486e1e1 br/svn-doc-include-paths-config later to maint).
(merge 1733ed3 ee/clean-test-fixes later to maint).
(merge 5fcadc3 gb/apply-comment-typofix later to maint).
(merge b894d3e mp/t7060-diff-index-test later to maint).
(merge d238710 as/config-doc-markup-fix later to maint).
----------------------------------------------------------------
Changes since v2.5.0 are as follows:
Alejandro R. Sedeño (1):
Makefile: use SHELL_PATH when running generate-cmdlist.sh
Alex Henrie (8):
gitk: Fix bad English grammar "Matches none Commit Info"
gitk: Remove mc parameter from proc show_error
reflog: add missing single quote to error message
git-submodule: remove extraneous space from error message
pack-objects: place angle brackets around placeholders in usage strings
read-tree: replace bracket set with parentheses to clarify usage
show-ref: place angle brackets around variables in usage string
l10n: ca.po: update translation
Alexander Shopov (2):
gitk: Update Bulgarian translation (304t)
gitk: Update Bulgarian translation (307t)
Andreas Schwab (2):
Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable
Documentation/config: fix formatting for branch.*.rebase and pull.rebase
Antoine Delaite (3):
bisect: correction of typo
bisect: replace hardcoded "bad|good" by variables
bisect: simplify the addition of new bisect terms
Beat Bolli (2):
gitk: Add a "Copy commit summary" command
gitk: Adjust the menu line numbers to compensate for the new entry
Brett Randall (1):
git-svn doc: mention "svn-remote.<name>.include-paths"
Brian Degenhardt (1):
unpack-trees: populate cache-tree on successful merge
Brian Norris (1):
send-email: fix uninitialized var warning for $smtp_auth
Charles Bailey (3):
test-parse-options: update to handle negative ints
parse-options: move unsigned long option parsing out of pack-objects.c
untracked: fix detection of uname(2) failure
Christian Couder (3):
trailer: ignore first line of message
trailer: retitle a test and correct an in-comment message
trailer: support multiline title
Clemens Buchacher (1):
git_open_noatime: return with errno=0 on success
Dave Borowitz (9):
Documentation/git-push.txt: document when --signed may fail
Documentation/git-send-pack.txt: wrap long synopsis line
Documentation/git-send-pack.txt: document --signed
gitremote-helpers.txt: document pushcert option
transport: remove git_transport_options.push_cert
config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
builtin/send-pack.c: use parse_options API
push: support signing pushes iff the server supports it
push: add a config option push.gpgSign for default signed pushes
David Aguilar (1):
contrib/subtree: ignore log.date configuration
David Turner (22):
log: add "log.follow" configuration variable
unpack-trees: don't update files with CE_WT_REMOVE set
refs.c: add err arguments to reflog functions
refs: break out check for reflog autocreation
refs: new public ref function: safe_create_reflog
git-reflog: add exists command
refs: add REF_FORCE_CREATE_REFLOG flag
update-ref and tag: add --create-reflog arg
git-stash: use update-ref --create-reflog instead of creating files
t/t7509: remove unnecessary manipulation of reflog
tests: remove some direct access to .git/logs
refs: introduce pseudoref and per-worktree ref concepts
refs: add ref_type function
pseudorefs: create and use pseudoref update and delete functions
bisect: use update_ref
sequencer: replace write_cherry_pick_head with update_ref
untracked-cache: support sparse checkout
worktrees: add find_shared_symref
notes: handle multiple worktrees
pseudoref: check return values from read_ref()
untracked-cache: fix subdirectory handling
commit: don't rewrite shared index unnecessarily
Edward Thomson (1):
poll: honor the timeout on Win32
Elia Pinto (1):
http: add support for specifying the SSL version
Eric Sunshine (31):
config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
checkout: avoid resolving HEAD unnecessarily
checkout: name check_linked_checkouts() more meaningfully
checkout: improve die_if_checked_out() robustness
checkout: die_if_checked_out: simplify strbuf management
checkout: generalize die_if_checked_out() branch name argument
checkout: check_linked_checkout: improve "already checked out" aesthetic
checkout: check_linked_checkout: simplify symref parsing
checkout: teach check_linked_checkout() about symbolic link HEAD
branch: publish die_if_checked_out()
worktree: improve worktree setup message
worktree: simplify new branch (-b/-B) option checking
worktree: introduce options container
worktree: make --detach mutually exclusive with -b/-B
worktree: add: suppress auto-vivication with --detach and no <branch>
worktree: make branch creation distinct from worktree population
worktree: elucidate environment variables intended for child processes
worktree: add_worktree: construct worktree-population command locally
worktree: detect branch-name/detached and error conditions locally
worktree: make setup of new HEAD distinct from worktree population
worktree: avoid resolving HEAD unnecessarily
worktree: populate via "git reset --hard" rather than "git checkout"
checkout: drop intimate knowledge of newly created worktree
Documentation/git-worktree: fix broken 'linkgit' invocation
Documentation/git: drop outdated Cogito reference
Documentation/git-tools: improve discoverability of Git wiki
Documentation/git-tools: fix item text formatting
Documentation/git-tools: drop references to defunct tools
Documentation/git-tools: retire manually-maintained list
Documentation/config: mention "now" and "never" for 'expire' settings
generate-cmdlist: re-implement as shell script
Erik Elfström (6):
setup: add gentle version of read_gitfile
setup: sanity check file size in read_gitfile_gently
t7300: add tests to document behavior of clean and nested git
p7300: add performance tests for clean
clean: improve performance when removing lots of directories
t7300: fix broken && chains
Galan Rémi (3):
git-rebase -i: add command "drop" to remove a commit
git rebase -i: warn about removed commits
git rebase -i: add static check for commands and SHA-1
Giuseppe Bilotta (2):
apply: comment grammar fix
gitk: Accelerators for the main menu
Guillaume Pagès (4):
status: factor two rebase-related messages together
status: differentiate interactive from non-interactive rebases
status: give more information during rebase -i
status: add new tests for status during rebase -i
Heiko Voigt (4):
submodule: implement a config API for lookup of .gitmodules values
submodule: extract functions for config set and lookup
submodule: use new config API for worktree configurations
submodule: allow erroneous values for the fetchRecurseSubmodules option
Ilya Bobyr (1):
rev-parse --parseopt: allow [*=?!] in argument hints
Ismael Luceno (1):
gitk: Make it easier to go quickly to a specific commit
Jacob Keller (8):
refs: cleanup comments regarding check_refname_component()
refs: loosen restriction on wildcard "*" refspecs
notes: document cat_sort_uniq rewriteMode
notes: extract enum notes_merge_strategy to notes-utils.h
notes: extract parse_notes_merge_strategy to notes-utils
notes: add tests for --commit/--abort/--strategy exclusivity
notes: add notes.mergeStrategy option to select default strategy
notes: teach git-notes about notes.<name>.mergeStrategy option
Jan Viktorin (1):
send-email: provide whitelist of SMTP AUTH mechanisms
Jean-Noel Avila (2):
l10n: fr.po v2.6.0 round 1 (2441t)
l10n: fr.po v2.6.0 round 2 (2440t)
Jeff King (51):
pkt-line: simplify starts_with checks in packet tracing
pkt-line: tighten sideband PACK check when tracing
pkt-line: support tracing verbatim pack contents
cat-file: minor style fix in options list
cat-file: move batch_options definition to top of file
cat-file: add --buffer option
cat-file: stop returning value from batch_one_object
cat-file: split batch_one_object into two stages
cat-file: add --batch-all-objects option
read_gitfile_gently: fix use-after-free
cat-file: sort and de-dup output of --batch-all-objects
show-branch: use DATE_RELATIVE instead of magic number
convert "enum date_mode" into a struct
introduce "format" date-mode
strbuf: make strbuf_addftime more robust
docs/config.txt: reorder hideRefs config
refs: support negative transfer.hideRefs
test-lib: turn off "-x" tracing during chain-lint check
test-lib: disable trace when test is not verbose
clone: add tests for output directory
clone: use computed length in guess_dir_name
cache.h: clarify documentation for git_path, et al
cache.h: complete set of git_path_submodule helpers
t5700: modernize style
add_to_alternates_file: don't add duplicate entries
prefer git_pathdup to git_path in some possibly-dangerous cases
prefer mkpathdup to mkpath in assignments
remote.c: drop extraneous local variable from migrate_file
refs.c: remove extra git_path calls from read_loose_refs
path.c: drop git_path_submodule
refs.c: simplify strbufs in reflog setup and writing
refs.c: avoid repeated git_path calls in rename_tmp_log
refs.c: avoid git_path assignment in lock_ref_sha1_basic
refs.c: remove_empty_directories can take a strbuf
find_hook: keep our own static buffer
get_repo_path: refactor path-allocation
memoize common git-path "constant" files
vreportf: report to arbitrary filehandles
vreportf: avoid intermediate buffer
format_config: don't init strbuf
format_config: simplify buffer handling
get_urlmatch: avoid useless strbuf write
config: silence warnings for command names with invalid keys
rev-list: make it obvious that we do not support notes
log: diagnose empty HEAD more clearly
rerere: release lockfile in non-writing functions
pack-protocol: clarify LF-handling in PKT-LINE()
verify_absent: allow filenames longer than PATH_MAX
notes: use a strbuf in add_non_note
read_info_alternates: handle paths larger than PATH_MAX
show-branch: use a strbuf for reflog descriptions
Jiang Xin (8):
receive-pack: crash when checking with non-exist HEAD
l10n: TEAMS: stash inactive zh_CN team members
l10n: zh_CN: Add translations for Git glossary
i18n: am: fix typo in description of -b option
l10n: git.pot: v2.6.0 round 1 (123 new, 41 removed)
l10n: zh_CN: for git v2.6.0 l10n round 1
l10n: git.pot: v2.6.0 round 2 (3 improvements)
l10n: zh_CN: for git v2.6.0 l10n round 2
Jim Hill (1):
strbuf_read(): skip unnecessary strbuf_grow() at eof
Johannes Schindelin (20):
fsck: introduce fsck options
fsck: introduce identifiers for fsck messages
fsck: provide a function to parse fsck message IDs
fsck: offer a function to demote fsck errors to warnings
fsck (receive-pack): allow demoting errors to warnings
fsck: report the ID of the error/warning
fsck: make fsck_ident() warn-friendly
fsck: make fsck_commit() warn-friendly
fsck: handle multiple authors in commits specially
fsck: make fsck_tag() warn-friendly
fsck: add a simple test for receive.fsck.<msg-id>
fsck: disallow demoting grave fsck errors to warnings
fsck: optionally ignore specific fsck issues completely
fsck: allow upgrading fsck warnings to errors
fsck: document the new receive.fsck.<msg-id> options
fsck: support demoting errors to warnings
fsck: introduce `git fsck --connectivity-only`
fsck: git receive-pack: support excluding objects from fsck'ing
fsck: support ignoring objects in `git fsck` via fsck.skiplist
am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
Johannes Sixt (2):
t7300-clean: require POSIXPERM for chmod 0 test
t2019: skip test requiring '*' in a file name non Windows
Jose F. Morales (1):
Mingw: verify both ends of the pipe () call
Junio C Hamano (40):
commit-slab: introduce slabname##_peek() function
builtin/send-pack.c: respect user.signingkey
Git 2.4.8
First batch for 2.6
sha1_file.c: rename move_temp_to_file() to finalize_object_file()
Second batch for 2.6
Third batch for 2.6
Start preparing for 2.5.1
Fourth batch for 2.6
ps_matched: xcalloc() takes nmemb and then element size
log: rename "tweak" helpers
log: when --cc is given, default to -p unless told otherwise
log: show merge commit when --cc is given
builtin/am: introduce write_state_*() helper functions
builtin/am: make sure state files are text
write_file(): drop "fatal" parameter
write_file_v(): do not leave incomplete line at the end
write_file(): drop caller-supplied LF from calls to create a one-liner file
builtin/log.c: minor reformat
Fifth batch for 2.6
pull: pass upload_pack only when it was given
Sixth batch for 2.6
Git 2.5.1
Seventh batch for 2.6
Eighth batch for 2.6
Ninth batch for 2.6
Git 2.6-rc0
Git 2.2.3
Git 2.3.9
Git 2.4.9
Git 2.5.2
am: match --signoff to the original scripted version
Git 2.6-rc1
Release Notes: typofix
Git 2.6-rc2
Update RelNotes to 2.6 to describe leftover bits since -rc2
Git 2.5.3
Update RelNotes to 2.6
Git 2.6-rc3
Git 2.6
Karsten Blees (1):
Documentation/i18n.txt: clarify character encoding support
Karthik Nayak (12):
for-each-ref: extract helper functions out of grab_single_ref()
for-each-ref: clean up code
for-each-ref: rename 'refinfo' to 'ref_array_item'
for-each-ref: introduce new structures for better organisation
for-each-ref: introduce 'ref_array_clear()'
for-each-ref: rename some functions and make them public
for-each-ref: rename variables called sort to sorting
ref-filter: add 'ref-filter.h'
Documentation/tag: remove double occurance of "<pattern>"
ref-filter: move code from 'for-each-ref'
for-each-ref: introduce filter_refs()
ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
Kevin Daudt (1):
pull: allow dirty tree when rebase.autostash enabled
Lars Schneider (1):
git-p4: honor core.ignorecase when using P4 client specs
Marc Branchaud (3):
gitk: Rearrange window title to be more conventional
gitk: Show the current view's name in the window title
gitk: Use translated version of "Command line" in getcommitlines
Matthieu Moy (3):
Documentation/bisect: move getting help section to the end
pull.sh: quote $upload_pack when passing it to git-fetch
bisect: don't mix option parsing and non-trivial code
Matthieu Prat (1):
t7060: actually test "git diff-index --cached -M"
Michael Haggerty (45):
delete_ref(): move declaration to refs.h
remove_branches(): remove temporary
delete_ref(): handle special case more explicitly
delete_refs(): new function for the refs API
delete_refs(): make error message more generic
delete_refs(): bail early if the packed-refs file cannot be rewritten
prune_remote(): use delete_refs()
prune_refs(): use delete_refs()
repack_without_refs(): make function private
initial_ref_transaction_commit(): function for initial ref creation
refs: remove some functions from the module's public interface
initial_ref_transaction_commit(): check for duplicate refs
initial_ref_transaction_commit(): check for ref D/F conflicts
refs: move the remaining ref module declarations to refs.h
refs.h: add some parameter names to function declarations
check_branch_commit(): make first parameter const
update_ref(): don't read old reference value before delete
cmd_update_ref(): make logic more straightforward
delete_ref(): use the usual convention for old_sha1
Documentation/bisect: revise overall content
fast-import: add a get-mark command
Documentation/git-worktree: consistently use term "linked working tree"
Documentation/git-worktree: fix incorrect reference to file "locked"
Documentation/config: fix stale "git prune --worktree" reference
Documentation/git-worktree: wordsmith worktree-related manpages
get_remote_group(): handle remotes with single-character names
get_remote_group(): rename local variable "space" to "wordlen"
get_remote_group(): eliminate superfluous call to strcspn()
get_remote_group(): use skip_prefix()
lockfile: move documentation to lockfile.h and lockfile.c
create_bundle(): duplicate file descriptor to avoid closing it twice
lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
lockfile: add accessor get_lock_file_path()
commit_lock_file(): use get_locked_file_path()
tempfile: a new module for handling temporary files
prepare_tempfile_object(): new function, extracted from create_tempfile()
tempfile: add several functions for creating temporary files
register_tempfile(): new function to handle an existing temporary file
write_shared_index(): use tempfile module
setup_temporary_shallow(): use tempfile module
diff: use tempfile module
lock_repo_for_gc(): compute the path to "gc.pid" only once
gc: use tempfile module to handle gc.pid file
credential-cache--daemon: delete socket from main()
credential-cache--daemon: use tempfile module
Michael J Gruber (1):
git-svn: parse authors file more leniently
Michael Rappazzo (2):
gitk: Add mouse right-click options to copy path and branch name
git-rebase--interactive.sh: add config option for custom instruction format
Mike Hommey (2):
Allow to control where the replace refs are looked for
fast-import: do less work when given "from" matches current branch head
Nguyễn Thái Ngọc Duy (4):
setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
t7063: use --force-untracked-cache to speed up a bit
untracked cache: fix entry invalidation
setup: update the right file in multiple checkouts
Patrick Steinhardt (6):
Documentation/git-worktree: fix duplicated 'from'
tests: fix broken && chains in t1509-root-worktree
tests: fix cleanup after tests in t1509-root-worktree
clone: do not include authentication data in guessed dir
clone: do not use port number as dir name
clone: abort if no dir name could be guessed
Paul Mackerras (3):
gitk: Replace catch {unset foo} with unset -nocomplain foo
gitk: Fix error when changing colors after closing "List references" window
gitk: Update .po files
Paul Tan (85):
t4150: test applying StGit patch
am: teach StGit patch parser how to read from stdin
t4150: test applying StGit series
am: use gmtime() to parse mercurial patch date
am: teach mercurial patch parser how to read from stdin
parse-options-cb: implement parse_opt_passthru()
parse-options-cb: implement parse_opt_passthru_argv()
argv-array: implement argv_array_pushv()
pull: implement skeletal builtin pull
pull: implement fetch + merge
pull: pass verbosity, --progress flags to fetch and merge
pull: pass git-merge's options to git-merge
pull: pass git-fetch's options to git-fetch
pull: error on no merge candidates
pull: support pull.ff config
pull: check if in unresolved merge state
pull: fast-forward working tree if head is updated
pull: implement pulling into an unborn branch
pull: set reflog message
pull: teach git pull about --rebase
pull: configure --rebase via branch.<name>.rebase or pull.rebase
pull --rebase: exit early when the working directory is dirty
pull --rebase: error on no merge candidate cases
pull: remove redirection to git-pull.sh
t4150: am.messageid really adds the message id
t4150: am fails if index is dirty
t4151: am --abort will keep dirty index intact
t4150: am refuses patches when paused
t4150: am --resolved fails if index has no changes
t4150: am --resolved fails if index has unmerged entries
t4150: am with applypatch-msg hook
t4150: am with pre-applypatch hook
t4150: am with post-applypatch hook
t4150: tests for am --[no-]scissors
t3418: non-interactive rebase --continue with rerere enabled
t3901: test git-am encoding conversion
wrapper: implement xopen()
wrapper: implement xfopen()
builtin-am: implement skeletal builtin am
builtin-am: implement patch queue mechanism
builtin-am: split out mbox/maildir patches with git-mailsplit
builtin-am: auto-detect mbox patches
builtin-am: extract patch and commit info with git-mailinfo
builtin-am: apply patch with git-apply
builtin-am: implement committing applied patch
builtin-am: refuse to apply patches if index is dirty
builtin-am: implement --resolved/--continue
builtin-am: don't parse mail when resuming
builtin-am: implement --skip
builtin-am: implement --abort
builtin-am: reject patches when there's a session in progress
builtin-am: implement -q/--quiet
builtin-am: exit with user friendly message on failure
builtin-am: implement -s/--signoff
cache-tree: introduce write_index_as_tree()
builtin-am: implement --3way
builtin-am: implement --rebasing mode
builtin-am: bypass git-mailinfo when --rebasing
builtin-am: handle stray state directory
builtin-am: implement -u/--utf8
builtin-am: implement -k/--keep, --keep-non-patch
builtin-am: implement --[no-]message-id, am.messageid
builtin-am: support --keep-cr, am.keepcr
builtin-am: implement --[no-]scissors
builtin-am: pass git-apply's options to git-apply
builtin-am: implement --ignore-date
builtin-am: implement --committer-date-is-author-date
builtin-am: implement -S/--gpg-sign, commit.gpgsign
builtin-am: invoke post-rewrite hook
builtin-am: support automatic notes copying
builtin-am: invoke applypatch-msg hook
builtin-am: invoke pre-applypatch hook
builtin-am: invoke post-applypatch hook
builtin-am: rerere support
builtin-am: support and auto-detect StGit patches
builtin-am: support and auto-detect StGit series files
builtin-am: support and auto-detect mercurial patches
builtin-am: implement -i/--interactive
builtin-am: implement legacy -b/--binary option
builtin-am: check for valid committer ident
builtin-am: remove redirection to git-am.sh
test_terminal: redirect child process' stdin to a pty
am: let command-line options override saved options
am: let --signoff override --no-signoff
am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
Peter Krefting (2):
gitk: sv.po: Update Swedish translation (305t0f0u)
l10n: sv.po: Update Swedish translation (2441t0f0u)
Philip Oakley (2):
po/README: Update directions for l10n contributors
doc: show usage of branch description
Phillip Sz (1):
l10n: de.po: better language for one string
Ralf Thielow (5):
lockfile: remove function "hold_lock_file_for_append"
pull: don't mark values for option "rebase" for translation
tag, update-ref: improve description of option "create-reflog"
l10n: de.po: translate 123 new messages
l10n: de.po: translate 2 messages
Ramsay Jones (1):
mailmap: update my entry with new email address
Ray Chen (10):
l10n: zh_CN: Update Translation: "tag object"
l10n: zh_CN: Unify Translation of "packfile"
l10n: zh_CN: Update Translation of "tag"
l10n: zh_CN: Add Surrounding Spaces
l10n: zh_CN: Update Git Glossary: SHA-1
l10n: zh_CN: Update Git Glossary: "dumb", "smart"
l10n: zh_CN: Update Git Glossary: tag
l10n: zh_CN: Update Git Glossary: fork
l10n: zh_CN: Update Git Glossary: pickaxe
l10n: zh_CN: Update Git Glossary: "commit message"
Remi Lespinet (11):
t9001-send-email: move script creation in a setup test
send-email: allow aliases in patch header and command script outputs
t9001-send-email: refactor header variable fields replacement
send-email: refactor address list process
send-email: allow use of aliases in the From field of --compose mode
send-email: minor code refactoring
send-email: reduce dependencies impact on parse_address_line
send-email: consider quote as delimiter instead of character
send-email: allow multiple emails using --cc, --to and --bcc
send-email: suppress meaningless whitespaces in from field
git-am: add am.threeWay config variable
René Scharfe (3):
t5004: test ZIP archives with many entries
archive-zip: use a local variable to store the creator version
archive-zip: support more than 65535 entries
SZEDER Gábor (8):
bash prompt: test untracked files status indicator with untracked dirs
bash prompt: faster untracked status indicator with untracked directories
config: add '--name-only' option to list only variable names
completion: list variable names reliably with 'git config --name-only'
t3020: fix typo in test description
config: restructure format_config() for better control flow
wt-status: move #include "pathspec.h" to the header
describe --contains: default to HEAD when no commit-ish is given
Simon A. Eugster (1):
checkout: document subtlety around --ours/--theirs
Stefan Beller (4):
parse-options: align curly braces for all options
add: remove dead code
transport-helper: die on errors reading refs.
read-cache: fix indentation in read_index_from
Sven Strickroth (1):
config: close config file handle in case of error
Thomas Ackermann (1):
typofix for index-format.txt
Thomas Braun (1):
completion: offer '--edit-todo' during interactive rebase
Trần Ngọc Quân (2):
l10n: Updated Vietnamese translation (2441t)
l10n: Update and review Vietnamese translation (2440t)
Zoë Blade (1):
userdiff: add support for Fountain documents
brian m. carlson (7):
verify-tag: add tests
verify-tag: share code with verify-commit
verify-commit: add test for exit status on untrusted signature
gpg: centralize signature check
gpg: centralize printing signature buffers
verify-commit: add option to print raw gpg status information
verify-tag: add option to print raw gpg status information
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.6.0-rc3
@ 2015-09-21 21:49 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-09-21 21:49 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.6.0-rc3 is now available for testing
at the usual places. It is comprised of 478 non-merge commits
since v2.5.0, contributed by 67 people, 15 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.6.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.5.0 are as follows.
Welcome to the Git development community!
Antoine Delaite, Brett Randall, Brian Degenhardt, Brian Norris,
Erik Elfström, Galan Rémi, Guillaume Pagès, Ismael Luceno,
Jan Viktorin, Jose F. Morales, Lars Schneider, Matthieu Prat,
Michael Rappazzo, Simon A. Eugster, and Zoë Blade.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alejandro R. Sedeño, Alexander Shopov, Alex Henrie, Andreas
Schwab, Beat Bolli, brian m. carlson, Charles Bailey, Christian
Couder, Clemens Buchacher, Dave Borowitz, David Aguilar, David
Turner, Edward Thomson, Elia Pinto, Eric Sunshine, Giuseppe
Bilotta, Heiko Voigt, Ilya Bobyr, Jacob Keller, Jean-Noel
Avila, Jeff King, Jiang Xin, Jim Hill, Johannes Schindelin,
Johannes Sixt, Junio C Hamano, Karsten Blees, Karthik Nayak,
Kevin Daudt, Marc Branchaud, Matthieu Moy, Michael Haggerty,
Michael J Gruber, Mike Hommey, Nguyễn Thái Ngọc Duy, Patrick
Steinhardt, Paul Mackerras, Paul Tan, Peter Krefting, Philip
Oakley, Phillip Sz, Ralf Thielow, Ramsay Jones, Ray Chen, Remi
Lespinet, René Scharfe, Stefan Beller, Sven Strickroth, SZEDER
Gábor, Thomas Ackermann, Thomas Braun, and Trần Ngọc Quân.
----------------------------------------------------------------
Git 2.6 Release Notes (draft)
=============================
Updates since v2.5
------------------
UI, Workflows & Features
* An asterisk as a substring (as opposed to the entirety) of a path
component for both side of a refspec, e.g.
"refs/heads/o*:refs/remotes/heads/i*", is now allowed.
* New userdiff pattern definition for fountain screenwriting markup
format has been added.
* "git log" and friends learned a new "--date=format:..." option to
format timestamps using system's strftime(3).
* "git fast-import" learned to respond to the get-mark command via
its cat-blob-fd interface.
* "git rebase -i" learned "drop commit-object-name subject" command
as another way to skip replaying of a commit.
* A new configuration variable can enable "--follow" automatically
when "git log" is run with one pathspec argument.
* "git status" learned to show a more detailed information regarding
the "rebase -i" session in progress.
* "git cat-file" learned "--batch-all-objects" option to enumerate all
available objects in the repository more quickly than "rev-list
--all --objects" (the output includes unreachable objects, though).
* "git fsck" learned to ignore errors on a set of known-to-be-bad
objects, and also allows the warning levels of various kinds of
non-critical breakages to be tweaked.
* "git rebase -i"'s list of todo is made configurable.
* "git send-email" now performs alias-expansion on names that are
given via --cccmd, etc.
* An environment variable GIT_REPLACE_REF_BASE tells Git to look into
refs hierarchy other than refs/replace/ for the object replacement
data.
* Allow untracked cache (experimental) to be used when sparse
checkout (experimental) is also in use.
* "git pull --rebase" has been taught to pay attention to
rebase.autostash configuration.
* The command-line completion script (in contrib/) has been updated.
* A negative !ref entry in multi-value transfer.hideRefs
configuration can be used to say "don't hide this one".
* After "git am" without "-3" stops, running "git am -3" pays attention
to "-3" only for the patch that caused the original invocation
to stop.
* When linked worktree is used, simultaneous "notes merge" instances
for the same ref in refs/notes/* are prevented from stomping on
each other.
* "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.
* A new configuration variable http.sslVersion can be used to specify
what specific version of SSL/TLS to use to make a connection.
* "git notes merge" can be told with "--strategy=<how>" option how to
automatically handle conflicts; this can now be configured by
setting notes.mergeStrategy configuration variable.
* "git log --cc" did not show any patch, even though most of the time
the user meant "git log --cc -p -m" to see patch output for commits
with a single parent, and combined diff for merge commits. The
command is taught to DWIM "--cc" (without "--raw" and other forms
of output specification) to "--cc -p -m".
* "git config --list" output was hard to parse when values consist of
multiple lines. "--name-only" option is added to help this.
* A handful of usability & cosmetic fixes to gitk and l10n updates.
* A completely empty e-mail address <> is now allowed in the authors
file used by git-svn, to match the way it accepts the output from
authors-prog.
Performance, Internal Implementation, Development Support etc.
* In preparation for allowing different "backends" to store the refs
in a way different from the traditional "one ref per file in
$GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
direct filesystem access to ref-like things like CHERRY_PICK_HEAD
from scripts and programs has been reduced.
* Computation of untracked status indicator by bash prompt
script (in contrib/) has been optimized.
* Memory use reduction when commit-slab facility is used to annotate
sparsely (which is not recommended in the first place).
* Clean up refs API and make "git clone" less intimate with the
implementation detail.
* "git pull" was reimplemented in C.
* The packet tracing machinery allows to capture an incoming pack
data to a file for debugging.
* Move machinery to parse human-readable scaled numbers like 1k, 4M,
and 2G as an option parameter's value from pack-objects to
parse-options API, to make it available to other codepaths.
* "git verify-tag" and "git verify-commit" have been taught to share
more code, and then learned to optionally show the verification
message from the underlying GPG implementation.
* Various enhancements around "git am" reading patches generated by
foreign SCM have been made.
* Ref listing by "git branch -l" and "git tag -l" commands has
started to be rebuilt, based on the for-each-ref machinery.
* The code to perform multi-tree merges has been taught to repopulate
the cache-tree upon a successful merge into the index, so that
subsequent "diff-index --cached" (hence "status") and "write-tree"
(hence "commit") will go faster.
The same logic in "git checkout" may now be removed, but that is a
separate issue.
* Tests that assume how reflogs are represented on the filesystem too
much have been corrected.
* "git am" has been rewritten in "C".
* 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.
* The "lockfile" API has been rebuilt on top of a new "tempfile" API.
* 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).
* The gitmodules API that is accessed from the C code learned to
cache stuff lazily.
Also contains various documentation updates and code clean-ups.
Fixes since v2.5
----------------
Unless otherwise noted, all the fixes since v2.5 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git subtree" (in contrib/) depended on "git log" output to be
stable, which was a no-no. Apply a workaround to force a
particular date format.
(merge e7aac44 da/subtree-date-confusion later to maint).
* An attempt to delete a ref by pushing into a repository whose HEAD
symbolic reference points at an unborn branch that cannot be
created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
points at refs/heads/a) failed.
(merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).
* The low-level "git send-pack" did not honor 'user.signingkey'
configuration variable when sending a signed-push.
(merge d830d39 db/send-pack-user-signingkey later to maint).
* "sparse checkout" misbehaved for a path that is excluded from the
checkout when switching between branches that differ at the path.
(merge 7d78241 as/sparse-checkout-removal later to maint).
* An experimental "untracked cache" feature used uname(2) in a
slightly unportable way.
(merge 100e433 cb/uname-in-untracked later to maint).
* A "rebase" replays changes of the local branch on top of something
else, as such they are placed in stage #3 and referred to as
"theirs", while the changes in the new base, typically a foreign
work, are placed in stage #2 and referred to as "ours". Clarify
the "checkout --ours/--theirs".
(merge f303016 se/doc-checkout-ours-theirs later to maint).
* The "rev-parse --parseopt" mode parsed the option specification
and the argument hint in a strange way to allow '=' and other
special characters in the option name while forbidding them from
the argument hint. This made it impossible to define an option
like "--pair <key>=<value>" with "pair=key=value" specification,
which instead would have defined a "--pair=key <value>" option.
(merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).
* Often a fast-import stream builds a new commit on top of the
previous commit it built, and it often unconditionally emits a
"from" command to specify the first parent, which can be omitted in
such a case. This caused fast-import to forget the tree of the
previous commit and then re-read it from scratch, which was
inefficient. Optimize for this common case.
(merge 0df3245 mh/fast-import-optimize-current-from later to maint).
* Running an aliased command from a subdirectory when the .git thing
in the working tree is a gitfile pointing elsewhere did not work.
(merge d95138e nd/export-worktree later to maint).
* "Is this subdirectory a separate repository that should not be
touched?" check "git clean" was inefficient. This was replaced
with a more optimized check.
(merge fbf2fec ee/clean-remove-dirs later to maint).
* The "new-worktree-mode" hack in "checkout" that was added in
nd/multiple-work-trees topic has been removed by updating the
implementation of new "worktree add".
(merge 65f9b75 es/worktree-add-cleanup later to maint).
* Remove remaining cruft from "git checkout --to", which
transitioned to "git worktree add".
(merge 114ff88 es/worktree-add later to maint).
* An off-by-one error made "git remote" to mishandle a remote with a
single letter nickname.
(merge bc598c3 mh/get-remote-group-fix later to maint).
* "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.
(merge adef956 ps/guess-repo-name-at-root later to maint).
* Running tests with the "-x" option to make them verbose had some
unpleasant interactions with other features of the test suite.
(merge 9b5fe78 jk/test-with-x later to maint).
* t1509 test that requires a dedicated VM environment had some
bitrot, which has been corrected.
(merge faacc5a ps/t1509-chroot-test-fixup later to maint).
* "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.
Note that this is irrelevant for 'master' with "git pull" rewritten
in C.
(merge 13e0e28 mm/pull-upload-pack later to maint).
* 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.
(merge dff6f28 cb/open-noatime-clear-errno later to maint).
* 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().
(merge f4c3edc jk/long-error-messages later to maint).
* strbuf_read() used to have one extra iteration (and an unnecessary
strbuf_grow() of 8kB), which was eliminated.
(merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).
* We rewrote one of the build scripts in Perl but this reimplements
in Bourne shell.
(merge 57cee8a sg/help-group later to maint).
* The experimental untracked-cache feature were buggy when paths with
a few levels of subdirectories are involved.
(merge 73f9145 dt/untracked-subdir later to maint).
* "interpret-trailers" helper mistook a single-liner log message that
has a colon as the end of existing trailer.
* The "interpret-trailers" helper mistook a multi-paragraph title of
a commit log message with a colon in it as the end of the trailer
block.
(merge 5c99995 cc/trailers-corner-case-fix later to maint).
* "git describe" without argument defaulted to describe the HEAD
commit, but "git describe --contains" didn't. Arguably, in a
repository used for active development, such defaulting would not
be very useful as the tip of branch is typically not tagged, but it
is better to be consistent.
(merge 2bd0706 sg/describe-contains later to maint).
* 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.
(merge 68c757f db/push-sign-if-asked later to maint).
* Because the configuration system does not allow "alias.0foo" and
"pager.0foo" as the configuration key, the user cannot use '0foo'
as a custom command name anyway, but "git 0foo" tried to look these
keys up and emitted useless warnings before saying '0foo is not a
git command'. These warning messages have been squelched.
(merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint).
* "git rev-list" does not take "--notes" option, but did not complain
when one is given.
(merge 2aea7a5 jk/rev-list-has-no-notes later to maint).
* When re-priming the cache-tree opportunistically while committing
the in-core index as-is, we mistakenly invalidated the in-core
index too aggressively, causing the experimental split-index code
to unnecessarily rewrite the on-disk index file(s).
(merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint).
* "git archive" did not use zip64 extension when creating an archive
with more than 64k entries, which nobody should need, right ;-)?
(merge 88329ca rs/archive-zip-many later to maint).
* The code in "multiple-worktree" support that attempted to recover
from an inconsistent state updated an incorrect file.
(merge 82fde87 nd/fixup-linked-gitdir later to maint).
* On case insensitive systems, "git p4" did not work well with client
specs.
* "git init empty && git -C empty log" said "bad default revision 'HEAD'",
which was found to be a bit confusing to new users.
(merge ce11360 jk/log-missing-default-HEAD later to maint).
* Recent versions of scripted "git am" has a performance regression in
"git am --skip" codepath, which no longer exists in the built-in
version on the 'master' front. Fix the regression in the last
scripted version that appear in 2.5.x maintenance track and older.
(merge b9d6689 js/maint-am-skip-performance-regression later to maint).
* The branch descriptions that are set with "git branch --edit-description"
option were used in many places but they weren't clearly documented.
(merge 561d2b7 po/doc-branch-desc later to maint).
* Code cleanups and documentation updates.
(merge 1c601af es/doc-clean-outdated-tools later to maint).
(merge 3581304 kn/tag-doc-fix later to maint).
(merge 3a59e59 kb/i18n-doc later to maint).
(merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
(merge 14691e3 sb/parse-options-codeformat later to maint).
(merge 4a6ada3 ad/bisect-cleanup later to maint).
(merge da4c5ad ta/docfix-index-format-tech later to maint).
(merge ae25fd3 sb/check-return-from-read-ref later to maint).
(merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
(merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
(merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
(merge 1269847 sg/t3020-typofix later to maint).
(merge 8b54c23 jc/calloc-pathspec later to maint).
(merge a6926b8 po/po-readme later to maint).
(merge 54d160e ss/fix-config-fd-leak later to maint).
(merge b80fa84 ah/submodule-typofix-in-error later to maint).
(merge 99885bc ah/reflog-typofix-in-error later to maint).
(merge 9476c2c ah/read-tree-usage-string later to maint).
(merge b8c1d27 ah/pack-objects-usage-strings later to maint).
(merge 486e1e1 br/svn-doc-include-paths-config later to maint).
(merge 1733ed3 ee/clean-test-fixes later to maint).
(merge 5fcadc3 gb/apply-comment-typofix later to maint).
(merge b894d3e mp/t7060-diff-index-test later to maint).
(merge d238710 as/config-doc-markup-fix later to maint).
----------------------------------------------------------------
Changes since v2.5.0 are as follows:
Alejandro R. Sedeño (1):
Makefile: use SHELL_PATH when running generate-cmdlist.sh
Alex Henrie (8):
gitk: Fix bad English grammar "Matches none Commit Info"
gitk: Remove mc parameter from proc show_error
reflog: add missing single quote to error message
git-submodule: remove extraneous space from error message
pack-objects: place angle brackets around placeholders in usage strings
read-tree: replace bracket set with parentheses to clarify usage
show-ref: place angle brackets around variables in usage string
l10n: ca.po: update translation
Alexander Shopov (2):
gitk: Update Bulgarian translation (304t)
gitk: Update Bulgarian translation (307t)
Andreas Schwab (2):
Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable
Documentation/config: fix formatting for branch.*.rebase and pull.rebase
Antoine Delaite (3):
bisect: correction of typo
bisect: replace hardcoded "bad|good" by variables
bisect: simplify the addition of new bisect terms
Beat Bolli (2):
gitk: Add a "Copy commit summary" command
gitk: Adjust the menu line numbers to compensate for the new entry
Brett Randall (1):
git-svn doc: mention "svn-remote.<name>.include-paths"
Brian Degenhardt (1):
unpack-trees: populate cache-tree on successful merge
Brian Norris (1):
send-email: fix uninitialized var warning for $smtp_auth
Charles Bailey (3):
test-parse-options: update to handle negative ints
parse-options: move unsigned long option parsing out of pack-objects.c
untracked: fix detection of uname(2) failure
Christian Couder (3):
trailer: ignore first line of message
trailer: retitle a test and correct an in-comment message
trailer: support multiline title
Clemens Buchacher (1):
git_open_noatime: return with errno=0 on success
Dave Borowitz (9):
Documentation/git-push.txt: document when --signed may fail
Documentation/git-send-pack.txt: wrap long synopsis line
Documentation/git-send-pack.txt: document --signed
gitremote-helpers.txt: document pushcert option
transport: remove git_transport_options.push_cert
config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
builtin/send-pack.c: use parse_options API
push: support signing pushes iff the server supports it
push: add a config option push.gpgSign for default signed pushes
David Aguilar (1):
contrib/subtree: ignore log.date configuration
David Turner (22):
log: add "log.follow" configuration variable
unpack-trees: don't update files with CE_WT_REMOVE set
refs.c: add err arguments to reflog functions
refs: break out check for reflog autocreation
refs: new public ref function: safe_create_reflog
git-reflog: add exists command
refs: add REF_FORCE_CREATE_REFLOG flag
update-ref and tag: add --create-reflog arg
git-stash: use update-ref --create-reflog instead of creating files
t/t7509: remove unnecessary manipulation of reflog
tests: remove some direct access to .git/logs
refs: introduce pseudoref and per-worktree ref concepts
refs: add ref_type function
pseudorefs: create and use pseudoref update and delete functions
bisect: use update_ref
sequencer: replace write_cherry_pick_head with update_ref
untracked-cache: support sparse checkout
worktrees: add find_shared_symref
notes: handle multiple worktrees
pseudoref: check return values from read_ref()
untracked-cache: fix subdirectory handling
commit: don't rewrite shared index unnecessarily
Edward Thomson (1):
poll: honor the timeout on Win32
Elia Pinto (1):
http: add support for specifying the SSL version
Eric Sunshine (31):
config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
checkout: avoid resolving HEAD unnecessarily
checkout: name check_linked_checkouts() more meaningfully
checkout: improve die_if_checked_out() robustness
checkout: die_if_checked_out: simplify strbuf management
checkout: generalize die_if_checked_out() branch name argument
checkout: check_linked_checkout: improve "already checked out" aesthetic
checkout: check_linked_checkout: simplify symref parsing
checkout: teach check_linked_checkout() about symbolic link HEAD
branch: publish die_if_checked_out()
worktree: improve worktree setup message
worktree: simplify new branch (-b/-B) option checking
worktree: introduce options container
worktree: make --detach mutually exclusive with -b/-B
worktree: add: suppress auto-vivication with --detach and no <branch>
worktree: make branch creation distinct from worktree population
worktree: elucidate environment variables intended for child processes
worktree: add_worktree: construct worktree-population command locally
worktree: detect branch-name/detached and error conditions locally
worktree: make setup of new HEAD distinct from worktree population
worktree: avoid resolving HEAD unnecessarily
worktree: populate via "git reset --hard" rather than "git checkout"
checkout: drop intimate knowledge of newly created worktree
Documentation/git-worktree: fix broken 'linkgit' invocation
Documentation/git: drop outdated Cogito reference
Documentation/git-tools: improve discoverability of Git wiki
Documentation/git-tools: fix item text formatting
Documentation/git-tools: drop references to defunct tools
Documentation/git-tools: retire manually-maintained list
Documentation/config: mention "now" and "never" for 'expire' settings
generate-cmdlist: re-implement as shell script
Erik Elfström (6):
setup: add gentle version of read_gitfile
setup: sanity check file size in read_gitfile_gently
t7300: add tests to document behavior of clean and nested git
p7300: add performance tests for clean
clean: improve performance when removing lots of directories
t7300: fix broken && chains
Galan Rémi (3):
git-rebase -i: add command "drop" to remove a commit
git rebase -i: warn about removed commits
git rebase -i: add static check for commands and SHA-1
Giuseppe Bilotta (2):
apply: comment grammar fix
gitk: Accelerators for the main menu
Guillaume Pagès (4):
status: factor two rebase-related messages together
status: differentiate interactive from non-interactive rebases
status: give more information during rebase -i
status: add new tests for status during rebase -i
Heiko Voigt (4):
submodule: implement a config API for lookup of .gitmodules values
submodule: extract functions for config set and lookup
submodule: use new config API for worktree configurations
submodule: allow erroneous values for the fetchRecurseSubmodules option
Ilya Bobyr (1):
rev-parse --parseopt: allow [*=?!] in argument hints
Ismael Luceno (1):
gitk: Make it easier to go quickly to a specific commit
Jacob Keller (8):
refs: cleanup comments regarding check_refname_component()
refs: loosen restriction on wildcard "*" refspecs
notes: document cat_sort_uniq rewriteMode
notes: extract enum notes_merge_strategy to notes-utils.h
notes: extract parse_notes_merge_strategy to notes-utils
notes: add tests for --commit/--abort/--strategy exclusivity
notes: add notes.mergeStrategy option to select default strategy
notes: teach git-notes about notes.<name>.mergeStrategy option
Jan Viktorin (1):
send-email: provide whitelist of SMTP AUTH mechanisms
Jean-Noel Avila (2):
l10n: fr.po v2.6.0 round 1 (2441t)
l10n: fr.po v2.6.0 round 2 (2440t)
Jeff King (51):
pkt-line: simplify starts_with checks in packet tracing
pkt-line: tighten sideband PACK check when tracing
pkt-line: support tracing verbatim pack contents
cat-file: minor style fix in options list
cat-file: move batch_options definition to top of file
cat-file: add --buffer option
cat-file: stop returning value from batch_one_object
cat-file: split batch_one_object into two stages
cat-file: add --batch-all-objects option
read_gitfile_gently: fix use-after-free
cat-file: sort and de-dup output of --batch-all-objects
show-branch: use DATE_RELATIVE instead of magic number
convert "enum date_mode" into a struct
introduce "format" date-mode
strbuf: make strbuf_addftime more robust
docs/config.txt: reorder hideRefs config
refs: support negative transfer.hideRefs
test-lib: turn off "-x" tracing during chain-lint check
test-lib: disable trace when test is not verbose
clone: add tests for output directory
clone: use computed length in guess_dir_name
cache.h: clarify documentation for git_path, et al
cache.h: complete set of git_path_submodule helpers
t5700: modernize style
add_to_alternates_file: don't add duplicate entries
prefer git_pathdup to git_path in some possibly-dangerous cases
prefer mkpathdup to mkpath in assignments
remote.c: drop extraneous local variable from migrate_file
refs.c: remove extra git_path calls from read_loose_refs
path.c: drop git_path_submodule
refs.c: simplify strbufs in reflog setup and writing
refs.c: avoid repeated git_path calls in rename_tmp_log
refs.c: avoid git_path assignment in lock_ref_sha1_basic
refs.c: remove_empty_directories can take a strbuf
find_hook: keep our own static buffer
get_repo_path: refactor path-allocation
memoize common git-path "constant" files
vreportf: report to arbitrary filehandles
vreportf: avoid intermediate buffer
format_config: don't init strbuf
format_config: simplify buffer handling
get_urlmatch: avoid useless strbuf write
config: silence warnings for command names with invalid keys
rev-list: make it obvious that we do not support notes
log: diagnose empty HEAD more clearly
rerere: release lockfile in non-writing functions
pack-protocol: clarify LF-handling in PKT-LINE()
verify_absent: allow filenames longer than PATH_MAX
notes: use a strbuf in add_non_note
read_info_alternates: handle paths larger than PATH_MAX
show-branch: use a strbuf for reflog descriptions
Jiang Xin (8):
receive-pack: crash when checking with non-exist HEAD
l10n: TEAMS: stash inactive zh_CN team members
l10n: zh_CN: Add translations for Git glossary
i18n: am: fix typo in description of -b option
l10n: git.pot: v2.6.0 round 1 (123 new, 41 removed)
l10n: zh_CN: for git v2.6.0 l10n round 1
l10n: git.pot: v2.6.0 round 2 (3 improvements)
l10n: zh_CN: for git v2.6.0 l10n round 2
Jim Hill (1):
strbuf_read(): skip unnecessary strbuf_grow() at eof
Johannes Schindelin (20):
fsck: introduce fsck options
fsck: introduce identifiers for fsck messages
fsck: provide a function to parse fsck message IDs
fsck: offer a function to demote fsck errors to warnings
fsck (receive-pack): allow demoting errors to warnings
fsck: report the ID of the error/warning
fsck: make fsck_ident() warn-friendly
fsck: make fsck_commit() warn-friendly
fsck: handle multiple authors in commits specially
fsck: make fsck_tag() warn-friendly
fsck: add a simple test for receive.fsck.<msg-id>
fsck: disallow demoting grave fsck errors to warnings
fsck: optionally ignore specific fsck issues completely
fsck: allow upgrading fsck warnings to errors
fsck: document the new receive.fsck.<msg-id> options
fsck: support demoting errors to warnings
fsck: introduce `git fsck --connectivity-only`
fsck: git receive-pack: support excluding objects from fsck'ing
fsck: support ignoring objects in `git fsck` via fsck.skiplist
am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
Johannes Sixt (2):
t7300-clean: require POSIXPERM for chmod 0 test
t2019: skip test requiring '*' in a file name non Windows
Jose F. Morales (1):
Mingw: verify both ends of the pipe () call
Junio C Hamano (39):
commit-slab: introduce slabname##_peek() function
builtin/send-pack.c: respect user.signingkey
Git 2.4.8
First batch for 2.6
sha1_file.c: rename move_temp_to_file() to finalize_object_file()
Second batch for 2.6
Third batch for 2.6
Start preparing for 2.5.1
Fourth batch for 2.6
ps_matched: xcalloc() takes nmemb and then element size
log: rename "tweak" helpers
log: when --cc is given, default to -p unless told otherwise
log: show merge commit when --cc is given
builtin/am: introduce write_state_*() helper functions
builtin/am: make sure state files are text
write_file(): drop "fatal" parameter
write_file_v(): do not leave incomplete line at the end
write_file(): drop caller-supplied LF from calls to create a one-liner file
builtin/log.c: minor reformat
Fifth batch for 2.6
pull: pass upload_pack only when it was given
Sixth batch for 2.6
Git 2.5.1
Seventh batch for 2.6
Eighth batch for 2.6
Ninth batch for 2.6
Git 2.6-rc0
Git 2.2.3
Git 2.3.9
Git 2.4.9
Git 2.5.2
am: match --signoff to the original scripted version
Git 2.6-rc1
Release Notes: typofix
Git 2.6-rc2
Update RelNotes to 2.6 to describe leftover bits since -rc2
Git 2.5.3
Update RelNotes to 2.6
Git 2.6-rc3
Karsten Blees (1):
Documentation/i18n.txt: clarify character encoding support
Karthik Nayak (12):
for-each-ref: extract helper functions out of grab_single_ref()
for-each-ref: clean up code
for-each-ref: rename 'refinfo' to 'ref_array_item'
for-each-ref: introduce new structures for better organisation
for-each-ref: introduce 'ref_array_clear()'
for-each-ref: rename some functions and make them public
for-each-ref: rename variables called sort to sorting
ref-filter: add 'ref-filter.h'
Documentation/tag: remove double occurance of "<pattern>"
ref-filter: move code from 'for-each-ref'
for-each-ref: introduce filter_refs()
ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
Kevin Daudt (1):
pull: allow dirty tree when rebase.autostash enabled
Lars Schneider (1):
git-p4: honor core.ignorecase when using P4 client specs
Marc Branchaud (3):
gitk: Rearrange window title to be more conventional
gitk: Show the current view's name in the window title
gitk: Use translated version of "Command line" in getcommitlines
Matthieu Moy (3):
Documentation/bisect: move getting help section to the end
pull.sh: quote $upload_pack when passing it to git-fetch
bisect: don't mix option parsing and non-trivial code
Matthieu Prat (1):
t7060: actually test "git diff-index --cached -M"
Michael Haggerty (45):
delete_ref(): move declaration to refs.h
remove_branches(): remove temporary
delete_ref(): handle special case more explicitly
delete_refs(): new function for the refs API
delete_refs(): make error message more generic
delete_refs(): bail early if the packed-refs file cannot be rewritten
prune_remote(): use delete_refs()
prune_refs(): use delete_refs()
repack_without_refs(): make function private
initial_ref_transaction_commit(): function for initial ref creation
refs: remove some functions from the module's public interface
initial_ref_transaction_commit(): check for duplicate refs
initial_ref_transaction_commit(): check for ref D/F conflicts
refs: move the remaining ref module declarations to refs.h
refs.h: add some parameter names to function declarations
check_branch_commit(): make first parameter const
update_ref(): don't read old reference value before delete
cmd_update_ref(): make logic more straightforward
delete_ref(): use the usual convention for old_sha1
Documentation/bisect: revise overall content
fast-import: add a get-mark command
Documentation/git-worktree: consistently use term "linked working tree"
Documentation/git-worktree: fix incorrect reference to file "locked"
Documentation/config: fix stale "git prune --worktree" reference
Documentation/git-worktree: wordsmith worktree-related manpages
get_remote_group(): handle remotes with single-character names
get_remote_group(): rename local variable "space" to "wordlen"
get_remote_group(): eliminate superfluous call to strcspn()
get_remote_group(): use skip_prefix()
lockfile: move documentation to lockfile.h and lockfile.c
create_bundle(): duplicate file descriptor to avoid closing it twice
lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
lockfile: add accessor get_lock_file_path()
commit_lock_file(): use get_locked_file_path()
tempfile: a new module for handling temporary files
prepare_tempfile_object(): new function, extracted from create_tempfile()
tempfile: add several functions for creating temporary files
register_tempfile(): new function to handle an existing temporary file
write_shared_index(): use tempfile module
setup_temporary_shallow(): use tempfile module
diff: use tempfile module
lock_repo_for_gc(): compute the path to "gc.pid" only once
gc: use tempfile module to handle gc.pid file
credential-cache--daemon: delete socket from main()
credential-cache--daemon: use tempfile module
Michael J Gruber (1):
git-svn: parse authors file more leniently
Michael Rappazzo (2):
gitk: Add mouse right-click options to copy path and branch name
git-rebase--interactive.sh: add config option for custom instruction format
Mike Hommey (2):
Allow to control where the replace refs are looked for
fast-import: do less work when given "from" matches current branch head
Nguyễn Thái Ngọc Duy (4):
setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
t7063: use --force-untracked-cache to speed up a bit
untracked cache: fix entry invalidation
setup: update the right file in multiple checkouts
Patrick Steinhardt (6):
Documentation/git-worktree: fix duplicated 'from'
tests: fix broken && chains in t1509-root-worktree
tests: fix cleanup after tests in t1509-root-worktree
clone: do not include authentication data in guessed dir
clone: do not use port number as dir name
clone: abort if no dir name could be guessed
Paul Mackerras (3):
gitk: Replace catch {unset foo} with unset -nocomplain foo
gitk: Fix error when changing colors after closing "List references" window
gitk: Update .po files
Paul Tan (85):
t4150: test applying StGit patch
am: teach StGit patch parser how to read from stdin
t4150: test applying StGit series
am: use gmtime() to parse mercurial patch date
am: teach mercurial patch parser how to read from stdin
parse-options-cb: implement parse_opt_passthru()
parse-options-cb: implement parse_opt_passthru_argv()
argv-array: implement argv_array_pushv()
pull: implement skeletal builtin pull
pull: implement fetch + merge
pull: pass verbosity, --progress flags to fetch and merge
pull: pass git-merge's options to git-merge
pull: pass git-fetch's options to git-fetch
pull: error on no merge candidates
pull: support pull.ff config
pull: check if in unresolved merge state
pull: fast-forward working tree if head is updated
pull: implement pulling into an unborn branch
pull: set reflog message
pull: teach git pull about --rebase
pull: configure --rebase via branch.<name>.rebase or pull.rebase
pull --rebase: exit early when the working directory is dirty
pull --rebase: error on no merge candidate cases
pull: remove redirection to git-pull.sh
t4150: am.messageid really adds the message id
t4150: am fails if index is dirty
t4151: am --abort will keep dirty index intact
t4150: am refuses patches when paused
t4150: am --resolved fails if index has no changes
t4150: am --resolved fails if index has unmerged entries
t4150: am with applypatch-msg hook
t4150: am with pre-applypatch hook
t4150: am with post-applypatch hook
t4150: tests for am --[no-]scissors
t3418: non-interactive rebase --continue with rerere enabled
t3901: test git-am encoding conversion
wrapper: implement xopen()
wrapper: implement xfopen()
builtin-am: implement skeletal builtin am
builtin-am: implement patch queue mechanism
builtin-am: split out mbox/maildir patches with git-mailsplit
builtin-am: auto-detect mbox patches
builtin-am: extract patch and commit info with git-mailinfo
builtin-am: apply patch with git-apply
builtin-am: implement committing applied patch
builtin-am: refuse to apply patches if index is dirty
builtin-am: implement --resolved/--continue
builtin-am: don't parse mail when resuming
builtin-am: implement --skip
builtin-am: implement --abort
builtin-am: reject patches when there's a session in progress
builtin-am: implement -q/--quiet
builtin-am: exit with user friendly message on failure
builtin-am: implement -s/--signoff
cache-tree: introduce write_index_as_tree()
builtin-am: implement --3way
builtin-am: implement --rebasing mode
builtin-am: bypass git-mailinfo when --rebasing
builtin-am: handle stray state directory
builtin-am: implement -u/--utf8
builtin-am: implement -k/--keep, --keep-non-patch
builtin-am: implement --[no-]message-id, am.messageid
builtin-am: support --keep-cr, am.keepcr
builtin-am: implement --[no-]scissors
builtin-am: pass git-apply's options to git-apply
builtin-am: implement --ignore-date
builtin-am: implement --committer-date-is-author-date
builtin-am: implement -S/--gpg-sign, commit.gpgsign
builtin-am: invoke post-rewrite hook
builtin-am: support automatic notes copying
builtin-am: invoke applypatch-msg hook
builtin-am: invoke pre-applypatch hook
builtin-am: invoke post-applypatch hook
builtin-am: rerere support
builtin-am: support and auto-detect StGit patches
builtin-am: support and auto-detect StGit series files
builtin-am: support and auto-detect mercurial patches
builtin-am: implement -i/--interactive
builtin-am: implement legacy -b/--binary option
builtin-am: check for valid committer ident
builtin-am: remove redirection to git-am.sh
test_terminal: redirect child process' stdin to a pty
am: let command-line options override saved options
am: let --signoff override --no-signoff
am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
Peter Krefting (2):
gitk: sv.po: Update Swedish translation (305t0f0u)
l10n: sv.po: Update Swedish translation (2441t0f0u)
Philip Oakley (2):
po/README: Update directions for l10n contributors
doc: show usage of branch description
Phillip Sz (1):
l10n: de.po: better language for one string
Ralf Thielow (5):
lockfile: remove function "hold_lock_file_for_append"
pull: don't mark values for option "rebase" for translation
tag, update-ref: improve description of option "create-reflog"
l10n: de.po: translate 123 new messages
l10n: de.po: translate 2 messages
Ramsay Jones (1):
mailmap: update my entry with new email address
Ray Chen (10):
l10n: zh_CN: Update Translation: "tag object"
l10n: zh_CN: Unify Translation of "packfile"
l10n: zh_CN: Update Translation of "tag"
l10n: zh_CN: Add Surrounding Spaces
l10n: zh_CN: Update Git Glossary: SHA-1
l10n: zh_CN: Update Git Glossary: "dumb", "smart"
l10n: zh_CN: Update Git Glossary: tag
l10n: zh_CN: Update Git Glossary: fork
l10n: zh_CN: Update Git Glossary: pickaxe
l10n: zh_CN: Update Git Glossary: "commit message"
Remi Lespinet (11):
t9001-send-email: move script creation in a setup test
send-email: allow aliases in patch header and command script outputs
t9001-send-email: refactor header variable fields replacement
send-email: refactor address list process
send-email: allow use of aliases in the From field of --compose mode
send-email: minor code refactoring
send-email: reduce dependencies impact on parse_address_line
send-email: consider quote as delimiter instead of character
send-email: allow multiple emails using --cc, --to and --bcc
send-email: suppress meaningless whitespaces in from field
git-am: add am.threeWay config variable
René Scharfe (3):
t5004: test ZIP archives with many entries
archive-zip: use a local variable to store the creator version
archive-zip: support more than 65535 entries
SZEDER Gábor (8):
bash prompt: test untracked files status indicator with untracked dirs
bash prompt: faster untracked status indicator with untracked directories
config: add '--name-only' option to list only variable names
completion: list variable names reliably with 'git config --name-only'
t3020: fix typo in test description
config: restructure format_config() for better control flow
wt-status: move #include "pathspec.h" to the header
describe --contains: default to HEAD when no commit-ish is given
Simon A. Eugster (1):
checkout: document subtlety around --ours/--theirs
Stefan Beller (4):
parse-options: align curly braces for all options
add: remove dead code
transport-helper: die on errors reading refs.
read-cache: fix indentation in read_index_from
Sven Strickroth (1):
config: close config file handle in case of error
Thomas Ackermann (1):
typofix for index-format.txt
Thomas Braun (1):
completion: offer '--edit-todo' during interactive rebase
Trần Ngọc Quân (2):
l10n: Updated Vietnamese translation (2441t)
l10n: Update and review Vietnamese translation (2440t)
Zoë Blade (1):
userdiff: add support for Fountain documents
brian m. carlson (7):
verify-tag: add tests
verify-tag: share code with verify-commit
verify-commit: add test for exit status on untrusted signature
gpg: centralize signature check
gpg: centralize printing signature buffers
verify-commit: add option to print raw gpg status information
verify-tag: add option to print raw gpg status information
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.6.0-rc1
@ 2015-09-09 0:09 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-09-09 0:09 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
A release candidate Git v2.6.0-rc1 is now available for testing
at the usual places. It is comprised of 409 non-merge commits
since v2.5.0, contributed by 50 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.6.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.5.0 are as follows.
Welcome to the Git development community!
Antoine Delaite, Brett Randall, Brian Degenhardt, Erik Elfström,
Galan Rémi, Guillaume Pagès, Jan Viktorin, Jose F. Morales,
Lars Schneider, Michael Rappazzo, Simon A. Eugster, and Zoë
Blade.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alex Henrie, Andreas Schwab, brian m. carlson, Charles Bailey,
Christian Couder, Clemens Buchacher, Dave Borowitz, David
Aguilar, David Turner, Elia Pinto, Eric Sunshine, Heiko
Voigt, Ilya Bobyr, Jacob Keller, Jeff King, Jiang Xin, Jim
Hill, Johannes Schindelin, Johannes Sixt, Junio C Hamano,
Karsten Blees, Karthik Nayak, Kevin Daudt, Matthieu Moy,
Michael Haggerty, Mike Hommey, Nguyễn Thái Ngọc Duy,
Patrick Steinhardt, Paul Tan, Philip Oakley, Ralf Thielow,
Remi Lespinet, René Scharfe, Stefan Beller, Sven Strickroth,
SZEDER Gábor, Thomas Ackermann, and Thomas Braun.
----------------------------------------------------------------
Git 2.6 Release Notes (draft)
=============================
Updates since v2.5
------------------
UI, Workflows & Features
* An asterisk as a substring (as opposed to the entirety) of a path
component for both side of a refspec, e.g.
"refs/heads/o*:refs/remotes/heads/i*", is now allowed.
* New userdiff pattern definition for fountain screenwriting markup
format has been added.
* "git log" and friends learned a new "--date=format:..." option to
format timestamps using system's strftime(3).
* "git fast-import" learned to respond to the get-mark command via
its cat-blob-fd interface.
* "git rebase -i" learned "drop commit-object-name subject" command
as another way to skip replaying of a commit.
* A new configuration variable can enable "--follow" automatically
when "git log" is run with one pathspec argument.
* "git status" learned to show a more detailed information regarding
the "rebase -i" session in progress.
* "git cat-file" learned "--batch-all-objects" option to enumerate all
available objects in the repository more quickly than "rev-list
--all --objects" (the output includes unreachable objects, though).
* "git fsck" learned to ignore errors on a set of known-to-be-bad
objects, and also allows the warning levels of various kinds of
non-critical breakages to be tweaked.
* "git rebase -i"'s list of todo is made configurable.
* "git send-email" now performs alias-expansion on names that are
given via --cccmd, etc.
* An environment variable GIT_REPLACE_REF_BASE tells Git to look into
refs hierarchy other than refs/replace/ for the object replacement
data.
* Allow untracked cache (experimental) to be used when sparse
checkout (experimental) is also in use.
* "git pull --rebase" has been taught to pay attention to
rebase.autostash configuration.
* The command-line completion script (in contrib/) has been updated.
* A negative !ref entry in multi-value transfer.hideRefs
configuration can be used to say "don't hide this one".
* After "git am" without "-3" stops, running "git am -" pays attention
to "-3" only for the patch that caused the original invocation
to stop.
* When linked worktree is used, simultaneous "notes merge" instances
for the same ref in refs/notes/* are prevented from stomping on
each other.
* "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.
* A new configuration variable http.sslVersion can be used to specify
what specific version of SSL/TLS to use to make a connection.
* "git notes merge" can be told with "--strategy=<how>" option how to
automatically handle conflicts; this can now be configured by
setting notes.mergeStrategy configuration variable.
* "git log --cc" did not show any patch, even though most of the time
the user meant "git log --cc -p -m" to see patch output for commits
with a single parent, and combined diff for merge commits. The
command is taught to DWIM "--cc" (without "--raw" and other forms
of output specification) to "--cc -p -m".
* "git config --list" output was hard to parse when values consist of
multiple lines. "--name-only" option is added to help this.
Performance, Internal Implementation, Development Support etc.
* In preparation for allowing different "backends" to store the refs
in a way different from the traditional "one ref per file in
$GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
direct filesystem access to ref-like things like CHERRY_PICK_HEAD
from scripts and programs has been reduced.
* Computation of untracked status indicator by bash prompt
script (in contrib/) has been optimized.
* Memory use reduction when commit-slab facility is used to annotate
sparsely (which is not recommended in the first place).
* Clean up refs API and make "git clone" less intimate with the
implementation detail.
* "git pull" was reimplemented in C.
* The packet tracing machinery allows to capture an incoming pack
data to a file for debugging.
* Move machinery to parse human-readable scaled numbers like 1k, 4M,
and 2G as an option parameter's value from pack-objects to
parse-options API, to make it available to other codepaths.
* "git verify-tag" and "git verify-commit" have been taught to share
more code, and then learned to optionally show the verification
message from the underlying GPG implementation.
* Various enhancements around "git am" reading patches generated by
foreign SCM have been made.
* Ref listing by "git branch -l" and "git tag -l" commands has
started to be rebuilt, based on the for-each-ref machinery.
* The code to perform multi-tree merges has been taught to repopulate
the cache-tree upon a successful merge into the index, so that
subsequent "diff-index --cached" (hence "status") and "write-tree"
(hence "commit") will go faster.
The same logic in "git checkout" may now be removed, but that is a
separate issue.
* Tests that assume how reflogs are represented on the filesystem too
much have been corrected.
* "git am" has been rewritten in "C".
* 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.
* The "lockfile" API has been rebuilt on top of a new "tempfile" API.
* 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).
* The gitmodules API that is accessed from the C code learned to
cache stuff lazily.
Also contains various documentation updates and code clean-ups.
Fixes since v2.5
----------------
Unless otherwise noted, all the fixes since v2.5 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git subtree" (in contrib/) depended on "git log" output to be
stable, which was a no-no. Apply a workaround to force a
particular date format.
(merge e7aac44 da/subtree-date-confusion later to maint).
* An attempt to delete a ref by pushing into a repository whose HEAD
symbolic reference points at an unborn branch that cannot be
created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
points at refs/heads/a) failed.
(merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).
* The low-level "git send-pack" did not honor 'user.signingkey'
configuration variable when sending a signed-push.
(merge d830d39 db/send-pack-user-signingkey later to maint).
* "sparse checkout" misbehaved for a path that is excluded from the
checkout when switching between branches that differ at the path.
(merge 7d78241 as/sparse-checkout-removal later to maint).
* An experimental "untracked cache" feature used uname(2) in a
slightly unportable way.
(merge 100e433 cb/uname-in-untracked later to maint).
* A "rebase" replays changes of the local branch on top of something
else, as such they are placed in stage #3 and referred to as
"theirs", while the changes in the new base, typically a foreign
work, are placed in stage #2 and referred to as "ours". Clarify
the "checkout --ours/--theirs".
(merge f303016 se/doc-checkout-ours-theirs later to maint).
* The "rev-parse --parseopt" mode parsed the option specification
and the argument hint in a strange way to allow '=' and other
special characters in the option name while forbidding them from
the argument hint. This made it impossible to define an option
like "--pair <key>=<value>" with "pair=key=value" specification,
which instead would have defined a "--pair=key <value>" option.
(merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).
* Often a fast-import stream builds a new commit on top of the
previous commit it built, and it often unconditionally emits a
"from" command to specify the first parent, which can be omitted in
such a case. This caused fast-import to forget the tree of the
previous commit and then re-read it from scratch, which was
inefficient. Optimize for this common case.
(merge 0df3245 mh/fast-import-optimize-current-from later to maint).
* Running an aliased command from a subdirectory when the .git thing
in the working tree is a gitfile pointing elsewhere did not work.
(merge d95138e nd/export-worktree later to maint).
* "Is this subdirectory a separate repository that should not be
touched?" check "git clean" was inefficient. This was replaced
with a more optimized check.
(merge fbf2fec ee/clean-remove-dirs later to maint).
* The "new-worktree-mode" hack in "checkout" that was added in
nd/multiple-work-trees topic has been removed by updating the
implementation of new "worktree add".
(merge 65f9b75 es/worktree-add-cleanup later to maint).
* Remove remaining cruft from "git checkout --to", which
transitioned to "git worktree add".
(merge 114ff88 es/worktree-add later to maint).
* An off-by-one error made "git remote" to mishandle a remote with a
single letter nickname.
(merge bc598c3 mh/get-remote-group-fix later to maint).
* "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.
(merge adef956 ps/guess-repo-name-at-root later to maint).
* Running tests with the "-x" option to make them verbose had some
unpleasant interactions with other features of the test suite.
(merge 9b5fe78 jk/test-with-x later to maint).
* t1509 test that requires a dedicated VM environment had some
bitrot, which has been corrected.
(merge faacc5a ps/t1509-chroot-test-fixup later to maint).
* "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.
Note that this is irrelevant for 'master' with "git pull" rewritten
in C.
(merge 13e0e28 mm/pull-upload-pack later to maint).
* 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.
(merge dff6f28 cb/open-noatime-clear-errno later to maint).
* 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().
(merge f4c3edc jk/long-error-messages later to maint).
* strbuf_read() used to have one extra iteration (and an unnecessary
strbuf_grow() of 8kB), which was eliminated.
(merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).
* We rewrote one of the build scripts in Perl but this reimplements
in Bourne shell.
(merge 82aec45 sg/help-group later to maint).
* The experimental untracked-cache feature were buggy when paths with
a few levels of subdirectories are involved.
(merge 73f9145 dt/untracked-subdir later to maint).
* "interpret-trailers" helper mistook a single-liner log message that
has a colon as the end of existing trailer.
* The "interpret-trailers" helper mistook a multi-paragraph title of
a commit log message with a colon in it as the end of the trailer
block.
(merge 5c99995 cc/trailers-corner-case-fix later to maint).
* "git describe" without argument defaulted to describe the HEAD
commit, but "git describe --contains" didn't. Arguably, in a
repository used for active development, such defaulting would not
be very useful as the tip of branch is typically not tagged, but it
is better to be consistent.
(merge 2bd0706 sg/describe-contains later to maint).
* 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.
(merge 68c757f db/push-sign-if-asked later to maint).
* Because the configuration system does not allow "alias.0foo" and
"pager.0foo" as the configuration key, the user cannot use '0foo'
as a custom command name anyway, but "git 0foo" tried to look these
keys up and emitted useless warnings before saying '0foo is not a
git command'. These warning messages have been squelched.
(merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint).
* "git rev-list" does not take "--notes" option, but did not complain
when one is given.
(merge 2aea7a5 jk/rev-list-has-no-notes later to maint).
* When re-priming the cache-tree opportunistically while committing
the in-core index as-is, we mistakenly invalidated the in-core
index too aggressively, causing the experimental split-index code
to unnecessarily rewrite the on-disk index file(s).
(merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint).
* "git archive" did not use zip64 extension when creating an archive
with more than 64k entries, which nobody should need, right ;-)?
(merge 88329ca rs/archive-zip-many later to maint).
* The code in "multiple-worktree" support that attempted to recover
from an inconsistent state updated an incorrect file.
(merge 82fde87 nd/fixup-linked-gitdir later to maint).
* On case insensitive systems, "git p4" did not work well with client
specs.
* "git init empty && git -C empty log" said "bad default revision 'HEAD'",
which was found to be a bit confusing to new users.
(merge ce11360 jk/log-missing-default-HEAD later to maint).
* Code cleanups and documentation updates.
(merge 1c601af es/doc-clean-outdated-tools later to maint).
(merge 3581304 kn/tag-doc-fix later to maint).
(merge 3a59e59 kb/i18n-doc later to maint).
(merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
(merge 14691e3 sb/parse-options-codeformat later to maint).
(merge 4a6ada3 ad/bisect-cleanup later to maint).
(merge da4c5ad ta/docfix-index-format-tech later to maint).
(merge ae25fd3 sb/check-return-from-read-ref later to maint).
(merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
(merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
(merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
(merge 1269847 sg/t3020-typofix later to maint).
(merge 8b54c23 jc/calloc-pathspec later to maint).
(merge a6926b8 po/po-readme later to maint).
(merge 54d160e ss/fix-config-fd-leak later to maint).
(merge b80fa84 ah/submodule-typofix-in-error later to maint).
(merge 99885bc ah/reflog-typofix-in-error later to maint).
(merge 9476c2c ah/read-tree-usage-string later to maint).
(merge b8c1d27 ah/pack-objects-usage-strings later to maint).
(merge 486e1e1 br/svn-doc-include-paths-config later to maint).
(merge 1733ed3 ee/clean-test-fixes later to maint).
----------------------------------------------------------------
Changes since v2.5.0 are as follows:
Alex Henrie (4):
reflog: add missing single quote to error message
git-submodule: remove extraneous space from error message
pack-objects: place angle brackets around placeholders in usage strings
read-tree: replace bracket set with parentheses to clarify usage
Andreas Schwab (1):
Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable
Antoine Delaite (3):
bisect: correction of typo
bisect: replace hardcoded "bad|good" by variables
bisect: simplify the addition of new bisect terms
Brett Randall (1):
git-svn doc: mention "svn-remote.<name>.include-paths"
Brian Degenhardt (1):
unpack-trees: populate cache-tree on successful merge
Charles Bailey (3):
test-parse-options: update to handle negative ints
parse-options: move unsigned long option parsing out of pack-objects.c
untracked: fix detection of uname(2) failure
Christian Couder (3):
trailer: ignore first line of message
trailer: retitle a test and correct an in-comment message
trailer: support multiline title
Clemens Buchacher (1):
git_open_noatime: return with errno=0 on success
Dave Borowitz (9):
Documentation/git-push.txt: document when --signed may fail
Documentation/git-send-pack.txt: wrap long synopsis line
Documentation/git-send-pack.txt: document --signed
gitremote-helpers.txt: document pushcert option
transport: remove git_transport_options.push_cert
config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
builtin/send-pack.c: use parse_options API
push: support signing pushes iff the server supports it
push: add a config option push.gpgSign for default signed pushes
David Aguilar (1):
contrib/subtree: ignore log.date configuration
David Turner (22):
log: add "log.follow" configuration variable
unpack-trees: don't update files with CE_WT_REMOVE set
refs.c: add err arguments to reflog functions
refs: break out check for reflog autocreation
refs: new public ref function: safe_create_reflog
git-reflog: add exists command
refs: add REF_FORCE_CREATE_REFLOG flag
update-ref and tag: add --create-reflog arg
git-stash: use update-ref --create-reflog instead of creating files
t/t7509: remove unnecessary manipulation of reflog
tests: remove some direct access to .git/logs
refs: introduce pseudoref and per-worktree ref concepts
refs: add ref_type function
pseudorefs: create and use pseudoref update and delete functions
bisect: use update_ref
sequencer: replace write_cherry_pick_head with update_ref
untracked-cache: support sparse checkout
worktrees: add find_shared_symref
notes: handle multiple worktrees
pseudoref: check return values from read_ref()
untracked-cache: fix subdirectory handling
commit: don't rewrite shared index unnecessarily
Elia Pinto (1):
http: add support for specifying the SSL version
Eric Sunshine (31):
config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
checkout: avoid resolving HEAD unnecessarily
checkout: name check_linked_checkouts() more meaningfully
checkout: improve die_if_checked_out() robustness
checkout: die_if_checked_out: simplify strbuf management
checkout: generalize die_if_checked_out() branch name argument
checkout: check_linked_checkout: improve "already checked out" aesthetic
checkout: check_linked_checkout: simplify symref parsing
checkout: teach check_linked_checkout() about symbolic link HEAD
branch: publish die_if_checked_out()
worktree: improve worktree setup message
worktree: simplify new branch (-b/-B) option checking
worktree: introduce options container
worktree: make --detach mutually exclusive with -b/-B
worktree: add: suppress auto-vivication with --detach and no <branch>
worktree: make branch creation distinct from worktree population
worktree: elucidate environment variables intended for child processes
worktree: add_worktree: construct worktree-population command locally
worktree: detect branch-name/detached and error conditions locally
worktree: make setup of new HEAD distinct from worktree population
worktree: avoid resolving HEAD unnecessarily
worktree: populate via "git reset --hard" rather than "git checkout"
checkout: drop intimate knowledge of newly created worktree
Documentation/git-worktree: fix broken 'linkgit' invocation
Documentation/git: drop outdated Cogito reference
Documentation/git-tools: improve discoverability of Git wiki
Documentation/git-tools: fix item text formatting
Documentation/git-tools: drop references to defunct tools
Documentation/git-tools: retire manually-maintained list
Documentation/config: mention "now" and "never" for 'expire' settings
generate-cmdlist: re-implement as shell script
Erik Elfström (6):
setup: add gentle version of read_gitfile
setup: sanity check file size in read_gitfile_gently
t7300: add tests to document behavior of clean and nested git
p7300: add performance tests for clean
clean: improve performance when removing lots of directories
t7300: fix broken && chains
Galan Rémi (3):
git-rebase -i: add command "drop" to remove a commit
git rebase -i: warn about removed commits
git rebase -i: add static check for commands and SHA-1
Guillaume Pagès (4):
status: factor two rebase-related messages together
status: differentiate interactive from non-interactive rebases
status: give more information during rebase -i
status: add new tests for status during rebase -i
Heiko Voigt (4):
submodule: implement a config API for lookup of .gitmodules values
submodule: extract functions for config set and lookup
submodule: use new config API for worktree configurations
submodule: allow erroneous values for the fetchRecurseSubmodules option
Ilya Bobyr (1):
rev-parse --parseopt: allow [*=?!] in argument hints
Jacob Keller (8):
refs: cleanup comments regarding check_refname_component()
refs: loosen restriction on wildcard "*" refspecs
notes: document cat_sort_uniq rewriteMode
notes: extract enum notes_merge_strategy to notes-utils.h
notes: extract parse_notes_merge_strategy to notes-utils
notes: add tests for --commit/--abort/--strategy exclusivity
notes: add notes.mergeStrategy option to select default strategy
notes: teach git-notes about notes.<name>.mergeStrategy option
Jan Viktorin (1):
send-email: provide whitelist of SMTP AUTH mechanisms
Jeff King (46):
pkt-line: simplify starts_with checks in packet tracing
pkt-line: tighten sideband PACK check when tracing
pkt-line: support tracing verbatim pack contents
cat-file: minor style fix in options list
cat-file: move batch_options definition to top of file
cat-file: add --buffer option
cat-file: stop returning value from batch_one_object
cat-file: split batch_one_object into two stages
cat-file: add --batch-all-objects option
read_gitfile_gently: fix use-after-free
cat-file: sort and de-dup output of --batch-all-objects
show-branch: use DATE_RELATIVE instead of magic number
convert "enum date_mode" into a struct
introduce "format" date-mode
strbuf: make strbuf_addftime more robust
docs/config.txt: reorder hideRefs config
refs: support negative transfer.hideRefs
test-lib: turn off "-x" tracing during chain-lint check
test-lib: disable trace when test is not verbose
clone: add tests for output directory
clone: use computed length in guess_dir_name
cache.h: clarify documentation for git_path, et al
cache.h: complete set of git_path_submodule helpers
t5700: modernize style
add_to_alternates_file: don't add duplicate entries
prefer git_pathdup to git_path in some possibly-dangerous cases
prefer mkpathdup to mkpath in assignments
remote.c: drop extraneous local variable from migrate_file
refs.c: remove extra git_path calls from read_loose_refs
path.c: drop git_path_submodule
refs.c: simplify strbufs in reflog setup and writing
refs.c: avoid repeated git_path calls in rename_tmp_log
refs.c: avoid git_path assignment in lock_ref_sha1_basic
refs.c: remove_empty_directories can take a strbuf
find_hook: keep our own static buffer
get_repo_path: refactor path-allocation
memoize common git-path "constant" files
vreportf: report to arbitrary filehandles
vreportf: avoid intermediate buffer
format_config: don't init strbuf
format_config: simplify buffer handling
get_urlmatch: avoid useless strbuf write
config: silence warnings for command names with invalid keys
rev-list: make it obvious that we do not support notes
log: diagnose empty HEAD more clearly
rerere: release lockfile in non-writing functions
Jiang Xin (2):
receive-pack: crash when checking with non-exist HEAD
i18n: am: fix typo in description of -b option
Jim Hill (1):
strbuf_read(): skip unnecessary strbuf_grow() at eof
Johannes Schindelin (19):
fsck: introduce fsck options
fsck: introduce identifiers for fsck messages
fsck: provide a function to parse fsck message IDs
fsck: offer a function to demote fsck errors to warnings
fsck (receive-pack): allow demoting errors to warnings
fsck: report the ID of the error/warning
fsck: make fsck_ident() warn-friendly
fsck: make fsck_commit() warn-friendly
fsck: handle multiple authors in commits specially
fsck: make fsck_tag() warn-friendly
fsck: add a simple test for receive.fsck.<msg-id>
fsck: disallow demoting grave fsck errors to warnings
fsck: optionally ignore specific fsck issues completely
fsck: allow upgrading fsck warnings to errors
fsck: document the new receive.fsck.<msg-id> options
fsck: support demoting errors to warnings
fsck: introduce `git fsck --connectivity-only`
fsck: git receive-pack: support excluding objects from fsck'ing
fsck: support ignoring objects in `git fsck` via fsck.skiplist
Johannes Sixt (2):
t7300-clean: require POSIXPERM for chmod 0 test
t2019: skip test requiring '*' in a file name non Windows
Jose F. Morales (1):
Mingw: verify both ends of the pipe () call
Junio C Hamano (29):
commit-slab: introduce slabname##_peek() function
builtin/send-pack.c: respect user.signingkey
Git 2.4.8
First batch for 2.6
sha1_file.c: rename move_temp_to_file() to finalize_object_file()
Second batch for 2.6
Third batch for 2.6
Start preparing for 2.5.1
Fourth batch for 2.6
ps_matched: xcalloc() takes nmemb and then element size
log: rename "tweak" helpers
log: when --cc is given, default to -p unless told otherwise
log: show merge commit when --cc is given
builtin/am: introduce write_state_*() helper functions
builtin/am: make sure state files are text
write_file(): drop "fatal" parameter
write_file_v(): do not leave incomplete line at the end
write_file(): drop caller-supplied LF from calls to create a one-liner file
builtin/log.c: minor reformat
Fifth batch for 2.6
pull: pass upload_pack only when it was given
Sixth batch for 2.6
Git 2.5.1
Seventh batch for 2.6
Eighth batch for 2.6
Ninth batch for 2.6
Git 2.6-rc0
am: match --signoff to the original scripted version
Git 2.6-rc1
Karsten Blees (1):
Documentation/i18n.txt: clarify character encoding support
Karthik Nayak (12):
for-each-ref: extract helper functions out of grab_single_ref()
for-each-ref: clean up code
for-each-ref: rename 'refinfo' to 'ref_array_item'
for-each-ref: introduce new structures for better organisation
for-each-ref: introduce 'ref_array_clear()'
for-each-ref: rename some functions and make them public
for-each-ref: rename variables called sort to sorting
ref-filter: add 'ref-filter.h'
Documentation/tag: remove double occurance of "<pattern>"
ref-filter: move code from 'for-each-ref'
for-each-ref: introduce filter_refs()
ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
Kevin Daudt (1):
pull: allow dirty tree when rebase.autostash enabled
Lars Schneider (1):
git-p4: honor core.ignorecase when using P4 client specs
Matthieu Moy (3):
Documentation/bisect: move getting help section to the end
pull.sh: quote $upload_pack when passing it to git-fetch
bisect: don't mix option parsing and non-trivial code
Michael Haggerty (45):
delete_ref(): move declaration to refs.h
remove_branches(): remove temporary
delete_ref(): handle special case more explicitly
delete_refs(): new function for the refs API
delete_refs(): make error message more generic
delete_refs(): bail early if the packed-refs file cannot be rewritten
prune_remote(): use delete_refs()
prune_refs(): use delete_refs()
repack_without_refs(): make function private
initial_ref_transaction_commit(): function for initial ref creation
refs: remove some functions from the module's public interface
initial_ref_transaction_commit(): check for duplicate refs
initial_ref_transaction_commit(): check for ref D/F conflicts
refs: move the remaining ref module declarations to refs.h
refs.h: add some parameter names to function declarations
check_branch_commit(): make first parameter const
update_ref(): don't read old reference value before delete
cmd_update_ref(): make logic more straightforward
delete_ref(): use the usual convention for old_sha1
Documentation/bisect: revise overall content
fast-import: add a get-mark command
Documentation/git-worktree: consistently use term "linked working tree"
Documentation/git-worktree: fix incorrect reference to file "locked"
Documentation/config: fix stale "git prune --worktree" reference
Documentation/git-worktree: wordsmith worktree-related manpages
get_remote_group(): handle remotes with single-character names
get_remote_group(): rename local variable "space" to "wordlen"
get_remote_group(): eliminate superfluous call to strcspn()
get_remote_group(): use skip_prefix()
lockfile: move documentation to lockfile.h and lockfile.c
create_bundle(): duplicate file descriptor to avoid closing it twice
lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
lockfile: add accessor get_lock_file_path()
commit_lock_file(): use get_locked_file_path()
tempfile: a new module for handling temporary files
prepare_tempfile_object(): new function, extracted from create_tempfile()
tempfile: add several functions for creating temporary files
register_tempfile(): new function to handle an existing temporary file
write_shared_index(): use tempfile module
setup_temporary_shallow(): use tempfile module
diff: use tempfile module
lock_repo_for_gc(): compute the path to "gc.pid" only once
gc: use tempfile module to handle gc.pid file
credential-cache--daemon: delete socket from main()
credential-cache--daemon: use tempfile module
Michael Rappazzo (1):
git-rebase--interactive.sh: add config option for custom instruction format
Mike Hommey (2):
Allow to control where the replace refs are looked for
fast-import: do less work when given "from" matches current branch head
Nguyễn Thái Ngọc Duy (4):
setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
t7063: use --force-untracked-cache to speed up a bit
untracked cache: fix entry invalidation
setup: update the right file in multiple checkouts
Patrick Steinhardt (6):
Documentation/git-worktree: fix duplicated 'from'
tests: fix broken && chains in t1509-root-worktree
tests: fix cleanup after tests in t1509-root-worktree
clone: do not include authentication data in guessed dir
clone: do not use port number as dir name
clone: abort if no dir name could be guessed
Paul Tan (85):
t4150: test applying StGit patch
am: teach StGit patch parser how to read from stdin
t4150: test applying StGit series
am: use gmtime() to parse mercurial patch date
am: teach mercurial patch parser how to read from stdin
parse-options-cb: implement parse_opt_passthru()
parse-options-cb: implement parse_opt_passthru_argv()
argv-array: implement argv_array_pushv()
pull: implement skeletal builtin pull
pull: implement fetch + merge
pull: pass verbosity, --progress flags to fetch and merge
pull: pass git-merge's options to git-merge
pull: pass git-fetch's options to git-fetch
pull: error on no merge candidates
pull: support pull.ff config
pull: check if in unresolved merge state
pull: fast-forward working tree if head is updated
pull: implement pulling into an unborn branch
pull: set reflog message
pull: teach git pull about --rebase
pull: configure --rebase via branch.<name>.rebase or pull.rebase
pull --rebase: exit early when the working directory is dirty
pull --rebase: error on no merge candidate cases
pull: remove redirection to git-pull.sh
t4150: am.messageid really adds the message id
t4150: am fails if index is dirty
t4151: am --abort will keep dirty index intact
t4150: am refuses patches when paused
t4150: am --resolved fails if index has no changes
t4150: am --resolved fails if index has unmerged entries
t4150: am with applypatch-msg hook
t4150: am with pre-applypatch hook
t4150: am with post-applypatch hook
t4150: tests for am --[no-]scissors
t3418: non-interactive rebase --continue with rerere enabled
t3901: test git-am encoding conversion
wrapper: implement xopen()
wrapper: implement xfopen()
builtin-am: implement skeletal builtin am
builtin-am: implement patch queue mechanism
builtin-am: split out mbox/maildir patches with git-mailsplit
builtin-am: auto-detect mbox patches
builtin-am: extract patch and commit info with git-mailinfo
builtin-am: apply patch with git-apply
builtin-am: implement committing applied patch
builtin-am: refuse to apply patches if index is dirty
builtin-am: implement --resolved/--continue
builtin-am: don't parse mail when resuming
builtin-am: implement --skip
builtin-am: implement --abort
builtin-am: reject patches when there's a session in progress
builtin-am: implement -q/--quiet
builtin-am: exit with user friendly message on failure
builtin-am: implement -s/--signoff
cache-tree: introduce write_index_as_tree()
builtin-am: implement --3way
builtin-am: implement --rebasing mode
builtin-am: bypass git-mailinfo when --rebasing
builtin-am: handle stray state directory
builtin-am: implement -u/--utf8
builtin-am: implement -k/--keep, --keep-non-patch
builtin-am: implement --[no-]message-id, am.messageid
builtin-am: support --keep-cr, am.keepcr
builtin-am: implement --[no-]scissors
builtin-am: pass git-apply's options to git-apply
builtin-am: implement --ignore-date
builtin-am: implement --committer-date-is-author-date
builtin-am: implement -S/--gpg-sign, commit.gpgsign
builtin-am: invoke post-rewrite hook
builtin-am: support automatic notes copying
builtin-am: invoke applypatch-msg hook
builtin-am: invoke pre-applypatch hook
builtin-am: invoke post-applypatch hook
builtin-am: rerere support
builtin-am: support and auto-detect StGit patches
builtin-am: support and auto-detect StGit series files
builtin-am: support and auto-detect mercurial patches
builtin-am: implement -i/--interactive
builtin-am: implement legacy -b/--binary option
builtin-am: check for valid committer ident
builtin-am: remove redirection to git-am.sh
test_terminal: redirect child process' stdin to a pty
am: let command-line options override saved options
am: let --signoff override --no-signoff
am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
Philip Oakley (1):
po/README: Update directions for l10n contributors
Ralf Thielow (1):
lockfile: remove function "hold_lock_file_for_append"
Remi Lespinet (11):
t9001-send-email: move script creation in a setup test
send-email: allow aliases in patch header and command script outputs
t9001-send-email: refactor header variable fields replacement
send-email: refactor address list process
send-email: allow use of aliases in the From field of --compose mode
send-email: minor code refactoring
send-email: reduce dependencies impact on parse_address_line
send-email: consider quote as delimiter instead of character
send-email: allow multiple emails using --cc, --to and --bcc
send-email: suppress meaningless whitespaces in from field
git-am: add am.threeWay config variable
René Scharfe (3):
t5004: test ZIP archives with many entries
archive-zip: use a local variable to store the creator version
archive-zip: support more than 65535 entries
SZEDER Gábor (8):
bash prompt: test untracked files status indicator with untracked dirs
bash prompt: faster untracked status indicator with untracked directories
config: add '--name-only' option to list only variable names
completion: list variable names reliably with 'git config --name-only'
t3020: fix typo in test description
config: restructure format_config() for better control flow
wt-status: move #include "pathspec.h" to the header
describe --contains: default to HEAD when no commit-ish is given
Simon A. Eugster (1):
checkout: document subtlety around --ours/--theirs
Stefan Beller (4):
parse-options: align curly braces for all options
add: remove dead code
transport-helper: die on errors reading refs.
read-cache: fix indentation in read_index_from
Sven Strickroth (1):
config: close config file handle in case of error
Thomas Ackermann (1):
typofix for index-format.txt
Thomas Braun (1):
completion: offer '--edit-todo' during interactive rebase
Zoë Blade (1):
userdiff: add support for Fountain documents
brian m. carlson (7):
verify-tag: add tests
verify-tag: share code with verify-commit
verify-commit: add test for exit status on untrusted signature
gpg: centralize signature check
gpg: centralize printing signature buffers
verify-commit: add option to print raw gpg status information
verify-tag: add option to print raw gpg status information
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.6.0-rc0
@ 2015-09-02 20:39 3% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-09-02 20:39 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
An early preview release Git v2.6.0-rc0 is now available for
testing at the usual places. It is comprised of 406 non-merge
commits since v2.5.0, contributed by 50 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.6.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 = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.5.0 are as follows.
Welcome to the Git development community!
Antoine Delaite, Brett Randall, Brian Degenhardt, Erik Elfström,
Galan Rémi, Guillaume Pagès, Jan Viktorin, Jose F. Morales,
Lars Schneider, Michael Rappazzo, Simon A. Eugster, and Zoë
Blade.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alex Henrie, Andreas Schwab, brian m. carlson, Charles Bailey,
Christian Couder, Clemens Buchacher, Dave Borowitz, David
Aguilar, David Turner, Elia Pinto, Eric Sunshine, Heiko
Voigt, Ilya Bobyr, Jacob Keller, Jeff King, Jiang Xin, Jim
Hill, Johannes Schindelin, Johannes Sixt, Junio C Hamano,
Karsten Blees, Karthik Nayak, Kevin Daudt, Matthieu Moy,
Michael Haggerty, Mike Hommey, Nguyễn Thái Ngọc Duy,
Patrick Steinhardt, Paul Tan, Philip Oakley, Ralf Thielow,
Remi Lespinet, René Scharfe, Stefan Beller, Sven Strickroth,
SZEDER Gábor, Thomas Ackermann, and Thomas Braun.
----------------------------------------------------------------
Git 2.6 Release Notes (draft)
=============================
Updates since v2.5
------------------
UI, Workflows & Features
* An asterisk as a substring (as opposed to the entirety) of a path
component for both side of a refspec, e.g.
"refs/heads/o*:refs/remotes/heads/i*", is now allowed.
* New userdiff pattern definition for fountain screenwriting markup
format has been added.
* "git log" and friends learned a new "--date=format:..." option to
format timestamps using system's strftime(3).
* "git fast-import" learned to respond to the get-mark command via
its cat-blob-fd interface.
* "git rebase -i" learned "drop commit-object-name subject" command
as another way to skip replaying of a commit.
* A new configuration variable can enable "--follow" automatically
when "git log" is run with one pathspec argument.
* "git status" learned to show a more detailed information regarding
the "rebase -i" session in progress.
* "git cat-file" learned "--batch-all-objects" option to enumerate all
available objects in the repository more quickly than "rev-list
--all --objects" (the output includes unreachable objects, though).
* "git fsck" learned to ignore errors on a set of known-to-be-bad
objects, and also allows the warning levels of various kinds of
non-critical breakages to be tweaked.
* "git rebase -i"'s list of todo is made configurable.
* "git send-email" now performs alias-expansion on names that are
given via --cccmd, etc.
* An environment variable GIT_REPLACE_REF_BASE tells Git to look into
refs hierarchy other than refs/replace/ for the object replacement
data.
* Allow untracked cache (experimental) to be used when sparse
checkout (experimental) is also in use.
* "git pull --rebase" has been taught to pay attention to
rebase.autostash configuration.
* The command-line completion script (in contrib/) has been updated.
* A negative !ref entry in multi-value transfer.hideRefs
configuration can be used to say "don't hide this one".
* After "git am" without "-3" stops, running "git am -" pays attention
to "-3" only for the patch that caused the original invocation
to stop.
* When linked worktree is used, simultaneous "notes merge" instances
for the same ref in refs/notes/* are prevented from stomping on
each other.
* "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.
* A new configuration variable http.sslVersion can be used to specify
what specific version of SSL/TLS to use to make a connection.
* "git notes merge" can be told with "--strategy=<how>" option how to
automatically handle conflicts; this can now be configured by
setting notes.mergeStrategy configuration variable.
* "git log --cc" did not show any patch, even though most of the time
the user meant "git log --cc -p -m" to see patch output for commits
with a single parent, and combined diff for merge commits. The
command is taught to DWIM "--cc" (without "--raw" and other forms
of output specification) to "--cc -p -m".
* "git config --list" output was hard to parse when values consist of
multiple lines. "--name-only" option is added to help this.
Performance, Internal Implementation, Development Support etc.
* In preparation for allowing different "backends" to store the refs
in a way different from the traditional "one ref per file in
$GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
direct filesystem access to ref-like things like CHERRY_PICK_HEAD
from scripts and programs has been reduced.
* Computation of untracked status indicator by bash prompt
script (in contrib/) has been optimized.
* Memory use reduction when commit-slab facility is used to annotate
sparsely (which is not recommended in the first place).
* Clean up refs API and make "git clone" less intimate with the
implementation detail.
* "git pull" was reimplemented in C.
* The packet tracing machinery allows to capture an incoming pack
data to a file for debugging.
* Move machinery to parse human-readable scaled numbers like 1k, 4M,
and 2G as an option parameter's value from pack-objects to
parse-options API, to make it available to other codepaths.
* "git verify-tag" and "git verify-commit" have been taught to share
more code, and then learned to optionally show the verification
message from the underlying GPG implementation.
* Various enhancements around "git am" reading patches generated by
foreign SCM have been made.
* Ref listing by "git branch -l" and "git tag -l" commands has
started to be rebuilt, based on the for-each-ref machinery.
* The code to perform multi-tree merges has been taught to repopulate
the cache-tree upon a successful merge into the index, so that
subsequent "diff-index --cached" (hence "status") and "write-tree"
(hence "commit") will go faster.
The same logic in "git checkout" may now be removed, but that is a
separate issue.
* Tests that assume how reflogs are represented on the filesystem too
much have been corrected.
* "git am" has been rewritten in "C".
* 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.
* The "lockfile" API has been rebuilt on top of a new "tempfile" API.
* 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).
* The gitmodules API that is accessed from the C code learned to
cache stuff lazily.
Also contains various documentation updates and code clean-ups.
Fixes since v2.5
----------------
Unless otherwise noted, all the fixes since v2.5 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* "git subtree" (in contrib/) depended on "git log" output to be
stable, which was a no-no. Apply a workaround to force a
particular date format.
(merge e7aac44 da/subtree-date-confusion later to maint).
* An attempt to delete a ref by pushing into a repository whose HEAD
symbolic reference points at an unborn branch that cannot be
created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
points at refs/heads/a) failed.
(merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).
* The low-level "git send-pack" did not honor 'user.signingkey'
configuration variable when sending a signed-push.
(merge d830d39 db/send-pack-user-signingkey later to maint).
* "sparse checkout" misbehaved for a path that is excluded from the
checkout when switching between branches that differ at the path.
(merge 7d78241 as/sparse-checkout-removal later to maint).
* An experimental "untracked cache" feature used uname(2) in a
slightly unportable way.
(merge 100e433 cb/uname-in-untracked later to maint).
* A "rebase" replays changes of the local branch on top of something
else, as such they are placed in stage #3 and referred to as
"theirs", while the changes in the new base, typically a foreign
work, are placed in stage #2 and referred to as "ours". Clarify
the "checkout --ours/--theirs".
(merge f303016 se/doc-checkout-ours-theirs later to maint).
* The "rev-parse --parseopt" mode parsed the option specification
and the argument hint in a strange way to allow '=' and other
special characters in the option name while forbidding them from
the argument hint. This made it impossible to define an option
like "--pair <key>=<value>" with "pair=key=value" specification,
which instead would have defined a "--pair=key <value>" option.
(merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).
* Often a fast-import stream builds a new commit on top of the
previous commit it built, and it often unconditionally emits a
"from" command to specify the first parent, which can be omitted in
such a case. This caused fast-import to forget the tree of the
previous commit and then re-read it from scratch, which was
inefficient. Optimize for this common case.
(merge 0df3245 mh/fast-import-optimize-current-from later to maint).
* Running an aliased command from a subdirectory when the .git thing
in the working tree is a gitfile pointing elsewhere did not work.
(merge d95138e nd/export-worktree later to maint).
* "Is this subdirectory a separate repository that should not be
touched?" check "git clean" was inefficient. This was replaced
with a more optimized check.
(merge fbf2fec ee/clean-remove-dirs later to maint).
* The "new-worktree-mode" hack in "checkout" that was added in
nd/multiple-work-trees topic has been removed by updating the
implementation of new "worktree add".
(merge 65f9b75 es/worktree-add-cleanup later to maint).
* Remove remaining cruft from "git checkout --to", which
transitioned to "git worktree add".
(merge 114ff88 es/worktree-add later to maint).
* An off-by-one error made "git remote" to mishandle a remote with a
single letter nickname.
(merge bc598c3 mh/get-remote-group-fix later to maint).
* "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.
(merge adef956 ps/guess-repo-name-at-root later to maint).
* Running tests with the "-x" option to make them verbose had some
unpleasant interactions with other features of the test suite.
(merge 9b5fe78 jk/test-with-x later to maint).
* t1509 test that requires a dedicated VM environment had some
bitrot, which has been corrected.
(merge faacc5a ps/t1509-chroot-test-fixup later to maint).
* "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.
Note that this is irrelevant for 'master' with "git pull" rewritten
in C.
(merge 13e0e28 mm/pull-upload-pack later to maint).
* 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.
(merge dff6f28 cb/open-noatime-clear-errno later to maint).
* 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().
(merge f4c3edc jk/long-error-messages later to maint).
* strbuf_read() used to have one extra iteration (and an unnecessary
strbuf_grow() of 8kB), which was eliminated.
(merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).
* We rewrote one of the build scripts in Perl but this reimplements
in Bourne shell.
(merge 82aec45 sg/help-group later to maint).
* The experimental untracked-cache feature were buggy when paths with
a few levels of subdirectories are involved.
(merge 73f9145 dt/untracked-subdir later to maint).
* "interpret-trailers" helper mistook a single-liner log message that
has a colon as the end of existing trailer.
* The "interpret-trailers" helper mistook a multi-paragraph title of
a commit log message with a colon in it as the end of the trailer
block.
(merge 5c99995 cc/trailers-corner-case-fix later to maint).
* "git describe" without argument defaulted to describe the HEAD
commit, but "git describe --contains" didn't. Arguably, in a
repository used for active development, such defaulting would not
be very useful as the tip of branch is typically not tagged, but it
is better to be consistent.
(merge 2bd0706 sg/describe-contains later to maint).
* 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.
(merge 68c757f db/push-sign-if-asked later to maint).
* Because the configuration system does not allow "alias.0foo" and
"pager.0foo" as the configuration key, the user cannot use '0foo'
as a custom command name anyway, but "git 0foo" tried to look these
keys up and emitted useless warnings before saying '0foo is not a
git command'. These warning messages have been squelched.
(merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint).
* "git rev-list" does not take "--notes" option, but did not complain
when one is given.
(merge 2aea7a5 jk/rev-list-has-no-notes later to maint).
* When re-priming the cache-tree opportunistically while committing
the in-core index as-is, we mistakenly invalidated the in-core
index too aggressively, causing the experimental split-index code
to unnecessarily rewrite the on-disk index file(s).
(merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint).
* "git archive" did not use zip64 extension when creating an archive
with more than 64k entries, which nobody should need, right ;-)?
(merge 88329ca rs/archive-zip-many later to maint).
* The code in "multiple-worktree" support that attempted to recover
from an inconsistent state updated an incorrect file.
(merge 82fde87 nd/fixup-linked-gitdir later to maint).
* On case insensitive systems, "git p4" did not work well with client
specs.
* "git init empty && git -C empty log" said "bad default revision 'HEAD'",
which was found to be a bit confusing to new users.
(merge ce11360 jk/log-missing-default-HEAD later to maint).
* Code cleanups and documentation updates.
(merge 1c601af es/doc-clean-outdated-tools later to maint).
(merge 3581304 kn/tag-doc-fix later to maint).
(merge 3a59e59 kb/i18n-doc later to maint).
(merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
(merge 14691e3 sb/parse-options-codeformat later to maint).
(merge 4a6ada3 ad/bisect-cleanup later to maint).
(merge da4c5ad ta/docfix-index-format-tech later to maint).
(merge ae25fd3 sb/check-return-from-read-ref later to maint).
(merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
(merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
(merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
(merge 1269847 sg/t3020-typofix later to maint).
(merge 8b54c23 jc/calloc-pathspec later to maint).
(merge a6926b8 po/po-readme later to maint).
(merge 54d160e ss/fix-config-fd-leak later to maint).
(merge b80fa84 ah/submodule-typofix-in-error later to maint).
(merge 99885bc ah/reflog-typofix-in-error later to maint).
(merge 9476c2c ah/read-tree-usage-string later to maint).
(merge b8c1d27 ah/pack-objects-usage-strings later to maint).
(merge 486e1e1 br/svn-doc-include-paths-config later to maint).
(merge 1733ed3 ee/clean-test-fixes later to maint).
----------------------------------------------------------------
Changes since v2.5.0 are as follows:
Alex Henrie (4):
reflog: add missing single quote to error message
git-submodule: remove extraneous space from error message
pack-objects: place angle brackets around placeholders in usage strings
read-tree: replace bracket set with parentheses to clarify usage
Andreas Schwab (1):
Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable
Antoine Delaite (3):
bisect: correction of typo
bisect: replace hardcoded "bad|good" by variables
bisect: simplify the addition of new bisect terms
Brett Randall (1):
git-svn doc: mention "svn-remote.<name>.include-paths"
Brian Degenhardt (1):
unpack-trees: populate cache-tree on successful merge
Charles Bailey (3):
test-parse-options: update to handle negative ints
parse-options: move unsigned long option parsing out of pack-objects.c
untracked: fix detection of uname(2) failure
Christian Couder (3):
trailer: ignore first line of message
trailer: retitle a test and correct an in-comment message
trailer: support multiline title
Clemens Buchacher (1):
git_open_noatime: return with errno=0 on success
Dave Borowitz (9):
Documentation/git-push.txt: document when --signed may fail
Documentation/git-send-pack.txt: wrap long synopsis line
Documentation/git-send-pack.txt: document --signed
gitremote-helpers.txt: document pushcert option
transport: remove git_transport_options.push_cert
config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
builtin/send-pack.c: use parse_options API
push: support signing pushes iff the server supports it
push: add a config option push.gpgSign for default signed pushes
David Aguilar (1):
contrib/subtree: ignore log.date configuration
David Turner (22):
log: add "log.follow" configuration variable
unpack-trees: don't update files with CE_WT_REMOVE set
refs.c: add err arguments to reflog functions
refs: break out check for reflog autocreation
refs: new public ref function: safe_create_reflog
git-reflog: add exists command
refs: add REF_FORCE_CREATE_REFLOG flag
update-ref and tag: add --create-reflog arg
git-stash: use update-ref --create-reflog instead of creating files
t/t7509: remove unnecessary manipulation of reflog
tests: remove some direct access to .git/logs
refs: introduce pseudoref and per-worktree ref concepts
refs: add ref_type function
pseudorefs: create and use pseudoref update and delete functions
bisect: use update_ref
sequencer: replace write_cherry_pick_head with update_ref
untracked-cache: support sparse checkout
worktrees: add find_shared_symref
notes: handle multiple worktrees
pseudoref: check return values from read_ref()
untracked-cache: fix subdirectory handling
commit: don't rewrite shared index unnecessarily
Elia Pinto (1):
http: add support for specifying the SSL version
Eric Sunshine (31):
config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
checkout: avoid resolving HEAD unnecessarily
checkout: name check_linked_checkouts() more meaningfully
checkout: improve die_if_checked_out() robustness
checkout: die_if_checked_out: simplify strbuf management
checkout: generalize die_if_checked_out() branch name argument
checkout: check_linked_checkout: improve "already checked out" aesthetic
checkout: check_linked_checkout: simplify symref parsing
checkout: teach check_linked_checkout() about symbolic link HEAD
branch: publish die_if_checked_out()
worktree: improve worktree setup message
worktree: simplify new branch (-b/-B) option checking
worktree: introduce options container
worktree: make --detach mutually exclusive with -b/-B
worktree: add: suppress auto-vivication with --detach and no <branch>
worktree: make branch creation distinct from worktree population
worktree: elucidate environment variables intended for child processes
worktree: add_worktree: construct worktree-population command locally
worktree: detect branch-name/detached and error conditions locally
worktree: make setup of new HEAD distinct from worktree population
worktree: avoid resolving HEAD unnecessarily
worktree: populate via "git reset --hard" rather than "git checkout"
checkout: drop intimate knowledge of newly created worktree
Documentation/git-worktree: fix broken 'linkgit' invocation
Documentation/git: drop outdated Cogito reference
Documentation/git-tools: improve discoverability of Git wiki
Documentation/git-tools: fix item text formatting
Documentation/git-tools: drop references to defunct tools
Documentation/git-tools: retire manually-maintained list
Documentation/config: mention "now" and "never" for 'expire' settings
generate-cmdlist: re-implement as shell script
Erik Elfström (6):
setup: add gentle version of read_gitfile
setup: sanity check file size in read_gitfile_gently
t7300: add tests to document behavior of clean and nested git
p7300: add performance tests for clean
clean: improve performance when removing lots of directories
t7300: fix broken && chains
Galan Rémi (3):
git-rebase -i: add command "drop" to remove a commit
git rebase -i: warn about removed commits
git rebase -i: add static check for commands and SHA-1
Guillaume Pagès (4):
status: factor two rebase-related messages together
status: differentiate interactive from non-interactive rebases
status: give more information during rebase -i
status: add new tests for status during rebase -i
Heiko Voigt (4):
submodule: implement a config API for lookup of .gitmodules values
submodule: extract functions for config set and lookup
submodule: use new config API for worktree configurations
submodule: allow erroneous values for the fetchRecurseSubmodules option
Ilya Bobyr (1):
rev-parse --parseopt: allow [*=?!] in argument hints
Jacob Keller (8):
refs: cleanup comments regarding check_refname_component()
refs: loosen restriction on wildcard "*" refspecs
notes: document cat_sort_uniq rewriteMode
notes: extract enum notes_merge_strategy to notes-utils.h
notes: extract parse_notes_merge_strategy to notes-utils
notes: add tests for --commit/--abort/--strategy exclusivity
notes: add notes.mergeStrategy option to select default strategy
notes: teach git-notes about notes.<name>.mergeStrategy option
Jan Viktorin (1):
send-email: provide whitelist of SMTP AUTH mechanisms
Jeff King (45):
pkt-line: simplify starts_with checks in packet tracing
pkt-line: tighten sideband PACK check when tracing
pkt-line: support tracing verbatim pack contents
cat-file: minor style fix in options list
cat-file: move batch_options definition to top of file
cat-file: add --buffer option
cat-file: stop returning value from batch_one_object
cat-file: split batch_one_object into two stages
cat-file: add --batch-all-objects option
read_gitfile_gently: fix use-after-free
cat-file: sort and de-dup output of --batch-all-objects
show-branch: use DATE_RELATIVE instead of magic number
convert "enum date_mode" into a struct
introduce "format" date-mode
strbuf: make strbuf_addftime more robust
docs/config.txt: reorder hideRefs config
refs: support negative transfer.hideRefs
test-lib: turn off "-x" tracing during chain-lint check
test-lib: disable trace when test is not verbose
clone: add tests for output directory
clone: use computed length in guess_dir_name
cache.h: clarify documentation for git_path, et al
cache.h: complete set of git_path_submodule helpers
t5700: modernize style
add_to_alternates_file: don't add duplicate entries
prefer git_pathdup to git_path in some possibly-dangerous cases
prefer mkpathdup to mkpath in assignments
remote.c: drop extraneous local variable from migrate_file
refs.c: remove extra git_path calls from read_loose_refs
path.c: drop git_path_submodule
refs.c: simplify strbufs in reflog setup and writing
refs.c: avoid repeated git_path calls in rename_tmp_log
refs.c: avoid git_path assignment in lock_ref_sha1_basic
refs.c: remove_empty_directories can take a strbuf
find_hook: keep our own static buffer
get_repo_path: refactor path-allocation
memoize common git-path "constant" files
vreportf: report to arbitrary filehandles
vreportf: avoid intermediate buffer
format_config: don't init strbuf
format_config: simplify buffer handling
get_urlmatch: avoid useless strbuf write
config: silence warnings for command names with invalid keys
rev-list: make it obvious that we do not support notes
log: diagnose empty HEAD more clearly
Jiang Xin (2):
receive-pack: crash when checking with non-exist HEAD
i18n: am: fix typo in description of -b option
Jim Hill (1):
strbuf_read(): skip unnecessary strbuf_grow() at eof
Johannes Schindelin (19):
fsck: introduce fsck options
fsck: introduce identifiers for fsck messages
fsck: provide a function to parse fsck message IDs
fsck: offer a function to demote fsck errors to warnings
fsck (receive-pack): allow demoting errors to warnings
fsck: report the ID of the error/warning
fsck: make fsck_ident() warn-friendly
fsck: make fsck_commit() warn-friendly
fsck: handle multiple authors in commits specially
fsck: make fsck_tag() warn-friendly
fsck: add a simple test for receive.fsck.<msg-id>
fsck: disallow demoting grave fsck errors to warnings
fsck: optionally ignore specific fsck issues completely
fsck: allow upgrading fsck warnings to errors
fsck: document the new receive.fsck.<msg-id> options
fsck: support demoting errors to warnings
fsck: introduce `git fsck --connectivity-only`
fsck: git receive-pack: support excluding objects from fsck'ing
fsck: support ignoring objects in `git fsck` via fsck.skiplist
Johannes Sixt (2):
t7300-clean: require POSIXPERM for chmod 0 test
t2019: skip test requiring '*' in a file name non Windows
Jose F. Morales (1):
Mingw: verify both ends of the pipe () call
Junio C Hamano (27):
commit-slab: introduce slabname##_peek() function
builtin/send-pack.c: respect user.signingkey
Git 2.4.8
First batch for 2.6
sha1_file.c: rename move_temp_to_file() to finalize_object_file()
Second batch for 2.6
Third batch for 2.6
Start preparing for 2.5.1
Fourth batch for 2.6
ps_matched: xcalloc() takes nmemb and then element size
log: rename "tweak" helpers
log: when --cc is given, default to -p unless told otherwise
log: show merge commit when --cc is given
builtin/am: introduce write_state_*() helper functions
builtin/am: make sure state files are text
write_file(): drop "fatal" parameter
write_file_v(): do not leave incomplete line at the end
write_file(): drop caller-supplied LF from calls to create a one-liner file
builtin/log.c: minor reformat
Fifth batch for 2.6
pull: pass upload_pack only when it was given
Sixth batch for 2.6
Git 2.5.1
Seventh batch for 2.6
Eighth batch for 2.6
Ninth batch for 2.6
Git 2.6-rc0
Karsten Blees (1):
Documentation/i18n.txt: clarify character encoding support
Karthik Nayak (12):
for-each-ref: extract helper functions out of grab_single_ref()
for-each-ref: clean up code
for-each-ref: rename 'refinfo' to 'ref_array_item'
for-each-ref: introduce new structures for better organisation
for-each-ref: introduce 'ref_array_clear()'
for-each-ref: rename some functions and make them public
for-each-ref: rename variables called sort to sorting
ref-filter: add 'ref-filter.h'
Documentation/tag: remove double occurance of "<pattern>"
ref-filter: move code from 'for-each-ref'
for-each-ref: introduce filter_refs()
ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
Kevin Daudt (1):
pull: allow dirty tree when rebase.autostash enabled
Lars Schneider (1):
git-p4: honor core.ignorecase when using P4 client specs
Matthieu Moy (3):
Documentation/bisect: move getting help section to the end
pull.sh: quote $upload_pack when passing it to git-fetch
bisect: don't mix option parsing and non-trivial code
Michael Haggerty (45):
delete_ref(): move declaration to refs.h
remove_branches(): remove temporary
delete_ref(): handle special case more explicitly
delete_refs(): new function for the refs API
delete_refs(): make error message more generic
delete_refs(): bail early if the packed-refs file cannot be rewritten
prune_remote(): use delete_refs()
prune_refs(): use delete_refs()
repack_without_refs(): make function private
initial_ref_transaction_commit(): function for initial ref creation
refs: remove some functions from the module's public interface
initial_ref_transaction_commit(): check for duplicate refs
initial_ref_transaction_commit(): check for ref D/F conflicts
refs: move the remaining ref module declarations to refs.h
refs.h: add some parameter names to function declarations
check_branch_commit(): make first parameter const
update_ref(): don't read old reference value before delete
cmd_update_ref(): make logic more straightforward
delete_ref(): use the usual convention for old_sha1
Documentation/bisect: revise overall content
fast-import: add a get-mark command
Documentation/git-worktree: consistently use term "linked working tree"
Documentation/git-worktree: fix incorrect reference to file "locked"
Documentation/config: fix stale "git prune --worktree" reference
Documentation/git-worktree: wordsmith worktree-related manpages
get_remote_group(): handle remotes with single-character names
get_remote_group(): rename local variable "space" to "wordlen"
get_remote_group(): eliminate superfluous call to strcspn()
get_remote_group(): use skip_prefix()
lockfile: move documentation to lockfile.h and lockfile.c
create_bundle(): duplicate file descriptor to avoid closing it twice
lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
lockfile: add accessor get_lock_file_path()
commit_lock_file(): use get_locked_file_path()
tempfile: a new module for handling temporary files
prepare_tempfile_object(): new function, extracted from create_tempfile()
tempfile: add several functions for creating temporary files
register_tempfile(): new function to handle an existing temporary file
write_shared_index(): use tempfile module
setup_temporary_shallow(): use tempfile module
diff: use tempfile module
lock_repo_for_gc(): compute the path to "gc.pid" only once
gc: use tempfile module to handle gc.pid file
credential-cache--daemon: delete socket from main()
credential-cache--daemon: use tempfile module
Michael Rappazzo (1):
git-rebase--interactive.sh: add config option for custom instruction format
Mike Hommey (2):
Allow to control where the replace refs are looked for
fast-import: do less work when given "from" matches current branch head
Nguyễn Thái Ngọc Duy (4):
setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
t7063: use --force-untracked-cache to speed up a bit
untracked cache: fix entry invalidation
setup: update the right file in multiple checkouts
Patrick Steinhardt (6):
Documentation/git-worktree: fix duplicated 'from'
tests: fix broken && chains in t1509-root-worktree
tests: fix cleanup after tests in t1509-root-worktree
clone: do not include authentication data in guessed dir
clone: do not use port number as dir name
clone: abort if no dir name could be guessed
Paul Tan (85):
t4150: test applying StGit patch
am: teach StGit patch parser how to read from stdin
t4150: test applying StGit series
am: use gmtime() to parse mercurial patch date
am: teach mercurial patch parser how to read from stdin
parse-options-cb: implement parse_opt_passthru()
parse-options-cb: implement parse_opt_passthru_argv()
argv-array: implement argv_array_pushv()
pull: implement skeletal builtin pull
pull: implement fetch + merge
pull: pass verbosity, --progress flags to fetch and merge
pull: pass git-merge's options to git-merge
pull: pass git-fetch's options to git-fetch
pull: error on no merge candidates
pull: support pull.ff config
pull: check if in unresolved merge state
pull: fast-forward working tree if head is updated
pull: implement pulling into an unborn branch
pull: set reflog message
pull: teach git pull about --rebase
pull: configure --rebase via branch.<name>.rebase or pull.rebase
pull --rebase: exit early when the working directory is dirty
pull --rebase: error on no merge candidate cases
pull: remove redirection to git-pull.sh
t4150: am.messageid really adds the message id
t4150: am fails if index is dirty
t4151: am --abort will keep dirty index intact
t4150: am refuses patches when paused
t4150: am --resolved fails if index has no changes
t4150: am --resolved fails if index has unmerged entries
t4150: am with applypatch-msg hook
t4150: am with pre-applypatch hook
t4150: am with post-applypatch hook
t4150: tests for am --[no-]scissors
t3418: non-interactive rebase --continue with rerere enabled
t3901: test git-am encoding conversion
wrapper: implement xopen()
wrapper: implement xfopen()
builtin-am: implement skeletal builtin am
builtin-am: implement patch queue mechanism
builtin-am: split out mbox/maildir patches with git-mailsplit
builtin-am: auto-detect mbox patches
builtin-am: extract patch and commit info with git-mailinfo
builtin-am: apply patch with git-apply
builtin-am: implement committing applied patch
builtin-am: refuse to apply patches if index is dirty
builtin-am: implement --resolved/--continue
builtin-am: don't parse mail when resuming
builtin-am: implement --skip
builtin-am: implement --abort
builtin-am: reject patches when there's a session in progress
builtin-am: implement -q/--quiet
builtin-am: exit with user friendly message on failure
builtin-am: implement -s/--signoff
cache-tree: introduce write_index_as_tree()
builtin-am: implement --3way
builtin-am: implement --rebasing mode
builtin-am: bypass git-mailinfo when --rebasing
builtin-am: handle stray state directory
builtin-am: implement -u/--utf8
builtin-am: implement -k/--keep, --keep-non-patch
builtin-am: implement --[no-]message-id, am.messageid
builtin-am: support --keep-cr, am.keepcr
builtin-am: implement --[no-]scissors
builtin-am: pass git-apply's options to git-apply
builtin-am: implement --ignore-date
builtin-am: implement --committer-date-is-author-date
builtin-am: implement -S/--gpg-sign, commit.gpgsign
builtin-am: invoke post-rewrite hook
builtin-am: support automatic notes copying
builtin-am: invoke applypatch-msg hook
builtin-am: invoke pre-applypatch hook
builtin-am: invoke post-applypatch hook
builtin-am: rerere support
builtin-am: support and auto-detect StGit patches
builtin-am: support and auto-detect StGit series files
builtin-am: support and auto-detect mercurial patches
builtin-am: implement -i/--interactive
builtin-am: implement legacy -b/--binary option
builtin-am: check for valid committer ident
builtin-am: remove redirection to git-am.sh
test_terminal: redirect child process' stdin to a pty
am: let command-line options override saved options
am: let --signoff override --no-signoff
am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
Philip Oakley (1):
po/README: Update directions for l10n contributors
Ralf Thielow (1):
lockfile: remove function "hold_lock_file_for_append"
Remi Lespinet (11):
t9001-send-email: move script creation in a setup test
send-email: allow aliases in patch header and command script outputs
t9001-send-email: refactor header variable fields replacement
send-email: refactor address list process
send-email: allow use of aliases in the From field of --compose mode
send-email: minor code refactoring
send-email: reduce dependencies impact on parse_address_line
send-email: consider quote as delimiter instead of character
send-email: allow multiple emails using --cc, --to and --bcc
send-email: suppress meaningless whitespaces in from field
git-am: add am.threeWay config variable
René Scharfe (3):
t5004: test ZIP archives with many entries
archive-zip: use a local variable to store the creator version
archive-zip: support more than 65535 entries
SZEDER Gábor (8):
bash prompt: test untracked files status indicator with untracked dirs
bash prompt: faster untracked status indicator with untracked directories
config: add '--name-only' option to list only variable names
completion: list variable names reliably with 'git config --name-only'
t3020: fix typo in test description
config: restructure format_config() for better control flow
wt-status: move #include "pathspec.h" to the header
describe --contains: default to HEAD when no commit-ish is given
Simon A. Eugster (1):
checkout: document subtlety around --ours/--theirs
Stefan Beller (4):
parse-options: align curly braces for all options
add: remove dead code
transport-helper: die on errors reading refs.
read-cache: fix indentation in read_index_from
Sven Strickroth (1):
config: close config file handle in case of error
Thomas Ackermann (1):
typofix for index-format.txt
Thomas Braun (1):
completion: offer '--edit-todo' during interactive rebase
Zoë Blade (1):
userdiff: add support for Fountain documents
brian m. carlson (7):
verify-tag: add tests
verify-tag: share code with verify-commit
verify-commit: add test for exit status on untrusted signature
gpg: centralize signature check
gpg: centralize printing signature buffers
verify-commit: add option to print raw gpg status information
verify-tag: add option to print raw gpg status information
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.5.0
@ 2015-07-27 20:47 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2015-07-27 20:47 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
The latest feature release Git v2.5.0 is now available at the
usual places. It is comprised of 583 non-merge commits since
v2.4.0, contributed by 70 people, 21 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.5.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://code.google.com/p/git-core/
url = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.4.0 are as follows.
Welcome to the Git development community!
Allen Hubbe, Ariel Faigon, Blair Holloway, Christian Neukirchen,
Danny Lin, Enrique Tobis, Frans Klaver, Fredrik Medley, Joe
Cridge, Lars Kellogg-Stedman, Lawrence Siebert, Lex Spoon, Luke
Mewburn, Miguel Torroja, Mike Edgar, Ossi Herrala, Panagiotis
Astithas, Quentin Neill, Remi Lespinet, Sébastien Guimmara,
and Thomas Schneider.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Alexander Shopov, Alex Henrie, brian m. carlson, Carlos Martín
Nieto, Charles Bailey, Clemens Buchacher, David Aguilar,
David Turner, Dennis Kaarsemaker, Dimitriy Ryazantcev, Elia
Pinto, Eric Sunshine, Fredrik Gustafsson, Jean-Noel Avila, Jeff
King, Jiang Xin, Jim Hill, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Junio C Hamano, Karsten Blees, Karthik Nayak,
Luke Diamand, Matthieu Moy, Max Kirillov, Michael Coleman,
Michael Haggerty, Michael J Gruber, Mike Hommey, Nguyễn
Thái Ngọc Duy, Patrick Steinhardt, Paul Tan, Peter Krefting,
Phil Hord, Phillip Sz, Ralf Thielow, Ramsay Allan Jones, René
Scharfe, Richard Hansen, Sebastian Schuberth, Stefan Beller,
SZEDER Gábor, Thomas Braun, Thomas Gummerer, Tony Finch,
Torsten Bögershausen, Trần Ngọc Quân, and Vitor Antunes.
----------------------------------------------------------------
Git 2.5 Release Notes
=====================
Updates since v2.4
------------------
UI, Workflows & Features
* The bash completion script (in contrib/) learned a few options that
"git revert" takes.
* Whitespace breakages in deleted and context lines can also be
painted in the output of "git diff" and friends with the new
--ws-error-highlight option.
* List of commands shown by "git help" are grouped along the workflow
elements to help early learners.
* "git p4" now detects the filetype (e.g. binary) correctly even when
the files are opened exclusively.
* git p4 attempts to better handle branches in Perforce.
* "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.
* More workaround for Perforce's row number limit in "git p4".
* 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).
This release makes it in line with the rest of Git, as well as with
Perforce.
* A new short-hand <branch>@{push} denotes the remote-tracking branch
that tracks the branch at the remote the <branch> would be pushed
to.
* "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.
* 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.
Consider this as still an experimental feature; its UI is still
likely to change.
* Tweak the sample "store" backend of the credential helper to honor
XDG configuration file locations when specified.
* A heuristic we use to catch mistyped paths on the command line
"git <cmd> <revs> <pathspec>" is to make sure that 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.
* "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 (but not removed yet).
* Filter scripts were run with SIGPIPE disabled on the Git side,
expecting that they may not read what Git feeds them to filter.
We however treated a filter that does not read its input fully
before exiting as an error. We no longer do and ignore EPIPE
when writing to feed the filter scripts.
This changes semantics, but arguably in a good way. If a filter
can produce its output without fully consuming its input using
whatever magic, we now let it do so, instead of diagnosing it
as a programming error.
* Instead of dying immediately upon failing to obtain a lock, the
locking (of refs etc) retries after a short while with backoff.
* Introduce http.<url>.SSLCipherList configuration variable to tweak
the list of cipher suite to be used with libcURL when talking with
https:// sites.
* "git subtree" script (in contrib/) used "echo -n" to produce
progress messages in a non-portable way.
* "git subtree" script (in contrib/) does not have --squash option
when pushing, but the documentation and help text pretended as if
it did.
* The Git subcommand completion (in contrib/) no longer lists credential
helpers among candidates; they are not something the end user would
invoke interactively.
* The index file can be taught with "update-index --untracked-cache"
to optionally remember already seen untracked files, in order to
speed up "git status" in a working tree with tons of cruft.
* "git mergetool" learned to drive WinMerge as a backend.
* "git upload-pack" that serves "git fetch" can be told to serve
commits that are not at the tip of any ref, as long as they are
reachable from a ref, with uploadpack.allowReachableSHA1InWant
configuration variable.
* "git cat-file --batch(-check)" learned the "--follow-symlinks"
option that follows an in-tree symbolic link when asked about an
object via extended SHA-1 syntax, e.g. HEAD:RelNotes that points at
Documentation/RelNotes/2.5.0.txt. With the new option, the command
behaves as if HEAD:Documentation/RelNotes/2.5.0.txt was given as
input instead.
Consider this as still an experimental and incomplete feature:
- We may want to do the same for in-index objects, e.g.
asking for :RelNotes with this option should give
:Documentation/RelNotes/2.5.0.txt, too
- "git cat-file --follow-symlinks blob HEAD:RelNotes"
may also be something we want to allow in the future.
* "git send-email" learned the alias file format used by the sendmail
program (in a simplified form; we obviously do not feed pipes).
* Traditionally, external low-level 3-way merge drivers are expected
to produce their results based solely on the contents of the three
variants given in temporary files named by %O, %A and %B on their
command line. Additionally allow them to look at the final path
(given by %P).
* "git blame" learned blame.showEmail configuration variable.
* "git apply" cannot diagnose a patch corruption when the breakage is
to mark the length of the hunk shorter than it really is on the
hunk header line "@@ -l,k +m,n @@"; one special case it could is
when the hunk becomes no-op (e.g. k == n == 2 for two-line context
patch output), and it learned to do so in this special case.
* Add the "--allow-unknown-type" option to "cat-file" to allow
inspecting loose objects of an experimental or a broken type.
* 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.
(merge a4fb76c lm/squelch-bg-progress later to maint).
Performance, Internal Implementation, Development Support etc.
* "unsigned char [20]" used throughout the code to represent object
names are being converted into a semi-opaque "struct object_id".
This effort is expected to interfere with other topics in flight,
but hopefully will give us one extra level of abstraction in the
end, when completed.
* for_each_ref() callback functions were taught to name the objects
not with "unsigned char sha1[20]" but with "struct object_id".
* Catch a programmer mistake to feed a pointer not an array to
ARRAY_SIZE() macro, by using a couple of GCC extensions.
* Some error messages in "git config" were emitted without calling
the usual error() facility.
* 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).
* More line-ending tests.
* An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
to read packed-refs file revealed that the former is unacceptably
inefficient. It has been optimized by using getdelim(3) when
available.
* 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.
* There was a dead code that used to handle "git pull --tags" and
show special-cased error message, which was made irrelevant when
the semantics of the option changed back in Git 1.9 days.
(merge 19d122b pt/pull-tags-error-diag later to maint).
* Help us to find broken test script that splits the body part of the
test by mistaken use of wrong kind of quotes.
(merge d93d5d5 jc/test-prereq-validate later to maint).
* Developer support to automatically detect broken &&-chain in the
test scripts is now turned on by default.
(merge 92b269f jk/test-chain-lint later to maint).
* Error reporting mechanism used in "refs" API has been made more
consistent.
* "git pull" has more test coverage now.
* "git pull" has become more aware of the options meant for
underlying "git fetch" and then learned to use parse-options
parser.
* Clarify in the Makefile a guideline to decide use of USE_NSEC.
Also contains various documentation updates and code clean-ups.
Fixes since v2.4
----------------
Unless otherwise noted, all the fixes since v2.4 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* Git 2.4 broke setting verbosity and progress levels on "git clone"
with native transports.
(merge 822f0c4 mh/clone-verbosity-fix later to maint).
* "git add -e" did not allow the user to abort the operation by
killing the editor.
(merge cb64800 jk/add-e-kill-editor later to maint).
* Memory usage of "git index-pack" has been trimmed by tens of
per-cent.
(merge f0e7f11 nd/slim-index-pack-memory-usage later to maint).
* "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.
(merge b6e8a3b jk/still-interesting later to maint).
* "hash-object --literally" introduced in v2.2 was not prepared to
take a really long object type name.
(merge 1427a7f jc/hash-object later to maint).
* "git rebase --quiet" was not quite quiet when there is nothing to
do.
(merge 22946a9 jk/rebase-quiet-noop later to maint).
* The completion for "log --decorate=" parameter value was incorrect.
(merge af16bda sg/complete-decorate-full-not-long later to maint).
* "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".
(merge df06201 jk/filter-branch-use-of-sed-on-incomplete-line later to maint).
* "git daemon" fails to build from the source under NO_IPV6
configuration (regression in 2.4).
(merge d358f77 jc/daemon-no-ipv6-for-2.4.1 later to maint).
* 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 portable across platforms
while terminating lines in their working tree files with CRLF for
their platform.
(merge 4bf256d tb/blame-resurrect-convert-to-git later to maint).
* 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).
(merge 84ccad8 jk/init-core-worktree-at-root later to maint).
* "git commit --date=now" or anything that relies on approxidate lost
the daylight-saving-time offset.
(merge f6e6362 jc/epochtime-wo-tz later to maint).
* 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.
(merge ee1c6c3 jk/prune-mtime later to maint).
* The codepaths that read .gitignore and .gitattributes files have been
taught 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.
(merge 27547e5 cn/bom-in-gitignore later to maint).
* a few helper scripts in the test suite did not report errors
correctly.
(merge de248e9 ep/fix-test-lib-functions-report later to maint).
* The default $HOME/.gitconfig file created upon "git config --global"
that edits it had incorrectly spelled user.name and user.email
entries in it.
(merge 7e11052 oh/fix-config-default-user-name-section later to maint).
* "git cat-file bl $blob" failed to barf even though there is no
object type that is "bl".
(merge b7994af jk/type-from-string-gently later to maint).
* 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.
(merge 0615173 jc/diff-no-index-d-f later to maint).
* "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.
(merge 8cbc57c ph/rebase-i-redo later to maint).
* 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").
(merge baaf233 bc/connect-plink later to maint).
* 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).
(merge a0b4507 jk/git-no-more-argv0-path-munging later to maint).
* 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.
(merge 099d2d8 jc/gitignore-precedence later to maint).
* There was a commented-out (instead of being marked to expect
failure) test that documented a breakage that was fixed since the
test was written; turn it into a proper test.
(merge 66d2e04 sb/t1020-cleanup later to maint).
* The "log --decorate" enhancement in Git 2.4 that shows the commit
at the tip of the current branch e.g. "HEAD -> master", did not
work with --decorate=full.
(merge 429ad20 mg/log-decorate-HEAD later to maint).
* The ref API did not handle cases where 'refs/heads/xyzzy/frotz' is
removed at the same time as 'refs/heads/xyzzy' is added (or vice
versa) very well.
(merge c628edf mh/ref-directory-file later to maint).
* 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.
(merge 185ce3a mh/write-refs-sooner-2.4 later to maint).
* "git bundle verify" did not diagnose extra parameters on the
command line.
(merge 7886cfa ps/bundle-verify-arg later to maint).
* Various documentation mark-up fixes to make the output more
consistent in general and also make AsciiDoctor (an alternative
formatter) happier.
(merge d0258b9 jk/asciidoc-markup-fix later to maint).
(merge ad3967a jk/stripspace-asciidoctor-fix later to maint).
(merge 975e382 ja/tutorial-asciidoctor-fix later to maint).
* The code to read pack-bitmap wanted to allocate a few hundred
pointers to a structure, but by mistake allocated and leaked memory
enough to hold that many actual structures. Correct the allocation
size and also have it on stack, as it is small enough.
(merge 599dc76 rs/plug-leak-in-pack-bitmaps later to maint).
* The pull.ff configuration was supposed to override the merge.ff
configuration, but it didn't.
(merge db9bb28 pt/pull-ff-vs-merge-ff later to maint).
* "git pull --log" and "git pull --no-log" worked as expected, but
"git pull --log=20" did not.
(merge 5061a44 pt/pull-log-n later to maint).
* "git rerere forget" in a repository without rerere enabled gave a
cryptic error message; it should be a silent no-op instead.
(merge 0544574 jk/rerere-forget-check-enabled later to maint).
* "git rebase -i" fired post-rewrite hook when it shouldn't (namely,
when it was told to stop sequencing with 'exec' insn).
(merge 141ff8f mm/rebase-i-post-rewrite-exec later to maint).
* Clarify that "log --raw" and "log --format=raw" are unrelated
concepts.
(merge 92de921 mm/log-format-raw-doc later to maint).
* Make "git stash something --help" error out, so that users can
safely say "git stash drop --help".
(merge 5ba2831 jk/stash-options later to maint).
* The clean/smudge interface did not work well when filtering an
empty contents (failed and then passed the empty input through).
It can be argued that a filter that produces anything but empty for
an empty input is nonsense, but if the user wants to do strange
things, then why not?
(merge f6a1e1e jh/filter-empty-contents later to maint).
* Communication between the HTTP server and http_backend process can
lead to a dead-lock when relaying a large ref negotiation request.
Diagnose the situation better, and mitigate it by reading such a
request first into core (to a reasonable limit).
(merge 636614f jk/http-backend-deadlock later to maint).
* "git clean pathspec..." tried to lstat(2) and complain even for
paths outside the given pathspec.
(merge 838d6a9 dt/clean-pathspec-filter-then-lstat later to maint).
* Recent "git prune" traverses young unreachable objects to safekeep
old objects in the reachability chain from them, which sometimes
caused error messages that are unnecessarily alarming.
(merge ce4e7b2 jk/squelch-missing-link-warning-for-unreachable later to maint).
* The configuration reader/writer uses mmap(2) interface to access
the files; when we find a directory, it barfed with "Out of memory?".
(merge 9ca0aaf jk/diagnose-config-mmap-failure later to maint).
* "color.diff.plain" was a misnomer; give it 'color.diff.context' as
a more logical synonym.
(merge 8dbf3eb jk/color-diff-plain-is-context later to maint).
* The setup code used to die when core.bare and core.worktree are set
inconsistently, even for commands that do not need working tree.
(merge fada767 jk/die-on-bogus-worktree-late later to maint).
* Recent Mac OS X updates breaks the logic to detect that the machine
is on the AC power in the sample pre-auto-gc script.
(merge c54c7b3 pa/auto-gc-mac-osx later to maint).
* "git commit --cleanup=scissors" was not careful enough to protect
against getting fooled by a line that looked like scissors.
(merge fbfa097 sg/commit-cleanup-scissors later to maint).
* "Have we lost a race with competing repack?" check was too
expensive, especially while receiving a huge object transfer
that runs index-pack (e.g. "clone" or "fetch").
(merge 0eeb077 jk/index-pack-reduce-recheck later to maint).
* The tcsh completion writes a bash scriptlet but that would have
failed for users with noclobber set.
(merge 0b1f688 af/tcsh-completion-noclobber later to maint).
* "git for-each-ref" reported "missing object" for 0{40} when it
encounters a broken ref. The lack of object whose name is 0{40} is
not the problem; the ref being broken is.
(merge 501cf47 mh/reporting-broken-refs-from-for-each-ref later to maint).
* Various fixes around "git am" that applies a patch to a history
that is not there yet.
(merge 6ea3b67 pt/am-abort-fix later to maint).
* "git fsck" used to ignore missing or invalid objects recorded in reflog.
(merge 19bf6c9 mh/fsck-reflog-entries later to maint).
* "git format-patch --ignore-if-upstream A..B" did not like to be fed
tags as boundary commits.
(merge 9b7a61d jc/do-not-feed-tags-to-clear-commit-marks later to maint).
* "git fetch --depth=<depth>" and "git clone --depth=<depth>" issued
a shallow transfer request even to an upload-pack that does not
support the capability.
(merge eb86a50 me/fetch-into-shallow-safety later to maint).
* "git rebase" did not exit with failure when format-patch it invoked
failed for whatever reason.
(merge 60d708b cb/rebase-am-exit-code later to maint).
* Fix a small bug in our use of umask() return value.
(merge 3096b2e jk/fix-refresh-utime later to maint).
* An ancient test framework enhancement to allow color was not
entirely correct; this makes it work even when tput needs to read
from the ~/.terminfo under the user's real HOME directory.
(merge d5c1b7c rh/test-color-avoid-terminfo-in-original-home later to maint).
* A minor bugfix when pack bitmap is used with "rev-list --count".
(merge c8a70d3 jk/rev-list-no-bitmap-while-pruning later to maint).
* "git config" failed to update the configuration file when the
underlying filesystem is incapable of renaming a file that is still
open.
(merge 7a64592 kb/config-unmap-before-renaming later to maint).
* Avoid possible ssize_t to int truncation.
(merge 6c8afe4 mh/strbuf-read-file-returns-ssize-t later to maint).
* When you say "!<ENTER>" while running say "git log", you'd confuse
yourself in the resulting shell, that may look as if you took
control back to the original shell you spawned "git log" from but
that isn't what is happening. To that new shell, we leaked
GIT_PAGER_IN_USE environment variable that was meant as a local
communication between the original "Git" and subprocesses that was
spawned by it after we launched the pager, which caused many
"interesting" things to happen, e.g. "git diff | cat" still paints
its output in color by default.
Stop leaking that environment variable to the pager's half of the
fork; we only need it on "Git" side when we spawn the pager.
(merge 124b519 jc/unexport-git-pager-in-use-in-pager later to maint).
* Abandoning an already applied change in "git rebase -i" with
"--continue" left CHERRY_PICK_HEAD and confused later steps.
(merge 0e0aff4 js/rebase-i-clean-up-upon-continue-to-skip later to maint).
* We used to ask libCURL to use the most secure authentication method
available when talking to an HTTP proxy only when we were told to
talk to one via configuration variables. We now ask libCURL to
always use the most secure authentication method, because the user
can tell libCURL to use an HTTP proxy via an environment variable
without using configuration variables.
(merge 5841520 et/http-proxyauth later to maint).
* A fix to a minor regression to "git fsck" in v2.2 era that started
complaining about a body-less tag object when it lacks a separator
empty line after its header to separate it with a non-existent body.
(merge 84d18c0 jc/fsck-retire-require-eoh later to maint).
* Code cleanups and documentation updates.
(merge 0269f96 mm/usage-log-l-can-take-regex later to maint).
(merge 64f2589 nd/t1509-chroot-test later to maint).
(merge d201a1e sb/test-bitmap-free-at-end later to maint).
(merge 05bfc7d sb/line-log-plug-pairdiff-leak later to maint).
(merge 846e5df pt/xdg-config-path later to maint).
(merge 1154aa4 jc/plug-fmt-merge-msg-leak later to maint).
(merge 319b678 jk/sha1-file-reduce-useless-warnings later to maint).
(merge 9a35c14 fg/document-commit-message-stripping later to maint).
(merge bbf431c ps/doc-packfile-vs-pack-file later to maint).
(merge 309a9e3 jk/skip-http-tests-under-no-curl later to maint).
(merge ccd593c dl/branch-error-message later to maint).
(merge 22570b6 rs/janitorial later to maint).
(merge 5c2a581 mc/commit-doc-grammofix later to maint).
(merge ce41720 ah/usage-strings later to maint).
(merge e6a268c sb/glossary-submodule later to maint).
(merge ec48a76 sb/submodule-doc-intro later to maint).
(merge 14f8b9b jk/clone-dissociate later to maint).
(merge 055c7e9 sb/pack-protocol-mention-smart-http later to maint).
(merge 7c37a5d jk/make-fix-dependencies later to maint).
(merge fc0aa39 sg/merge-summary-config later to maint).
(merge 329af6c pt/t0302-needs-sanity later to maint).
(merge d614f07 fk/doc-format-patch-vn later to maint).
(merge 72dbb36 sg/completion-commit-cleanup later to maint).
(merge e654eb2 es/utf8-stupid-compiler-workaround later to maint).
(merge 34b935c es/osx-header-pollutes-mask-macro later to maint).
(merge ab7fade jc/prompt-document-ps1-state-separator later to maint).
(merge 25f600e mm/describe-doc later to maint).
(merge 83fe167 mm/branch-doc-updates later to maint).
(merge 75d2e5a ls/hint-rev-list-count later to maint).
(merge edc8f71 cb/subtree-tests-update later to maint).
(merge 5330e6e sb/p5310-and-chain later to maint).
(merge c4ac525 tb/checkout-doc later to maint).
(merge e479c5f jk/pretty-encoding-doc later to maint).
(merge 7e837c6 ss/clone-guess-dir-name-simplify later to maint).
----------------------------------------------------------------
Changes since v2.4.0 are as follows:
Alex Henrie (3):
blame, log: format usage strings similarly to those in documentation
l10n: ca.po: update translation
l10n: ca.po: update translation
Alexander Shopov (2):
l10n: Updated Bulgarian translation of git (2355t,0f,0u)
l10n: Updated Bulgarian translation of git (2359t,0f,0u)
Allen Hubbe (1):
send-email: add sendmail email aliases format
Ariel Faigon (1):
git-completion.tcsh: fix redirect with noclobber
Blair Holloway (1):
git-p4: fix filetype detection on files opened exclusively
Carlos Martín Nieto (1):
dir: allow a BOM at the beginning of exclude files
Charles Bailey (4):
contrib/subtree: use tabs consitently for indentation in tests
contrib/subtree: fix broken &&-chains and revealed test error
contrib/subtree: small tidy-up to test
Fix definition of ARRAY_SIZE for non-gcc builds
Christian Neukirchen (1):
cvsimport: silence regex warning appearing in Perl 5.22.
Clemens Buchacher (1):
rebase: return non-zero error code if format-patch fails
Danny Lin (3):
branch: do not call a "remote-tracking branch" a "remote branch"
contrib/subtree: there's no push --squash
contrib/subtree: portability fix for string printing
David Aguilar (2):
mergetool--lib: set IFS for difftool and mergetool
mergetools: add winmerge as a builtin tool
David Turner (4):
clean: only lstat files in pathspec
tree-walk: learn get_tree_entry_follow_symlinks
sha1_name: get_sha1_with_context learns to follow symlinks
cat-file: add --follow-symlinks to --batch
Dennis Kaarsemaker (1):
checkout: don't require a work tree when checking out into a new one
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Elia Pinto (2):
test-lib-functions.sh: fix the second argument to some helper functions
git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
Enrique Tobis (1):
http: always use any proxy auth method available
Eric Sunshine (44):
git-hash-object.txt: document --literally option
hash-object --literally: fix buffer overrun with extra-long object type
t1007: add hash-object --literally tests
command-list: prepare machinery for upcoming "common groups" section
generate-cmdlist: parse common group commands
send-email: further document missing sendmail aliases functionality
send-email: visually distinguish sendmail aliases parser warnings
send-email: drop noise comments which merely repeat what code says
send-email: fix style: cuddle 'elsif' and 'else' with closing brace
send-email: refactor sendmail aliases parser
send-email: simplify sendmail aliases comment and blank line recognizer
send-email: implement sendmail aliases line continuation support
t9001: refactor sendmail aliases test infrastructure
t9001: add sendmail aliases line continuation tests
send-email: further warn about unsupported sendmail aliases features
ewah/bitmap: silence warning about MASK macro redefinition
config.mak.uname: Darwin: define HAVE_GETDELIM for modern OS X releases
configure: add getdelim() check
utf8: NO_ICONV: silence uninitialized variable warning
Documentation/git-checkout: fix incorrect worktree prune command
Documentation/git-worktree: associate options with commands
Documentation: move linked worktree description from checkout to worktree
Documentation/git-worktree: add BUGS section
Documentation/git-worktree: split technical info from general description
Documentation/git-worktree: add high-level 'lock' overview
Documentation/git-worktree: add EXAMPLES section
checkout: fix bug with --to and relative HEAD
checkout: relocate --to's "no branch specified" check
checkout: prepare_linked_checkout: drop now-unused 'new' argument
checkout: make --to unconditionally verbose
checkout: drop 'checkout_opts' dependency from prepare_linked_checkout
worktree: introduce "add" command
worktree: add --force option
worktree: add --detach option
worktree: add -b/-B options
tests: worktree: retrofit "checkout --to" tests for "worktree add"
checkout: retire --to option
checkout: require worktree unconditionally
worktree: extract basename computation to new function
worktree: add: make -b/-B default to HEAD when <branch> is omitted
worktree: add: auto-vivify new branch when <branch> is omitted
checkout: retire --ignore-other-worktrees in favor of --force
Documentation/git-worktree: fix stale "git checkout --to" references
Documentation/git: fix stale "MULTIPLE CHECKOUT MODE" reference
Frans Klaver (1):
doc: format-patch: fix typo
Fredrik Gustafsson (1):
Documentation: clarify how "git commit" cleans up the edited log message
Fredrik Medley (3):
config.txt: clarify allowTipSHA1InWant with camelCase
upload-pack: prepare to extend allow-tip-sha1-in-want
upload-pack: optionally allow fetching reachable sha1
Jean-Noel Avila (3):
doc: fix unmatched code fences
l10n: fr.po v2.5.0-rc0 (2355t)
l10n: fr v2.5.0 round 2 (2359t)
Jeff King (83):
sha1_file: squelch "packfile cannot be accessed" warnings
init: don't set core.worktree when initializing /.git
strbuf_getwholeline: use getc macro
git-compat-util: add fallbacks for unlocked stdio
strbuf_getwholeline: use getc_unlocked
config: use getc_unlocked when reading from file
strbuf_addch: avoid calling strbuf_grow
strbuf_getwholeline: avoid calling strbuf_grow
strbuf_getwholeline: use getdelim if it is available
read_packed_refs: avoid double-checking sane refs
t1430: add another refs-escape test
type_from_string_gently: make sure length matches
limit_list: avoid quadratic behavior from still_interesting
reachable: only mark local objects as recent
sha1_file: freshen pack objects before loose
sha1_file: only freshen packs once per run
t3903: stop hard-coding commit sha1s
t3903: avoid applying onto dirty index
stash: require a clean index to apply
stop putting argv[0] dirname at front of PATH
rebase: silence "git checkout" for noop rebase
test-lib: turn on GIT_TEST_CHAIN_LINT by default
filter-branch: avoid passing commit message through sed
remote.c: drop default_remote_name variable
t/lib-httpd.sh: skip tests if NO_CURL is defined
add: check return value of launch_editor
doc: fix unmatched code fences in git-stripspace
doc: fix misrendering due to `single quote'
doc: fix unquoted use of "{type}"
doc: fix hanging "+"-continuation
doc: fix length of underlined section-title
doc/add: reformat `--edit` option
doc: convert \--option to --option
doc: drop backslash quoting of some curly braces
doc: put example URLs and emails inside literal backticks
doc: convert AsciiDoc {?foo} to ifdef::foo[]
rerere: exit silently on "forget" when rerere is disabled
http-backend: fix die recursion with custom handler
progress: treat "no terminal" as being in the foreground
t5551: factor out tag creation
stash: complain about unknown flags
stash: recognize "--help" for subcommands
remote.c: refactor setup of branch->merge list
remote.c: drop "remote" pointer from "struct branch"
remote.c: hoist branch.*.remote lookup out of remote_get_1
remote.c: provide per-branch pushremote name
remote.c: hoist read_config into remote_get_1
remote.c: introduce branch_get_upstream helper
remote.c: report specific errors from branch_get_upstream
test_bitmap_walk: free bitmap with bitmap_free
remote.c: untangle error logic in branch_get_upstream
remote.c: return upstream name from stat_tracking_info
remote.c: add branch_get_push
sha1_name: refactor upstream_mark
sha1_name: refactor interpret_upstream_mark
sha1_name: implement @{push} shorthand
for-each-ref: use skip_prefix instead of starts_with
for-each-ref: accept "%(push)" format
http-backend: spool ref negotiation requests to buffer
clone: use OPT_STRING_LIST for --reference
clone: reorder --dissociate and --reference options
t7063: hide stderr from setup inside prereq
diff: accept color.diff.context as a synonym for "plain"
diff.h: rename DIFF_PLAIN color slot to DIFF_CONTEXT
read-cache.c: drop PROT_WRITE from mmap of index
config.c: fix mmap leak when writing config
config.c: avoid xmmap error messages
config.c: rewrite ENODEV into EISDIR when mmap fails
Makefile: drop dependency between git-instaweb and gitweb
Makefile: avoid timestamp updates to GIT-BUILD-OPTIONS
Makefile: silence perl/PM.stamp recipe
setup_git_directory: delay core.bare/core.worktree errors
add quieter versions of parse_{tree,commit}
silence broken link warnings with revs->ignore_missing_links
suppress errors on missing UNINTERESTING links
ewah: use less generic macro name
index-pack: fix truncation of off_t in comparison
index-pack: avoid excessive re-reading of pack directory
Revert "stash: require a clean index to apply"
docs: clarify that --encoding can produce invalid sequences
for_each_packed_object: automatically open pack index
rev-list: disable --use-bitmap-index when pruning commits
check_and_freshen_file: fix reversed success-check
Jiang Xin (4):
l10n: git.pot: v2.5.0 round 1 (65 new, 15 removed)
l10n: zh_CN: for git v2.5.0 l10n round 1
l10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)
l10n: zh_CN: for git v2.5.0 l10n round 2
Jim Hill (1):
sha1_file: pass empty buffer to index empty file
Joe Cridge (1):
git-prompt.sh: document GIT_PS1_STATESEPARATOR
Johannes Schindelin (2):
t3404: demonstrate CHERRY_PICK_HEAD bug
rebase -i: do not leave a CHERRY_PICK_HEAD file behind
Johannes Sixt (5):
compat/mingw: stubs for getpgid() and tcgetpgrp()
lockfile: replace random() by rand()
help.c: wrap wait-only poll() invocation in sleep_millisec()
lockfile: convert retry timeout computations to millisecond
lockfile: wait using sleep_millisec() instead of select()
Jonathan Nieder (1):
config: use error() instead of fprintf(stderr, ...)
Junio C Hamano (77):
t2026: fix broken &&-chain
t0302: "unreadable" test needs POSIXPERM
diff-no-index: DWIM "diff D F" into "diff D/F F"
diff-no-index: align D/F handling with that of normal Git
parse_date_basic(): return early when given a bogus timestamp
parse_date_basic(): let the system handle DST conversion
add_excludes_from_file: clarify the bom skipping logic
utf8-bom: introduce skip_utf8_bom() helper
config: use utf8_bom[] from utf.[ch] in git_parse_source()
attr: skip UTF8 BOM at the beginning of the input file
fmt-merge-msg: plug small leak of commit buffer
ignore: info/exclude should trump core.excludesfile
test: validate prerequistes syntax
merge: test the top-level merge driver
merge: simplify code flow
t5520: style fixes
t5520: test pulling an octopus into an unborn branch
merge: clarify "pulling into void" special case
merge: do not check argc to determine number of remote heads
merge: small leakfix and code simplification
merge: clarify collect_parents() logic
merge: split reduce_parents() out of collect_parents()
merge: narrow scope of merge_names
merge: extract prepare_merge_message() logic out
merge: make collect_parents() auto-generate the merge message
merge: decide if we auto-generate the message early in collect_parents()
merge: handle FETCH_HEAD internally
merge: deprecate 'git merge <message> HEAD <commit>' syntax
write_sha1_file(): do not use a separate sha1[] array
daemon: unbreak NO_IPV6 build regression
First batch for 2.5 cycle
tests: skip dav http-push tests under NO_EXPAT=NoThanks
Second batch for 2.5 cycle
Git 2.3.8
log: decorate HEAD with branch name under --decorate=full, too
log: do not shorten decoration names too early
Git 2.4.1
Third batch for 2.5 cycle
copy.c: make copy_fd() report its status silently
filter_buffer_or_fd(): ignore EPIPE
t5407: use <<- to align the expected output
Fourth batch for 2.5 cycle
t4015: modernise style
t4015: separate common setup and per-test expectation
Fifth batch for 2.5 cycle
Git 2.4.2
diff.c: add emit_del_line() and emit_context_line()
diff.c: --ws-error-highlight=<kind> option
t9001: write $HOME/, not ~/, to help shells without tilde expansion
xmmap(): drop "Out of memory?"
apply: reject a hunk that does not do anything
Sixth batch for 2.5 cycle
format-patch: do not feed tags to clear_commit_marks()
ll-merge: pass the original path to external drivers
The first half of the seventh batch for 2.5
Git 2.4.3
Second half of seventh batch
Git 2.4.4
Eighth batch for 2.5
Revert "diff-lib.c: adjust position of i-t-a entries in diff"
Ninth batch for 2.5
Git 2.4.5
Git 2.5.0-rc0
fsck: it is OK for a tag and a commit to lack the body
Git 2.5.0-rc1
pager: do not leak "GIT_PAGER_IN_USE" to the pager
index-pack: fix allocation of sorted_by_pos array
The last minute bits of fixes
Revert "checkout: retire --ignore-other-worktrees in favor of --force"
Git 2.5.0-rc2
Git 2.4.6
worktree: caution that this is still experimental
Git 2.5.0-rc3
Revert "git-am: add am.threeWay config variable"
RelNotes: am.threeWay does not exist (yet)
Git 2.4.7
Git 2.5
Karsten Blees (2):
config.c: fix writing config files on Windows network shares
Makefile / racy-git.txt: clarify USE_NSEC prerequisites
Karthik Nayak (4):
sha1_file: support reading from a loose object of unknown type
cat-file: make the options mutually exclusive
cat-file: teach cat-file a '--allow-unknown-type' option
t1006: add tests for git cat-file --allow-unknown-type
Lars Kellogg-Stedman (1):
http: add support for specifying an SSL cipher list
Lawrence Siebert (1):
rev-list: add --count to usage guide
Lex Spoon (1):
git-p4: use -m when running p4 changes
Luke Diamand (11):
git-p4: fix small bug in locked test scripts
git-p4: small fix for locked-file-move-test
git-p4: t9814: prevent --chain-lint failure
git-p4: add failing tests for case-folding p4d
git-p4: add failing test for P4EDITOR handling
git-p4: fix handling of multi-word P4EDITOR
git-p4: tests: use test-chmtime in place of touch
git-p4: additional testing of --changes-block-size
git-p4: test with limited p4 server results
git-p4: add tests for non-numeric revision range
git-p4: fixing --changes-block-size handling
Luke Mewburn (1):
progress: no progress in background
Matthieu Moy (16):
t3701-add-interactive: simplify code
add -p: demonstrate failure when running 'edit' after a split
t3904-stash-patch: fix test description
t3904-stash-patch: factor PERL prereq at the top of the file
stash -p: demonstrate failure of split with mixed y/n
Documentation: change -L:<regex> to -L:<funcname>
log -L: improve error message on malformed argument
Documentation/log: clarify what --raw means
Documentation/log: clarify sha1 non-abbreviation in log --raw
rebase -i: demonstrate incorrect behavior of post-rewrite
rebase -i: fix post-rewrite hook with failed exec command
Documentation/describe: improve one-line summary
git-multimail: update to release 1.1.0
git-multimail: update to release 1.1.1
Documentation/branch: document -d --force and -m --force
Documentation/branch: document -M and -D in terms of --force
Max Kirillov (3):
checkout: do not fail if target is an empty directory
git-common-dir: make "modules/" per-working-directory directory
prune --worktrees: fix expire vs worktree existence condition
Michael Coleman (1):
Documentation/git-commit: grammofix
Michael Haggerty (99):
t1404: new tests of ref D/F conflicts within transactions
is_refname_available(): revamp the comments
is_refname_available(): avoid shadowing "dir" variable
is_refname_available(): convert local variable "dirname" to strbuf
entry_matches(): inline function
report_refname_conflict(): inline function
struct nonmatching_ref_data: store a refname instead of a ref_entry
is_refname_available(): use dirname in first loop
ref_transaction_commit(): use a string_list for detecting duplicates
refs: check for D/F conflicts among refs created in a transaction
verify_refname_available(): rename function
verify_refname_available(): report errors via a "struct strbuf *err"
lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
lock_ref_sha1_basic(): improve diagnostics for ref D/F conflicts
rename_ref(): integrate lock_ref_sha1_basic() errors into ours
ref_transaction_commit(): provide better error messages
ref_transaction_commit(): delete extra "the" from error message
reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
commit_ref_update(): new function, extracted from write_ref_sha1()
rename_ref(): inline calls to write_ref_sha1() from this function
ref_transaction_commit(): inline call to write_ref_sha1()
ref_transaction_commit(): remove the local flags variable
ref_transaction_commit(): fix atomicity and avoid fd exhaustion
write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
commit_ref_update(): new function, extracted from write_ref_sha1()
rename_ref(): inline calls to write_ref_sha1() from this function
ref_transaction_commit(): inline call to write_ref_sha1()
ref_transaction_commit(): remove the local flags variable
ref_transaction_commit(): fix atomicity and avoid fd exhaustion
lockfile: allow file locking to be retried with a timeout
lock_packed_refs(): allow retries when acquiring the packed-refs lock
each_ref_fn: change to take an object_id parameter
builtin/rev-parse: rewrite to take an object_id argument
handle_one_ref(): rewrite to take an object_id argument
register_ref(): rewrite to take an object_id argument
append_ref(): rewrite to take an object_id argument
add_pending_uninteresting_ref(): rewrite to take an object_id argument
get_name(): rewrite to take an object_id argument
builtin/fetch: rewrite to take an object_id argument
grab_single_ref(): rewrite to take an object_id argument
name_ref(): rewrite to take an object_id argument
builtin/pack-objects: rewrite to take an object_id argument
show_ref_cb(): rewrite to take an object_id argument
builtin/reflog: rewrite ref functions to take an object_id argument
add_branch_for_removal(): rewrite to take an object_id argument
add_branch_for_removal(): don't set "util" field of string_list entries
builtin/remote: rewrite functions to take object_id arguments
show_reference(): rewrite to take an object_id argument
append_matching_ref(): rewrite to take an object_id argument
builtin/show-branch: rewrite functions to take object_id arguments
append_one_rev(): rewrite to work with object_id
builtin/show-branch: rewrite functions to work with object_id
cmd_show_branch(): fix error message
fsck: change functions to use object_id
builtin/show-ref: rewrite to use object_id
show_ref(): convert local variable peeled to object_id
builtin/show-ref: rewrite to take an object_id argument
append_similar_ref(): rewrite to take an object_id argument
http-backend: rewrite to take an object_id argument
show_head_ref(): convert local variable "unused" to object_id
add_ref_decoration(): rewrite to take an object_id argument
add_ref_decoration(): convert local variable original_sha1 to object_id
string_list_add_one_ref(): rewrite to take an object_id argument
add_one_ref(): rewrite to take an object_id argument
remote: rewrite functions to take object_id arguments
register_replace_ref(): rewrite to take an object_id argument
handle_one_reflog(): rewrite to take an object_id argument
add_info_ref(): rewrite to take an object_id argument
handle_one_ref(): rewrite to take an object_id argument
shallow: rewrite functions to take object_id arguments
submodule: rewrite to take an object_id argument
write_refs_to_temp_dir(): convert local variable sha1 to object_id
write_one_ref(): rewrite to take an object_id argument
find_symref(): rewrite to take an object_id argument
find_symref(): convert local variable "unused" to object_id
upload-pack: rewrite functions to take object_id arguments
send_ref(): convert local variable "peeled" to object_id
mark_complete(): rewrite to take an object_id argument
clear_marks(): rewrite to take an object_id argument
mark_complete_oid(): new function, taking an object_oid
mark_complete(): remove unneeded arguments
rev_list_insert_ref_oid(): new function, taking an object_oid
rev_list_insert_ref(): remove unneeded arguments
each_ref_fn_adapter(): remove adapter
warn_if_dangling_symref(): convert local variable "junk" to object_id
struct ref_lock: convert old_sha1 member to object_id
verify_lock(): return 0/-1 rather than struct ref_lock *
verify_lock(): on errors, let the caller unlock the lock
verify_lock(): report errors via a strbuf
verify_lock(): do not capitalize error messages
ref_transaction_commit(): do not capitalize error messages
t6301: new tests of for-each-ref error handling
for-each-ref: report broken references correctly
read_loose_refs(): simplify function logic
read_loose_refs(): treat NULL_SHA1 loose references as broken
fsck_handle_reflog_sha1(): new function
fsck: report errors if reflog entries point at invalid objects
strbuf: strbuf_read_file() should return ssize_t
Michael J Gruber (4):
l10n: de.po: grammar fix
l10n: de.po: punctuation fixes
l10n: de.po: translation fix for fall-back to 3way merge
mergetool-lib: fix default tool selection
Miguel Torroja (1):
p4: retrieve the right revision of the file in UTF-16 codepath
Mike Edgar (1):
fetch-pack: check for shallow if depth given
Mike Hommey (2):
show-branch: show all local heads when only giving one rev along --topics
clone: call transport_set_verbosity before anything else on the newly created transport
Nguyễn Thái Ngọc Duy (67):
path.c: make get_pathname() return strbuf instead of static buffer
path.c: make get_pathname() call sites return const char *
git_snpath(): retire and replace with strbuf_git_path()
path.c: rename vsnpath() to do_git_path()
path.c: group git_path(), git_pathdup() and strbuf_git_path() together
git_path(): be aware of file relocation in $GIT_DIR
*.sh: respect $GIT_INDEX_FILE
reflog: avoid constructing .lock path with git_path
fast-import: use git_path() for accessing .git dir instead of get_git_dir()
commit: use SEQ_DIR instead of hardcoding "sequencer"
$GIT_COMMON_DIR: a new environment variable
git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
*.sh: avoid hardcoding $GIT_DIR/hooks/...
git-stash: avoid hardcoding $GIT_DIR/logs/....
setup.c: convert is_git_directory() to use strbuf
setup.c: detect $GIT_COMMON_DIR in is_git_directory()
setup.c: convert check_repository_format_gently to use strbuf
setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
setup.c: support multi-checkout repo setup
wrapper.c: wrapper to open a file, fprintf then close
use new wrapper write_file() for simple file writing
checkout: support checking out into a new working directory
prune: strategies for linked checkouts
checkout: reject if the branch is already checked out elsewhere
checkout: clean up half-prepared directories in --to mode
gc: style change -- no SP before closing parenthesis
gc: factor out gc.pruneexpire parsing code
gc: support prune --worktrees
count-objects: report unused files in $GIT_DIR/worktrees/...
git_path(): keep "info/sparse-checkout" per work-tree
t2025: add a test to make sure grafts is working from a linked checkout
checkout: pass whole struct to parse_branchname_arg instead of individual flags
checkout: add --ignore-other-wortrees
git-checkout.txt: a note about multiple checkout support for submodules
index-pack: reduce object_entry size to save memory
dir.c: optionally compute sha-1 of a .gitignore file
untracked cache: record .gitignore information and dir hierarchy
untracked cache: initial untracked cache validation
untracked cache: invalidate dirs recursively if .gitignore changes
untracked cache: make a wrapper around {open,read,close}dir()
untracked cache: record/validate dir mtime and reuse cached output
untracked cache: mark what dirs should be recursed/saved
untracked cache: don't open non-existent .gitignore
ewah: add convenient wrapper ewah_serialize_strbuf()
untracked cache: save to an index extension
untracked cache: load from UNTR index extension
untracked cache: invalidate at index addition or removal
read-cache.c: split racy stat test to a separate function
untracked cache: avoid racy timestamps
untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
untracked cache: mark index dirty if untracked cache is updated
untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
status: enable untracked cache
update-index: manually enable or disable untracked cache
update-index: test the system before enabling untracked cache
t7063: tests for untracked cache
mingw32: add uname()
untracked cache: guard and disable on system changes
git-status.txt: advertisement for untracked cache
diff-lib.c: adjust position of i-t-a entries in diff
index-pack: kill union delta_base to save memory
t1509: update prepare script to be able to run t1509 in chroot again
pathspec: avoid the need of "--" when wildcard is used
read-cache: fix untracked cache invalidation when split-index is used
checkout: don't check worktrees when not necessary
worktree: new place for "git prune --worktrees"
Add tests for wildcard "path vs ref" disambiguation
Ossi Herrala (1):
config: fix settings in default_user_config template
Panagiotis Astithas (1):
hooks/pre-auto-gc: adjust power checking for newer OS X
Patrick Steinhardt (5):
bundle: verify arguments more strictly
git-verify-pack.txt: fix inconsistent spelling of "packfile"
git-unpack-objects.txt: fix inconsistent spelling of "packfile"
pack-protocol.txt: fix insconsistent spelling of "packfile"
doc: fix inconsistent spelling of "packfile"
Paul Tan (31):
git-credential-store: support multiple credential files
git-credential-store: support XDG_CONFIG_HOME
t0302: test credential-store support for XDG_CONFIG_HOME
path.c: implement xdg_config_home()
attr.c: replace home_config_paths() with xdg_config_home()
dir.c: replace home_config_paths() with xdg_config_home()
credential-store.c: replace home_config_paths() with xdg_config_home()
git-commit: replace use of home_config_paths()
git-config: replace use of home_config_paths()
path.c: remove home_config_paths()
pull: remove --tags error in no merge candidates case
t5520: prevent field splitting in content comparisons
t5520: test no merge candidates cases
pull: handle --log=<n>
pull: make pull.ff=true override merge.ff
pull: parse pull.ff as a bool or string
t5520: test for failure if index has unresolved entries
t5520: test work tree fast-forward when fetch updates head
t5520: test --rebase with multiple branches
t5520: test --rebase failure on unborn branch with index
t5521: test --dry-run does not make any changes
t5520: check reflog action in fast-forward merge
pull: handle git-fetch's options as well
pull: use git-rev-parse --parseopt for option parsing
am --skip: revert changes introduced by failed 3way merge
am -3: support 3way merge on unborn branch
am --skip: support skipping while on unborn branch
am --abort: revert changes introduced by failed 3way merge
am --abort: support aborting to unborn branch
am --abort: keep unrelated commits on unborn branch
t0302: "unreadable" test needs SANITY prereq
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (2355t0f0u)
l10n: sv.po: Update Swedish translation (2359t0f0u)
Phil Hord (1):
rebase -i: redo tasks that die during cherry-pick
Phillip Sz (1):
l10n: de.po: change error message from "sagen" to "Meinten Sie"
Quentin Neill (1):
blame: add blame.showEmail configuration
Ralf Thielow (4):
l10n: de.po: fix translation of "head nodes"
l10n: de.po: translate "index" as "Index"
l10n: de.po: translate 65 new messages
l10n: de.po: translate 9 new messages
Ramsay Allan Jones (1):
t7502-commit.sh: fix a broken and-chain
Remi Lespinet (3):
git-am.sh: fix initialization of the threeway variable
t4150-am: refactor am -3 tests
git-am: add am.threeWay config variable
René Scharfe (5):
pack-bitmaps: plug memory leak, fix allocation size for recent_bitmaps
use file_exists() to check if a file exists in the worktree
clean: remove unused variable buf
dir: remove unused variable sb
diff: parse ws-error-highlight option more strictly
Richard Hansen (2):
Revert "test-lib.sh: do tests for color support after changing HOME"
test-lib.sh: fix color support when tput needs ~/.terminfo
SZEDER Gábor (8):
completion: remove redundant __git_compute_all_commands() call
completion: fix and update 'git log --decorate=' options
completion: remove credential helpers from porcelain commands
completion: add a helper function to get config variables
completion: simplify query for config variables
Documentation: include 'merge.branchdesc' for merge and config as well
completion: teach 'scissors' mode to 'git commit --cleanup='
commit: cope with scissors lines in commit message
Sebastian Schuberth (1):
clone: simplify string handling in guess_dir_name()
Stefan Beller (14):
line-log.c: fix a memleak
pack-bitmap.c: fix a memleak
prefix_path(): unconditionally free results in the callers
update-ref: test handling large transactions properly
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
t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
subdirectory tests: code cleanup, uncomment test
submodule doc: reorder introductory paragraphs
glossary: add "remote", "submodule", "superproject"
Documentation/technical/pack-protocol: mention http as possible protocol
p5310: Fix broken && chain in performance test
revision.c: remove unneeded check for NULL
Sébastien Guimmara (4):
command-list.txt: fix whitespace inconsistency
command-list.txt: add the common groups block
command-list.txt: drop the "common" tag
help: respect new common command grouping
Thomas Braun (1):
completion: suggest sequencer commands for revert
Thomas Gummerer (1):
t1501: fix test with split index
Thomas Schneider (1):
checkout: call a single commit "it" intead of "them"
Tony Finch (1):
gitweb: fix typo in man page
Torsten Bögershausen (6):
t2026 needs procondition SANITY
t0027: cleanup: rename functions; avoid non-leading TABs
t0027: support NATIVE_CRLF platforms
t0027: Add repoMIX and LF_nul
blame: CRLF in the working tree and LF in the repo
git-checkout.txt: document "git checkout <pathspec>" better
Trần Ngọc Quân (2):
l10n: Updated Vietnamese translation (2355t)
l10n: Updated Vietnamese translation (2359t)
Vitor Antunes (2):
t9801: check git-p4's branch detection with client spec enabled
git-p4: improve client path detection when branches are used
brian m. carlson (14):
define a structure for object IDs
define utility functions for object IDs
bisect.c: convert leaf functions to use struct object_id
archive.c: convert to use struct object_id
zip: use GIT_SHA1_HEXSZ for trailers
bulk-checkin.c: convert to use struct object_id
diff: convert struct combine_diff_path to object_id
commit: convert parts to struct object_id
patch-id: convert to use struct object_id
apply: convert threeway_stage to object_id
connect: simplify SSH connection code path
t5601: fix quotation error leading to skipped tests
connect: improve check for plink to reduce false positives
refs: convert struct ref_entry to use struct object_id
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.1.0-rc0
@ 2014-07-27 23:18 2% Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2014-07-27 23:18 UTC (permalink / raw)
To: git; +Cc: Linux Kernel
An early preview release Git v2.1.0-rc0 is now available for testing
at the usual places.
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.1.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://code.google.com/p/git-core/
url = git://git.sourceforge.jp/gitroot/git-core/git.git
url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
url = https://github.com/gitster/git
Git v2.1 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* The default value we give to the environment variable LESS has been
changed from "FRSX" to "FRX", losing "S" (chop long lines instead
of wrapping). Existing users who prefer not to see line-wrapped
output may want to set
$ git config core.pager "less -S"
to restore the traditional behaviour. It is expected that people
find output from the most subcommands easier to read with the new
default, except for "blame" which tends to produce really long
lines. To override the new default only for "git blame", you can
do this:
$ git config pager.blame "less -S"
* A few disused directories in contrib/ have been retired.
Updates since v2.0
------------------
UI, Workflows & Features
* Since the very beginning of Git, we gave the LESS environment a
default value "FRSX" when we spawn "less" as the pager. "S" (chop
long lines instead of wrapping) has been removed from this default
set of options, because it is more or less a personal taste thing,
as opposed to others that have good justifications (i.e. "R" is
very much justified because many kinds of output we produce are
colored and "FX" is justified because output we produce is often
shorter than a page).
* The logic and data used to compute the display width needed for
UTF-8 strings have been updated to match Unicode 7.0 better.
* HTTP-based transports learned to propagate the error messages from
the webserver better to the client coming over the HTTP transport.
* The completion script for bash (in contrib/) has been updated to
handle aliases that define complex sequence of commands better.
* The "core.preloadindex" configuration variable is by default
enabled, allowing modern platforms to take advantage of the
multiple cores they have.
* "git clone" applies the "if cloning from a local disk, physically
copy repository using hardlinks, unless otherwise told not to with
--no-local" optimization when url.*.insteadOf mechanism rewrites a
"git clone $URL" that refers to a repository over the network to a
clone from a local disk.
* "git commit --date=<date>" option learned to read from more
timestamp formats, including "--date=now".
* The `core.commentChar` configuration variable is used to specify a
custom comment character other than the default "#" to be used in
the commit log editor. This can be set to `auto` to attempt to
choose a different character that does not conflict with what
already starts a line in the message being edited for cases like
"git commit --amend".
* "git format-patch" learned --signature-file=<file> to take the mail
signature from.
* "git grep" learned grep.fullname configuration variable to force
"--full-name" to be default. This may cause regressions on
scripted users that do not expect this new behaviour.
* "git imap-send" learned to ask the credential helper for auth
material.
* "git log" and friends now understand the value "auto" set to the
"log.decorate" configuration variable to enable the "--decorate"
option automatically when the output is sent to tty.
* "git merge" without argument, even when there is an upstream
defined for the current branch, refused to run until
merge.defaultToUpstream is set to true. Flip the default of that
configuration variable to true.
* "git mergetool" learned to drive the vimdiff3 backend.
* mergetool.prompt used to default to 'true', always asking "do you
really want to run the tool on this path?". Among the two
purposes this prompt serves, ignore the use case to confirm that
the user wants to view particular path with the named tool, and
redefine the meaning of the prompt only to confirm the choice of
the tool made by the autodetection (for those who configured the
tool explicitly, the prompt shown for the latter purpose is
simply annoying).
Strictly speaking, this is a backward incompatible change and the
users need to explicitly set the variable to 'true' if they want
to resurrect the now-ignored use case.
* "git replace" learned the "--edit" subcommand to create a
replacement by editing an existing object.
* "git replace" learned a "--graft" option to rewrite parents of a
commit.
* "git send-email" learned "--to-cover" and "--cc-cover" options, to
tell it to copy To: and Cc: headers found in the first input file
when emitting later input files.
* "git svn" learned to cope with malformed timestamps with only one
digit in the hour part, e.g. 2014-01-07T5:01:02.048176Z, emitted
by some broken subversion server implementations.
* "git tag" when editing the tag message shows the name of the tag
being edited as a comment in the editor.
* "git tag" learned to pay attention to "tag.sort" configuration, to
be used as the default sort order when no --sort=<value> the option
is given.
* "git verify-commit" command to check GPG signature in signed
commits, in a way similar to "git verify-tag" is used to check
signed tags, was added.
Performance, Internal Implementation, etc.
* Build procedure for 'subtree' (in contrib/) has been cleaned up.
* The support for the profile-feedback build, which has been left
bit-rotten for quite a while, has been updated.
* An experimental format to use two files (the base file and
incremental changes relative to it) to represent the index has been
introduced; this may reduce I/O cost of rewriting a large index
when only small part of the working tree changes.
* Effort to shrink the size of patches Windows folks maintain on top
by upstreaming them continues.
* Patches maintained by msysgit folks for Windows port are being
upstreamed here a bit by bit.
* The leaf function to check validity of a refname format has been
micro-optimized, using SSE2 instructions when available. A few
breakages during its development have been caught and fixed already
but there might remain some more still; please test and report if
you find any.
* The `core.deltabasecachelimit` used to default to 16 MiB , but this
proved to be too small, and has been bumped to 96 MiB.
* "git blame" has been optimized greatly by reorganising the data
structure that is used to keep track of the work to be done.
* "git diff" that compares 3-or-more trees (e.g. parents and the
result of a merge) have been optimized.
* The API to update/delete references are being converted to handle
updates to multiple references in a transactional way. As an
example, "update-ref --stdin [-z]" has been updated to use this
API.
* skip_prefix() and strip_suffix() API functions are used a lot more
widely throughout the codebase now.
* Parts of the test scripts can be skipped by using a range notation,
e.g. "sh t1234-test.sh --run='1-4 6 8-'" to omit test piece 5 and 7
and run everything else.
Also contains various documentation updates and code clean-ups.
Fixes since v2.0
----------------
Unless otherwise noted, all the fixes since v2.0 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
* We used to unconditionally disable the pager in the pager process
we spawn to feed out output, but that prevented people who want to
run "less" within "less" from doing so.
(merge c0459ca je/pager-do-not-recurse later to maint).
* Tools that read diagnostic output in our standard error stream do
not want to see terminal control sequence (e.g. erase-to-eol).
Detect them by checking if the standard error stream is connected
to a tty.
(merge 38de156 mn/sideband-no-ansi later to maint).
* Mishandling of patterns in .gitignore that has trailing SPs quoted
with backslashes (e.g. ones that end with "\ ") have been
corrected.
(merge 97c1364be6b pb/trim-trailing-spaces later to maint).
* Reworded the error message given upon a failure to open an existing
loose object file due to e.g. permission issues; it was reported as
the object being corrupt, but that is not quite true.
(merge d6c8a05 jk/report-fail-to-read-objects-better later to maint).
* "git log -2master" is a common typo that shows two commits starting
from whichever random branch that is not 'master' that happens to
be checked out currently.
(merge e3fa568 jc/revision-dash-count-parsing later to maint).
* Code to avoid adding the same alternate object store twice was
subtly broken for a long time, but nobody seems to have noticed.
(merge 80b4785 rs/fix-alt-odb-path-comparison later to maint).
(merge 539e750 ek/alt-odb-entry-fix later to maint).
* The "%<(10,trunc)%s" pretty format specifier in the log family of
commands is used to truncate the string to a given length (e.g. 10
in the example) with padding to column-align the output, but did
not take into account that number of bytes and number of display
columns are different.
(merge 7d50987 as/pretty-truncate later to maint).
* "%G" (nothing after G) is an invalid pretty format specifier, but
the parser did not notice it as garbage.
(merge 958b2eb jk/pretty-G-format-fixes later to maint).
* A handful of code paths had to read the commit object more than
once when showing header fields that are usually not parsed. The
internal data structure to keep track of the contents of the commit
object has been updated to reduce the need for this double-reading,
and to allow the caller find the length of the object.
(merge 218aa3a jk/commit-buffer-length later to maint).
* The "mailmap.file" configuration option did not support the tilde
expansion (i.e. ~user/path and ~/path).
(merge 9352fd5 ow/config-mailmap-pathname later to maint).
* The completion scripts (in contrib/) did not know about quite a few
options that are common between "git merge" and "git pull", and a
couple of options unique to "git merge".
(merge 8fee872 jk/complete-merge-pull later to maint).
* The unix-domain socket used by the sample credential cache daemon
tried to unlink an existing stale one at a wrong path, if the path
to the socket was given as an overlong path that does not fit in
sun_path member of the sockaddr_un structure.
(merge 2869b3e rs/fix-unlink-unix-socket later to maint).
* An ancient rewrite passed a wrong pointer to a curl library
function in a rarely used code path.
(merge 479eaa8 ah/fix-http-push later to maint).
* "--ignore-space-change" option of "git apply" ignored the spaces
at the beginning of line too aggressively, which is inconsistent
with the option of the same name "diff" and "git diff" have.
(merge 14d3bb4 jc/apply-ignore-whitespace later to maint).
* "git blame" miscounted number of columns needed to show localized
timestamps, resulting in jaggy left-side-edge of the source code
lines in its output.
(merge dd75553 jx/blame-align-relative-time later to maint).
* "git blame" assigned the blame to the copy in the working-tree if
the repository is set to core.autocrlf=input and the file used CRLF
line endings.
(merge 4d4813a bc/blame-crlf-test later to maint).
* "git clone -b brefs/tags/bar" would have mistakenly thought we were
following a single tag, even though it was a name of the branch,
because it incorrectly used strstr().
(merge 60a5f5f jc/fix-clone-single-starting-at-a-tag later to maint).
* "git commit --allow-empty-messag -C $commit" did not work when the
commit did not have any log message.
(merge 076cbd6 jk/commit-C-pick-empty later to maint).
* "git diff --find-copies-harder" sometimes pretended as if the mode
bits have changed for paths that are marked with assume-unchanged
bit.
(merge 5304810 jk/diff-files-assume-unchanged later to maint).
* "filter-branch" left an empty single-parent commit that results when
all parents of a merge commit gets mapped to the same commit, even
under "--prune-empty".
(merge 79bc4ef cb/filter-branch-prune-empty-degenerate-merges later to maint).
* "git format-patch" did not enforce the rule that the "--follow"
option from the log/diff family of commands must be used with
exactly one pathspec.
(merge dd63f16 jk/diff-follow-must-take-one-pathspec later to maint).
* "git gc --auto" was recently changed to run in the background to
give control back early to the end-user sitting in front of the
terminal, but it forgot that housekeeping involving reflogs should
be done without other processes competing for accesses to the refs.
(merge 62aad18 nd/daemonize-gc later to maint).
* "git grep -O" to show the lines that hit in the pager did not work
well with case insensitive search. We now spawn "less" with its
"-I" option when it is used as the pager (which is the default).
(merge f7febbe sk/spawn-less-case-insensitively-from-grep-O-i later to maint).
* We used to disable threaded "git index-pack" on platforms without
thread-safe pread(); use a different workaround for such
platforms to allow threaded "git index-pack".
(merge 3953949 nd/index-pack-one-fd-per-thread later to maint).
* The error reporting from "git index-pack" has been improved to
distinguish missing objects from type errors.
(merge 77583e7 jk/index-pack-report-missing later to maint).
* "log --show-signature" incorrectly decided the color to paint a
mergetag that was and was not correctly validated.
(merge 42c55ce mg/fix-log-mergetag-color later to maint).
* "log --show-signature" did not pay attention to "--graph" option.
(merge cf3983d zk/log-graph-showsig later to maint).
* "git mailinfo" used to read beyond the end of header string while
parsing an incoming e-mail message to extract the patch.
(merge b1a013d rs/mailinfo-header-cmp later to maint).
* On a case insensitive filesystem, merge-recursive incorrectly
deleted the file that is to be renamed to a name that is the same
except for case differences.
(merge baa37bf dt/merge-recursive-case-insensitive later to maint).
* Merging changes into a file that ends in an incomplete line made the
last line into a complete one, even when the other branch did not
change anything around the end of file.
(merge ba31180 mk/merge-incomplete-files later to maint).
* "git pack-objects" unnecessarily copied the previous contents when
extending the hashtable, even though it will populate the table
from scratch anyway.
(merge fb79947 rs/pack-objects-no-unnecessary-realloc later to maint).
* Recent updates to "git repack" started to duplicate objects that
are in packfiles marked with .keep flag into the new packfile by
mistake.
(merge d078d85 jk/repack-pack-keep-objects later to maint).
* "git rerere forget" did not work well when merge.conflictstyle
was set to a non-default value.
(merge de3d8bb fc/rerere-conflict-style later to maint).
* "git remote rm" and "git remote prune" can involve removing many
refs at once, which is not a very efficient thing to do when very
many refs exist in the packed-refs file.
(merge e6bea66 jl/remote-rm-prune later to maint).
* "git log --exclude=<glob> --all | git shortlog" worked as expected,
but "git shortlog --exclude=<glob> --all", which is supposed to be
identical to the above pipeline, was not accepted at the command
line argument parser level.
(merge eb07774 jc/shortlog-ref-exclude later to maint).
* The autostash mode of "git rebase -i" did not restore the dirty
working tree state if the user aborted the interactive rebase by
emptying the insn sheet.
(merge ddb5432 rr/rebase-autostash-fix later to maint).
* "git rebase --fork-point" did not filter out patch-identical
commits correctly.
* During "git rebase --merge", a conflicted patch could not be
skipped with "--skip" if the next one also conflicted.
(merge 95104c7 bc/fix-rebase-merge-skip later to maint).
* "git show -s" (i.e. show log message only) used to incorrectly emit
an extra blank line after a merge commit.
(merge ad2f725 mk/show-s-no-extra-blank-line-for-merges later to maint).
* "git status", even though it is a read-only operation, tries to
update the index with refreshed lstat(2) info to optimize future
accesses to the working tree opportunistically, but this could
race with a "read-write" operation that modify the index while it
is running. Detect such a race and avoid overwriting the index.
(merge 426ddee ym/fix-opportunistic-index-update-race later to maint).
* "git status" (and "git commit") behaved as if changes in a modified
submodule are not there if submodule.*.ignore configuration is set,
which was misleading. The configuration is only to unclutter diff
output during the course of development, and should not to hide
changes in the "status" output to cause the users forget to commit
them.
(merge c215d3d jl/status-added-submodule-is-never-ignored later to maint).
* Documentation for "git submodule sync" forgot to say that the subcommand
can take the "--recursive" option.
(merge 9393ae7 mc/doc-submodule-sync-recurse later to maint).
* "git update-index --cacheinfo" in 2.0 release crashed on a
malformed command line.
(merge c8e1ee4 jc/rev-parse-argh-dashed-multi-words later to maint).
* The mode to run tests with HTTP server tests disabled was broken.
(merge afa53fe na/no-http-test-in-the-middle later to maint).
----------------------------------------------------------------
Changes since v2.0.0, 643 non-merge changes from 80 contributors,
are as follows:
Abbaad Haider (1):
http-push.c: make CURLOPT_IOCTLDATA a usable pointer
Alexey Shumkin (5):
t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs
t4041, t4205, t6006, t7102: don't hardcode tested encoding value
t4205 (log-pretty-format): use `tformat` rather than `format`
t4205, t6006: add tests that fail with i18n.logOutputEncoding set
pretty.c: format string with truncate respects logOutputEncoding
Anders Kaseorg (1):
gitk: Allow displaying time zones from author and commit dates timestamps
Andi Kleen (4):
Use BASIC_FLAGS for profile feedback
Don't define away __attribute__ on gcc
Run the perf test suite for profile feedback too
Fix profile feedback with -jN and add profile-fast
Andreas Schwab (1):
grep: add grep.fullName config variable
Ben Walton (1):
compat/bswap.h: fix endianness detection
Brian Gesiak (14):
strbuf: use _rtrim and _ltrim in strbuf_trim
api-strbuf.txt: add docs for _trim and _ltrim
builtin/ls-remote.c: rearrange xcalloc arguments
builtin/remote.c: rearrange xcalloc arguments
commit.c: rearrange xcalloc arguments
config.c: rearrange xcalloc arguments
diff.c: rearrange xcalloc arguments
http-push.c: rearrange xcalloc arguments
imap-send.c: rearrange xcalloc arguments
notes.c: rearrange xcalloc arguments
pack-revindex.c: rearrange xcalloc arguments
reflog-walk.c: rearrange xcalloc arguments
remote.c: rearrange xcalloc arguments
transport-helper.c: rearrange xcalloc arguments
Cezary Zawadka (1):
Windows: allow using UNC path for git repository
Charles Bailey (3):
compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER
filter-branch: eliminate duplicate mapped parents
Fix contrib/subtree Makefile to patch #! line
Christian Couder (16):
replace: make sure --edit results in a different object
replace: refactor checking ref validity
replace: die early if replace ref already exists
replace: add tests for --edit
replace: add --edit to usage string
Documentation: replace: describe new --edit option
commit: add for_each_mergetag()
replace: cleanup redirection style in tests
replace: add --graft option
replace: add test for --graft
Documentation: replace: add --graft option
contrib: add convert-grafts-to-replace-refs.sh
replace: remove signature when using --graft
replace: add test for --graft with signed commit
replace: check mergetags when using --graft
replace: add test for --graft with a mergetag
Dan Albert (1):
imap-send: use git-credential
David Aguilar (3):
gitk: Honor TMPDIR when viewing external diffs
gitk: Use mktemp -d to avoid predictable temporary directories
gitk: Catch mkdtemp errors
David Kastrup (2):
blame: large-scale performance rewrite
Bump core.deltaBaseCacheLimit to 96m
David Turner (7):
docs: document RUN_SETUP_GENTLY and clarify RUN_SETUP
merge-recursive.c: fix case-changing merge bug
mv: allow renaming to fix case on case insensitive filesystems
refs.c: optimize check_refname_component()
refs.c: SSE2 optimizations for check_refname_component
refs.c: handle REFNAME_REFSPEC_PATTERN at end of page
refs: fix valgrind suppression file
Elia Pinto (62):
t9365-continuing-queries.sh: use the $( ... ) construct for command substitution
test-gitmw-lib.sh: use the $( ... ) construct for command substitution
t7900-subtree.sh: use the $( ... ) construct for command substitution
appp.sh: use the $( ... ) construct for command substitution
git-pull.sh: use the $( ... ) construct for command substitution
git-rebase--merge.sh: use the $( ... ) construct for command substitution
git-rebase.sh: use the $( ... ) construct for command substitution
git-stash.sh: use the $( ... ) construct for command substitution
git-web--browse.sh: use the $( ... ) construct for command substitution
lib-credential.sh: use the $( ... ) construct for command substitution
lib-cvs.sh: use the $( ... ) construct for command substitution
lib-gpg.sh: use the $( ... ) construct for command substitution
p5302-pack-index.sh: use the $( ... ) construct for command substitution
t0001-init.sh: use the $( ... ) construct for command substitution
t0010-racy-git.sh: use the $( ... ) construct for command substitution
t0020-crlf.sh: use the $( ... ) construct for command substitution
t0025-crlf-auto.sh: use the $( ... ) construct for command substitution
t0026-eol-config.sh: use the $( ... ) construct for command substitution
t0030-stripspace.sh: use the $( ... ) construct for command substitution
t0300-credentials.sh: use the $( ... ) construct for command substitution
t1000-read-tree-m-3way.sh: use the $( ... ) construct for command substitution
t1001-read-tree-m-2way.sh: use the $( ... ) construct for command substitution
t1002-read-tree-m-u-2way.sh: use the $( ... ) construct for command substitution
t1003-read-tree-prefix.sh: use the $( ... ) construct for command substitution
t1004-read-tree-m-u-wf.sh: use the $( ... ) construct for command substitution
t1020-subdirectory.sh: use the $( ... ) construct for command substitution
t1050-large.sh: use the $( ... ) construct for command substitution
t3905-stash-include-untracked.sh: use the $( ... ) construct for command substitution
t3910-mac-os-precompose.sh: use the $( ... ) construct for command substitution
t4006-diff-mode.sh: use the $( ... ) construct for command substitution
t4010-diff-pathspec.sh: use the $( ... ) construct for command substitution
t4012-diff-binary.sh: use the $( ... ) construct for command substitution
t4013-diff-various.sh: use the $( ... ) construct for command substitution
t4014-format-patch.sh: use the $( ... ) construct for command substitution
t4036-format-patch-signer-mime.sh: use the $( ... ) construct for command substitution
t4038-diff-combined.sh: use the $( ... ) construct for command substitution
t4057-diff-combined-paths.sh: use the $( ... ) construct for command substitution
t4116-apply-reverse.sh: use the $( ... ) construct for command substitution
t4119-apply-config.sh: use the $( ... ) construct for command substitution
t4204-patch-id.sh: use the $( ... ) construct for command substitution
t5000-tar-tree.sh: use the $( ... ) construct for command substitution
scripts: "export VAR=VALUE" construct is not portable
check_bindir: avoid "test <cond> -a/-o <cond>"
contrib/examples/git-clone.sh: avoid "test <cond> -a/-o <cond>"
contrib/examples/git-commit.sh: avoid "test <cond> -a/-o <cond>"
contrib/examples/git-merge.sh: avoid "test <cond> -a/-o <cond>"
contrib/examples/git-repack.sh: avoid "test <cond> -a/-o <cond>"
contrib/examples/git-resolve.sh: avoid "test <cond> -a/-o <cond>"
git-bisect.sh: avoid "test <cond> -a/-o <cond>"
git-mergetool.sh: avoid "test <cond> -a/-o <cond>"
git-rebase--interactive.sh: avoid "test <cond> -a/-o <cond>"
t/lib-httpd.sh: avoid "test <cond> -a/-o <cond>"
t/t0025-crlf-auto.sh: avoid "test <cond> -a/-o <cond>"
t/t0026-eol-config.sh: avoid "test <cond> -a/-o <cond>"
t/t4102-apply-rename.sh: avoid "test <cond> -a/-o <cond>"
t/t5000-tar-tree.sh: avoid "test <cond> -a/-o <cond>"
t/t5403-post-checkout-hook.sh: avoid "test <cond> -a/-o <cond>"
t/t5538-push-shallow.sh: avoid "test <cond> -a/-o <cond>"
t/t9814-git-p4-rename.sh: avoid "test <cond> -a/-o <cond>"
t/test-lib-functions.sh: avoid "test <cond> -a/-o <cond>"
git-submodule.sh: avoid "test <cond> -a/-o <cond>"
submodule.c: use the ARRAY_SIZE macro
Ephrim Khong (1):
sha1_file: do not add own object directory as alternate
Eric Wong (1):
config: preserve config file permissions on edits
Erik Faye-Lund (1):
send-email: recognize absolute path on Windows
Fabian Ruch (1):
sequencer: signal failed ff as an aborted, not a conflicted merge
Felipe Contreras (13):
fast-export: improve argument parsing
fast-export: add new --refspec option
transport-helper: add support for old:new refspec
transport-helper: add support to push symbolic refs
fast-import: add support to delete refs
fast-export: add support to delete refs
transport-helper: add support to delete branches
transport-helper: remove unnecessary strbuf resets
mergetools: add vimdiff3 mode
mergetool: run prompt only if guessed tool
merge: enable defaulttoupstream by default
rerere: fix for merge.conflictstyle
silence a bunch of format-zero-length warnings
Ilya Bobyr (4):
test-lib: document short options in t/README
test-lib: tests skipped by GIT_SKIP_TESTS say so
test-lib: '--run' to run only specific tests
gitk: Replace SHA1 entry field on keyboard paste
Jacek Konieczny (1):
pull: do not abuse 'break' inside a shell 'case'
Jacob Keller (2):
tag: fix --sort tests to use cat<<-\EOF format
tag: support configuring --sort via .gitconfig
James Denholm (6):
contrib/subtree/Makefile: scrap unused $(gitdir)
contrib/subtree/Makefile: use GIT-VERSION-FILE
contrib/subtree/Makefile: s/libexecdir/gitexecdir/
contrib/subtree/Makefile: clean up rules to generate documentation
contrib/subtree/Makefile: clean up rule for "clean"
contrib/subtree: allow adding an annotated tag
Jason St. John (1):
Documentation: use "command-line" when used as a compound adjective, and fix other minor grammatical issues
Jean-Jacques Lafay (1):
git tag --contains: avoid stack overflow
Jeff King (131):
run_external_diff: use an argv_array for the environment
run_external_diff: clean up error handling
run_external_diff: drop fflush(NULL)
run_external_diff: hoist common bits out of conditional
run_external_diff: refactor cmdline setup logic
commit: do not complain of empty messages from -C
t3910: show failure of core.precomposeunicode with decomposed filenames
replace: refactor command-mode determination
replace: use OPT_CMDMODE to handle modes
replace: factor object resolution out of replace_object
replace: add --edit option
commit: use split_ident_line to compare author/committer
pretty: make show_ident_date public
commit: print "Date" line when the user has set date
commit: accept more date formats for "--date"
inline constant return from error() function
let clang use the constant-return error() macro
grep: use run-command's "dir" option for --open-files-in-pager
t/lib-httpd: require SANITY prereq
index-pack: distinguish missing objects from type errors
run_diff_files: do not look at uninitialized stat data
run-command: store an optional argv_array
run_column_filter: use argv_array
git_connect: use argv_array
get_helper: use run-command's internal argv_array
get_exporter: use argv_array
get_importer: use run-command's internal argv_array
argv-array: drop "detach" code
open_sha1_file: report "most interesting" errno
move "--follow needs one pathspec" rule to diff_setup_done
format-patch: make newline after signature conditional
daemon/config: factor out duplicate xstrdup_tolower
test-lib: preserve GIT_CURL_VERBOSE from the environment
t/lib-httpd: use write_script to copy CGI scripts
t5550: test display of remote http error messages
strbuf: add strbuf_tolower function
http: extract type/subtype portion of content-type
http: optionally extract charset parameter from content-type
strbuf: add strbuf_reencode helper
remote-curl: reencode http error messages
http: default text charset to iso-8859-1
t5537: re-drop http tests
error_resolve_conflict: rewrap advice message
error_resolve_conflict: drop quotations around operation
update-index: fix segfault with missing --cacheinfo argument
repack: do not accidentally pack kept objects by default
repack: respect pack.writebitmaps
repack: s/write_bitmap/&s/ in code
pack-objects: stop respecting pack.writebitmaps
repack: simplify handling of --write-bitmap-index
repack: introduce repack.writeBitmaps config option
commit_tree: take a pointer/len pair rather than a const strbuf
replace dangerous uses of strbuf_attach
alloc: include any-object allocations in alloc_report
commit: push commit_index update into alloc_commit_node
do not create "struct commit" with xcalloc
logmsg_reencode: return const buffer
sequencer: use logmsg_reencode in get_message
t7700: drop explicit --no-pack-kept-objects from .keep test
provide a helper to free commit buffer
provide a helper to set the commit buffer
provide helpers to access the commit buffer
use get_cached_commit_buffer where appropriate
use get_commit_buffer to avoid duplicate code
convert logmsg_reencode to get_commit_buffer
use get_commit_buffer everywhere
commit-slab: provide a static initializer
commit: convert commit->buffer to a slab
commit: record buffer length in cache
reuse cached commit buffer when parsing signatures
t7510: stop referring to master in later tests
t7510: test a commit signed by an unknown key
t7510: check %G* pretty-format output
pretty: avoid reading past end-of-string with "%G"
parse_diff_color_slot: drop ofs parameter
daemon: mark some strings as const
avoid using skip_prefix as a boolean
strbuf: add xstrfmt helper
use xstrfmt in favor of manual size calculations
use xstrdup instead of xmalloc + strcpy
use xstrfmt to replace xmalloc + sprintf
use xstrfmt to replace xmalloc + strcpy/strcat
setup_git_env: use git_pathdup instead of xmalloc + sprintf
sequencer: use argv_array_pushf
merge: use argv_array when spawning merge strategy
walker_fetch: fix minor memory leak
unique_path: fix unlikely heap overflow
refactor skip_prefix to return a boolean
apply: use skip_prefix instead of raw addition
fast-import: fix read of uninitialized argv memory
transport-helper: avoid reading past end-of-string
use skip_prefix to avoid magic numbers
use skip_prefix to avoid repeating strings
fast-import: use skip_prefix for parsing input
daemon: use skip_prefix to avoid magic numbers
stat_opt: check extra strlen call
fast-import: refactor parsing of spaces
fetch-pack: refactor parsing in get_ack
git: avoid magic number with skip_prefix
use skip_prefix to avoid repeated calculations
http-push: refactor parsing of remote object names
setup_git_env(): introduce git_path_from_env() helper
move "%G" format test from t7510 to t6006
replace: replace spaces with tabs in indentation
avoid double close of descriptors handed to run_command
replace: use argv_array in export_object
replace: add a --raw mode for --edit
add strip_suffix function
implement ends_with via strip_suffix
replace has_extension with ends_with
use strip_suffix instead of ends_with in simple cases
index-pack: use strip_suffix to avoid magic numbers
strbuf: implement strbuf_strip_suffix
verify-pack: use strbuf_strip_suffix
prepare_packed_git_one: refactor duplicate-pack check
t7300: repair filesystem permissions with test_when_finished
remote-curl: do not complain on EOF from parent git
remote-curl: use error instead of fprintf(stderr)
remote-curl: mark helper-protocol errors more clearly
tag: use skip_prefix instead of magic numbers
alloc: write out allocator definitions
move setting of object->type to alloc_* functions
parse_object_buffer: do not set object type
add object_as_type helper for casting objects
alloc: factor out commit index
object_as_type: set commit index
diff-tree: avoid lookup_unknown_object
prio-queue: factor out compare and swap operations
prio-queue: make output stable with respect to insertion
paint_down_to_common: use prio_queue
t5539: update a flaky test
Jens Lehmann (21):
status/commit: show staged submodules regardless of ignore config
commit -m: commit staged submodules regardless of ignore config
git-gui: show staged submodules regardless of ignore config
git-gui: tolerate major version changes when comparing the git version
gitk: Show staged submodules regardless of ignore config
test-lib: add test_dir_is_empty()
t/Makefile: check helper scripts for non-portable shell commands too
t/Makefile: always test all lint targets when running tests
submodules: add the lib-submodule-update.sh test library
checkout: call the new submodule update test framework
apply: add t4137 for submodule updates
read-tree: add t1013 for submodule updates
reset: add t7112 for submodule updates
bisect: add t6041 for submodule updates
merge: add t7613 for submodule updates
rebase: add t3426 for submodule updates
pull: add t5572 for submodule updates
cherry-pick: add t3512 for submodule updates
am: add t4255 for submodule updates
stash: add t3906 for submodule updates
revert: add t3513 for submodule updates
Jens Lindström (3):
remote rm: delete remote configuration as the last
remote: repack packed-refs once when deleting multiple refs
remote prune: optimize "dangling symref" check/warning
Jeremiah Mahler (7):
format-patch: add "--signature-file=<file>" option
t9138-git-svn-authors-prog.sh fixups
Documentation: wording fixes in the user manual and glossary
t/t7810-grep.sh: remove duplicate test_config()
api-strbuf.txt minor typos
name-hash.c: replace cache_name_compare() with memcmp(3)
cleanup duplicate name_compare() functions
Jiang Xin (2):
blame: fix broken time_buf paddings in relative timestamp
blame: dynamic blame_date_width for different locales
Johannes Schindelin (2):
git grep -O -i: if the pager is 'less', pass the '-I' option
Win32: let mingw_execve() return an int
Johannes Sixt (1):
fix brown paper bag breakage in t5150-request-pull.sh
John Keeping (4):
completion: add a note that merge options are shared
completion: add missing options for git-merge
rebase--am: use --cherry-pick instead of --ignore-if-in-upstream
rebase: omit patch-identical commits with --fork-point
Jonathan McCrohan (1):
git-instaweb: add support for Apache 2.4
Jonathan Nieder (4):
contrib: remove vim support instructions
contrib: remove git-diffall
test-lint: find unportable sed, echo, test, and export usage after &&
test doc: test_write_lines does not split its arguments
Junio C Hamano (49):
apply --ignore-space-change: lines with and without leading whitespaces do not match
send-email: windows drive prefix (e.g. C:) appears only at the beginning
mergetool: document the default for --[no-]prompt
compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN
CodingGuidelines: once it is in, it is not worth the code churn
CodingGuidelines: give an example for case/esac statement
CodingGuidelines: give an example for redirection
CodingGuidelines: give an example for control statements
CodingGuidelines: give an example for shell function preamble
CodingGuidelines: do not call the conditional statement "if()"
CodingGuidelines: on comparison
CodingGuidelines: on splitting a long line
CodingGuidelines: avoid "test <cond> -a/-o <cond>"
scripts: more "export VAR=VALUE" fixes
Git 1.9.4
fetch doc: update introductory part for clarity
fetch doc: update note on '+' in front of the refspec
fetch doc: remove notes on outdated "mixed layout"
First batch for 2.1
shortlog: allow --exclude=<glob> to be passed
fetch doc: on pulling multiple refspecs
fetch doc: update refspec format description
fetch doc: remove "short-cut" section
fetch doc: add a section on configured remote-tracking branches
fetch: allow explicit --refmap to override configuration
Second batch for 2.1
Update draft release notes to 2.1
test: turn EXPENSIVE into a lazy prerequisite
test: turn USR_BIN_TIME into a lazy prerequisite
t3302: coding style updates
t3302: do not chdir around in the primary test process
t3302: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
t3419: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
revision: parse "git log -<count>" more carefully
t0008: do not depend on 'echo' handling backslashes specially
Third batch for 2.1
git-submodule.sh: avoid "echo" path-like values
Fourth batch for 2.1
builtin/clone.c: detect a clone starting at a tag correctly
Git 2.0.1
Fifth batch for 2.1
Sixth batch for 2.1
Start preparing for 2.0.2
Seventh batch for 2.1
Git 2.0.2
Eighth batch for 2.1
Ninth batch for 2.1
Git 2.0.3
Git 2.1.0-rc0
Jörn Engel (1):
pager: do allow spawning pager recursively
Karsten Blees (46):
MSVC: link dynamically to the CRT
Win32 dirent: remove unused dirent.d_ino member
Win32 dirent: remove unused dirent.d_reclen member
Win32 dirent: change FILENAME_MAX to MAX_PATH
Win32 dirent: clarify #include directives
Win32 dirent: improve dirent implementation
Win32: move main macro to a function
Win32: support Unicode console output
Win32: detect console streams more reliably
Win32: warn if the console font doesn't support Unicode
Win32: add Unicode conversion functions
Win32: Thread-safe windows console output
Win32: fix broken pipe detection
Win32: reliably detect console pipe handles
Win32: simplify internal mingw_spawn* APIs
Win32: fix potential multi-threading issue
MinGW: disable CRT command line globbing
Win32: Unicode arguments (outgoing)
Win32: Unicode arguments (incoming)
trace: move trace declarations from cache.h to new trace.h
trace: consistently name the format parameter
trace: remove redundant printf format attribute
symlinks: remove PATH_MAX limitation
hashmap: factor out getting a hash code from a SHA1
hashmap: improve struct hashmap member documentation
hashmap: add simplified hashmap_get_from_hash() API
hashmap: add string interning API
cache.h: rename cache_def_free to cache_def_clear
trace: improve trace performance
Documentation/git.txt: improve documentation of 'GIT_TRACE*' variables
sha1_file: change GIT_TRACE_PACK_ACCESS logging to use trace API
trace: add infrastructure to augment trace output with additional info
trace: disable additional trace output for unit tests
trace: add current timestamp to all trace output
trace: move code around, in preparation to file:line output
trace: add 'file:line' to all trace output
trace: add high resolution timer function to debug performance issues
trace: add trace_performance facility to debug performance issues
git: add performance tracing for git's main() function to debug scripts
wt-status: simplify performance measurement by using getnanotime()
progress: simplify performance measurement by using getnanotime()
api-trace.txt: add trace API documentation
Win32: Unicode file name support (except dirent)
Win32: Unicode file name support (dirent)
MinGW: fix compile error due to missing ELOOP
config: use chmod() instead of fchmod()
Kirill Smelkov (20):
combine-diff: move show_log_first logic/action out of paths scanning
combine-diff: move changed-paths scanning logic into its own function
tree-diff: no need to manually verify that there is no mode change for a path
tree-diff: no need to pass match to skip_uninteresting()
tree-diff: show_tree() is not needed
tree-diff: consolidate code for emitting diffs and recursion in one place
tree-diff: don't assume compare_tree_entry() returns -1,0,1
tree-diff: move all action-taking code out of compare_tree_entry()
tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
tree-diff: show_path prototype is not needed anymore
tree-diff: simplify tree_entry_pathcmp
tree-diff: remove special-case diff-emitting code for empty-tree cases
tree-diff: diff_tree() should now be static
tree-diff: rework diff_tree interface to be sha1 based
tree-diff: no need to call "full" diff_tree_sha1 from show_path()
tree-diff: reuse base str(buf) memory on sub-tree recursion
Portable alloca for Git
tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
combine-diff: speed it up, by using multiparent diff tree-walker directly
mingw: activate alloca
Linus Torvalds (1):
git log: support "auto" decorations
Luis R. Rodriguez (1):
git.c: treat RUN_SETUP_GENTLY and RUN_SETUP as mutually exclusive
Marc Branchaud (2):
fetch doc: move FETCH_HEAD material lower and add an example
docs: Explain the purpose of fetch's and pull's <refspec> parameter.
Matthew Chen (1):
submodule: document "sync --recursive"
Matthieu Moy (4):
git-remote-mediawiki: allow stop/start-ing the test server
git-remote-mediawiki: fix encoding issue for UTF-8 media files
pager: remove 'S' from $LESS by default
rebase -i: test "Nothing to do" case with autostash
Max Kirillov (5):
git-show: fix 'git show -s' to not add extra terminator after merge commit
gitk: Switch to patch mode when searching for line origin
gitk: Add visiblerefs option, which lists always-shown branches
t6023-merge-file.sh: fix and mark as broken invalid tests
git-merge-file: do not add LF at EOF while applying unrelated change
Maxime Coste (2):
git-p4: Do not include diff in spec file when just preparing p4
git-p4: fix submit in non --prepare-p4-only mode
Michael Barabanov (1):
use local cloning if insteadOf makes a local URL
Michael Haggerty (27):
t1400: fix name and expected result of one test
t1400: provide more usual input to the command
parse_arg(): really test that argument is properly terminated
t1400: add some more tests involving quoted arguments
refs.h: rename the action_on_err constants
update_refs(): fix constness
update-ref --stdin: read the whole input at once
parse_cmd_verify(): copy old_sha1 instead of evaluating <oldvalue> twice
update-ref.c: extract a new function, parse_refname()
update-ref --stdin: improve error messages for invalid values
update-ref --stdin: make error messages more consistent
update-ref --stdin: simplify error messages for missing oldvalues
t1400: test that stdin -z update treats empty <newvalue> as zeros
update-ref.c: extract a new function, parse_next_sha1()
update-ref --stdin -z: deprecate interpreting the empty string as zeros
t1400: test one mistake at a time
update-ref --stdin: improve the error message for unexpected EOF
update-ref --stdin: harmonize error messages
refs: add a concept of a reference transaction
update-ref --stdin: reimplement using reference transactions
refs: remove API function update_refs()
struct ref_update: rename field "ref_name" to "refname"
struct ref_update: store refname as a FLEX_ARRAY
ref_transaction_commit(): simplify code using temporary variables
struct ref_update: add a lock field
struct ref_update: add a type field
ref_transaction_commit(): work with transaction->updates in place
Michael J Gruber (7):
t7510: use consistent &&-chains in loop
gpg-interface: provide clear helper for struct signature_check
gpg-interface: provide access to the payload
verify-commit: scriptable commit signature verification
t7510: exit for loop with test result
t7510: test verify-commit
log: correctly identify mergetag signature verification status
Michael Naumov (1):
sideband.c: do not use ANSI control sequence on non-terminal
Michael S. Tsirkin (6):
git-send-email: two new options: to-cover, cc-cover
test/send-email: to-cover, cc-cover tests
rebase --keep-empty -i: add test
test: add test_write_lines helper
patch-id: make it stable against hunk reordering
patch-id-test: test stable and unstable behaviour
Nguyễn Thái Ngọc Duy (40):
index-pack: work around thread-unsafe pread()
ewah: fix constness of ewah_read_mmap
ewah: delete unused ewah_read_mmap_native declaration
sequencer: do not update/refresh index if the lock cannot be held
config: be strict on core.commentChar
commit: allow core.commentChar=auto for character auto selection
gc --auto: do not lock refs in the background
git potty: restore environments after alias expansion
read-cache: new API write_locked_index instead of write_index/write_cache
read-cache: relocate and unexport commit_locked_index()
read-cache: store in-memory flags in the first 12 bits of ce_flags
read-cache: be strict about "changed" in remove_marked_cache_entries()
read-cache: be specific what part of the index has changed
update-index: be specific what part of the index has changed
resolve-undo: be specific what part of the index has changed
unpack-trees: be specific what part of the index has changed
cache-tree: mark istate->cache_changed on cache tree invalidation
cache-tree: mark istate->cache_changed on cache tree update
cache-tree: mark istate->cache_changed on prime_cache_tree()
entry.c: update cache_changed if refresh_cache is set in checkout_entry()
read-cache: save index SHA-1 after reading
read-cache: split-index mode
read-cache: mark new entries for split index
read-cache: save deleted entries in split index
read-cache: mark updated entries for split index
split-index: the writing part
split-index: the reading part
split-index: do not invalidate cache-tree at read time
split-index: strip pathname of on-disk replaced entries
update-index: new options to enable/disable split index mode
update-index --split-index: do not split if $GIT_DIR is read only
rev-parse: add --shared-index-path to get shared index path
read-tree: force split-index mode off on --index-output
read-tree: note about dropping split-index mode or index version
read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
t2104: make sure split index mode is off for the version test
t1700: new tests for split-index mode
dir.c: coding style fix
dir.h: move struct exclude declaration to top level
prep_exclude: remove the artificial PATH_MAX limit
Nick Alcock (1):
t5538: move http push tests out to t5542
Pasha Bolokhov (1):
dir.c:trim_trailing_spaces(): fix for " \ " sequence
Pat Thoyts (2):
wincred: add install target
wincred: avoid overwriting configured variables
Philip Oakley (1):
doc: give some guidelines for error messages
Ramkumar Ramachandra (1):
rebase -i: handle "Nothing to do" case with autostash
Ramsay Allan Jones (2):
t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
alloc.c: remove the alloc_raw_commit_node() function
René Scharfe (28):
mailinfo: use strcmp() for string comparison
pack-objects: use free()+xcalloc() instead of xrealloc()+memset()
Use starts_with() for C strings instead of memcmp()
blame: factor out get_next_line()
blame: simplify prepare_lines()
wt-status: use argv_array for environment
wt-status: simplify building of summary limit argument
sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()
sha1_file: avoid overrunning alternate object base string
t5000, t5003: simplify commit
diff-tree: call free_commit_list() instead of duplicating its code
line-log: use commit_list_append() instead of duplicating its code
use strbuf_addbuf for adding strbufs
use strbuf_addch for adding single characters
merge: simplify merge_trivial() by using commit_list_append()
commit: use commit_list_append() instead of duplicating its code
fsck: simplify fsck_commit_buffer() by using commit_list_count()
annotate: use argv_array
strbuf: use strbuf_addstr() for adding C strings
use commit_list_count() to count the members of commit_lists
run-command: use internal argv_array of struct child_process in run_hook_ve()
transport: simplify fetch_objs_via_rsync() using argv_array
fast-import: use hashcmp() for SHA1 hash comparison
bundle: use internal argv_array of struct child_process in create_bundle()
remote-testsvn: use internal argv_array of struct child_process in cmd_import()
unix-socket: remove stale socket before calling chdir()
use xcalloc() to allocate zero-initialized memory
use xmemdupz() to allocate copies of strings given by start and length
RomanBelinsky (1):
SVN.pm::parse_svn_date: allow timestamps with a single-digit hour
Ronnie Sahlberg (27):
sequencer.c: check for lock failure and bail early in fast_forward_to
commit.c: check for lock error and return early
refs.c: add new functions reflog_exists and delete_reflog
checkout.c: use ref_exists instead of file_exist
refs.c: change read_ref_at to use the reflog iterators
enums: remove trailing ',' after last item in enum
enums: remove trailing ',' after last item in enum
refs.c: remove ref_transaction_rollback
refs.c: ref_transaction_commit should not free the transaction
refs.c: constify the sha arguments for ref_transaction_create|delete|update
refs.c: allow passing NULL to ref_transaction_free
refs.c: add a strbuf argument to ref_transaction_commit for error logging
lockfile.c: add a new public function unable_to_lock_message
lockfile.c: make lock_file return a meaningful errno on failurei
refs.c: add an err argument to repack_without_refs
refs.c: make sure log_ref_setup returns a meaningful errno
refs.c: verify_lock should set errno to something meaningful
refs.c: make remove_empty_directories always set errno to something sane
refs.c: commit_packed_refs to return a meaningful errno on failure
refs.c: make resolve_ref_unsafe set errno to something meaningful on error
refs.c: log_ref_write should try to return meaningful errno
refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
refs.c: make update_ref_write update a strbuf on failure
update-ref: use err argument to get error from ref_transaction_commit
refs.c: remove the onerr argument to ref_transaction_commit
refs.c: change ref_transaction_update() to do error checking and return status
refs.c: add a public is_branch function
Stefan Beller (3):
.mailmap: map different names with the same email address together
git.1: switch homepage for stats
.mailmap: combine Stefan Beller's emails
Steffen Prohaska (1):
completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases
Stepan Kasal (3):
Revert "submodules: fix ambiguous absolute paths under Windows"
t5000, t5003: do not use test_cmp to compare binary files
mingw: avoid const warning
Stephen P. Smith (1):
How to keep a project's canonical history correct.
Steve Hoelzer (1):
environment.c: enable core.preloadindex by default
Tanay Abhra (4):
string-list: spell all values out that are given to a string_list initializer
imap-send: use skip_prefix instead of using magic numbers
string-list: add string_list initializer helper function
replace memset with string-list initializers
Theodore Leblond (1):
compat/poll: sleep 1 millisecond to avoid busy wait
Thorsten Glaser (1):
builtin/tag.c: show tag name to hint in the message editor
Torsten Bögershausen (7):
utf8.c: use a table for double_width
utf8: make it easier to auto-update git_wcwidth()
t5551: fix the 50,000 tag test
t9001: avoid non-portable '\n' with sed
Update of unicode_width.h to Unicode Version 7.0
t0025: rename the test files
t0027: combinations of core.autocrlf, core.eol and text
Trần Ngọc Quân (1):
l10n: Init Vietnamese translation
W. Trevor King (1):
Documentation: mention config sources for @{upstream}
William Giokas (1):
svn-fe: conform to pep8
Yi EungJun (2):
http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616
http: fix charset detection of extract_content_type()
Yiannis Marangos (2):
wrapper.c: add xpread() similar to xread()
read-cache.c: verify index file before we opportunistically update it
Zoltan Klinger (1):
log: fix indentation for --graph --show-signature
brian m. carlson (3):
blame: correctly handle files regardless of autocrlf
rebase--merge: fix --skip with two conflicts in a row
Documentation: fix missing text for rev-parse --verify
Øystein Walle (1):
config: respect '~' and '~user' in mailmap.file
Øyvind A. Holm (1):
.gitignore: "git-verify-commit" is a generated file
^ permalink raw reply [relevance 2%]
* Re: What's cooking in git.git (May 2012, #02; Fri, 4)
2012-05-10 14:50 7% ` Junio C Hamano
@ 2012-05-10 15:13 0% ` Jeff King
0 siblings, 0 replies; 162+ results
From: Jeff King @ 2012-05-10 15:13 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Thu, May 10, 2012 at 07:50:53AM -0700, Junio C Hamano wrote:
> >> "git push" over smart-http lost progress output and this resurrects it.
> >>
> >> Will merge to 'master'.
> >
> > I noticed that this graduated to master, but not to maint. Any reason?
>
> Nobody goes direct to 'maint' if it is complex enough to go through
> next/pu cycle these days.
>
> $ git log -p Documentation/RelNotes/1.7.11.txt
>
> will show, for example, jk/maint-config-bogus-section was merged as part
> of the eighth batch (May 2) to 'master', but merged to 'maint' only after
> we had it in 'master' for a bit without hearing any breakage caused by it.
Ah, OK. I thought the progression you used was topic->pu->next->maint.
Did that used to be the case, or am I just crazy? I also don't remember
seeing incremental updates to the release notes in this way. But then I
don't pay too much attention to them during the actual cycle.
Not a criticism (in fact, it makes a lot more sense to me). Just natural
curiosity.
> Just like all the other features listed below the "Fixes since v1.7.10"
> fold, the 'push progress' went into 'master' very recently with a note to
> merge it later to 'maint', and we haven't seen 'later' yet.
Right. I saw only that it was dropped from "What's cooking" and didn't
realize you were keeping state in the release notes.
Thanks for the explanation.
-Peff
^ permalink raw reply [relevance 0%]
* Re: What's cooking in git.git (May 2012, #02; Fri, 4)
@ 2012-05-10 14:50 7% ` Junio C Hamano
2012-05-10 15:13 0% ` Jeff King
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2012-05-10 14:50 UTC (permalink / raw)
To: Jeff King; +Cc: git
Jeff King <peff@peff.net> writes:
> On Fri, May 04, 2012 at 04:06:18PM -0700, Junio C Hamano wrote:
>
>> --------------------------------------------------
>> [Graduated to "master"]
>>
>> * jk/maint-push-progress (2012-05-01) 3 commits
>> (merged to 'next' on 2012-05-01 at 2286130)
>> + t5541: test more combinations of --progress
>> + teach send-pack about --[no-]progress
>> + send-pack: show progress when isatty(2)
>>
>> "git push" over smart-http lost progress output and this resurrects it.
>>
>> Will merge to 'master'.
>
> I noticed that this graduated to master, but not to maint. Any reason?
Nobody goes direct to 'maint' if it is complex enough to go through
next/pu cycle these days.
$ git log -p Documentation/RelNotes/1.7.11.txt
will show, for example, jk/maint-config-bogus-section was merged as part
of the eighth batch (May 2) to 'master', but merged to 'maint' only after
we had it in 'master' for a bit without hearing any breakage caused by it.
Just like all the other features listed below the "Fixes since v1.7.10"
fold, the 'push progress' went into 'master' very recently with a note to
merge it later to 'maint', and we haven't seen 'later' yet.
^ permalink raw reply [relevance 7%]
* Pull request for master branch with update of de.po
@ 2012-05-08 1:09 6% Jiang Xin
0 siblings, 0 replies; 162+ results
From: Jiang Xin @ 2012-05-08 1:09 UTC (permalink / raw)
To: Junio C Hamano, Ralf Thielow, Thomas Rast, Jan Krüger,
Christian Stimming
Cc: Git List
Hi Junio and members of German l10n team,
This pull request for master branch includes update of German translations.
Ralf merged their hacks on maint branch to master branch, and resolved
conflicts in de.po which are hard for me to resolved. Thanks Ralf.
The same issue needs Junio to make the final decision:
One commit (fbd994d) by Thomas hacks a file "git-gui/po/de.po",
which is outside of "po/" directory.
The following changes since commit 34875f4a53b9e495622553a671776f66dc37eb2b:
The eighth batch of topics graduated to 'master' (2012-05-02 14:38:43 -0700)
are available in the git repository at:
https://github.com/git-l10n/git-po/ master
for you to fetch changes up to 80e4ba8ddb3224f40a1a896b2db8aa3a83cc0dab:
Merge branch 'maint' into master (2012-05-07 20:44:21 +0200)
----------------------------------------------------------------
Jiang Xin (1):
l10n: Update git.pot (273 new, 15 removed messages)
Ralf Thielow (6):
l10n: add new members to German translation team
l10n: de.po: translate "track" as "beobachten"
l10n: de.po: translate "remote" as "extern"
l10n: de.po: collection of improvements
l10n: de.po: unify translation of "ahead" and "behind"
Merge branch 'maint' into master
Thomas Rast (4):
de.po: translate "bare" as "bloß"
de.po: hopefully uncontroversial fixes
de.po: translate "bad" as "ungültig" ("invalid")
de.po: collection of suggestions
git-gui/po/de.po | 2 +-
po/TEAMS | 3 +
po/de.po | 479 +++++-----
po/git.pot | 2724 ++++++++++++++++++++++++++++++++++++++++--------------
4 files changed, 2245 insertions(+), 963 deletions(-)
--
Jiang Xin
^ permalink raw reply [relevance 6%]
* Re: What's cooking in git.git (May 2012, #01; Wed, 2)
2012-05-02 22:12 2% What's cooking in git.git (May 2012, #01; Wed, 2) Junio C Hamano
@ 2012-05-02 22:19 0% ` Junio C Hamano
0 siblings, 0 replies; 162+ results
From: Junio C Hamano @ 2012-05-02 22:19 UTC (permalink / raw)
To: git
Junio C Hamano <gitster@pobox.com> writes:
> 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 eighth batch of topics in this cycle is now in 'master', the topics in
> 'next' all look ready, and we do not have many topics left in 'pu'. The
> cycle is going well ;-)
>
> Except for folks with libsvn-perl 1.6.x where x is greater than 9; we know
> how the fix should look like, and we will have it in tomorrow's integration
> round.
Actually, I lied. Eric's pull request almost crossed with the
announcement, and I decided to redo today's integration cycle to include
the fix, as having to say "GIT_SKIP_TESTS=t91?? make" is just annoying.
^ permalink raw reply [relevance 0%]
* What's cooking in git.git (May 2012, #01; Wed, 2)
@ 2012-05-02 22:12 2% Junio C Hamano
2012-05-02 22:19 0% ` Junio C Hamano
0 siblings, 1 reply; 162+ results
From: Junio C Hamano @ 2012-05-02 22:12 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 eighth batch of topics in this cycle is now in 'master', the topics in
'next' all look ready, and we do not have many topics left in 'pu'. The
cycle is going well ;-)
Except for folks with libsvn-perl 1.6.x where x is greater than 9; we know
how the fix should look like, and we will have it in tomorrow's integration
round.
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]
* jk/maint-tformat-with-z (2012-05-01) 2 commits
(merged to 'next' on 2012-05-02 at a0f8af7)
+ log-tree: the previous one is still not quite right
+ log-tree: use custom line terminator in line termination mode
"log -z --pretty=tformat:..." does not terminate each record with NUL
and this is a beginning of an attempt to fix it. It still is not right
but the patch does not make externally observable behaviour worse.
Will merge to 'master'.
* nd/stream-to-archive (2012-04-30) 9 commits
- archive-zip: streaming for deflated files
- archive-zip: streaming for stored files
- archive-zip: factor out helpers for writing sizes and CRC
- archive-zip: remove uncompressed_size
- streaming: void pointer instead of char pointer
- archive-tar: stream large blobs to tar file
- archive: delegate blob reading to backend
- archive-tar: unindent write_tar_entry by one level
- archive-tar: turn write_tar_entry into blob-writing only
Stream large blobs directly out to archive files without slurping
everything in memory first. The streaming version of "tar" may need
further fixing.
Expecting another reroll; the second version already had review exchanges
so I didn't pick it up.
* jk/maint-push-progress (2012-05-01) 3 commits
(merged to 'next' on 2012-05-01 at 2286130)
+ t5541: test more combinations of --progress
+ teach send-pack about --[no-]progress
+ send-pack: show progress when isatty(2)
"git push" over smart-http lost progress output and this resurrects it.
Will merge to 'master'.
* zj/diff-empty-chmod (2012-05-02) 5 commits
(merged to 'next' on 2012-05-02 at fb8cb11)
+ t4006: Windows do not have /dev/zero
(merged to 'next' on 2012-05-01 at 5a92787)
+ diff --stat: do not run diff on indentical files
+ diff --stat: report mode-only changes for binary files like text files
+ tests: check --[short]stat output after chmod
+ test: modernize style of t4006
"git diff --stat" used to fully count a binary file with modified
execution bits whose contents is unmodified, which was not right.
Will merge to 'master'.
--------------------------------------------------
[Graduated to "master"]
* ab/i18n (2012-04-30) 3 commits
(merged to 'next' on 2012-04-30 at 5e7620d)
+ git-commit: remove lego in i18n messages
+ git-commit: remove lego in i18n messages
+ git-branch: remove lego in i18n messages
Fixes some constructs that build messages meant for i18n by concatenating
pieces of strings.
* jc/index-v4 (2012-04-27) 12 commits
(merged to 'next' on 2012-04-29 at ed71f9c)
+ index-v4: document the entry format
+ unpack-trees: preserve the index file version of original
(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. It even comes with a technical doc updates.
The topic should give a solid base to build on further updates, with the
code refactoring in its earlier parts, and the backward compatibility
mechanism in its later parts.
* jc/rerere-train (2012-04-30) 1 commit
(merged to 'next' on 2012-04-30 at 0cc4308)
+ contrib/rerere-train: use installed git-sh-setup
A script written long time ago proved to be useful this week for me ;-)
with a minor tweak.
* jk/doc-asciidoc-inline-literal (2012-04-26) 1 commit
(merged to 'next' on 2012-04-30 at a52b4e6)
+ docs: stop using asciidoc no-inline-literal
Our documentation was written for an ancient version of AsciiDoc,
making the source not very readable.
* jk/maint-config-bogus-section (2012-04-25) 1 commit
(merged to 'next' on 2012-04-26 at 9919198)
+ config: reject bogus section names for --rename-section
"git config --rename-section" to rename an existing section into a
bogus one did not check the new name.
* jk/maint-gitweb-test-use-sane-perl (2012-05-01) 2 commits
(merged to 'next' on 2012-05-01 at 88b3f80)
+ Consistently use perl from /usr/bin/ for scripts
+ t/gitweb-lib: use $PERL_PATH to run gitweb
When using a Perl script on a system where "perl" found on user's $PATH
could be ancient or otherwise broken, we allow builders to specify the
path to a good copy of Perl with $PERL_PATH. The gitweb test forgot to
use that Perl when running its test.
* ld/git-p4-tags-and-labels (2012-04-25) 7 commits
(merged to 'next' on 2012-04-25 at 8b959e5)
+ git p4: fix unit tests
(merged to 'next' on 2012-04-24 at bf55d92)
+ git p4: move verbose to base class
+ git p4: Ignore P4EDITOR if it is empty
+ git p4: Squash P4EDITOR in test harness
+ git p4: fix-up "import/export of labels to/from p4"
(merged to 'next' on 2012-04-15 at 1b1e9a1)
+ git p4: import/export of labels to/from p4
+ git p4: Fixing script editor checks
Support p4 labels by importing/exporting them as git tags.
* lp/diffstat-with-graph (2012-04-27) 8 commits
(merged to 'next' on 2012-04-30 at b301202)
+ t4052: work around shells unable to set COLUMNS to 1
+ Merge branch 'zj/mksh-columns-breakage' into lp/diffstat-with-graph
(merged to 'next' on 2012-04-23 at 8de0747)
+ 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
(this branch uses zj/mksh-columns-breakage; is tangled with nd/columns.)
"log --graph" was not very friendly with "--stat" option and its output
had line breaks at wrong places.
* mm/simple-push (2012-04-24) 7 commits
(merged to 'next' on 2012-04-30 at 1a571d2)
+ push.default doc: explain simple after upstream
+ push: document the future default change for push.default (matching -> simple)
+ t5570: use explicit push refspec
+ push: introduce new push.default mode "simple"
+ t5528-push-default.sh: add helper functions
+ Undocument deprecated alias 'push.default=tracking'
+ Documentation: explain push.default option a bit more
(this branch is used by mm/push-default-switch-warning.)
New users tend to work on one branch at a time and push the result
out. The current and upstream modes of push is a more suitable default
mode than matching mode for these people, but neither is surprise-free
depending on how the project is set up. Introduce a "simple" mode that
is a subset of "upstream" but only works when the branch is named the same
between the remote and local repositories.
The plan is to make it the new default when push.default is not
configured.
* nd/i18n (2012-04-25) 11 commits
(merged to 'next' on 2012-04-30 at d8bbd7a)
+ help: replace underlining "help -a" headers using hyphens with a blank line
(merged to 'next' on 2012-04-24 at 07965a4)
+ i18n: bundle: mark strings for translation
+ i18n: index-pack: mark strings for translation
+ i18n: apply: update say_patch_name to give translators complete sentence
+ i18n: apply: mark strings for translation
+ i18n: remote: mark strings for translation
+ i18n: make warn_dangling_symref() automatically append \n
+ i18n: help: mark strings for translation
+ i18n: mark relative dates for translation
+ strbuf: convenience format functions with \n automatically appended
+ Makefile: feed all header files to xgettext
More message strings marked for i18n.
* nh/empty-rebase (2012-04-24) 4 commits
(merged to 'next' on 2012-04-24 at 91d2dfd)
+ git-rebase: add keep_empty flag
+ git-cherry-pick: Add test to validate new options
+ git-cherry-pick: Add keep-redundant-commits option
+ git-cherry-pick: add allow-empty option
"git rebase" learned to optionally keep commits that do not introduce
any change in the original history.
* pw/message-cleanup (2012-04-30) 2 commits
(merged to 'next' on 2012-04-30 at 703c0c4)
+ remove blank filename in error message
+ remove superfluous newlines in error messages
Many error/warning messages had extra trailing newlines that are
unnecessary.
* pw/p4-various (2012-04-30) 4 commits
(merged to 'next' on 2012-04-30 at b20428c)
+ git p4: submit files with wildcards
+ git p4: fix writable file after rename or copy
+ git p4: test submit
+ git p4: bring back files in deleted client directory
Miscellaneous updates to "git p4".
* tr/xdiff-fast-hash (2012-05-01) 2 commits
(merged to 'next' on 2012-05-01 at 5155b98)
+ xdiff: choose XDL_FAST_HASH code on sizeof(long) instead of __WORDSIZE
(merged to 'next' on 2012-04-24 at ed693cf)
+ xdiff: load full words in the inner loop of xdl_hash_record
Use word-at-a-time comparison to find end of line or NUL (end of buffer),
borrowed from the linux-kernel discussion.
* zj/diff-stat-smaller-num-columns (2012-04-30) 1 commit
(merged to 'next' on 2012-05-01 at eb68d3b)
+ diff --stat: use less columns for change counts
Spend only minimum number of columns necessary to show the number of lines
in the output from "diff --stat", instead of always allocating 4 columns
even when showing changes that are much smaller than 1000 lines.
* zj/mksh-columns-breakage (2012-04-27) 1 commit
(merged to 'next' on 2012-04-30 at cce82a8)
+ test-lib: skip test with COLUMNS=1 under mksh
(this branch is used by lp/diffstat-with-graph and nd/columns.)
A broken shell may not let us set an environment value to an arbitrary
value, interfering with some of the tests. Introduce a test prerequisite
so that we can skip some tests on such a platform.
--------------------------------------------------
[Stalled]
* nl/http-proxy-more (2012-04-26) 8 commits
- http: try an uppercase version of $proto_proxy
- 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
Still needs to address review comments from Peff, some of which were
partly addressed with later "fixup" patches queued here.
It probably is a good idea to re-roll the entire series.
* 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.
* 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]
* mh/ref-api-lazy-loose (2012-04-26) 18 commits
- refs: read loose references lazily
- read_loose_refs(): eliminate ref_cache argument
- struct ref_dir: store a reference to the enclosing ref_cache
- search_for_subdir(): return (ref_dir *) instead of (ref_entry *)
- get_ref_dir(): add function for getting a ref_dir from a ref_entry
- read_loose_refs(): rename function from get_ref_dir()
- refs: wrap top-level ref_dirs in ref_entries
- find_containing_dir(): use strbuf in implementation of this function
- bisect: copy filename string obtained from git_path()
- do_for_each_reflog(): reuse strbuf across recursive function calls
- do_for_each_reflog(): use a strbuf to hold logfile name
- do_for_each_reflog(): return early on error
- get_ref_dir(): take the containing directory as argument
- refs.c: extract function search_for_subdir()
- get_ref_dir(): require that the dirname argument ends in '/'
- get_ref_dir(): rename "base" parameter to "dirname"
- get_ref_dir(): use a strbuf to hold refname
- get_ref_dir(): return early if directory cannot be read
Refs API is updated to lazily read sub-hierarchies of refs/ namespace,
so that we do not have to grab everything from the filesystem when we
are only interested in listing branches, for example.
This looked mostly sane. Did I miss "needs more work" review comments?
* nd/columns (2012-04-27) 10 commits
(merged to 'next' on 2012-04-30 at 93bb157)
+ 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
+ t9002: work around shells that are unable to set COLUMNS to 1
+ column: add columnar layout
+ Stop starting pager recursively
+ Add column layout skeleton and git-column
A couple of commands learn --column option to produce columnar output.
Will merge to 'master'.
* 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
* th/difftool-diffall (2012-04-23) 8 commits
(merged to 'next' on 2012-05-02 at fdc9f60)
+ 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.
Will merge to 'master'.
* mm/push-default-switch-warning (2012-04-26) 2 commits
- t5541: warning message is given even with --quiet
- push: start warning upcoming default change for push.default
Will squash the two, but this has to wait for a few release cycles.
--------------------------------------------------
[Discarded]
* cb/daemon-test-race-fix (2012-04-27) 2 commits
(merged to 'next' on 2012-04-27 at 84bbcf8)
+ Revert "git-daemon wrapper to wait until daemon is ready"
(merged to 'next' on 2012-04-24 at d5c30be)
+ git-daemon wrapper to wait until daemon is ready
Fix race condition between starting and waiting for git-daemon in the
test.
Reverted from 'next' to replace it with js/daemon-test-race-fix.
^ permalink raw reply [relevance 2%]
Results 1-162 of 162 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2012-05-02 22:12 2% What's cooking in git.git (May 2012, #01; Wed, 2) Junio C Hamano
2012-05-02 22:19 0% ` Junio C Hamano
2012-05-04 23:06 What's cooking in git.git (May 2012, #02; Fri, 4) Junio C Hamano
2012-05-10 13:12 ` Jeff King
2012-05-10 14:50 7% ` Junio C Hamano
2012-05-10 15:13 0% ` Jeff King
2012-05-08 1:09 6% Pull request for master branch with update of de.po Jiang Xin
2014-07-27 23:18 2% [ANNOUNCE] Git v2.1.0-rc0 Junio C Hamano
2015-07-27 20:47 2% [ANNOUNCE] Git v2.5.0 Junio C Hamano
2015-09-02 20:39 3% [ANNOUNCE] Git v2.6.0-rc0 Junio C Hamano
2015-09-09 0:09 3% [ANNOUNCE] Git v2.6.0-rc1 Junio C Hamano
2015-09-21 21:49 3% [ANNOUNCE] Git v2.6.0-rc3 Junio C Hamano
2015-09-28 23:20 3% [ANNOUNCE] Git v2.6.0 Junio C Hamano
2016-01-04 23:43 2% [ANNOUNCE] Git v2.7.0 Junio C Hamano
2016-02-26 23:41 2% [ANNOUNCE] Git v2.8.0-rc0 Junio C Hamano
2016-03-04 22:31 2% [ANNOUNCE] Git v2.8.0-rc1 Junio C Hamano
2016-03-10 23:04 2% [ANNOUNCE] Git v2.8.0-rc2 Junio C Hamano
2016-03-16 22:24 2% [ANNOUNCE] Git v2.8.0-rc3 Junio C Hamano
2016-03-21 21:32 2% [ANNOUNCE] Git v2.8.0-rc4 Junio C Hamano
2016-03-28 22:42 2% [ANNOUNCE] Git v2.8.0 Junio C Hamano
2016-05-23 23:23 3% [ANNOUNCE] Git v2.9.0-rc0 Junio C Hamano
2016-05-31 21:53 3% [ANNOUNCE] Git v2.9.0-rc1 Junio C Hamano
2016-06-07 5:57 3% [ANNOUNCE] Git v2.9.0-rc2 Junio C Hamano
2016-06-13 19:45 3% [ANNOUNCE] Git v2.9.0 Junio C Hamano
2016-08-14 22:47 2% [ANNOUNCE] Git v2.10.0-rc0 Junio C Hamano
2016-08-19 23:10 2% [ANNOUNCE] Git v2.10.0-rc1 Junio C Hamano
2016-08-26 22:31 2% [ANNOUNCE] Git v2.10.0-rc2 Junio C Hamano
2016-09-03 2:17 2% [ANNOUNCE] Git v2.10.0 Junio C Hamano
2016-10-31 21:49 2% [ANNOUNCE] Git v2.11.0-rc0 Junio C Hamano
2016-11-11 23:27 2% [ANNOUNCE] Git v2.11.0-rc1 Junio C Hamano
2016-11-17 22:24 2% [ANNOUNCE] Git v2.11.0-rc2 Junio C Hamano
2016-11-23 23:21 2% [ANNOUNCE] Git v2.11.0-rc3 Junio C Hamano
2016-11-29 21:21 2% [ANNOUNCE] Git v2.11.0 Junio C Hamano
2017-02-03 21:51 2% [ANNOUNCE] Git v2.12.0-rc0 Junio C Hamano
2017-02-10 21:29 2% [ANNOUNCE] Git v2.12.0-rc1 Junio C Hamano
2017-04-27 2:55 2% [ANNOUNCE] Git v2.13.0-rc1 Junio C Hamano
2017-05-04 15:15 2% [ANNOUNCE] Git v2.13.0-rc2 Junio C Hamano
2017-05-10 0:03 2% [ANNOUNCE] Git v2.13.0 Junio C Hamano
2017-08-04 16:54 3% [ANNOUNCE] Git v2.14.0 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-10 21:21 6% [PATCH 0/3] fixes for split index mode Thomas Gummerer
2017-12-12 14:10 git svn dcommit error: Cannot accept non-LF line endings in 'svn:log' property Bennett, Brian
2017-12-14 0:20 5% ` [PATCH] git-svn: convert CRLF to LF in commit message to SVN Eric Wong
2017-12-14 20:46 4% ` Bennett, Brian
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-03-16 0:57 3% [ANNOUNCE] Git v2.17.0-rc0 Junio C Hamano
2018-03-28 19:56 2% [ANNOUNCE] Git v2.17.0-rc2 Junio C Hamano
2018-11-01 9:59 What's cooking in git.git (Nov 2018, #01; Thu, 1) Junio C Hamano
2018-11-01 16:07 ` master updated? (was Re: What's cooking in git.git (Nov 2018, #01; Thu, 1)) Derrick Stolee
2018-11-02 0:04 6% ` Junio C Hamano
2018-11-02 5:10 1% What's cooking in git.git (Nov 2018, #02; Fri, 2) Junio C Hamano
2018-11-18 14:20 2% [ANNOUNCE] Git v2.20.0-rc0 Junio C Hamano
2018-11-21 15:20 2% [ANNOUNCE] Git v2.20.0-rc1 Junio C Hamano
2018-12-01 14:58 2% [ANNOUNCE] Git v2.20.0-rc2 Junio C Hamano
2018-12-03 20:45 0% ` Johannes Schindelin
2018-12-09 8:43 2% [ANNOUNCE] Git v2.20.0 Junio C Hamano
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-10-18 6:29 2% [ANNOUNCE] Git v2.24.0-rc0 Junio C Hamano
2019-10-24 6:00 2% [ANNOUNCE] Git v2.24.0-rc1 Junio C Hamano
2019-10-30 7:14 2% [ANNOUNCE] Git v2.24.0-rc2 Junio C Hamano
2019-11-04 5:36 2% [ANNOUNCE] Git v2.24.0 Junio C Hamano
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-10 17:40 ` Jeff King
2020-03-11 5:25 6% ` Elijah Newren
2020-03-11 5:13 [PATCH 0/2] Fix 2.26.0 rebase regression and documentation shortcoming Elijah Newren via GitGitGadget
2020-03-11 15:30 5% ` [PATCH v2 " Elijah Newren via GitGitGadget
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-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-02 19:21 5% Huge push upload despite only having a tiny change Elijah Newren
2020-10-05 22:41 3% [ANNOUNCE] Git v2.29.0-rc0 Junio C Hamano
2020-10-09 15:58 3% [ANNOUNCE] Git v2.29.0-rc1 Junio C Hamano
2020-10-19 18:13 3% [ANNOUNCE] Git v2.29.0 Junio C Hamano
2020-12-14 20:00 3% [ANNOUNCE] Git v2.30.0-rc0 Junio C Hamano
2020-12-19 4:34 3% [ANNOUNCE] Git v2.30.0-rc1 Junio C Hamano
2020-12-28 19:09 3% [ANNOUNCE] Git v2.30.0 Junio C Hamano
2021-02-16 16:31 7% [PATCH 0/1] blame: remove unnecessary use of get_commit_info() Rafael Silva
2021-02-16 18:35 0% ` Derrick Stolee
2021-02-17 14:54 6% ` [PATCH v2 " Rafael Silva
2021-02-17 14:54 6% ` [PATCH v2 1/1] " Rafael Silva
2021-02-16 20:12 4% [PATCH] t/perf: handle worktrees as test repos Jeff King
2021-02-16 21:13 0% ` Johannes Schindelin
2021-02-18 2:11 1% What's cooking in git.git (Feb 2021, #03; Wed, 17) Junio C Hamano
2021-02-26 2:03 2% [ANNOUNCE] Git v2.31.0-rc0 Junio C Hamano
2021-02-26 7:09 [PATCH v2] t/perf worktree improvements Jeff King
2021-02-26 7:11 5% ` [PATCH v2 1/2] t/perf: handle worktrees as test repos Jeff King
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-05-17 7:06 3% [ANNOUNCE] Git v2.32.0-rc0 Junio C Hamano
2021-05-22 14:21 3% [ANNOUNCE] Git v2.32.0-rc1 Junio C Hamano
2021-05-28 6:13 3% [ANNOUNCE] Git v2.32.0-rc2 Junio C Hamano
2021-06-02 8:29 3% [ANNOUNCE] Git v2.32.0-rc3 Junio C Hamano
2021-06-06 12:40 3% [ANNOUNCE] Git v2.32.0 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-23 23:22 2% What's cooking in git.git (Sep 2021, #07; Thu, 23) Junio C Hamano
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-02-24 20:38 [PATCH 0/7] Commit-graph: Generation Number v2 Fixes, v3 implementation Derrick Stolee via GitGitGadget
2022-02-24 20:38 ` [PATCH 3/7] commit-graph: start parsing generation v2 (again) Derrick Stolee via GitGitGadget
2022-02-28 15:18 ` Patrick Steinhardt
2022-02-28 16:23 ` Derrick Stolee
2022-02-28 16:59 ` Patrick Steinhardt
2022-02-28 18:44 ` Derrick Stolee
2022-03-01 9:46 6% ` Patrick Steinhardt
2022-03-01 10:35 0% ` Patrick Steinhardt
2022-03-01 14:06 0% ` Derrick Stolee
2022-03-01 14:53 0% ` Patrick Steinhardt
2022-03-01 0:08 [PATCH 00/13] submodule: convert parts of 'update' to C Glen Choo
2022-03-01 0:08 ` [PATCH 06/13] submodule--helper: get remote names from any repository Glen Choo
2022-03-01 2:46 6% ` Junio C Hamano
2022-03-01 4:26 0% ` Glen Choo
2022-03-01 18:43 [PATCH v6 00/30] Builtin FSMonitor Part 2 Jeff Hostetler via GitGitGadget
2022-03-22 17:59 1% ` [PATCH v7 00/29] " Jeff Hostetler via GitGitGadget
2022-03-24 16:49 2% ` [PATCH v8 00/30] " Jeff Hostetler via GitGitGadget
2022-03-25 18:02 3% ` [PATCH v9 " Jeff Hostetler via GitGitGadget
2022-03-25 19:02 0% ` rsbecker
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-06-14 1:46 3% [ANNOUNCE] Git v2.37.0-rc0 Junio C Hamano
2022-06-18 1:55 3% [ANNOUNCE] Git v2.37.0-rc1 Junio C Hamano
2022-06-22 19:32 3% [ANNOUNCE] Git v2.37.0-rc2 Junio C Hamano
2022-06-27 18:22 3% [ANNOUNCE] Git v2.37.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 4% [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 4% [ANNOUNCE] Git v2.43.0-rc0 Junio C Hamano
2023-11-08 17:33 4% [ANNOUNCE] Git v2.43.0-rc1 Junio C Hamano
2023-11-14 17:25 4% [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-10 19:50 [PATCH v2 0/2] Allow disabling advice shown after merge conflicts Philippe Blain via GitGitGadget
2024-03-16 21:16 3% ` [PATCH v3 " Philippe Blain via GitGitGadget
2024-03-18 16:31 0% ` Junio C Hamano
2024-03-25 10:48 0% ` Phillip Wood
2024-03-25 16:57 0% ` Junio C Hamano
2024-03-18 10:52 4% [PATCH 00/15] refs: introduce `--auto` to pack refs as needed Patrick Steinhardt
2024-04-19 17:14 3% [ANNOUNCE] Git v2.45.0-rc0 Junio C Hamano
2024-04-24 17:07 3% [ANNOUNCE] Git v2.45.0-rc1 Junio C Hamano
2024-04-29 17:12 3% [ANNOUNCE] Git v2.45.0 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).