Compare commits
36 Commits
Author | SHA1 | Date | |
---|---|---|---|
66d2a6159f | |||
2ddcccf97a | |||
65d30a19de | |||
5532ebdeb7 | |||
76a681ce9c | |||
dd53ea7220 | |||
f82a97eb91 | |||
7f3551dd68 | |||
d2c84dad1c | |||
379e51d1ae | |||
817ddd64c2 | |||
cc756edda6 | |||
7530a6287e | |||
35edce2056 | |||
55953c77c0 | |||
ad15592529 | |||
a8dee3ca61 | |||
9102f958ee | |||
91bd46588e | |||
6d8684161e | |||
3a85dc7d53 | |||
7c3745fc61 | |||
288a74bcd2 | |||
a62f9d1ace | |||
4778452597 | |||
a7b1ad3b05 | |||
525e7fba78 | |||
e1d911dd4c | |||
0060fd1511 | |||
a52ed76142 | |||
68061e3470 | |||
019683025f | |||
e075dba372 | |||
11e934d56e | |||
816f806786 | |||
f94804c1f2 |
169
.clang-format
169
.clang-format
@ -1,169 +0,0 @@
|
||||
# This file is an example configuration for clang-format 5.0.
|
||||
#
|
||||
# Note that this style definition should only be understood as a hint
|
||||
# for writing new code. The rules are still work-in-progress and does
|
||||
# not yet exactly match the style we have in the existing code.
|
||||
|
||||
# Use tabs whenever we need to fill whitespace that spans at least from one tab
|
||||
# stop to the next one.
|
||||
UseTab: Always
|
||||
TabWidth: 8
|
||||
IndentWidth: 8
|
||||
ContinuationIndentWidth: 8
|
||||
ColumnLimit: 80
|
||||
|
||||
# C Language specifics
|
||||
Language: Cpp
|
||||
|
||||
# Align parameters on the open bracket
|
||||
# someLongFunction(argument1,
|
||||
# argument2);
|
||||
AlignAfterOpenBracket: Align
|
||||
|
||||
# Don't align consecutive assignments
|
||||
# int aaaa = 12;
|
||||
# int b = 14;
|
||||
AlignConsecutiveAssignments: false
|
||||
|
||||
# Don't align consecutive declarations
|
||||
# int aaaa = 12;
|
||||
# double b = 3.14;
|
||||
AlignConsecutiveDeclarations: false
|
||||
|
||||
# Align escaped newlines as far left as possible
|
||||
# #define A \
|
||||
# int aaaa; \
|
||||
# int b; \
|
||||
# int cccccccc;
|
||||
AlignEscapedNewlines: Left
|
||||
|
||||
# Align operands of binary and ternary expressions
|
||||
# int aaa = bbbbbbbbbbb +
|
||||
# cccccc;
|
||||
AlignOperands: true
|
||||
|
||||
# Don't align trailing comments
|
||||
# int a; // Comment a
|
||||
# int b = 2; // Comment b
|
||||
AlignTrailingComments: false
|
||||
|
||||
# By default don't allow putting parameters onto the next line
|
||||
# myFunction(foo, bar, baz);
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
|
||||
# Don't allow short braced statements to be on a single line
|
||||
# if (a) not if (a) return;
|
||||
# return;
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: false
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
|
||||
# By default don't add a line break after the return type of top-level functions
|
||||
# int foo();
|
||||
AlwaysBreakAfterReturnType: None
|
||||
|
||||
# Pack as many parameters or arguments onto the same line as possible
|
||||
# int myFunction(int aaaaaaaaaaaa, int bbbbbbbb,
|
||||
# int cccc);
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
|
||||
# Attach braces to surrounding context except break before braces on function
|
||||
# definitions.
|
||||
# void foo()
|
||||
# {
|
||||
# if (true) {
|
||||
# } else {
|
||||
# }
|
||||
# };
|
||||
BreakBeforeBraces: Linux
|
||||
|
||||
# Break after operators
|
||||
# int valuve = aaaaaaaaaaaaa +
|
||||
# bbbbbb -
|
||||
# ccccccccccc;
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeTernaryOperators: false
|
||||
|
||||
# Don't break string literals
|
||||
BreakStringLiterals: false
|
||||
|
||||
# Use the same indentation level as for the switch statement.
|
||||
# Switch statement body is always indented one level more than case labels.
|
||||
IndentCaseLabels: false
|
||||
|
||||
# Don't indent a function definition or declaration if it is wrapped after the
|
||||
# type
|
||||
IndentWrappedFunctionNames: false
|
||||
|
||||
# Align pointer to the right
|
||||
# int *a;
|
||||
PointerAlignment: Right
|
||||
|
||||
# Don't insert a space after a cast
|
||||
# x = (int32)y; not x = (int32) y;
|
||||
SpaceAfterCStyleCast: false
|
||||
|
||||
# Insert spaces before and after assignment operators
|
||||
# int a = 5; not int a=5;
|
||||
# a += 42; a+=42;
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
|
||||
# Put a space before opening parentheses only after control statement keywords.
|
||||
# void f() {
|
||||
# if (true) {
|
||||
# f();
|
||||
# }
|
||||
# }
|
||||
SpaceBeforeParens: ControlStatements
|
||||
|
||||
# Don't insert spaces inside empty '()'
|
||||
SpaceInEmptyParentheses: false
|
||||
|
||||
# The number of spaces before trailing line comments (// - comments).
|
||||
# This does not affect trailing block comments (/* - comments).
|
||||
SpacesBeforeTrailingComments: 1
|
||||
|
||||
# Don't insert spaces in casts
|
||||
# x = (int32) y; not x = ( int32 ) y;
|
||||
SpacesInCStyleCastParentheses: false
|
||||
|
||||
# Don't insert spaces inside container literals
|
||||
# var arr = [1, 2, 3]; not var arr = [ 1, 2, 3 ];
|
||||
SpacesInContainerLiterals: false
|
||||
|
||||
# Don't insert spaces after '(' or before ')'
|
||||
# f(arg); not f( arg );
|
||||
SpacesInParentheses: false
|
||||
|
||||
# Don't insert spaces after '[' or before ']'
|
||||
# int a[5]; not int a[ 5 ];
|
||||
SpacesInSquareBrackets: false
|
||||
|
||||
# Insert a space after '{' and before '}' in struct initializers
|
||||
Cpp11BracedListStyle: false
|
||||
|
||||
# A list of macros that should be interpreted as foreach loops instead of as
|
||||
# function calls.
|
||||
ForEachMacros: ['for_each_string_list_item']
|
||||
|
||||
# The maximum number of consecutive empty lines to keep.
|
||||
MaxEmptyLinesToKeep: 1
|
||||
|
||||
# No empty line at the start of a block.
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
|
||||
# Penalties
|
||||
# This decides what order things should be done if a line is too long
|
||||
PenaltyBreakAssignment: 10
|
||||
PenaltyBreakBeforeFirstCallParameter: 30
|
||||
PenaltyBreakComment: 10
|
||||
PenaltyBreakFirstLessLess: 0
|
||||
PenaltyBreakString: 10
|
||||
PenaltyExcessCharacter: 100
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
|
||||
# Don't sort #include's
|
||||
SortIncludes: false
|
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -1,10 +1,8 @@
|
||||
* whitespace=!indent,trail,space
|
||||
*.[ch] whitespace=indent,trail,space diff=cpp
|
||||
*.sh whitespace=indent,trail,space eol=lf
|
||||
*.perl eol=lf diff=perl
|
||||
*.pl eof=lf diff=perl
|
||||
*.pm eol=lf diff=perl
|
||||
*.py eol=lf diff=python
|
||||
*.perl eol=lf
|
||||
*.pm eol=lf
|
||||
/Documentation/git-*.txt eol=lf
|
||||
/command-list.txt eol=lf
|
||||
/GIT-VERSION-GEN eol=lf
|
||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -3,7 +3,6 @@
|
||||
/GIT-LDFLAGS
|
||||
/GIT-PREFIX
|
||||
/GIT-PERL-DEFINES
|
||||
/GIT-PERL-HEADER
|
||||
/GIT-PYTHON-VARS
|
||||
/GIT-SCRIPT-DEFINES
|
||||
/GIT-USER-AGENT
|
||||
@ -35,7 +34,6 @@
|
||||
/git-clone
|
||||
/git-column
|
||||
/git-commit
|
||||
/git-commit-graph
|
||||
/git-commit-tree
|
||||
/git-config
|
||||
/git-count-objects
|
||||
@ -142,7 +140,6 @@
|
||||
/git-rm
|
||||
/git-send-email
|
||||
/git-send-pack
|
||||
/git-serve
|
||||
/git-sh-i18n
|
||||
/git-sh-i18n--envsubst
|
||||
/git-sh-setup
|
||||
@ -182,7 +179,7 @@
|
||||
/gitweb/gitweb.cgi
|
||||
/gitweb/static/gitweb.js
|
||||
/gitweb/static/gitweb.min.*
|
||||
/command-list.h
|
||||
/common-cmds.h
|
||||
*.tar.gz
|
||||
*.dsc
|
||||
*.deb
|
||||
|
5
.mailmap
5
.mailmap
@ -25,8 +25,8 @@ Ben Walton <bdwalton@gmail.com> <bwalton@artsci.utoronto.ca>
|
||||
Benoit Sigoure <tsunanet@gmail.com> <tsuna@lrde.epita.fr>
|
||||
Bernt Hansen <bernt@norang.ca> <bernt@alumni.uwaterloo.ca>
|
||||
Brandon Casey <drafnel@gmail.com> <casey@nrlssc.navy.mil>
|
||||
brian m. carlson <sandals@crustytoothpaste.net> Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
|
||||
brian m. carlson <sandals@crustytoothpaste.net> <sandals@crustytoothpaste.ath.cx>
|
||||
brian m. carlson <sandals@crustytoothpaste.ath.cx> Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
|
||||
brian m. carlson <sandals@crustytoothpaste.ath.cx> <sandals@crustytoothpaste.net>
|
||||
Bryan Larsen <bryan@larsen.st> <bryan.larsen@gmail.com>
|
||||
Bryan Larsen <bryan@larsen.st> <bryanlarsen@yahoo.com>
|
||||
Cheng Renquan <crquan@gmail.com>
|
||||
@ -113,7 +113,6 @@ Junio C Hamano <gitster@pobox.com> <junio@pobox.com>
|
||||
Junio C Hamano <gitster@pobox.com> <junio@twinsun.com>
|
||||
Junio C Hamano <gitster@pobox.com> <junkio@cox.net>
|
||||
Junio C Hamano <gitster@pobox.com> <junkio@twinsun.com>
|
||||
Kaartic Sivaraam <kaartic.sivaraam@gmail.com> <kaarticsivaraam91196@gmail.com>
|
||||
Karl Wiberg <kha@treskal.com> Karl Hasselström
|
||||
Karl Wiberg <kha@treskal.com> <kha@yoghurt.hemma.treskal.com>
|
||||
Karsten Blees <blees@dcon.de> <karsten.blees@dcon.de>
|
||||
|
37
.travis.yml
37
.travis.yml
@ -16,40 +16,54 @@ compiler:
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- language-pack-is
|
||||
- git-svn
|
||||
- apache2
|
||||
- gcc-8
|
||||
|
||||
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: jobname=GETTEXT_POISON
|
||||
- env: GETTEXT_POISON=YesPlease
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
- env: jobname=Windows
|
||||
- env: Windows
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
before_script:
|
||||
script:
|
||||
- >
|
||||
test "$TRAVIS_REPO_SLUG" != "git/git" ||
|
||||
ci/run-windows-build.sh $TRAVIS_BRANCH $(git rev-parse HEAD)
|
||||
after_failure:
|
||||
- env: jobname=Linux32
|
||||
- env: Linux32
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
before_script:
|
||||
script: ci/run-linux32-docker.sh
|
||||
- env: jobname=StaticAnalysis
|
||||
- env: Static Analysis
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
@ -57,9 +71,10 @@ matrix:
|
||||
packages:
|
||||
- coccinelle
|
||||
before_install:
|
||||
# "before_script" that builds Git is inherited from base job
|
||||
script: ci/run-static-analysis.sh
|
||||
after_failure:
|
||||
- env: jobname=Documentation
|
||||
- env: Documentation
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
@ -68,11 +83,13 @@ matrix:
|
||||
- asciidoc
|
||||
- xmlto
|
||||
before_install:
|
||||
before_script:
|
||||
script: ci/test-documentation.sh
|
||||
after_failure:
|
||||
|
||||
before_install: ci/install-dependencies.sh
|
||||
script: ci/run-build-and-tests.sh
|
||||
before_script: ci/run-build.sh
|
||||
script: ci/run-tests.sh
|
||||
after_failure: ci/print-test-failures.sh
|
||||
|
||||
notifications:
|
||||
|
1
Documentation/.gitignore
vendored
1
Documentation/.gitignore
vendored
@ -11,4 +11,3 @@ doc.dep
|
||||
cmds-*.txt
|
||||
mergetools-*.txt
|
||||
manpage-base-url.xsl
|
||||
SubmittingPatches.txt
|
||||
|
@ -386,11 +386,6 @@ For C programs:
|
||||
- Use Git's gettext wrappers to make the user interface
|
||||
translatable. See "Marking strings for translation" in po/README.
|
||||
|
||||
- Variables and functions local to a given source file should be marked
|
||||
with "static". Variables that are visible to other source files
|
||||
must be declared with "extern" in header files. However, function
|
||||
declarations should not use "extern", as that is already the default.
|
||||
|
||||
For Perl programs:
|
||||
|
||||
- Most of the C guidelines above apply.
|
||||
|
@ -39,7 +39,6 @@ MAN7_TXT += gitworkflows.txt
|
||||
MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
|
||||
MAN_XML = $(patsubst %.txt,%.xml,$(MAN_TXT))
|
||||
MAN_HTML = $(patsubst %.txt,%.html,$(MAN_TXT))
|
||||
GIT_MAN_REF = master
|
||||
|
||||
OBSOLETE_HTML += everyday.html
|
||||
OBSOLETE_HTML += git-remote-helpers.html
|
||||
@ -68,17 +67,13 @@ SP_ARTICLES += howto/maintain-git
|
||||
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
||||
SP_ARTICLES += $(API_DOCS)
|
||||
|
||||
TECH_DOCS += SubmittingPatches
|
||||
TECH_DOCS += technical/hash-function-transition
|
||||
TECH_DOCS += technical/http-protocol
|
||||
TECH_DOCS += technical/index-format
|
||||
TECH_DOCS += technical/long-running-process-protocol
|
||||
TECH_DOCS += technical/pack-format
|
||||
TECH_DOCS += technical/pack-heuristics
|
||||
TECH_DOCS += technical/pack-protocol
|
||||
TECH_DOCS += technical/protocol-capabilities
|
||||
TECH_DOCS += technical/protocol-common
|
||||
TECH_DOCS += technical/protocol-v2
|
||||
TECH_DOCS += technical/racy-git
|
||||
TECH_DOCS += technical/send-pack-pipeline
|
||||
TECH_DOCS += technical/shallow
|
||||
@ -185,7 +180,6 @@ ASCIIDOC = asciidoctor
|
||||
ASCIIDOC_CONF =
|
||||
ASCIIDOC_HTML = xhtml5
|
||||
ASCIIDOC_DOCBOOK = docbook45
|
||||
ASCIIDOC_EXTRA += -acompat-mode -atabsize=8
|
||||
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
||||
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
|
||||
DBLATEX_COMMON =
|
||||
@ -328,7 +322,6 @@ clean:
|
||||
$(RM) *.pdf
|
||||
$(RM) howto-index.txt howto/*.html doc.dep
|
||||
$(RM) technical/*.html technical/api-index.txt
|
||||
$(RM) SubmittingPatches.txt
|
||||
$(RM) $(cmds_txt) $(mergetools_txt) *.made
|
||||
$(RM) manpage-base-url.xsl
|
||||
|
||||
@ -367,9 +360,6 @@ technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
||||
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
||||
|
||||
SubmittingPatches.txt: SubmittingPatches
|
||||
$(QUIET_GEN) cp $< $@
|
||||
|
||||
XSLT = docbook.xsl
|
||||
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
|
||||
|
||||
@ -440,14 +430,14 @@ require-manrepo::
|
||||
then echo "git-manpages repository must exist at $(MAN_REPO)"; exit 1; fi
|
||||
|
||||
quick-install-man: require-manrepo
|
||||
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir) $(GIT_MAN_REF)
|
||||
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir)
|
||||
|
||||
require-htmlrepo::
|
||||
@if test ! -d $(HTML_REPO); \
|
||||
then echo "git-htmldocs repository must exist at $(HTML_REPO)"; exit 1; fi
|
||||
|
||||
quick-install-html: require-htmlrepo
|
||||
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir) $(GIT_MAN_REF)
|
||||
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir)
|
||||
|
||||
print-man1:
|
||||
@for i in $(MAN1_TXT); do echo $$i; done
|
||||
|
@ -25,7 +25,7 @@ Fixes since v1.7.11.6
|
||||
references" nor "Reload" did not update what is shown as the
|
||||
contents of it, when the user overwrote the tag with "git tag -f".
|
||||
|
||||
* "git for-each-ref" did not correctly support more than one --sort
|
||||
* "git for-each-ref" did not currectly support more than one --sort
|
||||
option.
|
||||
|
||||
* "git log .." errored out saying it is both rev range and a path
|
||||
|
54
Documentation/RelNotes/2.14.6.txt
Normal file
54
Documentation/RelNotes/2.14.6.txt
Normal file
@ -0,0 +1,54 @@
|
||||
Git v2.14.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release addresses the security issues CVE-2019-1348,
|
||||
CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352,
|
||||
CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387.
|
||||
|
||||
Fixes since v2.14.5
|
||||
-------------------
|
||||
|
||||
* CVE-2019-1348:
|
||||
The --export-marks option of git fast-import is exposed also via
|
||||
the in-stream command feature export-marks=... and it allows
|
||||
overwriting arbitrary paths.
|
||||
|
||||
* CVE-2019-1349:
|
||||
When submodules are cloned recursively, under certain circumstances
|
||||
Git could be fooled into using the same Git directory twice. We now
|
||||
require the directory to be empty.
|
||||
|
||||
* CVE-2019-1350:
|
||||
Incorrect quoting of command-line arguments allowed remote code
|
||||
execution during a recursive clone in conjunction with SSH URLs.
|
||||
|
||||
* CVE-2019-1351:
|
||||
While the only permitted drive letters for physical drives on
|
||||
Windows are letters of the US-English alphabet, this restriction
|
||||
does not apply to virtual drives assigned via subst <letter>:
|
||||
<path>. Git mistook such paths for relative paths, allowing writing
|
||||
outside of the worktree while cloning.
|
||||
|
||||
* CVE-2019-1352:
|
||||
Git was unaware of NTFS Alternate Data Streams, allowing files
|
||||
inside the .git/ directory to be overwritten during a clone.
|
||||
|
||||
* CVE-2019-1353:
|
||||
When running Git in the Windows Subsystem for Linux (also known as
|
||||
"WSL") while accessing a working directory on a regular Windows
|
||||
drive, none of the NTFS protections were active.
|
||||
|
||||
* CVE-2019-1354:
|
||||
Filenames on Linux/Unix can contain backslashes. On Windows,
|
||||
backslashes are directory separators. Git did not use to refuse to
|
||||
write out tracked files with such filenames.
|
||||
|
||||
* CVE-2019-1387:
|
||||
Recursive clones are currently affected by a vulnerability that is
|
||||
caused by too-lax validation of submodule names, allowing very
|
||||
targeted attacks via remote code execution in recursive clones.
|
||||
|
||||
Credit for finding these vulnerabilities goes to Microsoft Security
|
||||
Response Center, in particular to Nicolas Joly. The `fast-import`
|
||||
fixes were provided by Jeff King, the other fixes by Johannes
|
||||
Schindelin with help from Garima Singh.
|
@ -1,508 +0,0 @@
|
||||
Git 2.15 Release Notes
|
||||
======================
|
||||
|
||||
Backward compatibility notes and other notable changes.
|
||||
|
||||
* Use of an empty string as a pathspec element that is used for
|
||||
'everything matches' is still warned and Git asks users to use a
|
||||
more explicit '.' for that instead. The hope is that existing
|
||||
users will not mind this change, and eventually the warning can be
|
||||
turned into a hard error, upgrading the deprecation into removal of
|
||||
this (mis)feature. That is now scheduled to happen in Git v2.16,
|
||||
the next major release after this one.
|
||||
|
||||
* Git now avoids blindly falling back to ".git" when the setup
|
||||
sequence said we are _not_ in Git repository. A corner case that
|
||||
happens to work right now may be broken by a call to BUG().
|
||||
We've tried hard to locate such cases and fixed them, but there
|
||||
might still be cases that need to be addressed--bug reports are
|
||||
greatly appreciated.
|
||||
|
||||
* "branch --set-upstream" that has been deprecated in Git 1.8 has
|
||||
finally been retired.
|
||||
|
||||
|
||||
Updates since v2.14
|
||||
-------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* An example that is now obsolete has been removed from a sample hook,
|
||||
and an old example in it that added a sign-off manually has been
|
||||
improved to use the interpret-trailers command.
|
||||
|
||||
* The advice message given when "git rebase" stops for conflicting
|
||||
changes has been improved.
|
||||
|
||||
* The "rerere-train" script (in contrib/) learned the "--overwrite"
|
||||
option to allow overwriting existing recorded resolutions.
|
||||
|
||||
* "git contacts" (in contrib/) now lists the address on the
|
||||
"Reported-by:" trailer to its output, in addition to those on
|
||||
S-o-b: and other trailers, to make it easier to notify (and thank)
|
||||
the original bug reporter.
|
||||
|
||||
* "git rebase", especially when it is run by mistake and ends up
|
||||
trying to replay many changes, spent long time in silence. The
|
||||
command has been taught to show progress report when it spends
|
||||
long time preparing these many changes to replay (which would give
|
||||
the user a chance to abort with ^C).
|
||||
|
||||
* "git merge" learned a "--signoff" option to add the Signed-off-by:
|
||||
trailer with the committer's name.
|
||||
|
||||
* "git diff" learned to optionally paint new lines that are the same
|
||||
as deleted lines elsewhere differently from genuinely new lines.
|
||||
|
||||
* "git interpret-trailers" learned to take the trailer specifications
|
||||
from the command line that overrides the configured values.
|
||||
|
||||
* "git interpret-trailers" has been taught a "--parse" and a few
|
||||
other options to make it easier for scripts to grab existing
|
||||
trailer lines from a commit log message.
|
||||
|
||||
* The "--format=%(trailers)" option "git log" and its friends take
|
||||
learned to take the 'unfold' and 'only' modifiers to normalize its
|
||||
output, e.g. "git log --format=%(trailers:only,unfold)".
|
||||
|
||||
* "gitweb" shows a link to visit the 'raw' contents of blobs in the
|
||||
history overview page.
|
||||
|
||||
* "[gc] rerereResolved = 5.days" used to be invalid, as the variable
|
||||
is defined to take an integer counting the number of days. It now
|
||||
is allowed.
|
||||
|
||||
* The code to acquire a lock on a reference (e.g. while accepting a
|
||||
push from a client) used to immediately fail when the reference is
|
||||
already locked---now it waits for a very short while and retries,
|
||||
which can make it succeed if the lock holder was holding it during
|
||||
a read-only operation.
|
||||
|
||||
* "branch --set-upstream" that has been deprecated in Git 1.8 has
|
||||
finally been retired.
|
||||
|
||||
* The codepath to call external process filter for smudge/clean
|
||||
operation learned to show the progress meter.
|
||||
|
||||
* "git rev-parse" learned "--is-shallow-repository", that is to be
|
||||
used in a way similar to existing "--is-bare-repository" and
|
||||
friends.
|
||||
|
||||
* "git describe --match <pattern>" has been taught to play well with
|
||||
the "--all" option.
|
||||
|
||||
* "git branch" learned "-c/-C" to create a new branch by copying an
|
||||
existing one.
|
||||
|
||||
* Some commands (most notably "git status") makes an opportunistic
|
||||
update when performing a read-only operation to help optimize later
|
||||
operations in the same repository. The new "--no-optional-locks"
|
||||
option can be passed to Git to disable them.
|
||||
|
||||
* "git for-each-ref --format=..." learned a new format element,
|
||||
%(trailers), to show only the commit log trailer part of the log
|
||||
message.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* Conversion from uchar[20] to struct object_id continues.
|
||||
|
||||
* Start using selected c99 constructs in small, stable and
|
||||
essential part of the system to catch people who care about
|
||||
older compilers that do not grok them.
|
||||
|
||||
* The filter-process interface learned to allow a process with long
|
||||
latency give a "delayed" response.
|
||||
|
||||
* Many uses of comparison callback function the hashmap API uses
|
||||
cast the callback function type when registering it to
|
||||
hashmap_init(), which defeats the compile time type checking when
|
||||
the callback interface changes (e.g. gaining more parameters).
|
||||
The callback implementations have been updated to take "void *"
|
||||
pointers and cast them to the type they expect instead.
|
||||
|
||||
* Because recent Git for Windows do come with a real msgfmt, the
|
||||
build procedure for git-gui has been updated to use it instead of a
|
||||
hand-rolled substitute.
|
||||
|
||||
* "git grep --recurse-submodules" has been reworked to give a more
|
||||
consistent output across submodule boundary (and do its thing
|
||||
without having to fork a separate process).
|
||||
|
||||
* A helper function to read a single whole line into strbuf
|
||||
mistakenly triggered OOM error at EOF under certain conditions,
|
||||
which has been fixed.
|
||||
|
||||
* The "ref-store" code reorganization continues.
|
||||
|
||||
* "git commit" used to discard the index and re-read from the filesystem
|
||||
just in case the pre-commit hook has updated it in the middle; this
|
||||
has been optimized out when we know we do not run the pre-commit hook.
|
||||
(merge 680ee550d7 kw/commit-keep-index-when-pre-commit-is-not-run later to maint).
|
||||
|
||||
* Updates to the HTTP layer we made recently unconditionally used
|
||||
features of libCurl without checking the existence of them, causing
|
||||
compilation errors, which has been fixed. Also migrate the code to
|
||||
check feature macros, not version numbers, to cope better with
|
||||
libCurl that vendor ships with backported features.
|
||||
|
||||
* The API to start showing progress meter after a short delay has
|
||||
been simplified.
|
||||
(merge 8aade107dd jc/simplify-progress later to maint).
|
||||
|
||||
* Code clean-up to avoid mixing values read from the .gitmodules file
|
||||
and values read from the .git/config file.
|
||||
|
||||
* We used to spend more than necessary cycles allocating and freeing
|
||||
piece of memory while writing each index entry out. This has been
|
||||
optimized.
|
||||
|
||||
* Platforms that ship with a separate sha1 with collision detection
|
||||
library can link to it instead of using the copy we ship as part of
|
||||
our source tree.
|
||||
|
||||
* Code around "notes" have been cleaned up.
|
||||
(merge 3964281524 mh/notes-cleanup later to maint).
|
||||
|
||||
* The long-standing rule that an in-core lockfile instance, once it
|
||||
is used, must not be freed, has been lifted and the lockfile and
|
||||
tempfile APIs have been updated to reduce the chance of programming
|
||||
errors.
|
||||
|
||||
* Our hashmap implementation in hashmap.[ch] is not thread-safe when
|
||||
adding a new item needs to expand the hashtable by rehashing; add
|
||||
an API to disable the automatic rehashing to work it around.
|
||||
|
||||
* Many of our programs consider that it is OK to release dynamic
|
||||
storage that is used throughout the life of the program by simply
|
||||
exiting, but this makes it harder to leak detection tools to avoid
|
||||
reporting false positives. Plug many existing leaks and introduce
|
||||
a mechanism for developers to mark that the region of memory
|
||||
pointed by a pointer is not lost/leaking to help these tools.
|
||||
|
||||
* As "git commit" to conclude a conflicted "git merge" honors the
|
||||
commit-msg hook, "git merge" that records a merge commit that
|
||||
cleanly auto-merges should, but it didn't.
|
||||
|
||||
* The codepath for "git merge-recursive" has been cleaned up.
|
||||
|
||||
* Many leaks of strbuf have been fixed.
|
||||
|
||||
* "git imap-send" has our own implementation of the protocol and also
|
||||
can use more recent libCurl with the imap protocol support. Update
|
||||
the latter so that it can use the credential subsystem, and then
|
||||
make it the default option to use, so that we can eventually
|
||||
deprecate and remove the former.
|
||||
|
||||
* "make style" runs git-clang-format to help developers by pointing
|
||||
out coding style issues.
|
||||
|
||||
* A test to demonstrate "git mv" failing to adjust nested submodules
|
||||
has been added.
|
||||
(merge c514167df2 hv/mv-nested-submodules-test later to maint).
|
||||
|
||||
* On Cygwin, "ulimit -s" does not report failure but it does not work
|
||||
at all, which causes an unexpected success of some tests that
|
||||
expect failures under a limited stack situation. This has been
|
||||
fixed.
|
||||
|
||||
* Many codepaths have been updated to squelch -Wimplicit-fallthrough
|
||||
warnings from Gcc 7 (which is a good code hygiene).
|
||||
|
||||
* Add a helper for DLL loading in anticipation for its need in a
|
||||
future topic RSN.
|
||||
|
||||
* "git status --ignored", when noticing that a directory without any
|
||||
tracked path is ignored, still enumerated all the ignored paths in
|
||||
the directory, which is unnecessary. The codepath has been
|
||||
optimized to avoid this overhead.
|
||||
|
||||
* The final batch to "git rebase -i" updates to move more code from
|
||||
the shell script to C has been merged.
|
||||
|
||||
* Operations that do not touch (majority of) packed refs have been
|
||||
optimized by making accesses to packed-refs file lazy; we no longer
|
||||
pre-parse everything, and an access to a single ref in the
|
||||
packed-refs does not touch majority of irrelevant refs, either.
|
||||
|
||||
* Add comment to clarify that the style file is meant to be used with
|
||||
clang-5 and the rules are still work in progress.
|
||||
|
||||
* Many variables that points at a region of memory that will live
|
||||
throughout the life of the program have been marked with UNLEAK
|
||||
marker to help the leak checkers concentrate on real leaks..
|
||||
|
||||
* Plans for weaning us off of SHA-1 has been documented.
|
||||
|
||||
* A new "oidmap" API has been introduced and oidset API has been
|
||||
rewritten to use it.
|
||||
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
||||
|
||||
|
||||
Fixes since v2.14
|
||||
-----------------
|
||||
|
||||
* "%C(color name)" in the pretty print format always produced ANSI
|
||||
color escape codes, which was an early design mistake. They now
|
||||
honor the configuration (e.g. "color.ui = never") and also tty-ness
|
||||
of the output medium.
|
||||
|
||||
* The http.{sslkey,sslCert} configuration variables are to be
|
||||
interpreted as a pathname that honors "~[username]/" prefix, but
|
||||
weren't, which has been fixed.
|
||||
|
||||
* Numerous bugs in walking of reflogs via "log -g" and friends have
|
||||
been fixed.
|
||||
|
||||
* "git commit" when seeing an totally empty message said "you did not
|
||||
edit the message", which is clearly wrong. The message has been
|
||||
corrected.
|
||||
|
||||
* When a directory is not readable, "gitweb" fails to build the
|
||||
project list. Work this around by skipping such a directory.
|
||||
|
||||
* Some versions of GnuPG fails to kill gpg-agent it auto-spawned
|
||||
and such a left-over agent can interfere with a test. Work it
|
||||
around by attempting to kill one before starting a new test.
|
||||
|
||||
* A recently added test for the "credential-cache" helper revealed
|
||||
that EOF detection done around the time the connection to the cache
|
||||
daemon is torn down were flaky. This was fixed by reacting to
|
||||
ECONNRESET and behaving as if we got an EOF.
|
||||
|
||||
* "git log --tag=no-such-tag" showed log starting from HEAD, which
|
||||
has been fixed---it now shows nothing.
|
||||
|
||||
* The "tag.pager" configuration variable was useless for those who
|
||||
actually create tag objects, as it interfered with the use of an
|
||||
editor. A new mechanism has been introduced for commands to enable
|
||||
pager depending on what operation is being carried out to fix this,
|
||||
and then "git tag -l" is made to run pager by default.
|
||||
|
||||
* "git push --recurse-submodules $there HEAD:$target" was not
|
||||
propagated down to the submodules, but now it is.
|
||||
|
||||
* Commands like "git rebase" accepted the --rerere-autoupdate option
|
||||
from the command line, but did not always use it. This has been
|
||||
fixed.
|
||||
|
||||
* "git clone --recurse-submodules --quiet" did not pass the quiet
|
||||
option down to submodules.
|
||||
|
||||
* Test portability fix for OBSD.
|
||||
|
||||
* Portability fix for OBSD.
|
||||
|
||||
* "git am -s" has been taught that some input may end with a trailer
|
||||
block that is not Signed-off-by: and it should refrain from adding
|
||||
an extra blank line before adding a new sign-off in such a case.
|
||||
|
||||
* "git svn" used with "--localtime" option did not compute the tz
|
||||
offset for the timestamp in question and instead always used the
|
||||
current time, which has been corrected.
|
||||
|
||||
* Memory leak in an error codepath has been plugged.
|
||||
|
||||
* "git stash -u" used the contents of the committed version of the
|
||||
".gitignore" file to decide which paths are ignored, even when the
|
||||
file has local changes. The command has been taught to instead use
|
||||
the locally modified contents.
|
||||
|
||||
* bash 4.4 or newer gave a warning on NUL byte in command
|
||||
substitution done in "git stash"; this has been squelched.
|
||||
|
||||
* "git grep -L" and "git grep --quiet -L" reported different exit
|
||||
codes; this has been corrected.
|
||||
|
||||
* When handshake with a subprocess filter notices that the process
|
||||
asked for an unknown capability, Git did not report what program
|
||||
the offending subprocess was running. This has been corrected.
|
||||
|
||||
* "git apply" that is used as a better "patch -p1" failed to apply a
|
||||
taken from a file with CRLF line endings to a file with CRLF line
|
||||
endings. The root cause was because it misused convert_to_git()
|
||||
that tried to do "safe-crlf" processing by looking at the index
|
||||
entry at the same path, which is a nonsense---in that mode, "apply"
|
||||
is not working on the data in (or derived from) the index at all.
|
||||
This has been fixed.
|
||||
|
||||
* Killing "git merge --edit" before the editor returns control left
|
||||
the repository in a state with MERGE_MSG but without MERGE_HEAD,
|
||||
which incorrectly tells the subsequent "git commit" that there was
|
||||
a squash merge in progress. This has been fixed.
|
||||
|
||||
* "git archive" did not work well with pathspecs and the
|
||||
export-ignore attribute.
|
||||
|
||||
* In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
|
||||
was taught to "git send-email" as a valid way to tell it that it
|
||||
needs to also send a carbon copy to <a@dd.re.ss> in the trailer
|
||||
section.
|
||||
|
||||
* "git branch -M a b" while on a branch that is completely unrelated
|
||||
to either branch a or branch b misbehaved when multiple worktree
|
||||
was in use. This has been fixed.
|
||||
(merge 31824d180d nd/worktree-kill-parse-ref later to maint).
|
||||
|
||||
* "git gc" and friends when multiple worktrees are used off of a
|
||||
single repository did not consider the index and per-worktree refs
|
||||
of other worktrees as the root for reachability traversal, making
|
||||
objects that are in use only in other worktrees to be subject to
|
||||
garbage collection.
|
||||
|
||||
* A regression to "gitk --bisect" by a recent update has been fixed.
|
||||
|
||||
* "git -c submodule.recurse=yes pull" did not work as if the
|
||||
"--recurse-submodules" option was given from the command line.
|
||||
This has been corrected.
|
||||
|
||||
* Unlike "git commit-tree < file", "git commit-tree -F file" did not
|
||||
pass the contents of the file verbatim and instead completed an
|
||||
incomplete line at the end, if exists. The latter has been updated
|
||||
to match the behaviour of the former.
|
||||
|
||||
* Many codepaths did not diagnose write failures correctly when disks
|
||||
go full, due to their misuse of write_in_full() helper function,
|
||||
which have been corrected.
|
||||
(merge f48ecd38cb jk/write-in-full-fix later to maint).
|
||||
|
||||
* "git help co" now says "co is aliased to ...", not "git co is".
|
||||
(merge b3a8076e0d ks/help-alias-label later to maint).
|
||||
|
||||
* "git archive", especially when used with pathspec, stored an empty
|
||||
directory in its output, even though Git itself never does so.
|
||||
This has been fixed.
|
||||
|
||||
* API error-proofing which happens to also squelch warnings from GCC.
|
||||
|
||||
* The explanation of the cut-line in the commit log editor has been
|
||||
slightly tweaked.
|
||||
(merge 8c4b1a3593 ks/commit-do-not-touch-cut-line later to maint).
|
||||
|
||||
* "git gc" tries to avoid running two instances at the same time by
|
||||
reading and writing pid/host from and to a lock file; it used to
|
||||
use an incorrect fscanf() format when reading, which has been
|
||||
corrected.
|
||||
|
||||
* The scripts to drive TravisCI has been reorganized and then an
|
||||
optimization to avoid spending cycles on a branch whose tip is
|
||||
tagged has been implemented.
|
||||
(merge 8376eb4a8f ls/travis-scriptify later to maint).
|
||||
|
||||
* The test linter has been taught that we do not like "echo -e".
|
||||
|
||||
* Code cmp.std.c nitpick.
|
||||
|
||||
* A regression fix for 2.11 that made the code to read the list of
|
||||
alternate object stores overrun the end of the string.
|
||||
(merge f0f7bebef7 jk/info-alternates-fix later to maint).
|
||||
|
||||
* "git describe --match" learned to take multiple patterns in v2.13
|
||||
series, but the feature ignored the patterns after the first one
|
||||
and did not work at all. This has been fixed.
|
||||
|
||||
* "git filter-branch" cannot reproduce a history with a tag without
|
||||
the tagger field, which only ancient versions of Git allowed to be
|
||||
created. This has been corrected.
|
||||
(merge b2c1ca6b4b ic/fix-filter-branch-to-handle-tag-without-tagger later to maint).
|
||||
|
||||
* "git cat-file --textconv" started segfaulting recently, which
|
||||
has been corrected.
|
||||
|
||||
* The built-in pattern to detect the "function header" for HTML did
|
||||
not match <H1>..<H6> elements without any attributes, which has
|
||||
been fixed.
|
||||
|
||||
* "git mailinfo" was loose in decoding quoted printable and produced
|
||||
garbage when the two letters after the equal sign are not
|
||||
hexadecimal. This has been fixed.
|
||||
|
||||
* The machinery to create xdelta used in pack files received the
|
||||
sizes of the data in size_t, but lost the higher bits of them by
|
||||
storing them in "unsigned int" during the computation, which is
|
||||
fixed.
|
||||
|
||||
* The delta format used in the packfile cannot reference data at
|
||||
offset larger than what can be expressed in 4-byte, but the
|
||||
generator for the data failed to make sure the offset does not
|
||||
overflow. This has been corrected.
|
||||
|
||||
* The documentation for '-X<option>' for merges was misleadingly
|
||||
written to suggest that "-s theirs" exists, which is not the case.
|
||||
|
||||
* "git fast-export" with -M/-C option issued "copy" instruction on a
|
||||
path that is simultaneously modified, which was incorrect.
|
||||
(merge b3e8ca89cf jt/fast-export-copy-modify-fix later to maint).
|
||||
|
||||
* Many codepaths have been updated to squelch -Wsign-compare
|
||||
warnings.
|
||||
(merge 071bcaab64 rj/no-sign-compare later to maint).
|
||||
|
||||
* Memory leaks in various codepaths have been plugged.
|
||||
(merge 4d01a7fa65 ma/leakplugs later to maint).
|
||||
|
||||
* Recent versions of "git rev-parse --parseopt" did not parse the
|
||||
option specification that does not have the optional flags (*=?!)
|
||||
correctly, which has been corrected.
|
||||
(merge a6304fa4c2 bc/rev-parse-parseopt-fix later to maint).
|
||||
|
||||
* The checkpoint command "git fast-import" did not flush updates to
|
||||
refs and marks unless at least one object was created since the
|
||||
last checkpoint, which has been corrected, as these things can
|
||||
happen without any new object getting created.
|
||||
(merge 30e215a65c er/fast-import-dump-refs-on-checkpoint later to maint).
|
||||
|
||||
* Spell the name of our system as "Git" in the output from
|
||||
request-pull script.
|
||||
|
||||
* Fixes for a handful memory access issues identified by valgrind.
|
||||
|
||||
* Backports a moral equivalent of 2015 fix to the poll() emulation
|
||||
from the upstream gnulib to fix occasional breakages on HPE NonStop.
|
||||
|
||||
* Users with "color.ui = always" in their configuration were broken
|
||||
by a recent change that made plumbing commands to pay attention to
|
||||
them as the patch created internally by "git add -p" were colored
|
||||
(heh) and made unusable. This has been fixed by reverting the
|
||||
offending change.
|
||||
|
||||
* In the "--format=..." option of the "git for-each-ref" command (and
|
||||
its friends, i.e. the listing mode of "git branch/tag"), "%(atom:)"
|
||||
(e.g. "%(refname:)", "%(body:)" used to error out. Instead, treat
|
||||
them as if the colon and an empty string that follows it were not
|
||||
there.
|
||||
|
||||
* An ancient bug that made Git misbehave with creation/renaming of
|
||||
refs has been fixed.
|
||||
|
||||
* "git fetch <there> <src>:<dst>" allows an object name on the <src>
|
||||
side when the other side accepts such a request since Git v2.5, but
|
||||
the documentation was left stale.
|
||||
(merge 83558a412a jc/fetch-refspec-doc-update later to maint).
|
||||
|
||||
* Update the documentation for "git filter-branch" so that the filter
|
||||
options are listed in the same order as they are applied, as
|
||||
described in an earlier part of the doc.
|
||||
(merge 07c4984508 dg/filter-branch-filter-order-doc later to maint).
|
||||
|
||||
* A possible oom error is now caught as a fatal error, instead of
|
||||
continuing and dereferencing NULL.
|
||||
(merge 55d7d15847 ao/path-use-xmalloc later to maint).
|
||||
|
||||
* Other minor doc, test and build updates and code cleanups.
|
||||
(merge f094b89a4d ma/parse-maybe-bool later to maint).
|
||||
(merge 6cdf8a7929 ma/ts-cleanups later to maint).
|
||||
(merge 7560f547e6 ma/up-to-date later to maint).
|
||||
(merge 0db3dc75f3 rs/apply-epoch later to maint).
|
||||
(merge 276d0e35c0 ma/split-symref-update-fix later to maint).
|
||||
(merge f777623514 ks/branch-tweak-error-message-for-extra-args later to maint).
|
||||
(merge 33f3c683ec ks/verify-filename-non-option-error-message-tweak later to maint).
|
||||
(merge 7cbbf9d6a2 ls/filter-process-delayed later to maint).
|
||||
(merge 488aa65c8f wk/merge-options-gpg-sign-doc later to maint).
|
||||
(merge e61cb19a27 jc/branch-force-doc-readability-fix later to maint).
|
||||
(merge 32fceba3fd np/config-path-doc later to maint).
|
||||
(merge e38c681fb7 sb/rev-parse-show-superproject-root later to maint).
|
||||
(merge 4f851dc883 sg/rev-list-doc-reorder-fix later to maint).
|
@ -1,88 +0,0 @@
|
||||
Git v2.15.1 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.15
|
||||
-----------------
|
||||
|
||||
* TravisCI build updates.
|
||||
|
||||
* "auto" as a value for the columnar output configuration ought to
|
||||
judge "is the output consumed by humans?" with the same criteria as
|
||||
"auto" for coloured output configuration, i.e. either the standard
|
||||
output stream is going to tty, or a pager is in use. We forgot the
|
||||
latter, which has been fixed.
|
||||
|
||||
* The experimental "color moved lines differently in diff output"
|
||||
feature was buggy around "ignore whitespace changes" edges, which
|
||||
has been corrected.
|
||||
|
||||
* Instead of using custom line comparison and hashing functions to
|
||||
implement "moved lines" coloring in the diff output, use the pair
|
||||
of these functions from lower-layer xdiff/ code.
|
||||
|
||||
* Some codepaths did not check for errors when asking what branch the
|
||||
HEAD points at, which have been fixed.
|
||||
|
||||
* "git commit", after making a commit, did not check for errors when
|
||||
asking on what branch it made the commit, which has been corrected.
|
||||
|
||||
* "git status --ignored -u" did not stop at a working tree of a
|
||||
separate project that is embedded in an ignored directory and
|
||||
listed files in that other project, instead of just showing the
|
||||
directory itself as ignored.
|
||||
|
||||
* A broken access to object databases in recent update to "git grep
|
||||
--recurse-submodules" has been fixed.
|
||||
|
||||
* A recent regression in "git rebase -i" that broke execution of git
|
||||
commands from subdirectories via "exec" instruction has been fixed.
|
||||
|
||||
* "git check-ref-format --branch @{-1}" bit a "BUG()" when run
|
||||
outside a repository for obvious reasons; clarify the documentation
|
||||
and make sure we do not even try to expand the at-mark magic in
|
||||
such a case, but still call the validation logic for branch names.
|
||||
|
||||
* Command line completion (in contrib/) update.
|
||||
|
||||
* Description of blame.{showroot,blankboundary,showemail,date}
|
||||
configuration variables have been added to "git config --help".
|
||||
|
||||
* After an error from lstat(), diff_populate_filespec() function
|
||||
sometimes still went ahead and used invalid data in struct stat,
|
||||
which has been fixed.
|
||||
|
||||
* UNC paths are also relevant in Cygwin builds and they are now
|
||||
tested just like Mingw builds.
|
||||
|
||||
* Correct start-up sequence so that a repository could be placed
|
||||
immediately under the root directory again (which was broken at
|
||||
around Git 2.13).
|
||||
|
||||
* The credential helper for libsecret (in contrib/) has been improved
|
||||
to allow possibly prompting the end user to unlock secrets that are
|
||||
currently locked (otherwise the secrets may not be loaded).
|
||||
|
||||
* Updates from GfW project.
|
||||
|
||||
* "git rebase -i" recently started misbehaving when a submodule that
|
||||
is configured with 'submodule.<name>.ignore' is dirty; this has
|
||||
been corrected.
|
||||
|
||||
* Some error messages did not quote filenames shown in it, which have
|
||||
been fixed.
|
||||
|
||||
* Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.
|
||||
|
||||
* We used to add an empty alternate object database to the system
|
||||
that does not help anything; it has been corrected.
|
||||
|
||||
* Error checking in "git imap-send" for empty response has been
|
||||
improved.
|
||||
|
||||
* An ancient bug in "git apply --ignore-space-change" codepath has
|
||||
been fixed.
|
||||
|
||||
* There was a recent semantic mismerge in the codepath to write out a
|
||||
section of a configuration section, which has been corrected.
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
@ -1,50 +0,0 @@
|
||||
Git v2.15.2 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.15.1
|
||||
-------------------
|
||||
|
||||
* Recent update to the refs infrastructure implementation started
|
||||
rewriting packed-refs file more often than before; this has been
|
||||
optimized again for most trivial cases.
|
||||
|
||||
* The SubmittingPatches document has been converted to produce an
|
||||
HTML version via AsciiDoc/Asciidoctor.
|
||||
|
||||
* Contrary to the documentation, "git pull -4/-6 other-args" did not
|
||||
ask the underlying "git fetch" to go over IPv4/IPv6, which has been
|
||||
corrected.
|
||||
|
||||
* When "git rebase" prepared an mailbox of changes and fed it to "git
|
||||
am" to replay them, it was confused when a stray "From " happened
|
||||
to be in the log message of one of the replayed changes. This has
|
||||
been corrected.
|
||||
|
||||
* Command line completion (in contrib/) has been taught about the
|
||||
"--copy" option of "git branch".
|
||||
|
||||
* "git apply --inaccurate-eof" when used with "--ignore-space-change"
|
||||
triggered an internal sanity check, which has been fixed.
|
||||
|
||||
* The sequencer machinery (used by "git cherry-pick A..B", and "git
|
||||
rebase -i", among other things) would have lost a commit if stopped
|
||||
due to an unlockable index file, which has been fixed.
|
||||
|
||||
* The three-way merge performed by "git cherry-pick" was confused
|
||||
when a new submodule was added in the meantime, which has been
|
||||
fixed (or "papered over").
|
||||
|
||||
* "git notes" sent its error message to its standard output stream,
|
||||
which was corrected.
|
||||
|
||||
* A few scripts (both in production and tests) incorrectly redirected
|
||||
their error output. These have been corrected.
|
||||
|
||||
* Clarify and enhance documentation for "merge-base --fork-point", as
|
||||
it was clear what it computed but not why/what for.
|
||||
|
||||
* This release also contains the fixes made in the v2.13.7 version of
|
||||
Git. See its release notes for details.
|
||||
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
@ -1,6 +0,0 @@
|
||||
Git v2.15.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.5 to address
|
||||
the recently reported CVE-2018-17456; see the release notes for that
|
||||
version for details.
|
@ -1,482 +0,0 @@
|
||||
Git 2.16 Release Notes
|
||||
======================
|
||||
|
||||
Backward compatibility notes and other notable changes.
|
||||
|
||||
* Use of an empty string as a pathspec element that is used for
|
||||
'everything matches' is now an error.
|
||||
|
||||
|
||||
Updates since v2.15
|
||||
-------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* An empty string as a pathspec element that means "everything"
|
||||
i.e. 'git add ""', is now illegal. We started this by first
|
||||
deprecating and warning a pathspec that has such an element in
|
||||
2.11 (Nov 2016).
|
||||
|
||||
* A hook script that is set unexecutable is simply ignored. Git
|
||||
notifies when such a file is ignored, unless the message is
|
||||
squelched via advice.ignoredHook configuration.
|
||||
|
||||
* "git pull" has been taught to accept "--[no-]signoff" option and
|
||||
pass it down to "git merge".
|
||||
|
||||
* The "--push-option=<string>" option to "git push" now defaults to a
|
||||
list of strings configured via push.pushOption variable.
|
||||
|
||||
* "gitweb" checks if a directory is searchable with Perl's "-x"
|
||||
operator, which can be enhanced by using "filetest 'access'"
|
||||
pragma, which now we do.
|
||||
|
||||
* "git stash save" has been deprecated in favour of "git stash push".
|
||||
|
||||
* The set of paths output from "git status --ignored" was tied
|
||||
closely with its "--untracked=<mode>" option, but now it can be
|
||||
controlled more flexibly. Most notably, a directory that is
|
||||
ignored because it is listed to be ignored in the ignore/exclude
|
||||
mechanism can be handled differently from a directory that ends up
|
||||
to be ignored only because all files in it are ignored.
|
||||
|
||||
* The remote-helper for talking to MediaWiki has been updated to
|
||||
truncate an overlong pagename so that ".mw" suffix can still be
|
||||
added.
|
||||
|
||||
* The remote-helper for talking to MediaWiki has been updated to
|
||||
work with mediawiki namespaces.
|
||||
|
||||
* The "--format=..." option "git for-each-ref" takes learned to show
|
||||
the name of the 'remote' repository and the ref at the remote side
|
||||
that is affected for 'upstream' and 'push' via "%(push:remotename)"
|
||||
and friends.
|
||||
|
||||
* Doc and message updates to teach users "bisect view" is a synonym
|
||||
for "bisect visualize".
|
||||
|
||||
* "git bisect run" that did not specify any command to run used to go
|
||||
ahead and treated all commits to be tested as 'good'. This has
|
||||
been corrected by making the command error out.
|
||||
|
||||
* The SubmittingPatches document has been converted to produce an
|
||||
HTML version via AsciiDoc/Asciidoctor.
|
||||
|
||||
* We learned to optionally talk to a file system monitor via new
|
||||
fsmonitor extension to speed up "git status" and other operations
|
||||
that need to see which paths have been modified. Currently we only
|
||||
support "watchman". See File System Monitor section of
|
||||
git-update-index(1) for more detail.
|
||||
|
||||
* The "diff" family of commands learned to ignore differences in
|
||||
carriage return at the end of line.
|
||||
|
||||
* Places that know about "sendemail.to", like documentation and shell
|
||||
completion (in contrib/) have been taught about "sendemail.tocmd",
|
||||
too.
|
||||
|
||||
* "git add --renormalize ." is a new and safer way to record the fact
|
||||
that you are correcting the end-of-line convention and other
|
||||
"convert_to_git()" glitches in the in-repository data.
|
||||
|
||||
* "git branch" and "git checkout -b" are now forbidden from creating
|
||||
a branch whose name is "HEAD".
|
||||
|
||||
* "git branch --list" learned to show its output through the pager by
|
||||
default when the output is going to a terminal, which is controlled
|
||||
by the pager.branch configuration variable. This is similar to a
|
||||
recent change to "git tag --list".
|
||||
|
||||
* "git grep -W", "git diff -W" and their friends learned a heuristic
|
||||
to extend a pre-context beyond the line that matches the "function
|
||||
pattern" (aka "diff.*.xfuncname") to include a comment block, if
|
||||
exists, that immediately precedes it.
|
||||
|
||||
* "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
|
||||
the configuration and report it as a timestamp, just like "--int"
|
||||
would read "1k" and report 1024, to help consumption by scripts.
|
||||
|
||||
* The shell completion (in contrib/) learned that "git pull" can take
|
||||
the "--autostash" option.
|
||||
|
||||
* The tagnames "git log --decorate" uses to annotate the commits can
|
||||
now be limited to subset of available refs with the two additional
|
||||
options, --decorate-refs[-exclude]=<pattern>.
|
||||
|
||||
* "git grep" compiled with libpcre2 sometimes triggered a segfault,
|
||||
which is being fixed.
|
||||
|
||||
* "git send-email" tries to see if the sendmail program is available
|
||||
in /usr/lib and /usr/sbin; extend the list of locations to be
|
||||
checked to also include directories on $PATH.
|
||||
|
||||
* "git diff" learned, "--anchored", a variant of the "--patience"
|
||||
algorithm, to which the user can specify which 'unique' line to be
|
||||
used as anchoring points.
|
||||
|
||||
* The way "git worktree add" determines what branch to create from
|
||||
where and checkout in the new worktree has been updated a bit.
|
||||
|
||||
* Ancient part of codebase still shows dots after an abbreviated
|
||||
object name just to show that it is not a full object name, but
|
||||
these ellipses are confusing to people who newly discovered Git
|
||||
who are used to seeing abbreviated object names and find them
|
||||
confusing with the range syntax.
|
||||
|
||||
* With a configuration variable rebase.abbreviateCommands set,
|
||||
"git rebase -i" produces the todo list with a single-letter
|
||||
command names.
|
||||
|
||||
* "git worktree add" learned to run the post-checkout hook, just like
|
||||
"git checkout" does, after the initial checkout.
|
||||
|
||||
* "git svn" has been updated to strip CRs in the commit messages, as
|
||||
recent versions of Subversion rejects them.
|
||||
|
||||
* "git imap-send" did not correctly quote the folder name when
|
||||
making a request to the server, which has been corrected.
|
||||
|
||||
* Error messages from "git rebase" have been somewhat cleaned up.
|
||||
|
||||
* Git has been taught to support an https:// URL used for http.proxy
|
||||
when using recent versions of libcurl.
|
||||
|
||||
* "git merge" learned to pay attention to merge.verifySignatures
|
||||
configuration variable and pretend as if '--verify-signatures'
|
||||
option was given from the command line.
|
||||
|
||||
* "git describe" was taught to dig trees deeper to find a
|
||||
<commit-ish>:<path> that refers to a given blob object.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* An earlier update made it possible to use an on-stack in-core
|
||||
lockfile structure (as opposed to having to deliberately leak an
|
||||
on-heap one). Many codepaths have been updated to take advantage
|
||||
of this new facility.
|
||||
|
||||
* Calling cmd_foo() as if it is a general purpose helper function is
|
||||
a no-no. Correct two instances of such to set an example.
|
||||
|
||||
* We try to see if somebody runs our test suite with a shell that
|
||||
does not support "local" like bash/dash does.
|
||||
|
||||
* An early part of piece-by-piece rewrite of "git bisect" in C.
|
||||
|
||||
* GSoC to piece-by-piece rewrite "git submodule" in C.
|
||||
|
||||
* Optimize the code to find shortest unique prefix of object names.
|
||||
|
||||
* Pathspec-limited revision traversal was taught not to keep finding
|
||||
unneeded differences once it knows two trees are different inside
|
||||
given pathspec.
|
||||
|
||||
* Conversion from uchar[20] to struct object_id continues.
|
||||
|
||||
* Code cleanup.
|
||||
|
||||
* A single-word "unsigned flags" in the diff options is being split
|
||||
into a structure with many bitfields.
|
||||
|
||||
* TravisCI build updates.
|
||||
|
||||
* Parts of a test to drive the long-running content filter interface
|
||||
has been split into its own module, hopefully to eventually become
|
||||
reusable.
|
||||
|
||||
* Drop (perhaps overly cautious) sanity check before using the index
|
||||
read from the filesystem at runtime.
|
||||
|
||||
* The build procedure has been taught to avoid some unnecessary
|
||||
instability in the build products.
|
||||
|
||||
* A new mechanism to upgrade the wire protocol in place is proposed
|
||||
and demonstrated that it works with the older versions of Git
|
||||
without harming them.
|
||||
|
||||
* An infrastructure to define what hash function is used in Git is
|
||||
introduced, and an effort to plumb that throughout various
|
||||
codepaths has been started.
|
||||
|
||||
* The code to iterate over loose object files got optimized.
|
||||
|
||||
* An internal function that was left for backward compatibility has
|
||||
been removed, as there is no remaining callers.
|
||||
|
||||
* Historically, the diff machinery for rename detection had a
|
||||
hardcoded limit of 32k paths; this is being lifted to allow users
|
||||
trade cycles with a (possibly) easier to read result.
|
||||
|
||||
* The tracing infrastructure has been optimized for cases where no
|
||||
tracing is requested.
|
||||
|
||||
* In preparation for implementing narrow/partial clone, the object
|
||||
walking machinery has been taught a way to tell it to "filter" some
|
||||
objects from enumeration.
|
||||
|
||||
* A few structures and variables that are implementation details of
|
||||
the decorate API have been renamed and then the API got documented
|
||||
better.
|
||||
|
||||
* Assorted updates for TravisCI integration.
|
||||
(merge 4f26366679 sg/travis-fixes later to maint).
|
||||
|
||||
* Introduce a helper to simplify code to parse a common pattern that
|
||||
expects either "--key" or "--key=<something>".
|
||||
|
||||
* "git version --build-options" learned to report the host CPU and
|
||||
the exact commit object name the binary was built from.
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
||||
|
||||
|
||||
Fixes since v2.15
|
||||
-----------------
|
||||
|
||||
* "auto" as a value for the columnar output configuration ought to
|
||||
judge "is the output consumed by humans?" with the same criteria as
|
||||
"auto" for coloured output configuration, i.e. either the standard
|
||||
output stream is going to tty, or a pager is in use. We forgot the
|
||||
latter, which has been fixed.
|
||||
|
||||
* The experimental "color moved lines differently in diff output"
|
||||
feature was buggy around "ignore whitespace changes" edges, which
|
||||
has been corrected.
|
||||
|
||||
* Instead of using custom line comparison and hashing functions to
|
||||
implement "moved lines" coloring in the diff output, use the pair
|
||||
of these functions from lower-layer xdiff/ code.
|
||||
|
||||
* Some codepaths did not check for errors when asking what branch the
|
||||
HEAD points at, which have been fixed.
|
||||
|
||||
* "git commit", after making a commit, did not check for errors when
|
||||
asking on what branch it made the commit, which has been corrected.
|
||||
|
||||
* "git status --ignored -u" did not stop at a working tree of a
|
||||
separate project that is embedded in an ignored directory and
|
||||
listed files in that other project, instead of just showing the
|
||||
directory itself as ignored.
|
||||
|
||||
* A broken access to object databases in recent update to "git grep
|
||||
--recurse-submodules" has been fixed.
|
||||
|
||||
* A recent regression in "git rebase -i" that broke execution of git
|
||||
commands from subdirectories via "exec" instruction has been fixed.
|
||||
|
||||
* A (possibly flakey) test fix.
|
||||
|
||||
* "git check-ref-format --branch @{-1}" bit a "BUG()" when run
|
||||
outside a repository for obvious reasons; clarify the documentation
|
||||
and make sure we do not even try to expand the at-mark magic in
|
||||
such a case, but still call the validation logic for branch names.
|
||||
|
||||
* "git fetch --recurse-submodules" now knows that submodules can be
|
||||
moved around in the superproject in addition to getting updated,
|
||||
and finds the ones that need to be fetched accordingly.
|
||||
|
||||
* Command line completion (in contrib/) update.
|
||||
|
||||
* Description of blame.{showroot,blankboundary,showemail,date}
|
||||
configuration variables have been added to "git config --help".
|
||||
|
||||
* After an error from lstat(), diff_populate_filespec() function
|
||||
sometimes still went ahead and used invalid data in struct stat,
|
||||
which has been fixed.
|
||||
|
||||
* UNC paths are also relevant in Cygwin builds and they are now
|
||||
tested just like Mingw builds.
|
||||
|
||||
* Correct start-up sequence so that a repository could be placed
|
||||
immediately under the root directory again (which was broken at
|
||||
around Git 2.13).
|
||||
|
||||
* The credential helper for libsecret (in contrib/) has been improved
|
||||
to allow possibly prompting the end user to unlock secrets that are
|
||||
currently locked (otherwise the secrets may not be loaded).
|
||||
|
||||
* MinGW updates.
|
||||
|
||||
* Error checking in "git imap-send" for empty response has been
|
||||
improved.
|
||||
|
||||
* Recent update to the refs infrastructure implementation started
|
||||
rewriting packed-refs file more often than before; this has been
|
||||
optimized again for most trivial cases.
|
||||
|
||||
* Some error messages did not quote filenames shown in it, which have
|
||||
been fixed.
|
||||
|
||||
* "git rebase -i" recently started misbehaving when a submodule that
|
||||
is configured with 'submodule.<name>.ignore' is dirty; this has
|
||||
been corrected.
|
||||
|
||||
* Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.
|
||||
|
||||
* We used to add an empty alternate object database to the system
|
||||
that does not help anything; it has been corrected.
|
||||
|
||||
* Doc update around use of "format-patch --subject-prefix" etc.
|
||||
|
||||
* A fix for an ancient bug in "git apply --ignore-space-change" codepath.
|
||||
|
||||
* Clarify and enhance documentation for "merge-base --fork-point", as
|
||||
it was clear what it computed but not why/what for.
|
||||
|
||||
* A few scripts (both in production and tests) incorrectly redirected
|
||||
their error output. These have been corrected.
|
||||
|
||||
* "git notes" sent its error message to its standard output stream,
|
||||
which was corrected.
|
||||
|
||||
* The three-way merge performed by "git cherry-pick" was confused
|
||||
when a new submodule was added in the meantime, which has been
|
||||
fixed (or "papered over").
|
||||
|
||||
* The sequencer machinery (used by "git cherry-pick A..B", and "git
|
||||
rebase -i", among other things) would have lost a commit if stopped
|
||||
due to an unlockable index file, which has been fixed.
|
||||
|
||||
* "git apply --inaccurate-eof" when used with "--ignore-space-change"
|
||||
triggered an internal sanity check, which has been fixed.
|
||||
|
||||
* Command line completion (in contrib/) has been taught about the
|
||||
"--copy" option of "git branch".
|
||||
|
||||
* When "git rebase" prepared a mailbox of changes and fed it to "git
|
||||
am" to replay them, it was confused when a stray "From " happened
|
||||
to be in the log message of one of the replayed changes. This has
|
||||
been corrected.
|
||||
|
||||
* There was a recent semantic mismerge in the codepath to write out a
|
||||
section of a configuration section, which has been corrected.
|
||||
|
||||
* Mentions of "git-rebase" and "git-am" (dashed form) still remained
|
||||
in end-user visible strings emitted by the "git rebase" command;
|
||||
they have been corrected.
|
||||
|
||||
* Contrary to the documentation, "git pull -4/-6 other-args" did not
|
||||
ask the underlying "git fetch" to go over IPv4/IPv6, which has been
|
||||
corrected.
|
||||
|
||||
* "git checkout --recursive" may overwrite and rewind the history of
|
||||
the branch that happens to be checked out in submodule
|
||||
repositories, which might not be desirable. Detach the HEAD but
|
||||
still allow the recursive checkout to succeed in such a case.
|
||||
(merge 57f22bf997 sb/submodule-recursive-checkout-detach-head later to maint).
|
||||
|
||||
* "git branch --set-upstream" has been deprecated and (sort of)
|
||||
removed, as "--set-upstream-to" is the preferred one these days.
|
||||
The documentation still had "--set-upstream" listed on its
|
||||
synopsis section, which has been corrected.
|
||||
(merge a060f3d3d8 tz/branch-doc-remove-set-upstream later to maint).
|
||||
|
||||
* Internally we use 0{40} as a placeholder object name to signal the
|
||||
codepath that there is no such object (e.g. the fast-forward check
|
||||
while "git fetch" stores a new remote-tracking ref says "we know
|
||||
there is no 'old' thing pointed at by the ref, as we are creating
|
||||
it anew" by passing 0{40} for the 'old' side), and expect that a
|
||||
codepath to locate an in-core object to return NULL as a sign that
|
||||
the object does not exist. A look-up for an object that does not
|
||||
exist however is quite costly with a repository with large number
|
||||
of packfiles. This access pattern has been optimized.
|
||||
(merge 87b5e236a1 jk/fewer-pack-rescan later to maint).
|
||||
|
||||
* In addition to "git stash -m message", the command learned to
|
||||
accept "git stash -mmessage" form.
|
||||
(merge 5675473fcb ph/stash-save-m-option-fix later to maint).
|
||||
|
||||
* @{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
|
||||
but the documentation was not clear about it, which has been fixed.
|
||||
(merge 75ce149575 ks/doc-checkout-previous later to maint).
|
||||
|
||||
* A regression in the progress eye-candy was fixed.
|
||||
(merge 9c5951cacf jk/progress-delay-fix later to maint).
|
||||
|
||||
* The code internal to the recursive merge strategy was not fully
|
||||
prepared to see a path that is renamed to try overwriting another
|
||||
path that is only different in case on case insensitive systems.
|
||||
This does not matter in the current code, but will start to matter
|
||||
once the rename detection logic starts taking hints from nearby
|
||||
paths moving to some directory and moves a new path along with them.
|
||||
(merge 4cba2b0108 en/merge-recursive-icase-removal later to maint).
|
||||
|
||||
* An v2.12-era regression in pathspec match logic, which made it look
|
||||
into submodule tree even when it is not desired, has been fixed.
|
||||
(merge eef3df5a93 bw/pathspec-match-submodule-boundary later to maint).
|
||||
|
||||
* Amending commits in git-gui broke the author name that is non-ascii
|
||||
due to incorrect enconding conversion.
|
||||
|
||||
* Recent update to the submodule configuration code broke "diff-tree"
|
||||
by accidentally stopping to read from the index upfront.
|
||||
(merge fd66bcc31f bw/submodule-config-cleanup later to maint).
|
||||
|
||||
* Git shows a message to tell the user that it is waiting for the
|
||||
user to finish editing when spawning an editor, in case the editor
|
||||
opens to a hidden window or somewhere obscure and the user gets
|
||||
lost.
|
||||
(merge abfb04d0c7 ls/editor-waiting-message later to maint).
|
||||
|
||||
* The "safe crlf" check incorrectly triggered for contents that does
|
||||
not use CRLF as line endings, which has been corrected.
|
||||
(merge 649f1f0948 tb/check-crlf-for-safe-crlf later to maint).
|
||||
|
||||
* "git clone --shared" to borrow from a (secondary) worktree did not
|
||||
work, even though "git clone --local" did. Both are now accepted.
|
||||
(merge b3b05971c1 es/clone-shared-worktree later to maint).
|
||||
|
||||
* The build procedure now allows not just the repositories but also
|
||||
the refs to be used to take pre-formatted manpages and html
|
||||
documents to install.
|
||||
(merge 65289e9dcd rb/quick-install-doc later to maint).
|
||||
|
||||
* Update the shell prompt script (in contrib/) to strip trailing CR
|
||||
from strings read from various "state" files.
|
||||
(merge 041fe8fc83 ra/prompt-eread-fix later to maint).
|
||||
|
||||
* "git merge -s recursive" did not correctly abort when the index is
|
||||
dirty, if the merged tree happened to be the same as the current
|
||||
HEAD, which has been fixed.
|
||||
|
||||
* Bytes with high-bit set were encoded incorrectly and made
|
||||
credential helper fail.
|
||||
(merge 4c267f2ae3 jd/fix-strbuf-add-urlencode-bytes later to maint).
|
||||
|
||||
* "git rebase -p -X<option>" did not propagate the option properly
|
||||
down to underlying merge strategy backend.
|
||||
(merge dd6fb0053c js/fix-merge-arg-quoting-in-rebase-p later to maint).
|
||||
|
||||
* "git merge -s recursive" did not correctly abort when the index is
|
||||
dirty, if the merged tree happened to be the same as the current
|
||||
HEAD, which has been fixed.
|
||||
(merge f309e8e768 ew/empty-merge-with-dirty-index-maint later to maint).
|
||||
|
||||
* Other minor doc, test and build updates and code cleanups.
|
||||
(merge 1a1fc2d5b5 rd/man-prune-progress later to maint).
|
||||
(merge 0ba014035a rd/man-reflog-add-n later to maint).
|
||||
(merge e54b63359f rd/doc-notes-prune-fix later to maint).
|
||||
(merge ff4c9b413a sp/doc-info-attributes later to maint).
|
||||
(merge 7db2cbf4f1 jc/receive-pack-hook-doc later to maint).
|
||||
(merge 5a0526264b tg/t-readme-updates later to maint).
|
||||
(merge 5e83cca0b8 jk/no-optional-locks later to maint).
|
||||
(merge 826c778f7c js/hashmap-update-sample later to maint).
|
||||
(merge 176b2d328c sg/setup-doc-update later to maint).
|
||||
(merge 1b09073514 rs/am-builtin-leakfix later to maint).
|
||||
(merge addcf6cfde rs/fmt-merge-msg-string-leak-fix later to maint).
|
||||
(merge c3ff8f6c14 rs/strbuf-read-once-reset-length later to maint).
|
||||
(merge 6b0eb884f9 db/doc-workflows-neuter-the-maintainer later to maint).
|
||||
(merge 8c87bdfb21 jk/cvsimport-quoting later to maint).
|
||||
(merge 176cb979fe rs/fmt-merge-msg-leakfix later to maint).
|
||||
(merge 5a03360e73 tb/delimit-pretty-trailers-args-with-comma later to maint).
|
||||
(merge d0e6326026 ot/pretty later to maint).
|
||||
(merge 44103f4197 sb/test-helper-excludes later to maint).
|
||||
(merge 170078693f jt/transport-no-more-rsync later to maint).
|
||||
(merge c07b3adff1 bw/path-doc later to maint).
|
||||
(merge bf9d7df950 tz/lib-git-svn-svnserve-tests later to maint).
|
||||
(merge dec366c9a8 sr/http-sslverify-config-doc later to maint).
|
||||
(merge 3f824e91c8 jk/test-suite-tracing later to maint).
|
||||
(merge 1feb061701 db/doc-config-section-names-with-bs later to maint).
|
||||
(merge 74dea0e13c jh/memihash-opt later to maint).
|
||||
(merge 2e9fdc795c ma/bisect-leakfix later to maint).
|
@ -1,11 +0,0 @@
|
||||
Git v2.16.1 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.16
|
||||
-----------------
|
||||
|
||||
* "git clone" segfaulted when cloning a project that happens to
|
||||
track two paths that differ only in case on a case insensitive
|
||||
filesystem.
|
||||
|
||||
Does not contain any other documentation updates or code clean-ups.
|
@ -1,30 +0,0 @@
|
||||
Git v2.16.2 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.16.1
|
||||
-------------------
|
||||
|
||||
* An old regression in "git describe --all $annotated_tag^0" has been
|
||||
fixed.
|
||||
|
||||
* "git svn dcommit" did not take into account the fact that a
|
||||
svn+ssh:// URL with a username@ (typically used for pushing) refers
|
||||
to the same SVN repository without the username@ and failed when
|
||||
svn.pushmergeinfo option is set.
|
||||
|
||||
* "git merge -Xours/-Xtheirs" learned to use our/their version when
|
||||
resolving a conflicting updates to a symbolic link.
|
||||
|
||||
* "git clone $there $here" is allowed even when here directory exists
|
||||
as long as it is an empty directory, but the command incorrectly
|
||||
removed it upon a failure of the operation.
|
||||
|
||||
* "git stash -- <pathspec>" incorrectly blew away untracked files in
|
||||
the directory that matched the pathspec, which has been corrected.
|
||||
|
||||
* "git add -p" was taught to ignore local changes to submodules as
|
||||
they do not interfere with the partial addition of regular changes
|
||||
anyway.
|
||||
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
@ -1,49 +0,0 @@
|
||||
Git v2.16.3 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.16.2
|
||||
-------------------
|
||||
|
||||
* "git status" after moving a path in the working tree (hence making
|
||||
it appear "removed") and then adding with the -N option (hence
|
||||
making that appear "added") detected it as a rename, but did not
|
||||
report the old and new pathnames correctly.
|
||||
|
||||
* "git commit --fixup" did not allow "-m<message>" option to be used
|
||||
at the same time; allow it to annotate resulting commit with more
|
||||
text.
|
||||
|
||||
* When resetting the working tree files recursively, the working tree
|
||||
of submodules are now also reset to match.
|
||||
|
||||
* Fix for a commented-out code to adjust it to a rather old API change
|
||||
around object ID.
|
||||
|
||||
* When there are too many changed paths, "git diff" showed a warning
|
||||
message but in the middle of a line.
|
||||
|
||||
* The http tracing code, often used to debug connection issues,
|
||||
learned to redact potentially sensitive information from its output
|
||||
so that it can be more safely sharable.
|
||||
|
||||
* Crash fix for a corner case where an error codepath tried to unlock
|
||||
what it did not acquire lock on.
|
||||
|
||||
* The split-index mode had a few corner case bugs fixed.
|
||||
|
||||
* Assorted fixes to "git daemon".
|
||||
|
||||
* Completion of "git merge -s<strategy>" (in contrib/) did not work
|
||||
well in non-C locale.
|
||||
|
||||
* Workaround for segfault with more recent versions of SVN.
|
||||
|
||||
* Recently introduced leaks in fsck have been plugged.
|
||||
|
||||
* Travis CI integration now builds the executable in 'script' phase
|
||||
to follow the established practice, rather than during
|
||||
'before_script' phase. This allows the CI categorize the failures
|
||||
better ('failed' is project's fault, 'errored' is build
|
||||
environment's).
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
@ -1,5 +0,0 @@
|
||||
Git v2.16.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release is to forward-port the fixes made in the v2.13.7 version
|
||||
of Git. See its release notes for details.
|
@ -1,6 +0,0 @@
|
||||
Git v2.16.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.5 to address
|
||||
the recently reported CVE-2018-17456; see the release notes for that
|
||||
version for details.
|
@ -1,398 +0,0 @@
|
||||
Git 2.17 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.16
|
||||
-------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* "diff" family of commands learned "--find-object=<object-id>" option
|
||||
to limit the findings to changes that involve the named object.
|
||||
|
||||
* "git format-patch" learned to give 72-cols to diffstat, which is
|
||||
consistent with other line length limits the subcommand uses for
|
||||
its output meant for e-mails.
|
||||
|
||||
* The log from "git daemon" can be redirected with a new option; one
|
||||
relevant use case is to send the log to standard error (instead of
|
||||
syslog) when running it from inetd.
|
||||
|
||||
* "git rebase" learned to take "--allow-empty-message" option.
|
||||
|
||||
* "git am" has learned the "--quit" option, in addition to the
|
||||
existing "--abort" option; having the pair mirrors a few other
|
||||
commands like "rebase" and "cherry-pick".
|
||||
|
||||
* "git worktree add" learned to run the post-checkout hook, just like
|
||||
"git clone" runs it upon the initial checkout.
|
||||
|
||||
* "git tag" learned an explicit "--edit" option that allows the
|
||||
message given via "-m" and "-F" to be further edited.
|
||||
|
||||
* "git fetch --prune-tags" may be used as a handy short-hand for
|
||||
getting rid of stale tags that are locally held.
|
||||
|
||||
* The new "--show-current-patch" option gives an end-user facing way
|
||||
to get the diff being applied when "git rebase" (and "git am")
|
||||
stops with a conflict.
|
||||
|
||||
* "git add -p" used to offer "/" (look for a matching hunk) as a
|
||||
choice, even there was only one hunk, which has been corrected.
|
||||
Also the single-key help is now given only for keys that are
|
||||
enabled (e.g. help for '/' won't be shown when there is only one
|
||||
hunk).
|
||||
|
||||
* Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
|
||||
the side branch being merged is a descendant of the current commit,
|
||||
create a merge commit instead of fast-forwarding) when merging a
|
||||
tag object. This was appropriate default for integrators who pull
|
||||
signed tags from their downstream contributors, but caused an
|
||||
unnecessary merges when used by downstream contributors who
|
||||
habitually "catch up" their topic branches with tagged releases
|
||||
from the upstream. Update "git merge" to default to --no-ff only
|
||||
when merging a tag object that does *not* sit at its usual place in
|
||||
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
|
||||
mitigate the problem.
|
||||
|
||||
* "git status" can spend a lot of cycles to compute the relation
|
||||
between the current branch and its upstream, which can now be
|
||||
disabled with "--no-ahead-behind" option.
|
||||
|
||||
* "git diff" and friends learned funcname patterns for Go language
|
||||
source files.
|
||||
|
||||
* "git send-email" learned "--reply-to=<address>" option.
|
||||
|
||||
* Funcname pattern used for C# now recognizes "async" keyword.
|
||||
|
||||
* In a way similar to how "git tag" learned to honor the pager
|
||||
setting only in the list mode, "git config" learned to ignore the
|
||||
pager setting when it is used for setting values (i.e. when the
|
||||
purpose of the operation is not to "show").
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* More perf tests for threaded grep
|
||||
|
||||
* "perf" test output can be sent to codespeed server.
|
||||
|
||||
* The build procedure for perl/ part has been greatly simplified by
|
||||
weaning ourselves off of MakeMaker.
|
||||
|
||||
* Perl 5.8 or greater has been required since Git 1.7.4 released in
|
||||
2010, but we continued to assume some core modules may not exist and
|
||||
used a conditional "eval { require <<module>> }"; we no longer do
|
||||
this. Some platforms (Fedora/RedHat/CentOS, for example) ship Perl
|
||||
without all core modules by default (e.g. Digest::MD5, File::Temp,
|
||||
File::Spec, Net::Domain, Net::SMTP). Users on such platforms may
|
||||
need to install these additional modules.
|
||||
|
||||
* As a convenience, we install copies of Perl modules we require which
|
||||
are not part of the core Perl distribution (e.g. Error and
|
||||
Mail::Address). Users and packagers whose operating system provides
|
||||
these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the
|
||||
bundled modules.
|
||||
|
||||
* In preparation for implementing narrow/partial clone, the machinery
|
||||
for checking object connectivity used by gc and fsck has been
|
||||
taught that a missing object is OK when it is referenced by a
|
||||
packfile specially marked as coming from trusted repository that
|
||||
promises to make them available on-demand and lazily.
|
||||
|
||||
* The machinery to clone & fetch, which in turn involves packing and
|
||||
unpacking objects, has been told how to omit certain objects using
|
||||
the filtering mechanism introduced by another topic. It now knows
|
||||
to mark the resulting pack as a promisor pack to tolerate missing
|
||||
objects, laying foundation for "narrow" clones.
|
||||
|
||||
* The first step to getting rid of mru API and using the
|
||||
doubly-linked list API directly instead.
|
||||
|
||||
* Retire mru API as it does not give enough abstraction over
|
||||
underlying list API to be worth it.
|
||||
|
||||
* Rewrite two more "git submodule" subcommands in C.
|
||||
|
||||
* The tracing machinery learned to report tweaking of environment
|
||||
variables as well.
|
||||
|
||||
* Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
|
||||
|
||||
* Prevent "clang-format" from breaking line after function return type.
|
||||
|
||||
* The sequencer infrastructure is shared across "git cherry-pick",
|
||||
"git rebase -i", etc., and has always spawned "git commit" when it
|
||||
needs to create a commit. It has been taught to do so internally,
|
||||
when able, by reusing the codepath "git commit" itself uses, which
|
||||
gives performance boost for a few tens of percents in some sample
|
||||
scenarios.
|
||||
|
||||
* Push the submodule version of collision-detecting SHA-1 hash
|
||||
implementation a bit harder on builders.
|
||||
|
||||
* Avoid mmapping small files while using packed refs (especially ones
|
||||
with zero size, which would cause later munmap() to fail).
|
||||
|
||||
* Conversion from uchar[20] to struct object_id continues.
|
||||
|
||||
* More tests for wildmatch functions.
|
||||
|
||||
* The code to binary search starting from a fan-out table (which is
|
||||
how the packfile is indexed with object names) has been refactored
|
||||
into a reusable helper.
|
||||
|
||||
* We now avoid using identifiers that clash with C++ keywords. Even
|
||||
though it is not a goal to compile Git with C++ compilers, changes
|
||||
like this help use of code analysis tools that targets C++ on our
|
||||
codebase.
|
||||
|
||||
* The executable is now built in 'script' phase in Travis CI integration,
|
||||
to follow the established practice, rather than during 'before_script'
|
||||
phase. This allows the CI categorize the failures better ('failed'
|
||||
is project's fault, 'errored' is build environment's).
|
||||
(merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
|
||||
|
||||
* Writing out the index file when the only thing that changed in it
|
||||
is the untracked cache information is often wasteful, and this has
|
||||
been optimized out.
|
||||
|
||||
* Various pieces of Perl code we have have been cleaned up.
|
||||
|
||||
* Internal API clean-up to allow write_locked_index() optionally skip
|
||||
writing the in-core index when it is not modified.
|
||||
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
||||
|
||||
|
||||
Fixes since v2.16
|
||||
-----------------
|
||||
|
||||
* An old regression in "git describe --all $annotated_tag^0" has been
|
||||
fixed.
|
||||
|
||||
* "git status" after moving a path in the working tree (hence making
|
||||
it appear "removed") and then adding with the -N option (hence
|
||||
making that appear "added") detected it as a rename, but did not
|
||||
report the old and new pathnames correctly.
|
||||
|
||||
* "git svn dcommit" did not take into account the fact that a
|
||||
svn+ssh:// URL with a username@ (typically used for pushing) refers
|
||||
to the same SVN repository without the username@ and failed when
|
||||
svn.pushmergeinfo option is set.
|
||||
|
||||
* API clean-up around revision traversal.
|
||||
|
||||
* "git merge -Xours/-Xtheirs" learned to use our/their version when
|
||||
resolving a conflicting updates to a symbolic link.
|
||||
|
||||
* "git clone $there $here" is allowed even when here directory exists
|
||||
as long as it is an empty directory, but the command incorrectly
|
||||
removed it upon a failure of the operation.
|
||||
|
||||
* "git commit --fixup" did not allow "-m<message>" option to be used
|
||||
at the same time; allow it to annotate resulting commit with more
|
||||
text.
|
||||
|
||||
* When resetting the working tree files recursively, the working tree
|
||||
of submodules are now also reset to match.
|
||||
|
||||
* "git stash -- <pathspec>" incorrectly blew away untracked files in
|
||||
the directory that matched the pathspec, which has been corrected.
|
||||
|
||||
* Instead of maintaining home-grown email address parsing code, ship
|
||||
a copy of reasonably recent Mail::Address to be used as a fallback
|
||||
in 'git send-email' when the platform lacks it.
|
||||
(merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
|
||||
|
||||
* "git add -p" was taught to ignore local changes to submodules as
|
||||
they do not interfere with the partial addition of regular changes
|
||||
anyway.
|
||||
|
||||
* Avoid showing a warning message in the middle of a line of "git
|
||||
diff" output.
|
||||
(merge 4e056c989f nd/diff-flush-before-warning later to maint).
|
||||
|
||||
* The http tracing code, often used to debug connection issues,
|
||||
learned to redact potentially sensitive information from its output
|
||||
so that it can be more safely sharable.
|
||||
(merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
|
||||
|
||||
* Crash fix for a corner case where an error codepath tried to unlock
|
||||
what it did not acquire lock on.
|
||||
(merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
|
||||
|
||||
* The split-index mode had a few corner case bugs fixed.
|
||||
(merge ae59a4e44f tg/split-index-fixes later to maint).
|
||||
|
||||
* Assorted fixes to "git daemon".
|
||||
(merge ed15e58efe jk/daemon-fixes later to maint).
|
||||
|
||||
* Completion of "git merge -s<strategy>" (in contrib/) did not work
|
||||
well in non-C locale.
|
||||
(merge 7cc763aaa3 nd/list-merge-strategy later to maint).
|
||||
|
||||
* Workaround for segfault with more recent versions of SVN.
|
||||
(merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
|
||||
|
||||
* Plug recently introduced leaks in fsck.
|
||||
(merge ba3a08ca0e jt/fsck-code-cleanup later to maint).
|
||||
|
||||
* "git pull --rebase" did not pass verbosity setting down when
|
||||
recursing into a submodule.
|
||||
(merge a56771a668 sb/pull-rebase-submodule later to maint).
|
||||
|
||||
* The way "git reset --hard" reports the commit the updated HEAD
|
||||
points at is made consistent with the way how the commit title is
|
||||
generated by the other parts of the system. This matters when the
|
||||
title is spread across physically multiple lines.
|
||||
(merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).
|
||||
|
||||
* Test fixes.
|
||||
(merge 63b1a175ee sg/test-i18ngrep later to maint).
|
||||
|
||||
* Some bugs around "untracked cache" feature have been fixed. This
|
||||
will notice corrupt data in the untracked cache left by old and
|
||||
buggy code and issue a warning---the index can be fixed by clearing
|
||||
the untracked cache from it.
|
||||
(merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).
|
||||
(merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).
|
||||
|
||||
* "git blame HEAD COPYING" in a bare repository failed to run, while
|
||||
"git blame HEAD -- COPYING" run just fine. This has been corrected.
|
||||
|
||||
* "git add" files in the same directory, but spelling the directory
|
||||
path in different cases on case insensitive filesystem, corrupted
|
||||
the name hash data structure and led to unexpected results. This
|
||||
has been corrected.
|
||||
(merge c95525e90d bp/name-hash-dirname-fix later to maint).
|
||||
|
||||
* "git rebase -p" mangled log messages of a merge commit, which is
|
||||
now fixed.
|
||||
(merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).
|
||||
|
||||
* Some low level protocol codepath could crash when they get an
|
||||
unexpected flush packet, which is now fixed.
|
||||
(merge bb1356dc64 js/packet-read-line-check-null later to maint).
|
||||
|
||||
* "git check-ignore" with multiple paths got confused when one is a
|
||||
file and the other is a directory, which has been fixed.
|
||||
(merge d60771e930 rs/check-ignore-multi later to maint).
|
||||
|
||||
* "git describe $garbage" stopped giving any errors when the garbage
|
||||
happens to be a string with 40 hexadecimal letters.
|
||||
(merge a8e7a2bf0f sb/describe-blob later to maint).
|
||||
|
||||
* Code to unquote single-quoted string (used in the parser for
|
||||
configuration files, etc.) did not diagnose bogus input correctly
|
||||
and produced bogus results instead.
|
||||
(merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).
|
||||
|
||||
* Many places in "git apply" knew that "/dev/null" that signals
|
||||
"there is no such file on this side of the diff" can be followed by
|
||||
whitespace and garbage when parsing a patch, except for one, which
|
||||
made an otherwise valid patch (e.g. ones from subversion) rejected.
|
||||
(merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).
|
||||
|
||||
* We no longer create any *.spec file, so "make clean" should not
|
||||
remove it.
|
||||
(merge 4321bdcabb tz/do-not-clean-spec-file later to maint).
|
||||
|
||||
* "git push" over http transport did not unquote the push-options
|
||||
correctly.
|
||||
(merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).
|
||||
|
||||
* "git send-email" learned to complain when the batch-size option is
|
||||
not defined when the relogin-delay option is, since these two are
|
||||
mutually required.
|
||||
(merge 9caa70697b xz/send-email-batch-size later to maint).
|
||||
|
||||
* Y2k20 fix ;-) for our perl scripts.
|
||||
(merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
|
||||
|
||||
* Threaded "git grep" has been optimized to avoid allocation in code
|
||||
section that is covered under a mutex.
|
||||
(merge 38ef24dccf rv/grep-cleanup later to maint).
|
||||
|
||||
* "git subtree" script (in contrib/) scripted around "git log", whose
|
||||
output got affected by end-user configuration like log.showsignature
|
||||
(merge 8841b5222c sg/subtree-signed-commits later to maint).
|
||||
|
||||
* While finding unique object name abbreviation, the code may
|
||||
accidentally have read beyond the end of the array of object names
|
||||
in a pack.
|
||||
(merge 21abed500c ds/find-unique-abbrev-optim later to maint).
|
||||
|
||||
* Micro optimization in revision traversal code.
|
||||
(merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
|
||||
|
||||
* "git commit" used to run "gc --auto" near the end, which was lost
|
||||
when the command was reimplemented in C by mistake.
|
||||
(merge 095c741edd ab/gc-auto-in-commit later to maint).
|
||||
|
||||
* Allow running a couple of tests with "sh -x".
|
||||
(merge c20bf94abc sg/cvs-tests-with-x later to maint).
|
||||
|
||||
* The codepath to replace an existing entry in the index had a bug in
|
||||
updating the name hash structure, which has been fixed.
|
||||
(merge 0e267b7a24 bp/refresh-cache-ent-rehash-fix later to maint).
|
||||
|
||||
* The transfer.fsckobjects configuration tells "git fetch" to
|
||||
validate the data and connected-ness of objects in the received
|
||||
pack; the code to perform this check has been taught about the
|
||||
narrow clone's convention that missing objects that are reachable
|
||||
from objects in a pack that came from a promisor remote is OK.
|
||||
|
||||
* There was an unused file-scope static variable left in http.c when
|
||||
building for versions of libCURL that is older than 7.19.4, which
|
||||
has been fixed.
|
||||
(merge b8fd6008ec rj/http-code-cleanup later to maint).
|
||||
|
||||
* Shell script portability fix.
|
||||
(merge 206a6ae013 ml/filter-branch-portability-fix later to maint).
|
||||
|
||||
* Other minor doc, test and build updates and code cleanups.
|
||||
(merge e2a5a028c7 bw/oidmap-autoinit later to maint).
|
||||
(merge ec3b4b06f8 cl/t9001-cleanup later to maint).
|
||||
(merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
|
||||
(merge fbac558a9b rs/describe-unique-abbrev later to maint).
|
||||
(merge 8462ff43e4 tb/crlf-conv-flags later to maint).
|
||||
(merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
|
||||
(merge 3449847168 cc/sha1-file-name later to maint).
|
||||
(merge ad622a256f ds/use-get-be64 later to maint).
|
||||
(merge f919ffebed sg/cocci-move-array later to maint).
|
||||
(merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
|
||||
(merge ef5b3a6c5e nd/shared-index-fix later to maint).
|
||||
(merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
|
||||
(merge b780e4407d jc/worktree-add-short-help later to maint).
|
||||
(merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
|
||||
(merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
|
||||
(merge 3738031581 jk/gettext-poison later to maint).
|
||||
(merge 54360a1956 rj/sparse-updates later to maint).
|
||||
(merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
|
||||
(merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
|
||||
(merge 4ccf461f56 bp/fsmonitor later to maint).
|
||||
(merge a6119f82b1 jk/test-hashmap-updates later to maint).
|
||||
(merge 5aea9fe6cc rd/typofix later to maint).
|
||||
(merge e4e5da2796 sb/status-doc-fix later to maint).
|
||||
(merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
|
||||
(merge d023df1ee6 tg/worktree-create-tracking later to maint).
|
||||
(merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
|
||||
(merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
|
||||
(merge 2708ef4af6 sg/t6300-modernize later to maint).
|
||||
(merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
|
||||
(merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
|
||||
(merge 1316416903 ms/non-ascii-ticks later to maint).
|
||||
(merge 878056005e rs/strbuf-read-file-or-whine later to maint).
|
||||
(merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
|
||||
(merge edfb8ba068 ot/ref-filter-cleanup later to maint).
|
||||
(merge 11395a3b4b jc/test-must-be-empty later to maint).
|
||||
(merge 768b9d6db7 mk/doc-pretty-fill later to maint).
|
||||
(merge 2caa7b8d27 ab/man-sec-list later to maint).
|
||||
(merge 40c17eb184 ks/t3200-typofix later to maint).
|
||||
(merge bd9958c358 dp/merge-strategy-doc-fix later to maint).
|
||||
(merge 9ee0540a40 js/ming-strftime later to maint).
|
||||
(merge 1775e990f7 tz/complete-tag-delete-tagname later to maint).
|
||||
(merge 00a4b03501 rj/warning-uninitialized-fix later to maint).
|
||||
(merge b635ed97a0 jk/attributes-path-doc later to maint).
|
@ -1,16 +0,0 @@
|
||||
Git v2.17.1 Release Notes
|
||||
=========================
|
||||
|
||||
Fixes since v2.17
|
||||
-----------------
|
||||
|
||||
* This release contains the same fixes made in the v2.13.7 version of
|
||||
Git, covering CVE-2018-11233 and 11235, and forward-ported to
|
||||
v2.14.4, v2.15.2 and v2.16.4 releases. See release notes to
|
||||
v2.13.7 for details.
|
||||
|
||||
* In addition to the above fixes, this release has support on the
|
||||
server side to reject pushes to repositories that attempt to create
|
||||
such problematic .gitmodules file etc. as tracked contents, to help
|
||||
hosting sites protect their customers by preventing malicious
|
||||
contents from spreading.
|
@ -1,12 +0,0 @@
|
||||
Git v2.17.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.5 to address
|
||||
the recently reported CVE-2018-17456; see the release notes for that
|
||||
version for details.
|
||||
|
||||
In addition, this release also teaches "fsck" and the server side
|
||||
logic to reject pushes to repositories that attempt to create such a
|
||||
problematic ".gitmodules" file as tracked contents, to help hosting
|
||||
sites protect their customers by preventing malicious contents from
|
||||
spreading.
|
@ -1,583 +0,0 @@
|
||||
Git 2.18 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.17
|
||||
-------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* Rename detection logic that is used in "merge" and "cherry-pick" has
|
||||
learned to guess when all of x/a, x/b and x/c have moved to z/a,
|
||||
z/b and z/c, it is likely that x/d added in the meantime would also
|
||||
want to move to z/d by taking the hint that the entire directory
|
||||
'x' moved to 'z'. A bug causing dirty files involved in a rename
|
||||
to be overwritten during merge has also been fixed as part of this
|
||||
work. Incidentally, this also avoids updating a file in the
|
||||
working tree after a (non-trivial) merge whose result matches what
|
||||
our side originally had.
|
||||
|
||||
* "git filter-branch" learned to use a different exit code to allow
|
||||
the callers to tell the case where there was no new commits to
|
||||
rewrite from other error cases.
|
||||
|
||||
* When built with more recent cURL, GIT_SSL_VERSION can now specify
|
||||
"tlsv1.3" as its value.
|
||||
|
||||
* "git gui" learned that "~/.ssh/id_ecdsa.pub" and
|
||||
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
|
||||
(merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).
|
||||
|
||||
* "git gui" performs commit upon CTRL/CMD+ENTER but the
|
||||
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
|
||||
same key binding. It now does.
|
||||
(merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).
|
||||
|
||||
* "git gui" has been taught to work with old versions of tk (like
|
||||
8.5.7) that do not support "ttk::style theme use" as a way to query
|
||||
the current theme.
|
||||
(merge 4891961105 cb/git-gui-ttk-style later to maint).
|
||||
|
||||
* "git rebase" has learned to honor "--signoff" option when using
|
||||
backends other than "am" (but not "--preserve-merges").
|
||||
|
||||
* "git branch --list" during an interrupted "rebase -i" now lets
|
||||
users distinguish the case where a detached HEAD is being rebased
|
||||
and a normal branch is being rebased.
|
||||
|
||||
* "git mergetools" learned talking to guiffy.
|
||||
|
||||
* The scripts in contrib/emacs/ have outlived their usefulness and
|
||||
have been replaced with a stub that errors out and tells the user
|
||||
there are replacements.
|
||||
|
||||
* The new "working-tree-encoding" attribute can ask Git to convert the
|
||||
contents to the specified encoding when checking out to the working
|
||||
tree (and the other way around when checking in).
|
||||
|
||||
* The "git config" command uses separate options e.g. "--int",
|
||||
"--bool", etc. to specify what type the caller wants the value to
|
||||
be interpreted as. A new "--type=<typename>" option has been
|
||||
introduced, which would make it cleaner to define new types.
|
||||
|
||||
* "git config --get" learned the "--default" option, to help the
|
||||
calling script. Building on top of the above changes, the
|
||||
"git config" learns "--type=color" type. Taken together, you can
|
||||
do things like "git config --get foo.color --default blue" and get
|
||||
the ANSI color sequence for the color given to foo.color variable,
|
||||
or "blue" if the variable does not exist.
|
||||
|
||||
* "git ls-remote" learned an option to allow sorting its output based
|
||||
on the refnames being shown.
|
||||
|
||||
* The command line completion (in contrib/) has been taught that "git
|
||||
stash save" has been deprecated ("git stash push" is the preferred
|
||||
spelling in the new world) and does not offer it as a possible
|
||||
completion candidate when "git stash push" can be.
|
||||
|
||||
* "git gc --prune=nonsense" spent long time repacking and then
|
||||
silently failed when underlying "git prune --expire=nonsense"
|
||||
failed to parse its command line. This has been corrected.
|
||||
|
||||
* Error messages from "git push" can be painted for more visibility.
|
||||
|
||||
* "git http-fetch" (deprecated) had an optional and experimental
|
||||
"feature" to fetch only commits and/or trees, which nobody used.
|
||||
This has been removed.
|
||||
|
||||
* The functionality of "$GIT_DIR/info/grafts" has been superseded by
|
||||
the "refs/replace/" mechanism for some time now, but the internal
|
||||
code had support for it in many places, which has been cleaned up
|
||||
in order to drop support of the "grafts" mechanism.
|
||||
|
||||
* "git worktree add" learned to check out an existing branch.
|
||||
|
||||
* "git --no-pager cmd" did not have short-and-sweet single letter
|
||||
option. Now it does as "-P".
|
||||
(merge 7213c28818 js/no-pager-shorthand later to maint).
|
||||
|
||||
* "git rebase" learned "--rebase-merges" to transplant the whole
|
||||
topology of commit graph elsewhere.
|
||||
|
||||
* "git status" learned to pay attention to UI related diff
|
||||
configuration variables such as diff.renames.
|
||||
|
||||
* The command line completion mechanism (in contrib/) learned to load
|
||||
custom completion file for "git $command" where $command is a
|
||||
custom "git-$command" that the end user has on the $PATH when using
|
||||
newer version of bash-completion.
|
||||
|
||||
* "git send-email" can sometimes offer confirmation dialog "Send this
|
||||
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
|
||||
'Edit' has been added to this dialog's choice.
|
||||
|
||||
* With merge.renames configuration set to false, the recursive merge
|
||||
strategy can be told not to spend cycles trying to find renamed
|
||||
paths and merge them accordingly.
|
||||
|
||||
* "git status" learned to honor a new status.renames configuration to
|
||||
skip rename detection, which could be useful for those who want to
|
||||
do so without disabling the default rename detection done by the
|
||||
"git diff" command.
|
||||
|
||||
* Command line completion (in contrib/) learned to complete pathnames
|
||||
for various commands better.
|
||||
|
||||
* "git blame" learns to unhighlight uninteresting metadata from the
|
||||
originating commit on lines that are the same as the previous one,
|
||||
and also paint lines in different colors depending on the age of
|
||||
the commit.
|
||||
|
||||
* Transfer protocol v2 learned to support the partial clone.
|
||||
|
||||
* When a short hexadecimal string is used to name an object but there
|
||||
are multiple objects that share the string as the prefix of their
|
||||
names, the code lists these ambiguous candidates in a help message.
|
||||
These object names are now sorted according to their types for
|
||||
easier eyeballing.
|
||||
|
||||
* "git fetch $there $refspec" that talks over protocol v2 can take
|
||||
advantage of server-side ref filtering; the code has been extended
|
||||
so that this mechanism triggers also when fetching with configured
|
||||
refspec.
|
||||
|
||||
* Our HTTP client code used to advertise that we accept gzip encoding
|
||||
from the other side; instead, just let cURL library to advertise
|
||||
and negotiate the best one.
|
||||
|
||||
* "git p4" learned to "unshelve" shelved commit from P4.
|
||||
(merge 123f631761 ld/p4-unshelve later to maint).
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* A "git fetch" from a repository with insane number of refs into a
|
||||
repository that is already up-to-date still wasted too many cycles
|
||||
making many lstat(2) calls to see if these objects at the tips
|
||||
exist as loose objects locally. These lstat(2) calls are optimized
|
||||
away by enumerating all loose objects beforehand.
|
||||
It is unknown if the new strategy negatively affects existing use
|
||||
cases, fetching into a repository with many loose objects from a
|
||||
repository with small number of refs.
|
||||
|
||||
* Git can be built to use either v1 or v2 of the PCRE library, and so
|
||||
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
|
||||
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
|
||||
and USE_LIBPCRE2 can be used to explicitly choose which version to
|
||||
use, as before.
|
||||
|
||||
* The build procedure learned to optionally use symbolic links
|
||||
(instead of hardlinks and copies) to install "git-foo" for built-in
|
||||
commands, whose binaries are all identical.
|
||||
|
||||
* Conversion from uchar[20] to struct object_id continues.
|
||||
|
||||
* The way "git worktree prune" worked internally has been simplified,
|
||||
by assuming how "git worktree move" moves an existing worktree to a
|
||||
different place.
|
||||
|
||||
* Code clean-up for the "repository" abstraction.
|
||||
(merge 00a3da2a13 nd/remove-ignore-env-field later to maint).
|
||||
|
||||
* Code to find the length to uniquely abbreviate object names based
|
||||
on packfile content, which is a relatively recent addtion, has been
|
||||
optimized to use the same fan-out table.
|
||||
|
||||
* The mechanism to use parse-options API to automate the command line
|
||||
completion continues to get extended and polished.
|
||||
|
||||
* Copies of old scripted Porcelain commands in contrib/examples/ have
|
||||
been removed.
|
||||
|
||||
* Some tests that rely on the exact hardcoded values of object names
|
||||
have been updated in preparation for hash function migration.
|
||||
|
||||
* Perf-test update.
|
||||
|
||||
* Test helper update.
|
||||
|
||||
* The effort continues to refactor the internal global data structure
|
||||
to make it possible to open multiple repositories, work with and
|
||||
then close them,
|
||||
|
||||
* Small test-helper programs have been consolidated into a single
|
||||
binary.
|
||||
|
||||
* API clean-up around ref-filter code.
|
||||
|
||||
* Shell completion (in contrib) that gives list of paths have been
|
||||
optimized somewhat.
|
||||
|
||||
* The index file is updated to record the fsmonitor section after a
|
||||
full scan was made, to avoid wasting the effort that has already
|
||||
spent.
|
||||
|
||||
* Performance measuring framework in t/perf learned to help bisecting
|
||||
performance regressions.
|
||||
|
||||
* Some multi-word source filenames are being renamed to separate
|
||||
words with dashes instead of underscores.
|
||||
|
||||
* An reusable "memory pool" implementation has been extracted from
|
||||
fast-import.c, which in turn has become the first user of the
|
||||
mem-pool API.
|
||||
|
||||
* A build-time option has been added to allow Git to be told to refer
|
||||
to its associated files relative to the main binary, in the same
|
||||
way that has been possible on Windows for quite some time, for
|
||||
Linux, BSDs and Darwin.
|
||||
|
||||
* Precompute and store information necessary for ancestry traversal
|
||||
in a separate file to optimize graph walking.
|
||||
|
||||
* The effort to pass the repository in-core structure throughout the
|
||||
API continues. This round deals with the code that implements the
|
||||
refs/replace/ mechanism.
|
||||
|
||||
* The build procedure "make DEVELOPER=YesPlease" learned to enable a
|
||||
bit more warning options depending on the compiler used to help
|
||||
developers more. There also is "make DEVOPTS=tokens" knob
|
||||
available now, for those who want to help fixing warnings we
|
||||
usually ignore, for example.
|
||||
|
||||
* A new version of the transport protocol is being worked on.
|
||||
|
||||
* The code to interface to GPG has been restructured somewhat to make
|
||||
it cleaner to integrate with other types of signature systems later.
|
||||
|
||||
* The code has been taught to use the duplicated information stored
|
||||
in the commit-graph file to learn the tree object name for a commit
|
||||
to avoid opening and parsing the commit object when it makes sense
|
||||
to do so.
|
||||
|
||||
* "git gc" in a large repository takes a lot of time as it considers
|
||||
to repack all objects into one pack by default. The command has
|
||||
been taught to pretend as if the largest existing packfile is
|
||||
marked with ".keep" so that it is left untouched while objects in
|
||||
other packs and loose ones are repacked.
|
||||
|
||||
* The transport protocol v2 is getting updated further.
|
||||
|
||||
* The codepath around object-info API has been taught to take the
|
||||
repository object (which in turn tells the API which object store
|
||||
the objects are to be located).
|
||||
|
||||
* "git pack-objects" needs to allocate tons of "struct object_entry"
|
||||
while doing its work, and shrinking its size helps the performance
|
||||
quite a bit.
|
||||
|
||||
* The implementation of "git rebase -i --root" has been updated to use
|
||||
the sequencer machinery more.
|
||||
|
||||
* Developer support update, by using BUG() macro instead of die() to
|
||||
mark codepaths that should not happen more clearly.
|
||||
|
||||
* Developer support. Use newer GCC on one of the builds done at
|
||||
TravisCI.org to get more warnings and errors diagnosed.
|
||||
|
||||
* Conversion from uchar[20] to struct object_id continues.
|
||||
|
||||
* By code restructuring of submodule merge in merge-recursive,
|
||||
informational messages from the codepath are now given using the
|
||||
same mechanism as other output, and honor the merge.verbosity
|
||||
configuration. The code also learned to give a few new messages
|
||||
when a submodule three-way merge resolves cleanly when one side
|
||||
records a descendant of the commit chosen by the other side.
|
||||
|
||||
* Avoid unchecked snprintf() to make future code auditing easier.
|
||||
(merge ac4896f007 jk/snprintf-truncation later to maint).
|
||||
|
||||
* Many tests hardcode the raw object names, which would change once
|
||||
we migrate away from SHA-1. While some of them must test against
|
||||
exact object names, most of them do not have to use hardcoded
|
||||
constants in the test. The latter kind of tests have been updated
|
||||
to test the moral equivalent of the original without hardcoding the
|
||||
actual object names.
|
||||
|
||||
* The list of commands with their various attributes were spread
|
||||
across a few places in the build procedure, but it now is getting a
|
||||
bit more consolidated to allow more automation.
|
||||
|
||||
* Quite a many tests assumed that newly created refs are made as
|
||||
loose refs using the files backend, which have been updated to use
|
||||
proper plumbing like rev-parse and update-ref, to avoid breakage
|
||||
once we start using different ref backends.
|
||||
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
||||
|
||||
|
||||
Fixes since v2.17
|
||||
-----------------
|
||||
|
||||
* "git shortlog cruft" aborted with a BUG message when run outside a
|
||||
Git repository. The command has been taught to complain about
|
||||
extra and unwanted arguments on its command line instead in such a
|
||||
case.
|
||||
(merge 4aa0161e83 ma/shortlog-revparse later to maint).
|
||||
|
||||
* "git stash push -u -- <pathspec>" gave an unnecessary and confusing
|
||||
error message when there was no tracked files that match the
|
||||
<pathspec>, which has been fixed.
|
||||
(merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).
|
||||
|
||||
* "git tag --contains no-such-commit" gave a full list of options
|
||||
after giving an error message.
|
||||
(merge 3bb0923f06 ps/contains-id-error-message later to maint).
|
||||
|
||||
* "diff-highlight" filter (in contrib/) learned to understand "git log
|
||||
--graph" output better.
|
||||
(merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
|
||||
|
||||
* when refs that do not point at committish are given, "git
|
||||
filter-branch" gave a misleading error messages. This has been
|
||||
corrected.
|
||||
(merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).
|
||||
|
||||
* "git submodule status" misbehaved on a submodule that has been
|
||||
removed from the working tree.
|
||||
(merge 74b6bda32f rs/status-with-removed-submodule later to maint).
|
||||
|
||||
* When credential helper exits very quickly without reading its
|
||||
input, it used to cause Git to die with SIGPIPE, which has been
|
||||
fixed.
|
||||
(merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).
|
||||
|
||||
* "git rebase --keep-empty" still removed an empty commit if the
|
||||
other side contained an empty commit (due to the "does an
|
||||
equivalent patch exist already?" check), which has been corrected.
|
||||
(merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).
|
||||
|
||||
* Some codepaths, including the refs API, get and keep relative
|
||||
paths, that go out of sync when the process does chdir(2). The
|
||||
chdir-notify API is introduced to let these codepaths adjust these
|
||||
cached paths to the new current directory.
|
||||
(merge fb9c2d2703 jk/relative-directory-fix later to maint).
|
||||
|
||||
* "cd sub/dir && git commit ../path" ought to record the changes to
|
||||
the file "sub/path", but this regressed long time ago.
|
||||
(merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).
|
||||
|
||||
* Recent introduction of "--log-destination" option to "git daemon"
|
||||
did not work well when the daemon was run under "--inetd" mode.
|
||||
(merge e67d906d73 lw/daemon-log-destination later to maint).
|
||||
|
||||
* Small fix to the autoconf build procedure.
|
||||
(merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).
|
||||
|
||||
* Fix an unexploitable (because the oversized contents are not under
|
||||
attacker's control) buffer overflow.
|
||||
(merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).
|
||||
|
||||
* Recent simplification of build procedure forgot a bit of tweak to
|
||||
the build procedure of contrib/mw-to-git/
|
||||
(merge d8698987f3 ab/simplify-perl-makefile later to maint).
|
||||
|
||||
* Moving a submodule that itself has submodule in it with "git mv"
|
||||
forgot to make necessary adjustment to the nested sub-submodules;
|
||||
now the codepath learned to recurse into the submodules.
|
||||
|
||||
* "git config --unset a.b", when "a.b" is the last variable in an
|
||||
otherwise empty section "a", left an empty section "a" behind, and
|
||||
worse yet, a subsequent "git config a.c value" did not reuse that
|
||||
empty shell and instead created a new one. These have been
|
||||
(partially) corrected.
|
||||
(merge c71d8bb38a js/empty-config-section-fix later to maint).
|
||||
|
||||
* "git worktree remove" learned that "-f" is a shorthand for
|
||||
"--force" option, just like for "git worktree add".
|
||||
(merge d228eea514 sb/worktree-remove-opt-force later to maint).
|
||||
|
||||
* The completion script (in contrib/) learned to clear cached list of
|
||||
command line options upon dot-sourcing it again in a more efficient
|
||||
way.
|
||||
(merge 94408dc71c sg/completion-clear-cached later to maint).
|
||||
|
||||
* "git svn" had a minor thinko/typo which has been fixed.
|
||||
(merge 51db271587 ab/git-svn-get-record-typofix later to maint).
|
||||
|
||||
* During a "rebase -i" session, the code could give older timestamp
|
||||
to commits created by later "pick" than an earlier "reword", which
|
||||
has been corrected.
|
||||
(merge 12f7babd6b js/ident-date-fix later to maint).
|
||||
|
||||
* "git submodule status" did not check the symbolic revision name it
|
||||
computed for the submodule HEAD is not the NULL, and threw it at
|
||||
printf routines, which has been corrected.
|
||||
(merge 0b5e2ea7cf nd/submodule-status-fix later to maint).
|
||||
|
||||
* When fed input that already has In-Reply-To: and/or References:
|
||||
headers and told to add the same information, "git send-email"
|
||||
added these headers separately, instead of appending to an existing
|
||||
one, which is a violation of the RFC. This has been corrected.
|
||||
(merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).
|
||||
|
||||
* "git fast-export" had a regression in v2.15.0 era where it skipped
|
||||
some merge commits in certain cases, which has been corrected.
|
||||
(merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).
|
||||
|
||||
* The code did not propagate the terminal width to subprocesses via
|
||||
COLUMNS environment variable, which it now does. This caused
|
||||
trouble to "git column" helper subprocess when "git tag --column=row"
|
||||
tried to list the existing tags on a display with non-default width.
|
||||
(merge b5d5a567fb nd/term-columns later to maint).
|
||||
|
||||
* We learned that our source files with ".pl" and ".py" extensions
|
||||
are Perl and Python files respectively and changes to them are
|
||||
better viewed as such with appropriate diff drivers.
|
||||
(merge 7818b619e2 ab/perl-python-attrs later to maint).
|
||||
|
||||
* "git rebase -i" sometimes left intermediate "# This is a
|
||||
combination of N commits" message meant for the human consumption
|
||||
inside an editor in the final result in certain corner cases, which
|
||||
has been fixed.
|
||||
(merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).
|
||||
|
||||
* A test to see if the filesystem normalizes UTF-8 filename has been
|
||||
updated to check what we need to know in a more direct way, i.e. a
|
||||
path created in NFC form can be accessed with NFD form (or vice
|
||||
versa) to cope with APFS as well as HFS.
|
||||
(merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).
|
||||
|
||||
* "git format-patch --cover --attach" created a broken MIME multipart
|
||||
message for the cover letter, which has been fixed by keeping the
|
||||
cover letter as plain text file.
|
||||
(merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).
|
||||
|
||||
* The split-index feature had a long-standing and dormant bug in
|
||||
certain use of the in-core merge machinery, which has been fixed.
|
||||
(merge 7db118303a en/unpack-trees-split-index-fix later to maint).
|
||||
|
||||
* Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
|
||||
render illustration in a literal block correctly when indented with
|
||||
HT by default. The problem is fixed by forcing 8-space tabs.
|
||||
(merge 379805051d bc/asciidoctor-tab-width later to maint).
|
||||
|
||||
* Code clean-up to adjust to a more recent lockfile API convention that
|
||||
allows lockfile instances kept on the stack.
|
||||
(merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).
|
||||
|
||||
* the_repository->index is not a allocated piece of memory but
|
||||
repo_clear() indiscriminately attempted to free(3) it, which has
|
||||
been corrected.
|
||||
(merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).
|
||||
|
||||
* Code clean-up to avoid non-standard-conformant pointer arithmetic.
|
||||
(merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).
|
||||
|
||||
* Code clean-up to turn history traversal more robust in a
|
||||
semi-corrupt repository.
|
||||
(merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).
|
||||
|
||||
* "git update-ref A B" is supposed to ensure that ref A does not yet
|
||||
exist when B is a NULL OID, but this check was not done correctly
|
||||
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
|
||||
|
||||
* "git submodule update" and "git submodule add" supported the
|
||||
"--reference" option to borrow objects from a neighbouring local
|
||||
repository like "git clone" does, but lacked the more recent
|
||||
invention "--dissociate". Also "git submodule add" has been taught
|
||||
to take the "--progress" option.
|
||||
(merge a0ef29341a cf/submodule-progress-dissociate later to maint).
|
||||
|
||||
* Update credential-netrc helper (in contrib/) to allow customizing
|
||||
the GPG used to decrypt the encrypted .netrc file.
|
||||
(merge 786ef50a23 lm/credential-netrc later to maint).
|
||||
|
||||
* "git submodule update" attempts two different kinds of "git fetch"
|
||||
against the upstream repository to grab a commit bound at the
|
||||
submodule's path, but it incorrectly gave up if the first kind
|
||||
(i.e. a normal fetch) failed, making the second "last resort" one
|
||||
(i.e. fetching an exact commit object by object name) ineffective.
|
||||
This has been corrected.
|
||||
(merge e30d833671 sb/submodule-update-try-harder later to maint).
|
||||
|
||||
* Error behaviour of "git grep" when it cannot read the index was
|
||||
inconsistent with other commands that uses the index, which has
|
||||
been corrected to error out early.
|
||||
(merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).
|
||||
|
||||
* We used to call regfree() after regcomp() failed in some codepaths,
|
||||
which have been corrected.
|
||||
(merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).
|
||||
|
||||
* The import-tars script (in contrib/) has been taught to handle
|
||||
tarballs with overly long paths that use PAX extended headers.
|
||||
(merge 12ecea46e3 pa/import-tars-long-names later to maint).
|
||||
|
||||
* "git rev-parse Y..." etc. misbehaved when given endpoints were
|
||||
not committishes.
|
||||
(merge 0ed556d38f en/rev-parse-invalid-range later to maint).
|
||||
|
||||
* "git pull --recurse-submodules --rebase", when the submodule
|
||||
repository's history did not have anything common between ours and
|
||||
the upstream's, failed to execute. We need to fetch from them to
|
||||
continue even in such a case.
|
||||
(merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).
|
||||
|
||||
* "git remote update" can take both a single remote nickname and a
|
||||
nickname for remote groups, but only one of them was documented.
|
||||
(merge a97447a42a nd/remote-update-doc later to maint).
|
||||
|
||||
* "index-pack --strict" has been taught to make sure that it runs the
|
||||
final object integrity checks after making the freshly indexed
|
||||
packfile available to itself.
|
||||
(merge 3737746120 jk/index-pack-maint later to maint).
|
||||
|
||||
* Make zlib inflate codepath more robust against versions of zlib
|
||||
that clobber unused portion of outbuf.
|
||||
(merge b611396e97 jl/zlib-restore-nul-termination later to maint).
|
||||
|
||||
* Fix old merge glitch in Documentation during v2.13-rc0 era.
|
||||
(merge 28cb06020b mw/doc-merge-enumfix later to maint).
|
||||
|
||||
* The code to read compressed bitmap was not careful to avoid reading
|
||||
past the end of the file, which has been corrected.
|
||||
(merge 1140bf01ec jk/ewah-bounds-check later to maint).
|
||||
|
||||
* "make NO_ICONV=NoThanks" did not override NEEDS_LIBICONV
|
||||
(i.e. linkage of -lintl, -liconv, etc. that are platform-specific
|
||||
tweaks), which has been corrected.
|
||||
(merge fdb1fbbc7d es/make-no-iconv later to maint).
|
||||
|
||||
* Other minor doc, test and build updates and code cleanups.
|
||||
(merge 248f66ed8e nd/trace-with-env later to maint).
|
||||
(merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
|
||||
(merge 5988eb631a ab/doc-hash-brokenness later to maint).
|
||||
(merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
|
||||
(merge 05e293c1ac jk/flockfile-stdio later to maint).
|
||||
(merge e9184b0789 jk/t5561-missing-curl later to maint).
|
||||
(merge b1801b85a3 nd/worktree-move later to maint).
|
||||
(merge bbd374dd20 ak/bisect-doc-typofix later to maint).
|
||||
(merge 4855f06fb3 mn/send-email-credential-doc later to maint).
|
||||
(merge 8523b1e355 en/doc-typoes later to maint).
|
||||
(merge 43b44ccfe7 js/t5404-path-fix later to maint).
|
||||
(merge decf711fc1 ps/test-chmtime-get later to maint).
|
||||
(merge 22d11a6e8e es/worktree-docs later to maint).
|
||||
(merge 92a5dbbc22 tg/use-git-contacts later to maint).
|
||||
(merge adc887221f tq/t1510 later to maint).
|
||||
(merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
|
||||
(merge 73364e4f10 tz/doc-git-urls-reference later to maint).
|
||||
(merge cd1e606bad bc/mailmap-self later to maint).
|
||||
(merge f7997e3682 ao/config-api-doc later to maint).
|
||||
(merge ee930754d8 jk/apply-p-doc later to maint).
|
||||
(merge 011b648646 nd/pack-format-doc later to maint).
|
||||
(merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
|
||||
(merge f6b82970aa sg/t5516-fixes later to maint).
|
||||
(merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
|
||||
(merge 7d0ee47c11 js/test-unset-prereq later to maint).
|
||||
(merge 5356a3c354 ah/misc-doc-updates later to maint).
|
||||
(merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
|
||||
(merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
|
||||
(merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
|
||||
(merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
|
||||
(merge 590551ca2c rd/tag-doc-lightweight later to maint).
|
||||
(merge 44f560fc16 rd/init-typo later to maint).
|
||||
(merge f156a0934a rd/p4-doc-markup-env later to maint).
|
||||
(merge 2a00502b14 tg/doc-sec-list later to maint).
|
||||
(merge 47cc91310a jk/submodule-fsck-loose-fixup later to maint).
|
||||
(merge efde7b725c rd/comment-typofix-in-sha1-file later to maint).
|
||||
(merge 7eedad15df rd/diff-options-typofix later to maint).
|
||||
(merge 58ebd936cc km/doc-workflows-typofix later to maint).
|
||||
(merge 30aa96cdf8 rd/doc-remote-tracking-with-hyphen later to maint).
|
||||
(merge cf317877e3 ks/branch-set-upstream later to maint).
|
||||
(merge 8de19d6be8 sg/t7406-chain-fix later to maint).
|
@ -1,6 +0,0 @@
|
||||
Git v2.18.1 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.5 and in
|
||||
v2.17.2 to address the recently reported CVE-2018-17456; see the
|
||||
release notes for those versions for details.
|
@ -1,47 +1,40 @@
|
||||
Submitting Patches
|
||||
==================
|
||||
|
||||
== Guidelines
|
||||
|
||||
Here are some guidelines for people who want to contribute their code
|
||||
to this software.
|
||||
|
||||
[[base-branch]]
|
||||
=== Decide what to base your work on.
|
||||
(0) Decide what to base your work on.
|
||||
|
||||
In general, always base your work on the oldest branch that your
|
||||
change is relevant to.
|
||||
|
||||
* A bugfix should be based on `maint` in general. If the bug is not
|
||||
present in `maint`, base it on `master`. For a bug that's not yet
|
||||
in `master`, find the topic that introduces the regression, and
|
||||
base your work on the tip of the topic.
|
||||
- A bugfix should be based on 'maint' in general. If the bug is not
|
||||
present in 'maint', base it on 'master'. For a bug that's not yet
|
||||
in 'master', find the topic that introduces the regression, and
|
||||
base your work on the tip of the topic.
|
||||
|
||||
* A new feature should be based on `master` in general. If the new
|
||||
feature depends on a topic that is in `pu`, but not in `master`,
|
||||
base your work on the tip of that topic.
|
||||
- A new feature should be based on 'master' in general. If the new
|
||||
feature depends on a topic that is in 'pu', but not in 'master',
|
||||
base your work on the tip of that topic.
|
||||
|
||||
* Corrections and enhancements to a topic not yet in `master` should
|
||||
be based on the tip of that topic. If the topic has not been merged
|
||||
to `next`, it's alright to add a note to squash minor corrections
|
||||
into the series.
|
||||
- Corrections and enhancements to a topic not yet in 'master' should
|
||||
be based on the tip of that topic. If the topic has not been merged
|
||||
to 'next', it's alright to add a note to squash minor corrections
|
||||
into the series.
|
||||
|
||||
* In the exceptional case that a new feature depends on several topics
|
||||
not in `master`, start working on `next` or `pu` privately and send
|
||||
out patches for discussion. Before the final merge, you may have to
|
||||
wait until some of the dependent topics graduate to `master`, and
|
||||
rebase your work.
|
||||
- In the exceptional case that a new feature depends on several topics
|
||||
not in 'master', start working on 'next' or 'pu' privately and send
|
||||
out patches for discussion. Before the final merge, you may have to
|
||||
wait until some of the dependent topics graduate to 'master', and
|
||||
rebase your work.
|
||||
|
||||
* Some parts of the system have dedicated maintainers with their own
|
||||
repositories (see the section "Subsystems" below). Changes to
|
||||
these parts should be based on their trees.
|
||||
- Some parts of the system have dedicated maintainers with their own
|
||||
repositories (see the section "Subsystems" below). Changes to
|
||||
these parts should be based on their trees.
|
||||
|
||||
To find the tip of a topic branch, run `git log --first-parent
|
||||
master..pu` and look for the merge commit. The second parent of this
|
||||
To find the tip of a topic branch, run "git log --first-parent
|
||||
master..pu" and look for the merge commit. The second parent of this
|
||||
commit is the tip of the topic branch.
|
||||
|
||||
[[separate-commits]]
|
||||
=== Make separate commits for logically separate changes.
|
||||
(1) Make separate commits for logically separate changes.
|
||||
|
||||
Unless your patch is really trivial, you should not be sending
|
||||
out a patch that was generated between your working tree and
|
||||
@ -65,9 +58,8 @@ differs substantially from the prior version, are all good things
|
||||
to have.
|
||||
|
||||
Make sure that you have tests for the bug you are fixing. See
|
||||
`t/README` for guidance.
|
||||
t/README for guidance.
|
||||
|
||||
[[tests]]
|
||||
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
|
||||
@ -92,45 +84,41 @@ 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.
|
||||
|
||||
[[whitespace-check]]
|
||||
Oh, another thing. We are picky about whitespaces. Make sure your
|
||||
changes do not trigger errors with the sample pre-commit hook shipped
|
||||
in `templates/hooks--pre-commit`. To help ensure this does not happen,
|
||||
run `git diff --check` on your changes before you commit.
|
||||
in templates/hooks--pre-commit. To help ensure this does not happen,
|
||||
run "git diff --check" on your changes before you commit.
|
||||
|
||||
[[describe-changes]]
|
||||
=== Describe your changes well.
|
||||
|
||||
(2) Describe your changes well.
|
||||
|
||||
The first line of the commit message should be a short description (50
|
||||
characters is the soft limit, see DISCUSSION in linkgit:git-commit[1]),
|
||||
and should skip the full stop. It is also conventional in most cases to
|
||||
characters is the soft limit, see DISCUSSION in git-commit(1)), and
|
||||
should skip the full stop. It is also conventional in most cases to
|
||||
prefix the first line with "area: " where the area is a filename or
|
||||
identifier for the general area of the code being modified, e.g.
|
||||
|
||||
* doc: clarify distinction between sign-off and pgp-signing
|
||||
* githooks.txt: improve the intro section
|
||||
. doc: clarify distinction between sign-off and pgp-signing
|
||||
. githooks.txt: improve the intro section
|
||||
|
||||
If in doubt which identifier to use, run `git log --no-merges` on the
|
||||
If in doubt which identifier to use, run "git log --no-merges" on the
|
||||
files you are modifying to see the current conventions.
|
||||
|
||||
[[summary-section]]
|
||||
It's customary to start the remainder of the first line after "area: "
|
||||
with a lower-case letter. E.g. "doc: clarify...", not "doc:
|
||||
Clarify...", or "githooks.txt: improve...", not "githooks.txt:
|
||||
Improve...".
|
||||
|
||||
[[meaningful-message]]
|
||||
The body should provide a meaningful commit message, which:
|
||||
|
||||
. explains the problem the change tries to solve, i.e. what is wrong
|
||||
with the current code without the change.
|
||||
. explains the problem the change tries to solve, i.e. what is wrong
|
||||
with the current code without the change.
|
||||
|
||||
. justifies the way the change solves the problem, i.e. why the
|
||||
result with the change is better.
|
||||
. justifies the way the change solves the problem, i.e. why the
|
||||
result with the change is better.
|
||||
|
||||
. alternate solutions considered but discarded, if any.
|
||||
. alternate solutions considered but discarded, if any.
|
||||
|
||||
[[imperative-mood]]
|
||||
Describe your changes in imperative mood, e.g. "make xyzzy do frotz"
|
||||
instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy
|
||||
to do frotz", as if you are giving orders to the codebase to change
|
||||
@ -138,49 +126,36 @@ its behavior. 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.
|
||||
|
||||
[[commit-reference]]
|
||||
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 ...
|
||||
....
|
||||
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, or this invocation of `git show`:
|
||||
format, or this invocation of "git show":
|
||||
|
||||
....
|
||||
git show -s --date=short --pretty='format:%h ("%s", %ad)' <commit>
|
||||
....
|
||||
git show -s --date=short --pretty='format:%h ("%s", %ad)' <commit>
|
||||
|
||||
[[git-tools]]
|
||||
=== Generate your patch using Git tools out of your commits.
|
||||
(3) Generate your patch using Git tools out of your commits.
|
||||
|
||||
Git based diff tools generate unidiff which is the preferred format.
|
||||
|
||||
You do not have to be afraid to use `-M` option to `git diff` or
|
||||
`git format-patch`, if your patch involves file renames. The
|
||||
You do not have to be afraid to use -M option to "git diff" or
|
||||
"git format-patch", if your patch involves file renames. The
|
||||
receiving end can handle them just fine.
|
||||
|
||||
[[review-patch]]
|
||||
Please make sure your patch does not add commented out debugging code,
|
||||
or include any extra files which do not relate to what your patch
|
||||
is trying to achieve. Make sure to review
|
||||
your patch after generating it, to ensure accuracy. Before
|
||||
sending out, please make sure it cleanly applies to the `master`
|
||||
sending out, please make sure it cleanly applies to the "master"
|
||||
branch head. If you are preparing a work based on "next" branch,
|
||||
that is fine, but please mark it as such.
|
||||
|
||||
[[send-patches]]
|
||||
=== Sending your patches.
|
||||
|
||||
:security-ml: footnoteref:[security-ml,The Git Security mailing list: git-security@googlegroups.com]
|
||||
|
||||
Before sending any patches, please note that patches that may be
|
||||
security relevant should be submitted privately to the Git Security
|
||||
mailing list{security-ml}, instead of the public mailing list.
|
||||
(4) Sending your patches.
|
||||
|
||||
Learn to use format-patch and send-email if possible. These commands
|
||||
are optimized for the workflow of sending patches, avoiding many ways
|
||||
@ -209,15 +184,14 @@ lose tabs that way if you are not careful.
|
||||
|
||||
It is a common convention to prefix your subject line with
|
||||
[PATCH]. This lets people easily distinguish patches from other
|
||||
e-mail discussions. Use of markers in addition to PATCH within
|
||||
the brackets to describe the nature of the patch is also
|
||||
encouraged. E.g. [RFC PATCH] (where RFC stands for "request for
|
||||
comments") is often used to indicate a patch needs further
|
||||
discussion before being accepted, [PATCH v2], [PATCH v3] etc.
|
||||
are often seen when you are sending an update to what you have
|
||||
previously sent.
|
||||
e-mail discussions. Use of additional markers after PATCH and
|
||||
the closing bracket to mark the nature of the patch is also
|
||||
encouraged. E.g. [PATCH/RFC] is often used when the patch is
|
||||
not ready to be applied but it is for discussion, [PATCH v2],
|
||||
[PATCH v3] etc. are often seen when you are sending an update to
|
||||
what you have previously sent.
|
||||
|
||||
The `git format-patch` command follows the best current practice to
|
||||
"git format-patch" command follows the best current practice to
|
||||
format the body of an e-mail message. At the beginning of the
|
||||
patch should come your commit message, ending with the
|
||||
Signed-off-by: lines, and a line that consists of three dashes,
|
||||
@ -225,10 +199,6 @@ followed by the diffstat information and the patch itself. If
|
||||
you are forwarding a patch from somebody else, optionally, at
|
||||
the beginning of the e-mail message just before the commit
|
||||
message starts, you can put a "From: " line to name that person.
|
||||
To change the default "[PATCH]" in the subject to "[<text>]", use
|
||||
`git format-patch --subject-prefix=<text>`. As a shortcut, you
|
||||
can use `--rfc` instead of `--subject-prefix="RFC PATCH"`, or
|
||||
`-v <n>` instead of `--subject-prefix="PATCH v<n>"`.
|
||||
|
||||
You often want to add additional explanation about the patch,
|
||||
other than the commit message itself. Place such "cover letter"
|
||||
@ -238,7 +208,6 @@ an explanation of changes between each iteration can be kept in
|
||||
Git-notes and inserted automatically following the three-dash
|
||||
line via `git format-patch --notes`.
|
||||
|
||||
[[attachment]]
|
||||
Do not attach the patch as a MIME attachment, compressed or not.
|
||||
Do not let your e-mail client send quoted-printable. Do not let
|
||||
your e-mail client send format=flowed which would destroy
|
||||
@ -253,7 +222,6 @@ 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.
|
||||
|
||||
[[pgp-signature]]
|
||||
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
|
||||
@ -262,34 +230,28 @@ 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
|
||||
that starts with `-----BEGIN PGP SIGNED MESSAGE-----`. That is
|
||||
that starts with '-----BEGIN PGP SIGNED MESSAGE-----'. That is
|
||||
not a text/plain, it's something else.
|
||||
|
||||
:security-ml-ref: footnoteref:[security-ml]
|
||||
|
||||
As mentioned at the beginning of the section, patches that may be
|
||||
security relevant should not be submitted to the public mailing list
|
||||
mentioned below, but should instead be sent privately to the Git
|
||||
Security mailing list{security-ml-ref}.
|
||||
|
||||
Send your patch with "To:" set to the mailing list, with "cc:" listing
|
||||
people who are involved in the area you are touching (the `git
|
||||
contacts` command in `contrib/contacts/` can help to
|
||||
people who are involved in the area you are touching (the output from
|
||||
"git blame $path" and "git shortlog --no-merges $path" would help to
|
||||
identify them), to solicit comments and reviews.
|
||||
|
||||
:current-maintainer: footnote:[The current maintainer: gitster@pobox.com]
|
||||
:git-ml: footnote:[The mailing list: git@vger.kernel.org]
|
||||
|
||||
After the list reached a consensus that it is a good idea to apply the
|
||||
patch, re-send it with "To:" set to the maintainer{current-maintainer} and "cc:" the
|
||||
list{git-ml} for inclusion.
|
||||
patch, re-send it with "To:" set to the maintainer [*1*] and "cc:" the
|
||||
list [*2*] for inclusion.
|
||||
|
||||
Do not forget to add trailers such as `Acked-by:`, `Reviewed-by:` and
|
||||
`Tested-by:` lines as necessary to credit people who helped your
|
||||
Do not forget to add trailers such as "Acked-by:", "Reviewed-by:" and
|
||||
"Tested-by:" lines as necessary to credit people who helped your
|
||||
patch.
|
||||
|
||||
[[sign-off]]
|
||||
=== Certify your work by adding your "Signed-off-by: " line
|
||||
[Addresses]
|
||||
*1* The current maintainer: gitster@pobox.com
|
||||
*2* The mailing list: git@vger.kernel.org
|
||||
|
||||
|
||||
(5) Certify your work by adding your "Signed-off-by: " line
|
||||
|
||||
To improve tracking of who did what, we've borrowed the
|
||||
"sign-off" procedure from the Linux kernel project on patches
|
||||
@ -301,39 +263,35 @@ the patch, which certifies that you wrote it or otherwise have
|
||||
the right to pass it on as a open-source patch. The rules are
|
||||
pretty simple: if you can certify the below D-C-O:
|
||||
|
||||
[[dco]]
|
||||
.Developer's Certificate of Origin 1.1
|
||||
____
|
||||
By making a contribution to this project, I certify that:
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
a. The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
b. The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
(a) The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
c. The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
(b) The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
d. I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
____
|
||||
(c) The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
(d) I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
|
||||
then you just add a line saying
|
||||
|
||||
....
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
....
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
|
||||
This line can be automatically added by Git if you run the git-commit
|
||||
command with the -s option.
|
||||
@ -344,86 +302,85 @@ D-C-O. Indeed you are encouraged to do so. Do not forget to
|
||||
place an in-body "From: " line at the beginning to properly attribute
|
||||
the change to its true author (see (2) above).
|
||||
|
||||
[[real-name]]
|
||||
Also notice that a real name is used in the Signed-off-by: line. Please
|
||||
don't hide your real name.
|
||||
|
||||
[[commit-trailers]]
|
||||
If you like, you can put extra tags at the end:
|
||||
|
||||
. `Reported-by:` is used to credit someone who found the bug that
|
||||
the patch attempts to fix.
|
||||
. `Acked-by:` says that the person who is more familiar with the area
|
||||
the patch attempts to modify liked the patch.
|
||||
. `Reviewed-by:`, unlike the other tags, can only be offered by the
|
||||
reviewer and means that she is completely satisfied that the patch
|
||||
is ready for application. It is usually offered only after a
|
||||
detailed review.
|
||||
. `Tested-by:` is used to indicate that the person applied the patch
|
||||
and found it to have the desired effect.
|
||||
1. "Reported-by:" is used to credit someone who found the bug that
|
||||
the patch attempts to fix.
|
||||
2. "Acked-by:" says that the person who is more familiar with the area
|
||||
the patch attempts to modify liked the patch.
|
||||
3. "Reviewed-by:", unlike the other tags, can only be offered by the
|
||||
reviewer and means that she is completely satisfied that the patch
|
||||
is ready for application. It is usually offered only after a
|
||||
detailed review.
|
||||
4. "Tested-by:" is used to indicate that the person applied the patch
|
||||
and found it to have the desired effect.
|
||||
|
||||
You can also create your own tag or use one that's in common usage
|
||||
such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:".
|
||||
|
||||
== Subsystems with dedicated maintainers
|
||||
------------------------------------------------
|
||||
Subsystems with dedicated maintainers
|
||||
|
||||
Some parts of the system have dedicated maintainers with their own
|
||||
repositories.
|
||||
|
||||
- 'git-gui/' comes from git-gui project, maintained by Pat Thoyts:
|
||||
- git-gui/ comes from git-gui project, maintained by Pat Thoyts:
|
||||
|
||||
git://repo.or.cz/git-gui.git
|
||||
git://repo.or.cz/git-gui.git
|
||||
|
||||
- 'gitk-git/' comes from Paul Mackerras's gitk project:
|
||||
- gitk-git/ comes from Paul Mackerras's gitk project:
|
||||
|
||||
git://ozlabs.org/~paulus/gitk
|
||||
git://ozlabs.org/~paulus/gitk
|
||||
|
||||
- 'po/' comes from the localization coordinator, Jiang Xin:
|
||||
- po/ comes from the localization coordinator, Jiang Xin:
|
||||
|
||||
https://github.com/git-l10n/git-po/
|
||||
|
||||
Patches to these parts should be based on their trees.
|
||||
|
||||
[[patch-flow]]
|
||||
== An ideal patch flow
|
||||
------------------------------------------------
|
||||
An ideal patch flow
|
||||
|
||||
Here is an ideal patch flow for this project the current maintainer
|
||||
suggests to the contributors:
|
||||
|
||||
. You come up with an itch. You code it up.
|
||||
(0) You come up with an itch. You code it up.
|
||||
|
||||
. Send it to the list and cc people who may need to know about
|
||||
the change.
|
||||
+
|
||||
The people who may need to know are the ones whose code you
|
||||
are butchering. These people happen to be the ones who are
|
||||
most likely to be knowledgeable enough to help you, but
|
||||
they have no obligation to help you (i.e. you ask for help,
|
||||
don't demand). +git log -p {litdd} _$area_you_are_modifying_+ would
|
||||
help you find out who they are.
|
||||
(1) Send it to the list and cc people who may need to know about
|
||||
the change.
|
||||
|
||||
. You get comments and suggestions for improvements. You may
|
||||
even get them in a "on top of your change" patch form.
|
||||
The people who may need to know are the ones whose code you
|
||||
are butchering. These people happen to be the ones who are
|
||||
most likely to be knowledgeable enough to help you, but
|
||||
they have no obligation to help you (i.e. you ask for help,
|
||||
don't demand). "git log -p -- $area_you_are_modifying" would
|
||||
help you find out who they are.
|
||||
|
||||
. Polish, refine, and re-send to the list and the people who
|
||||
spend their time to improve your patch. Go back to step (2).
|
||||
(2) You get comments and suggestions for improvements. You may
|
||||
even get them in a "on top of your change" patch form.
|
||||
|
||||
. The list forms consensus that the last round of your patch is
|
||||
good. Send it to the maintainer and cc the list.
|
||||
(3) Polish, refine, and re-send to the list and the people who
|
||||
spend their time to improve your patch. Go back to step (2).
|
||||
|
||||
. A topic branch is created with the patch and is merged to `next`,
|
||||
and cooked further and eventually graduates to `master`.
|
||||
(4) The list forms consensus that the last round of your patch is
|
||||
good. Send it to the maintainer and cc the list.
|
||||
|
||||
(5) A topic branch is created with the patch and is merged to 'next',
|
||||
and cooked further and eventually graduates to 'master'.
|
||||
|
||||
In any time between the (2)-(3) cycle, the maintainer may pick it up
|
||||
from the list and queue it to `pu`, in order to make it easier for
|
||||
from the list and queue it to 'pu', in order to make it easier for
|
||||
people play with it without having to pick up and apply the patch to
|
||||
their trees themselves.
|
||||
|
||||
[[patch-status]]
|
||||
== Know the status of your patch after submission
|
||||
------------------------------------------------
|
||||
Know the status of your patch after submission
|
||||
|
||||
* You can use Git itself to find out when your patch is merged in
|
||||
master. `git pull --rebase` will automatically skip already-applied
|
||||
master. 'git pull --rebase' will automatically skip already-applied
|
||||
patches, and will let you know. This works only if you rebase on top
|
||||
of the branch in which your patch has been merged (i.e. it will not
|
||||
tell you if your patch is merged in pu if you rebase on top of
|
||||
@ -433,8 +390,8 @@ their trees themselves.
|
||||
entitled "What's cooking in git.git" and "What's in git.git" giving
|
||||
the status of various proposed changes.
|
||||
|
||||
[[travis]]
|
||||
== GitHub-Travis CI hints
|
||||
--------------------------------------------------
|
||||
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,
|
||||
@ -443,25 +400,25 @@ test build here: https://travis-ci.org/git/git/builds/120473209
|
||||
|
||||
Follow these steps for the initial setup:
|
||||
|
||||
. 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/
|
||||
(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/
|
||||
|
||||
. Open the Travis CI website: https://travis-ci.org
|
||||
(2) Open the Travis CI website: https://travis-ci.org
|
||||
|
||||
. Press the "Sign in with GitHub" button.
|
||||
(3) Press the "Sign in with GitHub" button.
|
||||
|
||||
. 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
|
||||
(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
|
||||
|
||||
. Open your Travis CI profile page: https://travis-ci.org/profile
|
||||
(5) Open your Travis CI profile page: https://travis-ci.org/profile
|
||||
|
||||
. Enable Travis CI builds for your Git fork.
|
||||
(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
|
||||
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
|
||||
@ -473,16 +430,17 @@ 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]]
|
||||
== MUA specific hints
|
||||
|
||||
------------------------------------------------
|
||||
MUA specific hints
|
||||
|
||||
Some of patches I receive or pick up from the list share common
|
||||
patterns of breakage. Please make sure your MUA is set up
|
||||
properly not to corrupt whitespaces.
|
||||
|
||||
See the DISCUSSION section of linkgit:git-format-patch[1] for hints on
|
||||
See the DISCUSSION section of git-format-patch(1) for hints on
|
||||
checking your patch by mailing it to yourself and applying with
|
||||
linkgit:git-am[1].
|
||||
git-am(1).
|
||||
|
||||
While you are at it, check the resulting commit log message from
|
||||
a trial run of applying the patch. If what is in the resulting
|
||||
@ -494,24 +452,23 @@ should come after the three-dash line that signals the end of the
|
||||
commit message.
|
||||
|
||||
|
||||
=== Pine
|
||||
Pine
|
||||
----
|
||||
|
||||
(Johannes Schindelin)
|
||||
|
||||
....
|
||||
I don't know how many people still use pine, but for those poor
|
||||
souls it may be good to mention that the quell-flowed-text is
|
||||
needed for recent versions.
|
||||
|
||||
... the "no-strip-whitespace-before-send" option, too. AFAIK it
|
||||
was introduced in 4.60.
|
||||
....
|
||||
|
||||
(Linus Torvalds)
|
||||
|
||||
....
|
||||
And 4.58 needs at least this.
|
||||
|
||||
---
|
||||
diff-tree 8326dd8350be64ac7fc805f6563a1d61ad10d32c (from e886a61f76edf5410573e92e38ce22974f9c40f1)
|
||||
Author: Linus Torvalds <torvalds@g5.osdl.org>
|
||||
Date: Mon Aug 15 17:23:51 2005 -0700
|
||||
@ -533,11 +490,10 @@ diff --git a/pico/pico.c b/pico/pico.c
|
||||
+#endif
|
||||
c |= COMP_EXIT;
|
||||
break;
|
||||
....
|
||||
|
||||
|
||||
(Daniel Barkalow)
|
||||
|
||||
....
|
||||
> A patch to SubmittingPatches, MUA specific help section for
|
||||
> users of Pine 4.63 would be very much appreciated.
|
||||
|
||||
@ -547,21 +503,23 @@ that or Gentoo did it.) So you need to set the
|
||||
"no-strip-whitespace-before-send" option, unless the option you have is
|
||||
"strip-whitespace-before-send", in which case you should avoid checking
|
||||
it.
|
||||
....
|
||||
|
||||
=== Thunderbird, KMail, GMail
|
||||
|
||||
See the MUA-SPECIFIC HINTS section of linkgit:git-format-patch[1].
|
||||
Thunderbird, KMail, GMail
|
||||
-------------------------
|
||||
|
||||
=== Gnus
|
||||
See the MUA-SPECIFIC HINTS section of git-format-patch(1).
|
||||
|
||||
"|" in the `*Summary*` buffer can be used to pipe the current
|
||||
Gnus
|
||||
----
|
||||
|
||||
'|' in the *Summary* buffer can be used to pipe the current
|
||||
message to an external program, and this is a handy way to drive
|
||||
`git am`. However, if the message is MIME encoded, what is
|
||||
"git am". However, if the message is MIME encoded, what is
|
||||
piped into the program is the representation you see in your
|
||||
`*Article*` buffer after unwrapping MIME. This is often not what
|
||||
*Article* buffer after unwrapping MIME. This is often not what
|
||||
you would want for two reasons. It tends to screw up non ASCII
|
||||
characters (most notably in people's names), and also
|
||||
whitespaces (fatal in patches). Running "C-u g" to display the
|
||||
message in raw form before using "|" to run the pipe can work
|
||||
whitespaces (fatal in patches). Running 'C-u g' to display the
|
||||
message in raw form before using '|' to run the pipe can work
|
||||
this problem around.
|
||||
|
@ -41,13 +41,11 @@ in the section header, like in the example below:
|
||||
--------
|
||||
|
||||
Subsection names are case sensitive and can contain any characters except
|
||||
newline and the null byte. Doublequote `"` and backslash can be included
|
||||
by escaping them as `\"` and `\\`, respectively. Backslashes preceding
|
||||
other characters are dropped when reading; for example, `\t` is read as
|
||||
`t` and `\0` is read as `0` Section headers cannot span multiple lines.
|
||||
Variables may belong directly to a section or to a given subsection. You
|
||||
can have `[section]` if you have `[section "subsection"]`, but you don't
|
||||
need to.
|
||||
newline (doublequote `"` and backslash can be included by escaping them
|
||||
as `\"` and `\\`, respectively). Section headers cannot span multiple
|
||||
lines. Variables may belong directly to a section or to a given subsection.
|
||||
You can have `[section]` if you have `[section "subsection"]`, but you
|
||||
don't need to.
|
||||
|
||||
There is also a deprecated `[section.subsection]` syntax. With this
|
||||
syntax, the subsection name is converted to lower-case and is also
|
||||
@ -353,12 +351,6 @@ advice.*::
|
||||
addEmbeddedRepo::
|
||||
Advice on what to do when you've accidentally added one
|
||||
git repo inside of another.
|
||||
ignoredHook::
|
||||
Advice shown if an hook is ignored because the hook is not
|
||||
set as executable.
|
||||
waitingForEditor::
|
||||
Print a message to the terminal whenever Git is waiting for
|
||||
editor input from the user.
|
||||
--
|
||||
|
||||
core.fileMode::
|
||||
@ -421,13 +413,6 @@ core.protectNTFS::
|
||||
8.3 "short" names.
|
||||
Defaults to `true` on Windows, and `false` elsewhere.
|
||||
|
||||
core.fsmonitor::
|
||||
If set, the value of this variable is used as a command which
|
||||
will identify all files that may have changed since the
|
||||
requested date/time. This information is used to speed up git by
|
||||
avoiding unnecessary processing of files that have not changed.
|
||||
See the "fsmonitor-watchman" section of linkgit:githooks[5].
|
||||
|
||||
core.trustctime::
|
||||
If false, the ctime differences between the index and the
|
||||
working tree are ignored; useful when the inode change time
|
||||
@ -530,12 +515,6 @@ core.autocrlf::
|
||||
This variable can be set to 'input',
|
||||
in which case no output conversion is performed.
|
||||
|
||||
core.checkRoundtripEncoding::
|
||||
A comma and/or whitespace separated list of encodings that Git
|
||||
performs UTF-8 round trip checks on if they are used in an
|
||||
`working-tree-encoding` attribute (see linkgit:gitattributes[5]).
|
||||
The default value is `SHIFT-JIS`.
|
||||
|
||||
core.symlinks::
|
||||
If false, symbolic links are checked out as small plain files that
|
||||
contain the link text. linkgit:git-update-index[1] and
|
||||
@ -797,12 +776,6 @@ core.commentChar::
|
||||
If set to "auto", `git-commit` would select a character that is not
|
||||
the beginning character of any line in existing commit messages.
|
||||
|
||||
core.filesRefLockTimeout::
|
||||
The length of time, in milliseconds, to retry when trying to
|
||||
lock an individual reference. Value 0 means not to retry at
|
||||
all; -1 means to try indefinitely. Default is 100 (i.e.,
|
||||
retry for 100ms).
|
||||
|
||||
core.packedRefsTimeout::
|
||||
The length of time, in milliseconds, to retry when trying to
|
||||
lock the `packed-refs` file. Value 0 means not to retry at
|
||||
@ -904,10 +877,6 @@ core.notesRef::
|
||||
This setting defaults to "refs/notes/commits", and it can be overridden by
|
||||
the `GIT_NOTES_REF` environment variable. See linkgit:git-notes[1].
|
||||
|
||||
core.commitGraph::
|
||||
Enable git commit graph feature. Allows reading from the
|
||||
commit-graph file.
|
||||
|
||||
core.sparseCheckout::
|
||||
Enable "sparse checkout" feature. See section "Sparse checkout" in
|
||||
linkgit:git-read-tree[1] for more information.
|
||||
@ -974,23 +943,6 @@ apply.whitespace::
|
||||
Tells 'git apply' how to handle whitespaces, in the same way
|
||||
as the `--whitespace` option. See linkgit:git-apply[1].
|
||||
|
||||
blame.showRoot::
|
||||
Do not treat root commits as boundaries in linkgit:git-blame[1].
|
||||
This option defaults to false.
|
||||
|
||||
blame.blankBoundary::
|
||||
Show blank commit object name for boundary commits in
|
||||
linkgit:git-blame[1]. This option defaults to false.
|
||||
|
||||
blame.showEmail::
|
||||
Show the author email instead of author name in linkgit:git-blame[1].
|
||||
This option defaults to false.
|
||||
|
||||
blame.date::
|
||||
Specifies the format used to output dates in linkgit:git-blame[1].
|
||||
If unset the iso format is used. For supported values,
|
||||
see the discussion of the `--date` option at linkgit:git-log[1].
|
||||
|
||||
branch.autoSetupMerge::
|
||||
Tells 'git branch' and 'git checkout' to set up new branches
|
||||
so that linkgit:git-pull[1] will appropriately merge from the
|
||||
@ -1068,10 +1020,6 @@ branch.<name>.rebase::
|
||||
"git pull" is run. See "pull.rebase" for doing this in a non
|
||||
branch-specific manner.
|
||||
+
|
||||
When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When preserve, also pass `--preserve-merges` along to 'git rebase'
|
||||
so that locally committed merge commits will not be flattened
|
||||
by running 'git pull'.
|
||||
@ -1102,16 +1050,6 @@ clean.requireForce::
|
||||
A boolean to make git-clean do nothing unless given -f,
|
||||
-i or -n. Defaults to true.
|
||||
|
||||
color.advice::
|
||||
A boolean to enable/disable color in hints (e.g. when a push
|
||||
failed, see `advice.*` for a list). May be set to `always`,
|
||||
`false` (or `never`) or `auto` (or `true`), in which case colors
|
||||
are used only when the error output goes to a terminal. If
|
||||
unset, then the value of `color.ui` is used (`auto` by default).
|
||||
|
||||
color.advice.hint::
|
||||
Use customized color for hints.
|
||||
|
||||
color.branch::
|
||||
A boolean to enable/disable color in the output of
|
||||
linkgit:git-branch[1]. May be set to `always`,
|
||||
@ -1139,25 +1077,14 @@ This does not affect linkgit:git-format-patch[1] or the
|
||||
'git-diff-{asterisk}' plumbing commands. Can be overridden on the
|
||||
command line with the `--color[=<when>]` option.
|
||||
|
||||
diff.colorMoved::
|
||||
If set to either a valid `<mode>` or a true value, moved lines
|
||||
in a diff are colored differently, for details of valid modes
|
||||
see '--color-moved' in linkgit:git-diff[1]. If simply set to
|
||||
true the default color mode will be used. When set to false,
|
||||
moved lines are not colored.
|
||||
|
||||
color.diff.<slot>::
|
||||
Use customized color for diff colorization. `<slot>` specifies
|
||||
which part of the patch to use the specified color, and is one
|
||||
of `context` (context text - `plain` is a historical synonym),
|
||||
`meta` (metainformation), `frag`
|
||||
(hunk header), 'func' (function in hunk header), `old` (removed lines),
|
||||
`new` (added lines), `commit` (commit headers), `whitespace`
|
||||
(highlighting whitespace errors), `oldMoved` (deleted lines),
|
||||
`newMoved` (added lines), `oldMovedDimmed`, `oldMovedAlternative`,
|
||||
`oldMovedAlternativeDimmed`, `newMovedDimmed`, `newMovedAlternative`
|
||||
and `newMovedAlternativeDimmed` (See the '<mode>'
|
||||
setting of '--color-moved' in linkgit:git-diff[1] for details).
|
||||
`new` (added lines), `commit` (commit headers), or `whitespace`
|
||||
(highlighting whitespace errors).
|
||||
|
||||
color.decorate.<slot>::
|
||||
Use customized color for 'git log --decorate' output. `<slot>` is one
|
||||
@ -1214,15 +1141,6 @@ color.pager::
|
||||
A boolean to enable/disable colored output when the pager is in
|
||||
use (default is true).
|
||||
|
||||
color.push::
|
||||
A boolean to enable/disable color in push errors. May be set to
|
||||
`always`, `false` (or `never`) or `auto` (or `true`), in which
|
||||
case colors are used only when the error output goes to a terminal.
|
||||
If unset, then the value of `color.ui` is used (`auto` by default).
|
||||
|
||||
color.push.error::
|
||||
Use customized color for push errors.
|
||||
|
||||
color.showBranch::
|
||||
A boolean to enable/disable color in the output of
|
||||
linkgit:git-show-branch[1]. May be set to `always`,
|
||||
@ -1251,42 +1169,6 @@ color.status.<slot>::
|
||||
status short-format), or
|
||||
`unmerged` (files which have unmerged changes).
|
||||
|
||||
color.blame.repeatedLines::
|
||||
Use the customized color for the part of git-blame output that
|
||||
is repeated meta information per line (such as commit id,
|
||||
author name, date and timezone). Defaults to cyan.
|
||||
|
||||
color.blame.highlightRecent::
|
||||
This can be used to color the metadata of a blame line depending
|
||||
on age of the line.
|
||||
+
|
||||
This setting should be set to a comma-separated list of color and date settings,
|
||||
starting and ending with a color, the dates should be set from oldest to newest.
|
||||
The metadata will be colored given the colors if the the line was introduced
|
||||
before the given timestamp, overwriting older timestamped colors.
|
||||
+
|
||||
Instead of an absolute timestamp relative timestamps work as well, e.g.
|
||||
2.weeks.ago is valid to address anything older than 2 weeks.
|
||||
+
|
||||
It defaults to 'blue,12 month ago,white,1 month ago,red', which colors
|
||||
everything older than one year blue, recent changes between one month and
|
||||
one year old are kept white, and lines introduced within the last month are
|
||||
colored red.
|
||||
|
||||
blame.coloring::
|
||||
This determines the coloring scheme to be applied to blame
|
||||
output. It can be 'repeatedLines', 'highlightRecent',
|
||||
or 'none' which is the default.
|
||||
|
||||
color.transport::
|
||||
A boolean to enable/disable color when pushes are rejected. May be
|
||||
set to `always`, `false` (or `never`) or `auto` (or `true`), in which
|
||||
case colors are used only when the error output goes to a terminal.
|
||||
If unset, then the value of `color.ui` is used (`auto` by default).
|
||||
|
||||
color.transport.rejected::
|
||||
Use customized color when a push was rejected.
|
||||
|
||||
color.ui::
|
||||
This variable determines the default value for variables such
|
||||
as `color.diff` and `color.grep` that control the use of color
|
||||
@ -1412,14 +1294,6 @@ credential.<url>.*::
|
||||
credentialCache.ignoreSIGHUP::
|
||||
Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting.
|
||||
|
||||
completion.commands::
|
||||
This is only used by git-completion.bash to add or remove
|
||||
commands from the list of completed commands. Normally only
|
||||
porcelain commands and a few select others are completed. You
|
||||
can add more commands, separated by space, in this
|
||||
variable. Prefixing the command with '-' will remove it from
|
||||
the existing list.
|
||||
|
||||
include::diff-config.txt[]
|
||||
|
||||
difftool.<tool>.path::
|
||||
@ -1475,16 +1349,7 @@ fetch.unpackLimit::
|
||||
|
||||
fetch.prune::
|
||||
If true, fetch will automatically behave as if the `--prune`
|
||||
option was given on the command line. See also `remote.<name>.prune`
|
||||
and the PRUNING section of linkgit:git-fetch[1].
|
||||
|
||||
fetch.pruneTags::
|
||||
If true, fetch will automatically behave as if the
|
||||
`refs/tags/*:refs/tags/*` refspec was provided when pruning,
|
||||
if not set already. This allows for setting both this option
|
||||
and `fetch.prune` to maintain a 1=1 mapping to upstream
|
||||
refs. See also `remote.<name>.pruneTags` and the PRUNING
|
||||
section of linkgit:git-fetch[1].
|
||||
option was given on the command line. See also `remote.<name>.prune`.
|
||||
|
||||
fetch.output::
|
||||
Control how ref update status is printed. Valid values are
|
||||
@ -1635,18 +1500,6 @@ gc.autoDetach::
|
||||
Make `git gc --auto` return immediately and run in background
|
||||
if the system supports it. Default is true.
|
||||
|
||||
gc.bigPackThreshold::
|
||||
If non-zero, all packs larger than this limit are kept when
|
||||
`git gc` is run. This is very similar to `--keep-base-pack`
|
||||
except that all packs that meet the threshold are kept, not
|
||||
just the base pack. Defaults to zero. Common unit suffixes of
|
||||
'k', 'm', or 'g' are supported.
|
||||
+
|
||||
Note that if the number of kept packs is more than gc.autoPackLimit,
|
||||
this configuration variable is ignored, all packs except the base pack
|
||||
will be repacked. After this the number of packs should go below
|
||||
gc.autoPackLimit and gc.bigPackThreshold should be respected again.
|
||||
|
||||
gc.logExpiry::
|
||||
If the file gc.log exists, then `git gc --auto` won't run
|
||||
unless that file is more than 'gc.logExpiry' old. Default is
|
||||
@ -1700,13 +1553,11 @@ gc.<pattern>.reflogExpireUnreachable::
|
||||
gc.rerereResolved::
|
||||
Records of conflicted merge you resolved earlier are
|
||||
kept for this many days when 'git rerere gc' is run.
|
||||
You can also use more human-readable "1.month.ago", etc.
|
||||
The default is 60 days. See linkgit:git-rerere[1].
|
||||
|
||||
gc.rerereUnresolved::
|
||||
Records of conflicted merge you have not resolved are
|
||||
kept for this many days when 'git rerere gc' is run.
|
||||
You can also use more human-readable "1.month.ago", etc.
|
||||
The default is 15 days. See linkgit:git-rerere[1].
|
||||
|
||||
gitcvs.commitMsgAnnotation::
|
||||
@ -2046,7 +1897,6 @@ http.sslVersion::
|
||||
- tlsv1.0
|
||||
- tlsv1.1
|
||||
- tlsv1.2
|
||||
- tlsv1.3
|
||||
|
||||
+
|
||||
Can be overridden by the `GIT_SSL_VERSION` environment variable.
|
||||
@ -2069,8 +1919,8 @@ empty string.
|
||||
|
||||
http.sslVerify::
|
||||
Whether to verify the SSL certificate when fetching or pushing
|
||||
over HTTPS. Defaults to true. Can be overridden by the
|
||||
`GIT_SSL_NO_VERIFY` environment variable.
|
||||
over HTTPS. Can be overridden by the `GIT_SSL_NO_VERIFY` environment
|
||||
variable.
|
||||
|
||||
http.sslCert::
|
||||
File containing the SSL certificate when fetching or pushing
|
||||
@ -2212,40 +2062,15 @@ matched against are those given directly to Git commands. This means any URLs
|
||||
visited as a result of a redirection do not participate in matching.
|
||||
|
||||
ssh.variant::
|
||||
By default, Git determines the command line arguments to use
|
||||
based on the basename of the configured SSH command (configured
|
||||
using the environment variable `GIT_SSH` or `GIT_SSH_COMMAND` or
|
||||
the config setting `core.sshCommand`). If the basename is
|
||||
unrecognized, Git will attempt to detect support of OpenSSH
|
||||
options by first invoking the configured SSH command with the
|
||||
`-G` (print configuration) option and will subsequently use
|
||||
OpenSSH options (if that is successful) or no options besides
|
||||
the host and remote command (if it fails).
|
||||
Depending on the value of the environment variables `GIT_SSH` or
|
||||
`GIT_SSH_COMMAND`, or the config setting `core.sshCommand`, Git
|
||||
auto-detects whether to adjust its command-line parameters for use
|
||||
with plink or tortoiseplink, as opposed to the default (OpenSSH).
|
||||
+
|
||||
The config variable `ssh.variant` can be set to override this detection.
|
||||
Valid values are `ssh` (to use OpenSSH options), `plink`, `putty`,
|
||||
`tortoiseplink`, `simple` (no options except the host and remote command).
|
||||
The default auto-detection can be explicitly requested using the value
|
||||
`auto`. Any other value is treated as `ssh`. This setting can also be
|
||||
overridden via the environment variable `GIT_SSH_VARIANT`.
|
||||
+
|
||||
The current command-line parameters used for each variant are as
|
||||
follows:
|
||||
+
|
||||
--
|
||||
|
||||
* `ssh` - [-p port] [-4] [-6] [-o option] [username@]host command
|
||||
|
||||
* `simple` - [username@]host command
|
||||
|
||||
* `plink` or `putty` - [-P port] [-4] [-6] [username@]host command
|
||||
|
||||
* `tortoiseplink` - [-P port] [-4] [-6] -batch [username@]host command
|
||||
|
||||
--
|
||||
+
|
||||
Except for the `simple` variant, command-line parameters are likely to
|
||||
change as git gains new features.
|
||||
The config variable `ssh.variant` can be set to override this auto-detection;
|
||||
valid values are `ssh`, `plink`, `putty` or `tortoiseplink`. Any other value
|
||||
will be treated as normal ssh. This setting can be overridden via the
|
||||
environment variable `GIT_SSH_VARIANT`.
|
||||
|
||||
i18n.commitEncoding::
|
||||
Character encoding the commit messages are stored in; Git itself
|
||||
@ -2511,7 +2336,6 @@ pack.window::
|
||||
pack.depth::
|
||||
The maximum delta depth used by linkgit:git-pack-objects[1] when no
|
||||
maximum depth is given on the command line. Defaults to 50.
|
||||
Maximum value is 4095.
|
||||
|
||||
pack.windowMemory::
|
||||
The maximum size of memory that is consumed by each thread
|
||||
@ -2548,8 +2372,7 @@ pack.deltaCacheLimit::
|
||||
The maximum size of a delta, that is cached in
|
||||
linkgit:git-pack-objects[1]. This cache is used to speed up the
|
||||
writing object phase by not having to recompute the final delta
|
||||
result once the best match for all objects is found.
|
||||
Defaults to 1000. Maximum value is 65535.
|
||||
result once the best match for all objects is found. Defaults to 1000.
|
||||
|
||||
pack.threads::
|
||||
Specifies the number of threads to spawn when searching for best
|
||||
@ -2675,23 +2498,6 @@ The protocol names currently used by git are:
|
||||
`hg` to allow the `git-remote-hg` helper)
|
||||
--
|
||||
|
||||
protocol.version::
|
||||
Experimental. If set, clients will attempt to communicate with a
|
||||
server using the specified protocol version. If unset, no
|
||||
attempt will be made by the client to communicate using a
|
||||
particular protocol version, this results in protocol version 0
|
||||
being used.
|
||||
Supported versions:
|
||||
+
|
||||
--
|
||||
|
||||
* `0` - the original wire protocol.
|
||||
|
||||
* `1` - the original wire protocol with the addition of a version string
|
||||
in the initial response from the server.
|
||||
|
||||
--
|
||||
|
||||
pull.ff::
|
||||
By default, Git does not create an extra merge commit when merging
|
||||
a commit that is a descendant of the current commit. Instead, the
|
||||
@ -2708,10 +2514,6 @@ pull.rebase::
|
||||
pull" is run. See "branch.<name>.rebase" for setting this on a
|
||||
per-branch basis.
|
||||
+
|
||||
When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When preserve, also pass `--preserve-merges` along to 'git rebase'
|
||||
so that locally committed merge commits will not be flattened
|
||||
by running 'git pull'.
|
||||
@ -2800,35 +2602,6 @@ push.gpgSign::
|
||||
override a value from a lower-priority config file. An explicit
|
||||
command-line flag always overrides this config option.
|
||||
|
||||
push.pushOption::
|
||||
When no `--push-option=<option>` argument is given from the
|
||||
command line, `git push` behaves as if each <value> of
|
||||
this variable is given as `--push-option=<value>`.
|
||||
+
|
||||
This is a multi-valued variable, and an empty value can be used in a
|
||||
higher priority configuration file (e.g. `.git/config` in a
|
||||
repository) to clear the values inherited from a lower priority
|
||||
configuration files (e.g. `$HOME/.gitconfig`).
|
||||
+
|
||||
--
|
||||
|
||||
Example:
|
||||
|
||||
/etc/gitconfig
|
||||
push.pushoption = a
|
||||
push.pushoption = b
|
||||
|
||||
~/.gitconfig
|
||||
push.pushoption = c
|
||||
|
||||
repo/.git/config
|
||||
push.pushoption =
|
||||
push.pushoption = b
|
||||
|
||||
This will result in only b (a and c are cleared).
|
||||
|
||||
--
|
||||
|
||||
push.recurseSubmodules::
|
||||
Make sure all submodule commits used by the revisions to be pushed
|
||||
are available on a remote-tracking branch. If the value is 'check'
|
||||
@ -2843,7 +2616,36 @@ push.recurseSubmodules::
|
||||
is retained. You may override this configuration at time of push by
|
||||
specifying '--recurse-submodules=check|on-demand|no'.
|
||||
|
||||
include::rebase-config.txt[]
|
||||
rebase.stat::
|
||||
Whether to show a diffstat of what changed upstream since the last
|
||||
rebase. False by default.
|
||||
|
||||
rebase.autoSquash::
|
||||
If set to true enable `--autosquash` option by default.
|
||||
|
||||
rebase.autoStash::
|
||||
When set to true, automatically create a temporary stash entry
|
||||
before the operation begins, and apply it after the operation
|
||||
ends. This means that you can run rebase on a dirty worktree.
|
||||
However, use with care: the final stash application after a
|
||||
successful rebase might result in non-trivial conflicts.
|
||||
Defaults to false.
|
||||
|
||||
rebase.missingCommitsCheck::
|
||||
If set to "warn", git rebase -i will print a warning if some
|
||||
commits are removed (e.g. a line was deleted), however the
|
||||
rebase will still proceed. If set to "error", it will print
|
||||
the previous warning and stop the rebase, 'git rebase
|
||||
--edit-todo' can then be used to correct the error. If set to
|
||||
"ignore", no checking is done.
|
||||
To drop a commit without warning or error, use the `drop`
|
||||
command in the todo-list.
|
||||
Defaults to "ignore".
|
||||
|
||||
rebase.instructionFormat::
|
||||
A format string, as specified in linkgit:git-log[1], to be used for
|
||||
the instruction list during an interactive rebase. The format will automatically
|
||||
have the long commit hash prepended to the format.
|
||||
|
||||
receive.advertiseAtomic::
|
||||
By default, git-receive-pack will advertise the atomic push
|
||||
@ -3050,15 +2852,6 @@ remote.<name>.prune::
|
||||
remote (as if the `--prune` option was given on the command line).
|
||||
Overrides `fetch.prune` settings, if any.
|
||||
|
||||
remote.<name>.pruneTags::
|
||||
When set to true, fetching from this remote by default will also
|
||||
remove any local tags that no longer exist on the remote if pruning
|
||||
is activated in general via `remote.<name>.prune`, `fetch.prune` or
|
||||
`--prune`. Overrides `fetch.pruneTags` settings, if any.
|
||||
+
|
||||
See also `remote.<name>.prune` and the PRUNING section of
|
||||
linkgit:git-fetch[1].
|
||||
|
||||
remotes.<group>::
|
||||
The list of remotes which are fetched by "git remote update
|
||||
<group>". See linkgit:git-remote[1].
|
||||
@ -3139,7 +2932,6 @@ sendemail.smtpPass::
|
||||
sendemail.suppresscc::
|
||||
sendemail.suppressFrom::
|
||||
sendemail.to::
|
||||
sendemail.tocmd::
|
||||
sendemail.smtpDomain::
|
||||
sendemail.smtpServer::
|
||||
sendemail.smtpServerPort::
|
||||
@ -3214,18 +3006,6 @@ status.displayCommentPrefix::
|
||||
behavior of linkgit:git-status[1] in Git 1.8.4 and previous.
|
||||
Defaults to false.
|
||||
|
||||
status.renameLimit::
|
||||
The number of files to consider when performing rename detection
|
||||
in linkgit:git-status[1] and linkgit:git-commit[1]. Defaults to
|
||||
the value of diff.renameLimit.
|
||||
|
||||
status.renames::
|
||||
Whether and how Git detects renames in linkgit:git-status[1] and
|
||||
linkgit:git-commit[1] . 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 the value of diff.renames.
|
||||
|
||||
status.showStash::
|
||||
If set to true, linkgit:git-status[1] will display the number of
|
||||
entries currently stashed away.
|
||||
@ -3286,14 +3066,10 @@ submodule.<name>.url::
|
||||
See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.
|
||||
|
||||
submodule.<name>.update::
|
||||
The method by which a submodule is updated by 'git submodule update',
|
||||
which is the only affected command, others such as
|
||||
'git checkout --recurse-submodules' are unaffected. It exists for
|
||||
historical reasons, when 'git submodule' was the only command to
|
||||
interact with submodules; settings like `submodule.active`
|
||||
and `pull.rebase` are more specific. It is populated by
|
||||
`git submodule init` from the linkgit:gitmodules[5] file.
|
||||
See description of 'update' command in linkgit:git-submodule[1].
|
||||
The default update procedure for a submodule. This variable
|
||||
is populated by `git submodule init` from the
|
||||
linkgit:gitmodules[5] file. See description of 'update'
|
||||
command in linkgit:git-submodule[1].
|
||||
|
||||
submodule.<name>.branch::
|
||||
The remote branch name for a submodule, used by `git submodule
|
||||
@ -3336,8 +3112,7 @@ submodule.active::
|
||||
|
||||
submodule.recurse::
|
||||
Specifies if commands recurse into submodules by default. This
|
||||
applies to all commands that have a `--recurse-submodules` option,
|
||||
except `clone`.
|
||||
applies to all commands that have a `--recurse-submodules` option.
|
||||
Defaults to false.
|
||||
|
||||
submodule.fetchJobs::
|
||||
@ -3470,10 +3245,6 @@ uploadpack.packObjectsHook::
|
||||
was run. I.e., `upload-pack` will feed input intended for
|
||||
`pack-objects` to the hook, and expects a completed packfile on
|
||||
stdout.
|
||||
|
||||
uploadpack.allowFilter::
|
||||
If this option is set, `upload-pack` will support partial
|
||||
clone and partial fetch object filtering.
|
||||
+
|
||||
Note that this configuration variable is ignored if it is seen in the
|
||||
repository-level config (this is a safety measure against fetching from
|
||||
@ -3575,13 +3346,3 @@ web.browser::
|
||||
Specify a web browser that may be used by some commands.
|
||||
Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]
|
||||
may use it.
|
||||
|
||||
worktree.guessRemote::
|
||||
With `add`, if no branch argument, and neither of `-b` nor
|
||||
`-B` nor `--detach` are given, the command defaults to
|
||||
creating a new branch from HEAD. If `worktree.guessRemote` is
|
||||
set to true, `worktree add` tries to find a remote-tracking
|
||||
branch whose name uniquely matches the new branch name. If
|
||||
such a branch exists, it is checked out and set as "upstream"
|
||||
for the new branch. If no such match can be found, it falls
|
||||
back to creating a new branch from the current HEAD.
|
||||
|
@ -112,8 +112,7 @@ diff.orderFile::
|
||||
|
||||
diff.renameLimit::
|
||||
The number of files to consider when performing the copy/rename
|
||||
detection; equivalent to the 'git diff' option `-l`. This setting
|
||||
has no effect if rename detection is turned off.
|
||||
detection; equivalent to the 'git diff' option `-l`.
|
||||
|
||||
diff.renames::
|
||||
Whether and how Git detects renames. If set to "false",
|
||||
|
5
Documentation/diff-heuristic-options.txt
Normal file
5
Documentation/diff-heuristic-options.txt
Normal file
@ -0,0 +1,5 @@
|
||||
--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.
|
@ -63,12 +63,7 @@ ifndef::git-format-patch[]
|
||||
Synonym for `-p --raw`.
|
||||
endif::git-format-patch[]
|
||||
|
||||
--indent-heuristic::
|
||||
Enable the heuristic that shifts diff hunk boundaries to make patches
|
||||
easier to read. This is the default.
|
||||
|
||||
--no-indent-heuristic::
|
||||
Disable the indent heuristic.
|
||||
include::diff-heuristic-options.txt[]
|
||||
|
||||
--minimal::
|
||||
Spend extra time to make sure the smallest possible
|
||||
@ -80,16 +75,6 @@ endif::git-format-patch[]
|
||||
--histogram::
|
||||
Generate a diff using the "histogram diff" algorithm.
|
||||
|
||||
--anchored=<text>::
|
||||
Generate a diff using the "anchored diff" algorithm.
|
||||
+
|
||||
This option may be specified more than once.
|
||||
+
|
||||
If a line exists in both the source and destination, exists only once,
|
||||
and starts with this text, this algorithm attempts to prevent it from
|
||||
appearing as a deletion or addition in the output. It uses the "patience
|
||||
diff" algorithm internally.
|
||||
|
||||
--diff-algorithm={patience|minimal|histogram|myers}::
|
||||
Choose a diff algorithm. The variants are as follows:
|
||||
+
|
||||
@ -106,7 +91,7 @@ diff" algorithm internally.
|
||||
low-occurrence common elements".
|
||||
--
|
||||
+
|
||||
For instance, if you configured the `diff.algorithm` variable to a
|
||||
For instance, if you configured diff.algorithm variable to a
|
||||
non-default value and want to use the default one, then you
|
||||
have to use `--diff-algorithm=default` option.
|
||||
|
||||
@ -128,14 +113,6 @@ have to use `--diff-algorithm=default` option.
|
||||
These parameters can also be set individually with `--stat-width=<width>`,
|
||||
`--stat-name-width=<name-width>` and `--stat-count=<count>`.
|
||||
|
||||
--compact-summary::
|
||||
Output a condensed summary of extended header information such
|
||||
as file creations or deletions ("new" or "gone", optionally "+l"
|
||||
if it's a symlink) and mode changes ("+x" or "-x" for adding
|
||||
or removing executable bit respectively) in diffstat. The
|
||||
information is put between the filename part and the graph
|
||||
part. Implies `--stat`.
|
||||
|
||||
--numstat::
|
||||
Similar to `--stat`, but shows number of added and
|
||||
deleted lines in decimal notation and pathname without
|
||||
@ -254,40 +231,6 @@ ifdef::git-diff[]
|
||||
endif::git-diff[]
|
||||
It is the same as `--color=never`.
|
||||
|
||||
--color-moved[=<mode>]::
|
||||
Moved lines of code are colored differently.
|
||||
ifdef::git-diff[]
|
||||
It can be changed by the `diff.colorMoved` configuration setting.
|
||||
endif::git-diff[]
|
||||
The <mode> defaults to 'no' if the option is not given
|
||||
and to 'zebra' if the option with no mode is given.
|
||||
The mode must be one of:
|
||||
+
|
||||
--
|
||||
no::
|
||||
Moved lines are not highlighted.
|
||||
default::
|
||||
Is a synonym for `zebra`. This may change to a more sensible mode
|
||||
in the future.
|
||||
plain::
|
||||
Any line that is added in one location and was removed
|
||||
in another location will be colored with 'color.diff.newMoved'.
|
||||
Similarly 'color.diff.oldMoved' will be used for removed lines
|
||||
that are added somewhere else in the diff. This mode picks up any
|
||||
moved line, but it is not very useful in a review to determine
|
||||
if a block of code was moved without permutation.
|
||||
zebra::
|
||||
Blocks of moved text of at least 20 alphanumeric characters
|
||||
are detected greedily. The detected blocks are
|
||||
painted using either the 'color.diff.{old,new}Moved' color or
|
||||
'color.diff.{old,new}MovedAlternative'. The change between
|
||||
the two colors indicates that a new block was detected.
|
||||
dimmed_zebra::
|
||||
Similar to 'zebra', but additional dimming of uninteresting parts
|
||||
of moved code is performed. The bordering lines of two adjacent
|
||||
blocks are considered interesting, the rest is uninteresting.
|
||||
--
|
||||
|
||||
--word-diff[=<mode>]::
|
||||
Show a word diff, using the <mode> to delimit changed words.
|
||||
By default, words are delimited by whitespace; see
|
||||
@ -350,7 +293,7 @@ ifndef::git-format-patch[]
|
||||
Warn if changes introduce conflict markers or whitespace errors.
|
||||
What are considered whitespace errors is controlled by `core.whitespace`
|
||||
configuration. By default, trailing whitespaces (including
|
||||
lines that consist solely of whitespaces) and a space character
|
||||
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
|
||||
@ -364,7 +307,7 @@ ifndef::git-format-patch[]
|
||||
this option is not given, and the configuration variable
|
||||
`diff.wsErrorHighlight` is not set, only whitespace errors in
|
||||
`new` lines are highlighted. The whitespace errors are colored
|
||||
with `color.diff.whitespace`.
|
||||
whith `color.diff.whitespace`.
|
||||
|
||||
endif::git-format-patch[]
|
||||
|
||||
@ -477,12 +420,6 @@ ifndef::git-format-patch[]
|
||||
+
|
||||
Also, these upper-case letters can be downcased to exclude. E.g.
|
||||
`--diff-filter=ad` excludes added and deleted paths.
|
||||
+
|
||||
Note that not all diffs can feature all types. For instance, diffs
|
||||
from the index to the working tree can never have Added entries
|
||||
(because the set of paths included in the diff is limited by what is in
|
||||
the index). Similarly, copied and renamed entries cannot appear if
|
||||
detection for those types is disabled.
|
||||
|
||||
-S<string>::
|
||||
Look for differences that change the number of occurrences of
|
||||
@ -516,15 +453,6 @@ occurrences of that string did not change).
|
||||
See the 'pickaxe' entry in linkgit:gitdiffcore[7] for more
|
||||
information.
|
||||
|
||||
--find-object=<object-id>::
|
||||
Look for differences that change the number of occurrences of
|
||||
the specified object. Similar to `-S`, just the argument is different
|
||||
in that it doesn't search for a specific string but for a specific
|
||||
object id.
|
||||
+
|
||||
The object can be a blob or a submodule commit. It implies the `-t` option in
|
||||
`git-log` to also find trees.
|
||||
|
||||
--pickaxe-all::
|
||||
When `-S` or `-G` finds a change, show all the changes in that
|
||||
changeset, not just the files that contain the change
|
||||
@ -533,7 +461,6 @@ The object can be a blob or a submodule commit. It implies the `-t` option in
|
||||
--pickaxe-regex::
|
||||
Treat the <string> given to `-S` as an extended POSIX regular
|
||||
expression to match.
|
||||
|
||||
endif::git-format-patch[]
|
||||
|
||||
-O<orderfile>::
|
||||
@ -568,7 +495,7 @@ the normal order.
|
||||
--
|
||||
+
|
||||
Patterns have the same syntax and semantics as patterns used for
|
||||
fnmatch(3) without the FNM_PATHNAME flag, except a pathname also
|
||||
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`".
|
||||
@ -591,9 +518,6 @@ endif::git-format-patch[]
|
||||
--text::
|
||||
Treat all files as text.
|
||||
|
||||
--ignore-cr-at-eol::
|
||||
Ignore carriage-return at the end of line when doing a comparison.
|
||||
|
||||
--ignore-space-at-eol::
|
||||
Ignore changes in whitespace at EOL.
|
||||
|
||||
|
@ -73,22 +73,7 @@ ifndef::git-pull[]
|
||||
are fetched due to an explicit refspec (either on the command
|
||||
line or in the remote configuration, for example if the remote
|
||||
was cloned with the --mirror option), then they are also
|
||||
subject to pruning. Supplying `--prune-tags` is a shorthand for
|
||||
providing the tag refspec.
|
||||
+
|
||||
See the PRUNING section below for more details.
|
||||
|
||||
-P::
|
||||
--prune-tags::
|
||||
Before fetching, remove any local tags that no longer exist on
|
||||
the remote if `--prune` is enabled. This option should be used
|
||||
more carefully, unlike `--prune` it will remove any local
|
||||
references (local tags) that have been created. This option is
|
||||
a shorthand for providing the explicit tag refspec along with
|
||||
`--prune`, see the discussion about that in its documentation.
|
||||
+
|
||||
See the PRUNING section below for more details.
|
||||
|
||||
subject to pruning.
|
||||
endif::git-pull[]
|
||||
|
||||
ifndef::git-pull[]
|
||||
@ -188,14 +173,6 @@ endif::git-pull[]
|
||||
is specified. This flag forces progress status even if the
|
||||
standard error stream is not directed to a terminal.
|
||||
|
||||
-o <option>::
|
||||
--server-option=<option>::
|
||||
Transmit the given string to the server when communicating using
|
||||
protocol version 2. The given string must not contain a NUL or LF
|
||||
character.
|
||||
When multiple `--server-option=<option>` are given, they are all
|
||||
sent to the other side in the order listed on the command line.
|
||||
|
||||
-4::
|
||||
--ipv4::
|
||||
Use IPv4 addresses only, ignoring IPv6 addresses.
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
[verse]
|
||||
'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] [--renormalize]
|
||||
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
|
||||
[--chmod=(+|-)x] [--] [<pathspec>...]
|
||||
|
||||
DESCRIPTION
|
||||
@ -175,13 +175,6 @@ for "git add --no-all <pathspec>...", i.e. ignored removed files.
|
||||
warning (e.g., if you are manually performing operations on
|
||||
submodules).
|
||||
|
||||
--renormalize::
|
||||
Apply the "clean" process freshly to all tracked files to
|
||||
forcibly add them again to the index. This is useful after
|
||||
changing `core.autocrlf` configuration or the `text` attribute
|
||||
in order to correct files added with wrong CRLF/LF line endings.
|
||||
This option implies `-u`.
|
||||
|
||||
--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
|
||||
@ -193,7 +186,7 @@ for "git add --no-all <pathspec>...", i.e. ignored removed files.
|
||||
for command-line options).
|
||||
|
||||
|
||||
CONFIGURATION
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
The optional configuration variable `core.excludesFile` indicates a path to a
|
||||
@ -226,7 +219,7 @@ Because this example lets the shell expand the asterisk (i.e. you are
|
||||
listing the files explicitly), it does not consider
|
||||
`subdir/git-foo.sh`.
|
||||
|
||||
INTERACTIVE MODE
|
||||
Interactive mode
|
||||
----------------
|
||||
When the command enters the interactive mode, it shows the
|
||||
output of the 'status' subcommand, and then goes into its
|
||||
|
@ -16,7 +16,7 @@ SYNOPSIS
|
||||
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
||||
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
|
||||
[(<mbox> | <Maildir>)...]
|
||||
'git am' (--continue | --skip | --abort | --quit | --show-current-patch)
|
||||
'git am' (--continue | --skip | --abort)
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -167,14 +167,6 @@ default. You can use `--no-utf8` to override this.
|
||||
--abort::
|
||||
Restore the original branch and abort the patching operation.
|
||||
|
||||
--quit::
|
||||
Abort the patching operation but keep HEAD and the index
|
||||
untouched.
|
||||
|
||||
--show-current-patch::
|
||||
Show the patch being applied when "git am" is stopped because
|
||||
of conflicts.
|
||||
|
||||
DISCUSSION
|
||||
----------
|
||||
|
||||
|
@ -8,7 +8,7 @@ git-annotate - Annotate file lines with commit information
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git annotate' [<options>] <file> [<revision>]
|
||||
'git annotate' [options] file [revision]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -23,6 +23,7 @@ familiar command name for people coming from other SCM systems.
|
||||
OPTIONS
|
||||
-------
|
||||
include::blame-options.txt[]
|
||||
include::diff-heuristic-options.txt[]
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
@ -66,7 +66,7 @@ OPTIONS
|
||||
disables it is in effect), make sure the patch is
|
||||
applicable to what the current index file records. If
|
||||
the file to be patched in the working tree is not
|
||||
up to date, it is flagged as an error. This flag also
|
||||
up-to-date, it is flagged as an error. This flag also
|
||||
causes the index file to be updated.
|
||||
|
||||
--cached::
|
||||
@ -113,10 +113,8 @@ explained for the configuration variable `core.quotePath` (see
|
||||
linkgit:git-config[1]).
|
||||
|
||||
-p<n>::
|
||||
Remove <n> leading path components (separated by slashes) from
|
||||
traditional diff paths. E.g., with `-p2`, a patch against
|
||||
`a/dir/file` will be applied directly to `file`. The default is
|
||||
1.
|
||||
Remove <n> leading slashes from traditional diff paths. The
|
||||
default is 1.
|
||||
|
||||
-C<n>::
|
||||
Ensure at least <n> lines of surrounding context match before
|
||||
@ -242,7 +240,7 @@ When `git apply` is used as a "better GNU patch", the user can pass
|
||||
the `--unsafe-paths` option to override this safety check. This option
|
||||
has no effect when `--index` or `--cached` is in use.
|
||||
|
||||
CONFIGURATION
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
apply.ignoreWhitespace::
|
||||
@ -253,7 +251,7 @@ apply.whitespace::
|
||||
When no `--whitespace` flag is given from the command
|
||||
line, this configuration item is used as the default.
|
||||
|
||||
SUBMODULES
|
||||
Submodules
|
||||
----------
|
||||
If the patch contains any changes to submodules then 'git apply'
|
||||
treats these changes as follows.
|
||||
@ -261,7 +259,7 @@ treats these changes as follows.
|
||||
If `--index` is specified (explicitly or implicitly), then the submodule
|
||||
commits must match the index exactly for the patch to apply. If any
|
||||
of the submodules are checked-out, then these check-outs are completely
|
||||
ignored, i.e., they are not required to be up to date or clean and they
|
||||
ignored, i.e., they are not required to be up-to-date or clean and they
|
||||
are not updated.
|
||||
|
||||
If `--index` is not specified, then the submodule commits in the patch
|
||||
|
@ -23,7 +23,7 @@ on the subcommand:
|
||||
git bisect terms [--term-good | --term-bad]
|
||||
git bisect skip [(<rev>|<range>)...]
|
||||
git bisect reset [<commit>]
|
||||
git bisect (visualize|view)
|
||||
git bisect visualize
|
||||
git bisect replay <logfile>
|
||||
git bisect log
|
||||
git bisect run <cmd>...
|
||||
@ -165,8 +165,8 @@ 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 terms
|
||||
--term-old` or `git bisect terms --term-good`.
|
||||
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
|
||||
@ -193,23 +193,24 @@ 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.
|
||||
|
||||
Bisect visualize/view
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
Bisect visualize
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
To see the currently remaining suspects in 'gitk', issue the following
|
||||
command during the bisection process (the subcommand `view` can be used
|
||||
as an alternative to `visualize`):
|
||||
command during the bisection process:
|
||||
|
||||
------------
|
||||
$ 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
|
||||
instead. You can also give command-line options such as `-p` and
|
||||
`--stat`.
|
||||
|
||||
------------
|
||||
$ git bisect visualize --stat
|
||||
$ git bisect view --stat
|
||||
------------
|
||||
|
||||
Bisect log and bisect replay
|
||||
|
@ -89,6 +89,8 @@ 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
|
||||
--------------------
|
||||
|
@ -14,11 +14,10 @@ SYNOPSIS
|
||||
[(--merged | --no-merged) [<commit>]]
|
||||
[--contains [<commit]] [--no-contains [<commit>]]
|
||||
[--points-at <object>] [--format=<format>] [<pattern>...]
|
||||
'git branch' [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
|
||||
'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>]
|
||||
'git branch' (-m | -M) [<oldbranch>] <newbranch>
|
||||
'git branch' (-c | -C) [<oldbranch>] <newbranch>
|
||||
'git branch' (-d | -D) [-r] <branchname>...
|
||||
'git branch' --edit-description [<branchname>]
|
||||
|
||||
@ -65,10 +64,6 @@ If <oldbranch> had a corresponding reflog, it is renamed to match
|
||||
renaming. If <newbranch> exists, -M must be used to force the rename
|
||||
to happen.
|
||||
|
||||
The `-c` and `-C` options have the exact same semantics as `-m` and
|
||||
`-M`, except instead of the branch being renamed it along with its
|
||||
config and reflog will be copied to a new name.
|
||||
|
||||
With a `-d` or `-D` option, `<branchname>` will be deleted. You may
|
||||
specify more than one branch for deletion. If the branch currently
|
||||
has a reflog then the reflog will also be deleted.
|
||||
@ -86,7 +81,7 @@ OPTIONS
|
||||
--delete::
|
||||
Delete a branch. The branch must be fully merged in its
|
||||
upstream branch, or in `HEAD` if no upstream was set with
|
||||
`--track` or `--set-upstream-to`.
|
||||
`--track` or `--set-upstream`.
|
||||
|
||||
-D::
|
||||
Shortcut for `--delete --force`.
|
||||
@ -104,12 +99,12 @@ OPTIONS
|
||||
|
||||
-f::
|
||||
--force::
|
||||
Reset <branchname> to <startpoint>, even if <branchname> exists
|
||||
already. Without `-f`, 'git branch' refuses to change an existing branch.
|
||||
Reset <branchname> to <startpoint> if <branchname> exists
|
||||
already. Without `-f` 'git branch' refuses to change an existing branch.
|
||||
In combination with `-d` (or `--delete`), allow deleting the
|
||||
branch irrespective of its merged status. In combination with
|
||||
`-m` (or `--move`), allow renaming the branch even if the new
|
||||
branch name already exists, the same applies for `-c` (or `--copy`).
|
||||
branch name already exists.
|
||||
|
||||
-m::
|
||||
--move::
|
||||
@ -118,13 +113,6 @@ OPTIONS
|
||||
-M::
|
||||
Shortcut for `--move --force`.
|
||||
|
||||
-c::
|
||||
--copy::
|
||||
Copy a branch and the corresponding reflog.
|
||||
|
||||
-C::
|
||||
Shortcut for `--copy --force`.
|
||||
|
||||
--color[=<when>]::
|
||||
Color branches to highlight current, local, and
|
||||
remote-tracking branches.
|
||||
@ -207,8 +195,10 @@ start-point is either a local or remote-tracking branch.
|
||||
branch.autoSetupMerge configuration variable is true.
|
||||
|
||||
--set-upstream::
|
||||
As this option had confusing syntax, it is no longer supported.
|
||||
Please use `--track` or `--set-upstream-to` instead.
|
||||
If specified branch does not exist yet or if `--force` has been
|
||||
given, acts exactly like `--track`. Otherwise sets up configuration
|
||||
like `--track` would when creating the branch, except that where
|
||||
branch points to is not changed.
|
||||
|
||||
-u <upstream>::
|
||||
--set-upstream-to=<upstream>::
|
||||
@ -281,13 +271,7 @@ start-point is either a local or remote-tracking branch.
|
||||
and the object it points at. The format is the same as
|
||||
that of linkgit:git-for-each-ref[1].
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
`pager.branch` is only respected when listing branches, i.e., when
|
||||
`--list` is used or implied. The default is to use a pager.
|
||||
See linkgit:git-config[1].
|
||||
|
||||
EXAMPLES
|
||||
Examples
|
||||
--------
|
||||
|
||||
Start development from a known tag::
|
||||
@ -318,7 +302,7 @@ See linkgit:git-fetch[1].
|
||||
is currently checked out) does not have all commits from the test branch.
|
||||
|
||||
|
||||
NOTES
|
||||
Notes
|
||||
-----
|
||||
|
||||
If you are creating a branch that you want to checkout immediately, it is
|
||||
|
@ -92,8 +92,8 @@ It is okay to err on the side of caution, causing the bundle file
|
||||
to contain objects already in the destination, as these are ignored
|
||||
when unpacking at the destination.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLE
|
||||
-------
|
||||
|
||||
Assume you want to transfer the history from a repository R1 on machine A
|
||||
to another repository R2 on machine B.
|
||||
|
@ -42,9 +42,8 @@ OPTIONS
|
||||
<object>.
|
||||
|
||||
-e::
|
||||
Exit with zero status if <object> exists and is a valid
|
||||
object. If <object> is of an invalid format exit with non-zero and
|
||||
emits an error on stderr.
|
||||
Suppress all output; instead exit with zero status if <object>
|
||||
exists and is a valid object.
|
||||
|
||||
-p::
|
||||
Pretty-print the contents of <object> based on its type.
|
||||
@ -169,7 +168,7 @@ If `-t` is specified, one of the <type>.
|
||||
|
||||
If `-s` is specified, the size of the <object> in bytes.
|
||||
|
||||
If `-e` is specified, no output, unless the <object> is malformed.
|
||||
If `-e` is specified, no output.
|
||||
|
||||
If `-p` is specified, the contents of <object> are pretty-printed.
|
||||
|
||||
|
@ -9,8 +9,8 @@ git-check-attr - Display gitattributes information
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git check-attr' [-a | --all | <attr>...] [--] <pathname>...
|
||||
'git check-attr' --stdin [-z] [-a | --all | <attr>...]
|
||||
'git check-attr' [-a | --all | attr...] [--] pathname...
|
||||
'git check-attr' --stdin [-z] [-a | --all | attr...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
@ -9,8 +9,8 @@ git-check-ignore - Debug gitignore / exclude files
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git check-ignore' [<options>] <pathname>...
|
||||
'git check-ignore' [<options>] --stdin
|
||||
'git check-ignore' [options] pathname...
|
||||
'git check-ignore' [options] --stdin
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
@ -9,7 +9,7 @@ git-check-mailmap - Show canonical names and email addresses of contacts
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git check-mailmap' [<options>] <contact>...
|
||||
'git check-mailmap' [options] <contact>...
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
|
@ -77,23 +77,11 @@ reference name expressions (see linkgit:gitrevisions[7]):
|
||||
|
||||
. at-open-brace `@{` is used as a notation to access a reflog entry.
|
||||
|
||||
With the `--branch` option, the command takes a name and checks if
|
||||
it can be used as a valid branch name (e.g. when creating a new
|
||||
branch). But be cautious when using the
|
||||
previous checkout syntax that may refer to a detached HEAD state.
|
||||
The rule `git check-ref-format --branch $name` implements
|
||||
may be stricter than what `git check-ref-format refs/heads/$name`
|
||||
says (e.g. a dash may appear at the beginning of a ref component,
|
||||
but it is explicitly forbidden at the beginning of a branch name).
|
||||
When run with `--branch` option in a repository, the input is first
|
||||
expanded for the ``previous checkout syntax''
|
||||
`@{-n}`. For example, `@{-1}` is a way to refer the last thing that
|
||||
was checked out using "git checkout" operation. This option should be
|
||||
used by porcelains to accept this syntax anywhere a branch name is
|
||||
expected, so they can act as if you typed the branch name. As an
|
||||
exception note that, the ``previous checkout operation'' might result
|
||||
in a commit object name when the N-th last thing checked out was not
|
||||
a branch.
|
||||
With the `--branch` option, it expands the ``previous branch syntax''
|
||||
`@{-n}`. For example, `@{-1}` is a way to refer the last branch you
|
||||
were on. This option should be used by porcelains to accept this
|
||||
syntax anywhere a branch name is expected, so they can act as if you
|
||||
typed the branch name.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -121,7 +109,7 @@ OPTIONS
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
* Print the name of the previous thing checked out:
|
||||
* Print the name of the previous branch:
|
||||
+
|
||||
------------
|
||||
$ git check-ref-format --branch @{-1}
|
||||
|
@ -264,8 +264,6 @@ section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
|
||||
local modifications in a submodule would be overwritten the checkout
|
||||
will fail unless `-f` is used. If nothing (or --no-recurse-submodules)
|
||||
is used, the work trees of submodules will not be updated.
|
||||
Just like linkgit:git-submodule[1], this will detach the
|
||||
submodules HEAD.
|
||||
|
||||
<branch>::
|
||||
Branch to checkout; if it refers to a branch (i.e., a name that,
|
||||
@ -274,11 +272,11 @@ section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
|
||||
commit, your HEAD becomes "detached" and you are no longer on
|
||||
any branch (see below for details).
|
||||
+
|
||||
You can use the `"@{-N}"` syntax to refer to the N-th last
|
||||
branch/commit checked out using "git checkout" operation. You may
|
||||
also specify `-` which is synonymous to `"@{-1}`.
|
||||
As a special case, the `"@{-N}"` syntax for the N-th last branch/commit
|
||||
checks out branches (instead of detaching). You may also specify
|
||||
`-` which is synonymous with `"@{-1}"`.
|
||||
+
|
||||
As a special case, you may use `"A...B"` as a shortcut for the
|
||||
As a further special case, you may use `"A...B"` as a shortcut for the
|
||||
merge base of `A` and `B` if there is exactly one merge base. You can
|
||||
leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
|
||||
|
@ -14,7 +14,7 @@ SYNOPSIS
|
||||
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
|
||||
[--dissociate] [--separate-git-dir <git dir>]
|
||||
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
||||
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
||||
[--recurse-submodules] [--[no-]shallow-submodules]
|
||||
[--jobs <n>] [--] <repository> [<directory>]
|
||||
|
||||
DESCRIPTION
|
||||
@ -231,17 +231,14 @@ branch of some repository for search indexing.
|
||||
After the clone is created, initialize and clone submodules
|
||||
within based on the provided pathspec. If no pathspec is
|
||||
provided, all submodules are initialized and cloned.
|
||||
This option can be given multiple times for pathspecs consisting
|
||||
of multiple entries. The resulting clone has `submodule.active` set to
|
||||
Submodules are initialized and cloned using their default
|
||||
settings. The resulting clone has `submodule.active` set to
|
||||
the provided pathspec, or "." (meaning all submodules) if no
|
||||
pathspec is provided.
|
||||
+
|
||||
Submodules are initialized and cloned using their default settings. This is
|
||||
equivalent to running
|
||||
`git submodule update --init --recursive <pathspec>` immediately after
|
||||
the clone is finished. This option is ignored if the cloned repository does
|
||||
not have a worktree/checkout (i.e. if any of `--no-checkout`/`-n`, `--bare`,
|
||||
or `--mirror` is given)
|
||||
pathspec is provided. This is equivalent to running
|
||||
`git submodule update --init --recursive` immediately after
|
||||
the clone is finished. This option is ignored if the cloned
|
||||
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.
|
||||
@ -260,7 +257,7 @@ or `--mirror` is given)
|
||||
|
||||
<repository>::
|
||||
The (possibly remote) repository to clone from. See the
|
||||
<<URLS,GIT URLS>> section below for more information on specifying
|
||||
<<URLS,URLS>> section below for more information on specifying
|
||||
repositories.
|
||||
|
||||
<directory>::
|
||||
@ -273,7 +270,7 @@ or `--mirror` is given)
|
||||
:git-clone: 1
|
||||
include::urls.txt[]
|
||||
|
||||
EXAMPLES
|
||||
Examples
|
||||
--------
|
||||
|
||||
* Clone from upstream:
|
||||
|
@ -1,94 +0,0 @@
|
||||
git-commit-graph(1)
|
||||
===================
|
||||
|
||||
NAME
|
||||
----
|
||||
git-commit-graph - Write and verify Git commit graph files
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git commit-graph read' [--object-dir <dir>]
|
||||
'git commit-graph write' <options> [--object-dir <dir>]
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
Manage the serialized commit graph file.
|
||||
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
--object-dir::
|
||||
Use given directory for the location of packfiles and commit graph
|
||||
file. This parameter exists to specify the location of an alternate
|
||||
that only has the objects directory, not a full .git directory. The
|
||||
commit graph file is expected to be at <dir>/info/commit-graph and
|
||||
the packfiles are expected to be in <dir>/pack.
|
||||
|
||||
|
||||
COMMANDS
|
||||
--------
|
||||
'write'::
|
||||
|
||||
Write a commit graph file based on the commits found in packfiles.
|
||||
+
|
||||
With the `--stdin-packs` option, generate the new commit graph by
|
||||
walking objects only in the specified pack-indexes. (Cannot be combined
|
||||
with --stdin-commits.)
|
||||
+
|
||||
With the `--stdin-commits` option, generate the new commit graph by
|
||||
walking commits starting at the commits specified in stdin as a list
|
||||
of OIDs in hex, one OID per line. (Cannot be combined with
|
||||
--stdin-packs.)
|
||||
+
|
||||
With the `--append` option, include all commits that are present in the
|
||||
existing commit-graph file.
|
||||
|
||||
'read'::
|
||||
|
||||
Read a graph file given by the commit-graph file and output basic
|
||||
details about the graph file. Used for debugging purposes.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
* Write a commit graph file for the packed commits in your local .git folder.
|
||||
+
|
||||
------------------------------------------------
|
||||
$ git commit-graph write
|
||||
------------------------------------------------
|
||||
|
||||
* Write a graph file, extending the current graph file using commits
|
||||
* in <pack-index>.
|
||||
+
|
||||
------------------------------------------------
|
||||
$ echo <pack-index> | git commit-graph write --stdin-packs
|
||||
------------------------------------------------
|
||||
|
||||
* Write a graph file containing all reachable commits.
|
||||
+
|
||||
------------------------------------------------
|
||||
$ git show-ref -s | git commit-graph write --stdin-commits
|
||||
------------------------------------------------
|
||||
|
||||
* Write a graph file containing all commits in the current
|
||||
* commit-graph file along with those reachable from HEAD.
|
||||
+
|
||||
------------------------------------------------
|
||||
$ git rev-parse HEAD | git commit-graph write --stdin-commits --append
|
||||
------------------------------------------------
|
||||
|
||||
* Read basic information from the commit-graph file.
|
||||
+
|
||||
------------------------------------------------
|
||||
$ git commit-graph read
|
||||
------------------------------------------------
|
||||
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
@ -144,8 +144,6 @@ OPTIONS
|
||||
Use the given <msg> as the commit message.
|
||||
If multiple `-m` options are given, their values are
|
||||
concatenated as separate paragraphs.
|
||||
+
|
||||
The `-m` option is mutually exclusive with `-c`, `-C`, and `-F`.
|
||||
|
||||
-t <file>::
|
||||
--template=<file>::
|
||||
|
@ -9,13 +9,13 @@ git-config - Get and set repository or global options
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] name [value [value_regex]]
|
||||
'git config' [<file-option>] [--type=<type>] --add name value
|
||||
'git config' [<file-option>] [--type=<type>] --replace-all name value [value_regex]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get name [value_regex]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get-all name [value_regex]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
|
||||
'git config' [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
|
||||
'git config' [<file-option>] [type] [--show-origin] [-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-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
|
||||
@ -38,10 +38,12 @@ 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=<type>` option instructs 'git config' to ensure that incoming and
|
||||
outgoing values are canonicalize-able under the given <type>. If no
|
||||
`--type=<type>` is given, no canonicalization will be performed. Callers may
|
||||
unset an existing `--type` specifier with `--no-type`.
|
||||
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
|
||||
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
|
||||
@ -158,43 +160,25 @@ See also <<FILES>>.
|
||||
--list::
|
||||
List all variables set in config file, along with their values.
|
||||
|
||||
--type <type>::
|
||||
'git config' will ensure that any input or output is valid under the given
|
||||
type constraint(s), and will canonicalize outgoing values in `<type>`'s
|
||||
canonical form.
|
||||
+
|
||||
Valid `<type>`'s include:
|
||||
+
|
||||
- 'bool': canonicalize values as either "true" or "false".
|
||||
- 'int': canonicalize values as simple decimal numbers. An optional suffix of
|
||||
'k', 'm', or 'g' will cause the value to be multiplied by 1024, 1048576, or
|
||||
1073741824 upon input.
|
||||
- 'bool-or-int': canonicalize according to either 'bool' or 'int', as described
|
||||
above.
|
||||
- 'path': canonicalize by adding a leading `~` to the value of `$HOME` and
|
||||
`~user` to the home directory for the specified user. This specifier has no
|
||||
effect when setting the value (but you can use `git config section.variable
|
||||
~/` from the command line to let your shell do the expansion.)
|
||||
- 'expiry-date': canonicalize by converting from a fixed or relative date-string
|
||||
to a timestamp. This specifier has no effect when setting the value.
|
||||
- 'color': When getting a value, canonicalize by converting to an ANSI color
|
||||
escape sequence. When setting a value, a sanity-check is performed to ensure
|
||||
that the given value is canonicalize-able as an ANSI color, but it is written
|
||||
as-is.
|
||||
+
|
||||
|
||||
--bool::
|
||||
--int::
|
||||
--bool-or-int::
|
||||
--path::
|
||||
--expiry-date::
|
||||
Historical options for selecting a type specifier. Prefer instead `--type`,
|
||||
(see: above).
|
||||
'git config' will ensure that the output is "true" or "false"
|
||||
|
||||
--no-type::
|
||||
Un-sets the previously set type specifier (if one was previously set). This
|
||||
option requests that 'git config' not canonicalize the retrieved variable.
|
||||
`--no-type` has no effect without `--type=<type>` or `--<type>`.
|
||||
--int::
|
||||
'git config' will ensure that the output is a simple
|
||||
decimal number. An optional value suffix of 'k', 'm', or 'g'
|
||||
in the config file will cause the value to be multiplied
|
||||
by 1024, 1048576, or 1073741824 prior to output.
|
||||
|
||||
--bool-or-int::
|
||||
'git config' will ensure that the output matches the format of
|
||||
either --bool or --int, as described above.
|
||||
|
||||
--path::
|
||||
'git-config' will expand leading '{tilde}' to the value of
|
||||
'$HOME', and '{tilde}user' to the home directory for the
|
||||
specified user. This option has no effect when setting the
|
||||
value (but you can use 'git config bla {tilde}/' from the
|
||||
command line to let your shell do the expansion).
|
||||
|
||||
-z::
|
||||
--null::
|
||||
@ -232,8 +216,6 @@ Valid `<type>`'s include:
|
||||
output it as the ANSI color escape sequence to the standard
|
||||
output. The optional `default` parameter is used instead, if
|
||||
there is no color configured for `name`.
|
||||
+
|
||||
`--type=color [--default=<default>]` is preferred over `--get-color`.
|
||||
|
||||
-e::
|
||||
--edit::
|
||||
@ -246,16 +228,6 @@ Valid `<type>`'s include:
|
||||
using `--file`, `--global`, etc) and `on` when searching all
|
||||
config files.
|
||||
|
||||
--default <value>::
|
||||
When using `--get`, and the requested variable is not found, behave as if
|
||||
<value> were the value assigned to the that variable.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
`pager.config` is only respected when listing configuration, i.e., when
|
||||
using `--list` or any of the `--get-*` which may return multiple results.
|
||||
The default is to use a pager.
|
||||
|
||||
[[FILES]]
|
||||
FILES
|
||||
-----
|
||||
|
@ -8,7 +8,7 @@ git-credential-cache - Helper to temporarily store passwords in memory
|
||||
SYNOPSIS
|
||||
--------
|
||||
-----------------------------
|
||||
git config credential.helper 'cache [<options>]'
|
||||
git config credential.helper 'cache [options]'
|
||||
-----------------------------
|
||||
|
||||
DESCRIPTION
|
||||
|
@ -8,7 +8,7 @@ git-credential-store - Helper to store credentials on disk
|
||||
SYNOPSIS
|
||||
--------
|
||||
-------------------
|
||||
git config credential.helper 'store [<options>]'
|
||||
git config credential.helper 'store [options]'
|
||||
-------------------
|
||||
|
||||
DESCRIPTION
|
||||
|
@ -22,7 +22,7 @@ cvspserver stream tcp nowait nobody /usr/bin/git-cvsserver git-cvsserver pserver
|
||||
Usage:
|
||||
|
||||
[verse]
|
||||
'git-cvsserver' [<options>] [pserver|server] [<directory> ...]
|
||||
'git-cvsserver' [options] [pserver|server] [<directory> ...]
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -207,7 +207,7 @@ allowing access over SSH.
|
||||
------
|
||||
|
||||
[[dbbackend]]
|
||||
DATABASE BACKEND
|
||||
Database Backend
|
||||
----------------
|
||||
|
||||
'git-cvsserver' uses one database per Git head (i.e. CVS module) to
|
||||
@ -223,7 +223,7 @@ access method and requested operation.
|
||||
That means that even if you offer only read access (e.g. by using
|
||||
the pserver method), 'git-cvsserver' should have write access to
|
||||
the database to work reliably (otherwise you need to make sure
|
||||
that the database is up to date any time 'git-cvsserver' is executed).
|
||||
that the database is up-to-date any time 'git-cvsserver' is executed).
|
||||
|
||||
By default it uses SQLite databases in the Git directory, named
|
||||
`gitcvs.<module_name>.sqlite`. Note that the SQLite backend creates
|
||||
@ -321,7 +321,7 @@ git-cvsserver, as described above.
|
||||
When these environment variables are set, the corresponding
|
||||
command-line arguments may not be used.
|
||||
|
||||
ECLIPSE CVS CLIENT NOTES
|
||||
Eclipse CVS Client Notes
|
||||
------------------------
|
||||
|
||||
To get a checkout with the Eclipse CVS client:
|
||||
@ -346,7 +346,7 @@ offer. In that case CVS_SERVER is ignored, and you will have to replace
|
||||
the cvs utility on the server with 'git-cvsserver' or manipulate your `.bashrc`
|
||||
so that calling 'cvs' effectively calls 'git-cvsserver'.
|
||||
|
||||
CLIENTS KNOWN TO WORK
|
||||
Clients known to work
|
||||
---------------------
|
||||
|
||||
- CVS 1.12.9 on Debian
|
||||
@ -354,7 +354,7 @@ CLIENTS KNOWN TO WORK
|
||||
- Eclipse 3.0, 3.1.2 on MacOSX (see Eclipse CVS Client Notes)
|
||||
- TortoiseCVS
|
||||
|
||||
OPERATIONS SUPPORTED
|
||||
Operations supported
|
||||
--------------------
|
||||
|
||||
All the operations required for normal use are supported, including
|
||||
@ -424,7 +424,7 @@ For best consistency with 'cvs', it is probably best to override the
|
||||
defaults by setting `gitcvs.usecrlfattr` to true,
|
||||
and `gitcvs.allBinary` to "guess".
|
||||
|
||||
DEPENDENCIES
|
||||
Dependencies
|
||||
------------
|
||||
'git-cvsserver' depends on DBD::SQLite.
|
||||
|
||||
|
@ -20,7 +20,6 @@ SYNOPSIS
|
||||
[--inetd |
|
||||
[--listen=<host_or_ipaddr>] [--port=<n>]
|
||||
[--user=<user> [--group=<group>]]]
|
||||
[--log-destination=(stderr|syslog|none)]
|
||||
[<directory>...]
|
||||
|
||||
DESCRIPTION
|
||||
@ -81,8 +80,7 @@ OPTIONS
|
||||
do not have the 'git-daemon-export-ok' file.
|
||||
|
||||
--inetd::
|
||||
Have the server run as an inetd service. Implies --syslog (may be
|
||||
overridden with `--log-destination=`).
|
||||
Have the server run as an inetd service. Implies --syslog.
|
||||
Incompatible with --detach, --port, --listen, --user and --group
|
||||
options.
|
||||
|
||||
@ -112,28 +110,8 @@ OPTIONS
|
||||
zero for no limit.
|
||||
|
||||
--syslog::
|
||||
Short for `--log-destination=syslog`.
|
||||
|
||||
--log-destination=<destination>::
|
||||
Send log messages to the specified destination.
|
||||
Note that this option does not imply --verbose,
|
||||
thus by default only error conditions will be logged.
|
||||
The <destination> must be one of:
|
||||
+
|
||||
--
|
||||
stderr::
|
||||
Write to standard error.
|
||||
Note that if `--detach` is specified,
|
||||
the process disconnects from the real standard error,
|
||||
making this destination effectively equivalent to `none`.
|
||||
syslog::
|
||||
Write to syslog, using the `git-daemon` identifier.
|
||||
none::
|
||||
Disable all logging.
|
||||
--
|
||||
+
|
||||
The default destination is `syslog` if `--inetd` or `--detach` is specified,
|
||||
otherwise `stderr`.
|
||||
Log to syslog instead of stderr. Note that this option does not imply
|
||||
--verbose, thus by default only error conditions will be logged.
|
||||
|
||||
--user-path::
|
||||
--user-path=<path>::
|
||||
|
@ -3,14 +3,14 @@ git-describe(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-describe - Give an object a human readable name based on an available ref
|
||||
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>] --dirty[=<mark>]
|
||||
'git describe' <blob>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -24,12 +24,6 @@ By default (without --all or --tags) `git describe` only shows
|
||||
annotated tags. For more information about creating annotated tags
|
||||
see the -a and -s options to linkgit:git-tag[1].
|
||||
|
||||
If the given object refers to a blob, it will be described
|
||||
as `<commit-ish>:<path>`, such that the blob can be found
|
||||
at `<path>` in the `<commit-ish>`, which itself describes the
|
||||
first commit in which this blob occurs in a reverse revision walk
|
||||
from HEAD.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
<commit-ish>...::
|
||||
@ -93,23 +87,19 @@ OPTIONS
|
||||
|
||||
--match <pattern>::
|
||||
Only consider tags matching the given `glob(7)` pattern,
|
||||
excluding the "refs/tags/" prefix. If used with `--all`, it also
|
||||
considers local branches and remote-tracking references matching the
|
||||
pattern, excluding respectively "refs/heads/" and "refs/remotes/"
|
||||
prefix; references of other types are never considered. If given
|
||||
multiple times, a list of patterns will be accumulated, and tags
|
||||
matching any of the patterns will be considered. Use `--no-match` to
|
||||
clear and reset the list of patterns.
|
||||
excluding the "refs/tags/" prefix. This can be used to avoid
|
||||
leaking private tags from the repository. If given multiple times, a
|
||||
list of patterns will be accumulated, and tags matching any of the
|
||||
patterns will be considered. Use `--no-match` to clear and reset the
|
||||
list of patterns.
|
||||
|
||||
--exclude <pattern>::
|
||||
Do not consider tags matching the given `glob(7)` pattern, excluding
|
||||
the "refs/tags/" prefix. If used with `--all`, it also does not consider
|
||||
local branches and remote-tracking references matching the pattern,
|
||||
excluding respectively "refs/heads/" and "refs/remotes/" prefix;
|
||||
references of other types are never considered. If given multiple times,
|
||||
a list of patterns will be accumulated and tags matching any of the
|
||||
patterns will be excluded. When combined with --match a tag will be
|
||||
considered when it matches at least one --match pattern and does not
|
||||
the "refs/tags/" prefix. This can be used to narrow the tag space and
|
||||
find only tags matching some meaningful criteria. If given multiple
|
||||
times, a list of patterns will be accumulated and tags matching any
|
||||
of the patterns will be excluded. When combined with --match a tag will
|
||||
be considered when it matches at least one --match pattern and does not
|
||||
match any of the --exclude patterns. Use `--no-exclude` to clear and
|
||||
reset the list of patterns.
|
||||
|
||||
@ -192,14 +182,6 @@ selected and output. Here fewest commits different is defined as
|
||||
the number of commits which would be shown by `git log tag..input`
|
||||
will be the smallest number of commits possible.
|
||||
|
||||
BUGS
|
||||
----
|
||||
|
||||
Tree objects as well as tag objects not pointing at commits, cannot be described.
|
||||
When describing blobs, the lightweight tags pointing at blobs are ignored,
|
||||
but the blob is still described as <committ-ish>:<path> despite the lightweight
|
||||
tag being favorable.
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -37,14 +37,14 @@ include::diff-options.txt[]
|
||||
|
||||
include::diff-format.txt[]
|
||||
|
||||
OPERATING MODES
|
||||
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
|
||||
that don't match the stat state as being "tentatively changed". Both
|
||||
of these operations are very useful indeed.
|
||||
|
||||
CACHED MODE
|
||||
Cached Mode
|
||||
-----------
|
||||
If `--cached` is specified, it allows you to ask:
|
||||
|
||||
@ -77,7 +77,7 @@ So doing a `git diff-index --cached` is basically very useful when you are
|
||||
asking yourself "what have I already marked for being committed, and
|
||||
what's the difference to a previous tree".
|
||||
|
||||
NON-CACHED MODE
|
||||
Non-cached Mode
|
||||
---------------
|
||||
The "non-cached" mode takes a different approach, and is potentially
|
||||
the more useful of the two in that what it does can't be emulated with
|
||||
@ -85,7 +85,7 @@ a 'git write-tree' + 'git diff-tree'. Thus that's the default mode.
|
||||
The non-cached version asks the question:
|
||||
|
||||
show me the differences between HEAD and the currently checked out
|
||||
tree - index contents _and_ files that aren't up to date
|
||||
tree - index contents _and_ files that aren't up-to-date
|
||||
|
||||
which is obviously a very useful question too, since that tells you what
|
||||
you *could* commit. Again, the output matches the 'git diff-tree -r'
|
||||
@ -100,8 +100,8 @@ have not actually done a 'git update-index' on it yet - there is no
|
||||
torvalds@ppc970:~/v2.6/linux> git diff-index --abbrev HEAD
|
||||
:100644 100664 7476bb... 000000... kernel/sched.c
|
||||
|
||||
i.e., it shows that the tree has changed, and that `kernel/sched.c` is
|
||||
not up to date and may contain new stuff. The all-zero sha1 means that to
|
||||
i.e., it shows that the tree has changed, and that `kernel/sched.c` has is
|
||||
not up-to-date and may contain new stuff. The all-zero sha1 means that to
|
||||
get the real diff, you need to look at the object in the working directory
|
||||
directly rather than do an object-to-object diff.
|
||||
|
||||
|
@ -116,7 +116,7 @@ include::pretty-options.txt[]
|
||||
include::pretty-formats.txt[]
|
||||
|
||||
|
||||
LIMITING OUTPUT
|
||||
Limiting Output
|
||||
---------------
|
||||
If you're only interested in differences in a subset of files, for
|
||||
example some architecture-specific files, you might do:
|
||||
|
@ -9,11 +9,11 @@ git-diff - Show changes between commits, commit and working tree, etc
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git diff' [<options>] [<commit>] [--] [<path>...]
|
||||
'git diff' [<options>] --cached [<commit>] [--] [<path>...]
|
||||
'git diff' [<options>] <commit> <commit> [--] [<path>...]
|
||||
'git diff' [<options>] <blob> <blob>
|
||||
'git diff' [<options>] --no-index [--] <path> <path>
|
||||
'git diff' [options] [<commit>] [--] [<path>...]
|
||||
'git diff' [options] --cached [<commit>] [--] [<path>...]
|
||||
'git diff' [options] <commit> <commit> [--] [<path>...]
|
||||
'git diff' [options] <blob> <blob>
|
||||
'git diff' [options] [--no-index] [--] <path> <path>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -21,7 +21,7 @@ Show changes between the working tree and the index or a tree, changes
|
||||
between the index and a tree, changes between two trees, changes between
|
||||
two blob objects, or changes between two files on disk.
|
||||
|
||||
'git diff' [<options>] [--] [<path>...]::
|
||||
'git diff' [--options] [--] [<path>...]::
|
||||
|
||||
This form is to view the changes you made relative to
|
||||
the index (staging area for the next commit). In other
|
||||
@ -29,7 +29,7 @@ two blob objects, or changes between two files on disk.
|
||||
further add to the index but you still haven't. You can
|
||||
stage these changes by using linkgit:git-add[1].
|
||||
|
||||
'git diff' [<options>] --no-index [--] <path> <path>::
|
||||
'git diff' --no-index [--options] [--] [<path>...]::
|
||||
|
||||
This form is to compare the given two paths on the
|
||||
filesystem. You can omit the `--no-index` option when
|
||||
@ -38,7 +38,7 @@ two blob objects, or changes between two files on disk.
|
||||
or when running the command outside a working tree
|
||||
controlled by Git.
|
||||
|
||||
'git diff' [<options>] --cached [<commit>] [--] [<path>...]::
|
||||
'git diff' [--options] --cached [<commit>] [--] [<path>...]::
|
||||
|
||||
This form is to view the changes you staged for the next
|
||||
commit relative to the named <commit>. Typically you
|
||||
@ -48,7 +48,7 @@ two blob objects, or changes between two files on disk.
|
||||
<commit> is not given, it shows all staged changes.
|
||||
--staged is a synonym of --cached.
|
||||
|
||||
'git diff' [<options>] <commit> [--] [<path>...]::
|
||||
'git diff' [--options] <commit> [--] [<path>...]::
|
||||
|
||||
This form is to view the changes you have in your
|
||||
working tree relative to the named <commit>. You can
|
||||
@ -56,18 +56,18 @@ two blob objects, or changes between two files on disk.
|
||||
branch name to compare with the tip of a different
|
||||
branch.
|
||||
|
||||
'git diff' [<options>] <commit> <commit> [--] [<path>...]::
|
||||
'git diff' [--options] <commit> <commit> [--] [<path>...]::
|
||||
|
||||
This is to view the changes between two arbitrary
|
||||
<commit>.
|
||||
|
||||
'git diff' [<options>] <commit>..<commit> [--] [<path>...]::
|
||||
'git diff' [--options] <commit>..<commit> [--] [<path>...]::
|
||||
|
||||
This is synonymous to the previous form. If <commit> on
|
||||
one side is omitted, it will have the same effect as
|
||||
using HEAD instead.
|
||||
|
||||
'git diff' [<options>] <commit>\...<commit> [--] [<path>...]::
|
||||
'git diff' [--options] <commit>\...<commit> [--] [<path>...]::
|
||||
|
||||
This form is to view the changes on the branch containing
|
||||
and up to the second <commit>, starting at a common ancestor
|
||||
@ -87,7 +87,7 @@ and the range notations ("<commit>..<commit>" and
|
||||
"<commit>\...<commit>") do not mean a range as defined in the
|
||||
"SPECIFYING RANGES" section in linkgit:gitrevisions[7].
|
||||
|
||||
'git diff' [<options>] <blob> <blob>::
|
||||
'git diff' [options] <blob> <blob>::
|
||||
|
||||
This form is to view the differences between the raw
|
||||
contents of two blob objects.
|
||||
|
@ -9,7 +9,7 @@ git-fast-export - Git data exporter
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git fast-export [<options>]' | 'git fast-import'
|
||||
'git fast-export [options]' | 'git fast-import'
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -202,7 +202,7 @@ smaller output, and it is usually easy to quickly confirm that there is
|
||||
no private data in the stream.
|
||||
|
||||
|
||||
LIMITATIONS
|
||||
Limitations
|
||||
-----------
|
||||
|
||||
Since 'git fast-import' cannot tag trees, you will not be
|
||||
|
@ -9,7 +9,7 @@ git-fast-import - Backend for fast Git data importers
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
frontend | 'git fast-import' [<options>]
|
||||
frontend | 'git fast-import' [options]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -50,6 +50,21 @@ OPTIONS
|
||||
memory used by fast-import during this run. Showing this output
|
||||
is currently the default, but can be disabled with --quiet.
|
||||
|
||||
--allow-unsafe-features::
|
||||
Many command-line options can be provided as part of the
|
||||
fast-import stream itself by using the `feature` or `option`
|
||||
commands. However, some of these options are unsafe (e.g.,
|
||||
allowing fast-import to access the filesystem outside of the
|
||||
repository). These options are disabled by default, but can be
|
||||
allowed by providing this option on the command line. This
|
||||
currently impacts only the `export-marks`, `import-marks`, and
|
||||
`import-marks-if-exists` feature commands.
|
||||
+
|
||||
Only enable this option if you trust the program generating the
|
||||
fast-import stream! This option is enabled automatically for
|
||||
remote-helpers that use the `import` capability, as they are
|
||||
already trusted to run their own code.
|
||||
|
||||
Options for Frontends
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -139,7 +154,7 @@ Performance and Compression Tuning
|
||||
fastimport.unpackLimit::
|
||||
See linkgit:git-config[1]
|
||||
|
||||
PERFORMANCE
|
||||
Performance
|
||||
-----------
|
||||
The design of fast-import allows it to import large projects in a minimum
|
||||
amount of memory usage and processing time. Assuming the frontend
|
||||
@ -155,7 +170,7 @@ faster if the source data is stored on a different drive than the
|
||||
destination Git repository (due to less IO contention).
|
||||
|
||||
|
||||
DEVELOPMENT COST
|
||||
Development Cost
|
||||
----------------
|
||||
A typical frontend for fast-import tends to weigh in at approximately 200
|
||||
lines of Perl/Python/Ruby code. Most developers have been able to
|
||||
@ -165,7 +180,7 @@ an ideal situation, given that most conversion tools are throw-away
|
||||
(use once, and never look back).
|
||||
|
||||
|
||||
PARALLEL OPERATION
|
||||
Parallel Operation
|
||||
------------------
|
||||
Like 'git push' or 'git fetch', imports handled by fast-import are safe to
|
||||
run alongside parallel `git repack -a -d` or `git gc` invocations,
|
||||
@ -186,7 +201,7 @@ this only be used on an otherwise quiet repository. Using --force
|
||||
is not necessary for an initial import into an empty repository.
|
||||
|
||||
|
||||
TECHNICAL DISCUSSION
|
||||
Technical Discussion
|
||||
--------------------
|
||||
fast-import tracks a set of branches in memory. Any branch can be created
|
||||
or modified at any point during the import process by sending a
|
||||
@ -204,7 +219,7 @@ directory also allows fast-import to run very quickly, as it does not
|
||||
need to perform any costly file update operations when switching
|
||||
between branches.
|
||||
|
||||
INPUT FORMAT
|
||||
Input Format
|
||||
------------
|
||||
With the exception of raw file data (which Git does not interpret)
|
||||
the fast-import input format is text (ASCII) based. This text based
|
||||
@ -1131,7 +1146,7 @@ If the `--done` command-line option or `feature done` command is
|
||||
in use, the `done` command is mandatory and marks the end of the
|
||||
stream.
|
||||
|
||||
RESPONSES TO COMMANDS
|
||||
Responses To Commands
|
||||
---------------------
|
||||
New objects written by fast-import are not available immediately.
|
||||
Most fast-import commands have no visible effect until the next
|
||||
@ -1160,7 +1175,7 @@ To avoid deadlock, such frontends must completely consume any
|
||||
pending output from `progress`, `ls`, `get-mark`, and `cat-blob` before
|
||||
performing writes to fast-import that might block.
|
||||
|
||||
CRASH REPORTS
|
||||
Crash Reports
|
||||
-------------
|
||||
If fast-import is supplied invalid input it will terminate with a
|
||||
non-zero exit status and create a crash report in the top level of
|
||||
@ -1247,7 +1262,7 @@ An example crash:
|
||||
END OF CRASH REPORT
|
||||
====
|
||||
|
||||
TIPS AND TRICKS
|
||||
Tips and Tricks
|
||||
---------------
|
||||
The following tips and tricks have been collected from various
|
||||
users of fast-import, and are offered here as suggestions.
|
||||
@ -1349,7 +1364,7 @@ Your users will feel better knowing how much of the data stream
|
||||
has been processed.
|
||||
|
||||
|
||||
PACKFILE OPTIMIZATION
|
||||
Packfile Optimization
|
||||
---------------------
|
||||
When packing a blob fast-import always attempts to deltify against the last
|
||||
blob written. Unless specifically arranged for by the frontend,
|
||||
@ -1380,7 +1395,7 @@ to force recomputation of all deltas can significantly reduce the
|
||||
final packfile size (30-50% smaller can be quite typical).
|
||||
|
||||
|
||||
MEMORY UTILIZATION
|
||||
Memory Utilization
|
||||
------------------
|
||||
There are a number of factors which affect how much memory fast-import
|
||||
requires to perform an import. Like critical sections of core
|
||||
@ -1458,7 +1473,7 @@ and lazy loading of subtrees, allows fast-import to efficiently import
|
||||
projects with 2,000+ branches and 45,114+ files in a very limited
|
||||
memory footprint (less than 2.7 MiB per active branch).
|
||||
|
||||
SIGNALS
|
||||
Signals
|
||||
-------
|
||||
Sending *SIGUSR1* to the 'git fast-import' process ends the current
|
||||
packfile early, simulating a `checkpoint` command. The impatient
|
||||
|
@ -88,7 +88,7 @@ be in a separate packet, and the list must end with a flush packet.
|
||||
infinite even if there is an ancestor-chain that long.
|
||||
|
||||
--shallow-since=<date>::
|
||||
Deepen or shorten the history of a shallow repository to
|
||||
Deepen or shorten the history of a shallow'repository to
|
||||
include all reachable commits after <date>.
|
||||
|
||||
--shallow-exclude=<revision>::
|
||||
|
@ -99,93 +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.
|
||||
|
||||
PRUNING
|
||||
-------
|
||||
|
||||
Git has a default disposition of keeping data unless it's explicitly
|
||||
thrown away; this extends to holding onto local references to branches
|
||||
on remotes that have themselves deleted those branches.
|
||||
|
||||
If left to accumulate, these stale references might make performance
|
||||
worse on big and busy repos that have a lot of branch churn, and
|
||||
e.g. make the output of commands like `git branch -a --contains
|
||||
<commit>` needlessly verbose, as well as impacting anything else
|
||||
that'll work with the complete set of known references.
|
||||
|
||||
These remote-tracking references can be deleted as a one-off with
|
||||
either of:
|
||||
|
||||
------------------------------------------------
|
||||
# While fetching
|
||||
$ git fetch --prune <name>
|
||||
|
||||
# Only prune, don't fetch
|
||||
$ git remote prune <name>
|
||||
------------------------------------------------
|
||||
|
||||
To prune references as part of your normal workflow without needing to
|
||||
remember to run that, set `fetch.prune` globally, or
|
||||
`remote.<name>.prune` per-remote in the config. See
|
||||
linkgit:git-config[1].
|
||||
|
||||
Here's where things get tricky and more specific. The pruning feature
|
||||
doesn't actually care about branches, instead it'll prune local <->
|
||||
remote-references as a function of the refspec of the remote (see
|
||||
`<refspec>` and <<CRTB,CONFIGURED REMOTE-TRACKING BRANCHES>> above).
|
||||
|
||||
Therefore if the refspec for the remote includes
|
||||
e.g. `refs/tags/*:refs/tags/*`, or you manually run e.g. `git fetch
|
||||
--prune <name> "refs/tags/*:refs/tags/*"` it won't be stale remote
|
||||
tracking branches that are deleted, but any local tag that doesn't
|
||||
exist on the remote.
|
||||
|
||||
This might not be what you expect, i.e. you want to prune remote
|
||||
`<name>`, but also explicitly fetch tags from it, so when you fetch
|
||||
from it you delete all your local tags, most of which may not have
|
||||
come from the `<name>` remote in the first place.
|
||||
|
||||
So be careful when using this with a refspec like
|
||||
`refs/tags/*:refs/tags/*`, or any other refspec which might map
|
||||
references from multiple remotes to the same local namespace.
|
||||
|
||||
Since keeping up-to-date with both branches and tags on the remote is
|
||||
a common use-case the `--prune-tags` option can be supplied along with
|
||||
`--prune` to prune local tags that don't exist on the remote, and
|
||||
force-update those tags that differ. Tag pruning can also be enabled
|
||||
with `fetch.pruneTags` or `remote.<name>.pruneTags` in the config. See
|
||||
linkgit:git-config[1].
|
||||
|
||||
The `--prune-tags` option is equivalent to having
|
||||
`refs/tags/*:refs/tags/*` declared in the refspecs of the remote. This
|
||||
can lead to some seemingly strange interactions:
|
||||
|
||||
------------------------------------------------
|
||||
# These both fetch tags
|
||||
$ git fetch --no-tags origin 'refs/tags/*:refs/tags/*'
|
||||
$ git fetch --no-tags --prune-tags origin
|
||||
------------------------------------------------
|
||||
|
||||
The reason it doesn't error out when provided without `--prune` or its
|
||||
config versions is for flexibility of the configured versions, and to
|
||||
maintain a 1=1 mapping between what the command line flags do, and
|
||||
what the configuration versions do.
|
||||
|
||||
It's reasonable to e.g. configure `fetch.pruneTags=true` in
|
||||
`~/.gitconfig` to have tags pruned whenever `git fetch --prune` is
|
||||
run, without making every invocation of `git fetch` without `--prune`
|
||||
an error.
|
||||
|
||||
Pruning tags with `--prune-tags` also works when fetching a URL
|
||||
instead of a named remote. These will all prune tags not found on
|
||||
origin:
|
||||
|
||||
------------------------------------------------
|
||||
$ git fetch origin --prune --prune-tags
|
||||
$ git fetch origin --prune 'refs/tags/*:refs/tags/*'
|
||||
$ git fetch <url of origin> --prune --prune-tags
|
||||
$ git fetch <url of origin> --prune 'refs/tags/*:refs/tags/*'
|
||||
------------------------------------------------
|
||||
|
||||
OUTPUT
|
||||
------
|
||||
|
||||
|
@ -8,13 +8,13 @@ git-filter-branch - Rewrite branches
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git filter-branch' [--setup <command>] [--subdirectory-filter <directory>]
|
||||
[--env-filter <command>] [--tree-filter <command>]
|
||||
[--index-filter <command>] [--parent-filter <command>]
|
||||
[--msg-filter <command>] [--commit-filter <command>]
|
||||
[--tag-name-filter <command>] [--prune-empty]
|
||||
'git filter-branch' [--setup <command>] [--env-filter <command>]
|
||||
[--tree-filter <command>] [--index-filter <command>]
|
||||
[--parent-filter <command>] [--msg-filter <command>]
|
||||
[--commit-filter <command>] [--tag-name-filter <command>]
|
||||
[--subdirectory-filter <directory>] [--prune-empty]
|
||||
[--original <namespace>] [-d <directory>] [-f | --force]
|
||||
[--state-branch <branch>] [--] [<rev-list options>...]
|
||||
[--] [<rev-list options>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -89,11 +89,6 @@ OPTIONS
|
||||
can be used or modified in the following filter steps except
|
||||
the commit filter, for technical reasons.
|
||||
|
||||
--subdirectory-filter <directory>::
|
||||
Only look at the history which touches the given subdirectory.
|
||||
The result will contain that directory (and only that) as its
|
||||
project root. Implies <<Remap_to_ancestor>>.
|
||||
|
||||
--env-filter <command>::
|
||||
This filter may be used if you only need to modify the environment
|
||||
in which the commit will be performed. Specifically, you might
|
||||
@ -172,6 +167,11 @@ be removed, buyer beware. There is also no support for changing the
|
||||
author or timestamp (or the tag message for that matter). Tags which point
|
||||
to other tags will be rewritten to point to the underlying commit.
|
||||
|
||||
--subdirectory-filter <directory>::
|
||||
Only look at the history which touches the given subdirectory.
|
||||
The result will contain that directory (and only that) as its
|
||||
project root. Implies <<Remap_to_ancestor>>.
|
||||
|
||||
--prune-empty::
|
||||
Some filters will generate empty commits that leave the tree untouched.
|
||||
This option instructs git-filter-branch to remove such commits if they
|
||||
@ -198,12 +198,6 @@ to other tags will be rewritten to point to the underlying commit.
|
||||
directory or when there are already refs starting with
|
||||
'refs/original/', unless forced.
|
||||
|
||||
--state-branch <branch>::
|
||||
This option will cause the mapping from old to new objects to
|
||||
be loaded from named branch upon startup and saved as a new
|
||||
commit to that branch upon exit, enabling incremental of large
|
||||
trees. If '<branch>' does not exist it will be created.
|
||||
|
||||
<rev-list options>...::
|
||||
Arguments for 'git rev-list'. All positive refs included by
|
||||
these options are rewritten. You may also specify options
|
||||
@ -222,15 +216,7 @@ this purpose, they are instead rewritten to point at the nearest ancestor that
|
||||
was not excluded.
|
||||
|
||||
|
||||
EXIT STATUS
|
||||
-----------
|
||||
|
||||
On success, the exit status is `0`. If the filter can't find any commits to
|
||||
rewrite, the exit status is `2`. On any other error, the exit status may be
|
||||
any other non-zero value.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
Examples
|
||||
--------
|
||||
|
||||
Suppose you want to remove a file (containing confidential information
|
||||
@ -288,7 +274,7 @@ git filter-branch --parent-filter \
|
||||
or even simpler:
|
||||
|
||||
-----------------------------------------------
|
||||
git replace --graft $commit-id $graft-id
|
||||
echo "$commit-id $graft-id" >> .git/info/grafts
|
||||
git filter-branch $graft-id..HEAD
|
||||
-----------------------------------------------
|
||||
|
||||
@ -406,7 +392,7 @@ git filter-branch --index-filter \
|
||||
|
||||
|
||||
|
||||
CHECKLIST FOR SHRINKING A REPOSITORY
|
||||
Checklist for Shrinking a Repository
|
||||
------------------------------------
|
||||
|
||||
git-filter-branch can be used to get rid of a subset of files,
|
||||
@ -445,7 +431,7 @@ warned.
|
||||
(or if your git-gc is not new enough to support arguments to
|
||||
`--prune`, use `git repack -ad; git prune` instead).
|
||||
|
||||
NOTES
|
||||
Notes
|
||||
-----
|
||||
|
||||
git-filter-branch allows you to make complex shell-scripted rewrites
|
||||
|
@ -57,8 +57,8 @@ merge.summary::
|
||||
Synonym to `merge.log`; this is deprecated and will be removed in
|
||||
the future.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLE
|
||||
-------
|
||||
|
||||
---------
|
||||
$ git fetch origin master
|
||||
|
@ -121,7 +121,7 @@ refname::
|
||||
stripping with positive <N>, or it becomes the full refname if
|
||||
stripping with negative <N>. Neither is an error.
|
||||
+
|
||||
`strip` can be used as a synonym to `lstrip`.
|
||||
`strip` can be used as a synomym to `lstrip`.
|
||||
|
||||
objecttype::
|
||||
The type of the object (`blob`, `tree`, `commit`, `tag`).
|
||||
@ -145,25 +145,18 @@ upstream::
|
||||
(behind), "<>" (ahead and behind), or "=" (in sync). `:track`
|
||||
also prints "[gone]" whenever unknown upstream ref is
|
||||
encountered. Append `:track,nobracket` to show tracking
|
||||
information without brackets (i.e "ahead N, behind M").
|
||||
+
|
||||
For any remote-tracking branch `%(upstream)`, `%(upstream:remotename)`
|
||||
and `%(upstream:remoteref)` refer to the name of the remote and the
|
||||
name of the tracked remote ref, respectively. In other words, the
|
||||
remote-tracking branch can be updated explicitly and individually by
|
||||
using the refspec `%(upstream:remoteref):%(upstream)` to fetch from
|
||||
`%(upstream:remotename)`.
|
||||
+
|
||||
Has no effect if the ref does not have tracking information associated
|
||||
with it. All the options apart from `nobracket` are mutually exclusive,
|
||||
but if used together the last option is selected.
|
||||
information without brackets (i.e "ahead N, behind M"). Has
|
||||
no effect if the ref does not have tracking information
|
||||
associated with it. All the options apart from `nobracket`
|
||||
are mutually exclusive, but if used together the last option
|
||||
is selected.
|
||||
|
||||
push::
|
||||
The name of a local ref which represents the `@{push}`
|
||||
location for the displayed ref. Respects `:short`, `:lstrip`,
|
||||
`:rstrip`, `:track`, `:trackshort`, `:remotename`, and `:remoteref`
|
||||
options as `upstream` does. Produces an empty string if no `@{push}`
|
||||
ref is configured.
|
||||
`:rstrip`, `:track`, and `:trackshort` options as `upstream`
|
||||
does. Produces an empty string if no `@{push}` ref is
|
||||
configured.
|
||||
|
||||
HEAD::
|
||||
'*' if HEAD matches current ref (the checked out branch), ' '
|
||||
@ -225,15 +218,11 @@ and `date` to extract the named component.
|
||||
The complete message in a commit and tag object is `contents`.
|
||||
Its first line is `contents:subject`, where subject is the concatenation
|
||||
of all lines of the commit message up to the first blank line. The next
|
||||
line is `contents:body`, where body is all of the lines after the first
|
||||
line is 'contents:body', where body is all of the lines after the first
|
||||
blank line. The optional GPG signature is `contents:signature`. The
|
||||
first `N` lines of the message is obtained using `contents:lines=N`.
|
||||
Additionally, the trailers as interpreted by linkgit:git-interpret-trailers[1]
|
||||
are obtained as `trailers` (or by using the historical alias
|
||||
`contents:trailers`). Non-trailer lines from the trailer block can be omitted
|
||||
with `trailers:only`. Whitespace-continuations can be removed from trailers so
|
||||
that each trailer appears on a line by itself with its full content with
|
||||
`trailers:unfold`. Both can be used together as `trailers:unfold,only`.
|
||||
are obtained as 'contents:trailers'.
|
||||
|
||||
For sorting purposes, fields with numeric values sort in numeric order
|
||||
(`objectsize`, `authordate`, `committerdate`, `creatordate`, `taggerdate`).
|
||||
|
@ -23,7 +23,6 @@ SYNOPSIS
|
||||
[(--reroll-count|-v) <n>]
|
||||
[--to=<email>] [--cc=<email>]
|
||||
[--[no-]cover-letter] [--quiet] [--notes[=<ref>]]
|
||||
[--progress]
|
||||
[<common diff options>]
|
||||
[ <since> | <revision range> ]
|
||||
|
||||
@ -47,7 +46,7 @@ There are two ways to specify which commits to operate on.
|
||||
|
||||
The first rule takes precedence in the case of a single <commit>. To
|
||||
apply the second rule, i.e., format everything since the beginning of
|
||||
history up until <commit>, use the `--root` option: `git format-patch
|
||||
history up until <commit>, use the '\--root' option: `git format-patch
|
||||
--root <commit>`. If you want to format only <commit> itself, you
|
||||
can do this with `git format-patch -1 <commit>`.
|
||||
|
||||
@ -284,9 +283,6 @@ you can use `--suffix=-patch` to get `0001-description-of-my-change-patch`.
|
||||
range are always formatted as creation patches, independently
|
||||
of this flag.
|
||||
|
||||
--progress::
|
||||
Show progress reports on stderr as patches are generated.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
You can specify extra mail header lines to be added to each message,
|
||||
|
@ -9,15 +9,14 @@ git-gc - Cleanup unnecessary files and optimize the local repository
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git gc' [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune] [--force] [--keep-largest-pack]
|
||||
'git gc' [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune] [--force]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Runs a number of housekeeping tasks within the current repository,
|
||||
such as compressing file revisions (to reduce disk space and increase
|
||||
performance), removing unreachable objects which may have been
|
||||
created from prior invocations of 'git add', packing refs, pruning
|
||||
reflog, rerere metadata or stale working trees.
|
||||
performance) and removing unreachable objects which may have been
|
||||
created from prior invocations of 'git add'.
|
||||
|
||||
Users are encouraged to run this task on a regular basis within
|
||||
each repository to maintain good disk space utilization and good
|
||||
@ -46,31 +45,20 @@ OPTIONS
|
||||
With this option, 'git gc' checks whether any housekeeping is
|
||||
required; if not, it exits without performing any work.
|
||||
Some git commands run `git gc --auto` after performing
|
||||
operations that could create many loose objects. Housekeeping
|
||||
is required if there are too many loose objects or too many
|
||||
packs in the repository.
|
||||
operations that could create many loose objects.
|
||||
+
|
||||
If the number of loose objects exceeds the value of the `gc.auto`
|
||||
configuration variable, then all loose objects are combined into a
|
||||
single pack using `git repack -d -l`. Setting the value of `gc.auto`
|
||||
to 0 disables automatic packing of loose objects.
|
||||
Housekeeping is required if there are too many loose objects or
|
||||
too many packs in the repository. If the number of loose objects
|
||||
exceeds the value of the `gc.auto` configuration variable, then
|
||||
all loose objects are combined into a single pack using
|
||||
`git repack -d -l`. Setting the value of `gc.auto` to 0
|
||||
disables automatic packing of loose objects.
|
||||
+
|
||||
If the number of packs exceeds the value of `gc.autoPackLimit`,
|
||||
then existing packs (except those marked with a `.keep` file
|
||||
or over `gc.bigPackThreshold` limit)
|
||||
then existing packs (except those marked with a `.keep` file)
|
||||
are consolidated into a single pack by using the `-A` option of
|
||||
'git repack'.
|
||||
If the amount of memory is estimated not enough for `git repack` to
|
||||
run smoothly and `gc.bigPackThreshold` is not set, the largest
|
||||
pack will also be excluded (this is the equivalent of running `git gc`
|
||||
with `--keep-base-pack`).
|
||||
Setting `gc.autoPackLimit` to 0 disables automatic consolidation of
|
||||
packs.
|
||||
+
|
||||
If houskeeping is required due to many loose objects or packs, all
|
||||
other housekeeping tasks (e.g. rerere, working trees, reflog...) will
|
||||
be performed as well.
|
||||
|
||||
'git repack'. Setting `gc.autoPackLimit` to 0 disables
|
||||
automatic consolidation of packs.
|
||||
|
||||
--prune=<date>::
|
||||
Prune loose objects older than date (default is 2 weeks ago,
|
||||
@ -90,12 +78,7 @@ be performed as well.
|
||||
Force `git gc` to run even if there may be another `git gc`
|
||||
instance running on this repository.
|
||||
|
||||
--keep-largest-pack::
|
||||
All packs except the largest pack and those marked with a
|
||||
`.keep` files are consolidated into a single pack. When this
|
||||
option is used, `gc.bigPackThreshold` is ignored.
|
||||
|
||||
CONFIGURATION
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
The optional configuration variable `gc.reflogExpire` can be
|
||||
@ -140,7 +123,7 @@ The optional configuration variable `gc.aggressiveWindow` controls how
|
||||
much time is spent optimizing the delta compression of the objects in
|
||||
the repository when the --aggressive option is specified. The larger
|
||||
the value, the more time is spent optimizing the delta compression. See
|
||||
the documentation for the --window option in linkgit:git-repack[1] for
|
||||
the documentation for the --window' option in linkgit:git-repack[1] for
|
||||
more details. This defaults to 250.
|
||||
|
||||
Similarly, the optional configuration variable `gc.aggressiveDepth`
|
||||
@ -150,12 +133,8 @@ The optional configuration variable `gc.pruneExpire` controls how old
|
||||
the unreferenced loose objects have to be before they are pruned. The
|
||||
default is "2 weeks ago".
|
||||
|
||||
Optional configuration variable `gc.worktreePruneExpire` controls how
|
||||
old a stale working tree should be before `git worktree prune` deletes
|
||||
it. Default is "3 months ago".
|
||||
|
||||
|
||||
NOTES
|
||||
Notes
|
||||
-----
|
||||
|
||||
'git gc' tries very hard not to delete objects that are referenced
|
||||
|
@ -95,6 +95,13 @@ OPTIONS
|
||||
<tree> option the prefix of all submodule output will be the name of
|
||||
the parent project's <tree> object.
|
||||
|
||||
--parent-basename <basename>::
|
||||
For internal use only. In order to produce uniform output with the
|
||||
--recurse-submodules option, this option can be used to provide the
|
||||
basename of a parent's <tree> object to a submodule so the submodule
|
||||
can prefix its output with the parent's name rather than the SHA1 of
|
||||
the submodule.
|
||||
|
||||
-a::
|
||||
--text::
|
||||
Process binary files as if they were text.
|
||||
@ -293,7 +300,7 @@ providing this option will cause it to die.
|
||||
For more details about the <pathspec> syntax, see the 'pathspec' entry
|
||||
in linkgit:gitglossary[7].
|
||||
|
||||
EXAMPLES
|
||||
Examples
|
||||
--------
|
||||
|
||||
`git grep 'time_t' -- '*.[ch]'`::
|
||||
|
@ -8,7 +8,7 @@ git-help - Display help information about Git
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git help' [-a|--all [--verbose]] [-g|--guide]
|
||||
'git help' [-a|--all] [-g|--guide]
|
||||
[-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE]
|
||||
|
||||
DESCRIPTION
|
||||
@ -42,8 +42,6 @@ OPTIONS
|
||||
--all::
|
||||
Prints all the available commands on the standard output. This
|
||||
option overrides any given command or guide name.
|
||||
When used with `--verbose` print description for all recognized
|
||||
commands.
|
||||
|
||||
-g::
|
||||
--guides::
|
||||
|
@ -15,9 +15,8 @@ DESCRIPTION
|
||||
-----------
|
||||
Downloads a remote Git repository via HTTP.
|
||||
|
||||
This command always gets all objects. Historically, there were three options
|
||||
`-a`, `-c` and `-t` for choosing which objects to download. They are now
|
||||
silently ignored.
|
||||
*NOTE*: use of this command without -a is deprecated. The -a
|
||||
behaviour will become the default in a future release.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -25,8 +24,12 @@ commit-id::
|
||||
Either the hash or the filename under [URL]/refs/ to
|
||||
pull.
|
||||
|
||||
-a, -c, -t::
|
||||
These options are ignored for historical reasons.
|
||||
-c::
|
||||
Get the commit objects.
|
||||
-t::
|
||||
Get trees associated with the commit objects.
|
||||
-a::
|
||||
Get all the objects.
|
||||
-v::
|
||||
Report what is downloaded.
|
||||
|
||||
|
@ -55,7 +55,7 @@ OPTIONS
|
||||
The remote refs to update.
|
||||
|
||||
|
||||
SPECIFYING THE REFS
|
||||
Specifying the Refs
|
||||
-------------------
|
||||
|
||||
A '<ref>' specification can be either a single pattern, or a pair
|
||||
|
@ -136,8 +136,8 @@ Using direct mode with SSL:
|
||||
.........................
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLE
|
||||
-------
|
||||
To submit patches using GMail's IMAP interface, first, edit your ~/.gitconfig
|
||||
to specify your account settings:
|
||||
|
||||
|
@ -77,9 +77,6 @@ OPTIONS
|
||||
--check-self-contained-and-connected::
|
||||
Die if the pack contains broken links. For internal use only.
|
||||
|
||||
--fsck-objects::
|
||||
Die if the pack contains broken objects. For internal use only.
|
||||
|
||||
--threads=<n>::
|
||||
Specifies the number of threads to spawn when resolving
|
||||
deltas. This requires that index-pack be compiled with
|
||||
@ -93,8 +90,8 @@ OPTIONS
|
||||
--max-input-size=<size>::
|
||||
Die, if the pack is larger than <size>.
|
||||
|
||||
NOTES
|
||||
-----
|
||||
Note
|
||||
----
|
||||
|
||||
Once the index has been created, the list of object names is sorted
|
||||
and the SHA-1 hash of that list is printed to stdout. If --stdin was
|
||||
|
@ -3,27 +3,24 @@ git-interpret-trailers(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-interpret-trailers - add or parse structured information in commit messages
|
||||
git-interpret-trailers - help add structured information into commit messages
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git interpret-trailers' [<options>] [(--trailer <token>[(=|:)<value>])...] [<file>...]
|
||||
'git interpret-trailers' [<options>] [--parse] [<file>...]
|
||||
'git interpret-trailers' [--in-place] [--trim-empty] [(--trailer <token>[(=|:)<value>])...] [<file>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Help parsing or adding 'trailers' lines, that look similar to RFC 822 e-mail
|
||||
Help adding 'trailers' lines, that look similar to RFC 822 e-mail
|
||||
headers, at the end of the otherwise free-form part of a commit
|
||||
message.
|
||||
|
||||
This command reads some patches or commit messages from either the
|
||||
<file> arguments or the standard input if no <file> is specified. If
|
||||
`--parse` is specified, the output consists of the parsed trailers.
|
||||
|
||||
Otherwise, this command applies the arguments passed using the
|
||||
`--trailer` option, if any, to the commit message part of each input
|
||||
file. The result is emitted on the standard output.
|
||||
<file> arguments or the standard input if no <file> is specified. Then
|
||||
this command applies the arguments passed using the `--trailer`
|
||||
option, if any, to the commit message part of each input file. The
|
||||
result is emitted on the standard output.
|
||||
|
||||
Some configuration variables control the way the `--trailer` arguments
|
||||
are applied to each commit message and the way any existing trailer in
|
||||
@ -51,7 +48,7 @@ with only spaces at the end of the commit message part, one blank line
|
||||
will be added before the new trailer.
|
||||
|
||||
Existing trailers are extracted from the input message by looking for
|
||||
a group of one or more lines that (i) is all trailers, or (ii) contains at
|
||||
a group of one or more lines that (i) are all trailers, or (ii) contains at
|
||||
least one Git-generated or user-configured trailer and consists of at
|
||||
least 25% trailers.
|
||||
The group must be preceded by one or more empty (or whitespace-only) lines.
|
||||
@ -83,45 +80,6 @@ OPTIONS
|
||||
trailer to the input messages. See the description of this
|
||||
command.
|
||||
|
||||
--where <placement>::
|
||||
--no-where::
|
||||
Specify where all new trailers will be added. A setting
|
||||
provided with '--where' overrides all configuration variables
|
||||
and applies to all '--trailer' options until the next occurrence of
|
||||
'--where' or '--no-where'.
|
||||
|
||||
--if-exists <action>::
|
||||
--no-if-exists::
|
||||
Specify what action will be performed when there is already at
|
||||
least one trailer with the same <token> in the message. A setting
|
||||
provided with '--if-exists' overrides all configuration variables
|
||||
and applies to all '--trailer' options until the next occurrence of
|
||||
'--if-exists' or '--no-if-exists'.
|
||||
|
||||
--if-missing <action>::
|
||||
--no-if-missing::
|
||||
Specify what action will be performed when there is no other
|
||||
trailer with the same <token> in the message. A setting
|
||||
provided with '--if-missing' overrides all configuration variables
|
||||
and applies to all '--trailer' options until the next occurrence of
|
||||
'--if-missing' or '--no-if-missing'.
|
||||
|
||||
--only-trailers::
|
||||
Output only the trailers, not any other parts of the input.
|
||||
|
||||
--only-input::
|
||||
Output only trailers that exist in the input; do not add any
|
||||
from the command-line or by following configured `trailer.*`
|
||||
rules.
|
||||
|
||||
--unfold::
|
||||
Remove any whitespace-continuation in trailers, so that each
|
||||
trailer appears on a line by itself with its full content.
|
||||
|
||||
--parse::
|
||||
A convenience alias for `--only-trailers --only-input
|
||||
--unfold`.
|
||||
|
||||
CONFIGURATION VARIABLES
|
||||
-----------------------
|
||||
|
||||
@ -212,8 +170,8 @@ trailer.<token>.where::
|
||||
configuration variable and it overrides what is specified by
|
||||
that option for trailers with the specified <token>.
|
||||
|
||||
trailer.<token>.ifexists::
|
||||
This option takes the same values as the 'trailer.ifexists'
|
||||
trailer.<token>.ifexist::
|
||||
This option takes the same values as the 'trailer.ifexist'
|
||||
configuration variable and it overrides what is specified by
|
||||
that option for trailers with the specified <token>.
|
||||
|
||||
|
@ -9,7 +9,7 @@ git-log - Show commit logs
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git log' [<options>] [<revision range>] [[--] <path>...]
|
||||
'git log' [<options>] [<revision range>] [[\--] <path>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -38,13 +38,6 @@ OPTIONS
|
||||
are shown as if 'short' were given, otherwise no ref names are
|
||||
shown. The default option is 'short'.
|
||||
|
||||
--decorate-refs=<pattern>::
|
||||
--decorate-refs-exclude=<pattern>::
|
||||
If no `--decorate-refs` is given, pretend as if all refs were
|
||||
included. For each candidate, do not use it for decoration if it
|
||||
matches any patterns given to `--decorate-refs-exclude` or if it
|
||||
doesn't match any of the patterns given to `--decorate-refs`.
|
||||
|
||||
--source::
|
||||
Print out the ref name given on the command line by which each
|
||||
commit was reached.
|
||||
@ -90,13 +83,13 @@ include::line-range-format.txt[]
|
||||
ways to spell <revision range>, see the 'Specifying Ranges'
|
||||
section of linkgit:gitrevisions[7].
|
||||
|
||||
[--] <path>...::
|
||||
[\--] <path>...::
|
||||
Show only commits that are enough to explain how the files
|
||||
that match the specified paths came to be. See 'History
|
||||
Simplification' below for details and other simplification
|
||||
modes.
|
||||
+
|
||||
Paths may need to be prefixed with `--` to separate them from
|
||||
Paths may need to be prefixed with ``\-- '' to separate them from
|
||||
options or the revision range, when confusion arises.
|
||||
|
||||
include::rev-list-options.txt[]
|
||||
@ -125,7 +118,7 @@ EXAMPLES
|
||||
`git log --since="2 weeks ago" -- gitk`::
|
||||
|
||||
Show the changes during the last two weeks to the file 'gitk'.
|
||||
The `--` is necessary to avoid confusion with the *branch* named
|
||||
The ``--'' is necessary to avoid confusion with the *branch* named
|
||||
'gitk'
|
||||
|
||||
`git log --name-status release..test`::
|
||||
|
@ -9,7 +9,7 @@ git-ls-files - Show information about files in the index and the working tree
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git ls-files' [-z] [-t] [-v] [-f]
|
||||
'git ls-files' [-z] [-t] [-v]
|
||||
(--[cached|deleted|others|ignored|stage|unmerged|killed|modified])*
|
||||
(-[c|d|o|i|s|u|k|m])*
|
||||
[--eol]
|
||||
@ -53,8 +53,7 @@ OPTIONS
|
||||
Show only ignored files in the output. When showing files in the
|
||||
index, print only those matched by an exclude pattern. When
|
||||
showing "other" files, show only those matched by an exclude
|
||||
pattern. Standard ignore rules are not automatically activated,
|
||||
therefore at least one of the `--exclude*` options is required.
|
||||
pattern.
|
||||
|
||||
-s::
|
||||
--stage::
|
||||
@ -134,11 +133,6 @@ a space) at the start of each line:
|
||||
that are marked as 'assume unchanged' (see
|
||||
linkgit:git-update-index[1]).
|
||||
|
||||
-f::
|
||||
Similar to `-t`, but use lowercase letters for files
|
||||
that are marked as 'fsmonitor valid' (see
|
||||
linkgit:git-update-index[1]).
|
||||
|
||||
--full-name::
|
||||
When run from a subdirectory, the command usually
|
||||
outputs paths relative to the current directory. This
|
||||
@ -184,7 +178,7 @@ followed by the ("attr/<eolattr>").
|
||||
Files to show. If no files are given all files which match the other
|
||||
specified criteria are shown.
|
||||
|
||||
OUTPUT
|
||||
Output
|
||||
------
|
||||
'git ls-files' just outputs the filenames unless `--stage` is specified in
|
||||
which case it outputs:
|
||||
@ -209,7 +203,7 @@ quoted as explained for the configuration variable `core.quotePath`
|
||||
verbatim and the line is terminated by a NUL byte.
|
||||
|
||||
|
||||
EXCLUDE PATTERNS
|
||||
Exclude Patterns
|
||||
----------------
|
||||
|
||||
'git ls-files' can use a list of "exclude patterns" when
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git ls-remote' [--heads] [--tags] [--refs] [--upload-pack=<exec>]
|
||||
[-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]
|
||||
[-q | --quiet] [--exit-code] [--get-url]
|
||||
[--symref] [<repository> [<refs>...]]
|
||||
|
||||
DESCRIPTION
|
||||
@ -60,24 +60,6 @@ OPTIONS
|
||||
upload-pack only shows the symref HEAD, so it will be the only
|
||||
one shown by ls-remote.
|
||||
|
||||
--sort=<key>::
|
||||
Sort based on the key given. Prefix `-` to sort in descending order
|
||||
of the value. Supports "version:refname" or "v:refname" (tag names
|
||||
are treated as versions). The "version:refname" sort order can also
|
||||
be affected by the "versionsort.suffix" configuration variable.
|
||||
See linkgit:git-for-each-ref[1] for more sort options, but be aware
|
||||
keys like `committerdate` that require access to the objects
|
||||
themselves will not work for refs whose objects have not yet been
|
||||
fetched from the remote, and will give a `missing object` error.
|
||||
|
||||
-o <option>::
|
||||
--server-option=<option>::
|
||||
Transmit the given string to the server when communicating using
|
||||
protocol version 2. The given string must not contain a NUL or LF
|
||||
character.
|
||||
When multiple `--server-option=<option>` are given, they are all
|
||||
sent to the other side in the order listed on the command line.
|
||||
|
||||
<repository>::
|
||||
The "remote" repository to query. This parameter can be
|
||||
either a URL or the name of a remote (see the GIT URLS and
|
||||
@ -108,10 +90,6 @@ EXAMPLES
|
||||
c5db5456ae3b0873fc659c19fafdde22313cc441 refs/tags/v0.99.2
|
||||
7ceca275d047c90c0c7d5afb13ab97efdf51bd6e refs/tags/v0.99.3
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-check-ref-format[1].
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -154,71 +154,23 @@ topic origin/master`, the history of remote-tracking branch
|
||||
`origin/master` may have been rewound and rebuilt, leading to a
|
||||
history of this shape:
|
||||
|
||||
o---B2
|
||||
o---B1
|
||||
/
|
||||
---o---o---B1--o---o---o---B (origin/master)
|
||||
---o---o---B2--o---o---o---B (origin/master)
|
||||
\
|
||||
B0
|
||||
B3
|
||||
\
|
||||
D0---D1---D (topic)
|
||||
Derived (topic)
|
||||
|
||||
where `origin/master` used to point at commits B0, B1, B2 and now it
|
||||
where `origin/master` used to point at commits B3, B2, B1 and now it
|
||||
points at B, and your `topic` branch was started on top of it back
|
||||
when `origin/master` was at B0, and you built three commits, D0, D1,
|
||||
and D, on top of it. Imagine that you now want to rebase the work
|
||||
you did on the topic on top of the updated origin/master.
|
||||
|
||||
In such a case, `git merge-base origin/master topic` would return the
|
||||
parent of B0 in the above picture, but B0^..D is *not* the range of
|
||||
commits you would want to replay on top of B (it includes B0, which
|
||||
is not what you wrote; it is a commit the other side discarded when
|
||||
it moved its tip from B0 to B1).
|
||||
|
||||
`git merge-base --fork-point origin/master topic` is designed to
|
||||
help in such a case. It takes not only B but also B0, B1, and B2
|
||||
(i.e. old tips of the remote-tracking branches your repository's
|
||||
reflog knows about) into account to see on which commit your topic
|
||||
branch was built and finds B0, allowing you to replay only the
|
||||
commits on your topic, excluding the commits the other side later
|
||||
discarded.
|
||||
|
||||
Hence
|
||||
when `origin/master` was at B3. This mode uses the reflog of
|
||||
`origin/master` to find B3 as the fork point, so that the `topic`
|
||||
can be rebased on top of the updated `origin/master` by:
|
||||
|
||||
$ fork_point=$(git merge-base --fork-point origin/master topic)
|
||||
|
||||
will find B0, and
|
||||
|
||||
$ git rebase --onto origin/master $fork_point topic
|
||||
|
||||
will replay D0, D1 and D on top of B to create a new history of this
|
||||
shape:
|
||||
|
||||
o---B2
|
||||
/
|
||||
---o---o---B1--o---o---o---B (origin/master)
|
||||
\ \
|
||||
B0 D0'--D1'--D' (topic - updated)
|
||||
\
|
||||
D0---D1---D (topic - old)
|
||||
|
||||
A caveat is that older reflog entries in your repository may be
|
||||
expired by `git gc`. If B0 no longer appears in the reflog of the
|
||||
remote-tracking branch `origin/master`, the `--fork-point` mode
|
||||
obviously cannot find it and fails, avoiding to give a random and
|
||||
useless result (such as the parent of B0, like the same command
|
||||
without the `--fork-point` option gives).
|
||||
|
||||
Also, the remote-tracking branch you use the `--fork-point` mode
|
||||
with must be the one your topic forked from its tip. If you forked
|
||||
from an older commit than the tip, this mode would not find the fork
|
||||
point (imagine in the above sample history B0 did not exist,
|
||||
origin/master started at B1, moved to B2 and then B, and you forked
|
||||
your topic at origin/master^ when origin/master was B1; the shape of
|
||||
the history would be the same as above, without B0, and the parent
|
||||
of B1 is what `git merge-base origin/master topic` correctly finds,
|
||||
but the `--fork-point` mode will not, because it is not one of the
|
||||
commits that used to be at the tip of origin/master).
|
||||
|
||||
|
||||
See also
|
||||
--------
|
||||
|
@ -57,13 +57,19 @@ reconstruct the original (pre-merge) changes. Therefore:
|
||||
discouraged: while possible, it may leave you in a state that is hard to
|
||||
back out of in the case of a conflict.
|
||||
|
||||
The third syntax ("`git merge --continue`") can only be run after the
|
||||
The fourth syntax ("`git merge --continue`") can only be run after the
|
||||
merge has resulted in conflicts.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
include::merge-options.txt[]
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
GPG-sign the resulting merge commit. The `keyid` argument is
|
||||
optional and defaults to the committer identity; if specified,
|
||||
it must be stuck to the option without a space.
|
||||
|
||||
-m <msg>::
|
||||
Set the commit message to be used for the merge commit (in
|
||||
case one is created).
|
||||
@ -127,7 +133,7 @@ exception is when the changed index entries are in the state that
|
||||
would result from the merge already.)
|
||||
|
||||
If all named commits are already ancestors of `HEAD`, 'git merge'
|
||||
will exit early with the message "Already up to date."
|
||||
will exit early with the message "Already up-to-date."
|
||||
|
||||
FAST-FORWARD MERGE
|
||||
------------------
|
||||
|
@ -14,7 +14,7 @@ SYNOPSIS
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Reads standard input in non-recursive `ls-tree` output format, and creates
|
||||
a tree object. The order of the tree entries is normalized by mktree so
|
||||
a tree object. The order of the tree entries is normalised by mktree so
|
||||
pre-sorting the input is not required. The object name of the tree object
|
||||
built is written to the standard output.
|
||||
|
||||
|
@ -61,8 +61,8 @@ OPTIONS
|
||||
--always::
|
||||
Show uniquely abbreviated commit object as fallback.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLE
|
||||
-------
|
||||
|
||||
Given a commit, find out where it is relative to the local refs. Say somebody
|
||||
wrote you about that fantastic commit 33db5f4d9027a10e477ccf054b2c1ab94f74c85a.
|
||||
|
@ -18,7 +18,7 @@ SYNOPSIS
|
||||
'git notes' merge --commit [-v | -q]
|
||||
'git notes' merge --abort [-v | -q]
|
||||
'git notes' remove [--ignore-missing] [--stdin] [<object>...]
|
||||
'git notes' prune [-n] [-v]
|
||||
'git notes' prune [-n | -v]
|
||||
'git notes' get-ref
|
||||
|
||||
|
||||
|
@ -29,8 +29,8 @@ Submit Git changes back to p4 using 'git p4 submit'. The command
|
||||
the updated p4 remote branch.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLE
|
||||
-------
|
||||
* Clone a repository:
|
||||
+
|
||||
------------
|
||||
@ -149,12 +149,6 @@ To specify a branch other than the current one, use:
|
||||
$ git p4 submit topicbranch
|
||||
------------
|
||||
|
||||
To specify a single commit or a range of commits, use:
|
||||
------------
|
||||
$ git p4 submit --commit <sha1>
|
||||
$ git p4 submit --commit <sha1..sha1>
|
||||
------------
|
||||
|
||||
The upstream reference is generally 'refs/remotes/p4/master', but can
|
||||
be overridden using the `--origin=` command-line option.
|
||||
|
||||
@ -163,37 +157,6 @@ The p4 changes will be created as the user invoking 'git p4 submit'. The
|
||||
according to the author of the Git commit. This option requires admin
|
||||
privileges in p4, which can be granted using 'p4 protect'.
|
||||
|
||||
To shelve changes instead of submitting, use `--shelve` and `--update-shelve`:
|
||||
|
||||
----
|
||||
$ git p4 submit --shelve
|
||||
$ git p4 submit --update-shelve 1234 --update-shelve 2345
|
||||
----
|
||||
|
||||
|
||||
Unshelve
|
||||
~~~~~~~~
|
||||
Unshelving will take a shelved P4 changelist, and produce the equivalent git commit
|
||||
in the branch refs/remotes/p4/unshelved/<changelist>.
|
||||
|
||||
The git commit is created relative to the current origin revision (HEAD by default).
|
||||
If the shelved changelist's parent revisions differ, git-p4 will refuse to unshelve;
|
||||
you need to be unshelving onto an equivalent tree.
|
||||
|
||||
The origin revision can be changed with the "--origin" option.
|
||||
|
||||
If the target branch in refs/remotes/p4/unshelved already exists, the old one will
|
||||
be renamed.
|
||||
|
||||
----
|
||||
$ git p4 sync
|
||||
$ git p4 unshelve 12345
|
||||
$ git show refs/remotes/p4/unshelved/12345
|
||||
<submit more changes via p4 to the same files>
|
||||
$ git p4 unshelve 12345
|
||||
<refuses to unshelve until git is in sync with p4 again>
|
||||
|
||||
----
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -347,7 +310,7 @@ These options can be used to modify 'git p4 submit' behavior.
|
||||
|
||||
--update-shelve CHANGELIST::
|
||||
Update an existing shelved changelist with this commit. Implies
|
||||
--shelve. Repeat for multiple shelved changelists.
|
||||
--shelve.
|
||||
|
||||
--conflict=(ask|skip|quit)::
|
||||
Conflicts can occur when applying a commit to p4. When this
|
||||
@ -361,19 +324,6 @@ These options can be used to modify 'git p4 submit' behavior.
|
||||
p4/master. See the "Sync options" section above for more
|
||||
information.
|
||||
|
||||
--commit <sha1>|<sha1..sha1>::
|
||||
Submit only the specified commit or range of commits, instead of the full
|
||||
list of changes that are in the current Git branch.
|
||||
|
||||
--disable-rebase::
|
||||
Disable the automatic rebase after all commits have been successfully
|
||||
submitted. Can also be set with git-p4.disableRebase.
|
||||
|
||||
--disable-p4sync::
|
||||
Disable the automatic sync of p4/master from Perforce after commits have
|
||||
been submitted. Implies --disable-rebase. Can also be set with
|
||||
git-p4.disableP4Sync. Sync with origin/master still goes ahead if possible.
|
||||
|
||||
Rebase options
|
||||
~~~~~~~~~~~~~~
|
||||
These options can be used to modify 'git p4 rebase' behavior.
|
||||
@ -381,13 +331,6 @@ These options can be used to modify 'git p4 rebase' behavior.
|
||||
--import-labels::
|
||||
Import p4 labels.
|
||||
|
||||
Unshelve options
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
--origin::
|
||||
Sets the git refspec against which the shelved P4 changelist is compared.
|
||||
Defaults to p4/master.
|
||||
|
||||
DEPOT PATH SYNTAX
|
||||
-----------------
|
||||
The p4 depot path argument to 'git p4 sync' and 'git p4 clone' can
|
||||
@ -443,7 +386,7 @@ dedicating a client spec just for 'git p4'.
|
||||
The name of the client can be given to 'git p4' in multiple ways. The
|
||||
variable 'git-p4.client' takes precedence if it exists. Otherwise,
|
||||
normal p4 mechanisms of determining the client are used: environment
|
||||
variable `P4CLIENT`, a file referenced by `P4CONFIG`, or the local host name.
|
||||
variable P4CLIENT, a file referenced by P4CONFIG, or the local host name.
|
||||
|
||||
|
||||
BRANCH DETECTION
|
||||
@ -512,22 +455,22 @@ General variables
|
||||
~~~~~~~~~~~~~~~~~
|
||||
git-p4.user::
|
||||
User specified as an option to all p4 commands, with '-u <user>'.
|
||||
The environment variable `P4USER` can be used instead.
|
||||
The environment variable 'P4USER' can be used instead.
|
||||
|
||||
git-p4.password::
|
||||
Password specified as an option to all p4 commands, with
|
||||
'-P <password>'.
|
||||
The environment variable `P4PASS` can be used instead.
|
||||
The environment variable 'P4PASS' can be used instead.
|
||||
|
||||
git-p4.port::
|
||||
Port specified as an option to all p4 commands, with
|
||||
'-p <port>'.
|
||||
The environment variable `P4PORT` can be used instead.
|
||||
The environment variable 'P4PORT' can be used instead.
|
||||
|
||||
git-p4.host::
|
||||
Host specified as an option to all p4 commands, with
|
||||
'-h <host>'.
|
||||
The environment variable `P4HOST` can be used instead.
|
||||
The environment variable 'P4HOST' can be used instead.
|
||||
|
||||
git-p4.client::
|
||||
Client specified as an option to all p4 commands, with
|
||||
@ -695,12 +638,6 @@ git-p4.conflict::
|
||||
Specify submit behavior when a conflict with p4 is found, as per
|
||||
--conflict. The default behavior is 'ask'.
|
||||
|
||||
git-p4.disableRebase::
|
||||
Do not rebase the tree against p4/master following a submit.
|
||||
|
||||
git-p4.disableP4Sync::
|
||||
Do not sync p4/master with Perforce following a submit. Implies git-p4.disableRebase.
|
||||
|
||||
IMPLEMENTATION DETAILS
|
||||
----------------------
|
||||
* Changesets from p4 are imported using Git fast-import.
|
||||
|
@ -12,8 +12,7 @@ SYNOPSIS
|
||||
'git pack-objects' [-q | --progress | --all-progress] [--all-progress-implied]
|
||||
[--no-reuse-delta] [--delta-base-offset] [--non-empty]
|
||||
[--local] [--incremental] [--window=<n>] [--depth=<n>]
|
||||
[--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
|
||||
[--stdout [--filter=<filter-spec>] | base-name]
|
||||
[--revs [--unpacked | --all]] [--stdout | base-name]
|
||||
[--shallow] [--keep-true-parents] < object-list
|
||||
|
||||
|
||||
@ -96,9 +95,7 @@ base-name::
|
||||
it too deep affects the performance on the unpacker
|
||||
side, because delta data needs to be applied that many
|
||||
times to get to the necessary object.
|
||||
+
|
||||
The default value for --window is 10 and --depth is 50. The maximum
|
||||
depth is 4095.
|
||||
The default value for --window is 10 and --depth is 50.
|
||||
|
||||
--window-memory=<n>::
|
||||
This option provides an additional limit on top of `--window`;
|
||||
@ -128,13 +125,6 @@ depth is 4095.
|
||||
has a .keep file to be ignored, even if it would have
|
||||
otherwise been packed.
|
||||
|
||||
--keep-pack=<pack-name>::
|
||||
This flag causes an object already in the given pack to be
|
||||
ignored, even if it would have otherwise been
|
||||
packed. `<pack-name>` is the the pack file name without
|
||||
leading directory (e.g. `pack-123.pack`). The option could be
|
||||
specified multiple times to keep multiple packs.
|
||||
|
||||
--incremental::
|
||||
This flag causes an object already in a pack to be ignored
|
||||
even if it would have otherwise been packed.
|
||||
@ -246,49 +236,6 @@ So does `git bundle` (see linkgit:git-bundle[1]) when it creates a bundle.
|
||||
With this option, parents that are hidden by grafts are packed
|
||||
nevertheless.
|
||||
|
||||
--filter=<filter-spec>::
|
||||
Requires `--stdout`. Omits certain objects (usually blobs) from
|
||||
the resulting packfile. See linkgit:git-rev-list[1] for valid
|
||||
`<filter-spec>` forms.
|
||||
|
||||
--no-filter::
|
||||
Turns off any previous `--filter=` argument.
|
||||
|
||||
--missing=<missing-action>::
|
||||
A debug option to help with future "partial clone" development.
|
||||
This option specifies how missing objects are handled.
|
||||
+
|
||||
The form '--missing=error' requests that pack-objects stop with an error if
|
||||
a missing object is encountered. This is the default action.
|
||||
+
|
||||
The form '--missing=allow-any' will allow object traversal to continue
|
||||
if a missing object is encountered. Missing objects will silently be
|
||||
omitted from the results.
|
||||
+
|
||||
The form '--missing=allow-promisor' is like 'allow-any', but will only
|
||||
allow object traversal to continue for EXPECTED promisor missing objects.
|
||||
Unexpected missing object will raise an error.
|
||||
|
||||
--exclude-promisor-objects::
|
||||
Omit objects that are known to be in the promisor remote. (This
|
||||
option has the purpose of operating only on locally created objects,
|
||||
so that when we repack, we still maintain a distinction between
|
||||
locally created objects [without .promisor] and objects from the
|
||||
promisor remote [with .promisor].) This is used with partial clone.
|
||||
|
||||
--keep-unreachable::
|
||||
Objects unreachable from the refs in packs named with
|
||||
--unpacked= option are added to the resulting pack, in
|
||||
addition to the reachable objects that are not in packs marked
|
||||
with *.keep files. This implies `--revs`.
|
||||
|
||||
--pack-loose-unreachable::
|
||||
Pack unreachable loose objects (and their loose counterparts
|
||||
removed). This implies `--revs`.
|
||||
|
||||
--unpack-unreachable::
|
||||
Keep unreachable objects in loose form. This implies `--revs`.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-rev-list[1]
|
||||
|
@ -9,7 +9,7 @@ git-prune - Prune all unreachable objects from the object database
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git prune' [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]
|
||||
'git prune' [-n] [-v] [--expire <expire>] [--] [<head>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -42,22 +42,19 @@ OPTIONS
|
||||
--verbose::
|
||||
Report all removed objects.
|
||||
|
||||
--progress::
|
||||
Show progress.
|
||||
\--::
|
||||
Do not interpret any more arguments as options.
|
||||
|
||||
--expire <time>::
|
||||
Only expire loose objects older than <time>.
|
||||
|
||||
\--::
|
||||
Do not interpret any more arguments as options.
|
||||
|
||||
<head>...::
|
||||
In addition to objects
|
||||
reachable from any of our references, keep objects
|
||||
reachable from listed <head>s.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLE
|
||||
-------
|
||||
|
||||
To prune objects not used by your repository or another that
|
||||
borrows from your repository via its
|
||||
@ -67,7 +64,7 @@ borrows from your repository via its
|
||||
$ git prune $(cd ../another && git rev-parse --all)
|
||||
------------
|
||||
|
||||
NOTES
|
||||
Notes
|
||||
-----
|
||||
|
||||
In most cases, users will not need to call 'git prune' directly, but
|
||||
|
@ -9,7 +9,7 @@ git-pull - Fetch from and integrate with another repository or a local branch
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git pull' [<options>] [<repository> [<refspec>...]]
|
||||
'git pull' [options] [<repository> [<refspec>...]]
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
@ -101,17 +101,13 @@ Options related to merging
|
||||
include::merge-options.txt[]
|
||||
|
||||
-r::
|
||||
--rebase[=false|true|merges|preserve|interactive]::
|
||||
--rebase[=false|true|preserve|interactive]::
|
||||
When true, rebase the current branch on top of the upstream
|
||||
branch after fetching. If there is a remote-tracking branch
|
||||
corresponding to the upstream branch and the upstream branch
|
||||
was rebased since last fetched, the rebase uses that information
|
||||
to avoid rebasing non-local changes.
|
||||
+
|
||||
When set to `merges`, rebase using `git rebase --rebase-merges` so that
|
||||
the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When set to preserve, rebase with the `--preserve-merges` option passed
|
||||
to `git rebase` so that locally created merge commits will not be flattened.
|
||||
+
|
||||
|
@ -11,8 +11,8 @@ SYNOPSIS
|
||||
[verse]
|
||||
'git push' [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
|
||||
[--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
|
||||
[-u | --set-upstream] [-o <string> | --push-option=<string>]
|
||||
[--[no-]signed|--signed=(true|false|if-asked)]
|
||||
[-u | --set-upstream] [--push-option=<string>]
|
||||
[--[no-]signed|--sign=(true|false|if-asked)]
|
||||
[--force-with-lease[=<refname>[:<expect>]]]
|
||||
[--no-verify] [<repository> [<refspec>...]]
|
||||
|
||||
@ -123,7 +123,6 @@ already exists on the remote side.
|
||||
will be tab-separated and sent to stdout instead of stderr. The full
|
||||
symbolic names of the refs will be given.
|
||||
|
||||
-d::
|
||||
--delete::
|
||||
All listed refs are deleted from the remote repository. This is
|
||||
the same as prefixing all refs with a colon.
|
||||
@ -142,7 +141,7 @@ already exists on the remote side.
|
||||
information, see `push.followTags` in linkgit:git-config[1].
|
||||
|
||||
--[no-]signed::
|
||||
--signed=(true|false|if-asked)::
|
||||
--sign=(true|false|if-asked)::
|
||||
GPG-sign the push request to update refs on the receiving
|
||||
side, to allow it to be checked by the hooks and/or be
|
||||
logged. If `false` or `--no-signed`, no signing will be
|
||||
@ -157,17 +156,11 @@ already exists on the remote side.
|
||||
Either all refs are updated, or on error, no refs are updated.
|
||||
If the server does not support atomic pushes the push will fail.
|
||||
|
||||
-o <option>::
|
||||
--push-option=<option>::
|
||||
-o::
|
||||
--push-option::
|
||||
Transmit the given string to the server, which passes them to
|
||||
the pre-receive as well as the post-receive hook. The given string
|
||||
must not contain a NUL or LF character.
|
||||
When multiple `--push-option=<option>` are given, they are
|
||||
all sent to the other side in the order listed on the
|
||||
command line.
|
||||
When no `--push-option=<option>` is given from the command
|
||||
line, the values of configuration variable `push.pushOption`
|
||||
are used instead.
|
||||
|
||||
--receive-pack=<git-receive-pack>::
|
||||
--exec=<git-receive-pack>::
|
||||
@ -301,7 +294,7 @@ origin +master` to force a push to the `master` branch). See the
|
||||
These options are passed to linkgit:git-send-pack[1]. A thin transfer
|
||||
significantly reduces the amount of sent data when the sender and
|
||||
receiver share many of the same objects in common. The default is
|
||||
`--thin`.
|
||||
\--thin.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
@ -424,7 +417,7 @@ reason::
|
||||
refs, no explanation is needed. For a failed ref, the reason for
|
||||
failure is described.
|
||||
|
||||
NOTE ABOUT FAST-FORWARDS
|
||||
Note about fast-forwards
|
||||
------------------------
|
||||
|
||||
When an update changes a branch (or more in general, a ref) that used to
|
||||
@ -511,7 +504,7 @@ overwrite it. In other words, "git push --force" is a method reserved for
|
||||
a case where you do mean to lose history.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
Examples
|
||||
--------
|
||||
|
||||
`git push`::
|
||||
|
@ -81,11 +81,12 @@ OPTIONS
|
||||
* when both sides add a path identically. The resolution
|
||||
is to add that path.
|
||||
|
||||
--prefix=<prefix>::
|
||||
--prefix=<prefix>/::
|
||||
Keep the current index contents, and read the contents
|
||||
of the named tree-ish under the directory at `<prefix>`.
|
||||
The command will refuse to overwrite entries that already
|
||||
existed in the original index file.
|
||||
existed in the original index file. Note that the `<prefix>/`
|
||||
value must end with a slash.
|
||||
|
||||
--exclude-per-directory=<gitignore>::
|
||||
When running the command with `-u` and `-m` options, the
|
||||
@ -132,7 +133,7 @@ OPTIONS
|
||||
The id of the tree object(s) to be read/merged.
|
||||
|
||||
|
||||
MERGING
|
||||
Merging
|
||||
-------
|
||||
If `-m` is specified, 'git read-tree' can perform 3 kinds of
|
||||
merge, a single tree merge if only 1 tree is given, a
|
||||
@ -382,7 +383,7 @@ middle of doing, and when your working tree is ready (i.e. you
|
||||
have finished your work-in-progress), attempt the merge again.
|
||||
|
||||
|
||||
SPARSE CHECKOUT
|
||||
Sparse checkout
|
||||
---------------
|
||||
|
||||
"Sparse checkout" allows populating the working directory sparsely.
|
||||
|
@ -8,11 +8,11 @@ git-rebase - Reapply commits on top of another base tip
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git rebase' [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>]
|
||||
'git rebase' [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
|
||||
[<upstream> [<branch>]]
|
||||
'git rebase' [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>]
|
||||
'git rebase' [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
|
||||
--root [<branch>]
|
||||
'git rebase' --continue | --skip | --abort | --quit | --edit-todo | --show-current-patch
|
||||
'git rebase' --continue | --skip | --abort | --quit | --edit-todo
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -203,7 +203,24 @@ Alternatively, you can undo the 'git rebase' with
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
include::rebase-config.txt[]
|
||||
rebase.stat::
|
||||
Whether to show a diffstat of what changed upstream since the last
|
||||
rebase. False by default.
|
||||
|
||||
rebase.autoSquash::
|
||||
If set to true enable `--autosquash` option by default.
|
||||
|
||||
rebase.autoStash::
|
||||
If set to true enable `--autostash` option by default.
|
||||
|
||||
rebase.missingCommitsCheck::
|
||||
If set to "warn", print warnings about removed commits in
|
||||
interactive mode. If set to "error", print the warnings and
|
||||
stop the rebase. If set to "ignore", no checking is
|
||||
done. "ignore" by default.
|
||||
|
||||
rebase.instructionFormat::
|
||||
Custom commit list format to use during an `--interactive` rebase.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -244,22 +261,12 @@ leave out at most one of A and B, in which case it defaults to HEAD.
|
||||
Keep the commits that do not change anything from its
|
||||
parents in the result.
|
||||
|
||||
--allow-empty-message::
|
||||
By default, rebasing commits with an empty message will fail.
|
||||
This option overrides that behavior, allowing commits with empty
|
||||
messages to be rebased.
|
||||
|
||||
--skip::
|
||||
Restart the rebasing process by skipping the current patch.
|
||||
|
||||
--edit-todo::
|
||||
Edit the todo list during an interactive rebase.
|
||||
|
||||
--show-current-patch::
|
||||
Show the current patch in an interactive rebase or when rebase
|
||||
is stopped because of conflicts. This is the equivalent of
|
||||
`git show REBASE_HEAD`.
|
||||
|
||||
-m::
|
||||
--merge::
|
||||
Use merging strategies to rebase. When the recursive (default) merge
|
||||
@ -327,7 +334,7 @@ which makes little sense.
|
||||
|
||||
-f::
|
||||
--force-rebase::
|
||||
Force a rebase even if the current branch is up to date and
|
||||
Force a rebase even if the current branch is up-to-date and
|
||||
the command without `--force` would return without doing anything.
|
||||
+
|
||||
You may find this (or --no-ff with an interactive rebase) helpful after
|
||||
@ -364,10 +371,9 @@ default is `--no-fork-point`, otherwise the default is `--fork-point`.
|
||||
Incompatible with the --interactive option.
|
||||
|
||||
--signoff::
|
||||
Add a Signed-off-by: trailer to all the rebased commits. Note
|
||||
that if `--interactive` is given then only commits marked to be
|
||||
picked, edited or reworded will have the trailer added. Incompatible
|
||||
with the `--preserve-merges` option.
|
||||
This flag is passed to 'git am' to sign off all the rebased
|
||||
commits (see linkgit:git-am[1]). Incompatible with the
|
||||
--interactive option.
|
||||
|
||||
-i::
|
||||
--interactive::
|
||||
@ -379,33 +385,6 @@ The commit list format can be changed by setting the configuration option
|
||||
rebase.instructionFormat. A customized instruction format will automatically
|
||||
have the long commit hash prepended to the format.
|
||||
|
||||
-r::
|
||||
--rebase-merges[=(rebase-cousins|no-rebase-cousins)]::
|
||||
By default, a rebase will simply drop merge commits from the todo
|
||||
list, and put the rebased commits into a single, linear branch.
|
||||
With `--rebase-merges`, the rebase will instead try to preserve
|
||||
the branching structure within the commits that are to be rebased,
|
||||
by recreating the merge commits. Any resolved merge conflicts or
|
||||
manual amendments in these merge commits will have to be
|
||||
resolved/re-applied manually.
|
||||
+
|
||||
By default, or when `no-rebase-cousins` was specified, commits which do not
|
||||
have `<upstream>` as direct ancestor will keep their original branch point,
|
||||
i.e. commits that would be excluded by gitlink:git-log[1]'s
|
||||
`--ancestry-path` option will keep their original ancestry by default. If
|
||||
the `rebase-cousins` mode is turned on, such commits are instead rebased
|
||||
onto `<upstream>` (or `<onto>`, if specified).
|
||||
+
|
||||
The `--rebase-merges` mode is similar in spirit to `--preserve-merges`, but
|
||||
in contrast to that option works well in interactive rebases: commits can be
|
||||
reordered, inserted and dropped at will.
|
||||
+
|
||||
It is currently only possible to recreate the merge commits using the
|
||||
`recursive` merge strategy; Different merge strategies can be used only via
|
||||
explicit `exec git merge -s <strategy> [...]` commands.
|
||||
+
|
||||
See also REBASING MERGES below.
|
||||
|
||||
-p::
|
||||
--preserve-merges::
|
||||
Recreate merge commits instead of flattening the history by replaying
|
||||
@ -451,15 +430,13 @@ without an explicit `--interactive`.
|
||||
--autosquash::
|
||||
--no-autosquash::
|
||||
When the commit log message begins with "squash! ..." (or
|
||||
"fixup! ..."), and there is already a commit in the todo list that
|
||||
matches the same `...`, automatically modify the todo list of rebase
|
||||
-i so that the commit marked for squashing comes right after the
|
||||
commit to be modified, and change the action of the moved commit
|
||||
from `pick` to `squash` (or `fixup`). A commit matches the `...` if
|
||||
the commit subject matches, or if the `...` refers to the commit's
|
||||
hash. As a fall-back, partial matches of the commit subject work,
|
||||
too. The recommended way to create fixup/squash commits is by using
|
||||
the `--fixup`/`--squash` options of linkgit:git-commit[1].
|
||||
"fixup! ..."), and there is a commit whose title begins with
|
||||
the same ..., automatically modify the todo list of rebase -i
|
||||
so that the commit marked for squashing comes right after the
|
||||
commit to be modified, and change the action of the moved
|
||||
commit from `pick` to `squash` (or `fixup`). Ignores subsequent
|
||||
"fixup! " or "squash! " after the first, in case you referred to an
|
||||
earlier fixup/squash with `git commit --fixup/--squash`.
|
||||
+
|
||||
This option is only valid when the `--interactive` option is used.
|
||||
+
|
||||
@ -803,146 +780,12 @@ The ripple effect of a "hard case" recovery is especially bad:
|
||||
'everyone' downstream from 'topic' will now have to perform a "hard
|
||||
case" recovery too!
|
||||
|
||||
REBASING MERGES
|
||||
-----------------
|
||||
|
||||
The interactive rebase command was originally designed to handle
|
||||
individual patch series. As such, it makes sense to exclude merge
|
||||
commits from the todo list, as the developer may have merged the
|
||||
then-current `master` while working on the branch, only to rebase
|
||||
all the commits onto `master` eventually (skipping the merge
|
||||
commits).
|
||||
|
||||
However, there are legitimate reasons why a developer may want to
|
||||
recreate merge commits: to keep the branch structure (or "commit
|
||||
topology") when working on multiple, inter-related branches.
|
||||
|
||||
In the following example, the developer works on a topic branch that
|
||||
refactors the way buttons are defined, and on another topic branch
|
||||
that uses that refactoring to implement a "Report a bug" button. The
|
||||
output of `git log --graph --format=%s -5` may look like this:
|
||||
|
||||
------------
|
||||
* Merge branch 'report-a-bug'
|
||||
|\
|
||||
| * Add the feedback button
|
||||
* | Merge branch 'refactor-button'
|
||||
|\ \
|
||||
| |/
|
||||
| * Use the Button class for all buttons
|
||||
| * Extract a generic Button class from the DownloadButton one
|
||||
------------
|
||||
|
||||
The developer might want to rebase those commits to a newer `master`
|
||||
while keeping the branch topology, for example when the first topic
|
||||
branch is expected to be integrated into `master` much earlier than the
|
||||
second one, say, to resolve merge conflicts with changes to the
|
||||
DownloadButton class that made it into `master`.
|
||||
|
||||
This rebase can be performed using the `--rebase-merges` option.
|
||||
It will generate a todo list looking like this:
|
||||
|
||||
------------
|
||||
label onto
|
||||
|
||||
# Branch: refactor-button
|
||||
reset onto
|
||||
pick 123456 Extract a generic Button class from the DownloadButton one
|
||||
pick 654321 Use the Button class for all buttons
|
||||
label refactor-button
|
||||
|
||||
# Branch: report-a-bug
|
||||
reset refactor-button # Use the Button class for all buttons
|
||||
pick abcdef Add the feedback button
|
||||
label report-a-bug
|
||||
|
||||
reset onto
|
||||
merge -C a1b2c3 refactor-button # Merge 'refactor-button'
|
||||
merge -C 6f5e4d report-a-bug # Merge 'report-a-bug'
|
||||
------------
|
||||
|
||||
In contrast to a regular interactive rebase, there are `label`, `reset`
|
||||
and `merge` commands in addition to `pick` ones.
|
||||
|
||||
The `label` command associates a label with the current HEAD when that
|
||||
command is executed. These labels are created as worktree-local refs
|
||||
(`refs/rewritten/<label>`) that will be deleted when the rebase
|
||||
finishes. That way, rebase operations in multiple worktrees linked to
|
||||
the same repository do not interfere with one another. If the `label`
|
||||
command fails, it is rescheduled immediately, with a helpful message how
|
||||
to proceed.
|
||||
|
||||
The `reset` command resets the HEAD, index and worktree to the specified
|
||||
revision. It is isimilar to an `exec git reset --hard <label>`, but
|
||||
refuses to overwrite untracked files. If the `reset` command fails, it is
|
||||
rescheduled immediately, with a helpful message how to edit the todo list
|
||||
(this typically happens when a `reset` command was inserted into the todo
|
||||
list manually and contains a typo).
|
||||
|
||||
The `merge` command will merge the specified revision into whatever is
|
||||
HEAD at that time. With `-C <original-commit>`, the commit message of
|
||||
the specified merge commit will be used. When the `-C` is changed to
|
||||
a lower-case `-c`, the message will be opened in an editor after a
|
||||
successful merge so that the user can edit the message.
|
||||
|
||||
If a `merge` command fails for any reason other than merge conflicts (i.e.
|
||||
when the merge operation did not even start), it is rescheduled immediately.
|
||||
|
||||
At this time, the `merge` command will *always* use the `recursive`
|
||||
merge strategy, with no way to choose a different one. To work around
|
||||
this, an `exec` command can be used to call `git merge` explicitly,
|
||||
using the fact that the labels are worktree-local refs (the ref
|
||||
`refs/rewritten/onto` would correspond to the label `onto`, for example).
|
||||
|
||||
Note: the first command (`label onto`) labels the revision onto which
|
||||
the commits are rebased; The name `onto` is just a convention, as a nod
|
||||
to the `--onto` option.
|
||||
|
||||
It is also possible to introduce completely new merge commits from scratch
|
||||
by adding a command of the form `merge <merge-head>`. This form will
|
||||
generate a tentative commit message and always open an editor to let the
|
||||
user edit it. This can be useful e.g. when a topic branch turns out to
|
||||
address more than a single concern and wants to be split into two or
|
||||
even more topic branches. Consider this todo list:
|
||||
|
||||
------------
|
||||
pick 192837 Switch from GNU Makefiles to CMake
|
||||
pick 5a6c7e Document the switch to CMake
|
||||
pick 918273 Fix detection of OpenSSL in CMake
|
||||
pick afbecd http: add support for TLS v1.3
|
||||
pick fdbaec Fix detection of cURL in CMake on Windows
|
||||
------------
|
||||
|
||||
The one commit in this list that is not related to CMake may very well
|
||||
have been motivated by working on fixing all those bugs introduced by
|
||||
switching to CMake, but it addresses a different concern. To split this
|
||||
branch into two topic branches, the todo list could be edited like this:
|
||||
|
||||
------------
|
||||
label onto
|
||||
|
||||
pick afbecd http: add support for TLS v1.3
|
||||
label tlsv1.3
|
||||
|
||||
reset onto
|
||||
pick 192837 Switch from GNU Makefiles to CMake
|
||||
pick 918273 Fix detection of OpenSSL in CMake
|
||||
pick fdbaec Fix detection of cURL in CMake on Windows
|
||||
pick 5a6c7e Document the switch to CMake
|
||||
label cmake
|
||||
|
||||
reset onto
|
||||
merge tlsv1.3
|
||||
merge cmake
|
||||
------------
|
||||
|
||||
BUGS
|
||||
----
|
||||
The todo list presented by `--preserve-merges --interactive` does not
|
||||
represent the topology of the revision graph. Editing commits and
|
||||
rewording their commit messages should work fine, but attempts to
|
||||
reorder commits tend to produce counterintuitive results. Use
|
||||
`--rebase-merges` in such scenarios instead.
|
||||
reorder commits tend to produce counterintuitive results.
|
||||
|
||||
For example, an attempt to rearrange
|
||||
------------
|
||||
|
@ -41,7 +41,7 @@ OPTIONS
|
||||
<directory>::
|
||||
The repository to sync into.
|
||||
|
||||
PRE-RECEIVE HOOK
|
||||
pre-receive Hook
|
||||
----------------
|
||||
Before any ref is updated, if $GIT_DIR/hooks/pre-receive file exists
|
||||
and is executable, it will be invoked once with no parameters. The
|
||||
@ -116,7 +116,7 @@ bail out if the update is not to be supported.
|
||||
|
||||
See the notes on the quarantine environment below.
|
||||
|
||||
UPDATE HOOK
|
||||
update Hook
|
||||
-----------
|
||||
Before each ref is updated, if $GIT_DIR/hooks/update file exists
|
||||
and is executable, it is invoked once per ref, with three parameters:
|
||||
@ -138,7 +138,7 @@ ensure the ref will actually be updated, it is only a prerequisite.
|
||||
As such it is not a good idea to send notices (e.g. email) from
|
||||
this hook. Consider using the post-receive hook instead.
|
||||
|
||||
POST-RECEIVE HOOK
|
||||
post-receive Hook
|
||||
-----------------
|
||||
After all refs were updated (or attempted to be updated), if any
|
||||
ref update was successful, and if $GIT_DIR/hooks/post-receive
|
||||
@ -198,7 +198,7 @@ after it was updated by 'git-receive-pack', but before the hook was able
|
||||
to evaluate it. It is recommended that hooks rely on sha1-new
|
||||
rather than the current value of refname.
|
||||
|
||||
POST-UPDATE HOOK
|
||||
post-update Hook
|
||||
----------------
|
||||
After all other processing, if at least one ref was updated, and
|
||||
if $GIT_DIR/hooks/post-update file exists and is executable, then
|
||||
@ -216,7 +216,7 @@ if the repository is packed and is served via a dumb transport.
|
||||
exec git update-server-info
|
||||
|
||||
|
||||
QUARANTINE ENVIRONMENT
|
||||
Quarantine Environment
|
||||
----------------------
|
||||
|
||||
When `receive-pack` takes in objects, they are placed into a temporary
|
||||
|
@ -20,9 +20,9 @@ depending on the subcommand:
|
||||
'git reflog' ['show'] [log-options] [<ref>]
|
||||
'git reflog expire' [--expire=<time>] [--expire-unreachable=<time>]
|
||||
[--rewrite] [--updateref] [--stale-fix]
|
||||
[--dry-run | -n] [--verbose] [--all | <refs>...]
|
||||
[--dry-run] [--verbose] [--all | <refs>...]
|
||||
'git reflog delete' [--rewrite] [--updateref]
|
||||
[--dry-run | -n] [--verbose] ref@\{specifier\}...
|
||||
[--dry-run] [--verbose] ref@\{specifier\}...
|
||||
'git reflog exists' <ref>
|
||||
|
||||
Reference logs, or "reflogs", record when the tips of branches and
|
||||
|
@ -55,14 +55,14 @@ some tunnel.
|
||||
the vhost field in the git:// service request (to rest of the argument).
|
||||
Default is not to send vhost in such request (if sent).
|
||||
|
||||
ENVIRONMENT VARIABLES
|
||||
---------------------
|
||||
ENVIRONMENT VARIABLES:
|
||||
----------------------
|
||||
|
||||
GIT_TRANSLOOP_DEBUG::
|
||||
If set, prints debugging information about various reads/writes.
|
||||
|
||||
ENVIRONMENT VARIABLES PASSED TO COMMAND
|
||||
---------------------------------------
|
||||
ENVIRONMENT VARIABLES PASSED TO COMMAND:
|
||||
----------------------------------------
|
||||
|
||||
GIT_EXT_SERVICE::
|
||||
Set to long name (git-upload-pack, etc...) of service helper needs
|
||||
@ -73,8 +73,8 @@ GIT_EXT_SERVICE_NOPREFIX::
|
||||
to invoke.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLES:
|
||||
---------
|
||||
This remote helper is transparently used by Git when
|
||||
you use commands such as "git fetch <URL>", "git clone <URL>",
|
||||
, "git push <URL>" or "git remote add <nick> <URL>", where <URL>
|
||||
|
@ -172,28 +172,24 @@ With `-n` option, the remote heads are not queried first with
|
||||
|
||||
'prune'::
|
||||
|
||||
Deletes stale references associated with <name>. By default, stale
|
||||
remote-tracking branches under <name> are deleted, but depending on
|
||||
global configuration and the configuration of the remote we might even
|
||||
prune local tags that haven't been pushed there. Equivalent to `git
|
||||
fetch --prune <name>`, except that no new references will be fetched.
|
||||
+
|
||||
See the PRUNING section of linkgit:git-fetch[1] for what it'll prune
|
||||
depending on various configuration.
|
||||
Deletes all stale remote-tracking branches under <name>.
|
||||
These stale branches have already been removed from the remote repository
|
||||
referenced by <name>, but are still locally available in
|
||||
"remotes/<name>".
|
||||
+
|
||||
With `--dry-run` option, report what branches will be pruned, but do not
|
||||
actually prune them.
|
||||
|
||||
'update'::
|
||||
|
||||
Fetch updates for remotes or remote groups in the repository as defined by
|
||||
remotes.<group>. If neither group nor remote is specified on the command line,
|
||||
Fetch updates for a named set of remotes in the repository as defined by
|
||||
remotes.<group>. If a named group is not specified on the command line,
|
||||
the configuration parameter remotes.default will be used; if
|
||||
remotes.default is not defined, all remotes which do not have the
|
||||
configuration parameter remote.<name>.skipDefaultUpdate set to true will
|
||||
be updated. (See linkgit:git-config[1]).
|
||||
+
|
||||
With `--prune` option, run pruning against all the remotes that are updated.
|
||||
With `--prune` option, prune all the remotes that are updated.
|
||||
|
||||
|
||||
DISCUSSION
|
||||
@ -203,7 +199,7 @@ The remote configuration is achieved using the `remote.origin.url` and
|
||||
`remote.origin.fetch` configuration variables. (See
|
||||
linkgit:git-config[1]).
|
||||
|
||||
EXAMPLES
|
||||
Examples
|
||||
--------
|
||||
|
||||
* Add a new remote, fetch, and check out a branch from it
|
||||
|
@ -9,7 +9,7 @@ git-repack - Pack unpacked objects in a repository
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>]
|
||||
'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>] [--threads=<n>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -90,9 +90,7 @@ other objects in that pack they already have locally.
|
||||
space. `--depth` limits the maximum delta depth; making it too deep
|
||||
affects the performance on the unpacker side, because delta data needs
|
||||
to be applied that many times to get to the necessary object.
|
||||
+
|
||||
The default value for --window is 10 and --depth is 50. The maximum
|
||||
depth is 4095.
|
||||
The default value for --window is 10 and --depth is 50.
|
||||
|
||||
--threads=<n>::
|
||||
This option is passed through to `git pack-objects`.
|
||||
@ -135,13 +133,6 @@ depth is 4095.
|
||||
with `-b` or `repack.writeBitmaps`, as it ensures that the
|
||||
bitmapped packfile has the necessary objects.
|
||||
|
||||
--keep-pack=<pack-name>::
|
||||
Exclude the given pack from repacking. This is the equivalent
|
||||
of having `.keep` file on the pack. `<pack-name>` is the the
|
||||
pack file name without leading directory (e.g. `pack-123.pack`).
|
||||
The option could be specified multiple times to keep multiple
|
||||
packs.
|
||||
|
||||
--unpack-unreachable=<when>::
|
||||
When loosening unreachable objects, do not bother loosening any
|
||||
objects older than `<when>`. This can be used to optimize out
|
||||
|
@ -11,7 +11,6 @@ SYNOPSIS
|
||||
'git replace' [-f] <object> <replacement>
|
||||
'git replace' [-f] --edit <object>
|
||||
'git replace' [-f] --graft <commit> [<parent>...]
|
||||
'git replace' [-f] --convert-graft-file
|
||||
'git replace' -d <object>...
|
||||
'git replace' [--format=<format>] [-l [<pattern>]]
|
||||
|
||||
@ -88,13 +87,9 @@ OPTIONS
|
||||
content as <commit> except that its parents will be
|
||||
[<parent>...] instead of <commit>'s parents. A replacement ref
|
||||
is then created to replace <commit> with the newly created
|
||||
commit. Use `--convert-graft-file` to convert a
|
||||
`$GIT_DIR/info/grafts` file and use replace refs instead.
|
||||
|
||||
--convert-graft-file::
|
||||
Creates graft commits for all entries in `$GIT_DIR/info/grafts`
|
||||
and deletes that file upon success. The purpose is to help users
|
||||
with transitioning off of the now-deprecated graft file.
|
||||
commit. See contrib/convert-grafts-to-replace-refs.sh for an
|
||||
example script based on this option that can convert grafts to
|
||||
replace refs.
|
||||
|
||||
-l <pattern>::
|
||||
--list <pattern>::
|
||||
|
@ -46,8 +46,8 @@ ref that is different from the ref you have locally, you can use the
|
||||
its remote name.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLE
|
||||
-------
|
||||
|
||||
Imagine that you built your work on your `master` branch on top of
|
||||
the `v1.0` release, and want it to be integrated to the project.
|
||||
|
@ -205,7 +205,7 @@ development on the topic branch:
|
||||
------------
|
||||
|
||||
you could run `git rebase master topic`, to bring yourself
|
||||
up to date before your topic is ready to be sent upstream.
|
||||
up-to-date before your topic is ready to be sent upstream.
|
||||
This would result in falling back to a three-way merge, and it
|
||||
would conflict the same way as the test merge you resolved earlier.
|
||||
'git rerere' will be run by 'git rebase' to help you resolve this
|
||||
|
@ -47,9 +47,7 @@ SYNOPSIS
|
||||
[ --fixed-strings | -F ]
|
||||
[ --date=<format>]
|
||||
[ [ --objects | --objects-edge | --objects-edge-aggressive ]
|
||||
[ --unpacked ]
|
||||
[ --filter=<filter-spec> [ --filter-print-omitted ] ] ]
|
||||
[ --missing=<missing-action> ]
|
||||
[ --unpacked ] ]
|
||||
[ --pretty | --header ]
|
||||
[ --bisect ]
|
||||
[ --bisect-vars ]
|
||||
|
@ -9,7 +9,7 @@ git-rev-parse - Pick out and massage parameters
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git rev-parse' [<options>] <args>...
|
||||
'git rev-parse' [ --option ] <args>...
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -235,9 +235,6 @@ print a message to stderr and exit with nonzero status.
|
||||
--is-bare-repository::
|
||||
When the repository is bare print "true", otherwise "false".
|
||||
|
||||
--is-shallow-repository::
|
||||
When the repository is shallow print "true", otherwise "false".
|
||||
|
||||
--resolve-git-dir <path>::
|
||||
Check if <path> is a valid repository or a gitfile that
|
||||
points at a valid repository, and print the location of the
|
||||
@ -264,7 +261,7 @@ print a message to stderr and exit with nonzero status.
|
||||
--show-toplevel::
|
||||
Show the absolute path of the top-level directory.
|
||||
|
||||
--show-superproject-working-tree::
|
||||
--show-superproject-working-tree
|
||||
Show the absolute path of the root of the superproject's
|
||||
working tree (if exists) that uses the current repository as
|
||||
its submodule. Outputs nothing if the current repository is
|
||||
@ -360,7 +357,7 @@ Example
|
||||
|
||||
------------
|
||||
OPTS_SPEC="\
|
||||
some-command [<options>] <args>...
|
||||
some-command [options] <args>...
|
||||
|
||||
some-command does foo and bar!
|
||||
--
|
||||
@ -385,7 +382,7 @@ When `"$@"` is `-h` or `--help` in the above example, the following
|
||||
usage text would be shown:
|
||||
|
||||
------------
|
||||
usage: some-command [<options>] <args>...
|
||||
usage: some-command [options] <args>...
|
||||
|
||||
some-command does foo and bar!
|
||||
|
||||
|
@ -146,7 +146,7 @@ the submodule's history. If it exists the submodule.<name> section
|
||||
in the linkgit:gitmodules[5] file will also be removed and that file
|
||||
will be staged (unless --cached or -n are used).
|
||||
|
||||
A submodule is considered up to date when the HEAD is the same as
|
||||
A submodule is considered up-to-date when the HEAD is the same as
|
||||
recorded in the index, no tracked files are modified and no untracked
|
||||
files that aren't ignored are present in the submodules work tree.
|
||||
Ignored files are deemed expendable and won't stop a submodule's work
|
||||
|
@ -9,7 +9,7 @@ git-send-email - Send a collection of patches as emails
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git send-email' [<options>] <file|directory|rev-list options>...
|
||||
'git send-email' [options] <file|directory|rev-list options>...
|
||||
'git send-email' --dump-aliases
|
||||
|
||||
|
||||
@ -84,11 +84,6 @@ See the CONFIGURATION section for `sendemail.multiEdit`.
|
||||
the value of GIT_AUTHOR_IDENT, or GIT_COMMITTER_IDENT if that is not
|
||||
set, as returned by "git var -l".
|
||||
|
||||
--reply-to=<address>::
|
||||
Specify the address where replies from recipients should go to.
|
||||
Use this if replies to messages should go to another address than what
|
||||
is specified with the --from parameter.
|
||||
|
||||
--in-reply-to=<identifier>::
|
||||
Make the first mail (or all the mails with `--no-thread`) appear as a
|
||||
reply to the given Message-Id, which avoids breaking threads to
|
||||
@ -208,9 +203,9 @@ a password is obtained using 'git-credential'.
|
||||
specify a full pathname of a sendmail-like program instead;
|
||||
the program must support the `-i` option. Default value can
|
||||
be specified by the `sendemail.smtpServer` configuration
|
||||
option; the built-in default is to search for `sendmail` in
|
||||
`/usr/sbin`, `/usr/lib` and $PATH if such program is
|
||||
available, falling back to `localhost` otherwise.
|
||||
option; the built-in default is `/usr/sbin/sendmail` or
|
||||
`/usr/lib/sendmail` if such program is available, or
|
||||
`localhost` otherwise.
|
||||
|
||||
--smtp-server-port=<port>::
|
||||
Specifies a port different from the default port (SMTP
|
||||
@ -255,7 +250,7 @@ must be used for each option.
|
||||
|
||||
--batch-size=<num>::
|
||||
Some email servers (e.g. smtp.163.com) limit the number emails to be
|
||||
sent per session (connection) and this will lead to a failure when
|
||||
sent per session (connection) and this will lead to a faliure when
|
||||
sending many messages. With this option, send-email will disconnect after
|
||||
sending $<num> messages and wait for a few seconds (see --relogin-delay)
|
||||
and reconnect, to work around such a limit. You may want to
|
||||
@ -458,8 +453,8 @@ sendemail.confirm::
|
||||
one of 'always', 'never', 'cc', 'compose', or 'auto'. See `--confirm`
|
||||
in the previous section for the meaning of these values.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
EXAMPLE
|
||||
-------
|
||||
Use gmail as the smtp server
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
To use 'git send-email' to send your patches through the GMail SMTP server,
|
||||
@ -473,7 +468,16 @@ edit ~/.gitconfig to specify your account settings:
|
||||
|
||||
If you have multifactor authentication setup on your gmail account, you will
|
||||
need to generate an app-specific password for use with 'git send-email'. Visit
|
||||
https://security.google.com/settings/security/apppasswords to create it.
|
||||
https://security.google.com/settings/security/apppasswords to setup an
|
||||
app-specific password. Once setup, you can store it with the credentials
|
||||
helper:
|
||||
|
||||
$ git credential fill
|
||||
protocol=smtp
|
||||
host=smtp.gmail.com
|
||||
username=youname@gmail.com
|
||||
password=app-password
|
||||
|
||||
|
||||
Once your commits are ready to be sent to the mailing list, run the
|
||||
following commands:
|
||||
@ -482,11 +486,6 @@ following commands:
|
||||
$ edit outgoing/0000-*
|
||||
$ git send-email outgoing/*
|
||||
|
||||
The first time you run it, you will be prompted for your credentials. Enter the
|
||||
app-specific or your regular password as appropriate. If you have credential
|
||||
helper configured (see linkgit:git-credential[1]), the password will be saved in
|
||||
the credential store so you won't have to type it the next time.
|
||||
|
||||
Note: the following perl modules are required
|
||||
Net::SMTP::SSL, MIME::Base64 and Authen::SASL
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user