Compare commits
40 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 | |||
d0832b2847 | |||
273c61496f | |||
f6adec4e32 | |||
98afac7a7c |
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
|
1
.mailmap
1
.mailmap
@ -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>
|
||||
|
34
.travis.yml
34
.travis.yml
@ -21,32 +21,49 @@ addons:
|
||||
- git-svn
|
||||
- apache2
|
||||
|
||||
env:
|
||||
global:
|
||||
- DEVELOPER=1
|
||||
# The Linux build installs the defined dependency versions below.
|
||||
# The OS X build installs the latest available versions. Keep that
|
||||
# in mind when you encounter a broken OS X build!
|
||||
- LINUX_P4_VERSION="16.2"
|
||||
- LINUX_GIT_LFS_VERSION="1.5.2"
|
||||
- DEFAULT_TEST_TARGET=prove
|
||||
- GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
|
||||
- GIT_TEST_OPTS="--verbose-log"
|
||||
- GIT_TEST_CLONE_2GB=YesPlease
|
||||
# t9810 occasionally fails on Travis CI OS X
|
||||
# t9816 occasionally fails with "TAP out of sequence errors" on Travis CI OS X
|
||||
- GIT_SKIP_TESTS="t9810 t9816"
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- env: 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:
|
||||
@ -54,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:
|
||||
@ -65,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,11 +67,8 @@ 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
|
||||
@ -184,7 +180,6 @@ ASCIIDOC = asciidoctor
|
||||
ASCIIDOC_CONF =
|
||||
ASCIIDOC_HTML = xhtml5
|
||||
ASCIIDOC_DOCBOOK = docbook45
|
||||
ASCIIDOC_EXTRA += -acompat-mode
|
||||
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
||||
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
|
||||
DBLATEX_COMMON =
|
||||
@ -327,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
|
||||
|
||||
@ -366,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
|
||||
|
||||
@ -439,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
|
||||
|
16
Documentation/RelNotes/2.14.5.txt
Normal file
16
Documentation/RelNotes/2.14.5.txt
Normal file
@ -0,0 +1,16 @@
|
||||
Git v2.14.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release is to address the recently reported CVE-2018-17456.
|
||||
|
||||
Fixes since v2.14.4
|
||||
-------------------
|
||||
|
||||
* Submodules' "URL"s come from the untrusted .gitmodules file, but
|
||||
we blindly gave it to "git clone" to clone submodules when "git
|
||||
clone --recurse-submodules" was used to clone a project that has
|
||||
such a submodule. The code has been hardened to reject such
|
||||
malformed URLs (e.g. one that begins with a dash).
|
||||
|
||||
Credit for finding and fixing this vulnerability goes to joernchen
|
||||
and Jeff King, respectively.
|
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,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,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 promissor remote is OK.
|
||||
|
||||
* There was an unused file-scope static variable left in http.c when
|
||||
building for versions of libCURL that is older than 7.19.4, which
|
||||
has been fixed.
|
||||
(merge b8fd6008ec rj/http-code-cleanup later to maint).
|
||||
|
||||
* Shell script portability fix.
|
||||
(merge 206a6ae013 ml/filter-branch-portability-fix later to maint).
|
||||
|
||||
* Other minor doc, test and build updates and code cleanups.
|
||||
(merge e2a5a028c7 bw/oidmap-autoinit later to maint).
|
||||
(merge ec3b4b06f8 cl/t9001-cleanup later to maint).
|
||||
(merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
|
||||
(merge fbac558a9b rs/describe-unique-abbrev later to maint).
|
||||
(merge 8462ff43e4 tb/crlf-conv-flags later to maint).
|
||||
(merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
|
||||
(merge 3449847168 cc/sha1-file-name later to maint).
|
||||
(merge ad622a256f ds/use-get-be64 later to maint).
|
||||
(merge f919ffebed sg/cocci-move-array later to maint).
|
||||
(merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
|
||||
(merge ef5b3a6c5e nd/shared-index-fix later to maint).
|
||||
(merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
|
||||
(merge b780e4407d jc/worktree-add-short-help later to maint).
|
||||
(merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
|
||||
(merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
|
||||
(merge 3738031581 jk/gettext-poison later to maint).
|
||||
(merge 54360a1956 rj/sparse-updates later to maint).
|
||||
(merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
|
||||
(merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
|
||||
(merge 4ccf461f56 bp/fsmonitor later to maint).
|
||||
(merge a6119f82b1 jk/test-hashmap-updates later to maint).
|
||||
(merge 5aea9fe6cc rd/typofix later to maint).
|
||||
(merge e4e5da2796 sb/status-doc-fix later to maint).
|
||||
(merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
|
||||
(merge d023df1ee6 tg/worktree-create-tracking later to maint).
|
||||
(merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
|
||||
(merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
|
||||
(merge 2708ef4af6 sg/t6300-modernize later to maint).
|
||||
(merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
|
||||
(merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
|
||||
(merge 1316416903 ms/non-ascii-ticks later to maint).
|
||||
(merge 878056005e rs/strbuf-read-file-or-whine later to maint).
|
||||
(merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
|
||||
(merge edfb8ba068 ot/ref-filter-cleanup later to maint).
|
||||
(merge 11395a3b4b jc/test-must-be-empty later to maint).
|
||||
(merge 768b9d6db7 mk/doc-pretty-fill later to maint).
|
||||
(merge 2caa7b8d27 ab/man-sec-list later to maint).
|
||||
(merge 40c17eb184 ks/t3200-typofix later to maint).
|
||||
(merge bd9958c358 dp/merge-strategy-doc-fix later to maint).
|
||||
(merge 9ee0540a40 js/ming-strftime later to maint).
|
||||
(merge 1775e990f7 tz/complete-tag-delete-tagname later to maint).
|
||||
(merge 00a4b03501 rj/warning-uninitialized-fix later to maint).
|
||||
(merge b635ed97a0 jk/attributes-path-doc later to maint).
|
@ -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,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,43 +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.
|
||||
|
||||
(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
|
||||
@ -203,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,
|
||||
@ -219,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"
|
||||
@ -232,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
|
||||
@ -247,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
|
||||
@ -256,27 +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.
|
||||
|
||||
Send your patch with "To:" set to the mailing list, with "cc:" listing
|
||||
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
|
||||
"git blame $path" and "git shortlog --no-merges $path" would help to
|
||||
identify them), to solicit comments and reviews.
|
||||
|
||||
:1: footnote:[The current maintainer: gitster@pobox.com]
|
||||
:2: 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{1} and "cc:" the
|
||||
list{2} 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
|
||||
@ -288,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.
|
||||
@ -331,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
|
||||
@ -420,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,
|
||||
@ -430,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
|
||||
@ -460,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
|
||||
@ -481,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
|
||||
@ -520,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.
|
||||
|
||||
@ -534,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
|
||||
@ -791,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
|
||||
@ -964,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
|
||||
@ -1115,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
|
||||
@ -1398,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
|
||||
@ -1611,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::
|
||||
@ -1979,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
|
||||
@ -2122,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
|
||||
@ -2583,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
|
||||
@ -2704,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'
|
||||
@ -2747,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
|
||||
@ -2954,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].
|
||||
@ -3043,7 +2932,6 @@ sendemail.smtpPass::
|
||||
sendemail.suppresscc::
|
||||
sendemail.suppressFrom::
|
||||
sendemail.to::
|
||||
sendemail.tocmd::
|
||||
sendemail.smtpDomain::
|
||||
sendemail.smtpServer::
|
||||
sendemail.smtpServerPort::
|
||||
@ -3178,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
|
||||
@ -3228,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::
|
||||
@ -3362,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
|
||||
@ -3467,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.
|
||||
|
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 shift 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:
|
||||
+
|
||||
@ -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 betwen 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
|
||||
@ -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>::
|
||||
@ -591,9 +518,6 @@ endif::git-format-patch[]
|
||||
--text::
|
||||
Treat all files as text.
|
||||
|
||||
--ignore-cr-at-eol::
|
||||
Ignore carrige-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[]
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
----------
|
||||
|
||||
|
@ -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::
|
||||
@ -259,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>...
|
||||
@ -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,12 +271,6 @@ 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
|
||||
--------
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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>::
|
||||
|
@ -174,16 +174,11 @@ See also <<FILES>>.
|
||||
either --bool or --int, as described above.
|
||||
|
||||
--path::
|
||||
`git config` will expand a leading `~` to the value of
|
||||
`$HOME`, and `~user` to the home directory for the
|
||||
'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 section.variable ~/`
|
||||
from the command line to let your shell do the expansion).
|
||||
|
||||
--expiry-date::
|
||||
`git config` will ensure that the output is converted from
|
||||
a fixed or relative date-string to a timestamp. This option
|
||||
has no effect when setting the value.
|
||||
value (but you can use 'git config bla {tilde}/' from the
|
||||
command line to let your shell do the expansion).
|
||||
|
||||
-z::
|
||||
--null::
|
||||
@ -233,12 +228,6 @@ See also <<FILES>>.
|
||||
using `--file`, `--global`, etc) and `on` when searching all
|
||||
config files.
|
||||
|
||||
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
|
||||
-----
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -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
|
||||
|
@ -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> ]
|
||||
|
||||
@ -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,
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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>.
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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]
|
||||
@ -133,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
|
||||
|
@ -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
|
||||
--------
|
||||
|
@ -64,6 +64,12 @@ 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
|
||||
------------------
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -157,12 +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
|
||||
----
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -316,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
|
||||
|
@ -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]]
|
||||
[--stdout [--filter=<filter-spec>] | base-name]
|
||||
[--revs [--unpacked | --all]] [--stdout | base-name]
|
||||
[--shallow] [--keep-true-parents] < object-list
|
||||
|
||||
|
||||
@ -237,36 +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.
|
||||
|
||||
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,15 +42,12 @@ 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
|
||||
|
@ -12,7 +12,7 @@ SYNOPSIS
|
||||
'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] [--push-option=<string>]
|
||||
[--[no-]signed|--signed=(true|false|if-asked)]
|
||||
[--[no-]signed|--sign=(true|false|if-asked)]
|
||||
[--force-with-lease[=<refname>[:<expect>]]]
|
||||
[--no-verify] [<repository> [<refspec>...]]
|
||||
|
||||
@ -141,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
|
||||
@ -156,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>::
|
||||
|
@ -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
|
||||
|
@ -12,7 +12,7 @@ SYNOPSIS
|
||||
[<upstream> [<branch>]]
|
||||
'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
|
||||
@ -423,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.
|
||||
+
|
||||
|
@ -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
|
||||
|
@ -172,14 +172,10 @@ 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.
|
||||
@ -193,7 +189,7 @@ 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
|
||||
|
@ -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 ]
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -11,7 +11,7 @@ SYNOPSIS
|
||||
[verse]
|
||||
'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>]
|
||||
[--verbose] [--thin] [--atomic]
|
||||
[--[no-]signed|--signed=(true|false|if-asked)]
|
||||
[--[no-]signed|--sign=(true|false|if-asked)]
|
||||
[<host>:]<directory> [<ref>...]
|
||||
|
||||
DESCRIPTION
|
||||
@ -71,7 +71,7 @@ be in a separate packet, and the list must end with a flush packet.
|
||||
refs.
|
||||
|
||||
--[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
|
||||
|
@ -9,7 +9,7 @@ git-show - Show various types of objects
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git show' [options] [<object>...]
|
||||
'git show' [options] <object>...
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -35,7 +35,7 @@ This manual page describes only the most frequently used options.
|
||||
OPTIONS
|
||||
-------
|
||||
<object>...::
|
||||
The names of objects to show (defaults to 'HEAD').
|
||||
The names of objects to show.
|
||||
For a more complete list of ways to spell object names, see
|
||||
"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
|
||||
|
||||
|
@ -13,8 +13,10 @@ SYNOPSIS
|
||||
'git stash' drop [-q|--quiet] [<stash>]
|
||||
'git stash' ( pop | apply ) [--index] [-q|--quiet] [<stash>]
|
||||
'git stash' branch <branchname> [<stash>]
|
||||
'git stash' save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
|
||||
[-u|--include-untracked] [-a|--all] [<message>]
|
||||
'git stash' [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
|
||||
[-u|--include-untracked] [-a|--all] [-m|--message <message>]
|
||||
[-u|--include-untracked] [-a|--all] [-m|--message <message>]]
|
||||
[--] [<pathspec>...]]
|
||||
'git stash' clear
|
||||
'git stash' create [<message>]
|
||||
@ -31,7 +33,7 @@ and reverts the working directory to match the `HEAD` commit.
|
||||
The modifications stashed away by this command can be listed with
|
||||
`git stash list`, inspected with `git stash show`, and restored
|
||||
(potentially on top of a different commit) with `git stash apply`.
|
||||
Calling `git stash` without any arguments is equivalent to `git stash push`.
|
||||
Calling `git stash` without any arguments is equivalent to `git stash save`.
|
||||
A stash is by default listed as "WIP on 'branchname' ...", but
|
||||
you can give a more descriptive message on the command line when
|
||||
you create one.
|
||||
@ -46,6 +48,7 @@ stash index (e.g. the integer `n` is equivalent to `stash@{n}`).
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]::
|
||||
push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [-m|--message <message>] [--] [<pathspec>...]::
|
||||
|
||||
Save your local modifications to a new 'stash entry' and roll them
|
||||
@ -84,12 +87,6 @@ linkgit:git-add[1] to learn how to operate the `--patch` mode.
|
||||
The `--patch` option implies `--keep-index`. You can use
|
||||
`--no-keep-index` to override this.
|
||||
|
||||
save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]::
|
||||
|
||||
This option is deprecated in favour of 'git stash push'. It
|
||||
differs from "stash push" in that it cannot take pathspecs,
|
||||
and any non-option arguments form the message.
|
||||
|
||||
list [<options>]::
|
||||
|
||||
List the stash entries that you currently have. Each 'stash entry' is
|
||||
@ -121,7 +118,7 @@ pop [--index] [-q|--quiet] [<stash>]::
|
||||
|
||||
Remove a single stashed state from the stash list and apply it
|
||||
on top of the current working tree state, i.e., do the inverse
|
||||
operation of `git stash push`. The working directory must
|
||||
operation of `git stash save`. The working directory must
|
||||
match the index.
|
||||
+
|
||||
Applying the state can fail with conflicts; in this case, it is not
|
||||
@ -140,7 +137,7 @@ apply [--index] [-q|--quiet] [<stash>]::
|
||||
|
||||
Like `pop`, but do not remove the state from the stash list. Unlike `pop`,
|
||||
`<stash>` may be any commit that looks like a commit created by
|
||||
`stash push` or `stash create`.
|
||||
`stash save` or `stash create`.
|
||||
|
||||
branch <branchname> [<stash>]::
|
||||
|
||||
@ -151,7 +148,7 @@ branch <branchname> [<stash>]::
|
||||
`stash@{<revision>}`, it then drops the `<stash>`. When no `<stash>`
|
||||
is given, applies the latest one.
|
||||
+
|
||||
This is useful if the branch on which you ran `git stash push` has
|
||||
This is useful if the branch on which you ran `git stash save` has
|
||||
changed enough that `git stash apply` fails due to conflicts. Since
|
||||
the stash entry is applied on top of the commit that was HEAD at the
|
||||
time `git stash` was run, it restores the originally stashed state
|
||||
@ -175,14 +172,14 @@ create::
|
||||
return its object name, without storing it anywhere in the ref
|
||||
namespace.
|
||||
This is intended to be useful for scripts. It is probably not
|
||||
the command you want to use; see "push" above.
|
||||
the command you want to use; see "save" above.
|
||||
|
||||
store::
|
||||
|
||||
Store a given stash created via 'git stash create' (which is a
|
||||
dangling merge commit) in the stash ref, updating the stash
|
||||
reflog. This is intended to be useful for scripts. It is
|
||||
probably not the command you want to use; see "push" above.
|
||||
probably not the command you want to use; see "save" above.
|
||||
|
||||
DISCUSSION
|
||||
----------
|
||||
@ -258,14 +255,14 @@ $ git stash pop
|
||||
|
||||
Testing partial commits::
|
||||
|
||||
You can use `git stash push --keep-index` when you want to make two or
|
||||
You can use `git stash save --keep-index` when you want to make two or
|
||||
more commits out of the changes in the work tree, and you want to test
|
||||
each change before committing:
|
||||
+
|
||||
----------------------------------------------------------------
|
||||
# ... hack hack hack ...
|
||||
$ git add --patch foo # add just first part to the index
|
||||
$ git stash push --keep-index # save all other changes to the stash
|
||||
$ git stash save --keep-index # save all other changes to the stash
|
||||
$ edit/build/test first part
|
||||
$ git commit -m 'First part' # commit fully tested change
|
||||
$ git stash pop # prepare to work on all other changes
|
||||
|
@ -97,27 +97,8 @@ configuration variable documented in linkgit:git-config[1].
|
||||
(and suppresses the output of submodule summaries when the config option
|
||||
`status.submoduleSummary` is set).
|
||||
|
||||
--ignored[=<mode>]::
|
||||
--ignored::
|
||||
Show ignored files as well.
|
||||
+
|
||||
The mode parameter is used to specify the handling of ignored files.
|
||||
It is optional: it defaults to 'traditional'.
|
||||
+
|
||||
The possible options are:
|
||||
+
|
||||
- 'traditional' - Shows ignored files and directories, unless
|
||||
--untracked-files=all is specifed, in which case
|
||||
individual files in ignored directories are
|
||||
displayed.
|
||||
- 'no' - Show no ignored files.
|
||||
- 'matching' - Shows ignored files and directories matching an
|
||||
ignore pattern.
|
||||
+
|
||||
When 'matching' mode is specified, paths that explicity match an
|
||||
ignored pattern are shown. If a directory matches an ignore pattern,
|
||||
then it is shown, but not paths contained in the ignored directory. If
|
||||
a directory does not match an ignore pattern, but all contents are
|
||||
ignored, then the directory is not shown, but all contents are shown.
|
||||
|
||||
-z::
|
||||
Terminate entries with NUL, instead of LF. This implies
|
||||
@ -130,11 +111,6 @@ ignored, then the directory is not shown, but all contents are shown.
|
||||
without options are equivalent to 'always' and 'never'
|
||||
respectively.
|
||||
|
||||
--ahead-behind::
|
||||
--no-ahead-behind::
|
||||
Display or do not display detailed ahead/behind counts for the
|
||||
branch relative to its upstream branch. Defaults to true.
|
||||
|
||||
<pathspec>...::
|
||||
See the 'pathspec' entry in linkgit:gitglossary[7].
|
||||
|
||||
@ -154,15 +130,14 @@ the status.relativePaths config option below.
|
||||
Short Format
|
||||
~~~~~~~~~~~~
|
||||
|
||||
In the short-format, the status of each path is shown as one of these
|
||||
forms
|
||||
In the short-format, the status of each path is shown as
|
||||
|
||||
XY PATH
|
||||
XY ORIG_PATH -> PATH
|
||||
XY PATH1 -> PATH2
|
||||
|
||||
where `ORIG_PATH` is where the renamed/copied contents came
|
||||
from. `ORIG_PATH` is only shown when the entry is renamed or
|
||||
copied. The `XY` is a two-letter status code.
|
||||
where `PATH1` is the path in the `HEAD`, and the " `-> PATH2`" part is
|
||||
shown only when `PATH1` corresponds to a different path in the
|
||||
index/worktree (i.e. the file is renamed). The `XY` is a two-letter
|
||||
status code.
|
||||
|
||||
The fields (including the `->`) are separated from each other by a
|
||||
single space. If a filename contains whitespace or other nonprintable
|
||||
@ -189,17 +164,15 @@ in which case `XY` are `!!`.
|
||||
|
||||
X Y Meaning
|
||||
-------------------------------------------------
|
||||
[AMD] not updated
|
||||
[MD] not updated
|
||||
M [ MD] updated in index
|
||||
A [ MD] added to index
|
||||
D deleted from index
|
||||
D [ M] deleted from index
|
||||
R [ MD] renamed in index
|
||||
C [ MD] copied in index
|
||||
[MARC] index and work tree matches
|
||||
[ MARC] M work tree changed since index
|
||||
[ MARC] D deleted in work tree
|
||||
[ D] R renamed in work tree
|
||||
[ D] C copied in work tree
|
||||
-------------------------------------------------
|
||||
D D unmerged, both deleted
|
||||
A U unmerged, added by us
|
||||
@ -317,13 +290,13 @@ Renamed or copied entries have the following format:
|
||||
of similarity between the source and target of the
|
||||
move or copy). For example "R100" or "C75".
|
||||
<path> The pathname. In a renamed/copied entry, this
|
||||
is the target path.
|
||||
is the path in the index and in the working tree.
|
||||
<sep> When the `-z` option is used, the 2 pathnames are separated
|
||||
with a NUL (ASCII 0x00) byte; otherwise, a tab (ASCII 0x09)
|
||||
byte separates them.
|
||||
<origPath> The pathname in the commit at HEAD or in the index.
|
||||
This is only present in a renamed/copied entry, and
|
||||
tells where the renamed/copied contents came from.
|
||||
<origPath> The pathname in the commit at HEAD. This is only
|
||||
present in a renamed/copied entry, and tells
|
||||
where the renamed/copied contents came from.
|
||||
--------------------------------------------------------
|
||||
|
||||
Unmerged entries have the following format; the first character is
|
||||
@ -395,19 +368,6 @@ ignored submodules you can either use the --ignore-submodules=dirty command
|
||||
line option or the 'git submodule summary' command, which shows a similar
|
||||
output but does not honor these settings.
|
||||
|
||||
BACKGROUND REFRESH
|
||||
------------------
|
||||
|
||||
By default, `git status` will automatically refresh the index, updating
|
||||
the cached stat information from the working tree and writing out the
|
||||
result. Writing out the updated index is an optimization that isn't
|
||||
strictly necessary (`status` computes the values for itself, but writing
|
||||
them out is just to save subsequent programs from repeating our
|
||||
computation). When `status` is run in the background, the lock held
|
||||
during the write may conflict with other simultaneous processes, causing
|
||||
them to fail. Scripts running `status` in the background should consider
|
||||
using `git --no-optional-locks status` (see linkgit:git[1] for details).
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:gitignore[5]
|
||||
|
@ -70,8 +70,8 @@ status [--cached] [--recursive] [--] [<path>...]::
|
||||
Show the status of the submodules. This will print the SHA-1 of the
|
||||
currently checked out commit for each submodule, along with the
|
||||
submodule path and the output of 'git describe' for the
|
||||
SHA-1. Each SHA-1 will possibly be prefixed with `-` if the submodule is
|
||||
not initialized, `+` if the currently checked out submodule commit
|
||||
SHA-1. Each SHA-1 will be prefixed with `-` if the submodule is not
|
||||
initialized, `+` if the currently checked out submodule commit
|
||||
does not match the SHA-1 found in the index of the containing
|
||||
repository and `U` if the submodule has merge conflicts.
|
||||
+
|
||||
@ -132,15 +132,15 @@ expects by cloning missing submodules and updating the working tree of
|
||||
the submodules. The "updating" can be done in several ways depending
|
||||
on command line options and the value of `submodule.<name>.update`
|
||||
configuration variable. The command line option takes precedence over
|
||||
the configuration variable. If neither is given, a 'checkout' is performed.
|
||||
The 'update' procedures supported both from the command line as well as
|
||||
through the `submodule.<name>.update` configuration are:
|
||||
the configuration variable. if neither is given, a checkout is performed.
|
||||
update procedures supported both from the command line as well as setting
|
||||
`submodule.<name>.update`:
|
||||
|
||||
checkout;; the commit recorded in the superproject will be
|
||||
checked out in the submodule on a detached HEAD.
|
||||
+
|
||||
If `--force` is specified, the submodule will be checked out (using
|
||||
`git checkout --force`), even if the commit specified
|
||||
`git checkout --force` if appropriate), even if the commit specified
|
||||
in the index of the containing repository already matches the commit
|
||||
checked out in the submodule.
|
||||
|
||||
@ -150,8 +150,8 @@ checked out in the submodule.
|
||||
merge;; the commit recorded in the superproject will be merged
|
||||
into the current branch in the submodule.
|
||||
|
||||
The following 'update' procedures are only available via the
|
||||
`submodule.<name>.update` configuration variable:
|
||||
The following procedures are only available via the `submodule.<name>.update`
|
||||
configuration variable:
|
||||
|
||||
custom command;; arbitrary shell command that takes a single
|
||||
argument (the sha1 of the commit recorded in the
|
||||
|
@ -424,7 +424,7 @@ Any other arguments are passed directly to 'git log'
|
||||
'set-tree'::
|
||||
You should consider using 'dcommit' instead of this command.
|
||||
Commit specified commit or tree objects to SVN. This relies on
|
||||
your imported fetch data being up to date. This makes
|
||||
your imported fetch data being up-to-date. This makes
|
||||
absolutely no attempts to do patching when committing to SVN, it
|
||||
simply overwrites files with those specified in the tree or
|
||||
commit. All merging is assumed to have taken place
|
||||
|
@ -9,7 +9,7 @@ git-tag - Create, list, delete or verify a tag object signed with GPG
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git tag' [-a | -s | -u <keyid>] [-f] [-m <msg> | -F <file>] [-e]
|
||||
'git tag' [-a | -s | -u <keyid>] [-f] [-m <msg> | -F <file>]
|
||||
<tagname> [<commit> | <object>]
|
||||
'git tag' -d <tagname>...
|
||||
'git tag' [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>]
|
||||
@ -167,12 +167,6 @@ This option is only applicable when listing tags without annotation lines.
|
||||
Implies `-a` if none of `-a`, `-s`, or `-u <keyid>`
|
||||
is given.
|
||||
|
||||
-e::
|
||||
--edit::
|
||||
The message taken from file with `-F` and command line with
|
||||
`-m` are usually used as the tag message unmodified.
|
||||
This option lets you further edit the message taken from these sources.
|
||||
|
||||
--cleanup=<mode>::
|
||||
This option sets how the tag message is cleaned up.
|
||||
The '<mode>' can be one of 'verbatim', 'whitespace' and 'strip'. The
|
||||
|
@ -16,11 +16,9 @@ SYNOPSIS
|
||||
[--chmod=(+|-)x]
|
||||
[--[no-]assume-unchanged]
|
||||
[--[no-]skip-worktree]
|
||||
[--[no-]fsmonitor-valid]
|
||||
[--ignore-submodules]
|
||||
[--[no-]split-index]
|
||||
[--[no-|test-|force-]untracked-cache]
|
||||
[--[no-]fsmonitor]
|
||||
[--really-refresh] [--unresolve] [--again | -g]
|
||||
[--info-only] [--index-info]
|
||||
[-z] [--stdin] [--index-version <n>]
|
||||
@ -113,12 +111,6 @@ you will need to handle the situation manually.
|
||||
set and unset the "skip-worktree" bit for the paths. See
|
||||
section "Skip-worktree bit" below for more information.
|
||||
|
||||
--[no-]fsmonitor-valid::
|
||||
When one of these flags is specified, the object name recorded
|
||||
for the paths are not updated. Instead, these options
|
||||
set and unset the "fsmonitor valid" bit for the paths. See
|
||||
section "File System Monitor" below for more information.
|
||||
|
||||
-g::
|
||||
--again::
|
||||
Runs 'git update-index' itself on the paths whose index
|
||||
@ -209,15 +201,6 @@ will remove the intended effect of the option.
|
||||
`--untracked-cache` used to imply `--test-untracked-cache` but
|
||||
this option would enable the extension unconditionally.
|
||||
|
||||
--fsmonitor::
|
||||
--no-fsmonitor::
|
||||
Enable or disable files system monitor feature. These options
|
||||
take effect whatever the value of the `core.fsmonitor`
|
||||
configuration variable (see linkgit:git-config[1]). But a warning
|
||||
is emitted when the change goes against the configured value, as
|
||||
the configured value will take effect next time the index is
|
||||
read and this will remove the intended effect of the option.
|
||||
|
||||
\--::
|
||||
Do not interpret any more arguments as options.
|
||||
|
||||
@ -231,7 +214,7 @@ will remove the intended effect of the option.
|
||||
Using --refresh
|
||||
---------------
|
||||
`--refresh` does not calculate a new sha1 file or bring the index
|
||||
up to date for mode/content changes. But what it *does* do is to
|
||||
up-to-date for mode/content changes. But what it *does* do is to
|
||||
"re-match" the stat information of a file with the index, so that you
|
||||
can refresh the index for a file that hasn't been changed but where
|
||||
the stat entry is out of date.
|
||||
@ -464,60 +447,6 @@ command reads the index; while when `--[no-|force-]untracked-cache`
|
||||
are used, the untracked cache is immediately added to or removed from
|
||||
the index.
|
||||
|
||||
Before 2.17, the untracked cache had a bug where replacing a directory
|
||||
with a symlink to another directory could cause it to incorrectly show
|
||||
files tracked by git as untracked. See the "status: add a failing test
|
||||
showing a core.untrackedCache bug" commit to git.git. A workaround for
|
||||
that is (and this might work for other undiscovered bugs in the
|
||||
future):
|
||||
|
||||
----------------
|
||||
$ git -c core.untrackedCache=false status
|
||||
----------------
|
||||
|
||||
This bug has also been shown to affect non-symlink cases of replacing
|
||||
a directory with a file when it comes to the internal structures of
|
||||
the untracked cache, but no case has been reported where this resulted in
|
||||
wrong "git status" output.
|
||||
|
||||
There are also cases where existing indexes written by git versions
|
||||
before 2.17 will reference directories that don't exist anymore,
|
||||
potentially causing many "could not open directory" warnings to be
|
||||
printed on "git status". These are new warnings for existing issues
|
||||
that were previously silently discarded.
|
||||
|
||||
As with the bug described above the solution is to one-off do a "git
|
||||
status" run with `core.untrackedCache=false` to flush out the leftover
|
||||
bad data.
|
||||
|
||||
File System Monitor
|
||||
-------------------
|
||||
|
||||
This feature is intended to speed up git operations for repos that have
|
||||
large working directories.
|
||||
|
||||
It enables git to work together with a file system monitor (see the
|
||||
"fsmonitor-watchman" section of linkgit:githooks[5]) that can
|
||||
inform it as to what files have been modified. This enables git to avoid
|
||||
having to lstat() every file to find modified files.
|
||||
|
||||
When used in conjunction with the untracked cache, it can further improve
|
||||
performance by avoiding the cost of scanning the entire working directory
|
||||
looking for new files.
|
||||
|
||||
If you want to enable (or disable) this feature, it is easier to use
|
||||
the `core.fsmonitor` configuration variable (see
|
||||
linkgit:git-config[1]) than using the `--fsmonitor` option to
|
||||
`git update-index` in each repository, especially if you want to do so
|
||||
across all repositories you use, because you can set the configuration
|
||||
variable in your `$HOME/.gitconfig` just once and have it affect all
|
||||
repositories you touch.
|
||||
|
||||
When the `core.fsmonitor` configuration variable is changed, the
|
||||
file system monitor is added to or removed from the index the next time
|
||||
a command reads the index. When `--[no-]fsmonitor` are used, the file
|
||||
system monitor is immediately added to or removed from the index.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
|
@ -9,12 +9,10 @@ git-worktree - Manage multiple working trees
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git worktree add' [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<commit-ish>]
|
||||
'git worktree add' [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<branch>]
|
||||
'git worktree list' [--porcelain]
|
||||
'git worktree lock' [--reason <string>] <worktree>
|
||||
'git worktree move' <worktree> <new-path>
|
||||
'git worktree prune' [-n] [-v] [--expire <expire>]
|
||||
'git worktree remove' [--force] <worktree>
|
||||
'git worktree unlock' <worktree>
|
||||
|
||||
DESCRIPTION
|
||||
@ -36,6 +34,10 @@ The working tree's administrative files in the repository (see
|
||||
`git worktree prune` in the main or any linked working tree to
|
||||
clean up any stale administrative files.
|
||||
|
||||
If you move a linked working tree, you need to manually update the
|
||||
administrative files so that they do not get pruned automatically. See
|
||||
section "DETAILS" for more information.
|
||||
|
||||
If a linked working tree is stored on a portable device or network share
|
||||
which is not always mounted, you can prevent its administrative files from
|
||||
being pruned by issuing the `git worktree lock` command, optionally
|
||||
@ -43,23 +45,14 @@ specifying `--reason` to explain why the working tree is locked.
|
||||
|
||||
COMMANDS
|
||||
--------
|
||||
add <path> [<commit-ish>]::
|
||||
add <path> [<branch>]::
|
||||
|
||||
Create `<path>` and checkout `<commit-ish>` into it. The new working directory
|
||||
Create `<path>` and checkout `<branch>` into it. The new working directory
|
||||
is linked to the current repository, sharing everything except working
|
||||
directory specific files such as HEAD, index, etc. `-` may also be
|
||||
specified as `<commit-ish>`; it is synonymous with `@{-1}`.
|
||||
specified as `<branch>`; it is synonymous with `@{-1}`.
|
||||
+
|
||||
If <commit-ish> is a branch name (call it `<branch>`) and is not found,
|
||||
and neither `-b` nor `-B` nor `--detach` are used, but there does
|
||||
exist a tracking branch in exactly one remote (call it `<remote>`)
|
||||
with a matching name, treat as equivalent to:
|
||||
+
|
||||
------------
|
||||
$ git worktree add --track -b <branch> <path> <remote>/<branch>
|
||||
------------
|
||||
+
|
||||
If `<commit-ish>` is omitted and neither `-b` nor `-B` nor `--detach` used,
|
||||
If `<branch>` is omitted and neither `-b` nor `-B` nor `--detach` used,
|
||||
then, as a convenience, a new branch based at HEAD is created automatically,
|
||||
as if `-b $(basename <path>)` was specified.
|
||||
|
||||
@ -78,22 +71,10 @@ files from being pruned automatically. This also prevents it from
|
||||
being moved or deleted. Optionally, specify a reason for the lock
|
||||
with `--reason`.
|
||||
|
||||
move::
|
||||
|
||||
Move a working tree to a new location. Note that the main working tree
|
||||
or linked working trees containing submodules cannot be moved.
|
||||
|
||||
prune::
|
||||
|
||||
Prune working tree information in $GIT_DIR/worktrees.
|
||||
|
||||
remove::
|
||||
|
||||
Remove a working tree. Only clean working trees (no untracked files
|
||||
and no modification in tracked files) can be removed. Unclean working
|
||||
trees or ones with submodules can be removed with `--force`. The main
|
||||
working tree cannot be removed.
|
||||
|
||||
unlock::
|
||||
|
||||
Unlock a working tree, allowing it to be pruned, moved or deleted.
|
||||
@ -103,46 +84,29 @@ OPTIONS
|
||||
|
||||
-f::
|
||||
--force::
|
||||
By default, `add` refuses to create a new working tree when
|
||||
`<commit-ish>` is a branch name and is already checked out by
|
||||
another working tree and `remove` refuses to remove an unclean
|
||||
working tree. This option overrides that safeguard.
|
||||
By default, `add` refuses to create a new working tree when `<branch>`
|
||||
is already checked out by another working tree. This option overrides
|
||||
that safeguard.
|
||||
|
||||
-b <new-branch>::
|
||||
-B <new-branch>::
|
||||
With `add`, create a new branch named `<new-branch>` starting at
|
||||
`<commit-ish>`, and check out `<new-branch>` into the new working tree.
|
||||
If `<commit-ish>` is omitted, it defaults to HEAD.
|
||||
`<branch>`, and check out `<new-branch>` into the new working tree.
|
||||
If `<branch>` is omitted, it defaults to HEAD.
|
||||
By default, `-b` refuses to create a new branch if it already
|
||||
exists. `-B` overrides this safeguard, resetting `<new-branch>` to
|
||||
`<commit-ish>`.
|
||||
`<branch>`.
|
||||
|
||||
--detach::
|
||||
With `add`, detach HEAD in the new working tree. See "DETACHED HEAD"
|
||||
in linkgit:git-checkout[1].
|
||||
|
||||
--[no-]checkout::
|
||||
By default, `add` checks out `<commit-ish>`, however, `--no-checkout` can
|
||||
By default, `add` checks out `<branch>`, however, `--no-checkout` can
|
||||
be used to suppress checkout in order to make customizations,
|
||||
such as configuring sparse-checkout. See "Sparse checkout"
|
||||
in linkgit:git-read-tree[1].
|
||||
|
||||
--[no-]guess-remote::
|
||||
With `worktree add <path>`, without `<commit-ish>`, instead
|
||||
of creating a new branch from HEAD, if there exists a tracking
|
||||
branch in exactly one remote matching the basename of `<path>`,
|
||||
base the new branch on the remote-tracking branch, and mark
|
||||
the remote-tracking branch as "upstream" from the new branch.
|
||||
+
|
||||
This can also be set up as the default behaviour by using the
|
||||
`worktree.guessRemote` config option.
|
||||
|
||||
--[no-]track::
|
||||
When creating a new branch, if `<commit-ish>` is a branch,
|
||||
mark it as "upstream" from the new branch. This is the
|
||||
default if `<commit-ish>` is a remote-tracking branch. See
|
||||
"--track" in linkgit:git-branch[1] for details.
|
||||
|
||||
--lock::
|
||||
Keep the working tree locked after creation. This is the
|
||||
equivalent of `git worktree lock` after `git worktree add`,
|
||||
@ -208,7 +172,7 @@ thumb is do not make any assumption about whether a path belongs to
|
||||
$GIT_DIR or $GIT_COMMON_DIR when you need to directly access something
|
||||
inside $GIT_DIR. Use `git rev-parse --git-path` to get the final path.
|
||||
|
||||
If you manually move a linked working tree, you need to update the 'gitdir' file
|
||||
If you move a linked working tree, you need to update the 'gitdir' file
|
||||
in the entry's directory. For example, if a linked working tree is moved
|
||||
to `/newpath/test-next` and its `.git` file points to
|
||||
`/path/main/.git/worktrees/test-next`, then update
|
||||
@ -288,6 +252,13 @@ Multiple checkout in general is still experimental, and the support
|
||||
for submodules is incomplete. It is NOT recommended to make multiple
|
||||
checkouts of a superproject.
|
||||
|
||||
git-worktree could provide more automation for tasks currently
|
||||
performed manually, such as:
|
||||
|
||||
- `remove` to remove a linked working tree and its administrative files (and
|
||||
warn if the working tree is dirty)
|
||||
- `mv` to move or rename a working tree and update its administrative files
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -159,10 +159,6 @@ foo.bar= ...`) sets `foo.bar` to the empty string which `git config
|
||||
Add "icase" magic to all pathspec. This is equivalent to setting
|
||||
the `GIT_ICASE_PATHSPECS` environment variable to `1`.
|
||||
|
||||
--no-optional-locks::
|
||||
Do not perform optional operations that require locks. This is
|
||||
equivalent to setting the `GIT_OPTIONAL_LOCKS` to `0`.
|
||||
|
||||
GIT COMMANDS
|
||||
------------
|
||||
|
||||
@ -522,10 +518,11 @@ other
|
||||
If either of these environment variables is set then 'git fetch'
|
||||
and 'git push' will use the specified command instead of 'ssh'
|
||||
when they need to connect to a remote system.
|
||||
The command-line parameters passed to the configured command are
|
||||
determined by the ssh variant. See `ssh.variant` option in
|
||||
linkgit:git-config[1] for details.
|
||||
|
||||
The command will be given exactly two or four arguments: the
|
||||
'username@host' (or just 'host') from the URL and the shell
|
||||
command to execute on that remote system, optionally preceded by
|
||||
`-p` (literally) and the 'port' from the URL when it specifies
|
||||
something other than the default SSH port.
|
||||
+
|
||||
`$GIT_SSH_COMMAND` takes precedence over `$GIT_SSH`, and is interpreted
|
||||
by the shell, which allows additional arguments to be included.
|
||||
@ -594,10 +591,6 @@ into it.
|
||||
Unsetting the variable, or setting it to empty, "0" or
|
||||
"false" (case insensitive) disables trace messages.
|
||||
|
||||
`GIT_TRACE_FSMONITOR`::
|
||||
Enables trace messages for the filesystem monitor extension.
|
||||
See `GIT_TRACE` for available trace output options.
|
||||
|
||||
`GIT_TRACE_PACK_ACCESS`::
|
||||
Enables trace messages for all accesses to any packs. For each
|
||||
access, the pack file name and an offset in the pack is
|
||||
@ -646,16 +639,6 @@ of clones and fetches.
|
||||
variable.
|
||||
See `GIT_TRACE` for available trace output options.
|
||||
|
||||
`GIT_TRACE_CURL_NO_DATA`::
|
||||
When a curl trace is enabled (see `GIT_TRACE_CURL` above), do not dump
|
||||
data (that is, only dump info lines and headers).
|
||||
|
||||
`GIT_REDACT_COOKIES`::
|
||||
This can be set to a comma-separated list of strings. When a curl trace
|
||||
is enabled (see `GIT_TRACE_CURL` above), whenever a "Cookies:" header
|
||||
sent by the client is dumped, values of cookies whose key is in that
|
||||
list (case-sensitive) are redacted.
|
||||
|
||||
`GIT_LITERAL_PATHSPECS`::
|
||||
Setting this variable to `1` will cause Git to treat all
|
||||
pathspecs literally, rather than as glob patterns. For example,
|
||||
@ -714,47 +697,6 @@ of clones and fetches.
|
||||
which feed potentially-untrusted URLS to git commands. See
|
||||
linkgit:git-config[1] for more details.
|
||||
|
||||
`GIT_PROTOCOL`::
|
||||
For internal use only. Used in handshaking the wire protocol.
|
||||
Contains a colon ':' separated list of keys with optional values
|
||||
'key[=value]'. Presence of unknown keys and values must be
|
||||
ignored.
|
||||
|
||||
`GIT_OPTIONAL_LOCKS`::
|
||||
If set to `0`, Git will complete any requested operation without
|
||||
performing any optional sub-operations that require taking a lock.
|
||||
For example, this will prevent `git status` from refreshing the
|
||||
index as a side effect. This is useful for processes running in
|
||||
the background which do not want to cause lock contention with
|
||||
other operations on the repository. Defaults to `1`.
|
||||
|
||||
`GIT_REDIRECT_STDIN`::
|
||||
`GIT_REDIRECT_STDOUT`::
|
||||
`GIT_REDIRECT_STDERR`::
|
||||
Windows-only: allow redirecting the standard input/output/error
|
||||
handles to paths specified by the environment variables. This is
|
||||
particularly useful in multi-threaded applications where the
|
||||
canonical way to pass standard handles via `CreateProcess()` is
|
||||
not an option because it would require the handles to be marked
|
||||
inheritable (and consequently *every* spawned process would
|
||||
inherit them, possibly blocking regular Git operations). The
|
||||
primary intended use case is to use named pipes for communication
|
||||
(e.g. `\\.\pipe\my-git-stdin-123`).
|
||||
+
|
||||
Two special values are supported: `off` will simply close the
|
||||
corresponding standard handle, and if `GIT_REDIRECT_STDERR` is
|
||||
`2>&1`, standard error will be redirected to the same handle as
|
||||
standard output.
|
||||
|
||||
`GIT_PRINT_SHA1_ELLIPSIS` (deprecated)::
|
||||
If set to `yes`, print an ellipsis following an
|
||||
(abbreviated) SHA-1 value. This affects indications of
|
||||
detached HEADs (linkgit:git-checkout[1]) and the raw
|
||||
diff output (linkgit:git-diff[1]). Printing an
|
||||
ellipsis in the cases mentioned is no longer considered
|
||||
adequate and support for it is likely to be removed in the
|
||||
foreseeable future (along with the variable).
|
||||
|
||||
Discussion[[Discussion]]
|
||||
------------------------
|
||||
|
||||
@ -849,9 +791,6 @@ Report bugs to the Git mailing list <git@vger.kernel.org> where the
|
||||
development and maintenance is primarily done. You do not have to be
|
||||
subscribed to the list to send a message there.
|
||||
|
||||
Issues which are security relevant should be disclosed privately to
|
||||
the Git Security mailing list <git-security@googlegroups.com>.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:gittutorial[7], linkgit:gittutorial-2[7],
|
||||
|
@ -56,16 +56,9 @@ Unspecified::
|
||||
|
||||
When more than one pattern matches the path, a later line
|
||||
overrides an earlier line. This overriding is done per
|
||||
attribute.
|
||||
|
||||
The rules by which the pattern matches paths are the same as in
|
||||
`.gitignore` files (see linkgit:gitignore[5]), with a few exceptions:
|
||||
|
||||
- negative patterns are forbidden
|
||||
|
||||
- patterns that match a directory do not recursively match paths
|
||||
inside that directory (so using the trailing-slash `path/` syntax is
|
||||
pointless in an attributes file; use `path/**` instead)
|
||||
attribute. The rules how the pattern matches paths are the
|
||||
same as in `.gitignore` files; see linkgit:gitignore[5].
|
||||
Unlike `.gitignore`, negative patterns are forbidden.
|
||||
|
||||
When deciding what attributes are assigned to a path, Git
|
||||
consults `$GIT_DIR/info/attributes` file (which has the highest
|
||||
@ -239,7 +232,8 @@ From a clean working directory:
|
||||
|
||||
-------------------------------------------------
|
||||
$ echo "* text=auto" >.gitattributes
|
||||
$ git add --renormalize .
|
||||
$ git read-tree --empty # Clean index, force re-scan of working directory
|
||||
$ git add .
|
||||
$ git status # Show files that will be normalized
|
||||
$ git commit -m "Introduce end-of-line normalization"
|
||||
-------------------------------------------------
|
||||
@ -334,9 +328,6 @@ You can declare that a filter turns a content that by itself is unusable
|
||||
into a usable content by setting the filter.<driver>.required configuration
|
||||
variable to `true`.
|
||||
|
||||
Note: Whenever the clean filter is changed, the repo should be renormalized:
|
||||
$ git add --renormalize .
|
||||
|
||||
For example, in .gitattributes, you would assign the `filter`
|
||||
attribute for paths.
|
||||
|
||||
@ -399,14 +390,46 @@ Long Running Filter Process
|
||||
If the filter command (a string value) is defined via
|
||||
`filter.<driver>.process` then Git can process all blobs with a
|
||||
single filter invocation for the entire life of a single Git
|
||||
command. This is achieved by using the long-running process protocol
|
||||
(described in technical/long-running-process-protocol.txt).
|
||||
command. This is achieved by using a packet format (pkt-line,
|
||||
see technical/protocol-common.txt) based protocol over standard
|
||||
input and standard output as follows. All packets, except for the
|
||||
"*CONTENT" packets and the "0000" flush packet, are considered
|
||||
text and therefore are terminated by a LF.
|
||||
|
||||
When Git encounters the first file that needs to be cleaned or smudged,
|
||||
it starts the filter and performs the handshake. In the handshake, the
|
||||
welcome message sent by Git is "git-filter-client", only version 2 is
|
||||
suppported, and the supported capabilities are "clean", "smudge", and
|
||||
"delay".
|
||||
Git starts the filter when it encounters the first file
|
||||
that needs to be cleaned or smudged. After the filter started
|
||||
Git sends a welcome message ("git-filter-client"), a list of supported
|
||||
protocol version numbers, and a flush packet. Git expects to read a welcome
|
||||
response message ("git-filter-server"), exactly one protocol version number
|
||||
from the previously sent list, and a flush packet. All further
|
||||
communication will be based on the selected version. The remaining
|
||||
protocol description below documents "version=2". Please note that
|
||||
"version=42" in the example below does not exist and is only there
|
||||
to illustrate how the protocol would look like with more than one
|
||||
version.
|
||||
|
||||
After the version negotiation Git sends a list of all capabilities that
|
||||
it supports and a flush packet. Git expects to read a list of desired
|
||||
capabilities, which must be a subset of the supported capabilities list,
|
||||
and a flush packet as response:
|
||||
------------------------
|
||||
packet: git> git-filter-client
|
||||
packet: git> version=2
|
||||
packet: git> version=42
|
||||
packet: git> 0000
|
||||
packet: git< git-filter-server
|
||||
packet: git< version=2
|
||||
packet: git< 0000
|
||||
packet: git> capability=clean
|
||||
packet: git> capability=smudge
|
||||
packet: git> capability=not-yet-invented
|
||||
packet: git> 0000
|
||||
packet: git< capability=clean
|
||||
packet: git< capability=smudge
|
||||
packet: git< 0000
|
||||
------------------------
|
||||
Supported filter capabilities in version 2 are "clean", "smudge",
|
||||
and "delay".
|
||||
|
||||
Afterwards Git sends a list of "key=value" pairs terminated with
|
||||
a flush packet. The list will contain at least the filter command
|
||||
@ -492,6 +515,12 @@ the protocol then Git will stop the filter process and restart it
|
||||
with the next file that needs to be processed. Depending on the
|
||||
`filter.<driver>.required` flag Git will interpret that as error.
|
||||
|
||||
After the filter has processed a command it is expected to wait for
|
||||
a "key=value" list containing the next command. Git will close
|
||||
the command pipe on exit. The filter is expected to detect EOF
|
||||
and exit gracefully on its own. Git will wait until the filter
|
||||
process has stopped.
|
||||
|
||||
Delay
|
||||
^^^^^
|
||||
|
||||
@ -721,8 +750,6 @@ patterns are available:
|
||||
|
||||
- `fountain` suitable for Fountain documents.
|
||||
|
||||
- `golang` suitable for source code in the Go language.
|
||||
|
||||
- `html` suitable for HTML/XHTML documents.
|
||||
|
||||
- `java` suitable for source code in the Java language.
|
||||
|
@ -631,7 +631,7 @@ So after you do a `cp -a` to create a new copy, you'll want to do
|
||||
$ git update-index --refresh
|
||||
----------------
|
||||
+
|
||||
in the new repository to make sure that the index file is up to date.
|
||||
in the new repository to make sure that the index file is up-to-date.
|
||||
|
||||
Note that the second point is true even across machines. You can
|
||||
duplicate a remote Git repository with *any* regular copy mechanism, be it
|
||||
@ -701,7 +701,7 @@ $ git checkout-index -u -a
|
||||
----------------
|
||||
|
||||
where the `-u` flag means that you want the checkout to keep the index
|
||||
up to date (so that you don't have to refresh it afterward), and the
|
||||
up-to-date (so that you don't have to refresh it afterward), and the
|
||||
`-a` flag means "check out all files" (if you have a stale copy or an
|
||||
older version of a checked out tree you may also need to add the `-f`
|
||||
flag first, to tell 'git checkout-index' to *force* overwriting of any old
|
||||
@ -1283,7 +1283,7 @@ run a single command, 'git-receive-pack'.
|
||||
|
||||
First, you need to create an empty repository on the remote
|
||||
machine that will house your public repository. This empty
|
||||
repository will be populated and be kept up to date by pushing
|
||||
repository will be populated and be kept up-to-date by pushing
|
||||
into it later. Obviously, this repository creation needs to be
|
||||
done only once.
|
||||
|
||||
@ -1450,7 +1450,7 @@ transport protocols (HTTP), you need to keep this repository
|
||||
would contain a call to 'git update-server-info'
|
||||
but you need to manually enable the hook with
|
||||
`mv post-update.sample post-update`. This makes sure
|
||||
'git update-server-info' keeps the necessary files up to date.
|
||||
'git update-server-info' keeps the necessary files up-to-date.
|
||||
|
||||
3. Push into the public repository from your primary
|
||||
repository.
|
||||
|
@ -121,16 +121,17 @@ it is not suppressed by the `--no-verify` option. A non-zero exit
|
||||
means a failure of the hook and aborts the commit. It should not
|
||||
be used as replacement for pre-commit hook.
|
||||
|
||||
The sample `prepare-commit-msg` hook that comes with Git removes the
|
||||
help message found in the commented portion of the commit template.
|
||||
The sample `prepare-commit-msg` hook that comes with Git comments
|
||||
out the `Conflicts:` part of a merge's commit message.
|
||||
|
||||
commit-msg
|
||||
~~~~~~~~~~
|
||||
|
||||
This hook is invoked by 'git commit' and 'git merge', and can be
|
||||
bypassed with the `--no-verify` option. It takes a single parameter,
|
||||
the name of the file that holds the proposed commit log message.
|
||||
Exiting with a non-zero status causes the command to abort.
|
||||
This hook is invoked by 'git commit', and can be bypassed
|
||||
with the `--no-verify` option. It takes a single parameter, the
|
||||
name of the file that holds the proposed commit log message.
|
||||
Exiting with a non-zero status causes the 'git commit' to
|
||||
abort.
|
||||
|
||||
The hook is allowed to edit the message file in place, and can be used
|
||||
to normalize the message into some project standard format. It
|
||||
@ -170,8 +171,7 @@ This hook cannot affect the outcome of 'git checkout'.
|
||||
|
||||
It is also run after 'git clone', unless the --no-checkout (-n) option is
|
||||
used. The first parameter given to the hook is the null-ref, the second the
|
||||
ref of the new HEAD and the flag is always 1. Likewise for 'git worktree add'
|
||||
unless --no-checkout is used.
|
||||
ref of the new HEAD and the flag is always 1.
|
||||
|
||||
This hook can be used to perform repository validity checks, auto-display
|
||||
differences from the previous HEAD if different, or set working dir metadata
|
||||
@ -224,8 +224,8 @@ to the user by writing to standard error.
|
||||
pre-receive
|
||||
~~~~~~~~~~~
|
||||
|
||||
This hook is invoked by 'git-receive-pack' when it reacts to
|
||||
'git push' and updates reference(s) in its repository.
|
||||
This hook is invoked by 'git-receive-pack' on the remote repository,
|
||||
which happens when a 'git push' is done on a local repository.
|
||||
Just before starting to update refs on the remote repository, the
|
||||
pre-receive hook is invoked. Its exit status determines the success
|
||||
or failure of the update.
|
||||
@ -265,8 +265,8 @@ linkgit:git-receive-pack[1] for some caveats.
|
||||
update
|
||||
~~~~~~
|
||||
|
||||
This hook is invoked by 'git-receive-pack' when it reacts to
|
||||
'git push' and updates reference(s) in its repository.
|
||||
This hook is invoked by 'git-receive-pack' on the remote repository,
|
||||
which happens when a 'git push' is done on a local repository.
|
||||
Just before updating the ref on the remote repository, the update hook
|
||||
is invoked. Its exit status determines the success or failure of
|
||||
the ref update.
|
||||
@ -310,8 +310,8 @@ unannotated tags to be pushed.
|
||||
post-receive
|
||||
~~~~~~~~~~~~
|
||||
|
||||
This hook is invoked by 'git-receive-pack' when it reacts to
|
||||
'git push' and updates reference(s) in its repository.
|
||||
This hook is invoked by 'git-receive-pack' on the remote repository,
|
||||
which happens when a 'git push' is done on a local repository.
|
||||
It executes on the remote repository once after all the refs have
|
||||
been updated.
|
||||
|
||||
@ -349,8 +349,8 @@ will be set to zero, `GIT_PUSH_OPTION_COUNT=0`.
|
||||
post-update
|
||||
~~~~~~~~~~~
|
||||
|
||||
This hook is invoked by 'git-receive-pack' when it reacts to
|
||||
'git push' and updates reference(s) in its repository.
|
||||
This hook is invoked by 'git-receive-pack' on the remote repository,
|
||||
which happens when a 'git push' is done on a local repository.
|
||||
It executes on the remote repository once after all the refs have
|
||||
been updated.
|
||||
|
||||
@ -369,7 +369,7 @@ them.
|
||||
|
||||
When enabled, the default 'post-update' hook runs
|
||||
'git update-server-info' to keep the information used by dumb
|
||||
transports (e.g., HTTP) up to date. If you are publishing
|
||||
transports (e.g., HTTP) up-to-date. If you are publishing
|
||||
a Git repository that is accessible via HTTP, you should
|
||||
probably enable this hook.
|
||||
|
||||
@ -380,8 +380,8 @@ for the user.
|
||||
push-to-checkout
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
This hook is invoked by 'git-receive-pack' when it reacts to
|
||||
'git push' and updates reference(s) in its repository, and when
|
||||
This hook is invoked by 'git-receive-pack' on the remote repository,
|
||||
which happens when a 'git push' is done on a local repository, when
|
||||
the push tries to update the branch that is currently checked out
|
||||
and the `receive.denyCurrentBranch` configuration variable is set to
|
||||
`updateInstead`. Such a push by default is refused if the working
|
||||
@ -455,34 +455,6 @@ the name of the file that holds the e-mail to be sent. Exiting with a
|
||||
non-zero status causes 'git send-email' to abort before sending any
|
||||
e-mails.
|
||||
|
||||
fsmonitor-watchman
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This hook is invoked when the configuration option core.fsmonitor is
|
||||
set to .git/hooks/fsmonitor-watchman. It takes two arguments, a version
|
||||
(currently 1) and the time in elapsed nanoseconds since midnight,
|
||||
January 1, 1970.
|
||||
|
||||
The hook should output to stdout the list of all files in the working
|
||||
directory that may have changed since the requested time. The logic
|
||||
should be inclusive so that it does not miss any potential changes.
|
||||
The paths should be relative to the root of the working directory
|
||||
and be separated by a single NUL.
|
||||
|
||||
It is OK to include files which have not actually changed. All changes
|
||||
including newly-created and deleted files should be included. When
|
||||
files are renamed, both the old and the new name should be included.
|
||||
|
||||
Git will limit what files it checks for changes as well as which
|
||||
directories are checked for untracked files based on the path names
|
||||
given.
|
||||
|
||||
An optimized way to tell git "all files have changed" is to return
|
||||
the filename '/'.
|
||||
|
||||
The exit status determines whether git will use the data from the
|
||||
hook to limit its search. On error, it will fall back to verifying
|
||||
all files and folders.
|
||||
|
||||
GIT
|
||||
---
|
||||
|
@ -102,11 +102,12 @@ PATTERN FORMAT
|
||||
(relative to the toplevel of the work tree if not from a
|
||||
`.gitignore` file).
|
||||
|
||||
- Otherwise, Git treats the pattern as a shell glob: "`*`" matches
|
||||
anything except "`/`", "`?`" matches any one character except "`/`"
|
||||
and "`[]`" matches one character in a selected range. See
|
||||
fnmatch(3) and the FNM_PATHNAME flag for a more detailed
|
||||
description.
|
||||
- Otherwise, Git treats the pattern as a shell glob suitable
|
||||
for consumption by fnmatch(3) with the FNM_PATHNAME flag:
|
||||
wildcards in the pattern will not match a / in the pathname.
|
||||
For example, "Documentation/{asterisk}.html" matches
|
||||
"Documentation/git.html" but not "Documentation/ppc/ppc.html"
|
||||
or "tools/perf/Documentation/perf.html".
|
||||
|
||||
- A leading slash matches the beginning of the pathname.
|
||||
For example, "/{asterisk}.c" matches "cat-file.c" but not
|
||||
|
@ -466,13 +466,6 @@ set by Git if the remote helper has the 'option' capability.
|
||||
Transmit <string> as a push option. As the push option
|
||||
must not contain LF or NUL characters, the string is not encoded.
|
||||
|
||||
'option from-promisor' {'true'|'false'}::
|
||||
Indicate that these objects are being fetched from a promisor.
|
||||
|
||||
'option no-dependents' {'true'|'false'}::
|
||||
Indicate that only the objects wanted need to be fetched, not
|
||||
their dependents.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-remote[1]
|
||||
|
@ -71,7 +71,7 @@ objects/info/packs::
|
||||
This file is to help dumb transports discover what packs
|
||||
are available in this object store. Whenever a pack is
|
||||
added or removed, `git update-server-info` should be run
|
||||
to keep this file up to date if the repository is
|
||||
to keep this file up-to-date if the repository is
|
||||
published for dumb transports. 'git repack' does this
|
||||
by default.
|
||||
|
||||
@ -208,10 +208,6 @@ info/exclude::
|
||||
'git clean' look at it but the core Git commands do not look
|
||||
at it. See also: linkgit:gitignore[5].
|
||||
|
||||
info/attributes::
|
||||
Defines which attributes to assign to a path, similar to per-directory
|
||||
`.gitattributes` files. See also: linkgit:gitattributes[5].
|
||||
|
||||
info/sparse-checkout::
|
||||
This file stores sparse checkout patterns.
|
||||
See also: linkgit:git-read-tree[1].
|
||||
|
@ -24,7 +24,7 @@ On the filesystem, a submodule usually (but not always - see FORMS below)
|
||||
consists of (i) a Git directory located under the `$GIT_DIR/modules/`
|
||||
directory of its superproject, (ii) a working directory inside the
|
||||
superproject's working directory, and a `.git` file at the root of
|
||||
the submodule's working directory pointing to (i).
|
||||
the submodule’s working directory pointing to (i).
|
||||
|
||||
Assuming the submodule has a Git directory at `$GIT_DIR/modules/foo/`
|
||||
and a working directory at `path/to/bar/`, the superproject tracks the
|
||||
@ -33,11 +33,11 @@ in its `.gitmodules` file (see linkgit:gitmodules[5]) of the form
|
||||
`submodule.foo.path = path/to/bar`.
|
||||
|
||||
The `gitlink` entry contains the object name of the commit that the
|
||||
superproject expects the submodule's working directory to be at.
|
||||
superproject expects the submodule’s working directory to be at.
|
||||
|
||||
The section `submodule.foo.*` in the `.gitmodules` file gives additional
|
||||
hints to Git's porcelain layer. For example, the `submodule.foo.url`
|
||||
setting specifies where to obtain the submodule.
|
||||
hints to Gits porcelain layer such as where to obtain the submodule via
|
||||
the `submodule.foo.url` setting.
|
||||
|
||||
Submodules can be used for at least two different use cases:
|
||||
|
||||
@ -51,21 +51,18 @@ Submodules can be used for at least two different use cases:
|
||||
|
||||
2. Splitting a (logically single) project into multiple
|
||||
repositories and tying them back together. This can be used to
|
||||
overcome current limitations of Git's implementation to have
|
||||
overcome current limitations of Gits implementation to have
|
||||
finer grained access:
|
||||
|
||||
* Size of the Git repository:
|
||||
* Size of the git repository:
|
||||
In its current form Git scales up poorly for large repositories containing
|
||||
content that is not compressed by delta computation between trees.
|
||||
For example, you can use submodules to hold large binary assets
|
||||
and these repositories can be shallowly cloned such that you do not
|
||||
However you can also use submodules to e.g. hold large binary assets
|
||||
and these repositories are then shallowly cloned such that you do not
|
||||
have a large history locally.
|
||||
* Transfer size:
|
||||
In its current form Git requires the whole working tree present. It
|
||||
does not allow partial trees to be transferred in fetch or clone.
|
||||
If the project you work on consists of multiple repositories tied
|
||||
together as submodules in a superproject, you can avoid fetching the
|
||||
working trees of the repositories you are not interested in.
|
||||
* Access control:
|
||||
By restricting user access to submodules, this can be used to implement
|
||||
read/write policies for different users.
|
||||
@ -76,10 +73,9 @@ The configuration of submodules
|
||||
Submodule operations can be configured using the following mechanisms
|
||||
(from highest to lowest precedence):
|
||||
|
||||
* The command line for those commands that support taking submodules
|
||||
as part of their pathspecs. Most commands have a boolean flag
|
||||
`--recurse-submodules` which specify whether to recurse into submodules.
|
||||
Examples are `grep` and `checkout`.
|
||||
* The command line for those commands that support taking submodule specs.
|
||||
Most commands have a boolean flag '--recurse-submodules' whether to
|
||||
recurse into submodules. Examples are `ls-files` or `checkout`.
|
||||
Some commands take enums, such as `fetch` and `push`, where you can
|
||||
specify how submodules are affected.
|
||||
|
||||
@ -91,8 +87,8 @@ Submodule operations can be configured using the following mechanisms
|
||||
For example an effect from the submodule's `.gitignore` file
|
||||
would be observed when you run `git status --ignore-submodules=none` in
|
||||
the superproject. This collects information from the submodule's working
|
||||
directory by running `status` in the submodule while paying attention
|
||||
to the `.gitignore` file of the submodule.
|
||||
directory by running `status` in the submodule, which does pay attention
|
||||
to its `.gitignore` file.
|
||||
+
|
||||
The submodule's `$GIT_DIR/config` file would come into play when running
|
||||
`git push --recurse-submodules=check` in the superproject, as this would
|
||||
@ -101,20 +97,20 @@ remotes are configured in the submodule as usual in the `$GIT_DIR/config`
|
||||
file.
|
||||
|
||||
* The configuration file `$GIT_DIR/config` in the superproject.
|
||||
Git only recurses into active submodules (see "ACTIVE SUBMODULES"
|
||||
section below).
|
||||
Typical configuration at this place is controlling if a submodule
|
||||
is recursed into at all via the `active` flag for example.
|
||||
+
|
||||
If the submodule is not yet initialized, then the configuration
|
||||
inside the submodule does not exist yet, so where to
|
||||
inside the submodule does not exist yet, so configuration where to
|
||||
obtain the submodule from is configured here for example.
|
||||
|
||||
* The `.gitmodules` file inside the superproject. A project usually
|
||||
* the `.gitmodules` file inside the superproject. Additionally to the
|
||||
required mapping between submodule's name and path, a project usually
|
||||
uses this file to suggest defaults for the upstream collection
|
||||
of repositories for the mapping that is required between a
|
||||
submodule's name and its path.
|
||||
of repositories.
|
||||
+
|
||||
This file mainly serves as the mapping between the name and path of submodules
|
||||
in the superproject, such that the submodule's Git directory can be
|
||||
This file mainly serves as the mapping between name and path in
|
||||
the superproject, such that the submodule's git directory can be
|
||||
located.
|
||||
+
|
||||
If the submodule has never been initialized, this is the only place
|
||||
@ -136,27 +132,27 @@ using older versions of Git.
|
||||
+
|
||||
It is possible to construct these old form repositories manually.
|
||||
+
|
||||
When deinitialized or deleted (see below), the submodule's Git
|
||||
When deinitialized or deleted (see below), the submodule’s Git
|
||||
directory is automatically moved to `$GIT_DIR/modules/<name>/`
|
||||
of the superproject.
|
||||
|
||||
* Deinitialized submodule: A `gitlink`, and a `.gitmodules` entry,
|
||||
but no submodule working directory. The submodule's Git directory
|
||||
may be there as after deinitializing the Git directory is kept around.
|
||||
but no submodule working directory. The submodule’s git directory
|
||||
may be there as after deinitializing the git directory is kept around.
|
||||
The directory which is supposed to be the working directory is empty instead.
|
||||
+
|
||||
A submodule can be deinitialized by running `git submodule deinit`.
|
||||
Besides emptying the working directory, this command only modifies
|
||||
the superproject's `$GIT_DIR/config` file, so the superproject's history
|
||||
the superproject’s `$GIT_DIR/config` file, so the superproject’s history
|
||||
is not affected. This can be undone using `git submodule init`.
|
||||
|
||||
* Deleted submodule: A submodule can be deleted by running
|
||||
`git rm <submodule path> && git commit`. This can be undone
|
||||
using `git revert`.
|
||||
+
|
||||
The deletion removes the superproject's tracking data, which are
|
||||
The deletion removes the superproject’s tracking data, which are
|
||||
both the `gitlink` entry and the section in the `.gitmodules` file.
|
||||
The submodule's working directory is removed from the file
|
||||
The submodule’s working directory is removed from the file
|
||||
system, but the Git directory is kept around as it to make it
|
||||
possible to checkout past commits without requiring fetching
|
||||
from another repository.
|
||||
@ -164,60 +160,6 @@ from another repository.
|
||||
To completely remove a submodule, manually delete
|
||||
`$GIT_DIR/modules/<name>/`.
|
||||
|
||||
ACTIVE SUBMODULES
|
||||
-----------------
|
||||
|
||||
A submodule is considered active,
|
||||
|
||||
(a) if `submodule.<name>.active` is set to `true`
|
||||
or
|
||||
(b) if the submodule's path matches the pathspec in `submodule.active`
|
||||
or
|
||||
(c) if `submodule.<name>.url` is set.
|
||||
|
||||
and these are evaluated in this order.
|
||||
|
||||
For example:
|
||||
|
||||
[submodule "foo"]
|
||||
active = false
|
||||
url = https://example.org/foo
|
||||
[submodule "bar"]
|
||||
active = true
|
||||
url = https://example.org/bar
|
||||
[submodule "baz"]
|
||||
url = https://example.org/baz
|
||||
|
||||
In the above config only the submodule 'bar' and 'baz' are active,
|
||||
'bar' due to (a) and 'baz' due to (c). 'foo' is inactive because
|
||||
(a) takes precedence over (c)
|
||||
|
||||
Note that (c) is a historical artefact and will be ignored if the
|
||||
(a) and (b) specify that the submodule is not active. In other words,
|
||||
if we have an `submodule.<name>.active` set to `false` or if the
|
||||
submodule's path is excluded in the pathspec in `submodule.active`, the
|
||||
url doesn't matter whether it is present or not. This is illustrated in
|
||||
the example that follows.
|
||||
|
||||
[submodule "foo"]
|
||||
active = true
|
||||
url = https://example.org/foo
|
||||
[submodule "bar"]
|
||||
url = https://example.org/bar
|
||||
[submodule "baz"]
|
||||
url = https://example.org/baz
|
||||
[submodule "bob"]
|
||||
ignore = true
|
||||
[submodule]
|
||||
active = b*
|
||||
active = :(exclude) baz
|
||||
|
||||
In here all submodules except 'baz' (foo, bar, bob) are active.
|
||||
'foo' due to its own active flag and all the others due to the
|
||||
submodule active pathspec, which specifies that any submodule
|
||||
starting with 'b' except 'baz' are also active, regardless of the
|
||||
presence of the .url field.
|
||||
|
||||
Workflow for a third party library
|
||||
----------------------------------
|
||||
|
||||
|
@ -109,7 +109,7 @@ summary of the situation with 'git status':
|
||||
$ git status
|
||||
On branch master
|
||||
Changes to be committed:
|
||||
Your branch is up to date with 'origin/master'.
|
||||
Your branch is up-to-date with 'origin/master'.
|
||||
(use "git reset HEAD <file>..." to unstage)
|
||||
|
||||
modified: file1
|
||||
|
@ -40,7 +40,7 @@ beginning. It is always easier to squash a few commits together than
|
||||
to split one big commit into several. Don't be afraid of making too
|
||||
small or imperfect steps along the way. You can always go back later
|
||||
and edit the commits with `git rebase --interactive` before you
|
||||
publish them. You can use `git stash push --keep-index` to run the
|
||||
publish them. You can use `git stash save --keep-index` to run the
|
||||
test suite independent of other uncommitted changes; see the EXAMPLES
|
||||
section of linkgit:git-stash[1].
|
||||
|
||||
@ -407,8 +407,8 @@ follows.
|
||||
`git pull <url> <branch>`
|
||||
=====================================
|
||||
|
||||
Occasionally, the maintainer may get merge conflicts when they try to
|
||||
pull changes from downstream. In this case, they can ask downstream to
|
||||
Occasionally, the maintainer may get merge conflicts when he tries to
|
||||
pull changes from downstream. In this case, he can ask downstream to
|
||||
do the merge and resolve the conflicts themselves (perhaps they will
|
||||
know better how to resolve them). It is one of the rare cases where
|
||||
downstream 'should' merge from upstream.
|
||||
|
@ -3,12 +3,11 @@
|
||||
|
||||
repository=${1?repository}
|
||||
destdir=${2?destination}
|
||||
GIT_MAN_REF=${3?master}
|
||||
|
||||
GIT_DIR=
|
||||
head=master GIT_DIR=
|
||||
for d in "$repository/.git" "$repository"
|
||||
do
|
||||
if GIT_DIR="$d" git rev-parse "$GIT_MAN_REF" >/dev/null 2>&1
|
||||
if GIT_DIR="$d" git rev-parse refs/heads/master >/dev/null 2>&1
|
||||
then
|
||||
GIT_DIR="$d"
|
||||
export GIT_DIR
|
||||
@ -28,12 +27,12 @@ export GIT_INDEX_FILE GIT_WORK_TREE
|
||||
rm -f "$GIT_INDEX_FILE"
|
||||
trap 'rm -f "$GIT_INDEX_FILE"' 0
|
||||
|
||||
git read-tree "$GIT_MAN_REF"
|
||||
git read-tree $head
|
||||
git checkout-index -a -f --prefix="$destdir"/
|
||||
|
||||
if test -n "$GZ"
|
||||
then
|
||||
git ls-tree -r --name-only "$GIT_MAN_REF" |
|
||||
git ls-tree -r --name-only $head |
|
||||
xargs printf "$destdir/%s\n" |
|
||||
xargs gzip -f
|
||||
fi
|
||||
|
@ -26,10 +26,6 @@ merge.ff::
|
||||
allowed (equivalent to giving the `--ff-only` option from the
|
||||
command line).
|
||||
|
||||
merge.verifySignatures::
|
||||
If true, this is equivalent to the --verify-signatures command
|
||||
line option. See linkgit:git-merge[1] for details.
|
||||
|
||||
include::fmt-merge-msg-config.txt[]
|
||||
|
||||
merge.renameLimit::
|
||||
|
@ -35,20 +35,13 @@ set to `no` at the beginning of them.
|
||||
--no-ff::
|
||||
Create a merge commit even when the merge resolves as a
|
||||
fast-forward. This is the default behaviour when merging an
|
||||
annotated (and possibly signed) tag that is not stored in
|
||||
its natural place in 'refs/tags/' hierarchy.
|
||||
annotated (and possibly signed) tag.
|
||||
|
||||
--ff-only::
|
||||
Refuse to merge and exit with a non-zero status unless the
|
||||
current `HEAD` is already up to date or the merge can be
|
||||
current `HEAD` is already up-to-date or the merge can be
|
||||
resolved as a fast-forward.
|
||||
|
||||
-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.
|
||||
|
||||
--log[=<n>]::
|
||||
--no-log::
|
||||
In addition to branch names, populate the log message with
|
||||
@ -58,16 +51,6 @@ set to `no` at the beginning of them.
|
||||
With --no-log do not list one-line descriptions from the
|
||||
actual commits being merged.
|
||||
|
||||
--signoff::
|
||||
--no-signoff::
|
||||
Add Signed-off-by line by the committer at the end of the commit
|
||||
log message. The meaning of a signoff depends on the project,
|
||||
but it typically certifies that committer has
|
||||
the rights to submit this work under the same license and
|
||||
agrees to a Developer Certificate of Origin
|
||||
(see http://developercertificate.org/ for more information).
|
||||
+
|
||||
With --no-signoff do not add a Signed-off-by line.
|
||||
|
||||
--stat::
|
||||
-n::
|
||||
|
@ -40,7 +40,7 @@ the other tree did, declaring 'our' history contains all that happened in it.
|
||||
|
||||
theirs;;
|
||||
This is the opposite of 'ours'; note that, unlike 'ours', there is
|
||||
no 'theirs' merge strategy to confuse this merge option with.
|
||||
no 'theirs' merge stragegy to confuse this merge option with.
|
||||
|
||||
patience;;
|
||||
With this option, 'merge-recursive' spends a little extra time
|
||||
@ -58,12 +58,11 @@ diff-algorithm=[patience|minimal|histogram|myers];;
|
||||
ignore-space-change;;
|
||||
ignore-all-space;;
|
||||
ignore-space-at-eol;;
|
||||
ignore-cr-at-eol;;
|
||||
Treats lines with the indicated type of whitespace change as
|
||||
unchanged for the sake of a three-way merge. Whitespace
|
||||
changes mixed with other changes to a line are not ignored.
|
||||
See also linkgit:git-diff[1] `-b`, `-w`,
|
||||
`--ignore-space-at-eol`, and `--ignore-cr-at-eol`.
|
||||
See also linkgit:git-diff[1] `-b`, `-w`, and
|
||||
`--ignore-space-at-eol`.
|
||||
+
|
||||
* If 'their' version only introduces whitespace changes to a line,
|
||||
'our' version is used;
|
||||
|
@ -202,15 +202,10 @@ endif::git-rev-list[]
|
||||
- '%>>(<N>)', '%>>|(<N>)': similar to '%>(<N>)', '%>|(<N>)'
|
||||
respectively, except that if the next placeholder takes more spaces
|
||||
than given and there are spaces on its left, use those spaces
|
||||
- '%><(<N>)', '%><|(<N>)': similar to '%<(<N>)', '%<|(<N>)'
|
||||
- '%><(<N>)', '%><|(<N>)': similar to '% <(<N>)', '%<|(<N>)'
|
||||
respectively, but padding both sides (i.e. the text is centered)
|
||||
- %(trailers[:options]): display the trailers of the body as interpreted
|
||||
by linkgit:git-interpret-trailers[1]. The `trailers` string may be
|
||||
followed by a colon and zero or more comma-separated options. If the
|
||||
`only` option is given, omit non-trailer lines from the trailer block.
|
||||
If the `unfold` option is given, behave as if interpret-trailer's
|
||||
`--unfold` option was given. E.g., `%(trailers:only,unfold)` to do
|
||||
both.
|
||||
- %(trailers): display the trailers of the body as interpreted by
|
||||
linkgit:git-interpret-trailers[1]
|
||||
|
||||
NOTE: Some placeholders may depend on other options given to the
|
||||
revision traversal engine. For example, the `%g*` reflog options will
|
||||
|
@ -1,52 +0,0 @@
|
||||
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.
|
||||
This option can be overridden by the `--no-autostash` and
|
||||
`--autostash` options of linkgit:git-rebase[1].
|
||||
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
|
||||
todo list during an interactive rebase. The format will
|
||||
automatically have the long commit hash prepended to the format.
|
||||
|
||||
rebase.abbreviateCommands::
|
||||
If set to true, `git rebase` will use abbreviated command names in the
|
||||
todo list resulting in something like this:
|
||||
+
|
||||
-------------------------------------------
|
||||
p deadbee The oneline of the commit
|
||||
p fa1afe1 The oneline of the next commit
|
||||
...
|
||||
-------------------------------------------
|
||||
+
|
||||
instead of:
|
||||
+
|
||||
-------------------------------------------
|
||||
pick deadbee The oneline of the commit
|
||||
pick fa1afe1 The oneline of the next commit
|
||||
...
|
||||
-------------------------------------------
|
||||
+
|
||||
Defaults to false.
|
@ -184,14 +184,6 @@ explicitly.
|
||||
Pretend as if all objects mentioned by reflogs are listed on the
|
||||
command line as `<commit>`.
|
||||
|
||||
--single-worktree::
|
||||
By default, all working trees will be examined by the
|
||||
following options when there are more than one (see
|
||||
linkgit:git-worktree[1]): `--all`, `--reflog` and
|
||||
`--indexed-objects`.
|
||||
This option forces them to examine the current working tree
|
||||
only.
|
||||
|
||||
--ignore-missing::
|
||||
Upon seeing an invalid object name in the input, pretend as if
|
||||
the bad input was not given.
|
||||
@ -686,11 +678,6 @@ ifdef::git-rev-list[]
|
||||
all object IDs which I need to download if I have the commit
|
||||
object _bar_ but not _foo_''.
|
||||
|
||||
--in-commit-order::
|
||||
Print tree and blob ids in order of the commits. The tree
|
||||
and blob ids are printed after they are first referenced
|
||||
by a commit.
|
||||
|
||||
--objects-edge::
|
||||
Similar to `--objects`, but also print the IDs of excluded
|
||||
commits prefixed with a ``-'' character. This is used by
|
||||
@ -711,60 +698,8 @@ ifdef::git-rev-list[]
|
||||
--unpacked::
|
||||
Only useful with `--objects`; print the object IDs that are not
|
||||
in packs.
|
||||
|
||||
--filter=<filter-spec>::
|
||||
Only useful with one of the `--objects*`; omits objects (usually
|
||||
blobs) from the list of printed objects. The '<filter-spec>'
|
||||
may be one of the following:
|
||||
+
|
||||
The form '--filter=blob:none' omits all blobs.
|
||||
+
|
||||
The form '--filter=blob:limit=<n>[kmg]' omits blobs larger than n bytes
|
||||
or units. n may be zero. The suffixes k, m, and g can be used to name
|
||||
units in KiB, MiB, or GiB. For example, 'blob:limit=1k' is the same
|
||||
as 'blob:limit=1024'.
|
||||
+
|
||||
The form '--filter=sparse:oid=<blob-ish>' uses a sparse-checkout
|
||||
specification contained in the blob (or blob-expression) '<blob-ish>'
|
||||
to omit blobs that would not be not required for a sparse checkout on
|
||||
the requested refs.
|
||||
+
|
||||
The form '--filter=sparse:path=<path>' similarly uses a sparse-checkout
|
||||
specification contained in <path>.
|
||||
|
||||
--no-filter::
|
||||
Turn off any previous `--filter=` argument.
|
||||
|
||||
--filter-print-omitted::
|
||||
Only useful with `--filter=`; prints a list of the objects omitted
|
||||
by the filter. Object IDs are prefixed with a ``~'' character.
|
||||
|
||||
--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 rev-list 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 objects will raise an error.
|
||||
+
|
||||
The form '--missing=print' is like 'allow-any', but will also print a
|
||||
list of the missing objects. Object IDs are prefixed with a ``?'' character.
|
||||
endif::git-rev-list[]
|
||||
|
||||
--exclude-promisor-objects::
|
||||
(For internal use only.) Prefilter object traversal at
|
||||
promisor boundary. This is used with partial clone. This is
|
||||
stronger than `--missing=allow-promisor` because it limits the
|
||||
traversal, rather than just silencing errors about missing
|
||||
objects.
|
||||
|
||||
--no-walk[=(sorted|unsorted)]::
|
||||
Only show the given commits, but do not traverse their ancestors.
|
||||
This has no effect if a range is specified. If the argument
|
||||
@ -856,11 +791,11 @@ endif::git-rev-list[]
|
||||
|
||||
--parents::
|
||||
Print also the parents of the commit (in the form "commit parent...").
|
||||
Also enables parent rewriting, see 'History Simplification' above.
|
||||
Also enables parent rewriting, see 'History Simplification' below.
|
||||
|
||||
--children::
|
||||
Print also the children of the commit (in the form "commit child...").
|
||||
Also enables parent rewriting, see 'History Simplification' above.
|
||||
Also enables parent rewriting, see 'History Simplification' below.
|
||||
|
||||
ifdef::git-rev-list[]
|
||||
--timestamp::
|
||||
@ -903,7 +838,7 @@ you would get an output like this:
|
||||
to be drawn properly.
|
||||
Cannot be combined with `--no-walk`.
|
||||
+
|
||||
This enables parent rewriting, see 'History Simplification' above.
|
||||
This enables parent rewriting, see 'History Simplification' below.
|
||||
+
|
||||
This implies the `--topo-order` option by default, but the
|
||||
`--date-order` option may also be specified.
|
||||
|
@ -271,7 +271,7 @@ The '..' (two-dot) Range Notation::
|
||||
for commits that are reachable from r2 excluding those that are reachable
|
||||
from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'.
|
||||
|
||||
The '...' (three-dot) Symmetric Difference Notation::
|
||||
The '...' (three dot) Symmetric Difference Notation::
|
||||
A similar notation 'r1\...r2' is called symmetric difference
|
||||
of 'r1' and 'r2' and is defined as
|
||||
'r1 r2 --not $(git merge-base --all r1 r2)'.
|
||||
|
@ -8,7 +8,7 @@ always NULL-terminated at the element pointed to by `argv[argc]`. This
|
||||
makes the result suitable for passing to functions expecting to receive
|
||||
argv from main(), or the link:api-run-command.html[run-command API].
|
||||
|
||||
The string-list API (documented in string-list.h) is similar, but cannot be
|
||||
The link:api-string-list.html[string-list API] is similar, but cannot be
|
||||
used for these purposes; instead of storing a straight string pointer,
|
||||
it contains an item structure with a `util` field that is not compatible
|
||||
with the traditional argv interface.
|
||||
|
@ -186,7 +186,7 @@ parsing is successful, the return value is the result.
|
||||
Same as `git_config_bool`, except that integers are returned as-is, and
|
||||
an `is_bool` flag is unset.
|
||||
|
||||
`git_parse_maybe_bool`::
|
||||
`git_config_maybe_bool`::
|
||||
Same as `git_config_bool`, except that it returns -1 on error rather
|
||||
than dying.
|
||||
|
||||
|
6
Documentation/technical/api-decorate.txt
Normal file
6
Documentation/technical/api-decorate.txt
Normal file
@ -0,0 +1,6 @@
|
||||
decorate API
|
||||
============
|
||||
|
||||
Talk about <decorate.h>
|
||||
|
||||
(Linus)
|
@ -22,20 +22,16 @@ The notable options are:
|
||||
|
||||
`flags`::
|
||||
|
||||
A bit-field of options:
|
||||
A bit-field of options (the `*IGNORED*` flags are mutually exclusive):
|
||||
|
||||
`DIR_SHOW_IGNORED`:::
|
||||
|
||||
Return just ignored files in `entries[]`, not untracked
|
||||
files. This flag is mutually exclusive with
|
||||
`DIR_SHOW_IGNORED_TOO`.
|
||||
Return just ignored files in `entries[]`, not untracked files.
|
||||
|
||||
`DIR_SHOW_IGNORED_TOO`:::
|
||||
|
||||
Similar to `DIR_SHOW_IGNORED`, but return ignored files in
|
||||
`ignored[]` in addition to untracked files in
|
||||
`entries[]`. This flag is mutually exclusive with
|
||||
`DIR_SHOW_IGNORED`.
|
||||
Similar to `DIR_SHOW_IGNORED`, but return ignored files in `ignored[]`
|
||||
in addition to untracked files in `entries[]`.
|
||||
|
||||
`DIR_KEEP_UNTRACKED_CONTENTS`:::
|
||||
|
||||
@ -43,21 +39,6 @@ The notable options are:
|
||||
untracked contents of untracked directories are also returned in
|
||||
`entries[]`.
|
||||
|
||||
`DIR_SHOW_IGNORED_TOO_MODE_MATCHING`:::
|
||||
|
||||
Only has meaning if `DIR_SHOW_IGNORED_TOO` is also set; if
|
||||
this is set, returns ignored files and directories that match
|
||||
an exclude pattern. If a directory matches an exclude pattern,
|
||||
then the directory is returned and the contained paths are
|
||||
not. A directory that does not match an exclude pattern will
|
||||
not be returned even if all of its contents are ignored. In
|
||||
this case, the contents are returned as individual entries.
|
||||
+
|
||||
If this is set, files and directories that explicity match an ignore
|
||||
pattern are reported. Implicity ignored directories (directories that
|
||||
do not match an ignore pattern, but whose contents are all ignored)
|
||||
are not reported, instead all of the contents are reported.
|
||||
|
||||
`DIR_COLLECT_IGNORED`:::
|
||||
|
||||
Special mode for git-add. Return ignored files in `ignored[]` and
|
||||
|
@ -7,7 +7,7 @@ Talk about <sha1_file.c> and <object.h> family, things like
|
||||
* read_object_with_reference()
|
||||
* has_sha1_file()
|
||||
* write_sha1_file()
|
||||
* pretend_object_file()
|
||||
* pretend_sha1_file()
|
||||
* lookup_{object,commit,tag,blob,tree}
|
||||
* parse_{object,commit,tag,blob,tree}
|
||||
* Use of object flags
|
||||
|
@ -32,8 +32,11 @@ Iteration functions
|
||||
|
||||
* `for_each_glob_ref_in()` the previous and `for_each_ref_in()` combined.
|
||||
|
||||
* Use `refs_` API for accessing submodules. The submodule ref store could
|
||||
be obtained with `get_submodule_ref_store()`.
|
||||
* `head_ref_submodule()`, `for_each_ref_submodule()`,
|
||||
`for_each_ref_in_submodule()`, `for_each_tag_ref_submodule()`,
|
||||
`for_each_branch_ref_submodule()`, `for_each_remote_ref_submodule()`
|
||||
do the same as the functions described above but for a specified
|
||||
submodule.
|
||||
|
||||
* `for_each_rawref()` can be used to learn about broken ref and symref.
|
||||
|
||||
|
209
Documentation/technical/api-string-list.txt
Normal file
209
Documentation/technical/api-string-list.txt
Normal file
@ -0,0 +1,209 @@
|
||||
string-list API
|
||||
===============
|
||||
|
||||
The string_list API offers a data structure and functions to handle
|
||||
sorted and unsorted string lists. A "sorted" list is one whose
|
||||
entries are sorted by string value in `strcmp()` order.
|
||||
|
||||
The 'string_list' struct used to be called 'path_list', but was renamed
|
||||
because it is not specific to paths.
|
||||
|
||||
The caller:
|
||||
|
||||
. Allocates and clears a `struct string_list` variable.
|
||||
|
||||
. Initializes the members. You might want to set the flag `strdup_strings`
|
||||
if the strings should be strdup()ed. For example, this is necessary
|
||||
when you add something like git_path("..."), since that function returns
|
||||
a static buffer that will change with the next call to git_path().
|
||||
+
|
||||
If you need something advanced, you can manually malloc() the `items`
|
||||
member (you need this if you add things later) and you should set the
|
||||
`nr` and `alloc` members in that case, too.
|
||||
|
||||
. Adds new items to the list, using `string_list_append`,
|
||||
`string_list_append_nodup`, `string_list_insert`,
|
||||
`string_list_split`, and/or `string_list_split_in_place`.
|
||||
|
||||
. Can check if a string is in the list using `string_list_has_string` or
|
||||
`unsorted_string_list_has_string` and get it from the list using
|
||||
`string_list_lookup` for sorted lists.
|
||||
|
||||
. Can sort an unsorted list using `string_list_sort`.
|
||||
|
||||
. Can remove duplicate items from a sorted list using
|
||||
`string_list_remove_duplicates`.
|
||||
|
||||
. Can remove individual items of an unsorted list using
|
||||
`unsorted_string_list_delete_item`.
|
||||
|
||||
. Can remove items not matching a criterion from a sorted or unsorted
|
||||
list using `filter_string_list`, or remove empty strings using
|
||||
`string_list_remove_empty_items`.
|
||||
|
||||
. Finally it should free the list using `string_list_clear`.
|
||||
|
||||
Example:
|
||||
|
||||
----
|
||||
struct string_list list = STRING_LIST_INIT_NODUP;
|
||||
int i;
|
||||
|
||||
string_list_append(&list, "foo");
|
||||
string_list_append(&list, "bar");
|
||||
for (i = 0; i < list.nr; i++)
|
||||
printf("%s\n", list.items[i].string)
|
||||
----
|
||||
|
||||
NOTE: It is more efficient to build an unsorted list and sort it
|
||||
afterwards, instead of building a sorted list (`O(n log n)` instead of
|
||||
`O(n^2)`).
|
||||
+
|
||||
However, if you use the list to check if a certain string was added
|
||||
already, you should not do that (using unsorted_string_list_has_string()),
|
||||
because the complexity would be quadratic again (but with a worse factor).
|
||||
|
||||
Functions
|
||||
---------
|
||||
|
||||
* General ones (works with sorted and unsorted lists as well)
|
||||
|
||||
`string_list_init`::
|
||||
|
||||
Initialize the members of the string_list, set `strdup_strings`
|
||||
member according to the value of the second parameter.
|
||||
|
||||
`filter_string_list`::
|
||||
|
||||
Apply a function to each item in a list, retaining only the
|
||||
items for which the function returns true. If free_util is
|
||||
true, call free() on the util members of any items that have
|
||||
to be deleted. Preserve the order of the items that are
|
||||
retained.
|
||||
|
||||
`string_list_remove_empty_items`::
|
||||
|
||||
Remove any empty strings from the list. If free_util is true,
|
||||
call free() on the util members of any items that have to be
|
||||
deleted. Preserve the order of the items that are retained.
|
||||
|
||||
`print_string_list`::
|
||||
|
||||
Dump a string_list to stdout, useful mainly for debugging purposes. It
|
||||
can take an optional header argument and it writes out the
|
||||
string-pointer pairs of the string_list, each one in its own line.
|
||||
|
||||
`string_list_clear`::
|
||||
|
||||
Free a string_list. The `string` pointer of the items will be freed in
|
||||
case the `strdup_strings` member of the string_list is set. The second
|
||||
parameter controls if the `util` pointer of the items should be freed
|
||||
or not.
|
||||
|
||||
* Functions for sorted lists only
|
||||
|
||||
`string_list_has_string`::
|
||||
|
||||
Determine if the string_list has a given string or not.
|
||||
|
||||
`string_list_insert`::
|
||||
|
||||
Insert a new element to the string_list. The returned pointer can be
|
||||
handy if you want to write something to the `util` pointer of the
|
||||
string_list_item containing the just added string. If the given
|
||||
string already exists the insertion will be skipped and the
|
||||
pointer to the existing item returned.
|
||||
+
|
||||
Since this function uses xrealloc() (which die()s if it fails) if the
|
||||
list needs to grow, it is safe not to check the pointer. I.e. you may
|
||||
write `string_list_insert(...)->util = ...;`.
|
||||
|
||||
`string_list_lookup`::
|
||||
|
||||
Look up a given string in the string_list, returning the containing
|
||||
string_list_item. If the string is not found, NULL is returned.
|
||||
|
||||
`string_list_remove_duplicates`::
|
||||
|
||||
Remove all but the first of consecutive entries that have the
|
||||
same string value. If free_util is true, call free() on the
|
||||
util members of any items that have to be deleted.
|
||||
|
||||
* Functions for unsorted lists only
|
||||
|
||||
`string_list_append`::
|
||||
|
||||
Append a new string to the end of the string_list. If
|
||||
`strdup_string` is set, then the string argument is copied;
|
||||
otherwise the new `string_list_entry` refers to the input
|
||||
string.
|
||||
|
||||
`string_list_append_nodup`::
|
||||
|
||||
Append a new string to the end of the string_list. The new
|
||||
`string_list_entry` always refers to the input string, even if
|
||||
`strdup_string` is set. This function can be used to hand
|
||||
ownership of a malloc()ed string to a `string_list` that has
|
||||
`strdup_string` set.
|
||||
|
||||
`string_list_sort`::
|
||||
|
||||
Sort the list's entries by string value in `strcmp()` order.
|
||||
|
||||
`unsorted_string_list_has_string`::
|
||||
|
||||
It's like `string_list_has_string()` but for unsorted lists.
|
||||
|
||||
`unsorted_string_list_lookup`::
|
||||
|
||||
It's like `string_list_lookup()` but for unsorted lists.
|
||||
+
|
||||
The above two functions need to look through all items, as opposed to their
|
||||
counterpart for sorted lists, which performs a binary search.
|
||||
|
||||
`unsorted_string_list_delete_item`::
|
||||
|
||||
Remove an item from a string_list. The `string` pointer of the items
|
||||
will be freed in case the `strdup_strings` member of the string_list
|
||||
is set. The third parameter controls if the `util` pointer of the
|
||||
items should be freed or not.
|
||||
|
||||
`string_list_split`::
|
||||
`string_list_split_in_place`::
|
||||
|
||||
Split a string into substrings on a delimiter character and
|
||||
append the substrings to a `string_list`. If `maxsplit` is
|
||||
non-negative, then split at most `maxsplit` times. Return the
|
||||
number of substrings appended to the list.
|
||||
+
|
||||
`string_list_split` requires a `string_list` that has `strdup_strings`
|
||||
set to true; it leaves the input string untouched and makes copies of
|
||||
the substrings in newly-allocated memory.
|
||||
`string_list_split_in_place` requires a `string_list` that has
|
||||
`strdup_strings` set to false; it splits the input string in place,
|
||||
overwriting the delimiter characters with NULs and creating new
|
||||
string_list_items that point into the original string (the original
|
||||
string must therefore not be modified or freed while the `string_list`
|
||||
is in use).
|
||||
|
||||
|
||||
Data structures
|
||||
---------------
|
||||
|
||||
* `struct string_list_item`
|
||||
|
||||
Represents an item of the list. The `string` member is a pointer to the
|
||||
string, and you may use the `util` member for any purpose, if you want.
|
||||
|
||||
* `struct string_list`
|
||||
|
||||
Represents the list itself.
|
||||
|
||||
. The array of items are available via the `items` member.
|
||||
. The `nr` member contains the number of items stored in the list.
|
||||
. The `alloc` member is used to avoid reallocating at every insertion.
|
||||
You should not tamper with it.
|
||||
. Setting the `strdup_strings` member to 1 will strdup() the strings
|
||||
before adding them, see above.
|
||||
. The `compare_strings_fn` member is used to specify a custom compare
|
||||
function, otherwise `strcmp()` is used as the default function.
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user