来源:Git官网 发布日期:2021-10-13 阅读次数:1527 评论:0




更新版本:Git v2.33.1

感知时间:2021-10-13 08:27:26




[ANNOUNCE] Git v2.33.1


From: Junio C Hamano
To: git@vger.kernel.org
Cc: git-packagers@googlegroups.com
Subject: [ANNOUNCE] Git v2.33.1
Date: Tue, 12 Oct 2021 17:18:53 -0700 [thread overview]
Message-ID: (raw)

The latest maintenance release Git v2.33.1 is now available at the
usual places. There is nothing spectacular; just backporting
accumulated fixes that already are merged for the next feature

The tarballs are found at:


The following public repositories all have a copy of the 'v2.33.1'
tag and the 'maint' 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


Git 2.33.1 Release Notes

This primarily is to backport various fixes accumulated during the
development towards Git 2.34, the next feature release.

Fixes since v2.33

* The unicode character width table (used for output alignment) has
been updated.

* Input validation of "git pack-objects --stdin-packs" has been

* Bugfix for common ancestor negotiation recently introduced in "git
push" codepath.

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

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

* "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.

* Recent "diff -m" changes broke "gitk", which has been corrected.

* "git maintenance" scheduler fix for macOS.

* A pathname in an advice message has been made cut-and-paste ready.

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

* 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... " segfaulted, which has been

* 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

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

* Protocol v0 clients can get stuck parsing a malformed feature line.

Also contains various documentation updates and code clean-ups.


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

Bagas Sanjaya (1):
Documentation: fix default directory of git bugreport -o

Carlo Marcelo Arenas Belón (12):
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
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

David Aguilar (1):
difftool: fix symlink-file writing in dir-diff mode

Derrick Stolee (1):
maintenance: skip bootout/bootstrap when plist is registered

Elijah Newren (25):
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
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
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
trace2.h: fix trivial comment typo
merge-ort: fix completely wrong comment

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

Jeff Hostetler (1):
sparse-index: copy dir_hash in ensure_full_index()

Jeff King (13):
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"
logmsg_reencode(): warn when iconv() fails
docs: use "character encoding" to refer to commit-object encoding
t5562: use alarm() to interrupt timed child-wait
strvec: use size_t to store nr and alloc
t1400: avoid SIGPIPE race condition on fifo
clone: handle unborn branch in bare repos
http: match headers case-insensitively when redacting

Joel Klinghed (1):
commit: restore --edit when combined with --fixup

Johannes Schindelin (1):
maintenance: create `launchctl` configuration using a lock file

Johannes Sixt (1):
t9001: PATH must not use Windows-style paths

Jonathan Tan (3):
send-pack: fix push.negotiate with remote helper
send-pack: fix push nego. when remote has refs
fetch: die on invalid --negotiation-tip hash

Josh Steadmon (1):
connect, protocol: log negotiated protocol version

Junio C Hamano (4):
build: catch clang that identifies itself as "$VENDOR clang"
apply: resolve trivial merge without hitting ll-merge with "--3way"
hash-object: prefix_filename() returns allocated memory these days
Git 2.33.1

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

Marvin Häuser (1):
send-email: avoid incorrect header propagation

Matheus Tavares (1):
checkout: make delayed checkout respect --quiet and --no-progress

Matthias Aßhauer (1):
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()

Patrick Steinhardt (1):
update-ref: fix streaming of status updates

Philip Oakley (1):
doc: config, tell readers of `git help --config`

Phillip Wood (7):
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

René Scharfe (10):
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
range-diff: avoid segfault with -I
setup: use xopen and xdup in sanitize_stdfds
refs/files-backend: remove unused open mode parameter
compression: drop write-only core_compression_* variables

SZEDER Gábor (3):
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

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

Taylor Blau (4):
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

Zoker (1):
doc: fix syntax error and the format of printf

Ævar Arnfjörð Bjarmason (20):
pack-objects tests: cover blindspots in stdin handling
pack-objects: fix segfault in --stdin-packs option
bundle doc: rewrite the "DESCRIPTION" section
bundle doc: elaborate on object prerequisites
bundle doc: elaborate on revref restriction
bundle doc: replace "basis" with "prerequsite(s)"
ls-remote: set packet_trace_identity()
rebase: emit one "fatal" in "fatal: fatal: "
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
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
Makefile: clean .depend dirs under COMPUTE_HEADER_DEPENDENCIES != yes

Đ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


Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。







提交评论 您输入的评论有误,请重新输入