Compare commits
3 Commits
v2.12.0-rc
...
v2.4.12
Author | SHA1 | Date | |
---|---|---|---|
4000b40209 | |||
5a4ffdf587 | |||
3ec804490a |
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1,3 +1,3 @@
|
||||
* whitespace=!indent,trail,space
|
||||
*.[ch] whitespace=indent,trail,space diff=cpp
|
||||
*.[ch] whitespace=indent,trail,space
|
||||
*.sh whitespace=indent,trail,space
|
||||
|
34
.gitignore
vendored
34
.gitignore
vendored
@ -118,6 +118,7 @@
|
||||
/git-rebase--merge
|
||||
/git-receive-pack
|
||||
/git-reflog
|
||||
/git-relink
|
||||
/git-remote
|
||||
/git-remote-http
|
||||
/git-remote-https
|
||||
@ -154,7 +155,6 @@
|
||||
/git-status
|
||||
/git-stripspace
|
||||
/git-submodule
|
||||
/git-submodule--helper
|
||||
/git-svn
|
||||
/git-symbolic-ref
|
||||
/git-tag
|
||||
@ -171,13 +171,42 @@
|
||||
/git-verify-tag
|
||||
/git-web--browse
|
||||
/git-whatchanged
|
||||
/git-worktree
|
||||
/git-write-tree
|
||||
/git-core-*/?*
|
||||
/gitweb/GITWEB-BUILD-OPTIONS
|
||||
/gitweb/gitweb.cgi
|
||||
/gitweb/static/gitweb.js
|
||||
/gitweb/static/gitweb.min.*
|
||||
/test-chmtime
|
||||
/test-ctype
|
||||
/test-config
|
||||
/test-date
|
||||
/test-delta
|
||||
/test-dump-cache-tree
|
||||
/test-dump-split-index
|
||||
/test-scrap-cache-tree
|
||||
/test-genrandom
|
||||
/test-hashmap
|
||||
/test-index-version
|
||||
/test-line-buffer
|
||||
/test-match-trees
|
||||
/test-mergesort
|
||||
/test-mktemp
|
||||
/test-parse-options
|
||||
/test-path-utils
|
||||
/test-prio-queue
|
||||
/test-read-cache
|
||||
/test-regex
|
||||
/test-revision-walking
|
||||
/test-run-command
|
||||
/test-sha1
|
||||
/test-sha1-array
|
||||
/test-sigchain
|
||||
/test-string-list
|
||||
/test-subprocess
|
||||
/test-svn-fe
|
||||
/test-urlmatch-normalization
|
||||
/test-wildmatch
|
||||
/common-cmds.h
|
||||
*.tar.gz
|
||||
*.dsc
|
||||
@ -202,6 +231,7 @@
|
||||
/config.mak.autogen
|
||||
/config.mak.append
|
||||
/configure
|
||||
/unicode
|
||||
/tags
|
||||
/TAGS
|
||||
/cscope*
|
||||
|
9
.mailmap
9
.mailmap
@ -33,7 +33,6 @@ Cheng Renquan <crquan@gmail.com>
|
||||
Chris Shoemaker <c.shoemaker@cox.net>
|
||||
Chris Wright <chrisw@sous-sol.org> <chrisw@osdl.org>
|
||||
Cord Seele <cowose@gmail.com> <cowose@googlemail.com>
|
||||
Christian Couder <chriscool@tuxfamily.org> <christian.couder@gmail.com>
|
||||
Christian Stimming <stimming@tuhh.de> <chs@ckiste.goetheallee>
|
||||
Csaba Henk <csaba@gluster.com> <csaba@lowlife.hu>
|
||||
Dan Johnson <computerdruid@gmail.com>
|
||||
@ -47,14 +46,11 @@ David D. Kilzer <ddkilzer@kilzer.net>
|
||||
David Kågedal <davidk@lysator.liu.se>
|
||||
David Reiss <dreiss@facebook.com> <dreiss@dreiss-vmware.(none)>
|
||||
David S. Miller <davem@davemloft.net>
|
||||
David Turner <novalis@novalis.org> <dturner@twopensource.com>
|
||||
David Turner <novalis@novalis.org> <dturner@twosigma.com>
|
||||
Deskin Miller <deskinm@umich.edu>
|
||||
Dirk Süsserott <newsletter@dirk.my1.cc>
|
||||
Eric Blake <eblake@redhat.com> <ebb9@byu.net>
|
||||
Eric Hanchrow <eric.hanchrow@gmail.com> <offby1@blarg.net>
|
||||
Eric S. Raymond <esr@thyrsus.com>
|
||||
Eric Wong <e@80x24.org> <normalperson@yhbt.net>
|
||||
Erik Faye-Lund <kusmabite@gmail.com> <kusmabite@googlemail.com>
|
||||
Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com> <eyvind-git@orakel.ntnu.no>
|
||||
Florian Achleitner <florian.achleitner.2.6.31@gmail.com> <florian.achleitner2.6.31@gmail.com>
|
||||
@ -190,10 +186,8 @@ Philip Jägenstedt <philip@foolip.org> <philip.jagenstedt@gmail.com>
|
||||
Philipp A. Hartmann <pah@qo.cx> <ph@sorgh.de>
|
||||
Philippe Bruhat <book@cpan.org>
|
||||
Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
|
||||
Ramsay Jones <ramsay@ramsayjones.plus.com> <ramsay@ramsay1.demon.co.uk>
|
||||
Ramsay Allan Jones <ramsay@ramsay1.demon.co.uk>
|
||||
René Scharfe <l.s.r@web.de> <rene.scharfe@lsrfire.ath.cx>
|
||||
Richard Hansen <rhansen@rhansen.org> <hansenr@google.com>
|
||||
Richard Hansen <rhansen@rhansen.org> <rhansen@bbn.com>
|
||||
Robert Fitzsimons <robfitz@273k.net>
|
||||
Robert Shearman <robertshearman@gmail.com> <rob@codeweavers.com>
|
||||
Robert Zeh <robert.a.zeh@gmail.com>
|
||||
@ -225,7 +219,6 @@ Steven Walter <stevenrwalter@gmail.com> <swalter@lexmark.com>
|
||||
Steven Walter <stevenrwalter@gmail.com> <swalter@lpdev.prtdev.lexmark.com>
|
||||
Sven Verdoolaege <skimo@kotnet.org> <Sven.Verdoolaege@cs.kuleuven.ac.be>
|
||||
Sven Verdoolaege <skimo@kotnet.org> <skimo@liacs.nl>
|
||||
SZEDER Gábor <szeder.dev@gmail.com> <szeder@ira.uka.de>
|
||||
Tay Ray Chuan <rctay89@gmail.com>
|
||||
Ted Percival <ted@midg3t.net> <ted.percival@quest.com>
|
||||
Theodore Ts'o <tytso@mit.edu>
|
||||
|
115
.travis.yml
115
.travis.yml
@ -1,115 +0,0 @@
|
||||
language: c
|
||||
|
||||
sudo: false
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/travis-cache
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- language-pack-is
|
||||
- git-svn
|
||||
- apache2
|
||||
|
||||
env:
|
||||
global:
|
||||
- DEVELOPER=1
|
||||
# The Linux build installs the defined dependency versions below.
|
||||
# The OS X build installs the latest available versions. Keep that
|
||||
# in mind when you encounter a broken OS X build!
|
||||
- LINUX_P4_VERSION="16.2"
|
||||
- LINUX_GIT_LFS_VERSION="1.5.2"
|
||||
- DEFAULT_TEST_TARGET=prove
|
||||
- GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
|
||||
- GIT_TEST_OPTS="--verbose-log"
|
||||
- GIT_TEST_CLONE_2GB=YesPlease
|
||||
# t9810 occasionally fails on Travis CI OS X
|
||||
# t9816 occasionally fails with "TAP out of sequence errors" on Travis CI OS X
|
||||
- GIT_SKIP_TESTS="t9810 t9816"
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- env: Documentation
|
||||
os: linux
|
||||
compiler: clang
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- asciidoc
|
||||
- xmlto
|
||||
before_install:
|
||||
before_script:
|
||||
script: ci/test-documentation.sh
|
||||
after_failure:
|
||||
|
||||
before_install:
|
||||
- >
|
||||
case "${TRAVIS_OS_NAME:-linux}" in
|
||||
linux)
|
||||
export GIT_TEST_HTTPD=YesPlease
|
||||
|
||||
mkdir --parents custom/p4
|
||||
pushd custom/p4
|
||||
wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4d
|
||||
wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4
|
||||
chmod u+x p4d
|
||||
chmod u+x p4
|
||||
export PATH="$(pwd):$PATH"
|
||||
popd
|
||||
mkdir --parents custom/git-lfs
|
||||
pushd custom/git-lfs
|
||||
wget --quiet https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz
|
||||
tar --extract --gunzip --file "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
|
||||
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
|
||||
export PATH="$(pwd):$PATH"
|
||||
popd
|
||||
;;
|
||||
osx)
|
||||
brew update --quiet
|
||||
# Uncomment this if you want to run perf tests:
|
||||
# brew install gnu-time
|
||||
brew install git-lfs gettext
|
||||
brew link --force gettext
|
||||
brew install caskroom/cask/perforce
|
||||
;;
|
||||
esac;
|
||||
echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)";
|
||||
p4d -V | grep Rev.;
|
||||
echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)";
|
||||
p4 -V | grep Rev.;
|
||||
echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)";
|
||||
git-lfs version;
|
||||
mkdir -p $HOME/travis-cache;
|
||||
ln -s $HOME/travis-cache/.prove t/.prove;
|
||||
|
||||
before_script: make --jobs=2
|
||||
|
||||
script: make --quiet test
|
||||
|
||||
after_failure:
|
||||
- >
|
||||
: '<-- Click here to see detailed test output! ';
|
||||
for TEST_EXIT in t/test-results/*.exit;
|
||||
do
|
||||
if [ "$(cat "$TEST_EXIT")" != "0" ];
|
||||
then
|
||||
TEST_OUT="${TEST_EXIT%exit}out";
|
||||
echo "------------------------------------------------------------------------";
|
||||
echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)";
|
||||
echo "------------------------------------------------------------------------";
|
||||
cat "${TEST_OUT}";
|
||||
fi;
|
||||
done;
|
||||
|
||||
notifications:
|
||||
email: false
|
@ -171,11 +171,6 @@ For C programs:
|
||||
|
||||
- We try to keep to at most 80 characters per line.
|
||||
|
||||
- As a Git developer we assume you have a reasonably modern compiler
|
||||
and we recommend you to enable the DEVELOPER makefile knob to
|
||||
ensure your patch is clear of all compiler warnings we care about,
|
||||
by e.g. "echo DEVELOPER=1 >>config.mak".
|
||||
|
||||
- We try to support a wide range of C compilers to compile Git with,
|
||||
including old ones. That means that you should not use C99
|
||||
initializers, even if a lot of compilers grok it.
|
||||
@ -206,38 +201,11 @@ For C programs:
|
||||
x = 1;
|
||||
}
|
||||
|
||||
is frowned upon. But there are a few exceptions:
|
||||
|
||||
- When the statement extends over a few lines (e.g., a while loop
|
||||
with an embedded conditional, or a comment). E.g.:
|
||||
|
||||
while (foo) {
|
||||
if (x)
|
||||
one();
|
||||
else
|
||||
two();
|
||||
}
|
||||
|
||||
if (foo) {
|
||||
/*
|
||||
* This one requires some explanation,
|
||||
* so we're better off with braces to make
|
||||
* it obvious that the indentation is correct.
|
||||
*/
|
||||
doit();
|
||||
}
|
||||
|
||||
- When there are multiple arms to a conditional and some of them
|
||||
require braces, enclose even a single line block in braces for
|
||||
consistency. E.g.:
|
||||
|
||||
if (foo) {
|
||||
doit();
|
||||
} else {
|
||||
one();
|
||||
two();
|
||||
three();
|
||||
}
|
||||
is frowned upon. A gray area is when the statement extends
|
||||
over a few lines, and/or you have a lengthy comment atop of
|
||||
it. Also, like in the Linux kernel, if there is a long list
|
||||
of "else if" statements, it can make sense to add braces to
|
||||
single line blocks.
|
||||
|
||||
- We try to avoid assignments in the condition of an "if" statement.
|
||||
|
||||
@ -553,20 +521,12 @@ Writing Documentation:
|
||||
modifying paragraphs or option/command explanations that contain options
|
||||
or commands:
|
||||
|
||||
Literal examples (e.g. use of command-line options, command names,
|
||||
branch names, configuration and environment variables) must be
|
||||
typeset in monospace (i.e. wrapped with backticks):
|
||||
Literal examples (e.g. use of command-line options, command names, and
|
||||
configuration variables) are typeset in monospace, and if you can use
|
||||
`backticks around word phrases`, do so.
|
||||
`--pretty=oneline`
|
||||
`git rev-list`
|
||||
`remote.pushDefault`
|
||||
`GIT_DIR`
|
||||
`HEAD`
|
||||
|
||||
An environment variable must be prefixed with "$" only when referring to its
|
||||
value and not when referring to the variable itself, in this case there is
|
||||
nothing to add except the backticks:
|
||||
`GIT_DIR` is specified
|
||||
`$GIT_DIR/hooks/pre-receive`
|
||||
|
||||
Word phrases enclosed in `backtick characters` are rendered literally
|
||||
and will not be further expanded. The use of `backticks` to achieve the
|
||||
|
@ -76,7 +76,6 @@ TECH_DOCS += technical/protocol-common
|
||||
TECH_DOCS += technical/racy-git
|
||||
TECH_DOCS += technical/send-pack-pipeline
|
||||
TECH_DOCS += technical/shallow
|
||||
TECH_DOCS += technical/signature-format
|
||||
TECH_DOCS += technical/trivial-merge
|
||||
SP_ARTICLES += $(TECH_DOCS)
|
||||
SP_ARTICLES += technical/api-index
|
||||
@ -120,7 +119,6 @@ INSTALL_INFO = install-info
|
||||
DOCBOOK2X_TEXI = docbook2x-texi
|
||||
DBLATEX = dblatex
|
||||
ASCIIDOC_DBLATEX_DIR = /etc/asciidoc/dblatex
|
||||
DBLATEX_COMMON = -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty
|
||||
ifndef PERL_PATH
|
||||
PERL_PATH = /usr/bin/perl
|
||||
endif
|
||||
@ -148,7 +146,7 @@ else
|
||||
ASCIIDOC_EXTRA += -a git-asciidoc-no-roff
|
||||
endif
|
||||
endif
|
||||
ifndef NO_MAN_BOLD_LITERAL
|
||||
ifdef MAN_BOLD_LITERAL
|
||||
XMLTO_EXTRA += -m manpage-bold-literal.xsl
|
||||
endif
|
||||
ifdef DOCBOOK_SUPPRESS_SP
|
||||
@ -174,16 +172,6 @@ ifdef GNU_ROFF
|
||||
XMLTO_EXTRA += -m manpage-quote-apos.xsl
|
||||
endif
|
||||
|
||||
ifdef USE_ASCIIDOCTOR
|
||||
ASCIIDOC = asciidoctor
|
||||
ASCIIDOC_CONF =
|
||||
ASCIIDOC_HTML = xhtml5
|
||||
ASCIIDOC_DOCBOOK = docbook45
|
||||
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
||||
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
|
||||
DBLATEX_COMMON =
|
||||
endif
|
||||
|
||||
SHELL_PATH ?= $(SHELL)
|
||||
# Shell quote;
|
||||
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
|
||||
@ -216,7 +204,6 @@ ifndef V
|
||||
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
||||
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
||||
QUIET_GEN = @echo ' ' GEN $@;
|
||||
QUIET_LINT = @echo ' ' LINT $@;
|
||||
QUIET_STDERR = 2> /dev/null
|
||||
QUIET_SUBDIR0 = +@subdir=
|
||||
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
||||
@ -348,7 +335,7 @@ manpage-base-url.xsl: manpage-base-url.xsl.in
|
||||
|
||||
user-manual.xml: user-manual.txt user-manual.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_XML) -d book -o $@+ $< && \
|
||||
$(TXT_TO_XML) -d article -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
technical/api-index.txt: technical/api-index-skel.txt \
|
||||
@ -379,14 +366,13 @@ user-manual.texi: user-manual.xml
|
||||
|
||||
user-manual.pdf: user-manual.xml
|
||||
$(QUIET_DBLATEX)$(RM) $@+ $@ && \
|
||||
$(DBLATEX) -o $@+ $(DBLATEX_COMMON) $< && \
|
||||
$(DBLATEX) -o $@+ -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty $< && \
|
||||
mv $@+ $@
|
||||
|
||||
gitman.texi: $(MAN_XML) cat-texi.perl texi.xsl
|
||||
gitman.texi: $(MAN_XML) cat-texi.perl
|
||||
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||
($(foreach xml,$(sort $(MAN_XML)),xsltproc -o $(xml)+ texi.xsl $(xml) && \
|
||||
$(DOCBOOK2X_TEXI) --encoding=UTF-8 --to-stdout $(xml)+ && \
|
||||
rm $(xml)+ &&) true) > $@++ && \
|
||||
($(foreach xml,$(MAN_XML),$(DOCBOOK2X_TEXI) --encoding=UTF-8 \
|
||||
--to-stdout $(xml) &&) true) > $@++ && \
|
||||
$(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
|
||||
rm $@++ && \
|
||||
mv $@+ $@
|
||||
@ -441,7 +427,4 @@ quick-install-html: require-htmlrepo
|
||||
print-man1:
|
||||
@for i in $(MAN1_TXT); do echo $$i; done
|
||||
|
||||
lint-docs::
|
||||
$(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl
|
||||
|
||||
.PHONY: FORCE
|
||||
|
@ -84,7 +84,7 @@ Updates since v1.7.6
|
||||
logic used by "git diff" to determine the hunk header.
|
||||
|
||||
* Invoking the low-level "git http-fetch" without "-a" option (which
|
||||
git itself never did--normal users should not have to worry about
|
||||
git itself never did---normal users should not have to worry about
|
||||
this) is now deprecated.
|
||||
|
||||
* The "--decorate" option to "git log" and its family learned to
|
||||
|
@ -1,5 +1,5 @@
|
||||
Git v1.8.3.1 Release Notes
|
||||
==========================
|
||||
========================
|
||||
|
||||
Fixes since v1.8.3
|
||||
------------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
Git v1.8.4.1 Release Notes
|
||||
==========================
|
||||
========================
|
||||
|
||||
Fixes since v1.8.4
|
||||
------------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
Git v1.8.4.2 Release Notes
|
||||
==========================
|
||||
========================
|
||||
|
||||
Fixes since v1.8.4.1
|
||||
--------------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
Git v1.8.4.3 Release Notes
|
||||
==========================
|
||||
========================
|
||||
|
||||
Fixes since v1.8.4.2
|
||||
--------------------
|
||||
|
@ -1,5 +1,5 @@
|
||||
Git v1.8.4.4 Release Notes
|
||||
==========================
|
||||
========================
|
||||
|
||||
Fixes since v1.8.4.3
|
||||
--------------------
|
||||
|
@ -177,7 +177,7 @@ Performance, Internal Implementation, etc.
|
||||
* The naming convention of the packfiles has been updated; it used to
|
||||
be based on the enumeration of names of the objects that are
|
||||
contained in the pack, but now it also depends on how the packed
|
||||
result is represented--packing the same set of objects using
|
||||
result is represented---packing the same set of objects using
|
||||
different settings (or delta order) would produce a pack with
|
||||
different name.
|
||||
|
||||
|
@ -1,675 +0,0 @@
|
||||
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).
|
@ -1,131 +0,0 @@
|
||||
Git v2.10.1 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.10
|
||||
-----------------
|
||||
|
||||
* 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.
|
||||
|
||||
* 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 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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").
|
||||
|
||||
* "git add --chmod=+x" added recently lacked documentation, which has
|
||||
been corrected.
|
||||
|
||||
* "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.
|
||||
|
||||
* "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.
|
||||
|
||||
* Documentation around tools to import from CVS was fairly outdated.
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -1,111 +0,0 @@
|
||||
Git v2.10.2 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.10.1
|
||||
-------------------
|
||||
|
||||
* The code that parses the format parameter of for-each-ref command
|
||||
has seen a micro-optimization.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Doc update to clarify what "log -3 --reverse" does.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Recent git allows submodule.<name>.branch to use a special token
|
||||
"." instead of the branch name; the documentation has been updated
|
||||
to describe it.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -1,48 +0,0 @@
|
||||
Git v2.10.3 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.10.2
|
||||
-------------------
|
||||
|
||||
* Extract a small helper out of the function that reads the authors
|
||||
script file "git am" internally uses.
|
||||
This by itself is not useful until a second caller appears in the
|
||||
future for "rebase -i" helper.
|
||||
|
||||
* 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".
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Fix for a racy false-positive test failure.
|
||||
|
||||
* Portability update and workaround for builds on recent Mac OS X.
|
||||
|
||||
* Update to the test framework made in 2.9 timeframe broke running
|
||||
the tests under valgrind, which has been fixed.
|
||||
|
||||
* Improve the rule to convert "unsigned char [20]" into "struct
|
||||
object_id *" in contrib/coccinelle/
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -1,593 +0,0 @@
|
||||
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).
|
@ -1,168 +0,0 @@
|
||||
Git v2.11.1 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.11
|
||||
-----------------
|
||||
|
||||
* The default Travis-CI configuration specifies newer P4 and GitLFS.
|
||||
|
||||
* The character width table has been updated to match Unicode 9.0
|
||||
|
||||
* Update the isatty() emulation for Windows by updating the previous
|
||||
hack that depended on internals of (older) MSVC runtime.
|
||||
|
||||
* "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.
|
||||
|
||||
* Fix a corner case in merge-recursive regression that crept in
|
||||
during 2.10 development cycle.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Update the procedure to generate "tags" for developer support.
|
||||
|
||||
* Update the definition of the MacOSX test environment used by
|
||||
TravisCI.
|
||||
|
||||
* A few git-svn updates.
|
||||
|
||||
* 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.
|
||||
|
||||
* Tighten a test to avoid mistaking an extended ERE regexp engine as
|
||||
a PRE regexp engine.
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
@ -1,461 +0,0 @@
|
||||
Git 2.12 Release Notes
|
||||
======================
|
||||
|
||||
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).
|
@ -7,7 +7,7 @@ Fixes since v2.3.9
|
||||
* xdiff code we use to generate diffs is not prepared to handle
|
||||
extremely large files. It uses "int" in many places, which can
|
||||
overflow if we have a very large number of lines or even bytes in
|
||||
our input files, for example. Cap the input size to somewhere
|
||||
our input files, for example. Cap the input size to soemwhere
|
||||
around 1GB for now.
|
||||
|
||||
* Some protocols (like git-remote-ext) can execute arbitrary code
|
||||
|
@ -7,7 +7,7 @@ Fixes since v2.4.9
|
||||
* xdiff code we use to generate diffs is not prepared to handle
|
||||
extremely large files. It uses "int" in many places, which can
|
||||
overflow if we have a very large number of lines or even bytes in
|
||||
our input files, for example. Cap the input size to somewhere
|
||||
our input files, for example. Cap the input size to soemwhere
|
||||
around 1GB for now.
|
||||
|
||||
* Some protocols (like git-remote-ext) can execute arbitrary code
|
||||
|
12
Documentation/RelNotes/2.4.12.txt
Normal file
12
Documentation/RelNotes/2.4.12.txt
Normal file
@ -0,0 +1,12 @@
|
||||
Git v2.4.12 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.4.11
|
||||
-------------------
|
||||
|
||||
* "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").
|
@ -1,563 +0,0 @@
|
||||
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).
|
@ -1,65 +0,0 @@
|
||||
Git v2.5.1 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.5
|
||||
----------------
|
||||
|
||||
* Running an aliased command from a subdirectory when the .git thing
|
||||
in the working tree is a gitfile pointing elsewhere did not work.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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".
|
||||
|
||||
* An experimental "untracked cache" feature used uname(2) in a
|
||||
slightly unportable way.
|
||||
|
||||
* "sparse checkout" misbehaved for a path that is excluded from the
|
||||
checkout when switching between branches that differ at the path.
|
||||
|
||||
* The low-level "git send-pack" did not honor 'user.signingkey'
|
||||
configuration variable when sending a signed-push.
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* "git clone $URL" in recent releases of Git contains a regression in
|
||||
the code that invents a new repository name incorrectly based on
|
||||
the $URL. This has been corrected.
|
||||
(merge db2e220 jk/guess-repo-name-regression-fix 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).
|
||||
|
||||
* "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.
|
||||
|
||||
* pipe() emulation used in Git for Windows looked at a wrong variable
|
||||
when checking for an error from an _open_osfhandle() call.
|
||||
|
||||
Also contains typofixes, documentation updates and trivial code
|
||||
clean-ups.
|
@ -1,63 +0,0 @@
|
||||
Git v2.5.2 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.5.1
|
||||
------------------
|
||||
|
||||
* "git init empty && git -C empty log" said "bad default revision 'HEAD'",
|
||||
which was found to be a bit confusing to new users.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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).
|
||||
|
||||
* "git archive" did not use zip64 extension when creating an archive
|
||||
with more than 64k entries, which nobody should need, right ;-)?
|
||||
|
||||
* The code in "multiple-worktree" support that attempted to recover
|
||||
from an inconsistent state updated an incorrect file.
|
||||
|
||||
* "git rev-list" does not take "--notes" option, but did not complain
|
||||
when one is given.
|
||||
|
||||
* 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.
|
||||
|
||||
* We recently rewrote one of the build scripts in Perl, which made it
|
||||
necessary to have Perl to build Git. Reduced Perl dependency by
|
||||
rewriting it again using sed.
|
||||
|
||||
* t1509 test that requires a dedicated VM environment had some
|
||||
bitrot, which has been corrected.
|
||||
|
||||
* strbuf_read() used to have one extra iteration (and an unnecessary
|
||||
strbuf_grow() of 8kB), which was eliminated.
|
||||
|
||||
* 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().
|
||||
|
||||
* 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.
|
||||
|
||||
* An off-by-one error made "git remote" to mishandle a remote with a
|
||||
single letter nickname.
|
||||
|
||||
* A handful of codepaths that used to use fixed-sized arrays to hold
|
||||
pathnames have been corrected to use strbuf and other mechanisms to
|
||||
allow longer pathnames without fearing overflows.
|
||||
|
||||
Also contains typofixes, documentation updates and trivial code
|
||||
clean-ups.
|
@ -1,17 +0,0 @@
|
||||
Git v2.5.3 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.5.2
|
||||
------------------
|
||||
|
||||
* The experimental untracked-cache feature were buggy when paths with
|
||||
a few levels of subdirectories are involved.
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains typofixes, documentation updates and trivial code
|
||||
clean-ups.
|
@ -1,18 +0,0 @@
|
||||
Git v2.5.4 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.5.4
|
||||
------------------
|
||||
|
||||
* xdiff code we use to generate diffs is not prepared to handle
|
||||
extremely large files. It uses "int" in many places, which can
|
||||
overflow if we have a very large number of lines or even bytes in
|
||||
our input files, for example. Cap the input size to somewhere
|
||||
around 1GB for now.
|
||||
|
||||
* Some protocols (like git-remote-ext) can execute arbitrary code
|
||||
found in the URL. The URLs that submodules use may come from
|
||||
arbitrary sources (e.g., .gitmodules files in a remote
|
||||
repository), and can hurt those who blindly enable recursive
|
||||
fetch. Restrict the allowed protocols to well known and safe
|
||||
ones.
|
@ -1,11 +0,0 @@
|
||||
Git v2.5.5 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.5.4
|
||||
------------------
|
||||
|
||||
* Bugfix patches were backported from the 'master' front to plug heap
|
||||
corruption holes, to catch integer overflow in the computation of
|
||||
pathname lengths, and to get rid of the name_path API. Both of
|
||||
these would have resulted in writing over an under-allocated buffer
|
||||
when formulating pathnames while tree traversal.
|
@ -1,370 +0,0 @@
|
||||
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).
|
@ -1,18 +0,0 @@
|
||||
Git v2.6.1 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.6
|
||||
----------------
|
||||
|
||||
* xdiff code we use to generate diffs is not prepared to handle
|
||||
extremely large files. It uses "int" in many places, which can
|
||||
overflow if we have a very large number of lines or even bytes in
|
||||
our input files, for example. Cap the input size to somewhere
|
||||
around 1GB for now.
|
||||
|
||||
* Some protocols (like git-remote-ext) can execute arbitrary code
|
||||
found in the URL. The URLs that submodules use may come from
|
||||
arbitrary sources (e.g., .gitmodules files in a remote
|
||||
repository), and can hurt those who blindly enable recursive
|
||||
fetch. Restrict the allowed protocols to well known and safe
|
||||
ones.
|
@ -1,65 +0,0 @@
|
||||
Git v2.6.2 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.6.1
|
||||
------------------
|
||||
|
||||
* 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.
|
||||
|
||||
* A test script for the HTTP service had a timing dependent bug,
|
||||
which was fixed.
|
||||
|
||||
* Performance-measurement tests did not work without an installed Git.
|
||||
|
||||
* 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.
|
||||
|
||||
* When "git am" was rewritten as a built-in, it stopped paying
|
||||
attention to user.signingkey, which was fixed.
|
||||
|
||||
* After "git checkout --detach", "git status" reported a fairly
|
||||
useless "HEAD detached at HEAD", instead of saying at which exact
|
||||
commit.
|
||||
|
||||
* "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, which is now fixed.
|
||||
|
||||
* Description of the "log.follow" configuration variable in "git log"
|
||||
documentation is now also copied to "git config" documentation.
|
||||
|
||||
* 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.
|
||||
|
||||
* Customization to change the behaviour with "make -w" and "make -s"
|
||||
in our Makefile was broken when they were used together.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* "git blame --first-parent v1.0..v2.0" was not rejected but did not
|
||||
limit the blame to commits on the first parent chain.
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains typofixes, documentation updates and trivial code
|
||||
clean-ups.
|
@ -1,111 +0,0 @@
|
||||
Git v2.6.3 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.6.2
|
||||
------------------
|
||||
|
||||
* The error message from "git blame --contents --reverse" incorrectly
|
||||
talked about "--contents --children".
|
||||
|
||||
* "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 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.
|
||||
|
||||
* When the "git am" command was reimplemented in C, "git am -3" had a
|
||||
small regression where it is aborted in its error handling codepath
|
||||
when underlying merge-recursive failed in some ways.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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 submodule code has been taught to work better with separate
|
||||
work trees created via "git worktree add".
|
||||
|
||||
* When "git gc --auto" is backgrounded, its diagnosis message is
|
||||
lost. It now is saved to a file in $GIT_DIR and is shown next time
|
||||
the "gc --auto" is run.
|
||||
|
||||
* Work around "git p4" failing when the P4 depot records the contents
|
||||
in UTF-16 without UTF-16 BOM.
|
||||
|
||||
* Recent update to "rebase -i" that tries to sanity check the edited
|
||||
insn sheet before it uses it has become 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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 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.
|
||||
|
||||
* 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 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").
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* "git --literal-pathspecs add -u/-A" without any command line
|
||||
argument misbehaved ever since Git 2.0.
|
||||
|
||||
* 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 imap-send" did not compile well with older version of cURL library.
|
||||
|
||||
* The linkage order of libraries was wrong in places around libcurl.
|
||||
|
||||
* It was not possible to use a repository-lookalike created by "git
|
||||
worktree add" as a local source of "git clone".
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* "git status --branch --short" accessed beyond the constant string
|
||||
"HEAD", which has been corrected.
|
||||
|
||||
* "git daemon" uses "run_command()" without "finish_command()", so it
|
||||
needs to release resources itself, which it forgot to do.
|
||||
|
||||
Also contains typofixes, documentation updates and trivial code
|
||||
clean-ups.
|
@ -1,63 +0,0 @@
|
||||
Git v2.6.4 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.6.3
|
||||
------------------
|
||||
|
||||
* The "configure" script did not test for -lpthread correctly, which
|
||||
upset some linkers.
|
||||
|
||||
* Add support for talking http/https over socks proxy.
|
||||
|
||||
* Portability fix for Windows, which may rewrite $SHELL variable using
|
||||
non-POSIX paths.
|
||||
|
||||
* We now consistently allow all hooks to ignore their standard input,
|
||||
rather than having git complain of SIGPIPE.
|
||||
|
||||
* Fix shell quoting in contrib script.
|
||||
|
||||
* Test portability fix for a topic in v2.6.1.
|
||||
|
||||
* Allow tilde-expansion in some http config variables.
|
||||
|
||||
* Give a useful special case "diff/show --word-diff-regex=." as an
|
||||
example in the documentation.
|
||||
|
||||
* Fix for a corner case in filter-branch.
|
||||
|
||||
* Make git-p4 work on a detached head.
|
||||
|
||||
* Documentation clarification for "check-ignore" without "--verbose".
|
||||
|
||||
* Just like the working tree is cleaned up when the user cancelled
|
||||
submission in P4Submit.applyCommit(), clean up the mess if "p4
|
||||
submit" fails.
|
||||
|
||||
* Having a leftover .idx file without corresponding .pack file in
|
||||
the repository hurts performance; "git gc" learned to prune them.
|
||||
|
||||
* 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.
|
||||
|
||||
* There was no way to defeat a configured rebase.autostash variable
|
||||
from the command line, as "git rebase --no-autostash" was missing.
|
||||
|
||||
* Allow "git interpret-trailers" to run outside of a Git repository.
|
||||
|
||||
* Produce correct "dirty" marker for shell prompts, even when we
|
||||
are on an orphan or an unborn branch.
|
||||
|
||||
* Some corner cases have been fixed in string-matching done in "git
|
||||
status".
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains typofixes, documentation updates and trivial code
|
||||
clean-ups.
|
@ -1,58 +0,0 @@
|
||||
Git v2.6.5 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.6.4
|
||||
------------------
|
||||
|
||||
* 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.
|
||||
|
||||
* Update "git subtree" (in contrib/) so that it can take whitespaces
|
||||
in the pathnames, not only in the in-tree pathname but the name of
|
||||
the directory that the repository is in.
|
||||
|
||||
* Cosmetic improvement to lock-file error messages.
|
||||
|
||||
* mark_tree_uninteresting() has code to handle the case where it gets
|
||||
passed a NULL pointer in its 'tree' parameter, but the function had
|
||||
'object = &tree->object' assignment before checking if tree is
|
||||
NULL. This gives a compiler an excuse to declare that tree will
|
||||
never be NULL and apply a wrong optimization. Avoid it.
|
||||
|
||||
* 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 exit code of git-fsck did not reflect some types of errors
|
||||
found in packed objects, which has been corrected.
|
||||
|
||||
* The completion script (in contrib/) used to list "git column"
|
||||
(which is not an end-user facing command) as one of the choices
|
||||
|
||||
* Improve error reporting when SMTP TLS fails.
|
||||
|
||||
* 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.
|
||||
|
||||
* "git symbolic-ref" forgot to report a failure with its exit status.
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains typofixes, documentation updates and trivial code
|
||||
clean-ups.
|
@ -1,11 +0,0 @@
|
||||
Git v2.6.6 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.6.5
|
||||
------------------
|
||||
|
||||
* Bugfix patches were backported from the 'master' front to plug heap
|
||||
corruption holes, to catch integer overflow in the computation of
|
||||
pathname lengths, and to get rid of the name_path API. Both of
|
||||
these would have resulted in writing over an under-allocated buffer
|
||||
when formulating pathnames while tree traversal.
|
@ -1,414 +0,0 @@
|
||||
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.
|
@ -1,87 +0,0 @@
|
||||
Git v2.7.1 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.7
|
||||
----------------
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Drop a few old "todo" items by deciding that the change one of them
|
||||
suggests is not such a good idea, and doing the change the other
|
||||
one suggested to do.
|
||||
|
||||
* Documentation for "git fetch --depth" has been updated for clarity.
|
||||
|
||||
* The command line completion learned a handful of additional options
|
||||
and command specific syntax.
|
||||
|
||||
Also includes a handful of documentation and test updates.
|
@ -1,41 +0,0 @@
|
||||
Git v2.7.2 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.7.1
|
||||
------------------
|
||||
|
||||
* 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 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.
|
||||
|
||||
* "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 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
Also includes tiny documentation and test updates.
|
@ -1,62 +0,0 @@
|
||||
Git v2.7.3 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.7.2
|
||||
------------------
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Handling of errors while writing into our internal asynchronous
|
||||
process has been made more robust, which reduces flakiness in our
|
||||
tests.
|
||||
|
||||
* "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.
|
||||
|
||||
* "git rev-parse --git-common-dir" used in the worktree feature
|
||||
misbehaved when run from a subdirectory.
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* The memory ownership rule of fill_textconv() API, which was a bit
|
||||
tricky, has been documented a bit better.
|
||||
|
||||
* The documentation did not clearly state that the 'simple' mode is
|
||||
now the default for "git push" when push.default configuration is
|
||||
not set.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
Also includes documentation and test updates.
|
@ -1,11 +0,0 @@
|
||||
Git v2.7.4 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.7.3
|
||||
------------------
|
||||
|
||||
* Bugfix patches were backported from the 'master' front to plug heap
|
||||
corruption holes, to catch integer overflow in the computation of
|
||||
pathname lengths, and to get rid of the name_path API. Both of
|
||||
these would have resulted in writing over an under-allocated buffer
|
||||
when formulating pathnames while tree traversal.
|
@ -1,439 +0,0 @@
|
||||
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).
|
@ -1,9 +0,0 @@
|
||||
Git v2.8.1 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.8
|
||||
----------------
|
||||
|
||||
* "make rpmbuild" target was broken as its input, git.spec.in, was
|
||||
not updated to match a file it describes that has been renamed
|
||||
recently. This has been fixed.
|
@ -1,70 +0,0 @@
|
||||
Git v2.8.2 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.8.1
|
||||
------------------
|
||||
|
||||
* 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.
|
||||
|
||||
* Bunch of tests on "git clone" has been renumbered for better
|
||||
organization.
|
||||
|
||||
* The tests that involve running httpd leaked the system-wide
|
||||
configuration in /etc/gitconfig to the tested environment.
|
||||
|
||||
* "index-pack --keep=<msg>" was broken since v2.1.0 timeframe.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* "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).
|
||||
|
||||
* Build updates for MSVC.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -1,101 +0,0 @@
|
||||
Git v2.8.3 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.8.2
|
||||
------------------
|
||||
|
||||
* "git send-email" now uses a more readable timestamps when
|
||||
formulating a message ID.
|
||||
|
||||
* 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.
|
||||
|
||||
* When "git worktree" feature is in use, "git branch -d" allowed
|
||||
deletion of a branch that is checked out in another worktree
|
||||
|
||||
* 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 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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
|
||||
and http://thread.gmane.org/gmane.comp.version-control.git/275680.
|
||||
|
||||
* "git replace -e" did not honour "core.editor" configuration.
|
||||
|
||||
* 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.
|
||||
|
||||
* "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 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.
|
||||
|
||||
* 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 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.
|
||||
|
||||
* A question by "git send-email" to ask the identity of the sender
|
||||
has been updated.
|
||||
|
||||
* Recent update to Git LFS broke "git p4" by changing the output from
|
||||
its "lfs pointer" subcommand.
|
||||
|
||||
* Some multi-byte encoding can have a backslash byte as a later part
|
||||
of one letter, which would confuse "highlight" filter used in
|
||||
gitweb.
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -1,69 +0,0 @@
|
||||
Git v2.8.4 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.8.3
|
||||
------------------
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Portability enhancement for "rebase -i" to help platforms whose
|
||||
shell does not like "for i in <empty>" (which is not POSIX-kosher).
|
||||
|
||||
* "git fsck" learned to catch NUL byte in a commit object as
|
||||
potential error and warn.
|
||||
|
||||
* CI test was taught to build documentation pages.
|
||||
|
||||
* Many 'linkgit:<git documentation page>' references were broken,
|
||||
which are all fixed with this.
|
||||
|
||||
* "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."
|
||||
|
||||
* 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.
|
||||
|
||||
* "http.cookieFile" configuration variable clearly wants a pathname,
|
||||
but we forgot to treat it as such by e.g. applying tilde expansion.
|
||||
|
||||
* When de-initialising all submodules, "git submodule deinit" gave a
|
||||
faulty recommendation to use "git submodule deinit .", which would
|
||||
result in a strange error message in a pathological corner case.
|
||||
This has been corrected to suggest "submodule deinit --all" instead.
|
||||
|
||||
* 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.
|
||||
|
||||
* A couple of bugs around core.autocrlf have been fixed.
|
||||
|
||||
* "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".
|
||||
|
||||
|
||||
Also contains other minor documentation updates and code clean-ups.
|
@ -1,512 +0,0 @@
|
||||
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).
|
@ -1,117 +0,0 @@
|
||||
Git v2.9.1 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.9
|
||||
----------------
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Formats of the various data (and how to validate them) where we use
|
||||
GPG signature have been documented.
|
||||
|
||||
* 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.
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -1,13 +0,0 @@
|
||||
Git v2.9.2 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.9.1
|
||||
------------------
|
||||
|
||||
* A fix merged to v2.9.1 had a few tests that are not meant to be
|
||||
run on platforms without 64-bit long, which caused unnecessary
|
||||
test failures on them because we didn't detect the platform and
|
||||
skip them. These tests are now skipped on platforms that they
|
||||
are not applicable to.
|
||||
|
||||
No other change is included in this update.
|
@ -1,170 +0,0 @@
|
||||
Git v2.9.3 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.9.2
|
||||
------------------
|
||||
|
||||
* 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.
|
||||
|
||||
* 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 rebase -i --autostash" did not restore the auto-stashed change
|
||||
when the operation was aborted.
|
||||
|
||||
* "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.
|
||||
|
||||
* More mark-up updates to typeset strings that are expected to
|
||||
literally typed by the end user in fixed-width font.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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".
|
||||
|
||||
* The test framework learned a new helper test_match_signal to
|
||||
check an exit code from getting killed by an expected signal.
|
||||
|
||||
* "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.
|
||||
|
||||
* "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.
|
||||
|
||||
* 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 status" learned to suggest "merge --abort" during a conflicted
|
||||
merge, just like it already suggests "rebase --abort" during a
|
||||
conflicted rebase.
|
||||
|
||||
* The .c/.h sources are marked as such in our .gitattributes file so
|
||||
that "git diff -W" and friends would work better.
|
||||
|
||||
* 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.
|
||||
|
||||
* Allow http daemon tests in Travis CI tests.
|
||||
|
||||
* 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.
|
||||
|
||||
* The use of strbuf in "git rm" to build filename to remove was a bit
|
||||
suboptimal, which has been fixed.
|
||||
|
||||
* "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 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.
|
||||
|
||||
* 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 difftool <paths>..." started in a subdirectory failed to
|
||||
interpret the paths relative to that directory, which has been
|
||||
fixed.
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -1,83 +0,0 @@
|
||||
Git v2.9.4 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.9.3
|
||||
------------------
|
||||
|
||||
* 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.
|
||||
|
||||
* "git merge" with renormalization did not work well with
|
||||
merge-recursive, due to "safer crlf" conversion kicking in when it
|
||||
shouldn't.
|
||||
|
||||
* The reflog output format is documented better, and a new format
|
||||
--date=unix to report the seconds-since-epoch (without timezone)
|
||||
has been added.
|
||||
|
||||
* "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.
|
||||
|
||||
* "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.
|
||||
|
||||
* "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 '/'.
|
||||
|
||||
* 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).
|
||||
|
||||
* 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.
|
||||
|
||||
* "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.
|
||||
|
||||
* "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.
|
||||
|
||||
* On Windows, help.browser configuration variable used to be ignored,
|
||||
which has been corrected.
|
||||
|
||||
* 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?"
|
||||
|
||||
* 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).
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -61,28 +61,23 @@ Make sure that you have tests for the bug you are fixing. See
|
||||
t/README for guidance.
|
||||
|
||||
When adding a new feature, make sure that you have new tests to show
|
||||
the feature triggers the new behavior when it should, and to show the
|
||||
feature does not trigger when it shouldn't. After any code change, make
|
||||
sure that the entire test suite passes.
|
||||
the feature triggers the new behaviour when it should, and to show the
|
||||
feature does not trigger when it shouldn't. Also make sure that the
|
||||
test suite passes after your commit. Do not forget to update the
|
||||
documentation to describe the updated behaviour.
|
||||
|
||||
If you have an account at GitHub (and you can get one for free to work
|
||||
on open source projects), you can use their Travis CI integration to
|
||||
test your changes on Linux, Mac (and hopefully soon Windows). See
|
||||
GitHub-Travis CI hints section for details.
|
||||
|
||||
Do not forget to update the documentation to describe the updated
|
||||
behavior and make sure that the resulting documentation set formats
|
||||
well. It is currently a liberal mixture of US and UK English norms for
|
||||
spelling and grammar, which is somewhat unfortunate. A huge patch that
|
||||
touches the files all over the place only to correct the inconsistency
|
||||
is not welcome, though. Potential clashes with other changes that can
|
||||
result from such a patch are not worth it. We prefer to gradually
|
||||
reconcile the inconsistencies in favor of US English, with small and
|
||||
easily digestible patches, as a side effect of doing some other real
|
||||
work in the vicinity (e.g. rewriting a paragraph for clarity, while
|
||||
turning en_UK spelling to en_US). Obvious typographical fixes are much
|
||||
more welcomed ("teh -> "the"), preferably submitted as independent
|
||||
patches separate from other documentation changes.
|
||||
Speaking of the documentation, it is currently a liberal mixture of US
|
||||
and UK English norms for spelling and grammar, which is somewhat
|
||||
unfortunate. A huge patch that touches the files all over the place
|
||||
only to correct the inconsistency is not welcome, though. Potential
|
||||
clashes with other changes that can result from such a patch are not
|
||||
worth it. We prefer to gradually reconcile the inconsistencies in
|
||||
favor of US English, with small and easily digestible patches, as a
|
||||
side effect of doing some other real work in the vicinity (e.g.
|
||||
rewriting a paragraph for clarity, while turning en_UK spelling to
|
||||
en_US). Obvious typographical fixes are much more welcomed ("teh ->
|
||||
"the"), preferably submitted as independent patches separate from
|
||||
other documentation changes.
|
||||
|
||||
Oh, another thing. We are picky about whitespaces. Make sure your
|
||||
changes do not trigger errors with the sample pre-commit hook shipped
|
||||
@ -121,16 +116,6 @@ its behaviour. Try to make sure your explanation can be understood
|
||||
without external resources. Instead of giving a URL to a mailing list
|
||||
archive, summarize the relevant points of the discussion.
|
||||
|
||||
If you want to reference a previous commit in the history of a stable
|
||||
branch, use the format "abbreviated sha1 (subject, date)",
|
||||
with the subject enclosed in a pair of double-quotes, like this:
|
||||
|
||||
Commit f86a374 ("pack-bitmap.c: fix a memleak", 2015-03-30)
|
||||
noticed that ...
|
||||
|
||||
The "Copy commit summary" command of gitk can be used to obtain this
|
||||
format.
|
||||
|
||||
|
||||
(3) Generate your patch using Git tools out of your commits.
|
||||
|
||||
@ -216,11 +201,12 @@ that it will be postponed.
|
||||
Exception: If your mailer is mangling patches then someone may ask
|
||||
you to re-send them using MIME, that is OK.
|
||||
|
||||
Do not PGP sign your patch. Most likely, your maintainer or other people on the
|
||||
list would not have your PGP key and would not bother obtaining it anyway.
|
||||
Your patch is not judged by who you are; a good patch from an unknown origin
|
||||
has a far better chance of being accepted than a patch from a known, respected
|
||||
origin that is done poorly or does incorrect things.
|
||||
Do not PGP sign your patch, at least for now. Most likely, your
|
||||
maintainer or other people on the list would not have your PGP
|
||||
key and would not bother obtaining it anyway. Your patch is not
|
||||
judged by who you are; a good patch from an unknown origin has a
|
||||
far better chance of being accepted than a patch from a known,
|
||||
respected origin that is done poorly or does incorrect things.
|
||||
|
||||
If you really really really really want to do a PGP signed
|
||||
patch, format it as "multipart/signed", not a text/plain message
|
||||
@ -245,7 +231,7 @@ patch.
|
||||
*2* The mailing list: git@vger.kernel.org
|
||||
|
||||
|
||||
(5) Certify your work by adding your "Signed-off-by: " line
|
||||
(5) Sign your work
|
||||
|
||||
To improve tracking of who did what, we've borrowed the
|
||||
"sign-off" procedure from the Linux kernel project on patches
|
||||
@ -384,47 +370,6 @@ Know the status of your patch after submission
|
||||
entitled "What's cooking in git.git" and "What's in git.git" giving
|
||||
the status of various proposed changes.
|
||||
|
||||
--------------------------------------------------
|
||||
GitHub-Travis CI hints
|
||||
|
||||
With an account at GitHub (you can get one for free to work on open
|
||||
source projects), you can use Travis CI to test your changes on Linux,
|
||||
Mac (and hopefully soon Windows). You can find a successful example
|
||||
test build here: https://travis-ci.org/git/git/builds/120473209
|
||||
|
||||
Follow these steps for the initial setup:
|
||||
|
||||
(1) Fork https://github.com/git/git to your GitHub account.
|
||||
You can find detailed instructions how to fork here:
|
||||
https://help.github.com/articles/fork-a-repo/
|
||||
|
||||
(2) Open the Travis CI website: https://travis-ci.org
|
||||
|
||||
(3) Press the "Sign in with GitHub" button.
|
||||
|
||||
(4) Grant Travis CI permissions to access your GitHub account.
|
||||
You can find more information about the required permissions here:
|
||||
https://docs.travis-ci.com/user/github-oauth-scopes
|
||||
|
||||
(5) Open your Travis CI profile page: https://travis-ci.org/profile
|
||||
|
||||
(6) Enable Travis CI builds for your Git fork.
|
||||
|
||||
After the initial setup, Travis CI will run whenever you push new changes
|
||||
to your fork of Git on GitHub. You can monitor the test state of all your
|
||||
branches here: https://travis-ci.org/<Your GitHub handle>/git/branches
|
||||
|
||||
If a branch did not pass all test cases then it is marked with a red
|
||||
cross. In that case you can click on the failing Travis CI job and
|
||||
scroll all the way down in the log. Find the line "<-- Click here to see
|
||||
detailed test output!" and click on the triangle next to the log line
|
||||
number to expand the detailed test output. Here is such a failing
|
||||
example: https://travis-ci.org/git/git/jobs/122676187
|
||||
|
||||
Fix the problem and push your fix to your Git fork. This will trigger
|
||||
a new Travis CI build to ensure all tests pass.
|
||||
|
||||
|
||||
------------------------------------------------
|
||||
MUA specific hints
|
||||
|
||||
|
@ -1,28 +0,0 @@
|
||||
require 'asciidoctor'
|
||||
require 'asciidoctor/extensions'
|
||||
|
||||
module Git
|
||||
module Documentation
|
||||
class LinkGitProcessor < Asciidoctor::Extensions::InlineMacroProcessor
|
||||
use_dsl
|
||||
|
||||
named :chrome
|
||||
|
||||
def process(parent, target, attrs)
|
||||
if parent.document.basebackend? 'html'
|
||||
prefix = parent.document.attr('git-relative-html-prefix')
|
||||
%(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>\n)
|
||||
elsif parent.document.basebackend? 'docbook'
|
||||
"<citerefentry>\n" \
|
||||
"<refentrytitle>#{target}</refentrytitle>" \
|
||||
"<manvolnum>#{attrs[1]}</manvolnum>\n" \
|
||||
"</citerefentry>\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Asciidoctor::Extensions.register do
|
||||
inline_macro Git::Documentation::LinkGitProcessor, :linkgit
|
||||
end
|
@ -28,13 +28,12 @@ include::line-range-format.txt[]
|
||||
-S <revs-file>::
|
||||
Use revisions from revs-file instead of calling linkgit:git-rev-list[1].
|
||||
|
||||
--reverse <rev>..<rev>::
|
||||
--reverse::
|
||||
Walk history forward instead of backward. Instead of showing
|
||||
the revision in which a line appeared, this shows the last
|
||||
revision in which a line has existed. This requires a range of
|
||||
revision like START..END where the path to blame exists in
|
||||
START. `git blame --reverse START` is taken as `git blame
|
||||
--reverse START..HEAD` for convenience.
|
||||
START.
|
||||
|
||||
-p::
|
||||
--porcelain::
|
||||
@ -64,19 +63,13 @@ include::line-range-format.txt[]
|
||||
`-` to make the command read from the standard input).
|
||||
|
||||
--date <format>::
|
||||
Specifies the format used to output dates. If --date is not
|
||||
The value is one of the following alternatives:
|
||||
{relative,local,default,iso,rfc,short}. If --date is not
|
||||
provided, the value of the blame.date config variable is
|
||||
used. If the blame.date config variable is also not set, the
|
||||
iso format is used. For supported values, see the discussion
|
||||
iso format is used. For more information, See the discussion
|
||||
of the --date option at linkgit:git-log[1].
|
||||
|
||||
--[no-]progress::
|
||||
Progress status is reported on the standard error stream
|
||||
by default when it is attached to a terminal. This flag
|
||||
enables progress reporting even if not attached to a
|
||||
terminal. Can't use `--progress` together with `--porcelain`
|
||||
or `--incremental`.
|
||||
|
||||
-M|<num>|::
|
||||
Detect moved or copied lines within a file. When a commit
|
||||
moves or copies a block of lines (e.g. the original file
|
||||
|
@ -1,12 +1,9 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my @menu = ();
|
||||
my $output = $ARGV[0];
|
||||
|
||||
open my $tmp, '>', "$output.tmp";
|
||||
open TMP, '>', "$output.tmp";
|
||||
|
||||
while (<STDIN>) {
|
||||
next if (/^\\input texinfo/../\@node Top/);
|
||||
@ -14,13 +11,13 @@ while (<STDIN>) {
|
||||
if (s/^\@top (.*)/\@node $1,,,Top/) {
|
||||
push @menu, $1;
|
||||
}
|
||||
s/\(\@pxref\{\[(URLS|REMOTES)\]}\)//;
|
||||
s/\(\@pxref{\[(URLS|REMOTES)\]}\)//;
|
||||
s/\@anchor\{[^{}]*\}//g;
|
||||
print $tmp $_;
|
||||
print TMP;
|
||||
}
|
||||
close $tmp;
|
||||
close TMP;
|
||||
|
||||
print '\input texinfo
|
||||
printf '\input texinfo
|
||||
@setfilename gitman.info
|
||||
@documentencoding UTF-8
|
||||
@dircategory Development
|
||||
@ -31,16 +28,16 @@ print '\input texinfo
|
||||
@top Git Manual Pages
|
||||
@documentlanguage en
|
||||
@menu
|
||||
';
|
||||
', $menu[0];
|
||||
|
||||
for (@menu) {
|
||||
print "* ${_}::\n";
|
||||
}
|
||||
print "\@end menu\n";
|
||||
open $tmp, '<', "$output.tmp";
|
||||
while (<$tmp>) {
|
||||
open TMP, '<', "$output.tmp";
|
||||
while (<TMP>) {
|
||||
print;
|
||||
}
|
||||
close $tmp;
|
||||
close TMP;
|
||||
print "\@bye\n";
|
||||
unlink "$output.tmp";
|
||||
|
@ -38,10 +38,6 @@ sub format_one {
|
||||
}
|
||||
}
|
||||
|
||||
while (<>) {
|
||||
last if /^### command list/;
|
||||
}
|
||||
|
||||
my %cmds = ();
|
||||
for (sort <>) {
|
||||
next if /^#/;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
DATE FORMATS
|
||||
------------
|
||||
|
||||
The `GIT_AUTHOR_DATE`, `GIT_COMMITTER_DATE` environment variables
|
||||
The GIT_AUTHOR_DATE, GIT_COMMITTER_DATE environment variables
|
||||
ifdef::git-commit[]
|
||||
and the `--date` option
|
||||
endif::git-commit[]
|
||||
@ -11,7 +11,7 @@ Git internal format::
|
||||
It is `<unix timestamp> <time zone offset>`, where `<unix
|
||||
timestamp>` is the number of seconds since the UNIX epoch.
|
||||
`<time zone offset>` is a positive or negative offset from UTC.
|
||||
For example CET (which is 1 hour ahead of UTC) is `+0100`.
|
||||
For example CET (which is 2 hours ahead UTC) is `+0200`.
|
||||
|
||||
RFC 2822::
|
||||
The standard email format as described by RFC 2822, for example
|
||||
|
@ -60,12 +60,6 @@ diff.context::
|
||||
Generate diffs with <n> lines of context instead of the default
|
||||
of 3. This value is overridden by the -U option.
|
||||
|
||||
diff.interHunkContext::
|
||||
Show the context between diff hunks, up to the specified number
|
||||
of lines, thereby fusing the hunks that are close to each other.
|
||||
This value serves as the default for the `--inter-hunk-context`
|
||||
command line option.
|
||||
|
||||
diff.external::
|
||||
If this config variable is set, diff generation is not
|
||||
performed using the internal diff machinery, but using the
|
||||
@ -81,7 +75,7 @@ diff.ignoreSubmodules::
|
||||
commands such as 'git diff-files'. 'git checkout' also honors
|
||||
this setting when reporting uncommitted changes. Setting it to
|
||||
'all' disables the submodule summary normally shown by 'git commit'
|
||||
and 'git status' when `status.submoduleSummary` is set unless it is
|
||||
and 'git status' when 'status.submoduleSummary' is set unless it is
|
||||
overridden by using the --ignore-submodules command-line option.
|
||||
The 'git submodule' commands are not affected by this setting.
|
||||
|
||||
@ -105,23 +99,18 @@ diff.noprefix::
|
||||
If set, 'git diff' does not show any source or destination prefix.
|
||||
|
||||
diff.orderFile::
|
||||
File indicating how to order files within a diff.
|
||||
See the '-O' option to linkgit:git-diff[1] for details.
|
||||
If `diff.orderFile` is a relative pathname, it is treated as
|
||||
relative to the top of the working tree.
|
||||
File indicating how to order files within a diff, using
|
||||
one shell glob pattern per line.
|
||||
Can be overridden by the '-O' option to linkgit:git-diff[1].
|
||||
|
||||
diff.renameLimit::
|
||||
The number of files to consider when performing the copy/rename
|
||||
detection; equivalent to the 'git diff' option `-l`.
|
||||
detection; equivalent to the 'git diff' option '-l'.
|
||||
|
||||
diff.renames::
|
||||
Whether and how Git detects renames. If set to "false",
|
||||
rename detection is disabled. If set to "true", basic rename
|
||||
detection is enabled. If set to "copies" or "copy", Git will
|
||||
detect copies, as well. Defaults to true. Note that this
|
||||
affects only 'git diff' Porcelain like linkgit:git-diff[1] and
|
||||
linkgit:git-log[1], and not lower level commands such as
|
||||
linkgit:git-diff-files[1].
|
||||
Tells Git to detect renames. If set to any boolean value, it
|
||||
will enable basic rename detection. If set to "copies" or
|
||||
"copy", it will detect copies, as well.
|
||||
|
||||
diff.suppressBlankEmpty::
|
||||
A boolean to inhibit the standard behavior of printing a space
|
||||
@ -129,11 +118,10 @@ diff.suppressBlankEmpty::
|
||||
|
||||
diff.submodule::
|
||||
Specify the format in which differences in submodules are
|
||||
shown. The "short" format just shows the names of the commits
|
||||
at the beginning and end of the range. The "log" format lists
|
||||
the commits in the range like linkgit:git-submodule[1] `summary`
|
||||
does. The "diff" format shows an inline diff of the changed
|
||||
contents of the submodule. Defaults to "short".
|
||||
shown. The "log" format lists the commits in the range like
|
||||
linkgit:git-submodule[1] `summary` does. The "short" format
|
||||
format just shows the names of the commits at the beginning
|
||||
and end of the range. Defaults to short.
|
||||
|
||||
diff.wordRegex::
|
||||
A POSIX Extended Regular Expression used to determine what is a "word"
|
||||
@ -178,10 +166,6 @@ diff.tool::
|
||||
|
||||
include::mergetools-diff.txt[]
|
||||
|
||||
diff.indentHeuristic::
|
||||
Set this option to `true` to enable experimental heuristics
|
||||
that shift diff hunk boundaries to make patches easier to read.
|
||||
|
||||
diff.algorithm::
|
||||
Choose a diff algorithm. The variants are as follows:
|
||||
+
|
||||
@ -198,9 +182,3 @@ diff.algorithm::
|
||||
low-occurrence common elements".
|
||||
--
|
||||
+
|
||||
|
||||
diff.wsErrorHighlight::
|
||||
A comma separated list of `old`, `new`, `context`, that
|
||||
specifies how whitespace errors on lines are highlighted
|
||||
with `color.diff.whitespace`. Can be overridden by the
|
||||
command line option `--ws-error-highlight=<kind>`
|
||||
|
@ -46,11 +46,11 @@ That is, from the left to the right:
|
||||
. sha1 for "dst"; 0\{40\} if creation, unmerged or "look at work tree".
|
||||
. a space.
|
||||
. status, followed by optional "score" number.
|
||||
. a tab or a NUL when `-z` option is used.
|
||||
. a tab or a NUL when '-z' option is used.
|
||||
. path for "src"
|
||||
. a tab or a NUL when `-z` option is used; only exists for C or R.
|
||||
. a tab or a NUL when '-z' option is used; only exists for C or R.
|
||||
. path for "dst"; only exists for C or R.
|
||||
. an LF or a NUL when `-z` option is used, to terminate the record.
|
||||
. an LF or a NUL when '-z' option is used, to terminate the record.
|
||||
|
||||
Possible status letters are:
|
||||
|
||||
@ -86,7 +86,7 @@ diff format for merges
|
||||
----------------------
|
||||
|
||||
"git-diff-tree", "git-diff-files" and "git-diff --raw"
|
||||
can take `-c` or `--cc` option
|
||||
can take '-c' or '--cc' option
|
||||
to generate diff output also for merge commits. The output differs
|
||||
from the format described above in the following way:
|
||||
|
||||
|
@ -2,11 +2,11 @@ Generating patches with -p
|
||||
--------------------------
|
||||
|
||||
When "git-diff-index", "git-diff-tree", or "git-diff-files" are run
|
||||
with a `-p` option, "git diff" without the `--raw` option, or
|
||||
with a '-p' option, "git diff" without the '--raw' option, or
|
||||
"git log" with the "-p" option, they
|
||||
do not produce the output described above; instead they produce a
|
||||
patch file. You can customize the creation of such patches via the
|
||||
`GIT_EXTERNAL_DIFF` and the `GIT_DIFF_OPTS` environment variables.
|
||||
GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS environment variables.
|
||||
|
||||
What the -p option produces is slightly different from the traditional
|
||||
diff format:
|
||||
@ -114,11 +114,11 @@ index fabadb8,cc95eb0..4866510
|
||||
------------
|
||||
|
||||
1. It is preceded with a "git diff" header, that looks like
|
||||
this (when `-c` option is used):
|
||||
this (when '-c' option is used):
|
||||
|
||||
diff --combined file
|
||||
+
|
||||
or like this (when `--cc` option is used):
|
||||
or like this (when '--cc' option is used):
|
||||
|
||||
diff --cc file
|
||||
|
||||
|
@ -1,5 +0,0 @@
|
||||
--indent-heuristic::
|
||||
--no-indent-heuristic::
|
||||
These are to help debugging and tuning experimental heuristics
|
||||
(which are off by default) that shift diff hunk boundaries to
|
||||
make patches easier to read.
|
@ -26,12 +26,12 @@ ifndef::git-format-patch[]
|
||||
ifdef::git-diff[]
|
||||
This is the default.
|
||||
endif::git-diff[]
|
||||
endif::git-format-patch[]
|
||||
|
||||
-s::
|
||||
--no-patch::
|
||||
Suppress diff output. Useful for commands like `git show` that
|
||||
show the patch by default, or to cancel the effect of `--patch`.
|
||||
endif::git-format-patch[]
|
||||
|
||||
-U<n>::
|
||||
--unified=<n>::
|
||||
@ -63,8 +63,6 @@ ifndef::git-format-patch[]
|
||||
Synonym for `-p --raw`.
|
||||
endif::git-format-patch[]
|
||||
|
||||
include::diff-heuristic-options.txt[]
|
||||
|
||||
--minimal::
|
||||
Spend extra time to make sure the smallest possible
|
||||
diff is produced.
|
||||
@ -205,16 +203,13 @@ any of those replacements occurred.
|
||||
of the `--diff-filter` option on what the status letters mean.
|
||||
|
||||
--submodule[=<format>]::
|
||||
Specify how differences in submodules are shown. When specifying
|
||||
`--submodule=short` the 'short' format is used. This format just
|
||||
shows the names of the commits at the beginning and end of the range.
|
||||
When `--submodule` or `--submodule=log` is specified, the 'log'
|
||||
format is used. This format lists the commits in the range like
|
||||
linkgit:git-submodule[1] `summary` does. When `--submodule=diff`
|
||||
is specified, the 'diff' format is used. This format shows an
|
||||
inline diff of the changes in the submodule contents between the
|
||||
commit range. Defaults to `diff.submodule` or the 'short' format
|
||||
if the config option is unset.
|
||||
Specify how differences in submodules are shown. When `--submodule`
|
||||
or `--submodule=log` is given, the 'log' format is used. This format lists
|
||||
the commits in the range like linkgit:git-submodule[1] `summary` does.
|
||||
Omitting the `--submodule` option or specifying `--submodule=short`,
|
||||
uses the 'short' format. This format just shows the names of the commits
|
||||
at the beginning and end of the range. Can be tweaked via the
|
||||
`diff.submodule` configuration variable.
|
||||
|
||||
--color[=<when>]::
|
||||
Show colored diff.
|
||||
@ -272,11 +267,8 @@ expression to make sure that it matches all non-whitespace characters.
|
||||
A match that contains a newline is silently truncated(!) at the
|
||||
newline.
|
||||
+
|
||||
For example, `--word-diff-regex=.` will treat each character as a word
|
||||
and, correspondingly, show differences character by character.
|
||||
+
|
||||
The regex can also be set via a diff driver or configuration option, see
|
||||
linkgit:gitattributes[5] or linkgit:git-config[1]. Giving it explicitly
|
||||
linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly
|
||||
overrides any diff driver or configuration setting. Diff drivers
|
||||
override configuration settings.
|
||||
|
||||
@ -291,26 +283,14 @@ endif::git-format-patch[]
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
--check::
|
||||
Warn if changes introduce conflict markers or whitespace errors.
|
||||
What are considered whitespace errors is controlled by `core.whitespace`
|
||||
Warn if changes introduce whitespace errors. What are
|
||||
considered whitespace errors is controlled by `core.whitespace`
|
||||
configuration. By default, trailing whitespaces (including
|
||||
lines that solely consist of whitespaces) and a space character
|
||||
that is immediately followed by a tab character inside the
|
||||
initial indent of the line are considered whitespace errors.
|
||||
Exits with non-zero status if problems are found. Not compatible
|
||||
with --exit-code.
|
||||
|
||||
--ws-error-highlight=<kind>::
|
||||
Highlight whitespace errors on lines specified by <kind>
|
||||
in the color specified by `color.diff.whitespace`. <kind>
|
||||
is a comma separated list of `old`, `new`, `context`. When
|
||||
this option is not given, only whitespace errors in `new`
|
||||
lines are highlighted. E.g. `--ws-error-highlight=new,old`
|
||||
highlights whitespace errors on both deleted and added lines.
|
||||
`all` can be used as a short-hand for `old,new,context`.
|
||||
The `diff.wsErrorHighlight` configuration variable can be
|
||||
used to specify the default behaviour.
|
||||
|
||||
endif::git-format-patch[]
|
||||
|
||||
--full-index::
|
||||
@ -419,9 +399,6 @@ ifndef::git-format-patch[]
|
||||
paths are selected if there is any file that matches
|
||||
other criteria in the comparison; if there is no file
|
||||
that matches other criteria, nothing is selected.
|
||||
+
|
||||
Also, these upper-case letters can be downcased to exclude. E.g.
|
||||
`--diff-filter=ad` excludes added and deleted paths.
|
||||
|
||||
-S<string>::
|
||||
Look for differences that change the number of occurrences of
|
||||
@ -466,41 +443,11 @@ information.
|
||||
endif::git-format-patch[]
|
||||
|
||||
-O<orderfile>::
|
||||
Control the order in which files appear in the output.
|
||||
Output the patch in the order specified in the
|
||||
<orderfile>, which has one shell glob pattern per line.
|
||||
This overrides the `diff.orderFile` configuration variable
|
||||
(see linkgit:git-config[1]). To cancel `diff.orderFile`,
|
||||
use `-O/dev/null`.
|
||||
+
|
||||
The output order is determined by the order of glob patterns in
|
||||
<orderfile>.
|
||||
All files with pathnames that match the first pattern are output
|
||||
first, all files with pathnames that match the second pattern (but not
|
||||
the first) are output next, and so on.
|
||||
All files with pathnames that do not match any pattern are output
|
||||
last, as if there was an implicit match-all pattern at the end of the
|
||||
file.
|
||||
If multiple pathnames have the same rank (they match the same pattern
|
||||
but no earlier patterns), their output order relative to each other is
|
||||
the normal order.
|
||||
+
|
||||
<orderfile> is parsed as follows:
|
||||
+
|
||||
--
|
||||
- Blank lines are ignored, so they can be used as separators for
|
||||
readability.
|
||||
|
||||
- Lines starting with a hash ("`#`") are ignored, so they can be used
|
||||
for comments. Add a backslash ("`\`") to the beginning of the
|
||||
pattern if it starts with a hash.
|
||||
|
||||
- Each other line contains a single pattern.
|
||||
--
|
||||
+
|
||||
Patterns have the same syntax and semantics as patterns used for
|
||||
fnmantch(3) without the FNM_PATHNAME flag, except a pathname also
|
||||
matches a pattern if removing any number of the final pathname
|
||||
components matches the pattern. For example, the pattern "`foo*bar`"
|
||||
matches "`fooasdfbar`" and "`foo/bar/baz/asdf`" but not "`foobarx`".
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
-R::
|
||||
@ -541,8 +488,6 @@ endif::git-format-patch[]
|
||||
--inter-hunk-context=<lines>::
|
||||
Show the context between diff hunks, up to the specified number
|
||||
of lines, thereby fusing hunks that are close to each other.
|
||||
Defaults to `diff.interHunkContext` or 0 if the config option
|
||||
is unset.
|
||||
|
||||
-W::
|
||||
--function-context::
|
||||
@ -601,16 +546,5 @@ endif::git-format-patch[]
|
||||
--no-prefix::
|
||||
Do not show any source or destination prefix.
|
||||
|
||||
--line-prefix=<prefix>::
|
||||
Prepend an additional prefix to every line of output.
|
||||
|
||||
--ita-invisible-in-index::
|
||||
By default entries added by "git add -N" appear as an existing
|
||||
empty file in "git diff" and a new file in "git diff --cached".
|
||||
This option makes the entry appear as a new file in "git diff"
|
||||
and non-existent in "git diff --cached". This option could be
|
||||
reverted with `--ita-visible-in-index`. Both options are
|
||||
experimental and could be removed in future.
|
||||
|
||||
For more detailed explanation on these common options, see also
|
||||
linkgit:gitdiffcore[7].
|
||||
|
@ -1,7 +1,7 @@
|
||||
Everyday Git With 20 Commands Or So
|
||||
===================================
|
||||
|
||||
This document has been moved to linkgit:giteveryday[7].
|
||||
This document has been moved to linkgit:giteveryday[1].
|
||||
|
||||
Please let the owners of the referring site know so that they can update the
|
||||
link you clicked to get here.
|
||||
|
@ -8,25 +8,10 @@
|
||||
option old data in `.git/FETCH_HEAD` will be overwritten.
|
||||
|
||||
--depth=<depth>::
|
||||
Limit fetching to the specified number of commits from the tip of
|
||||
each remote branch history. If fetching to a 'shallow' repository
|
||||
created by `git clone` with `--depth=<depth>` option (see
|
||||
linkgit:git-clone[1]), deepen or shorten the history to the specified
|
||||
number of commits. Tags for the deepened commits are not fetched.
|
||||
|
||||
--deepen=<depth>::
|
||||
Similar to --depth, except it specifies the number of commits
|
||||
from the current shallow boundary instead of from the tip of
|
||||
each remote branch history.
|
||||
|
||||
--shallow-since=<date>::
|
||||
Deepen or shorten the history of a shallow repository to
|
||||
include all reachable commits after <date>.
|
||||
|
||||
--shallow-exclude=<revision>::
|
||||
Deepen or shorten the history of a shallow repository to
|
||||
exclude commits reachable from a specified remote branch or tag.
|
||||
This option can be specified multiple times.
|
||||
Deepen or shorten the history of a 'shallow' repository created by
|
||||
`git clone` with `--depth=<depth>` option (see linkgit:git-clone[1])
|
||||
to the specified number of commits from the tip of each remote
|
||||
branch history. Tags for the deepened commits are not fetched.
|
||||
|
||||
--unshallow::
|
||||
If the source repository is complete, convert a shallow
|
||||
@ -66,7 +51,7 @@ ifndef::git-pull[]
|
||||
|
||||
-p::
|
||||
--prune::
|
||||
Before fetching, remove any remote-tracking references that no
|
||||
After fetching, remove any remote-tracking references that no
|
||||
longer exist on the remote. Tags are not subject to pruning
|
||||
if they are fetched only because of the default tag
|
||||
auto-following or due to a --tags option. However, if tags
|
||||
@ -102,7 +87,7 @@ ifndef::git-pull[]
|
||||
to whatever else would otherwise be fetched. Using this
|
||||
option alone does not subject tags to pruning, even if --prune
|
||||
is used (though tags may be pruned anyway if they are also the
|
||||
destination of an explicit refspec; see `--prune`).
|
||||
destination of an explicit refspec; see '--prune').
|
||||
|
||||
--recurse-submodules[=yes|on-demand|no]::
|
||||
This option controls if and under what conditions new commits of
|
||||
@ -115,16 +100,9 @@ ifndef::git-pull[]
|
||||
reference to a commit that isn't already in the local submodule
|
||||
clone.
|
||||
|
||||
-j::
|
||||
--jobs=<n>::
|
||||
Number of parallel children to be used for fetching submodules.
|
||||
Each will fetch from different submodules, such that fetching many
|
||||
submodules will be faster. By default submodules will be fetched
|
||||
one at a time.
|
||||
|
||||
--no-recurse-submodules::
|
||||
Disable recursive fetching of submodules (this has the same effect as
|
||||
using the `--recurse-submodules=no` option).
|
||||
using the '--recurse-submodules=no' option).
|
||||
|
||||
--submodule-prefix=<path>::
|
||||
Prepend <path> to paths printed in informative messages
|
||||
@ -151,7 +129,7 @@ endif::git-pull[]
|
||||
|
||||
--upload-pack <upload-pack>::
|
||||
When given, and the repository to fetch from is handled
|
||||
by 'git fetch-pack', `--exec=<upload-pack>` is passed to
|
||||
by 'git fetch-pack', '--exec=<upload-pack>' is passed to
|
||||
the command to specify non-default path for the command
|
||||
run on the other end.
|
||||
|
||||
@ -172,11 +150,3 @@ endif::git-pull[]
|
||||
by default when it is attached to a terminal, unless -q
|
||||
is specified. This flag forces progress status even if the
|
||||
standard error stream is not directed to a terminal.
|
||||
|
||||
-4::
|
||||
--ipv4::
|
||||
Use IPv4 addresses only, ignoring IPv6 addresses.
|
||||
|
||||
-6::
|
||||
--ipv6::
|
||||
Use IPv6 addresses only, ignoring IPv4 addresses.
|
||||
|
@ -11,7 +11,7 @@ SYNOPSIS
|
||||
'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
|
||||
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
|
||||
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
|
||||
[--chmod=(+|-)x] [--] [<pathspec>...]
|
||||
[--] [<pathspec>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -24,7 +24,7 @@ remove paths that do not exist in the working tree anymore.
|
||||
|
||||
The "index" holds a snapshot of the content of the working tree, and it
|
||||
is this snapshot that is taken as the contents of the next commit. Thus
|
||||
after making any changes to the working tree, and before running
|
||||
after making any changes to the working directory, and before running
|
||||
the commit command, you must use the `add` command to add any new or
|
||||
modified files to the index.
|
||||
|
||||
@ -165,11 +165,6 @@ for "git add --no-all <pathspec>...", i.e. ignored removed files.
|
||||
be ignored, no matter if they are already present in the work
|
||||
tree or not.
|
||||
|
||||
--chmod=(+|-)x::
|
||||
Override the executable bit of the added files. The executable
|
||||
bit is only changed in the index, the files on disk are left
|
||||
unchanged.
|
||||
|
||||
\--::
|
||||
This option can be used to separate command-line options from
|
||||
the list of files, (useful when filenames might be mistaken
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git am' [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8]
|
||||
[--[no-]3way] [--interactive] [--committer-date-is-author-date]
|
||||
[--3way] [--interactive] [--committer-date-is-author-date]
|
||||
[--ignore-date] [--ignore-space-change | --ignore-whitespace]
|
||||
[--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
|
||||
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
||||
@ -35,7 +35,6 @@ OPTIONS
|
||||
--signoff::
|
||||
Add a `Signed-off-by:` line to the commit message, using
|
||||
the committer identity of yourself.
|
||||
See the signoff option in linkgit:git-commit[1] for more information.
|
||||
|
||||
-k::
|
||||
--keep::
|
||||
@ -91,13 +90,10 @@ default. You can use `--no-utf8` to override this.
|
||||
|
||||
-3::
|
||||
--3way::
|
||||
--no-3way::
|
||||
When the patch does not apply cleanly, fall back on
|
||||
3-way merge if the patch records the identity of blobs
|
||||
it is supposed to apply to and we have those blobs
|
||||
available locally. `--no-3way` can be used to override
|
||||
am.threeWay configuration variable. For more information,
|
||||
see am.threeWay in linkgit:git-config[1].
|
||||
available locally.
|
||||
|
||||
--ignore-space-change::
|
||||
--ignore-whitespace::
|
||||
@ -116,8 +112,7 @@ default. You can use `--no-utf8` to override this.
|
||||
By default the command will try to detect the patch format
|
||||
automatically. This option allows the user to bypass the automatic
|
||||
detection and specify the patch format that the patch(es) should be
|
||||
interpreted as. Valid formats are mbox, mboxrd,
|
||||
stgit, stgit-series and hg.
|
||||
interpreted as. Valid formats are mbox, stgit, stgit-series and hg.
|
||||
|
||||
-i::
|
||||
--interactive::
|
||||
@ -143,9 +138,7 @@ default. You can use `--no-utf8` to override this.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
defaults to the committer identity; if specified, it must be
|
||||
stuck to the option without a space.
|
||||
GPG-sign commits.
|
||||
|
||||
--continue::
|
||||
-r::
|
||||
@ -199,12 +192,12 @@ When initially invoking `git am`, you give it the names of the mailboxes
|
||||
to process. Upon seeing the first patch that does not apply, it
|
||||
aborts in the middle. You can recover from this in one of two ways:
|
||||
|
||||
. skip the current patch by re-running the command with the `--skip`
|
||||
. skip the current patch by re-running the command with the '--skip'
|
||||
option.
|
||||
|
||||
. hand resolve the conflict in the working directory, and update
|
||||
the index file to bring it into a state that the patch should
|
||||
have produced. Then run the command with the `--continue` option.
|
||||
have produced. Then run the command with the '--continue' option.
|
||||
|
||||
The command refuses to process new mailboxes until the current
|
||||
operation is finished, so if you decide to start over from scratch,
|
||||
|
@ -23,7 +23,6 @@ familiar command name for people coming from other SCM systems.
|
||||
OPTIONS
|
||||
-------
|
||||
include::blame-options.txt[]
|
||||
include::diff-heuristic-options.txt[]
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
@ -13,7 +13,7 @@ SYNOPSIS
|
||||
[--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
|
||||
[--allow-binary-replacement | --binary] [--reject] [-z]
|
||||
[-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached]
|
||||
[--ignore-space-change | --ignore-whitespace]
|
||||
[--ignore-space-change | --ignore-whitespace ]
|
||||
[--whitespace=(nowarn|warn|fix|error|error-all)]
|
||||
[--exclude=<path>] [--include=<path>] [--directory=<root>]
|
||||
[--verbose] [--unsafe-paths] [<patch>...]
|
||||
@ -21,8 +21,6 @@ SYNOPSIS
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Reads the supplied diff output (i.e. "a patch") and applies it to files.
|
||||
When running from a subdirectory in a repository, patched paths
|
||||
outside the directory are ignored.
|
||||
With the `--index` option the patch is also applied to the index, and
|
||||
with the `--cached` option the patch is only applied to the index.
|
||||
Without these options, the command applies the patch only to files,
|
||||
|
@ -366,7 +366,7 @@ skip" to do the same thing. (In fact the special exit code 125 makes
|
||||
|
||||
Or if you want more control, you can inspect the current state using
|
||||
for example "git bisect visualize". It will launch gitk (or "git log"
|
||||
if the `DISPLAY` environment variable is not set) to help you find a
|
||||
if the DISPLAY environment variable is not set) to help you find a
|
||||
better bisection point.
|
||||
|
||||
Either way, if you have a string of untestable commits, it might
|
||||
@ -1321,7 +1321,7 @@ So git bisect is unconditional goodness - and feel free to quote that
|
||||
_____________
|
||||
|
||||
Acknowledgments
|
||||
---------------
|
||||
----------------
|
||||
|
||||
Many thanks to Junio Hamano for his help in reviewing this paper, for
|
||||
reviewing the patches I sent to the Git mailing list, for discussing
|
||||
|
@ -3,7 +3,7 @@ git-bisect(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-bisect - Use binary search to find the commit that introduced a bug
|
||||
git-bisect - Find by binary search the change that introduced a bug
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
@ -16,89 +16,74 @@ DESCRIPTION
|
||||
The command takes various subcommands, and different options depending
|
||||
on the subcommand:
|
||||
|
||||
git bisect start [--term-{old,good}=<term> --term-{new,bad}=<term>]
|
||||
[--no-checkout] [<bad> [<good>...]] [--] [<paths>...]
|
||||
git bisect (bad|new|<term-new>) [<rev>]
|
||||
git bisect (good|old|<term-old>) [<rev>...]
|
||||
git bisect terms [--term-good | --term-bad]
|
||||
git bisect help
|
||||
git bisect start [--no-checkout] [<bad> [<good>...]] [--] [<paths>...]
|
||||
git bisect bad [<rev>]
|
||||
git bisect good [<rev>...]
|
||||
git bisect skip [(<rev>|<range>)...]
|
||||
git bisect reset [<commit>]
|
||||
git bisect visualize
|
||||
git bisect replay <logfile>
|
||||
git bisect log
|
||||
git bisect run <cmd>...
|
||||
git bisect help
|
||||
|
||||
This command uses a binary search algorithm to find which commit in
|
||||
your project's history introduced a bug. You use it by first telling
|
||||
it a "bad" commit that is known to contain the bug, and a "good"
|
||||
commit that is known to be before the bug was introduced. Then `git
|
||||
bisect` picks a commit between those two endpoints and asks you
|
||||
whether the selected commit is "good" or "bad". It continues narrowing
|
||||
down the range until it finds the exact commit that introduced the
|
||||
change.
|
||||
This command uses 'git rev-list --bisect' to help drive the
|
||||
binary search process to find which change introduced a bug, given an
|
||||
old "good" commit object name and a later "bad" commit object name.
|
||||
|
||||
In fact, `git bisect` can be used to find the commit that changed
|
||||
*any* property of your project; e.g., the commit that fixed a bug, or
|
||||
the commit that caused a benchmark's performance to improve. To
|
||||
support this more general usage, the terms "old" and "new" can be used
|
||||
in place of "good" and "bad", or you can choose your own terms. See
|
||||
section "Alternate terms" below for more information.
|
||||
Getting help
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Use "git bisect" to get a short usage description, and "git bisect
|
||||
help" or "git bisect -h" to get a long usage description.
|
||||
|
||||
Basic bisect commands: start, bad, good
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
As an example, suppose you are trying to find the commit that broke a
|
||||
feature that was known to work in version `v2.6.13-rc2` of your
|
||||
project. You start a bisect session as follows:
|
||||
Using the Linux kernel tree as an example, basic use of the bisect
|
||||
command is as follows:
|
||||
|
||||
------------------------------------------------
|
||||
$ git bisect start
|
||||
$ git bisect bad # Current version is bad
|
||||
$ git bisect good v2.6.13-rc2 # v2.6.13-rc2 is known to be good
|
||||
$ git bisect good v2.6.13-rc2 # v2.6.13-rc2 was the last version
|
||||
# tested that was good
|
||||
------------------------------------------------
|
||||
|
||||
Once you have specified at least one bad and one good commit, `git
|
||||
bisect` selects a commit in the middle of that range of history,
|
||||
checks it out, and outputs something similar to the following:
|
||||
When you have specified at least one bad and one good version, the
|
||||
command bisects the revision tree and outputs something similar to
|
||||
the following:
|
||||
|
||||
------------------------------------------------
|
||||
Bisecting: 675 revisions left to test after this (roughly 10 steps)
|
||||
Bisecting: 675 revisions left to test after this
|
||||
------------------------------------------------
|
||||
|
||||
You should now compile the checked-out version and test it. If that
|
||||
version works correctly, type
|
||||
The state in the middle of the set of revisions is then checked out.
|
||||
You would now compile that kernel and boot it. If the booted kernel
|
||||
works correctly, you would then issue the following command:
|
||||
|
||||
------------------------------------------------
|
||||
$ git bisect good
|
||||
$ git bisect good # this one is good
|
||||
------------------------------------------------
|
||||
|
||||
If that version is broken, type
|
||||
The output of this command would be something similar to the following:
|
||||
|
||||
------------------------------------------------
|
||||
$ git bisect bad
|
||||
Bisecting: 337 revisions left to test after this
|
||||
------------------------------------------------
|
||||
|
||||
Then `git bisect` will respond with something like
|
||||
|
||||
------------------------------------------------
|
||||
Bisecting: 337 revisions left to test after this (roughly 9 steps)
|
||||
------------------------------------------------
|
||||
|
||||
Keep repeating the process: compile the tree, test it, and depending
|
||||
on whether it is good or bad run `git bisect good` or `git bisect bad`
|
||||
to ask for the next commit that needs testing.
|
||||
|
||||
Eventually there will be no more revisions left to inspect, and the
|
||||
command will print out a description of the first bad commit. The
|
||||
reference `refs/bisect/bad` will be left pointing at that commit.
|
||||
You keep repeating this process, compiling the tree, testing it, and
|
||||
depending on whether it is good or bad issuing the command "git bisect good"
|
||||
or "git bisect bad" to ask for the next bisection.
|
||||
|
||||
Eventually there will be no more revisions left to bisect, and you
|
||||
will have been left with the first bad kernel revision in "refs/bisect/bad".
|
||||
|
||||
Bisect reset
|
||||
~~~~~~~~~~~~
|
||||
|
||||
After a bisect session, to clean up the bisection state and return to
|
||||
the original HEAD, issue the following command:
|
||||
the original HEAD (i.e., to quit bisecting), issue the following command:
|
||||
|
||||
------------------------------------------------
|
||||
$ git bisect reset
|
||||
@ -115,83 +100,9 @@ instead:
|
||||
$ git bisect reset <commit>
|
||||
------------------------------------------------
|
||||
|
||||
For example, `git bisect reset bisect/bad` will check out the first
|
||||
bad revision, while `git bisect reset HEAD` will leave you on the
|
||||
current bisection commit and avoid switching commits at all.
|
||||
|
||||
|
||||
Alternate terms
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Sometimes you are not looking for the commit that introduced a
|
||||
breakage, but rather for a commit that caused a change between some
|
||||
other "old" state and "new" state. For example, you might be looking
|
||||
for the commit that introduced a particular fix. Or you might be
|
||||
looking for the first commit in which the source-code filenames were
|
||||
finally all converted to your company's naming standard. Or whatever.
|
||||
|
||||
In such cases it can be very confusing to use the terms "good" and
|
||||
"bad" to refer to "the state before the change" and "the state after
|
||||
the change". So instead, you can use the terms "old" and "new",
|
||||
respectively, in place of "good" and "bad". (But note that you cannot
|
||||
mix "good" and "bad" with "old" and "new" in a single session.)
|
||||
|
||||
In this more general usage, you provide `git bisect` with a "new"
|
||||
commit has some property and an "old" commit that doesn't have that
|
||||
property. Each time `git bisect` checks out a commit, you test if that
|
||||
commit has the property. If it does, mark the commit as "new";
|
||||
otherwise, mark it as "old". When the bisection is done, `git bisect`
|
||||
will report which commit introduced the property.
|
||||
|
||||
To use "old" and "new" instead of "good" and bad, you must run `git
|
||||
bisect start` without commits as argument and then run the following
|
||||
commands to add the commits:
|
||||
|
||||
------------------------------------------------
|
||||
git bisect old [<rev>]
|
||||
------------------------------------------------
|
||||
|
||||
to indicate that a commit was before the sought change, or
|
||||
|
||||
------------------------------------------------
|
||||
git bisect new [<rev>...]
|
||||
------------------------------------------------
|
||||
|
||||
to indicate that it was after.
|
||||
|
||||
To get a reminder of the currently used terms, use
|
||||
|
||||
------------------------------------------------
|
||||
git bisect terms
|
||||
------------------------------------------------
|
||||
|
||||
You can get just the old (respectively new) term with `git bisect term
|
||||
--term-old` or `git bisect term --term-good`.
|
||||
|
||||
If you would like to use your own terms instead of "bad"/"good" or
|
||||
"new"/"old", you can choose any names you like (except existing bisect
|
||||
subcommands like `reset`, `start`, ...) by starting the
|
||||
bisection using
|
||||
|
||||
------------------------------------------------
|
||||
git bisect start --term-old <term-old> --term-new <term-new>
|
||||
------------------------------------------------
|
||||
|
||||
For example, if you are looking for a commit that introduced a
|
||||
performance regression, you might use
|
||||
|
||||
------------------------------------------------
|
||||
git bisect start --term-old fast --term-new slow
|
||||
------------------------------------------------
|
||||
|
||||
Or if you are looking for the commit that fixed a bug, you might use
|
||||
|
||||
------------------------------------------------
|
||||
git bisect start --term-new fixed --term-old broken
|
||||
------------------------------------------------
|
||||
|
||||
Then, use `git bisect <term-old>` and `git bisect <term-new>` instead
|
||||
of `git bisect good` and `git bisect bad` to mark commits.
|
||||
For example, `git bisect reset HEAD` will leave you on the current
|
||||
bisection commit and avoid switching commits at all, while `git bisect
|
||||
reset bisect/bad` will check out the first bad revision.
|
||||
|
||||
Bisect visualize
|
||||
~~~~~~~~~~~~~~~~
|
||||
@ -205,7 +116,7 @@ $ git bisect visualize
|
||||
|
||||
`view` may also be used as a synonym for `visualize`.
|
||||
|
||||
If the `DISPLAY` environment variable is not set, 'git log' is used
|
||||
If the 'DISPLAY' environment variable is not set, 'git log' is used
|
||||
instead. You can also give command-line options such as `-p` and
|
||||
`--stat`.
|
||||
|
||||
@ -236,17 +147,17 @@ $ git bisect replay that-file
|
||||
Avoiding testing a commit
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If, in the middle of a bisect session, you know that the suggested
|
||||
revision is not a good one to test (e.g. it fails to build and you
|
||||
know that the failure does not have anything to do with the bug you
|
||||
are chasing), you can manually select a nearby commit and test that
|
||||
one instead.
|
||||
If, in the middle of a bisect session, you know that the next suggested
|
||||
revision is not a good one to test (e.g. the change the commit
|
||||
introduces is known not to work in your environment and you know it
|
||||
does not have anything to do with the bug you are chasing), you may
|
||||
want to find a nearby commit and try that instead.
|
||||
|
||||
For example:
|
||||
|
||||
------------
|
||||
$ git bisect good/bad # previous round was good or bad.
|
||||
Bisecting: 337 revisions left to test after this (roughly 9 steps)
|
||||
Bisecting: 337 revisions left to test after this
|
||||
$ git bisect visualize # oops, that is uninteresting.
|
||||
$ git reset --hard HEAD~3 # try 3 revisions before what
|
||||
# was suggested
|
||||
@ -256,21 +167,20 @@ Then compile and test the chosen revision, and afterwards mark
|
||||
the revision as good or bad in the usual manner.
|
||||
|
||||
Bisect skip
|
||||
~~~~~~~~~~~
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Instead of choosing a nearby commit by yourself, you can ask Git to do
|
||||
it for you by issuing the command:
|
||||
Instead of choosing by yourself a nearby commit, you can ask Git
|
||||
to do it for you by issuing the command:
|
||||
|
||||
------------
|
||||
$ git bisect skip # Current version cannot be tested
|
||||
------------
|
||||
|
||||
However, if you skip a commit adjacent to the one you are looking for,
|
||||
Git will be unable to tell exactly which of those commits was the
|
||||
first bad one.
|
||||
But Git may eventually be unable to tell the first bad commit among
|
||||
a bad commit and one or more skipped commits.
|
||||
|
||||
You can also skip a range of commits, instead of just one commit,
|
||||
using range notation. For example:
|
||||
You can even skip a range of commits, instead of just one commit,
|
||||
using the "'<commit1>'..'<commit2>'" notation. For example:
|
||||
|
||||
------------
|
||||
$ git bisect skip v2.5..v2.6
|
||||
@ -286,8 +196,8 @@ would issue the command:
|
||||
$ git bisect skip v2.5 v2.5..v2.6
|
||||
------------
|
||||
|
||||
This tells the bisect process that the commits between `v2.5` and
|
||||
`v2.6` (inclusive) should be skipped.
|
||||
This tells the bisect process that the commits between `v2.5` included
|
||||
and `v2.6` included should be skipped.
|
||||
|
||||
|
||||
Cutting down bisection by giving more parameters to bisect start
|
||||
@ -321,23 +231,23 @@ or bad, you can bisect by issuing the command:
|
||||
$ git bisect run my_script arguments
|
||||
------------
|
||||
|
||||
Note that the script (`my_script` in the above example) should exit
|
||||
with code 0 if the current source code is good/old, and exit with a
|
||||
code between 1 and 127 (inclusive), except 125, if the current source
|
||||
code is bad/new.
|
||||
Note that the script (`my_script` in the above example) should
|
||||
exit with code 0 if the current source code is good, and exit with a
|
||||
code between 1 and 127 (inclusive), except 125, if the current
|
||||
source code is bad.
|
||||
|
||||
Any other exit code will abort the bisect process. It should be noted
|
||||
that a program that terminates via `exit(-1)` leaves $? = 255, (see the
|
||||
exit(3) manual page), as the value is chopped with `& 0377`.
|
||||
that a program that terminates via "exit(-1)" leaves $? = 255, (see the
|
||||
exit(3) manual page), as the value is chopped with "& 0377".
|
||||
|
||||
The special exit code 125 should be used when the current source code
|
||||
cannot be tested. If the script exits with this code, the current
|
||||
revision will be skipped (see `git bisect skip` above). 125 was chosen
|
||||
as the highest sensible value to use for this purpose, because 126 and 127
|
||||
are used by POSIX shells to signal specific error status (127 is for
|
||||
command not found, 126 is for command found but not executable--these
|
||||
command not found, 126 is for command found but not executable---these
|
||||
details do not matter, as they are normal errors in the script, as far as
|
||||
`bisect run` is concerned).
|
||||
"bisect run" is concerned).
|
||||
|
||||
You may often find that during a bisect session you want to have
|
||||
temporary modifications (e.g. s/#define DEBUG 0/#define DEBUG 1/ in a
|
||||
@ -350,7 +260,7 @@ next revision to test, the script can apply the patch
|
||||
before compiling, run the real test, and afterwards decide if the
|
||||
revision (possibly with the needed patch) passed the test and then
|
||||
rewind the tree to the pristine state. Finally the script should exit
|
||||
with the status of the real test to let the `git bisect run` command loop
|
||||
with the status of the real test to let the "git bisect run" command loop
|
||||
determine the eventual outcome of the bisect session.
|
||||
|
||||
OPTIONS
|
||||
@ -358,7 +268,7 @@ OPTIONS
|
||||
--no-checkout::
|
||||
+
|
||||
Do not checkout the new working tree at each iteration of the bisection
|
||||
process. Instead just update a special reference named `BISECT_HEAD` to make
|
||||
process. Instead just update a special reference named 'BISECT_HEAD' to make
|
||||
it point to the commit that should be tested.
|
||||
+
|
||||
This option may be useful when the test you would perform in each step
|
||||
@ -397,12 +307,12 @@ $ git bisect run ~/test.sh
|
||||
$ git bisect reset # quit the bisect session
|
||||
------------
|
||||
+
|
||||
Here we use a `test.sh` custom script. In this script, if `make`
|
||||
Here we use a "test.sh" custom script. In this script, if "make"
|
||||
fails, we skip the current commit.
|
||||
`check_test_case.sh` should `exit 0` if the test case passes,
|
||||
and `exit 1` otherwise.
|
||||
"check_test_case.sh" should "exit 0" if the test case passes,
|
||||
and "exit 1" otherwise.
|
||||
+
|
||||
It is safer if both `test.sh` and `check_test_case.sh` are
|
||||
It is safer if both "test.sh" and "check_test_case.sh" are
|
||||
outside the repository to prevent interactions between the bisect,
|
||||
make and test processes and the scripts.
|
||||
|
||||
@ -469,26 +379,6 @@ In this case, when 'git bisect run' finishes, bisect/bad will refer to a commit
|
||||
has at least one parent whose reachable graph is fully traversable in the sense
|
||||
required by 'git pack objects'.
|
||||
|
||||
* Look for a fix instead of a regression in the code
|
||||
+
|
||||
------------
|
||||
$ git bisect start
|
||||
$ git bisect new HEAD # current commit is marked as new
|
||||
$ git bisect old HEAD~10 # the tenth commit from now is marked as old
|
||||
------------
|
||||
+
|
||||
or:
|
||||
------------
|
||||
$ git bisect start --term-old broken --term-new fixed
|
||||
$ git bisect fixed
|
||||
$ git bisect broken HEAD~10
|
||||
------------
|
||||
|
||||
Getting help
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Use `git bisect` to get a short usage description, and `git bisect
|
||||
help` or `git bisect -h` to get a long usage description.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
@ -10,8 +10,7 @@ SYNOPSIS
|
||||
[verse]
|
||||
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
|
||||
[-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
|
||||
[--progress] [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>..<rev>]
|
||||
[--] <file>
|
||||
[--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>] [--] <file>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -77,8 +76,6 @@ include::blame-options.txt[]
|
||||
-e::
|
||||
--show-email::
|
||||
Show the author email instead of author name (Default: off).
|
||||
This can also be controlled via the `blame.showEmail` config
|
||||
option.
|
||||
|
||||
-w::
|
||||
Ignore whitespace when comparing the parent's version and
|
||||
@ -89,8 +86,6 @@ include::blame-options.txt[]
|
||||
abbreviated object name, use <n>+1 digits. Note that 1 column
|
||||
is used for a caret to mark the boundary commit.
|
||||
|
||||
include::diff-heuristic-options.txt[]
|
||||
|
||||
|
||||
THE PORCELAIN FORMAT
|
||||
--------------------
|
||||
|
@ -11,8 +11,7 @@ SYNOPSIS
|
||||
'git branch' [--color[=<when>] | --no-color] [-r | -a]
|
||||
[--list] [-v [--abbrev=<length> | --no-abbrev]]
|
||||
[--column[=<options>] | --no-column]
|
||||
[(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>]
|
||||
[--points-at <object>] [<pattern>...]
|
||||
[(--merged | --no-merged | --contains) [<commit>]] [<pattern>...]
|
||||
'git branch' [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
|
||||
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
||||
'git branch' --unset-upstream [<branchname>]
|
||||
@ -39,10 +38,10 @@ named commit). With `--merged`, only branches merged into the named
|
||||
commit (i.e. the branches whose tip commits are reachable from the named
|
||||
commit) will be listed. With `--no-merged` only branches not merged into
|
||||
the named commit will be listed. If the <commit> argument is missing it
|
||||
defaults to `HEAD` (i.e. the tip of the current branch).
|
||||
defaults to 'HEAD' (i.e. the tip of the current branch).
|
||||
|
||||
The command's second form creates a new branch head named <branchname>
|
||||
which points to the current `HEAD`, or <start-point> if given.
|
||||
which points to the current 'HEAD', or <start-point> if given.
|
||||
|
||||
Note that this will create the new branch, but it will not switch the
|
||||
working tree to it; use "git checkout <newbranch>" to switch to the
|
||||
@ -91,9 +90,6 @@ OPTIONS
|
||||
based sha1 expressions such as "<branchname>@\{yesterday}".
|
||||
Note that in non-bare repositories, reflogs are usually
|
||||
enabled by default by the `core.logallrefupdates` config option.
|
||||
The negated form `--no-create-reflog` only overrides an earlier
|
||||
`--create-reflog`, but currently does not negate the setting of
|
||||
`core.logallrefupdates`.
|
||||
|
||||
-f::
|
||||
--force::
|
||||
@ -121,10 +117,6 @@ OPTIONS
|
||||
default to color output.
|
||||
Same as `--color=never`.
|
||||
|
||||
-i::
|
||||
--ignore-case::
|
||||
Sorting and filtering branches are case insensitive.
|
||||
|
||||
--column[=<options>]::
|
||||
--no-column::
|
||||
Display branch listing in columns. See configuration variable
|
||||
@ -179,7 +171,7 @@ This option is only applicable in non-verbose mode.
|
||||
+
|
||||
This behavior is the default when the start point is a remote-tracking branch.
|
||||
Set the branch.autoSetupMerge configuration variable to `false` if you
|
||||
want `git checkout` and `git branch` to always behave as if `--no-track`
|
||||
want `git checkout` and `git branch` to always behave as if '--no-track'
|
||||
were given. Set it to `always` if you want this behavior when the
|
||||
start-point is either a local or remote-tracking branch.
|
||||
|
||||
@ -205,9 +197,7 @@ start-point is either a local or remote-tracking branch.
|
||||
|
||||
--edit-description::
|
||||
Open an editor and edit the text to explain what the branch is
|
||||
for, to be used by various other commands (e.g. `format-patch`,
|
||||
`request-pull`, and `merge` (if enabled)). Multi-line explanations
|
||||
may be used.
|
||||
for, to be used by various other commands (e.g. `request-pull`).
|
||||
|
||||
--contains [<commit>]::
|
||||
Only list branches which contain the specified commit (HEAD
|
||||
@ -239,19 +229,6 @@ start-point is either a local or remote-tracking branch.
|
||||
The new name for an existing branch. The same restrictions as for
|
||||
<branchname> apply.
|
||||
|
||||
--sort=<key>::
|
||||
Sort based on the key given. Prefix `-` to sort in descending
|
||||
order of the value. You may use the --sort=<key> option
|
||||
multiple times, in which case the last key becomes the primary
|
||||
key. The keys supported are the same as those in `git
|
||||
for-each-ref`. Sort order defaults to sorting based on the
|
||||
full refname (including `refs/...` prefix). This lists
|
||||
detached HEAD (if present) first, then local branches and
|
||||
finally remote-tracking branches.
|
||||
|
||||
|
||||
--points-at <object>::
|
||||
Only list branches of the given object.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
@ -20,7 +20,7 @@ DESCRIPTION
|
||||
Some workflows require that one or more branches of development on one
|
||||
machine be replicated on another machine, but the two machines cannot
|
||||
be directly connected, and therefore the interactive Git protocols (git,
|
||||
ssh, http) cannot be used. This command provides support for
|
||||
ssh, rsync, http) cannot be used. This command provides support for
|
||||
'git fetch' and 'git pull' to operate by packaging objects and references
|
||||
in an archive at the originating machine, then importing those into
|
||||
another repository using 'git fetch' and 'git pull'
|
||||
|
@ -9,22 +9,18 @@ git-cat-file - Provide content or type and size information for repository objec
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git cat-file' (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <type> | --textconv | --filters ) [--path=<path>] <object>
|
||||
'git cat-file' (--batch | --batch-check) [ --textconv | --filters ] [--follow-symlinks]
|
||||
'git cat-file' (-t | -s | -e | -p | <type> | --textconv ) <object>
|
||||
'git cat-file' (--batch | --batch-check) < <list-of-objects>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
In its first form, the command provides the content or the type of an object in
|
||||
the repository. The type is required unless `-t` or `-p` is used to find the
|
||||
object type, or `-s` is used to find the object size, or `--textconv` or
|
||||
`--filters` is used (which imply type "blob").
|
||||
the repository. The type is required unless '-t' or '-p' is used to find the
|
||||
object type, or '-s' is used to find the object size, or '--textconv' is used
|
||||
(which implies type "blob").
|
||||
|
||||
In the second form, a list of objects (separated by linefeeds) is provided on
|
||||
stdin, and the SHA-1, type, and size of each object is printed on stdout. The
|
||||
output format can be overridden using the optional `<format>` argument. If
|
||||
either `--textconv` or `--filters` was specified, the input is expected to
|
||||
list the object names followed by the path name, separated by a single white
|
||||
space, so that the appropriate drivers can be determined.
|
||||
stdin, and the SHA-1, type, and size of each object is printed on stdout.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -58,119 +54,30 @@ OPTIONS
|
||||
|
||||
--textconv::
|
||||
Show the content as transformed by a textconv filter. In this case,
|
||||
<object> has to be of the form <tree-ish>:<path>, or :<path> in
|
||||
order to apply the filter to the content recorded in the index at
|
||||
<path>.
|
||||
|
||||
--filters::
|
||||
Show the content as converted by the filters configured in
|
||||
the current working tree for the given <path> (i.e. smudge filters,
|
||||
end-of-line conversion, etc). In this case, <object> has to be of
|
||||
the form <tree-ish>:<path>, or :<path>.
|
||||
|
||||
--path=<path>::
|
||||
For use with --textconv or --filters, to allow specifying an object
|
||||
name and a path separately, e.g. when it is difficult to figure out
|
||||
the revision from which the blob came.
|
||||
<object> has be of the form <tree-ish>:<path>, or :<path> in order
|
||||
to apply the filter to the content recorded in the index at <path>.
|
||||
|
||||
--batch::
|
||||
--batch=<format>::
|
||||
Print object information and contents for each object provided
|
||||
on stdin. May not be combined with any other options or arguments
|
||||
except `--textconv` or `--filters`, in which case the input lines
|
||||
also need to specify the path, separated by white space. See the
|
||||
section `BATCH OUTPUT` below for details.
|
||||
on stdin. May not be combined with any other options or arguments.
|
||||
See the section `BATCH OUTPUT` below for details.
|
||||
|
||||
--batch-check::
|
||||
--batch-check=<format>::
|
||||
Print object information for each object provided on stdin. May
|
||||
not be combined with any other options or arguments except
|
||||
`--textconv` or `--filters`, in which case the input lines also
|
||||
need to specify the path, separated by white space. See the
|
||||
not be combined with any other options or arguments. See the
|
||||
section `BATCH OUTPUT` below for details.
|
||||
|
||||
--batch-all-objects::
|
||||
Instead of reading a list of objects on stdin, perform the
|
||||
requested batch operation on all objects in the repository and
|
||||
any alternate object stores (not just reachable objects).
|
||||
Requires `--batch` or `--batch-check` be specified. Note that
|
||||
the objects are visited in order sorted by their hashes.
|
||||
|
||||
--buffer::
|
||||
Normally batch output is flushed after each object is output, so
|
||||
that a process can interactively read and write from
|
||||
`cat-file`. With this option, the output uses normal stdio
|
||||
buffering; this is much more efficient when invoking
|
||||
`--batch-check` on a large number of objects.
|
||||
|
||||
--allow-unknown-type::
|
||||
Allow -s or -t to query broken/corrupt objects of unknown type.
|
||||
|
||||
--follow-symlinks::
|
||||
With --batch or --batch-check, follow symlinks inside the
|
||||
repository when requesting objects with extended SHA-1
|
||||
expressions of the form tree-ish:path-in-tree. Instead of
|
||||
providing output about the link itself, provide output about
|
||||
the linked-to object. If a symlink points outside the
|
||||
tree-ish (e.g. a link to /foo or a root-level link to ../foo),
|
||||
the portion of the link which is outside the tree will be
|
||||
printed.
|
||||
+
|
||||
This option does not (currently) work correctly when an object in the
|
||||
index is specified (e.g. `:link` instead of `HEAD:link`) rather than
|
||||
one in the tree.
|
||||
+
|
||||
This option cannot (currently) be used unless `--batch` or
|
||||
`--batch-check` is used.
|
||||
+
|
||||
For example, consider a git repository containing:
|
||||
+
|
||||
--
|
||||
f: a file containing "hello\n"
|
||||
link: a symlink to f
|
||||
dir/link: a symlink to ../f
|
||||
plink: a symlink to ../f
|
||||
alink: a symlink to /etc/passwd
|
||||
--
|
||||
+
|
||||
For a regular file `f`, `echo HEAD:f | git cat-file --batch` would print
|
||||
+
|
||||
--
|
||||
ce013625030ba8dba906f756967f9e9ca394464a blob 6
|
||||
--
|
||||
+
|
||||
And `echo HEAD:link | git cat-file --batch --follow-symlinks` would
|
||||
print the same thing, as would `HEAD:dir/link`, as they both point at
|
||||
`HEAD:f`.
|
||||
+
|
||||
Without `--follow-symlinks`, these would print data about the symlink
|
||||
itself. In the case of `HEAD:link`, you would see
|
||||
+
|
||||
--
|
||||
4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1
|
||||
--
|
||||
+
|
||||
Both `plink` and `alink` point outside the tree, so they would
|
||||
respectively print:
|
||||
+
|
||||
--
|
||||
symlink 4
|
||||
../f
|
||||
|
||||
symlink 11
|
||||
/etc/passwd
|
||||
--
|
||||
|
||||
|
||||
OUTPUT
|
||||
------
|
||||
If `-t` is specified, one of the <type>.
|
||||
If '-t' is specified, one of the <type>.
|
||||
|
||||
If `-s` is specified, the size of the <object> in bytes.
|
||||
If '-s' is specified, the size of the <object> in bytes.
|
||||
|
||||
If `-e` is specified, no output.
|
||||
If '-e' is specified, no output.
|
||||
|
||||
If `-p` is specified, the contents of <object> are pretty-printed.
|
||||
If '-p' is specified, the contents of <object> are pretty-printed.
|
||||
|
||||
If <type> is specified, the raw (though uncompressed) contents of the <object>
|
||||
will be returned.
|
||||
@ -241,47 +148,6 @@ the repository, then `cat-file` will ignore any custom format and print:
|
||||
<object> SP missing LF
|
||||
------------
|
||||
|
||||
If --follow-symlinks is used, and a symlink in the repository points
|
||||
outside the repository, then `cat-file` will ignore any custom format
|
||||
and print:
|
||||
|
||||
------------
|
||||
symlink SP <size> LF
|
||||
<symlink> LF
|
||||
------------
|
||||
|
||||
The symlink will either be absolute (beginning with a /), or relative
|
||||
to the tree root. For instance, if dir/link points to ../../foo, then
|
||||
<symlink> will be ../foo. <size> is the size of the symlink in bytes.
|
||||
|
||||
If --follow-symlinks is used, the following error messages will be
|
||||
displayed:
|
||||
|
||||
------------
|
||||
<object> SP missing LF
|
||||
------------
|
||||
is printed when the initial symlink requested does not exist.
|
||||
|
||||
------------
|
||||
dangling SP <size> LF
|
||||
<object> LF
|
||||
------------
|
||||
is printed when the initial symlink exists, but something that
|
||||
it (transitive-of) points to does not.
|
||||
|
||||
------------
|
||||
loop SP <size> LF
|
||||
<object> LF
|
||||
------------
|
||||
is printed for symlink loops (or any symlinks that
|
||||
require more than 40 link resolutions to resolve).
|
||||
|
||||
------------
|
||||
notdir SP <size> LF
|
||||
<object> LF
|
||||
------------
|
||||
is printed when, during symlink resolution, a file is used as a
|
||||
directory name.
|
||||
|
||||
CAVEATS
|
||||
-------
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git check-attr' [-a | --all | attr...] [--] pathname...
|
||||
'git check-attr' --stdin [-z] [-a | --all | attr...]
|
||||
'git check-attr' --stdin [-z] [-a | --all | attr...] < <list-of-paths>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -28,8 +28,7 @@ OPTIONS
|
||||
Consider `.gitattributes` in the index only, ignoring the working tree.
|
||||
|
||||
--stdin::
|
||||
Read pathnames from the standard input, one per line,
|
||||
instead of from the command-line.
|
||||
Read file names from stdin instead of from the command-line.
|
||||
|
||||
-z::
|
||||
The output format is modified to be machine-parseable.
|
||||
|
@ -10,15 +10,16 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git check-ignore' [options] pathname...
|
||||
'git check-ignore' [options] --stdin
|
||||
'git check-ignore' [options] --stdin < <list-of-paths>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
For each pathname given via the command-line or from a file via
|
||||
`--stdin`, check whether the file is excluded by .gitignore (or other
|
||||
input files to the exclude mechanism) and output the path if it is
|
||||
excluded.
|
||||
`--stdin`, show the pattern from .gitignore (or other input files to
|
||||
the exclude mechanism) that decides if the pathname is excluded or
|
||||
included. Later patterns within a file take precedence over earlier
|
||||
ones.
|
||||
|
||||
By default, tracked files are not shown at all since they are not
|
||||
subject to exclude rules; but see `--no-index'.
|
||||
@ -31,12 +32,10 @@ OPTIONS
|
||||
|
||||
-v, --verbose::
|
||||
Also output details about the matching pattern (if any)
|
||||
for each given pathname. For precedence rules within and
|
||||
between exclude sources, see linkgit:gitignore[5].
|
||||
for each given pathname.
|
||||
|
||||
--stdin::
|
||||
Read pathnames from the standard input, one per line,
|
||||
instead of from the command-line.
|
||||
Read file names from stdin instead of from the command-line.
|
||||
|
||||
-z::
|
||||
The output format is modified to be machine-parseable (see
|
||||
@ -112,7 +111,7 @@ EXIT STATUS
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:gitignore[5]
|
||||
linkgit:git-config[1]
|
||||
linkgit:gitconfig[5]
|
||||
linkgit:git-ls-files[1]
|
||||
|
||||
GIT
|
||||
|
@ -60,7 +60,7 @@ Git imposes the following rules on how references are named:
|
||||
|
||||
These rules make it easy for shell script based tools to parse
|
||||
reference names, pathname expansion by the shell when a reference name is used
|
||||
unquoted (by mistake), and also avoid ambiguities in certain
|
||||
unquoted (by mistake), and also avoids ambiguities in certain
|
||||
reference name expressions (see linkgit:gitrevisions[7]):
|
||||
|
||||
. A double-dot `..` is often used as in `ref1..ref2`, and in some
|
||||
@ -94,8 +94,8 @@ OPTIONS
|
||||
Interpret <refname> as a reference name pattern for a refspec
|
||||
(as used with remote repositories). If this option is
|
||||
enabled, <refname> is allowed to contain a single `*`
|
||||
in the refspec (e.g., `foo/bar*/baz` or `foo/bar*baz/`
|
||||
but not `foo/bar*/baz*`).
|
||||
in place of a one full pathname component (e.g.,
|
||||
`foo/*/bar` but not `foo/bar*`).
|
||||
|
||||
--normalize::
|
||||
Normalize 'refname' by removing any leading slash (`/`)
|
||||
@ -118,8 +118,8 @@ $ git check-ref-format --branch @{-1}
|
||||
* Determine the reference name to use for a new branch:
|
||||
+
|
||||
------------
|
||||
$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")||
|
||||
{ echo "we do not like '$newbranch' as a branch name." >&2 ; exit 1 ; }
|
||||
$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch") ||
|
||||
die "we do not like '$newbranch' as a branch name."
|
||||
------------
|
||||
|
||||
GIT
|
||||
|
@ -107,12 +107,6 @@ OPTIONS
|
||||
--quiet::
|
||||
Quiet, suppress feedback messages.
|
||||
|
||||
--[no-]progress::
|
||||
Progress status is reported on the standard error stream
|
||||
by default when it is attached to a terminal, unless `--quiet`
|
||||
is specified. This flag enables progress reporting even if not
|
||||
attached to a terminal, regardless of `--quiet`.
|
||||
|
||||
-f::
|
||||
--force::
|
||||
When switching branches, proceed even if the index or the
|
||||
@ -126,21 +120,6 @@ entries; instead, unmerged entries are ignored.
|
||||
--theirs::
|
||||
When checking out paths from the index, check out stage #2
|
||||
('ours') or #3 ('theirs') for unmerged paths.
|
||||
+
|
||||
Note that during `git rebase` and `git pull --rebase`, 'ours' and
|
||||
'theirs' may appear swapped; `--ours` gives the version from the
|
||||
branch the changes are rebased onto, while `--theirs` gives the
|
||||
version from the branch that holds your work that is being rebased.
|
||||
+
|
||||
This is because `rebase` is used in a workflow that treats the
|
||||
history at the remote as the shared canonical one, and treats the
|
||||
work done on the branch you are rebasing as the third-party work to
|
||||
be integrated, and you are temporarily assuming the role of the
|
||||
keeper of the canonical history during the rebase. As the keeper of
|
||||
the canonical history, you need to view the history from the remote
|
||||
as `ours` (i.e. "our shared canonical history"), while what you did
|
||||
on your side branch as `theirs` (i.e. "one contributor's work on top
|
||||
of it").
|
||||
|
||||
-b <new_branch>::
|
||||
Create a new branch named <new_branch> and start it at
|
||||
@ -157,7 +136,7 @@ of it").
|
||||
When creating a new branch, set up "upstream" configuration. See
|
||||
"--track" in linkgit:git-branch[1] for details.
|
||||
+
|
||||
If no `-b` option is given, the name of the new branch will be
|
||||
If no '-b' option is given, the name of the new branch will be
|
||||
derived from the remote-tracking branch, by looking at the local part of
|
||||
the refspec configured for the corresponding remote, and then stripping
|
||||
the initial part up to the "*".
|
||||
@ -165,7 +144,7 @@ This would tell us to use "hack" as the local branch when branching
|
||||
off of "origin/hack" (or "remotes/origin/hack", or even
|
||||
"refs/remotes/origin/hack"). If the given name has no slash, or the above
|
||||
guessing results in an empty name, the guessing is aborted. You can
|
||||
explicitly give a name with `-b` in such a case.
|
||||
explicitly give a name with '-b' in such a case.
|
||||
|
||||
--no-track::
|
||||
Do not set up "upstream" configuration, even if the
|
||||
@ -250,12 +229,6 @@ This means that you can use `git checkout -p` to selectively discard
|
||||
edits from your current working tree. See the ``Interactive Mode''
|
||||
section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
|
||||
|
||||
--ignore-other-worktrees::
|
||||
`git checkout` refuses when the wanted ref is already checked
|
||||
out by another worktree. This option makes it check the ref
|
||||
out anyway. In other words, the ref can be held by more than one
|
||||
worktree.
|
||||
|
||||
<branch>::
|
||||
Branch to checkout; if it refers to a branch (i.e., a name that,
|
||||
when prepended with "refs/heads/", is a valid ref), then that
|
||||
@ -419,18 +392,6 @@ $ git reflog -2 HEAD # or
|
||||
$ git log -g -2 HEAD
|
||||
------------
|
||||
|
||||
ARGUMENT DISAMBIGUATION
|
||||
-----------------------
|
||||
|
||||
When there is only one argument given and it is not `--` (e.g. "git
|
||||
checkout abc"), and when the argument is both a valid `<tree-ish>`
|
||||
(e.g. a branch "abc" exists) and a valid `<pathspec>` (e.g. a file
|
||||
or a directory whose name is "abc" exists), Git would usually ask
|
||||
you to disambiguate. Because checking out a branch is so common an
|
||||
operation, however, "git checkout abc" takes "abc" as a `<tree-ish>`
|
||||
in such a situation. Use `git checkout -- <pathspec>` if you want
|
||||
to checkout these paths out of the index.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
|
@ -9,7 +9,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--ff]
|
||||
[-S[<keyid>]] <commit>...
|
||||
[-S[<key-id>]] <commit>...
|
||||
'git cherry-pick' --continue
|
||||
'git cherry-pick' --quit
|
||||
'git cherry-pick' --abort
|
||||
@ -47,7 +47,7 @@ OPTIONS
|
||||
For a more complete list of ways to spell commits, see
|
||||
linkgit:gitrevisions[7].
|
||||
Sets of commits can be passed but no traversal is done by
|
||||
default, as if the `--no-walk` option was specified, see
|
||||
default, as if the '--no-walk' option was specified, see
|
||||
linkgit:git-rev-list[1]. Note that specifying a range will
|
||||
feed all <commit>... arguments to a single revision walk
|
||||
(see a later example that uses 'maint master..next').
|
||||
@ -100,13 +100,10 @@ effect to your index in a row.
|
||||
-s::
|
||||
--signoff::
|
||||
Add Signed-off-by line at the end of the commit message.
|
||||
See the signoff option in linkgit:git-commit[1] for more information.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
defaults to the committer identity; if specified, it must be
|
||||
stuck to the option without a space.
|
||||
-S[<key-id>]::
|
||||
--gpg-sign[=<key-id>]::
|
||||
GPG-sign commits.
|
||||
|
||||
--ff::
|
||||
If the current HEAD is the same as the parent of the
|
||||
@ -128,7 +125,7 @@ effect to your index in a row.
|
||||
|
||||
--allow-empty-message::
|
||||
By default, cherry-picking a commit with an empty message will fail.
|
||||
This option overrides that behavior, allowing commits with empty
|
||||
This option overrides that behaviour, allowing commits with empty
|
||||
messages to be cherry picked.
|
||||
|
||||
--keep-redundant-commits::
|
||||
|
@ -16,7 +16,7 @@ DESCRIPTION
|
||||
Cleans the working tree by recursively removing files that are not
|
||||
under version control, starting from the current directory.
|
||||
|
||||
Normally, only files unknown to Git are removed, but if the `-x`
|
||||
Normally, only files unknown to Git are removed, but if the '-x'
|
||||
option is specified, ignored files are also removed. This can, for
|
||||
example, be useful to remove all build products.
|
||||
|
||||
@ -37,7 +37,9 @@ OPTIONS
|
||||
to false, 'git clean' will refuse to delete files or directories
|
||||
unless given -f, -n or -i. Git will refuse to delete directories
|
||||
with .git sub directory or file unless a second -f
|
||||
is given.
|
||||
is given. This affects also git submodules where the storage area
|
||||
of the removed submodule under .git/modules/ is not removed until
|
||||
-f is given twice.
|
||||
|
||||
-i::
|
||||
--interactive::
|
||||
|
@ -14,8 +14,8 @@ SYNOPSIS
|
||||
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
|
||||
[--dissociate] [--separate-git-dir <git dir>]
|
||||
[--depth <depth>] [--[no-]single-branch]
|
||||
[--recursive | --recurse-submodules] [--[no-]shallow-submodules]
|
||||
[--jobs <n>] [--] <repository> [<directory>]
|
||||
[--recursive | --recurse-submodules] [--] <repository>
|
||||
[<directory>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -90,16 +90,13 @@ If you want to break the dependency of a repository cloned with `-s` on
|
||||
its source repository, you can simply run `git repack -a` to copy all
|
||||
objects from the source repository into a pack in the cloned repository.
|
||||
|
||||
--reference[-if-able] <repository>::
|
||||
--reference <repository>::
|
||||
If the reference repository is on the local machine,
|
||||
automatically setup `.git/objects/info/alternates` to
|
||||
obtain objects from the reference repository. Using
|
||||
an already existing repository as an alternate will
|
||||
require fewer objects to be copied from the repository
|
||||
being cloned, reducing network and local storage costs.
|
||||
When using the `--reference-if-able`, a non existing
|
||||
directory is skipped with a warning instead of aborting
|
||||
the clone.
|
||||
+
|
||||
*NOTE*: see the NOTE for the `--shared` option, and also the
|
||||
`--dissociate` option.
|
||||
@ -107,18 +104,14 @@ objects from the source repository into a pack in the cloned repository.
|
||||
--dissociate::
|
||||
Borrow the objects from reference repositories specified
|
||||
with the `--reference` options only to reduce network
|
||||
transfer, and stop borrowing from them after a clone is made
|
||||
by making necessary local copies of borrowed objects. This
|
||||
option can also be used when cloning locally from a
|
||||
repository that already borrows objects from another
|
||||
repository--the new repository will borrow objects from the
|
||||
same repository, and this option can be used to stop the
|
||||
borrowing.
|
||||
transfer and stop borrowing from them after a clone is made
|
||||
by making necessary local copies of borrowed objects.
|
||||
|
||||
--quiet::
|
||||
-q::
|
||||
Operate quietly. Progress is not reported to the standard
|
||||
error stream.
|
||||
error stream. This flag is also passed to the `rsync'
|
||||
command when given.
|
||||
|
||||
--verbose::
|
||||
-v::
|
||||
@ -192,23 +185,15 @@ objects from the source repository into a pack in the cloned repository.
|
||||
|
||||
--depth <depth>::
|
||||
Create a 'shallow' clone with a history truncated to the
|
||||
specified number of commits. Implies `--single-branch` unless
|
||||
`--no-single-branch` is given to fetch the histories near the
|
||||
tips of all branches. If you want to clone submodules shallowly,
|
||||
also pass `--shallow-submodules`.
|
||||
|
||||
--shallow-since=<date>::
|
||||
Create a shallow clone with a history after the specified time.
|
||||
|
||||
--shallow-exclude=<revision>::
|
||||
Create a shallow clone with a history, excluding commits
|
||||
reachable from a specified remote branch or tag. This option
|
||||
can be specified multiple times.
|
||||
specified number of revisions.
|
||||
|
||||
--[no-]single-branch::
|
||||
Clone only the history leading to the tip of a single branch,
|
||||
either specified by the `--branch` option or the primary
|
||||
branch remote's `HEAD` points at.
|
||||
branch remote's `HEAD` points at. When creating a shallow
|
||||
clone with the `--depth` option, this is the default, unless
|
||||
`--no-single-branch` is given to fetch the histories near the
|
||||
tips of all branches.
|
||||
Further fetches into the resulting repository will only update the
|
||||
remote-tracking branch for the branch this option was used for the
|
||||
initial cloning. If the HEAD at the remote did not point at any
|
||||
@ -224,9 +209,6 @@ objects from the source repository into a pack in the cloned repository.
|
||||
repository does not have a worktree/checkout (i.e. if any of
|
||||
`--no-checkout`/`-n`, `--bare`, or `--mirror` is given)
|
||||
|
||||
--[no-]shallow-submodules::
|
||||
All submodules which are cloned will be shallow with a depth of 1.
|
||||
|
||||
--separate-git-dir=<git dir>::
|
||||
Instead of placing the cloned repository where it is supposed
|
||||
to be, place the cloned repository at the specified directory,
|
||||
@ -234,10 +216,6 @@ objects from the source repository into a pack in the cloned repository.
|
||||
The result is Git repository can be separated from working
|
||||
tree.
|
||||
|
||||
-j <n>::
|
||||
--jobs <n>::
|
||||
The number of submodules fetched at the same time.
|
||||
Defaults to the `submodule.fetchJobs` option.
|
||||
|
||||
<repository>::
|
||||
The (possibly remote) repository to clone from. See the
|
||||
|
@ -9,7 +9,7 @@ git-commit-tree - Create a new commit object
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git commit-tree' <tree> [(-p <parent>)...]
|
||||
'git commit-tree' <tree> [(-p <parent>)...] < changelog
|
||||
'git commit-tree' [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...]
|
||||
[(-F <file>)...] <tree>
|
||||
|
||||
@ -44,7 +44,7 @@ OPTIONS
|
||||
An existing tree object
|
||||
|
||||
-p <parent>::
|
||||
Each `-p` indicates the id of a parent commit object.
|
||||
Each '-p' indicates the id of a parent commit object.
|
||||
|
||||
-m <message>::
|
||||
A paragraph in the commit log message. This can be given more than
|
||||
@ -56,13 +56,11 @@ OPTIONS
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
defaults to the committer identity; if specified, it must be
|
||||
stuck to the option without a space.
|
||||
GPG-sign commit.
|
||||
|
||||
--no-gpg-sign::
|
||||
Do not GPG-sign commit, to countermand a `--gpg-sign` option
|
||||
given earlier on the command line.
|
||||
Countermand `commit.gpgSign` configuration variable that is
|
||||
set to force each and every commit to be signed.
|
||||
|
||||
|
||||
Commit Information
|
||||
|
@ -13,7 +13,7 @@ SYNOPSIS
|
||||
[-F <file> | -m <msg>] [--reset-author] [--allow-empty]
|
||||
[--allow-empty-message] [--no-verify] [-e] [--author=<author>]
|
||||
[--date=<date>] [--cleanup=<mode>] [--[no-]status]
|
||||
[-i | -o] [-S[<keyid>]] [--] [<file>...]
|
||||
[-i | -o] [-S[<key-id>]] [--] [<file>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -29,8 +29,7 @@ The content to be added can be specified in several ways:
|
||||
2. by using 'git rm' to remove files from the working tree
|
||||
and the index, again before using the 'commit' command;
|
||||
|
||||
3. by listing files as arguments to the 'commit' command
|
||||
(without --interactive or --patch switch), in which
|
||||
3. by listing files as arguments to the 'commit' command, in which
|
||||
case the commit will ignore changes staged in the index, and instead
|
||||
record the current content of the listed files (which must already
|
||||
be known to Git);
|
||||
@ -42,8 +41,7 @@ The content to be added can be specified in several ways:
|
||||
actual commit;
|
||||
|
||||
5. by using the --interactive or --patch switches with the 'commit' command
|
||||
to decide one by one which files or hunks should be part of the commit
|
||||
in addition to contents in the index,
|
||||
to decide one by one which files or hunks should be part of the commit,
|
||||
before finalizing the operation. See the ``Interactive Mode'' section of
|
||||
linkgit:git-add[1] to learn how to operate these modes.
|
||||
|
||||
@ -77,7 +75,7 @@ OPTIONS
|
||||
|
||||
-c <commit>::
|
||||
--reedit-message=<commit>::
|
||||
Like '-C', but with `-c` the editor is invoked, so that
|
||||
Like '-C', but with '-c' the editor is invoked, so that
|
||||
the user can further edit the commit message.
|
||||
|
||||
--fixup=<commit>::
|
||||
@ -156,11 +154,7 @@ OPTIONS
|
||||
-s::
|
||||
--signoff::
|
||||
Add Signed-off-by line by the committer at the end of the commit
|
||||
log message. The meaning of a signoff depends on the project,
|
||||
but it typically certifies that committer has
|
||||
the rights to submit this work under the same license and
|
||||
agrees to a Developer Certificate of Origin
|
||||
(see http://developercertificate.org/ for more information).
|
||||
log message.
|
||||
|
||||
-n::
|
||||
--no-verify::
|
||||
@ -203,7 +197,7 @@ default::
|
||||
Otherwise `whitespace`.
|
||||
--
|
||||
+
|
||||
The default can be changed by the `commit.cleanup` configuration
|
||||
The default can be changed by the 'commit.cleanup' configuration
|
||||
variable (see linkgit:git-config[1]).
|
||||
|
||||
-e::
|
||||
@ -262,11 +256,10 @@ FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].)
|
||||
staged for other paths. This is the default mode of operation of
|
||||
'git commit' if any paths are given on the command line,
|
||||
in which case this option can be omitted.
|
||||
If this option is specified together with `--amend`, then
|
||||
If this option is specified together with '--amend', then
|
||||
no paths need to be specified, which can be used to amend
|
||||
the last commit without committing changes that have
|
||||
already been staged. If used together with `--allow-empty`
|
||||
paths are also not required, and an empty commit will be created.
|
||||
already been staged.
|
||||
|
||||
-u[<mode>]::
|
||||
--untracked-files[=<mode>]::
|
||||
@ -293,8 +286,7 @@ configuration variable documented in linkgit:git-config[1].
|
||||
what changes the commit has.
|
||||
Note that this diff output doesn't have its
|
||||
lines prefixed with '#'. This diff will not be a part
|
||||
of the commit message. See the `commit.verbose` configuration
|
||||
variable in linkgit:git-config[1].
|
||||
of the commit message.
|
||||
+
|
||||
If specified twice, show in addition the unified diff between
|
||||
what would be committed and the worktree files, i.e. the unstaged
|
||||
@ -322,9 +314,7 @@ changes to tracked files.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
defaults to the committer identity; if specified, it must be
|
||||
stuck to the option without a space.
|
||||
GPG-sign commit.
|
||||
|
||||
--no-gpg-sign::
|
||||
Countermand `commit.gpgSign` configuration variable that is
|
||||
@ -453,8 +443,8 @@ include::i18n.txt[]
|
||||
ENVIRONMENT AND CONFIGURATION VARIABLES
|
||||
---------------------------------------
|
||||
The editor used to edit the commit log message will be chosen from the
|
||||
`GIT_EDITOR` environment variable, the core.editor configuration variable, the
|
||||
`VISUAL` environment variable, or the `EDITOR` environment variable (in that
|
||||
GIT_EDITOR environment variable, the core.editor configuration variable, the
|
||||
VISUAL environment variable, or the EDITOR environment variable (in that
|
||||
order). See linkgit:git-var[1] for details.
|
||||
|
||||
HOOKS
|
||||
|
@ -9,18 +9,18 @@ git-config - Get and set repository or global options
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git config' [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]]
|
||||
'git config' [<file-option>] [type] [-z|--null] name [value [value_regex]]
|
||||
'git config' [<file-option>] [type] --add name value
|
||||
'git config' [<file-option>] [type] --replace-all name value [value_regex]
|
||||
'git config' [<file-option>] [type] [--show-origin] [-z|--null] --get name [value_regex]
|
||||
'git config' [<file-option>] [type] [--show-origin] [-z|--null] --get-all name [value_regex]
|
||||
'git config' [<file-option>] [type] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
|
||||
'git config' [<file-option>] [type] [-z|--null] --get name [value_regex]
|
||||
'git config' [<file-option>] [type] [-z|--null] --get-all name [value_regex]
|
||||
'git config' [<file-option>] [type] [-z|--null] --get-regexp name_regex [value_regex]
|
||||
'git config' [<file-option>] [type] [-z|--null] --get-urlmatch name URL
|
||||
'git config' [<file-option>] --unset name [value_regex]
|
||||
'git config' [<file-option>] --unset-all name [value_regex]
|
||||
'git config' [<file-option>] --rename-section old_name new_name
|
||||
'git config' [<file-option>] --remove-section name
|
||||
'git config' [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
|
||||
'git config' [<file-option>] [-z|--null] -l | --list
|
||||
'git config' [<file-option>] --get-color name [default]
|
||||
'git config' [<file-option>] --get-colorbool name [stdout-is-tty]
|
||||
'git config' [<file-option>] -e | --edit
|
||||
@ -31,40 +31,40 @@ You can query/set/replace/unset options with this command. The name is
|
||||
actually the section and the key separated by a dot, and the value will be
|
||||
escaped.
|
||||
|
||||
Multiple lines can be added to an option by using the `--add` option.
|
||||
Multiple lines can be added to an option by using the '--add' option.
|
||||
If you want to update or unset an option which can occur on multiple
|
||||
lines, a POSIX regexp `value_regex` needs to be given. Only the
|
||||
existing values that match the regexp are updated or unset. If
|
||||
you want to handle the lines that do *not* match the regex, just
|
||||
prepend a single exclamation mark in front (see also <<EXAMPLES>>).
|
||||
|
||||
The type specifier can be either `--int` or `--bool`, to make
|
||||
The type specifier can be either '--int' or '--bool', to make
|
||||
'git config' ensure that the variable(s) are of the given type and
|
||||
convert the value to the canonical form (simple decimal number for int,
|
||||
a "true" or "false" string for bool), or `--path`, which does some
|
||||
path expansion (see `--path` below). If no type specifier is passed, no
|
||||
a "true" or "false" string for bool), or '--path', which does some
|
||||
path expansion (see '--path' below). If no type specifier is passed, no
|
||||
checks or transformations are performed on the value.
|
||||
|
||||
When reading, the values are read from the system, global and
|
||||
repository local configuration files by default, and options
|
||||
`--system`, `--global`, `--local` and `--file <filename>` can be
|
||||
'--system', '--global', '--local' and '--file <filename>' can be
|
||||
used to tell the command to read from only that location (see <<FILES>>).
|
||||
|
||||
When writing, the new value is written to the repository local
|
||||
configuration file by default, and options `--system`, `--global`,
|
||||
`--file <filename>` can be used to tell the command to write to
|
||||
that location (you can say `--local` but that is the default).
|
||||
configuration file by default, and options '--system', '--global',
|
||||
'--file <filename>' can be used to tell the command to write to
|
||||
that location (you can say '--local' but that is the default).
|
||||
|
||||
This command will fail with non-zero status upon error. Some exit
|
||||
codes are:
|
||||
|
||||
- The section or key is invalid (ret=1),
|
||||
- no section or name was provided (ret=2),
|
||||
- the config file is invalid (ret=3),
|
||||
- the config file cannot be written (ret=4),
|
||||
- you try to unset an option which does not exist (ret=5),
|
||||
- you try to unset/set an option for which multiple lines match (ret=5), or
|
||||
- you try to use an invalid regexp (ret=6).
|
||||
. The config file is invalid (ret=3),
|
||||
. can not write to the config file (ret=4),
|
||||
. no section or name was provided (ret=2),
|
||||
. the section or key is invalid (ret=1),
|
||||
. you try to unset an option which does not exist (ret=5),
|
||||
. you try to unset/set an option for which multiple lines match (ret=5), or
|
||||
. you try to use an invalid regexp (ret=6).
|
||||
|
||||
On success, the command returns the exit code 0.
|
||||
|
||||
@ -86,7 +86,8 @@ OPTIONS
|
||||
found and the last value if multiple key values were found.
|
||||
|
||||
--get-all::
|
||||
Like get, but returns all values for a multi-valued key.
|
||||
Like get, but does not fail if the number of values for the key
|
||||
is not exactly one.
|
||||
|
||||
--get-regexp::
|
||||
Like --get-all, but interprets the name as a regular expression and
|
||||
@ -101,7 +102,7 @@ OPTIONS
|
||||
given URL is returned (if no such key exists, the value for
|
||||
section.key is used as a fallback). When given just the
|
||||
section as name, do so for all the keys in the section and
|
||||
list them. Returns error code 1 if no value is found.
|
||||
list them.
|
||||
|
||||
--global::
|
||||
For writing options: write to global `~/.gitconfig` file
|
||||
@ -138,7 +139,7 @@ See also <<FILES>>.
|
||||
Use the given config file instead of the one specified by GIT_CONFIG.
|
||||
|
||||
--blob blob::
|
||||
Similar to `--file` but use the given blob instead of a file. E.g.
|
||||
Similar to '--file' but use the given blob instead of a file. E.g.
|
||||
you can use 'master:.gitmodules' to read values from the file
|
||||
'.gitmodules' in the master branch. See "SPECIFYING REVISIONS"
|
||||
section in linkgit:gitrevisions[7] for a more complete list of
|
||||
@ -158,7 +159,7 @@ See also <<FILES>>.
|
||||
|
||||
-l::
|
||||
--list::
|
||||
List all variables set in config file, along with their values.
|
||||
List all variables set in config file.
|
||||
|
||||
--bool::
|
||||
'git config' will ensure that the output is "true" or "false"
|
||||
@ -189,16 +190,6 @@ See also <<FILES>>.
|
||||
output without getting confused e.g. by values that
|
||||
contain line breaks.
|
||||
|
||||
--name-only::
|
||||
Output only the names of config variables for `--list` or
|
||||
`--get-regexp`.
|
||||
|
||||
--show-origin::
|
||||
Augment the output of all queried config options with the
|
||||
origin type (file, standard input, blob, command line) and
|
||||
the actual origin (config file path, ref, or blob id if
|
||||
applicable).
|
||||
|
||||
--get-colorbool name [stdout-is-tty]::
|
||||
|
||||
Find the color setting for `name` (e.g. `color.diff`) and output
|
||||
@ -220,19 +211,17 @@ See also <<FILES>>.
|
||||
-e::
|
||||
--edit::
|
||||
Opens an editor to modify the specified config file; either
|
||||
`--system`, `--global`, or repository (default).
|
||||
'--system', '--global', or repository (default).
|
||||
|
||||
--[no-]includes::
|
||||
Respect `include.*` directives in config files when looking up
|
||||
values. Defaults to `off` when a specific file is given (e.g.,
|
||||
using `--file`, `--global`, etc) and `on` when searching all
|
||||
config files.
|
||||
values. Defaults to on.
|
||||
|
||||
[[FILES]]
|
||||
FILES
|
||||
-----
|
||||
|
||||
If not set explicitly with `--file`, there are four files where
|
||||
If not set explicitly with '--file', there are four files where
|
||||
'git config' will search for configuration options:
|
||||
|
||||
$(prefix)/etc/gitconfig::
|
||||
@ -263,16 +252,13 @@ The files are read in the order given above, with last value found taking
|
||||
precedence over values read earlier. When multiple values are taken then all
|
||||
values of a key from all files will be used.
|
||||
|
||||
You may override individual configuration parameters when running any git
|
||||
command by using the `-c` option. See linkgit:git[1] for details.
|
||||
|
||||
All writing options will per default write to the repository specific
|
||||
configuration file. Note that this also affects options like `--replace-all`
|
||||
and `--unset`. *'git config' will only ever change one file at a time*.
|
||||
configuration file. Note that this also affects options like '--replace-all'
|
||||
and '--unset'. *'git config' will only ever change one file at a time*.
|
||||
|
||||
You can override these rules either by command-line options or by environment
|
||||
variables. The `--global` and the `--system` options will limit the file used
|
||||
to the global or system-wide file respectively. The `GIT_CONFIG` environment
|
||||
variables. The '--global' and the '--system' options will limit the file used
|
||||
to the global or system-wide file respectively. The GIT_CONFIG environment
|
||||
variable has a similar effect, but you can specify any filename you want.
|
||||
|
||||
|
||||
|
@ -38,11 +38,6 @@ objects nor valid packs
|
||||
+
|
||||
size-garbage: disk space consumed by garbage files, in KiB (unless -H is
|
||||
specified)
|
||||
+
|
||||
alternate: absolute path of alternate object databases; may appear
|
||||
multiple times, one line per path. Note that if the path contains
|
||||
non-printable characters, it may be surrounded by double-quotes and
|
||||
contain C-style backslashed escape sequences.
|
||||
|
||||
-H::
|
||||
--human-readable::
|
||||
|
@ -36,7 +36,7 @@ OPTIONS
|
||||
cache daemon if one is not started). Defaults to
|
||||
`~/.git-credential-cache/socket`. If your home directory is on a
|
||||
network-mounted filesystem, you may need to change this to a
|
||||
local filesystem. You must specify an absolute path.
|
||||
local filesystem.
|
||||
|
||||
CONTROLLING THE DAEMON
|
||||
----------------------
|
||||
|
@ -44,7 +44,7 @@ OPTIONS
|
||||
FILES
|
||||
-----
|
||||
|
||||
If not set explicitly with `--file`, there are two files where
|
||||
If not set explicitly with '--file', there are two files where
|
||||
git-credential-store will search for credentials in order of precedence:
|
||||
|
||||
~/.git-credentials::
|
||||
|
@ -22,7 +22,7 @@ DESCRIPTION
|
||||
deprecated; it does not work with cvsps version 3 and later. If you are
|
||||
performing a one-shot import of a CVS repository consider using
|
||||
http://cvs2svn.tigris.org/cvs2git.html[cvs2git] or
|
||||
http://www.catb.org/esr/cvs-fast-export/[cvs-fast-export].
|
||||
https://github.com/BartMassey/parsecvs[parsecvs].
|
||||
|
||||
Imports a CVS repository into Git. It will either create a new
|
||||
repository, or incrementally import into an existing one.
|
||||
@ -74,10 +74,10 @@ OPTIONS
|
||||
akin to the way 'git clone' uses 'origin' by default.
|
||||
|
||||
-o <branch-for-HEAD>::
|
||||
When no remote is specified (via -r) the `HEAD` branch
|
||||
When no remote is specified (via -r) the 'HEAD' branch
|
||||
from CVS is imported to the 'origin' branch within the Git
|
||||
repository, as `HEAD` already has a special meaning for Git.
|
||||
When a remote is specified the `HEAD` branch is named
|
||||
repository, as 'HEAD' already has a special meaning for Git.
|
||||
When a remote is specified the 'HEAD' branch is named
|
||||
remotes/<remote>/master mirroring 'git clone' behaviour.
|
||||
Use this option if you want to import into a different
|
||||
branch.
|
||||
@ -103,7 +103,7 @@ the old cvs2git tool.
|
||||
|
||||
-p <options-for-cvsps>::
|
||||
Additional options for cvsps.
|
||||
The options `-u` and '-A' are implicit and should not be used here.
|
||||
The options '-u' and '-A' are implicit and should not be used here.
|
||||
+
|
||||
If you need to pass multiple options, separate them with a comma.
|
||||
|
||||
@ -122,7 +122,7 @@ If you need to pass multiple options, separate them with a comma.
|
||||
|
||||
-M <regex>::
|
||||
Attempt to detect merges based on the commit message with a custom
|
||||
regex. It can be used with `-m` to enable the default regexes
|
||||
regex. It can be used with '-m' to enable the default regexes
|
||||
as well. You must escape forward slashes.
|
||||
+
|
||||
The regex must capture the source branch name in $1.
|
||||
@ -186,7 +186,7 @@ messages, bug-tracking systems, email archives, and the like.
|
||||
|
||||
OUTPUT
|
||||
------
|
||||
If `-v` is specified, the script reports what it is doing.
|
||||
If '-v' is specified, the script reports what it is doing.
|
||||
|
||||
Otherwise, success is indicated the Unix way, i.e. by simply exiting with
|
||||
a zero exit status.
|
||||
|
@ -54,7 +54,7 @@ Print usage information and exit
|
||||
You can specify a list of allowed directories. If no directories
|
||||
are given, all are allowed. This is an additional restriction, gitcvs
|
||||
access still needs to be enabled by the `gitcvs.enabled` config option
|
||||
unless `--export-all` was given, too.
|
||||
unless '--export-all' was given, too.
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
@ -332,7 +332,7 @@ To get a checkout with the Eclipse CVS client:
|
||||
3. Browse the 'modules' available. It will give you a list of the heads in
|
||||
the repository. You will not be able to browse the tree from there. Only
|
||||
the heads.
|
||||
4. Pick `HEAD` when it asks what branch/tag to check out. Untick the
|
||||
4. Pick 'HEAD' when it asks what branch/tag to check out. Untick the
|
||||
"launch commit wizard" to avoid committing the .project file.
|
||||
|
||||
Protocol notes: If you are using anonymous access via pserver, just select that.
|
||||
@ -402,12 +402,12 @@ Exports and tagging (tags and branches) are not supported at this stage.
|
||||
CRLF Line Ending Conversions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
By default the server leaves the `-k` mode blank for all files,
|
||||
By default the server leaves the '-k' mode blank for all files,
|
||||
which causes the CVS client to treat them as a text files, subject
|
||||
to end-of-line conversion on some platforms.
|
||||
|
||||
You can make the server use the end-of-line conversion attributes to
|
||||
set the `-k` modes for files by setting the `gitcvs.usecrlfattr`
|
||||
set the '-k' modes for files by setting the `gitcvs.usecrlfattr`
|
||||
config variable. See linkgit:gitattributes[5] for more information
|
||||
about end-of-line conversion.
|
||||
|
||||
@ -415,9 +415,9 @@ Alternatively, if `gitcvs.usecrlfattr` config is not enabled
|
||||
or the attributes do not allow automatic detection for a filename, then
|
||||
the server uses the `gitcvs.allBinary` config for the default setting.
|
||||
If `gitcvs.allBinary` is set, then file not otherwise
|
||||
specified will default to '-kb' mode. Otherwise the `-k` mode
|
||||
specified will default to '-kb' mode. Otherwise the '-k' mode
|
||||
is left blank. But if `gitcvs.allBinary` is set to "guess", then
|
||||
the correct `-k` mode will be guessed based on the contents of
|
||||
the correct '-k' mode will be guessed based on the contents of
|
||||
the file.
|
||||
|
||||
For best consistency with 'cvs', it is probably best to override the
|
||||
|
@ -30,7 +30,7 @@ that service if it is enabled.
|
||||
|
||||
It verifies that the directory has the magic file "git-daemon-export-ok", and
|
||||
it will refuse to export any Git directory that hasn't explicitly been marked
|
||||
for export this way (unless the `--export-all` parameter is specified). If you
|
||||
for export this way (unless the '--export-all' parameter is specified). If you
|
||||
pass some directory paths as 'git daemon' arguments, you can further restrict
|
||||
the offers to a whitelist comprising of those.
|
||||
|
||||
@ -90,10 +90,10 @@ OPTIONS
|
||||
is not supported, then --listen=hostname is also not supported and
|
||||
--listen must be given an IPv4 address.
|
||||
Can be given more than once.
|
||||
Incompatible with `--inetd` option.
|
||||
Incompatible with '--inetd' option.
|
||||
|
||||
--port=<n>::
|
||||
Listen on an alternative port. Incompatible with `--inetd` option.
|
||||
Listen on an alternative port. Incompatible with '--inetd' option.
|
||||
|
||||
--init-timeout=<n>::
|
||||
Timeout (in seconds) between the moment the connection is established
|
||||
@ -188,7 +188,7 @@ Git configuration files in that directory are readable by `<user>`.
|
||||
arguments. The external command can decide to decline the
|
||||
service by exiting with a non-zero status (or to allow it by
|
||||
exiting with a zero status). It can also look at the $REMOTE_ADDR
|
||||
and `$REMOTE_PORT` environment variables to learn about the
|
||||
and $REMOTE_PORT environment variables to learn about the
|
||||
requestor when making this decision.
|
||||
+
|
||||
The external command can optionally write a single line to its
|
||||
@ -296,7 +296,7 @@ they correspond to these IP addresses.
|
||||
selectively enable/disable services per repository::
|
||||
To enable 'git archive --remote' and disable 'git fetch' against
|
||||
a repository, have the following in the configuration file in the
|
||||
repository (that is the file 'config' next to `HEAD`, 'refs' and
|
||||
repository (that is the file 'config' next to 'HEAD', 'refs' and
|
||||
'objects').
|
||||
+
|
||||
----------------------------------------------------------------
|
||||
|
@ -9,7 +9,7 @@ git-describe - Describe a commit using the most recent tag reachable from it
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]
|
||||
'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] <commit-ish>...
|
||||
'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]
|
||||
|
||||
DESCRIPTION
|
||||
@ -27,7 +27,7 @@ see the -a and -s options to linkgit:git-tag[1].
|
||||
OPTIONS
|
||||
-------
|
||||
<commit-ish>...::
|
||||
Commit-ish object names to describe. Defaults to HEAD if omitted.
|
||||
Commit-ish object names to describe.
|
||||
|
||||
--dirty[=<mark>]::
|
||||
Describe the working tree.
|
||||
@ -154,7 +154,7 @@ is found, its name will be output and searching will stop.
|
||||
If an exact match was not found, 'git describe' will walk back
|
||||
through the commit history to locate an ancestor commit which
|
||||
has been tagged. The ancestor's tag will be output along with an
|
||||
abbreviation of the input commit-ish's SHA-1. If `--first-parent` was
|
||||
abbreviation of the input commit-ish's SHA-1. If '--first-parent' was
|
||||
specified then the walk will only consider the first parent of each
|
||||
commit.
|
||||
|
||||
|
@ -40,13 +40,13 @@ include::diff-format.txt[]
|
||||
Operating Modes
|
||||
---------------
|
||||
You can choose whether you want to trust the index file entirely
|
||||
(using the `--cached` flag) or ask the diff logic to show any files
|
||||
(using the '--cached' flag) or ask the diff logic to show any files
|
||||
that don't match the stat state as being "tentatively changed". Both
|
||||
of these operations are very useful indeed.
|
||||
|
||||
Cached Mode
|
||||
-----------
|
||||
If `--cached` is specified, it allows you to ask:
|
||||
If '--cached' is specified, it allows you to ask:
|
||||
|
||||
show me the differences between HEAD and the current index
|
||||
contents (the ones I'd write using 'git write-tree')
|
||||
|
@ -43,11 +43,11 @@ include::diff-options.txt[]
|
||||
show tree entry itself as well as subtrees. Implies -r.
|
||||
|
||||
--root::
|
||||
When `--root` is specified the initial commit will be shown as a big
|
||||
When '--root' is specified the initial commit will be shown as a big
|
||||
creation event. This is equivalent to a diff against the NULL tree.
|
||||
|
||||
--stdin::
|
||||
When `--stdin` is specified, the command does not take
|
||||
When '--stdin' is specified, the command does not take
|
||||
<tree-ish> arguments from the command line. Instead, it
|
||||
reads lines containing either two <tree>, one <commit>, or a
|
||||
list of <commit> from its standard input. (Use a single space
|
||||
@ -70,13 +70,13 @@ commits (but not trees).
|
||||
By default, 'git diff-tree --stdin' does not show
|
||||
differences for merge commits. With this flag, it shows
|
||||
differences to that commit from all of its parents. See
|
||||
also `-c`.
|
||||
also '-c'.
|
||||
|
||||
-s::
|
||||
By default, 'git diff-tree --stdin' shows differences,
|
||||
either in machine-readable form (without `-p`) or in patch
|
||||
form (with `-p`). This output can be suppressed. It is
|
||||
only useful with `-v` flag.
|
||||
either in machine-readable form (without '-p') or in patch
|
||||
form (with '-p'). This output can be suppressed. It is
|
||||
only useful with '-v' flag.
|
||||
|
||||
-v::
|
||||
This flag causes 'git diff-tree --stdin' to also show
|
||||
@ -91,17 +91,17 @@ include::pretty-options.txt[]
|
||||
-c::
|
||||
This flag changes the way a merge commit is displayed
|
||||
(which means it is useful only when the command is given
|
||||
one <tree-ish>, or `--stdin`). It shows the differences
|
||||
one <tree-ish>, or '--stdin'). It shows the differences
|
||||
from each of the parents to the merge result simultaneously
|
||||
instead of showing pairwise diff between a parent and the
|
||||
result one at a time (which is what the `-m` option does).
|
||||
result one at a time (which is what the '-m' option does).
|
||||
Furthermore, it lists only files which were modified
|
||||
from all parents.
|
||||
|
||||
--cc::
|
||||
This flag changes the way a merge commit patch is displayed,
|
||||
in a similar way to the `-c` option. It implies the `-c`
|
||||
and `-p` options and further compresses the patch output
|
||||
in a similar way to the '-c' option. It implies the '-c'
|
||||
and '-p' options and further compresses the patch output
|
||||
by omitting uninteresting hunks whose the contents in the parents
|
||||
have only two variants and the merge result picks one of them
|
||||
without modification. When all hunks are uninteresting, the commit
|
||||
|
@ -86,11 +86,10 @@ instead. `--no-symlinks` is the default on Windows.
|
||||
Additionally, `$BASE` is set in the environment.
|
||||
|
||||
-g::
|
||||
--[no-]gui::
|
||||
--gui::
|
||||
When 'git-difftool' is invoked with the `-g` or `--gui` option
|
||||
the default diff tool will be read from the configured
|
||||
`diff.guitool` variable instead of `diff.tool`. The `--no-gui`
|
||||
option can be used to override this setting.
|
||||
`diff.guitool` variable instead of `diff.tool`.
|
||||
|
||||
--[no-]trust-exit-code::
|
||||
'git-difftool' invokes a diff tool individually on each file.
|
||||
@ -99,7 +98,7 @@ instead. `--no-symlinks` is the default on Windows.
|
||||
invoked diff tool returns a non-zero exit code.
|
||||
+
|
||||
'git-difftool' will forward the exit code of the invoked tool when
|
||||
`--trust-exit-code` is used.
|
||||
'--trust-exit-code' is used.
|
||||
|
||||
See linkgit:git-diff[1] for the full list of supported options.
|
||||
|
||||
|
@ -54,7 +54,7 @@ Options for Frontends
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
--cat-blob-fd=<fd>::
|
||||
Write responses to `get-mark`, `cat-blob`, and `ls` queries to the
|
||||
Write responses to `cat-blob` and `ls` queries to the
|
||||
file descriptor <fd> instead of `stdout`. Allows `progress`
|
||||
output intended for the end-user to be separated from other
|
||||
output.
|
||||
@ -136,8 +136,6 @@ Performance and Compression Tuning
|
||||
Maximum size of each output packfile.
|
||||
The default is unlimited.
|
||||
|
||||
fastimport.unpackLimit::
|
||||
See linkgit:git-config[1]
|
||||
|
||||
Performance
|
||||
-----------
|
||||
@ -352,11 +350,6 @@ and control the current import process. More detailed discussion
|
||||
unless the `done` feature was requested using the
|
||||
`--done` command-line option or `feature done` command.
|
||||
|
||||
`get-mark`::
|
||||
Causes fast-import to print the SHA-1 corresponding to a mark
|
||||
to the file descriptor set with `--cat-blob-fd`, or `stdout` if
|
||||
unspecified.
|
||||
|
||||
`cat-blob`::
|
||||
Causes fast-import to print a blob in 'cat-file --batch'
|
||||
format to the file descriptor set with `--cat-blob-fd` or
|
||||
@ -937,25 +930,6 @@ Placing a `progress` command immediately after a `checkpoint` will
|
||||
inform the reader when the `checkpoint` has been completed and it
|
||||
can safely access the refs that fast-import updated.
|
||||
|
||||
`get-mark`
|
||||
~~~~~~~~~~
|
||||
Causes fast-import to print the SHA-1 corresponding to a mark to
|
||||
stdout or to the file descriptor previously arranged with the
|
||||
`--cat-blob-fd` argument. The command otherwise has no impact on the
|
||||
current import; its purpose is to retrieve SHA-1s that later commits
|
||||
might want to refer to in their commit messages.
|
||||
|
||||
....
|
||||
'get-mark' SP ':' <idnum> LF
|
||||
....
|
||||
|
||||
This command can be used anywhere in the stream that comments are
|
||||
accepted. In particular, the `get-mark` command can be used in the
|
||||
middle of a commit but not in the middle of a `data` command.
|
||||
|
||||
See ``Responses To Commands'' below for details about how to read
|
||||
this output safely.
|
||||
|
||||
`cat-blob`
|
||||
~~~~~~~~~~
|
||||
Causes fast-import to print a blob to a file descriptor previously
|
||||
@ -1026,8 +1000,7 @@ Output uses the same format as `git ls-tree <tree> -- <path>`:
|
||||
====
|
||||
|
||||
The <dataref> represents the blob, tree, or commit object at <path>
|
||||
and can be used in later 'get-mark', 'cat-blob', 'filemodify', or
|
||||
'ls' commands.
|
||||
and can be used in later 'cat-blob', 'filemodify', or 'ls' commands.
|
||||
|
||||
If there is no file or subtree at that path, 'git fast-import' will
|
||||
instead report
|
||||
@ -1056,7 +1029,7 @@ relative-marks::
|
||||
no-relative-marks::
|
||||
force::
|
||||
Act as though the corresponding command-line option with
|
||||
a leading `--` was passed on the command line
|
||||
a leading '--' was passed on the command line
|
||||
(see OPTIONS, above).
|
||||
|
||||
import-marks::
|
||||
@ -1069,11 +1042,9 @@ import-marks-if-exists::
|
||||
"feature import-marks-if-exists" like a corresponding
|
||||
command-line option silently skips a nonexistent file.
|
||||
|
||||
get-mark::
|
||||
cat-blob::
|
||||
ls::
|
||||
Require that the backend support the 'get-mark', 'cat-blob',
|
||||
or 'ls' command respectively.
|
||||
Require that the backend support the 'cat-blob' or 'ls' command.
|
||||
Versions of fast-import not supporting the specified command
|
||||
will exit with a message indicating so.
|
||||
This lets the import error out early with a clear message,
|
||||
@ -1107,7 +1078,7 @@ options the user may specify to git fast-import itself.
|
||||
|
||||
The `<option>` part of the command may contain any of the options
|
||||
listed in the OPTIONS section that do not change import semantics,
|
||||
without the leading `--` and is treated in the same way.
|
||||
without the leading '--' and is treated in the same way.
|
||||
|
||||
Option commands must be the first commands on the input (not counting
|
||||
feature commands), to give an option command after any non-option
|
||||
@ -1153,11 +1124,11 @@ bidirectional pipes:
|
||||
git fast-import >fast-import-output
|
||||
====
|
||||
|
||||
A frontend set up this way can use `progress`, `get-mark`, `ls`, and
|
||||
`cat-blob` commands to read information from the import in progress.
|
||||
A frontend set up this way can use `progress`, `ls`, and `cat-blob`
|
||||
commands to read information from the import in progress.
|
||||
|
||||
To avoid deadlock, such frontends must completely consume any
|
||||
pending output from `progress`, `ls`, `get-mark`, and `cat-blob` before
|
||||
pending output from `progress`, `ls`, and `cat-blob` before
|
||||
performing writes to fast-import that might block.
|
||||
|
||||
Crash Reports
|
||||
|
@ -41,13 +41,13 @@ OPTIONS
|
||||
option, then the refs from stdin are processed after those
|
||||
on the command line.
|
||||
+
|
||||
If `--stateless-rpc` is specified together with this option then
|
||||
If '--stateless-rpc' is specified together with this option then
|
||||
the list of refs must be in packet format (pkt-line). Each ref must
|
||||
be in a separate packet, and the list must end with a flush packet.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
Pass `-q` flag to 'git unpack-objects'; this makes the
|
||||
Pass '-q' flag to 'git unpack-objects'; this makes the
|
||||
cloning process less verbose.
|
||||
|
||||
-k::
|
||||
@ -87,20 +87,6 @@ be in a separate packet, and the list must end with a flush packet.
|
||||
'git-upload-pack' treats the special depth 2147483647 as
|
||||
infinite even if there is an ancestor-chain that long.
|
||||
|
||||
--shallow-since=<date>::
|
||||
Deepen or shorten the history of a shallow'repository to
|
||||
include all reachable commits after <date>.
|
||||
|
||||
--shallow-exclude=<revision>::
|
||||
Deepen or shorten the history of a shallow repository to
|
||||
exclude commits reachable from a specified remote branch or tag.
|
||||
This option can be specified multiple times.
|
||||
|
||||
--deepen-relative::
|
||||
Argument --depth specifies the number of commits from the
|
||||
current shallow boundary instead of from the tip of each
|
||||
remote branch history.
|
||||
|
||||
--no-progress::
|
||||
Do not show the progress.
|
||||
|
||||
@ -118,10 +104,6 @@ be in a separate packet, and the list must end with a flush packet.
|
||||
The remote heads to update from. This is relative to
|
||||
$GIT_DIR (e.g. "HEAD", "refs/heads/master"). When
|
||||
unspecified, update from all heads the remote side has.
|
||||
+
|
||||
If the remote has enabled the options `uploadpack.allowTipSHA1InWant`,
|
||||
`uploadpack.allowReachableSHA1InWant`, or `uploadpack.allowAnySHA1InWant`,
|
||||
they may alternatively be 40-hex sha1s present on the remote.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
@ -71,7 +71,7 @@ This configuration is used in two ways:
|
||||
* When `git fetch` is run without specifying what branches
|
||||
and/or tags to fetch on the command line, e.g. `git fetch origin`
|
||||
or `git fetch`, `remote.<repository>.fetch` values are used as
|
||||
the refspecs--they specify which refs to fetch and which local refs
|
||||
the refspecs---they specify which refs to fetch and which local refs
|
||||
to update. The example above will fetch
|
||||
all branches that exist in the `origin` (i.e. any ref that matches
|
||||
the left-hand side of the value, `refs/heads/*`) and update the
|
||||
@ -99,57 +99,6 @@ The latter use of the `remote.<repository>.fetch` values can be
|
||||
overridden by giving the `--refmap=<refspec>` parameter(s) on the
|
||||
command line.
|
||||
|
||||
OUTPUT
|
||||
------
|
||||
|
||||
The output of "git fetch" depends on the transport method used; this
|
||||
section describes the output when fetching over the Git protocol
|
||||
(either locally or via ssh) and Smart HTTP protocol.
|
||||
|
||||
The status of the fetch is output in tabular form, with each line
|
||||
representing the status of a single ref. Each line is of the form:
|
||||
|
||||
-------------------------------
|
||||
<flag> <summary> <from> -> <to> [<reason>]
|
||||
-------------------------------
|
||||
|
||||
The status of up-to-date refs is shown only if the --verbose option is
|
||||
used.
|
||||
|
||||
In compact output mode, specified with configuration variable
|
||||
fetch.output, if either entire `<from>` or `<to>` is found in the
|
||||
other string, it will be substituted with `*` in the other string. For
|
||||
example, `master -> origin/master` becomes `master -> origin/*`.
|
||||
|
||||
flag::
|
||||
A single character indicating the status of the ref:
|
||||
(space);; for a successfully fetched fast-forward;
|
||||
`+`;; for a successful forced update;
|
||||
`-`;; for a successfully pruned ref;
|
||||
`t`;; for a successful tag update;
|
||||
`*`;; for a successfully fetched new ref;
|
||||
`!`;; for a ref that was rejected or failed to update; and
|
||||
`=`;; for a ref that was up to date and did not need fetching.
|
||||
|
||||
summary::
|
||||
For a successfully fetched ref, the summary shows the old and new
|
||||
values of the ref in a form suitable for using as an argument to
|
||||
`git log` (this is `<old>..<new>` in most cases, and
|
||||
`<old>...<new>` for forced non-fast-forward updates).
|
||||
|
||||
from::
|
||||
The name of the remote ref being fetched from, minus its
|
||||
`refs/<type>/` prefix. In the case of deletion, the name of
|
||||
the remote ref is "(none)".
|
||||
|
||||
to::
|
||||
The name of the local ref being updated, minus its
|
||||
`refs/<type>/` prefix.
|
||||
|
||||
reason::
|
||||
A human-readable explanation. In the case of successfully fetched
|
||||
refs, no explanation is needed. For a failed ref, the reason for
|
||||
failure is described.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
@ -192,8 +141,6 @@ The first command fetches the `maint` branch from the repository at
|
||||
objects will eventually be removed by git's built-in housekeeping (see
|
||||
linkgit:git-gc[1]).
|
||||
|
||||
include::transfer-data-leaks.txt[]
|
||||
|
||||
BUGS
|
||||
----
|
||||
Using --recurse-submodules can only fetch new commits in already checked
|
||||
|
@ -52,7 +52,7 @@ if different from the rewritten ones, will be stored in the namespace
|
||||
|
||||
Note that since this operation is very I/O expensive, it might
|
||||
be a good idea to redirect the temporary directory off-disk with the
|
||||
`-d` option, e.g. on tmpfs. Reportedly the speedup is very noticeable.
|
||||
'-d' option, e.g. on tmpfs. Reportedly the speedup is very noticeable.
|
||||
|
||||
|
||||
Filters
|
||||
@ -61,7 +61,7 @@ Filters
|
||||
The filters are applied in the order as listed below. The <command>
|
||||
argument is always evaluated in the shell context using the 'eval' command
|
||||
(with the notable exception of the commit filter, for technical reasons).
|
||||
Prior to that, the `$GIT_COMMIT` environment variable will be set to contain
|
||||
Prior to that, the $GIT_COMMIT environment variable will be set to contain
|
||||
the id of the commit being rewritten. Also, GIT_AUTHOR_NAME,
|
||||
GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL,
|
||||
and GIT_COMMITTER_DATE are taken from the current commit and exported to
|
||||
@ -171,7 +171,7 @@ to other tags will be rewritten to point to the underlying commit.
|
||||
untouched. This switch allow git-filter-branch to ignore such
|
||||
commits. Though, this switch only applies for commits that have one
|
||||
and only one parent, it will hence keep merges points. Also, this
|
||||
option is not compatible with the use of `--commit-filter`. Though you
|
||||
option is not compatible with the use of '--commit-filter'. Though you
|
||||
just need to use the function 'git_commit_non_empty_tree "$@"' instead
|
||||
of the `git commit-tree "$@"` idiom in your commit filter to make that
|
||||
happen.
|
||||
@ -197,7 +197,7 @@ to other tags will be rewritten to point to the underlying commit.
|
||||
<rev-list options>...::
|
||||
Arguments for 'git rev-list'. All positive refs included by
|
||||
these options are rewritten. You may also specify options
|
||||
such as `--all`, but you must use `--` to separate them from
|
||||
such as '--all', but you must use '--' to separate them from
|
||||
the 'git filter-branch' options. Implies <<Remap_to_ancestor>>.
|
||||
|
||||
|
||||
@ -205,7 +205,7 @@ to other tags will be rewritten to point to the underlying commit.
|
||||
Remap to ancestor
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
By using linkgit:git-rev-list[1] arguments, e.g., path limiters, you can limit the
|
||||
By using linkgit:rev-list[1] arguments, e.g., path limiters, you can limit the
|
||||
set of revisions which get rewritten. However, positive refs on the command
|
||||
line are distinguished: we don't let them be excluded by such limiters. For
|
||||
this purpose, they are instead rewritten to point at the nearest ancestor that
|
||||
|
@ -9,7 +9,7 @@ git-fmt-merge-msg - Produce a merge commit message
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log]
|
||||
'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log] <$GIT_DIR/FETCH_HEAD
|
||||
'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log] -F <file>
|
||||
|
||||
DESCRIPTION
|
||||
@ -57,18 +57,6 @@ merge.summary::
|
||||
Synonym to `merge.log`; this is deprecated and will be removed in
|
||||
the future.
|
||||
|
||||
EXAMPLE
|
||||
-------
|
||||
|
||||
---------
|
||||
$ git fetch origin master
|
||||
$ git fmt-merge-msg --log <$GIT_DIR/FETCH_HEAD
|
||||
---------
|
||||
|
||||
Print a log message describing a merge of the "master" branch from
|
||||
the "origin" remote.
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-merge[1]
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user