Compare commits
61 Commits
Author | SHA1 | Date | |
---|---|---|---|
d1259ce117 | |||
a5979d7009 | |||
21a3e5016b | |||
c42c0f1297 | |||
07259e74ec | |||
c716fe4bd9 | |||
17f1c0b8c7 | |||
9a6bbee800 | |||
4cd1cf31ef | |||
c154745074 | |||
4cfc47de25 | |||
d851d94151 | |||
caccc527ca | |||
7c9fbda6e2 | |||
9877106b01 | |||
14af7ed5a9 | |||
a5ab8d0317 | |||
bb92255ebe | |||
bdfef0492c | |||
eb288bc455 | |||
68440496c7 | |||
9ac92fed5b | |||
7cdafcaacf | |||
e904deb89d | |||
d3ac8c3f27 | |||
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 |
@ -149,7 +149,7 @@ Cpp11BracedListStyle: false
|
||||
|
||||
# A list of macros that should be interpreted as foreach loops instead of as
|
||||
# function calls.
|
||||
ForEachMacros: ['for_each_string_list_item', 'for_each_wanted_builtin', 'for_each_builtin', 'for_each_ut']
|
||||
ForEachMacros: ['for_each_string_list_item']
|
||||
|
||||
# The maximum number of consecutive empty lines to keep.
|
||||
MaxEmptyLinesToKeep: 1
|
||||
|
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@ -5,7 +5,7 @@ Git community does not use github.com for their contributions. Instead, we use
|
||||
a mailing list (git@vger.kernel.org) for code submissions, code
|
||||
reviews, and bug reports.
|
||||
|
||||
Nevertheless, you can use [GitGitGadget](https://gitgitgadget.github.io/) to
|
||||
Nevertheless, you can use [submitGit](http://submitgit.herokuapp.com/) to
|
||||
conveniently send your Pull Requests commits to our mailing list.
|
||||
|
||||
Please read ["A note from the maintainer"](https://git.kernel.org/pub/scm/git/git.git/plain/MaintNotes?h=todo)
|
||||
|
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,7 +1,7 @@
|
||||
Thanks for taking the time to contribute to Git! Please be advised that the
|
||||
Git community does not use github.com for their contributions. Instead, we use
|
||||
a mailing list (git@vger.kernel.org) for code submissions, code reviews, and
|
||||
bug reports. Nevertheless, you can use GitGitGadget (https://gitgitgadget.github.io/)
|
||||
to conveniently send your Pull Requests commits to our mailing list.
|
||||
bug reports. Nevertheless, you can use submitGit to conveniently send your Pull
|
||||
Requests commits to our mailing list.
|
||||
|
||||
Please read the "guidelines for contributing" linked above!
|
||||
|
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,4 +1,3 @@
|
||||
/fuzz-commit-graph
|
||||
/fuzz_corpora
|
||||
/fuzz-pack-headers
|
||||
/fuzz-pack-idx
|
||||
@ -82,7 +81,7 @@
|
||||
/git-init-db
|
||||
/git-interpret-trailers
|
||||
/git-instaweb
|
||||
/git-legacy-stash
|
||||
/git-legacy-rebase
|
||||
/git-log
|
||||
/git-ls-files
|
||||
/git-ls-remote
|
||||
@ -125,6 +124,7 @@
|
||||
/git-rebase--am
|
||||
/git-rebase--common
|
||||
/git-rebase--interactive
|
||||
/git-rebase--merge
|
||||
/git-rebase--preserve-merges
|
||||
/git-receive-pack
|
||||
/git-reflog
|
||||
@ -135,6 +135,7 @@
|
||||
/git-remote-ftps
|
||||
/git-remote-fd
|
||||
/git-remote-ext
|
||||
/git-remote-testgit
|
||||
/git-remote-testpy
|
||||
/git-remote-testsvn
|
||||
/git-repack
|
||||
@ -228,4 +229,3 @@
|
||||
*.pdb
|
||||
/Debug/
|
||||
/Release/
|
||||
*.dSYM
|
||||
|
3
.mailmap
3
.mailmap
@ -27,7 +27,6 @@ Ben Walton <bdwalton@gmail.com> <bwalton@artsci.utoronto.ca>
|
||||
Benoit Sigoure <tsunanet@gmail.com> <tsuna@lrde.epita.fr>
|
||||
Bernt Hansen <bernt@norang.ca> <bernt@alumni.uwaterloo.ca>
|
||||
Brandon Casey <drafnel@gmail.com> <casey@nrlssc.navy.mil>
|
||||
Brandon Williams <bwilliams.eng@gmail.com> <bmwill@google.com>
|
||||
brian m. carlson <sandals@crustytoothpaste.net>
|
||||
brian m. carlson <sandals@crustytoothpaste.net> <sandals@crustytoothpaste.ath.cx>
|
||||
Bryan Larsen <bryan@larsen.st> <bryan.larsen@gmail.com>
|
||||
@ -40,8 +39,6 @@ Cord Seele <cowose@gmail.com> <cowose@googlemail.com>
|
||||
Christian Couder <chriscool@tuxfamily.org> <christian.couder@gmail.com>
|
||||
Christian Stimming <stimming@tuhh.de> <chs@ckiste.goetheallee>
|
||||
Christopher Díaz Riveros <chrisadr@gentoo.org> Christopher Diaz Riveros
|
||||
Clemens Buchacher <drizzd@gmx.net> <drizzd@aon.at>
|
||||
Clemens Buchacher <drizzd@gmx.net> <clemens.buchacher@intel.com>
|
||||
Csaba Henk <csaba@gluster.com> <csaba@lowlife.hu>
|
||||
Dan Johnson <computerdruid@gmail.com>
|
||||
Dana L. How <danahow@gmail.com> <how@deathvalley.cswitch.com>
|
||||
|
12
.travis.yml
12
.travis.yml
@ -8,8 +8,6 @@ os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
osx_image: xcode10.1
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
@ -21,6 +19,16 @@ matrix:
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
- env: jobname=Windows
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
script:
|
||||
- >
|
||||
test "$TRAVIS_REPO_SLUG" != "git/git" ||
|
||||
ci/run-windows-build.sh $TRAVIS_BRANCH $(git rev-parse HEAD)
|
||||
after_failure:
|
||||
- env: jobname=Linux32
|
||||
os: linux
|
||||
compiler:
|
||||
|
2
Documentation/.gitignore
vendored
2
Documentation/.gitignore
vendored
@ -13,5 +13,3 @@ mergetools-*.txt
|
||||
manpage-base-url.xsl
|
||||
SubmittingPatches.txt
|
||||
tmp-doc-diff/
|
||||
GIT-ASCIIDOCFLAGS
|
||||
/GIT-EXCLUDED-PROGRAMS
|
||||
|
@ -580,14 +580,11 @@ Writing Documentation:
|
||||
or commands:
|
||||
|
||||
Literal examples (e.g. use of command-line options, command names,
|
||||
branch names, URLs, pathnames (files and directories), configuration and
|
||||
environment variables) must be typeset in monospace (i.e. wrapped with
|
||||
backticks):
|
||||
branch names, configuration and environment variables) must be
|
||||
typeset in monospace (i.e. wrapped with backticks):
|
||||
`--pretty=oneline`
|
||||
`git rev-list`
|
||||
`remote.pushDefault`
|
||||
`http://git.example.com`
|
||||
`.git/config`
|
||||
`GIT_DIR`
|
||||
`HEAD`
|
||||
|
||||
|
@ -7,14 +7,12 @@ ARTICLES =
|
||||
SP_ARTICLES =
|
||||
OBSOLETE_HTML =
|
||||
|
||||
-include GIT-EXCLUDED-PROGRAMS
|
||||
|
||||
MAN1_TXT += $(filter-out \
|
||||
$(patsubst %,%.txt,$(EXCLUDED_PROGRAMS)) \
|
||||
$(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
|
||||
$(wildcard git-*.txt))
|
||||
MAN1_TXT += git.txt
|
||||
MAN1_TXT += gitk.txt
|
||||
MAN1_TXT += gitremote-helpers.txt
|
||||
MAN1_TXT += gitweb.txt
|
||||
|
||||
MAN5_TXT += gitattributes.txt
|
||||
@ -32,26 +30,20 @@ MAN7_TXT += gitdiffcore.txt
|
||||
MAN7_TXT += giteveryday.txt
|
||||
MAN7_TXT += gitglossary.txt
|
||||
MAN7_TXT += gitnamespaces.txt
|
||||
MAN7_TXT += gitremote-helpers.txt
|
||||
MAN7_TXT += gitrevisions.txt
|
||||
MAN7_TXT += gitsubmodules.txt
|
||||
MAN7_TXT += gittutorial-2.txt
|
||||
MAN7_TXT += gittutorial.txt
|
||||
MAN7_TXT += gitworkflows.txt
|
||||
|
||||
ifdef MAN_FILTER
|
||||
MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT))
|
||||
else
|
||||
MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
|
||||
MAN_FILTER = $(MAN_TXT)
|
||||
endif
|
||||
|
||||
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
|
||||
DOC_HTML = $(MAN_HTML) $(OBSOLETE_HTML)
|
||||
|
||||
ARTICLES += howto-index
|
||||
ARTICLES += git-tools
|
||||
@ -97,13 +89,11 @@ TECH_DOCS += technical/trivial-merge
|
||||
SP_ARTICLES += $(TECH_DOCS)
|
||||
SP_ARTICLES += technical/api-index
|
||||
|
||||
ARTICLES_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
|
||||
HTML_FILTER ?= $(ARTICLES_HTML) $(OBSOLETE_HTML)
|
||||
DOC_HTML = $(MAN_HTML) $(filter $(HTML_FILTER),$(ARTICLES_HTML) $(OBSOLETE_HTML))
|
||||
DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
|
||||
|
||||
DOC_MAN1 = $(patsubst %.txt,%.1,$(filter $(MAN_FILTER),$(MAN1_TXT)))
|
||||
DOC_MAN5 = $(patsubst %.txt,%.5,$(filter $(MAN_FILTER),$(MAN5_TXT)))
|
||||
DOC_MAN7 = $(patsubst %.txt,%.7,$(filter $(MAN_FILTER),$(MAN7_TXT)))
|
||||
DOC_MAN1 = $(patsubst %.txt,%.1,$(MAN1_TXT))
|
||||
DOC_MAN5 = $(patsubst %.txt,%.5,$(MAN5_TXT))
|
||||
DOC_MAN7 = $(patsubst %.txt,%.7,$(MAN7_TXT))
|
||||
|
||||
prefix ?= $(HOME)
|
||||
bindir ?= $(prefix)/bin
|
||||
@ -334,15 +324,6 @@ mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
||||
show_tool_names can_merge "* " || :' >mergetools-merge.txt && \
|
||||
date >$@
|
||||
|
||||
TRACK_ASCIIDOCFLAGS = $(subst ','\'',$(ASCIIDOC_COMMON):$(ASCIIDOC_HTML):$(ASCIIDOC_DOCBOOK))
|
||||
|
||||
GIT-ASCIIDOCFLAGS: FORCE
|
||||
@FLAGS='$(TRACK_ASCIIDOCFLAGS)'; \
|
||||
if test x"$$FLAGS" != x"`cat GIT-ASCIIDOCFLAGS 2>/dev/null`" ; then \
|
||||
echo >&2 " * new asciidoc flags"; \
|
||||
echo "$$FLAGS" >GIT-ASCIIDOCFLAGS; \
|
||||
fi
|
||||
|
||||
clean:
|
||||
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
||||
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
||||
@ -352,14 +333,13 @@ clean:
|
||||
$(RM) SubmittingPatches.txt
|
||||
$(RM) $(cmds_txt) $(mergetools_txt) *.made
|
||||
$(RM) manpage-base-url.xsl
|
||||
$(RM) GIT-ASCIIDOCFLAGS
|
||||
|
||||
$(MAN_HTML): %.html : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
$(MAN_HTML): %.html : %.txt asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_HTML) -d manpage -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
$(OBSOLETE_HTML): %.html : %.txto asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
$(OBSOLETE_HTML): %.html : %.txto asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_HTML) -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
@ -367,16 +347,16 @@ $(OBSOLETE_HTML): %.html : %.txto asciidoc.conf asciidoctor-extensions.rb GIT-AS
|
||||
manpage-base-url.xsl: manpage-base-url.xsl.in
|
||||
$(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
|
||||
|
||||
%.1 %.5 %.7 : %.xml manpage-base-url.xsl $(wildcard manpage*.xsl)
|
||||
%.1 %.5 %.7 : %.xml manpage-base-url.xsl
|
||||
$(QUIET_XMLTO)$(RM) $@ && \
|
||||
$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
|
||||
|
||||
%.xml : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
%.xml : %.txt asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_XML) -d manpage -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
user-manual.xml: user-manual.txt user-manual.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
user-manual.xml: user-manual.txt user-manual.conf
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_XML) -d book -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
@ -386,8 +366,7 @@ technical/api-index.txt: technical/api-index-skel.txt \
|
||||
$(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh
|
||||
|
||||
technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
||||
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt \
|
||||
asciidoc.conf GIT-ASCIIDOCFLAGS
|
||||
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt asciidoc.conf
|
||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
||||
|
||||
SubmittingPatches.txt: SubmittingPatches
|
||||
@ -444,7 +423,7 @@ $(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
||||
WEBDOC_DEST = /pub/software/scm/git/docs
|
||||
|
||||
howto/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
||||
$(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt GIT-ASCIIDOCFLAGS
|
||||
$(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
sed -e '1,/^$$/d' $< | \
|
||||
$(TXT_TO_HTML) - >$@+ && \
|
||||
@ -478,9 +457,4 @@ print-man1:
|
||||
lint-docs::
|
||||
$(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl
|
||||
|
||||
ifeq ($(wildcard po/Makefile),po/Makefile)
|
||||
doc-l10n install-l10n::
|
||||
$(MAKE) -C po $@
|
||||
endif
|
||||
|
||||
.PHONY: FORCE
|
||||
|
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.
|
11
Documentation/RelNotes/2.15.4.txt
Normal file
11
Documentation/RelNotes/2.15.4.txt
Normal file
@ -0,0 +1,11 @@
|
||||
Git v2.15.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6 to address
|
||||
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; see the release notes for that version for details.
|
||||
|
||||
In conjunction with a vulnerability that was fixed in v2.20.2,
|
||||
`.gitmodules` is no longer allowed to contain entries of the form
|
||||
`submodule.<name>.update=!command`.
|
8
Documentation/RelNotes/2.16.6.txt
Normal file
8
Documentation/RelNotes/2.16.6.txt
Normal file
@ -0,0 +1,8 @@
|
||||
Git v2.16.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6 and in
|
||||
v2.15.4 addressing 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; see the release notes for those
|
||||
versions for details.
|
12
Documentation/RelNotes/2.17.3.txt
Normal file
12
Documentation/RelNotes/2.17.3.txt
Normal file
@ -0,0 +1,12 @@
|
||||
Git v2.17.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6 and in
|
||||
v2.15.4 addressing 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; see the release notes for those
|
||||
versions for details.
|
||||
|
||||
In addition, `git fsck` was taught to identify `.gitmodules` entries
|
||||
of the form `submodule.<name>.update=!command`, which have been
|
||||
disallowed in v2.15.4.
|
16
Documentation/RelNotes/2.17.4.txt
Normal file
16
Documentation/RelNotes/2.17.4.txt
Normal file
@ -0,0 +1,16 @@
|
||||
Git v2.17.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release is to address the security issue: CVE-2020-5260
|
||||
|
||||
Fixes since v2.17.3
|
||||
-------------------
|
||||
|
||||
* With a crafted URL that contains a newline in it, the credential
|
||||
helper machinery can be fooled to give credential information for
|
||||
a wrong host. The attack has been made impossible by forbidding
|
||||
a newline character in any value passed via the credential
|
||||
protocol.
|
||||
|
||||
Credit for finding the vulnerability goes to Felix Wilhelm of Google
|
||||
Project Zero.
|
8
Documentation/RelNotes/2.18.2.txt
Normal file
8
Documentation/RelNotes/2.18.2.txt
Normal file
@ -0,0 +1,8 @@
|
||||
Git v2.18.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6, v2.15.4
|
||||
and in v2.17.3, addressing 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; see the release notes
|
||||
for those versions for details.
|
5
Documentation/RelNotes/2.18.3.txt
Normal file
5
Documentation/RelNotes/2.18.3.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.18.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.4; see
|
||||
the release notes for that version for details.
|
8
Documentation/RelNotes/2.19.3.txt
Normal file
8
Documentation/RelNotes/2.19.3.txt
Normal file
@ -0,0 +1,8 @@
|
||||
Git v2.19.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6, v2.15.4
|
||||
and in v2.17.3, addressing 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; see the release notes
|
||||
for those versions for details.
|
5
Documentation/RelNotes/2.19.4.txt
Normal file
5
Documentation/RelNotes/2.19.4.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.19.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.4; see
|
||||
the release notes for that version for details.
|
18
Documentation/RelNotes/2.20.2.txt
Normal file
18
Documentation/RelNotes/2.20.2.txt
Normal file
@ -0,0 +1,18 @@
|
||||
Git v2.20.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.14.6, v2.15.4
|
||||
and in v2.17.3, addressing 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; see the release notes
|
||||
for those versions for details.
|
||||
|
||||
The change to disallow `submodule.<name>.update=!command` entries in
|
||||
`.gitmodules` which was introduced v2.15.4 (and for which v2.17.3
|
||||
added explicit fsck checks) fixes the vulnerability in v2.20.x where a
|
||||
recursive clone followed by a submodule update could execute code
|
||||
contained within the repository without the user explicitly having
|
||||
asked for that (CVE-2019-19604).
|
||||
|
||||
Credit for finding this vulnerability goes to Joern Schneeweisz,
|
||||
credit for the fixes goes to Jonathan Nieder.
|
5
Documentation/RelNotes/2.20.3.txt
Normal file
5
Documentation/RelNotes/2.20.3.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Git v2.20.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.4; see
|
||||
the release notes for that version for details.
|
@ -1,451 +0,0 @@
|
||||
Git 2.21 Release Notes
|
||||
======================
|
||||
|
||||
Backward Compatibility Notes
|
||||
----------------------------
|
||||
|
||||
* Historically, the "-m" (mainline) option can only be used for "git
|
||||
cherry-pick" and "git revert" when working with a merge commit.
|
||||
This version of Git no longer warns or errors out when working with
|
||||
a single-parent commit, as long as the argument to the "-m" option
|
||||
is 1 (i.e. it has only one parent, and the request is to pick or
|
||||
revert relative to that first parent). Scripts that relied on the
|
||||
behaviour may get broken with this change.
|
||||
|
||||
|
||||
Updates since v2.20
|
||||
-------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* The "http.version" configuration variable can be used with recent
|
||||
enough versions of cURL library to force the version of HTTP used
|
||||
to talk when fetching and pushing.
|
||||
|
||||
* Small fixes and features for fast-export and fast-import, mostly on
|
||||
the fast-export side has been made.
|
||||
|
||||
* "git push $there $src:$dst" rejects when $dst is not a fully
|
||||
qualified refname and it is not clear what the end user meant. The
|
||||
codepath has been taught to give a clearer error message, and also
|
||||
guess where the push should go by taking the type of the pushed
|
||||
object into account (e.g. a tag object would want to go under
|
||||
refs/tags/).
|
||||
|
||||
* "git checkout [<tree-ish>] path..." learned to report the number of
|
||||
paths that have been checked out of the index or the tree-ish,
|
||||
which gives it the same degree of noisy-ness as the case in which
|
||||
the command checks out a branch. "git checkout -m <pathspec>" to
|
||||
undo conflict resolution gives a similar message.
|
||||
|
||||
* "git quiltimport" learned "--keep-non-patch" option.
|
||||
|
||||
* "git worktree remove" and "git worktree move" refused to work when
|
||||
there is a submodule involved. This has been loosened to ignore
|
||||
uninitialized submodules.
|
||||
|
||||
* "git cherry-pick -m1" was forbidden when picking a non-merge
|
||||
commit, even though there _is_ parent number 1 for such a commit.
|
||||
This was done to avoid mistakes back when "cherry-pick" was about
|
||||
picking a single commit, but is no longer useful with "cherry-pick"
|
||||
that can pick a range of commits. Now the "-m$num" option is
|
||||
allowed when picking any commit, as long as $num names an existing
|
||||
parent of the commit.
|
||||
|
||||
* Update "git multimail" from the upstream.
|
||||
|
||||
* "git p4" update.
|
||||
|
||||
* The "--format=<placeholder>" option of for-each-ref, branch and tag
|
||||
learned to show a few more traits of objects that can be learned by
|
||||
the object_info API.
|
||||
|
||||
* "git rebase -i" learned to re-execute a command given with 'exec'
|
||||
to run after it failed the last time.
|
||||
|
||||
* "git diff --color-moved-ws" updates.
|
||||
|
||||
* Custom userformat "log --format" learned %S atom that stands for
|
||||
the tip the traversal reached the commit from, i.e. --source.
|
||||
|
||||
* "git instaweb" learned to drive http.server that comes with
|
||||
"batteries included" Python installation (both Python2 & 3).
|
||||
|
||||
* A new encoding UTF-16LE-BOM has been invented to force encoding to
|
||||
UTF-16 with BOM in little endian byte order, which cannot be directly
|
||||
generated by using iconv.
|
||||
|
||||
* A new date format "--date=human" that morphs its output depending
|
||||
on how far the time is from the current time has been introduced.
|
||||
"--date=auto:human" can be used to use this new format (or any
|
||||
existing format) when the output is going to the pager or to the
|
||||
terminal, and otherwise the default format.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* Code clean-up with optimization for the codepath that checks
|
||||
(non-)existence of loose objects.
|
||||
|
||||
* More codepaths have become aware of working with in-core repository
|
||||
instances other than the default "the_repository".
|
||||
|
||||
* The "strncat()" function is now among the banned functions.
|
||||
|
||||
* Portability updates for the HPE NonStop platform.
|
||||
|
||||
* Earlier we added "-Wformat-security" to developer builds, assuming
|
||||
that "-Wall" (which includes "-Wformat" which in turn is required
|
||||
to use "-Wformat-security") is always in effect. This is not true
|
||||
when config.mak.autogen is in use, unfortunately. This has been
|
||||
fixed by unconditionally adding "-Wall" to developer builds.
|
||||
|
||||
* The loose object cache used to optimize existence look-up has been
|
||||
updated.
|
||||
|
||||
* Flaky tests can now be repeatedly run under load with the
|
||||
"--stress" option.
|
||||
|
||||
* Documentation/Makefile is getting prepared for manpage
|
||||
localization.
|
||||
|
||||
* "git fetch-pack" now can talk the version 2 protocol.
|
||||
|
||||
* sha-256 hash has been added and plumbed through the code to allow
|
||||
building Git with the "NewHash".
|
||||
|
||||
* Debugging help for http transport.
|
||||
|
||||
* "git fetch --deepen=<more>" has been corrected to work over v2
|
||||
protocol.
|
||||
|
||||
* The code to walk tree objects has been taught that we may be
|
||||
working with object names that are not computed with SHA-1.
|
||||
|
||||
* The in-core repository instances are passed through more codepaths.
|
||||
|
||||
* Update the protocol message specification to allow only the limited
|
||||
use of scaled quantities. This is to ensure potential compatibility
|
||||
issues will not get out of hand.
|
||||
|
||||
* Micro-optimize the code that prepares commit objects to be walked
|
||||
by "git rev-list" when the commit-graph is available.
|
||||
|
||||
* "git fetch" and "git upload-pack" learned to send all exchanges over
|
||||
the sideband channel while talking the v2 protocol.
|
||||
|
||||
* The codepath to write out commit-graph has been optimized by
|
||||
following the usual pattern of visiting objects in in-pack order.
|
||||
|
||||
* The codepath to show progress meter while writing out commit-graph
|
||||
file has been improved.
|
||||
|
||||
* Cocci rules have been updated to encourage use of strbuf_addbuf().
|
||||
|
||||
* "git rebase --merge" has been reimplemented by reusing the internal
|
||||
machinery used for "git rebase -i".
|
||||
|
||||
* More code in "git bisect" has been rewritten in C.
|
||||
|
||||
* Instead of going through "git-rebase--am" scriptlet to use the "am"
|
||||
backend, the built-in version of "git rebase" learned to drive the
|
||||
"am" backend directly.
|
||||
|
||||
* The assumption to work on the single "in-core index" instance has
|
||||
been reduced from the library-ish part of the codebase.
|
||||
|
||||
* The test lint learned to catch non-portable "sed" options.
|
||||
|
||||
* "git pack-objects" learned another algorithm to compute the set of
|
||||
objects to send, that trades the resulting packfile off to save
|
||||
traversal cost to favor small pushes.
|
||||
|
||||
* The travis CI scripts have been corrected to build Git with the
|
||||
compiler(s) of our choice.
|
||||
|
||||
* "git submodule update" learned to abort early when core.worktree
|
||||
for the submodule is not set correctly to prevent spreading damage.
|
||||
|
||||
* Test suite has been adjusted to run on Azure Pipeline.
|
||||
|
||||
* Running "Documentation/doc-diff x" from anywhere other than the
|
||||
top-level of the working tree did not show the usage string
|
||||
correctly, which has been fixed.
|
||||
|
||||
* Use of the sparse tool got easier to customize from the command
|
||||
line to help developers.
|
||||
|
||||
* A new target "coverage-prove" to run the coverage test under
|
||||
"prove" has been added.
|
||||
|
||||
* A flakey "p4" test has been removed.
|
||||
|
||||
* The code and tests assume that the system supplied iconv() would
|
||||
always use BOM in its output when asked to encode to UTF-16 (or
|
||||
UTF-32), but apparently some implementations output big-endian
|
||||
without BOM. A compile-time knob has been added to help such
|
||||
systems (e.g. NonStop) to add BOM to the output to increase
|
||||
portability.
|
||||
|
||||
|
||||
Fixes since v2.20
|
||||
-----------------
|
||||
|
||||
* Updates for corner cases in merge-recursive.
|
||||
(merge cc4cb0902c en/merge-path-collision later to maint).
|
||||
|
||||
* "git checkout frotz" (without any double-dash) avoids ambiguity by
|
||||
making sure 'frotz' cannot be interpreted as a revision and as a
|
||||
path at the same time. This safety has been updated to check also
|
||||
a unique remote-tracking branch 'frotz' in a remote, when dwimming
|
||||
to create a local branch 'frotz' out of a remote-tracking branch
|
||||
'frotz' from a remote.
|
||||
(merge be4908f103 nd/checkout-dwim-fix later to maint).
|
||||
|
||||
* Refspecs configured with "git -c var=val clone" did not propagate
|
||||
to the resulting repository, which has been corrected.
|
||||
(merge 7eae4a3ac4 sg/clone-initial-fetch-configuration later to maint).
|
||||
|
||||
* A properly configured username/email is required under
|
||||
user.useConfigOnly in order to create commits; now "git stash"
|
||||
(even though it creates commit objects to represent stash entries)
|
||||
command is exempt from the requirement.
|
||||
(merge 3bc2111fc2 sd/stash-wo-user-name later to maint).
|
||||
|
||||
* The http-backend CGI process did not correctly clean up the child
|
||||
processes it spawns to run upload-pack etc. when it dies itself,
|
||||
which has been corrected.
|
||||
(merge 02818a98d7 mk/http-backend-kill-children-before-exit later to maint).
|
||||
|
||||
* "git rev-list --exclude-promisor-objects" had to take an object
|
||||
that does not exist locally (and is lazily available) from the
|
||||
command line without barfing, but the code dereferenced NULL.
|
||||
(merge 4cf67869b2 md/list-lazy-objects-fix later to maint).
|
||||
|
||||
* The traversal over tree objects has learned to honor
|
||||
":(attr:label)" pathspec match, which has been implemented only for
|
||||
enumerating paths on the filesystem.
|
||||
(merge 5a0b97b34c nd/attr-pathspec-in-tree-walk later to maint).
|
||||
|
||||
* BSD port updates.
|
||||
(merge 4e3ecbd439 cb/openbsd-allows-reading-directory later to maint).
|
||||
(merge b6bdc2a0f5 cb/t5004-empty-tar-archive-fix later to maint).
|
||||
(merge 82cbc8cde2 cb/test-lint-cp-a later to maint).
|
||||
|
||||
* Lines that begin with a certain keyword that come over the wire, as
|
||||
well as lines that consist only of one of these keywords, ought to
|
||||
be painted in color for easier eyeballing, but the latter was
|
||||
broken ever since the feature was introduced in 2.19, which has
|
||||
been corrected.
|
||||
(merge 1f67290450 hn/highlight-sideband-keywords later to maint).
|
||||
|
||||
* "git log -G<regex>" looked for a hunk in the "git log -p" patch
|
||||
output that contained a string that matches the given pattern.
|
||||
Optimize this code to ignore binary files, which by default will
|
||||
not show any hunk that would match any pattern (unless textconv or
|
||||
the --text option is in effect, that is).
|
||||
(merge e0e7cb8080 tb/log-G-binary later to maint).
|
||||
|
||||
* "git submodule update" ought to use a single job unless asked, but
|
||||
by mistake used multiple jobs, which has been fixed.
|
||||
(merge e3a9d1aca9 sb/submodule-fetchjobs-default-to-one later to maint).
|
||||
|
||||
* "git stripspace" should be usable outside a git repository, but
|
||||
under the "-s" or "-c" mode, it didn't.
|
||||
(merge 957da75802 jn/stripspace-wo-repository later to maint).
|
||||
|
||||
* Some of the documentation pages formatted incorrectly with
|
||||
Asciidoctor, which have been fixed.
|
||||
(merge b62eb1d2f4 ma/asciidoctor later to maint).
|
||||
|
||||
* The core.worktree setting in a submodule repository should not be
|
||||
pointing at a directory when the submodule loses its working tree
|
||||
(e.g. getting deinit'ed), but the code did not properly maintain
|
||||
this invariant.
|
||||
|
||||
* With zsh, "git cmd path<TAB>" was completed to "git cmd path name"
|
||||
when the completed path has a special character like SP in it,
|
||||
without any attempt to keep "path name" a single filename. This
|
||||
has been fixed to complete it to "git cmd path\ name" just like
|
||||
Bash completion does.
|
||||
|
||||
* The test suite tried to see if it is run under bash, but the check
|
||||
itself failed under some other implementations of shell (notably
|
||||
under NetBSD). This has been corrected.
|
||||
(merge 54ea72f09c sg/test-bash-version-fix later to maint).
|
||||
|
||||
* "git gc" and "git repack" did not close the open packfiles that
|
||||
they found unneeded before removing them, which didn't work on a
|
||||
platform incapable of removing an open file. This has been
|
||||
corrected.
|
||||
(merge 5bdece0d70 js/gc-repack-close-before-remove later to maint).
|
||||
|
||||
* The code to drive GIT_EXTERNAL_DIFF command relied on the string
|
||||
returned from getenv() to be non-volatile, which is not true, that
|
||||
has been corrected.
|
||||
(merge 6776a84dae kg/external-diff-save-env later to maint).
|
||||
|
||||
* There were many places the code relied on the string returned from
|
||||
getenv() to be non-volatile, which is not true, that have been
|
||||
corrected.
|
||||
(merge 0da0e9268b jk/save-getenv-result later to maint).
|
||||
|
||||
* The v2 upload-pack protocol implementation failed to honor
|
||||
hidden-ref configuration, which has been corrected.
|
||||
(merge e20b4192a3 jk/proto-v2-hidden-refs-fix later to maint).
|
||||
|
||||
* "git fetch --recurse-submodules" may not fetch the necessary commit
|
||||
that is bound to the superproject, which is getting corrected.
|
||||
(merge be76c21282 sb/submodule-recursive-fetch-gets-the-tip later to maint).
|
||||
|
||||
* "git rebase" internally runs "checkout" to switch between branches,
|
||||
and the command used to call the post-checkout hook, but the
|
||||
reimplementation stopped doing so, which is getting fixed.
|
||||
|
||||
* "git add -e" got confused when the change it wants to let the user
|
||||
edit is smaller than the previous change that was left over in a
|
||||
temporary file.
|
||||
(merge fa6f225e01 js/add-e-clear-patch-before-stating later to maint).
|
||||
|
||||
* "git p4" failed to update a shelved change when there were moved
|
||||
files, which has been corrected.
|
||||
(merge 7a10946ab9 ld/git-p4-shelve-update-fix later to maint).
|
||||
|
||||
* The codepath to read from the commit-graph file attempted to read
|
||||
past the end of it when the file's table-of-contents was corrupt.
|
||||
|
||||
* The compat/obstack code had casts that -Wcast-function-type
|
||||
compilation option found questionable.
|
||||
(merge 764473d257 sg/obstack-cast-function-type-fix later to maint).
|
||||
|
||||
* An obvious typo in an assertion error message has been fixed.
|
||||
(merge 3c27e2e059 cc/test-ref-store-typofix later to maint).
|
||||
|
||||
* In Git for Windows, "git clone \\server\share\path" etc. that uses
|
||||
UNC paths from command line had bad interaction with its shell
|
||||
emulation.
|
||||
|
||||
* "git add --ignore-errors" did not work as advertised and instead
|
||||
worked as an unintended synonym for "git add --renormalize", which
|
||||
has been fixed.
|
||||
(merge e2c2a37545 jk/add-ignore-errors-bit-assignment-fix later to maint).
|
||||
|
||||
* On a case-insensitive filesystem, we failed to compare the part of
|
||||
the path that is above the worktree directory in an absolute
|
||||
pathname, which has been corrected.
|
||||
|
||||
* Asking "git check-attr" about a macro (e.g. "binary") on a specific
|
||||
path did not work correctly, even though "git check-attr -a" listed
|
||||
such a macro correctly. This has been corrected.
|
||||
(merge 7b95849be4 jk/attr-macro-fix later to maint).
|
||||
|
||||
* "git pack-objects" incorrectly used uninitialized mutex, which has
|
||||
been corrected.
|
||||
(merge edb673cf10 ph/pack-objects-mutex-fix later to maint).
|
||||
|
||||
* "git checkout -b <new> [HEAD]" to create a new branch from the
|
||||
current commit and check it out ought to be a no-op in the index
|
||||
and the working tree in normal cases, but there are corner cases
|
||||
that do require updates to the index and the working tree. Running
|
||||
it immediately after "git clone --no-checkout" is one of these
|
||||
cases that an earlier optimization kicked in incorrectly, which has
|
||||
been fixed.
|
||||
(merge 8424bfd45b bp/checkout-new-branch-optim later to maint).
|
||||
|
||||
* "git diff --color-moved --cc --stat -p" did not work well due to
|
||||
funny interaction between a bug in color-moved and the rest, which
|
||||
has been fixed.
|
||||
(merge dac03b5518 jk/diff-cc-stat-fixes later to maint).
|
||||
|
||||
* When GIT_SEQUENCE_EDITOR is set, the command was incorrectly
|
||||
started when modes of "git rebase" that implicitly uses the
|
||||
machinery for the interactive rebase are run, which has been
|
||||
corrected.
|
||||
(merge 891d4a0313 pw/no-editor-in-rebase-i-implicit later to maint).
|
||||
|
||||
* The commit-graph facility did not work when in-core objects that
|
||||
are promoted from unknown type to commit (e.g. a commit that is
|
||||
accessed via a tag that refers to it) were involved, which has been
|
||||
corrected.
|
||||
(merge 4468d4435c sg/object-as-type-commit-graph-fix later to maint).
|
||||
|
||||
* "git fetch" output cleanup.
|
||||
(merge dc40b24df4 nd/fetch-compact-update later to maint).
|
||||
|
||||
* "git cat-file --batch" reported a dangling symbolic link by
|
||||
mistake, when it wanted to report that a given name is ambiguous.
|
||||
|
||||
* Documentation around core.crlf has been updated.
|
||||
(merge c9446f0504 jk/autocrlf-overrides-eol-doc later to maint).
|
||||
|
||||
* The documentation of "git commit-tree" said that the command
|
||||
understands "--gpg-sign" in addition to "-S", but the command line
|
||||
parser did not know about the longhand, which has been corrected.
|
||||
|
||||
* "git rebase -x $cmd" did not reject multi-line command, even though
|
||||
the command is incapable of handling such a command. It now is
|
||||
rejected upfront.
|
||||
(merge c762aada1a pw/rebase-x-sanity-check later to maint).
|
||||
|
||||
* Output from "git help" was not correctly aligned, which has been
|
||||
fixed.
|
||||
(merge 6195a76da4 nd/help-align-command-desc later to maint).
|
||||
|
||||
* The "git submodule summary" subcommand showed shortened commit
|
||||
object names by mechanically truncating them at 7-hexdigit, which
|
||||
has been improved to let "rev-parse --short" scale the length of
|
||||
the abbreviation with the size of the repository.
|
||||
(merge 0586a438f6 sh/submodule-summary-abbrev-fix later to maint).
|
||||
|
||||
* The way the OSX build jobs updates its build environment used the
|
||||
"--quiet" option to "brew update" command, but it wasn't all that
|
||||
quiet to be useful. The use of the option has been replaced with
|
||||
an explicit redirection to the /dev/null (which incidentally would
|
||||
have worked around a breakage by recent updates to homebrew, which
|
||||
has fixed itself already).
|
||||
(merge a1ccaedd62 sg/travis-osx-brew-breakage-workaround later to maint).
|
||||
|
||||
* "git --work-tree=$there --git-dir=$here describe --dirty" did not
|
||||
work correctly as it did not pay attention to the location of the
|
||||
worktree specified by the user by mistake, which has been
|
||||
corrected.
|
||||
(merge c801170b0c ss/describe-dirty-in-the-right-directory later to maint).
|
||||
|
||||
* "git fetch" over protocol v2 that needs to make a second connection
|
||||
to backfill tags did not clear a variable that holds shallow
|
||||
repository information correctly, leading to an access of freed
|
||||
piece of memory.
|
||||
|
||||
* Some errors from the other side coming over smart HTTP transport
|
||||
were not noticed, which has been corrected.
|
||||
|
||||
* Code cleanup, docfix, build fix, etc.
|
||||
(merge 89ba9a79ae hb/t0061-dot-in-path-fix later to maint).
|
||||
(merge d173e799ea sb/diff-color-moved-config-option-fixup later to maint).
|
||||
(merge a8f5a59067 en/directory-renames-nothanks-doc-update later to maint).
|
||||
(merge ec36c42a63 nd/indentation-fix later to maint).
|
||||
(merge f116ee21cd do/gitweb-strict-export-conf-doc later to maint).
|
||||
(merge 112ea42663 fd/gitweb-snapshot-conf-doc-fix later to maint).
|
||||
(merge 1cadad6f65 tb/use-common-win32-pathfuncs-on-cygwin later to maint).
|
||||
(merge 57e9dcaa65 km/rebase-doc-typofix later to maint).
|
||||
(merge b8b4cb27e6 ds/gc-doc-typofix later to maint).
|
||||
(merge 3b3357626e nd/style-opening-brace later to maint).
|
||||
(merge b4583d5595 es/doc-worktree-guessremote-config later to maint).
|
||||
(merge cce99cd8c6 ds/commit-graph-assert-missing-parents later to maint).
|
||||
(merge 0650614982 cy/completion-typofix later to maint).
|
||||
(merge 6881925ef5 rs/sha1-file-close-mapped-file-on-error later to maint).
|
||||
(merge bd8d6f0def en/show-ref-doc-fix later to maint).
|
||||
(merge 1747125e2c cc/partial-clone-doc-typofix later to maint).
|
||||
(merge e01378753d cc/fetch-error-message-fix later to maint).
|
||||
(merge 54e8c11215 jk/remote-insteadof-cleanup later to maint).
|
||||
(merge d609615f48 js/test-git-installed later to maint).
|
||||
(merge ba170517be ja/doc-style-fix later to maint).
|
||||
(merge 86fb1c4e77 km/init-doc-typofix later to maint).
|
||||
(merge 5cfd4a9d10 nd/commit-doc later to maint).
|
||||
(merge 9fce19a431 ab/diff-tree-doc-fix later to maint).
|
||||
(merge 2e285e7803 tz/gpg-test-fix later to maint).
|
||||
(merge 5427de960b kl/pretty-doc-markup-fix later to maint).
|
||||
(merge 3815f64b0d js/mingw-host-cpu later to maint).
|
||||
(merge 5fe81438b5 rj/sequencer-sign-off-header-static later to maint).
|
||||
(merge 18a4f6be6b nd/fileno-may-be-macro later to maint).
|
||||
(merge 99e9ab54ab kd/t0028-octal-del-is-377-not-777 later to maint).
|
@ -1,597 +0,0 @@
|
||||
Git 2.22 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.21
|
||||
-------------------
|
||||
|
||||
Backward compatibility note
|
||||
|
||||
* The filter specification "--filter=sparse:path=<path>" used to
|
||||
create a lazy/partial clone has been removed. Using a blob that is
|
||||
part of the project as sparse specification is still supported with
|
||||
the "--filter=sparse:oid=<blob>" option.
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* "git checkout --no-overlay" can be used to trigger a new mode of
|
||||
checking out paths out of the tree-ish, that allows paths that
|
||||
match the pathspec that are in the current index and working tree
|
||||
and are not in the tree-ish.
|
||||
|
||||
* The %(trailers) formatter in "git log --format=..." now allows to
|
||||
optionally pick trailers selectively by keyword, show only values,
|
||||
etc.
|
||||
|
||||
* Four new configuration variables {author,committer}.{name,email}
|
||||
have been introduced to override user.{name,email} in more specific
|
||||
cases.
|
||||
|
||||
* Command-line completion (in contrib/) learned to tab-complete the
|
||||
"git submodule absorbgitdirs" subcommand.
|
||||
|
||||
* "git branch" learned a new subcommand "--show-current".
|
||||
|
||||
* Output from "diff --cc" did not show the original paths when the
|
||||
merge involved renames. A new option adds the paths in the
|
||||
original trees to the output.
|
||||
|
||||
* The command line completion (in contrib/) has been taught to
|
||||
complete more subcommand parameters.
|
||||
|
||||
* The final report from "git bisect" used to show the suspected
|
||||
culprit using a raw "diff-tree", with which there is no output for
|
||||
a merge commit. This has been updated to use a more modern and
|
||||
human readable output that still is concise enough.
|
||||
|
||||
* "git rebase --rebase-merges" replaces its old "--preserve-merges"
|
||||
option; the latter is now marked as deprecated.
|
||||
|
||||
* Error message given while cloning with --recurse-submodules has
|
||||
been updated.
|
||||
|
||||
* The completion helper code now pays attention to repository-local
|
||||
configuration (when available), which allows --list-cmds to honour
|
||||
a repository specific setting of completion.commands, for example.
|
||||
|
||||
* "git mergetool" learned to offer Sublime Merge (smerge) as one of
|
||||
its backends.
|
||||
|
||||
* A new hook "post-index-change" is called when the on-disk index
|
||||
file changes, which can help e.g. a virtualized working tree
|
||||
implementation.
|
||||
|
||||
* "git difftool" can now run outside a repository.
|
||||
|
||||
* "git checkout -m <other>" was about carrying the differences
|
||||
between HEAD and the working-tree files forward while checking out
|
||||
another branch, and ignored the differences between HEAD and the
|
||||
index. The command has been taught to abort when the index and the
|
||||
HEAD are different.
|
||||
|
||||
* A progress indicator has been added to the "index-pack" step, which
|
||||
often makes users wait for completion during "git clone".
|
||||
|
||||
* "git submodule" learns "set-branch" subcommand that allows the
|
||||
submodule.*.branch settings to be modified.
|
||||
|
||||
* "git merge-recursive" backend recently learned a new heuristics to
|
||||
infer file movement based on how other files in the same directory
|
||||
moved. As this is inherently less robust heuristics than the one
|
||||
based on the content similarity of the file itself (rather than
|
||||
based on what its neighbours are doing), it sometimes gives an
|
||||
outcome unexpected by the end users. This has been toned down to
|
||||
leave the renamed paths in higher/conflicted stages in the index so
|
||||
that the user can examine and confirm the result.
|
||||
|
||||
* "git tag" learned to give an advice suggesting it might be a
|
||||
mistake when creating an annotated or signed tag that points at
|
||||
another tag.
|
||||
|
||||
* The "git pack-objects" command learned to report the number of
|
||||
objects it packed via the trace2 mechanism.
|
||||
|
||||
* The list of conflicted paths shown in the editor while concluding a
|
||||
conflicted merge was shown above the scissors line when the
|
||||
clean-up mode is set to "scissors", even though it was commented
|
||||
out just like the list of updated paths and other information to
|
||||
help the user explain the merge better.
|
||||
|
||||
* The trace2 tracing facility learned to auto-generate a filename
|
||||
when told to log to a directory.
|
||||
|
||||
* "git clone" learned a new --server-option option when talking over
|
||||
the protocol version 2.
|
||||
|
||||
* The connectivity bitmaps are created by default in bare
|
||||
repositories now; also the pathname hash-cache is created by
|
||||
default to avoid making crappy deltas when repacking.
|
||||
|
||||
* "git branch new A...B" and "git checkout -b new A...B" have been
|
||||
taught that in their contexts, the notation A...B means "the merge
|
||||
base between these two commits", just like "git checkout A...B"
|
||||
detaches HEAD at that commit.
|
||||
|
||||
* Update "git difftool" and "git mergetool" so that the combinations
|
||||
of {diff,merge}.{tool,guitool} configuration variables serve as
|
||||
fallback settings of each other in a sensible order.
|
||||
|
||||
* The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
|
||||
mode; they are now explicitly marked as mutually incompatible.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* The diff machinery, one of the oldest parts of the system, which
|
||||
long predates the parse-options API, uses fairly long and complex
|
||||
handcrafted option parser. This is being rewritten to use the
|
||||
parse-options API.
|
||||
|
||||
* The implementation of pack-redundant has been updated for
|
||||
performance in a repository with many packfiles.
|
||||
|
||||
* A more structured way to obtain execution trace has been added.
|
||||
|
||||
* "git prune" has been taught to take advantage of reachability
|
||||
bitmap when able.
|
||||
|
||||
* The command line parser of "git commit-tree" has been rewritten to
|
||||
use the parse-options API.
|
||||
|
||||
* Suggest GitGitGadget instead of submitGit as a way to submit
|
||||
patches based on GitHub PR to us.
|
||||
|
||||
* The test framework has been updated to help developers by making it
|
||||
easier to run most of the tests under different versions of
|
||||
over-the-wire protocols.
|
||||
|
||||
* Dev support update to make it easier to compare two formatted
|
||||
results from our documentation.
|
||||
|
||||
* The scripted "git rebase" implementation has been retired.
|
||||
|
||||
* "git multi-pack-index verify" did not scale well with the number of
|
||||
packfiles, which is being improved.
|
||||
|
||||
* "git stash" has been rewritten in C.
|
||||
|
||||
* The "check-docs" Makefile target to support developers has been
|
||||
updated.
|
||||
|
||||
* The tests have been updated not to rely on the abbreviated option
|
||||
names the parse-options API offers, to protect us from an
|
||||
abbreviated form of an option that used to be unique within the
|
||||
command getting non-unique when a new option that share the same
|
||||
prefix is added.
|
||||
|
||||
* The scripted version of "git rebase -i" wrote and rewrote the todo
|
||||
list many times during a single step of its operation, and the
|
||||
recent C-rewrite made a faithful conversion of the logic to C. The
|
||||
implementation has been updated to carry necessary information
|
||||
around in-core to avoid rewriting the same file over and over
|
||||
unnecessarily.
|
||||
|
||||
* Test framework update to more robustly clean up leftover files and
|
||||
processes after tests are done.
|
||||
|
||||
* Conversion from unsigned char[20] to struct object_id continues.
|
||||
|
||||
* While running "git diff" in a lazy clone, we can upfront know which
|
||||
missing blobs we will need, instead of waiting for the on-demand
|
||||
machinery to discover them one by one. The code learned to aim to
|
||||
achieve better performance by batching the request for these
|
||||
promised blobs.
|
||||
|
||||
* During an initial "git clone --depth=..." partial clone, it is
|
||||
pointless to spend cycles for a large portion of the connectivity
|
||||
check that enumerates and skips promisor objects (which by
|
||||
definition is all objects fetched from the other side). This has
|
||||
been optimized out.
|
||||
|
||||
* Mechanically and systematically drop "extern" from function
|
||||
declaration.
|
||||
|
||||
* The script to aggregate perf result unconditionally depended on
|
||||
libjson-perl even though it did not have to, which has been
|
||||
corrected.
|
||||
|
||||
* The internal implementation of "git rebase -i" has been updated to
|
||||
avoid forking a separate "rebase--interactive" process.
|
||||
|
||||
* Allow DEP and ASLR for Windows build to for security hardening.
|
||||
|
||||
* Performance test framework has been broken and measured the version
|
||||
of Git that happens to be on $PATH, not the specified one to
|
||||
measure, for a while, which has been corrected.
|
||||
|
||||
* Optionally "make coccicheck" can feed multiple source files to
|
||||
spatch, gaining performance while spending more memory.
|
||||
|
||||
* Attempt to use an abbreviated option in "git clone --recurs" is
|
||||
responded by a request to disambiguate between --recursive and
|
||||
--recurse-submodules, which is bad because these two are synonyms.
|
||||
The parse-options API has been extended to define such synonyms
|
||||
more easily and not produce an unnecessary failure.
|
||||
|
||||
* A pair of private functions in http.c that had names similar to
|
||||
fread/fwrite did not return the number of elements, which was found
|
||||
to be confusing.
|
||||
|
||||
* Update collision-detecting SHA-1 code to build properly on HP-UX.
|
||||
|
||||
|
||||
Fixes since v2.21
|
||||
-----------------
|
||||
|
||||
* "git prune-packed" did not notice and complain against excess
|
||||
arguments given from the command line, which now it does.
|
||||
(merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).
|
||||
|
||||
* Split-index fix.
|
||||
(merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).
|
||||
|
||||
* "git diff --no-index" may still want to access Git goodies like
|
||||
--ext-diff and --textconv, but so far these have been ignored,
|
||||
which has been corrected.
|
||||
(merge 287ab28bfa jk/diff-no-index-initialize later to maint).
|
||||
|
||||
* Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
|
||||
a bug in the latter (lack of authentication retry) and generally
|
||||
improves the code base.
|
||||
(merge a97d00799a jt/http-auth-proto-v2-fix later to maint).
|
||||
|
||||
* The include file compat/bswap.h has been updated so that it is safe
|
||||
to (accidentally) include it more than once.
|
||||
(merge 33aa579a55 jk/guard-bswap-header later to maint).
|
||||
|
||||
* The set of header files used by "make hdr-check" unconditionally
|
||||
included sha256/gcrypt.h, even when it is not used, causing the
|
||||
make target to fail. We now skip it when GCRYPT_SHA256 is not in
|
||||
use.
|
||||
(merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).
|
||||
|
||||
* The Makefile uses 'find' utility to enumerate all the *.h header
|
||||
files, which is expensive on platforms with slow filesystems; it
|
||||
now optionally uses "ls-files" if working within a repository,
|
||||
which is a trick similar to how all sources are enumerated to run
|
||||
ETAGS on.
|
||||
(merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).
|
||||
|
||||
* "git rebase" that was reimplemented in C did not set ORIG_HEAD
|
||||
correctly, which has been corrected.
|
||||
(merge cbd29ead92 js/rebase-orig-head-fix later to maint).
|
||||
|
||||
* Dev support.
|
||||
(merge f545737144 js/stress-test-ui-tweak later to maint).
|
||||
|
||||
* CFLAGS now can be tweaked when invoking Make while using
|
||||
DEVELOPER=YesPlease; this did not work well before.
|
||||
(merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).
|
||||
|
||||
* "git fsck --connectivity-only" omits computation necessary to sift
|
||||
the objects that are not reachable from any of the refs into
|
||||
unreachable and dangling. This is now enabled when dangling
|
||||
objects are requested (which is done by default, but can be
|
||||
overridden with the "--no-dangling" option).
|
||||
(merge 8d8c2a5aef jk/fsck-doc later to maint).
|
||||
|
||||
* On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
|
||||
the upload-pack that runs on the other end that hangs up after
|
||||
detecting an error could cause "git fetch" to die with a signal,
|
||||
which led to a flaky test. "git fetch" now ignores SIGPIPE during
|
||||
the network portion of its operation (this is not a problem as we
|
||||
check the return status from our write(2)s).
|
||||
(merge 143588949c jk/no-sigpipe-during-network-transport later to maint).
|
||||
|
||||
* A recent update broke "is this object available to us?" check for
|
||||
well-known objects like an empty tree (which should yield "yes",
|
||||
even when there is no on-disk object for an empty tree), which has
|
||||
been corrected.
|
||||
(merge f06ab027ef jk/virtual-objects-do-exist later to maint).
|
||||
|
||||
* The setup code has been cleaned up to avoid leaks around the
|
||||
repository_format structure.
|
||||
(merge e8805af1c3 ma/clear-repository-format later to maint).
|
||||
|
||||
* "git config --type=color ..." is meant to replace "git config --get-color"
|
||||
but there is a slight difference that wasn't documented, which is
|
||||
now fixed.
|
||||
(merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).
|
||||
|
||||
* When the "clean" filter can reduce the size of a huge file in the
|
||||
working tree down to a small "token" (a la Git LFS), there is no
|
||||
point in allocating a huge scratch area upfront, but the buffer is
|
||||
sized based on the original file size. The convert mechanism now
|
||||
allocates very minimum and reallocates as it receives the output
|
||||
from the clean filter process.
|
||||
(merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).
|
||||
|
||||
* "git rebase" uses the refs/rewritten/ hierarchy to store its
|
||||
intermediate states, which inherently makes the hierarchy per
|
||||
worktree, but it didn't quite work well.
|
||||
(merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).
|
||||
|
||||
* "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
|
||||
output as it should. This has been corrected.
|
||||
(merge 05314efaea jk/line-log-with-patch later to maint).
|
||||
|
||||
* "git worktree add" used to do a "find an available name with stat
|
||||
and then mkdir", which is race-prone. This has been fixed by using
|
||||
mkdir and reacting to EEXIST in a loop.
|
||||
(merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).
|
||||
|
||||
* Build update for SHA-1 with collision detection.
|
||||
(merge 07a20f569b jk/sha1dc later to maint).
|
||||
|
||||
* Build procedure has been fixed around use of asciidoctor instead of
|
||||
asciidoc.
|
||||
(merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).
|
||||
|
||||
* remote-http transport did not anonymize URLs reported in its error
|
||||
messages at places.
|
||||
(merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).
|
||||
|
||||
* Error messages given from the http transport have been updated so
|
||||
that they can be localized.
|
||||
(merge ed8b4132c8 js/remote-curl-i18n later to maint).
|
||||
|
||||
* "git init" forgot to read platform-specific repository
|
||||
configuration, which made Windows port to ignore settings of
|
||||
core.hidedotfiles, for example.
|
||||
|
||||
* A corner-case object name ambiguity while the sequencer machinery
|
||||
is working (e.g. "rebase -i -x") has been fixed.
|
||||
|
||||
* "git format-patch" did not diagnose an error while opening the
|
||||
output file for the cover-letter, which has been corrected.
|
||||
(merge 2fe95f494c jc/format-patch-error-check later to maint).
|
||||
|
||||
* "git checkout -f <branch>" while the index has an unmerged path
|
||||
incorrectly left some paths in an unmerged state, which has been
|
||||
corrected.
|
||||
|
||||
* A corner case bug in the refs API has been corrected.
|
||||
(merge d3322eb28b jk/refs-double-abort later to maint).
|
||||
|
||||
* Unicode update.
|
||||
(merge 584b62c37b bb/unicode-12 later to maint).
|
||||
|
||||
* dumb-http walker has been updated to share more error recovery
|
||||
strategy with the normal codepath.
|
||||
|
||||
* A buglet in configuration parser has been fixed.
|
||||
(merge 19e7fdaa58 nd/include-if-wildmatch later to maint).
|
||||
|
||||
* The documentation for "git read-tree --reset -u" has been updated.
|
||||
(merge b5a0bd694c nd/read-tree-reset-doc later to maint).
|
||||
|
||||
* Code clean-up around a much-less-important-than-it-used-to-be
|
||||
update_server_info() function.
|
||||
(merge b3223761c8 jk/server-info-rabbit-hole later to maint).
|
||||
|
||||
* The message given when "git commit -a <paths>" errors out has been
|
||||
updated.
|
||||
(merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).
|
||||
|
||||
* "git cherry-pick --options A..B", after giving control back to the
|
||||
user to ask help resolving a conflicted step, did not honor the
|
||||
options it originally received, which has been corrected.
|
||||
|
||||
* Various glitches in "git gc" around reflog handling have been fixed.
|
||||
|
||||
* The code to read from commit-graph file has been cleanup with more
|
||||
careful error checking before using data read from it.
|
||||
|
||||
* Performance fix around "git fetch" that grabs many refs.
|
||||
(merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).
|
||||
|
||||
* Protocol v2 support in "git fetch-pack" of shallow clones has been
|
||||
corrected.
|
||||
|
||||
* Performance fix around "git blame", especially in a linear history
|
||||
(which is the norm we should optimize for).
|
||||
(merge f892014943 dk/blame-keep-origin-blob later to maint).
|
||||
|
||||
* Performance fix for "rev-list --parents -- pathspec".
|
||||
(merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).
|
||||
|
||||
* Updating the display with progress message has been cleaned up to
|
||||
deal better with overlong messages.
|
||||
(merge 545dc345eb sg/overlong-progress-fix later to maint).
|
||||
|
||||
* "git blame -- path" in a non-bare repository starts blaming from
|
||||
the working tree, and the same command in a bare repository errors
|
||||
out because there is no working tree by definition. The command
|
||||
has been taught to instead start blaming from the commit at HEAD,
|
||||
which is more useful.
|
||||
(merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).
|
||||
|
||||
* An underallocation in the code to read the untracked cache
|
||||
extension has been corrected.
|
||||
(merge 3a7b45a623 js/untracked-cache-allocfix later to maint).
|
||||
|
||||
* The code is updated to check the result of memory allocation before
|
||||
it is used in more places, by using xmalloc and/or xcalloc calls.
|
||||
(merge 999b951b28 jk/xmalloc later to maint).
|
||||
|
||||
* The GETTEXT_POISON test option has been quite broken ever since it
|
||||
was made runtime-tunable, which has been fixed.
|
||||
(merge f88b9cb603 jc/gettext-test-fix later to maint).
|
||||
|
||||
* Test fix on APFS that is incapable of store paths in Latin-1.
|
||||
(merge 3889149619 js/iso8895-test-on-apfs later to maint).
|
||||
|
||||
* "git submodule foreach <command> --quiet" did not pass the option
|
||||
down correctly, which has been corrected.
|
||||
(merge a282f5a906 nd/submodule-foreach-quiet later to maint).
|
||||
|
||||
* "git send-email" has been taught to use quoted-printable when the
|
||||
payload contains carriage-return. The use of the mechanism is in
|
||||
line with the design originally added the codepath that chooses QP
|
||||
when the payload has overly long lines.
|
||||
(merge 74d76a1701 bc/send-email-qp-cr later to maint).
|
||||
|
||||
* The recently added feature to add addresses that are on
|
||||
anything-by: trailers in 'git send-email' was found to be way too
|
||||
eager and considered nonsense strings as if they can be legitimate
|
||||
beginning of *-by: trailer. This has been tightened.
|
||||
|
||||
* Builds with gettext broke on recent macOS w/ Homebrew, which
|
||||
seems to have stopped including from /usr/local/include; this
|
||||
has been corrected.
|
||||
(merge 92a1377a2a js/macos-gettext-build later to maint).
|
||||
|
||||
* Running "git add" on a repository created inside the current
|
||||
repository is an explicit indication that the user wants to add it
|
||||
as a submodule, but when the HEAD of the inner repository is on an
|
||||
unborn branch, it cannot be added as a submodule. Worse, the files
|
||||
in its working tree can be added as if they are a part of the outer
|
||||
repository, which is not what the user wants. These problems are
|
||||
being addressed.
|
||||
(merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).
|
||||
|
||||
* "git cherry-pick" run with the "-x" or the "--signoff" option used
|
||||
to (and more importantly, ought to) clean up the commit log message
|
||||
with the --cleanup=space option by default, but this has been
|
||||
broken since late 2017. This has been fixed.
|
||||
|
||||
* When given a tag that points at a commit-ish, "git replace --graft"
|
||||
failed to peel the tag before writing a replace ref, which did not
|
||||
make sense because the old graft mechanism the feature wants to
|
||||
mimic only allowed to replace one commit object with another.
|
||||
This has been fixed.
|
||||
(merge ee521ec4cb cc/replace-graft-peel-tags later to maint).
|
||||
|
||||
* Code tightening against a "wrong" object appearing where an object
|
||||
of a different type is expected, instead of blindly assuming that
|
||||
the connection between objects are correctly made.
|
||||
(merge 97dd512af7 tb/unexpected later to maint).
|
||||
|
||||
* An earlier update for MinGW and Cygwin accidentally broke MSVC build,
|
||||
which has been fixed.
|
||||
(merge 22c3634c0f ss/msvc-path-utils-fix later to maint).
|
||||
|
||||
* %(push:track) token used in the --format option to "git
|
||||
for-each-ref" and friends was not showing the right branch, which
|
||||
has been fixed.
|
||||
(merge c646d0934e dr/ref-filter-push-track-fix later to maint).
|
||||
|
||||
* "make check-docs", "git help -a", etc. did not account for cases
|
||||
where a particular build may deliberately omit some subcommands,
|
||||
which has been corrected.
|
||||
|
||||
* The logic to tell if a Git repository has a working tree protects
|
||||
"git branch -D" from removing the branch that is currently checked
|
||||
out by mistake. The implementation of this logic was broken for
|
||||
repositories with unusual name, which unfortunately is the norm for
|
||||
submodules these days. This has been fixed.
|
||||
(merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).
|
||||
|
||||
* AIX shared the same build issues with other BSDs around fileno(fp),
|
||||
which has been corrected.
|
||||
(merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).
|
||||
|
||||
* The autoconf generated configure script failed to use the right
|
||||
gettext() implementations from -libintl by ignoring useless stub
|
||||
implementations shipped in some C library, which has been
|
||||
corrected.
|
||||
(merge b71e56a683 vk/autoconf-gettext later to maint).
|
||||
|
||||
* Fix index-pack perf test so that the repeated invocations always
|
||||
run in an empty repository, which emulates the initial clone
|
||||
situation better.
|
||||
(merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).
|
||||
|
||||
* A "ls-files" that emulates "find" to enumerate files in the working
|
||||
tree resulted in duplicated Makefile rules that caused the build to
|
||||
issue an unnecessary warning during a trial build after merge
|
||||
conflicts are resolved in working tree *.h files but before the
|
||||
resolved results are added to the index. This has been corrected.
|
||||
|
||||
* "git cherry-pick" (and "revert" that shares the same runtime engine)
|
||||
that deals with multiple commits got confused when the final step
|
||||
gets stopped with a conflict and the user concluded the sequence
|
||||
with "git commit". Attempt to fix it by cleaning up the state
|
||||
files used by these commands in such a situation.
|
||||
(merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).
|
||||
|
||||
* On a filesystem like HFS+, the names of the refs stored as filesystem
|
||||
entities may become different from what the end-user expects, just
|
||||
like files in the working tree get "renamed". Work around the
|
||||
mismatch by paying attention to the core.precomposeUnicode
|
||||
configuration.
|
||||
(merge 8e712ef6fc en/unicode-in-refnames later to maint).
|
||||
|
||||
* The code to generate the multi-pack idx file was not prepared to
|
||||
see too many packfiles and ran out of open file descriptor, which
|
||||
has been corrected.
|
||||
|
||||
* To run tests for Git SVN, our scripts for CI used to install the
|
||||
git-svn package (in the hope that it would bring in the right
|
||||
dependencies). This has been updated to install the more direct
|
||||
dependency, namely, libsvn-perl.
|
||||
(merge db864306cf sg/ci-libsvn-perl later to maint).
|
||||
|
||||
* "git cvsexportcommit" running on msys did not expect cvsnt showed
|
||||
"cvs status" output with CRLF line endings.
|
||||
|
||||
* The fsmonitor interface got out of sync after the in-core index
|
||||
file gets discarded, which has been corrected.
|
||||
(merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).
|
||||
|
||||
* "git status" did not know that the "label" instruction in the
|
||||
todo-list "rebase -i -r" uses should not be shown as a hex object
|
||||
name.
|
||||
|
||||
* A prerequisite check in the test suite to see if a working jgit is
|
||||
available was made more robust.
|
||||
(merge abd0f28983 tz/test-lib-check-working-jgit later to maint).
|
||||
|
||||
* The codepath to parse :<path> that obtains the object name for an
|
||||
indexed object has been made more robust.
|
||||
|
||||
* Code cleanup, docfix, build fix, etc.
|
||||
(merge 11f470aee7 jc/test-yes-doc later to maint).
|
||||
(merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
|
||||
(merge 5c326d1252 jk/unused-params later to maint).
|
||||
(merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
|
||||
(merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
|
||||
(merge 1ede45e44b en/merge-options-doc later to maint).
|
||||
(merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
|
||||
(merge c271dc28fd nd/no-more-check-racy later to maint).
|
||||
(merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
|
||||
(merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
|
||||
(merge 716a5af812 rd/gc-prune-doc-fix later to maint).
|
||||
(merge 50b206371d js/untravis-windows later to maint).
|
||||
(merge dbf47215e3 js/rebase-recreate-merge later to maint).
|
||||
(merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
|
||||
(merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
|
||||
(merge af91b0230c dl/ignore-docs later to maint).
|
||||
(merge 59a06e947b ra/t3600-test-path-funcs later to maint).
|
||||
(merge e041d0781b ar/t4150-remove-cruft later to maint).
|
||||
(merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
|
||||
(merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
|
||||
(merge ed31851fa6 ab/doc-misc-typofixes later to maint).
|
||||
(merge a7256debd4 nd/checkout-m-doc-update later to maint).
|
||||
(merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
|
||||
(merge 0b918b75af sg/t5318-cleanup later to maint).
|
||||
(merge 68ed71b53c cb/doco-mono later to maint).
|
||||
(merge a34dca2451 nd/interpret-trailers-docfix later to maint).
|
||||
(merge cf7b857a77 en/fast-import-parsing-fix later to maint).
|
||||
(merge fe61ccbc35 po/rerere-doc-fmt later to maint).
|
||||
(merge ffea0248bf po/describe-not-necessarily-7 later to maint).
|
||||
(merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
|
||||
(merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
|
||||
(merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
|
||||
(merge d8083e4180 km/t3000-retitle later to maint).
|
||||
(merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
|
||||
(merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
|
||||
(merge 6804ba3a58 cw/diff-highlight later to maint).
|
||||
(merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
|
||||
(merge d9ef573837 jk/apache-lsan later to maint).
|
||||
(merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
|
||||
(merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
|
||||
(merge 397a46db78 js/t5580-unc-alternate-test later to maint).
|
||||
(merge d4907720a2 cm/notes-comment-fix later to maint).
|
||||
(merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
|
||||
(merge 4c785c0edc js/rebase-config-bitfix later to maint).
|
||||
(merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).
|
@ -372,15 +372,15 @@ such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:".
|
||||
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
|
||||
|
||||
- `gitk-git/` comes from Paul Mackerras's gitk project:
|
||||
- 'gitk-git/' comes from Paul Mackerras's gitk project:
|
||||
|
||||
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/
|
||||
|
||||
|
@ -11,12 +11,12 @@ module Git
|
||||
def process(parent, target, attrs)
|
||||
if parent.document.basebackend? 'html'
|
||||
prefix = parent.document.attr('git-relative-html-prefix')
|
||||
%(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>)
|
||||
%(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>\n)
|
||||
elsif parent.document.basebackend? 'docbook'
|
||||
"<citerefentry>\n" \
|
||||
"<refentrytitle>#{target}</refentrytitle>" \
|
||||
"<manvolnum>#{attrs[1]}</manvolnum>\n" \
|
||||
"</citerefentry>"
|
||||
"</citerefentry>\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -422,8 +422,6 @@ include::config/submodule.txt[]
|
||||
|
||||
include::config/tag.txt[]
|
||||
|
||||
include::config/trace2.txt[]
|
||||
|
||||
include::config/transfer.txt[]
|
||||
|
||||
include::config/uploadarchive.txt[]
|
||||
|
@ -30,13 +30,6 @@ advice.*::
|
||||
tries to overwrite a remote ref that points at an
|
||||
object that is not a commit-ish, or make the remote
|
||||
ref point at an object that is not a commit-ish.
|
||||
pushUnqualifiedRefname::
|
||||
Shown when linkgit:git-push[1] gives up trying to
|
||||
guess based on the source and destination refs what
|
||||
remote ref namespace the source belongs in, but where
|
||||
we can still suggest that the user push to either
|
||||
refs/heads/* or refs/tags/* based on the type of the
|
||||
source object.
|
||||
statusHints::
|
||||
Show directions on how to proceed from the current
|
||||
state in the output of linkgit:git-status[1], in
|
||||
@ -90,6 +83,4 @@ advice.*::
|
||||
waitingForEditor::
|
||||
Print a message to the terminal whenever Git is waiting for
|
||||
editor input from the user.
|
||||
nestedTag::
|
||||
Advice shown if a user attempts to recursively tag a tag object.
|
||||
--
|
||||
|
@ -85,9 +85,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When `preserve` (deprecated in favor of `merges`), also pass
|
||||
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||
commits will not be flattened by running 'git pull'.
|
||||
When preserve, also pass `--preserve-merges` along to 'git rebase'
|
||||
so that locally committed merge commits will not be flattened
|
||||
by running 'git pull'.
|
||||
+
|
||||
When the value is `interactive`, the rebase is run in interactive mode.
|
||||
+
|
||||
|
@ -121,14 +121,11 @@ core.quotePath::
|
||||
|
||||
core.eol::
|
||||
Sets the line ending type to use in the working directory for
|
||||
files that are marked as text (either by having the `text`
|
||||
attribute set, or by having `text=auto` and Git auto-detecting
|
||||
the contents as text).
|
||||
files that have the `text` property set when core.autocrlf is false.
|
||||
Alternatives are 'lf', 'crlf' and 'native', which uses the platform's
|
||||
native line ending. The default value is `native`. See
|
||||
linkgit:gitattributes[5] for more information on end-of-line
|
||||
conversion. Note that this value is ignored if `core.autocrlf`
|
||||
is set to `true` or `input`.
|
||||
conversion.
|
||||
|
||||
core.safecrlf::
|
||||
If true, makes Git check if converting `CRLF` is reversible when
|
||||
@ -414,7 +411,7 @@ Common unit suffixes of 'k', 'm', or 'g' are supported.
|
||||
core.excludesFile::
|
||||
Specifies the pathname to the file that contains patterns to
|
||||
describe paths that are not meant to be tracked, in addition
|
||||
to `.gitignore` (per-directory) and `.git/info/exclude`.
|
||||
to '.gitignore' (per-directory) and '.git/info/exclude'.
|
||||
Defaults to `$XDG_CONFIG_HOME/git/ignore`.
|
||||
If `$XDG_CONFIG_HOME` is either not set or empty, `$HOME/.config/git/ignore`
|
||||
is used instead. See linkgit:gitignore[5].
|
||||
@ -429,8 +426,8 @@ core.askPass::
|
||||
command-line argument and write the password on its STDOUT.
|
||||
|
||||
core.attributesFile::
|
||||
In addition to `.gitattributes` (per-directory) and
|
||||
`.git/info/attributes`, Git looks into this file for attributes
|
||||
In addition to '.gitattributes' (per-directory) and
|
||||
'.git/info/attributes', Git looks into this file for attributes
|
||||
(see linkgit:gitattributes[5]). Path expansions are made the same
|
||||
way as for `core.excludesFile`. Its default value is
|
||||
`$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not
|
||||
@ -438,10 +435,10 @@ core.attributesFile::
|
||||
|
||||
core.hooksPath::
|
||||
By default Git will look for your hooks in the
|
||||
`$GIT_DIR/hooks` directory. Set this to different path,
|
||||
e.g. `/etc/git/hooks`, and Git will try to find your hooks in
|
||||
that directory, e.g. `/etc/git/hooks/pre-receive` instead of
|
||||
in `$GIT_DIR/hooks/pre-receive`.
|
||||
'$GIT_DIR/hooks' directory. Set this to different path,
|
||||
e.g. '/etc/git/hooks', and Git will try to find your hooks in
|
||||
that directory, e.g. '/etc/git/hooks/pre-receive' instead of
|
||||
in '$GIT_DIR/hooks/pre-receive'.
|
||||
+
|
||||
The path can be either absolute or relative. A relative path is
|
||||
taken as relative to the directory where the hooks are run (see
|
||||
|
@ -10,7 +10,7 @@ diff.autoRefreshIndex::
|
||||
|
||||
diff.dirstat::
|
||||
A comma separated list of `--dirstat` parameters specifying the
|
||||
default behavior of the `--dirstat` option to linkgit:git-diff[1]
|
||||
default behavior of the `--dirstat` option to linkgit:git-diff[1]`
|
||||
and friends. The defaults can be overridden on the command line
|
||||
(using `--dirstat=<param1,param2,...>`). The fallback defaults
|
||||
(when not changed by `diff.dirstat`) are `changes,noncumulative,3`.
|
||||
@ -73,7 +73,7 @@ diff.external::
|
||||
environment variable. The command is called with parameters
|
||||
as described under "git Diffs" in linkgit:git[1]. Note: if
|
||||
you want to use an external diff program only on a subset of
|
||||
your files, you might want to use linkgit:gitattributes[5] instead.
|
||||
your files, you might want to use linkgit:gitattributes[5] instead.
|
||||
|
||||
diff.ignoreSubmodules::
|
||||
Sets the default value of --ignore-submodules. Note that this
|
||||
|
@ -23,9 +23,9 @@ When `fsck.<msg-id>` is set, errors can be switched to warnings and
|
||||
vice versa by configuring the `fsck.<msg-id>` setting where the
|
||||
`<msg-id>` is the fsck message ID and the value is one of `error`,
|
||||
`warn` or `ignore`. For convenience, fsck prefixes the error/warning
|
||||
with the message ID, e.g. "missingEmail: invalid author/committer
|
||||
line - missing email" means that setting `fsck.missingEmail = ignore`
|
||||
will hide that issue.
|
||||
with the message ID, e.g. "missingEmail: invalid author/committer line
|
||||
- missing email" means that setting `fsck.missingEmail = ignore` will
|
||||
hide that issue.
|
||||
+
|
||||
In general, it is better to enumerate existing objects with problems
|
||||
with `fsck.skipList`, instead of listing the kind of breakages these
|
||||
|
@ -1,42 +1,25 @@
|
||||
gc.aggressiveDepth::
|
||||
The depth parameter used in the delta compression
|
||||
algorithm used by 'git gc --aggressive'. This defaults
|
||||
to 50, which is the default for the `--depth` option when
|
||||
`--aggressive` isn't in use.
|
||||
+
|
||||
See the documentation for the `--depth` option in
|
||||
linkgit:git-repack[1] for more details.
|
||||
to 50.
|
||||
|
||||
gc.aggressiveWindow::
|
||||
The window size parameter used in the delta compression
|
||||
algorithm used by 'git gc --aggressive'. This defaults
|
||||
to 250, which is a much more aggressive window size than
|
||||
the default `--window` of 10.
|
||||
+
|
||||
See the documentation for the `--window` option in
|
||||
linkgit:git-repack[1] for more details.
|
||||
to 250.
|
||||
|
||||
gc.auto::
|
||||
When there are approximately more than this many loose
|
||||
objects in the repository, `git gc --auto` will pack them.
|
||||
Some Porcelain commands use this command to perform a
|
||||
light-weight garbage collection from time to time. The
|
||||
default value is 6700.
|
||||
+
|
||||
Setting this to 0 disables not only automatic packing based on the
|
||||
number of loose objects, but any other heuristic `git gc --auto` will
|
||||
otherwise use to determine if there's work to do, such as
|
||||
`gc.autoPackLimit`.
|
||||
default value is 6700. Setting this to 0 disables it.
|
||||
|
||||
gc.autoPackLimit::
|
||||
When there are more than this many packs that are not
|
||||
marked with `*.keep` file in the repository, `git gc
|
||||
--auto` consolidates them into one larger pack. The
|
||||
default value is 50. Setting this to 0 disables it.
|
||||
Setting `gc.auto` to 0 will also disable this.
|
||||
+
|
||||
See the `gc.bigPackThreshold` configuration variable below. When in
|
||||
use, it'll affect how the auto pack limit works.
|
||||
default value is 50. Setting this to 0 disables it.
|
||||
|
||||
gc.autoDetach::
|
||||
Make `git gc --auto` return immediately and run in background
|
||||
@ -53,16 +36,11 @@ Note that if the number of kept packs is more than gc.autoPackLimit,
|
||||
this configuration variable is ignored, all packs except the base pack
|
||||
will be repacked. After this the number of packs should go below
|
||||
gc.autoPackLimit and gc.bigPackThreshold should be respected again.
|
||||
+
|
||||
If the amount of memory estimated for `git repack` to run smoothly is
|
||||
not available and `gc.bigPackThreshold` is not set, the largest pack
|
||||
will also be excluded (this is the equivalent of running `git gc` with
|
||||
`--keep-base-pack`).
|
||||
|
||||
gc.writeCommitGraph::
|
||||
If true, then gc will rewrite the commit-graph file when
|
||||
linkgit:git-gc[1] is run. When using `git gc --auto`
|
||||
the commit-graph will be updated if housekeeping is
|
||||
linkgit:git-gc[1] is run. When using linkgit:git-gc[1]
|
||||
'--auto' the commit-graph will be updated if housekeeping is
|
||||
required. Default is false. See linkgit:git-commit-graph[1]
|
||||
for details.
|
||||
|
||||
@ -116,12 +94,6 @@ gc.<pattern>.reflogExpireUnreachable::
|
||||
With "<pattern>" (e.g. "refs/stash")
|
||||
in the middle, the setting applies only to the refs that
|
||||
match the <pattern>.
|
||||
+
|
||||
These types of entries are generally created as a result of using `git
|
||||
commit --amend` or `git rebase` and are the commits prior to the amend
|
||||
or rebase occurring. Since these changes are not part of the current
|
||||
project most users will want to expire them sooner, which is why the
|
||||
default is more aggressive than `gc.reflogExpire`.
|
||||
|
||||
gc.rerereResolved::
|
||||
Records of conflicted merge you resolved earlier are
|
||||
|
@ -16,5 +16,5 @@ gpg.format::
|
||||
gpg.<format>.program::
|
||||
Use this to customize the program used for the signing format you
|
||||
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
||||
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
||||
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
||||
value for `gpg.x509.program` is "gpgsm".
|
||||
|
@ -68,15 +68,6 @@ http.saveCookies::
|
||||
If set, store cookies received during requests to the file specified by
|
||||
http.cookieFile. Has no effect if http.cookieFile is unset.
|
||||
|
||||
http.version::
|
||||
Use the specified HTTP protocol version when communicating with a server.
|
||||
If you want to force the default. The available and default version depend
|
||||
on libcurl. Actually the possible values of
|
||||
this option are:
|
||||
|
||||
- HTTP/2
|
||||
- HTTP/1.1
|
||||
|
||||
http.sslVersion::
|
||||
The SSL version to use when negotiating an SSL connection, if you
|
||||
want to force the default. The available and default version
|
||||
|
@ -39,22 +39,9 @@ merge.renameLimit::
|
||||
is turned off.
|
||||
|
||||
merge.renames::
|
||||
Whether Git detects renames. If set to "false", rename detection
|
||||
is disabled. If set to "true", basic rename detection is enabled.
|
||||
Defaults to the value of diff.renames.
|
||||
|
||||
merge.directoryRenames::
|
||||
Whether Git detects directory renames, affecting what happens at
|
||||
merge time to new files added to a directory on one side of
|
||||
history when that directory was renamed on the other side of
|
||||
history. If merge.directoryRenames is set to "false", directory
|
||||
rename detection is disabled, meaning that such new files will be
|
||||
left behind in the old directory. If set to "true", directory
|
||||
rename detection is enabled, meaning that such new files will be
|
||||
moved into the new directory. If set to "conflict", a conflict
|
||||
will be reported for such paths. If merge.renames is false,
|
||||
merge.directoryRenames is ignored and treated as false. Defaults
|
||||
to "conflict".
|
||||
Whether and how Git detects renames. If set to "false",
|
||||
rename detection is disabled. If set to "true", basic rename
|
||||
detection is enabled. Defaults to the value of diff.renames.
|
||||
|
||||
merge.renormalize::
|
||||
Tell Git that canonical representation of files in the
|
||||
|
@ -105,15 +105,6 @@ pack.useBitmaps::
|
||||
true. You should not generally need to turn this off unless
|
||||
you are debugging pack bitmaps.
|
||||
|
||||
pack.useSparse::
|
||||
When true, git will default to using the '--sparse' option in
|
||||
'git pack-objects' when the '--revs' option is present. This
|
||||
algorithm only walks trees that appear in paths that introduce new
|
||||
objects. This can have significant performance benefits when
|
||||
computing a pack to send a small change. However, it is possible
|
||||
that extra objects are added to the pack-file if the included
|
||||
commits contain certain types of direct renames.
|
||||
|
||||
pack.writeBitmaps (deprecated)::
|
||||
This is a deprecated synonym for `repack.writeBitmaps`.
|
||||
|
||||
@ -124,4 +115,6 @@ pack.writeBitmapHashCache::
|
||||
bitmapped and non-bitmapped objects (e.g., when serving a fetch
|
||||
between an older, bitmapped pack and objects that have been
|
||||
pushed since the last gc). The downside is that it consumes 4
|
||||
bytes per object of disk space. Defaults to true.
|
||||
bytes per object of disk space, and that JGit's bitmap
|
||||
implementation does not understand it, causing it to complain if
|
||||
Git and JGit are used on the same repository. Defaults to false.
|
||||
|
@ -18,9 +18,9 @@ When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When `preserve` (deprecated in favor of `merges`), also pass
|
||||
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||
commits will not be flattened by running 'git pull'.
|
||||
When preserve, also pass `--preserve-merges` along to 'git rebase'
|
||||
so that locally committed merge commits will not be flattened
|
||||
by running 'git pull'.
|
||||
+
|
||||
When the value is `interactive`, the rebase is run in interactive mode.
|
||||
+
|
||||
|
@ -1,9 +1,16 @@
|
||||
rebase.useBuiltin::
|
||||
Unused configuration variable. Used in Git versions 2.20 and
|
||||
2.21 as an escape hatch to enable the legacy shellscript
|
||||
implementation of rebase. Now the built-in rewrite of it in C
|
||||
is always used. Setting this will emit a warning, to alert any
|
||||
remaining users that setting this now does nothing.
|
||||
Set to `false` to use the legacy shellscript implementation of
|
||||
linkgit:git-rebase[1]. Is `true` by default, which means use
|
||||
the built-in rewrite of it in C.
|
||||
+
|
||||
The C rewrite is first included with Git version 2.20. This option
|
||||
serves an an escape hatch to re-enable the legacy version in case any
|
||||
bugs are found in the rewrite. This option and the shellscript version
|
||||
of linkgit:git-rebase[1] will be removed in some future release.
|
||||
+
|
||||
If you find some reason to set this option to `false` other than
|
||||
one-off testing you should report the behavior difference as a bug in
|
||||
git.
|
||||
|
||||
rebase.stat::
|
||||
Whether to show a diffstat of what changed upstream since the last
|
||||
@ -57,8 +64,3 @@ instead of:
|
||||
-------------------------------------------
|
||||
+
|
||||
Defaults to false.
|
||||
|
||||
rebase.rescheduleFailedExec::
|
||||
Automatically reschedule `exec` commands that failed. This only makes
|
||||
sense in interactive mode (or when an `--exec` option was provided).
|
||||
This is the same as specifying the `--reschedule-failed-exec` option.
|
||||
|
@ -24,4 +24,4 @@ repack.writeBitmaps::
|
||||
packs created for clones and fetches, at the cost of some disk
|
||||
space and extra time spent on the initial repack. This has
|
||||
no effect if multiple packfiles are created.
|
||||
Defaults to true on bare repos, false otherwise.
|
||||
Defaults to false.
|
||||
|
@ -1,18 +1,3 @@
|
||||
stash.useBuiltin::
|
||||
Set to `false` to use the legacy shell script implementation of
|
||||
linkgit:git-stash[1]. Is `true` by default, which means use
|
||||
the built-in rewrite of it in C.
|
||||
+
|
||||
The C rewrite is first included with Git version 2.22 (and Git for Windows
|
||||
version 2.19). This option serves an an escape hatch to re-enable the
|
||||
legacy version in case any bugs are found in the rewrite. This option and
|
||||
the shell script version of linkgit:git-stash[1] will be removed in some
|
||||
future release.
|
||||
+
|
||||
If you find some reason to set this option to `false`, other than
|
||||
one-off testing, you should report the behavior difference as a bug in
|
||||
Git (see https://git-scm.com/community for details).
|
||||
|
||||
stash.showPatch::
|
||||
If this is set to true, the `git stash show` command without an
|
||||
option will show the stash entry in patch form. Defaults to false.
|
||||
|
@ -1,56 +0,0 @@
|
||||
Trace2 config settings are only read from the system and global
|
||||
config files; repository local and worktree config files and `-c`
|
||||
command line arguments are not respected.
|
||||
|
||||
trace2.normalTarget::
|
||||
This variable controls the normal target destination.
|
||||
It may be overridden by the `GIT_TRACE2` environment variable.
|
||||
The following table shows possible values.
|
||||
|
||||
trace2.perfTarget::
|
||||
This variable controls the performance target destination.
|
||||
It may be overridden by the `GIT_TRACE2_PERF` environment variable.
|
||||
The following table shows possible values.
|
||||
|
||||
trace2.eventTarget::
|
||||
This variable controls the event target destination.
|
||||
It may be overridden by the `GIT_TRACE2_EVENT` environment variable.
|
||||
The following table shows possible values.
|
||||
+
|
||||
include::../trace2-target-values.txt[]
|
||||
|
||||
trace2.normalBrief::
|
||||
Boolean. When true `time`, `filename`, and `line` fields are
|
||||
omitted from normal output. May be overridden by the
|
||||
`GIT_TRACE2_BRIEF` environment variable. Defaults to false.
|
||||
|
||||
trace2.perfBrief::
|
||||
Boolean. When true `time`, `filename`, and `line` fields are
|
||||
omitted from PERF output. May be overridden by the
|
||||
`GIT_TRACE2_PERF_BRIEF` environment variable. Defaults to false.
|
||||
|
||||
trace2.eventBrief::
|
||||
Boolean. When true `time`, `filename`, and `line` fields are
|
||||
omitted from event output. May be overridden by the
|
||||
`GIT_TRACE2_EVENT_BRIEF` environment variable. Defaults to false.
|
||||
|
||||
trace2.eventNesting::
|
||||
Integer. Specifies desired depth of nested regions in the
|
||||
event output. Regions deeper than this value will be
|
||||
omitted. May be overridden by the `GIT_TRACE2_EVENT_NESTING`
|
||||
environment variable. Defaults to 2.
|
||||
|
||||
trace2.configParams::
|
||||
A comma-separated list of patterns of "important" config
|
||||
settings that should be recorded in the trace2 output.
|
||||
For example, `core.*,remote.*.url` would cause the trace2
|
||||
output to contain events listing each configured remote.
|
||||
May be overridden by the `GIT_TRACE2_CONFIG_PARAMS` environment
|
||||
variable. Unset by default.
|
||||
|
||||
trace2.destinationDebug::
|
||||
Boolean. When true Git will print error messages when a
|
||||
trace target destination cannot be opened for writing.
|
||||
By default, these errors are suppressed and tracing is
|
||||
silently disabled. May be overridden by the
|
||||
`GIT_TRACE2_DST_DEBUG` environment variable.
|
@ -1,19 +1,12 @@
|
||||
user.name::
|
||||
user.email::
|
||||
author.name::
|
||||
author.email::
|
||||
committer.name::
|
||||
committer.email::
|
||||
The `user.name` and `user.email` variables determine what ends
|
||||
up in the `author` and `committer` field of commit
|
||||
objects.
|
||||
If you need the `author` or `committer` to be different, the
|
||||
`author.name`, `author.email`, `committer.name` or
|
||||
`committer.email` variables can be set.
|
||||
Also, all of these can be overridden by the `GIT_AUTHOR_NAME`,
|
||||
`GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_NAME`,
|
||||
`GIT_COMMITTER_EMAIL` and `EMAIL` environment variables.
|
||||
See linkgit:git-commit-tree[1] for more information.
|
||||
Your email address to be recorded in any newly created commits.
|
||||
Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and
|
||||
`EMAIL` environment variables. See linkgit:git-commit-tree[1].
|
||||
|
||||
user.name::
|
||||
Your full name to be recorded in any newly created commits.
|
||||
Can be overridden by the `GIT_AUTHOR_NAME` and `GIT_COMMITTER_NAME`
|
||||
environment variables. See linkgit:git-commit-tree[1].
|
||||
|
||||
user.useConfigOnly::
|
||||
Instruct Git to avoid trying to guess defaults for `user.email`
|
||||
|
@ -1,6 +1,6 @@
|
||||
worktree.guessRemote::
|
||||
If no branch is specified and neither `-b` nor `-B` nor
|
||||
`--detach` is used, then `git worktree add` defaults to
|
||||
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
|
||||
|
@ -95,26 +95,12 @@ from the format described above in the following way:
|
||||
. there are more "src" modes and "src" sha1
|
||||
. status is concatenated status characters for each parent
|
||||
. no optional "score" number
|
||||
. tab-separated pathname(s) of the file
|
||||
. single path, only for "dst"
|
||||
|
||||
For `-c` and `--cc`, only the destination or final path is shown even
|
||||
if the file was renamed on any side of history. With
|
||||
`--combined-all-paths`, the name of the path in each parent is shown
|
||||
followed by the name of the path in the merge commit.
|
||||
|
||||
Examples for `-c` and `--cc` without `--combined-all-paths`:
|
||||
------------------------------------------------
|
||||
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c
|
||||
::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM bar.sh
|
||||
::100644 100644 100644 e07d6c5 9042e82 ee91881 RR phooey.c
|
||||
------------------------------------------------
|
||||
|
||||
Examples when `--combined-all-paths` added to either `-c` or `--cc`:
|
||||
Example:
|
||||
|
||||
------------------------------------------------
|
||||
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c desc.c desc.c
|
||||
::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM foo.sh bar.sh bar.sh
|
||||
::100644 100644 100644 e07d6c5 9042e82 ee91881 RR fooey.c fuey.c phooey.c
|
||||
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM describe.c
|
||||
------------------------------------------------
|
||||
|
||||
Note that 'combined diff' lists only files which were modified from
|
||||
|
@ -143,19 +143,6 @@ copying detection) are designed to work with diff of two
|
||||
Similar to two-line header for traditional 'unified' diff
|
||||
format, `/dev/null` is used to signal created or deleted
|
||||
files.
|
||||
+
|
||||
However, if the --combined-all-paths option is provided, instead of a
|
||||
two-line from-file/to-file you get a N+1 line from-file/to-file header,
|
||||
where N is the number of parents in the merge commit
|
||||
|
||||
--- a/file
|
||||
--- a/file
|
||||
--- a/file
|
||||
+++ b/file
|
||||
+
|
||||
This extended format can be useful if rename or copy detection is
|
||||
active, to allow you to see the original name of the file in different
|
||||
parents.
|
||||
|
||||
4. Chunk header format is modified to prevent people from
|
||||
accidentally feeding it to `patch -p1`. Combined diff format
|
||||
|
@ -36,21 +36,11 @@ endif::git-format-patch[]
|
||||
-U<n>::
|
||||
--unified=<n>::
|
||||
Generate diffs with <n> lines of context instead of
|
||||
the usual three. Implies `--patch`.
|
||||
the usual three.
|
||||
ifndef::git-format-patch[]
|
||||
Implies `-p`.
|
||||
endif::git-format-patch[]
|
||||
|
||||
--output=<file>::
|
||||
Output to a specific file instead of stdout.
|
||||
|
||||
--output-indicator-new=<char>::
|
||||
--output-indicator-old=<char>::
|
||||
--output-indicator-context=<char>::
|
||||
Specify the character used to indicate new, old or context
|
||||
lines in the generated patch. Normally they are '+', '-' and
|
||||
' ' respectively.
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
--raw::
|
||||
ifndef::git-log[]
|
||||
@ -158,7 +148,6 @@ These parameters can also be set individually with `--stat-width=<width>`,
|
||||
number of modified files, as well as number of added and deleted
|
||||
lines.
|
||||
|
||||
-X[<param1,param2,...>]::
|
||||
--dirstat[=<param1,param2,...>]::
|
||||
Output the distribution of relative amount of changes for each
|
||||
sub-directory. The behavior of `--dirstat` can be customized by
|
||||
@ -203,12 +192,6 @@ directories with less than 10% of the total amount of changed files,
|
||||
and accumulating child directory counts in the parent directories:
|
||||
`--dirstat=files,10,cumulative`.
|
||||
|
||||
--cumulative::
|
||||
Synonym for --dirstat=cumulative
|
||||
|
||||
--dirstat-by-file[=<param1,param2>...]::
|
||||
Synonym for --dirstat=files,param1,param2...
|
||||
|
||||
--summary::
|
||||
Output a condensed summary of extended header information
|
||||
such as creations, renames and mode changes.
|
||||
@ -310,12 +293,8 @@ dimmed-zebra::
|
||||
`dimmed_zebra` is a deprecated synonym.
|
||||
--
|
||||
|
||||
--no-color-moved::
|
||||
Turn off move detection. This can be used to override configuration
|
||||
settings. It is the same as `--color-moved=no`.
|
||||
|
||||
--color-moved-ws=<modes>::
|
||||
This configures how whitespace is ignored when performing the
|
||||
This configures how white spaces are ignored when performing the
|
||||
move detection for `--color-moved`.
|
||||
ifdef::git-diff[]
|
||||
It can be set by the `diff.colorMovedWS` configuration setting.
|
||||
@ -323,8 +302,6 @@ endif::git-diff[]
|
||||
These modes can be given as a comma separated list:
|
||||
+
|
||||
--
|
||||
no::
|
||||
Do not ignore whitespace when performing move detection.
|
||||
ignore-space-at-eol::
|
||||
Ignore changes in whitespace at EOL.
|
||||
ignore-space-change::
|
||||
@ -335,17 +312,12 @@ ignore-all-space::
|
||||
Ignore whitespace when comparing lines. This ignores differences
|
||||
even if one line has whitespace where the other line has none.
|
||||
allow-indentation-change::
|
||||
Initially ignore any whitespace in the move detection, then
|
||||
Initially ignore any white spaces in the move detection, then
|
||||
group the moved code blocks only into a block if the change in
|
||||
whitespace is the same per line. This is incompatible with the
|
||||
other modes.
|
||||
--
|
||||
|
||||
--no-color-moved-ws::
|
||||
Do not ignore whitespace when performing move detection. This can be
|
||||
used to override configuration settings. It is the same as
|
||||
`--color-moved-ws=no`.
|
||||
|
||||
--word-diff[=<mode>]::
|
||||
Show a word diff, using the <mode> to delimit changed words.
|
||||
By default, words are delimited by whitespace; see
|
||||
@ -403,9 +375,6 @@ endif::git-format-patch[]
|
||||
Turn off rename detection, even when the configuration
|
||||
file gives the default to do so.
|
||||
|
||||
--[no-]rename-empty::
|
||||
Whether to use empty blobs as rename source.
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
--check::
|
||||
Warn if changes introduce conflict markers or whitespace errors.
|
||||
@ -436,7 +405,7 @@ endif::git-format-patch[]
|
||||
|
||||
--binary::
|
||||
In addition to `--full-index`, output a binary diff that
|
||||
can be applied with `git-apply`. Implies `--patch`.
|
||||
can be applied with `git-apply`.
|
||||
|
||||
--abbrev[=<n>]::
|
||||
Instead of showing the full 40-byte hexadecimal object
|
||||
@ -555,8 +524,6 @@ struct), and want to know the history of that block since it first
|
||||
came into being: use the feature iteratively to feed the interesting
|
||||
block in the preimage back into `-S`, and keep going until you get the
|
||||
very first version of the block.
|
||||
+
|
||||
Binary files are searched as well.
|
||||
|
||||
-G<regex>::
|
||||
Look for differences whose patch text contains added/removed
|
||||
@ -576,9 +543,6 @@ While `git log -G"regexec\(regexp"` will show this commit, `git log
|
||||
-S"regexec\(regexp" --pickaxe-regex` will not (because the number of
|
||||
occurrences of that string did not change).
|
||||
+
|
||||
Unless `--text` is supplied patches of binary files without a textconv
|
||||
filter will be ignored.
|
||||
+
|
||||
See the 'pickaxe' entry in linkgit:gitdiffcore[7] for more
|
||||
information.
|
||||
|
||||
|
@ -12,16 +12,9 @@ OPTIONS_SPEC="\
|
||||
doc-diff [options] <from> <to> [-- <diff-options>]
|
||||
doc-diff (-c|--clean)
|
||||
--
|
||||
j=n parallel argument to pass to make
|
||||
f force rebuild; do not rely on cached results
|
||||
c,clean cleanup temporary working files
|
||||
from-asciidoc use asciidoc with the 'from'-commit
|
||||
from-asciidoctor use asciidoctor with the 'from'-commit
|
||||
asciidoc use asciidoc with both commits
|
||||
to-asciidoc use asciidoc with the 'to'-commit
|
||||
to-asciidoctor use asciidoctor with the 'to'-commit
|
||||
asciidoctor use asciidoctor with both commits
|
||||
cut-header-footer cut away header and footer
|
||||
j=n parallel argument to pass to make
|
||||
f force rebuild; do not rely on cached results
|
||||
c,clean cleanup temporary working files
|
||||
"
|
||||
SUBDIRECTORY_OK=1
|
||||
. "$(git --exec-path)/git-sh-setup"
|
||||
@ -29,9 +22,6 @@ SUBDIRECTORY_OK=1
|
||||
parallel=
|
||||
force=
|
||||
clean=
|
||||
from_program=
|
||||
to_program=
|
||||
cut_header_footer=
|
||||
while test $# -gt 0
|
||||
do
|
||||
case "$1" in
|
||||
@ -41,22 +31,6 @@ do
|
||||
clean=t ;;
|
||||
-f)
|
||||
force=t ;;
|
||||
--from-asciidoctor)
|
||||
from_program=-asciidoctor ;;
|
||||
--to-asciidoctor)
|
||||
to_program=-asciidoctor ;;
|
||||
--asciidoctor)
|
||||
from_program=-asciidoctor
|
||||
to_program=-asciidoctor ;;
|
||||
--from-asciidoc)
|
||||
from_program=-asciidoc ;;
|
||||
--to-asciidoc)
|
||||
to_program=-asciidoc ;;
|
||||
--asciidoc)
|
||||
from_program=-asciidoc
|
||||
to_program=-asciidoc ;;
|
||||
--cut-header-footer)
|
||||
cut_header_footer=-cut-header-footer ;;
|
||||
--)
|
||||
shift; break ;;
|
||||
*)
|
||||
@ -65,7 +39,8 @@ do
|
||||
shift
|
||||
done
|
||||
|
||||
tmp="$(git rev-parse --show-toplevel)/Documentation/tmp-doc-diff" || exit 1
|
||||
cd_to_toplevel
|
||||
tmp=Documentation/tmp-doc-diff
|
||||
|
||||
if test -n "$clean"
|
||||
then
|
||||
@ -105,22 +80,6 @@ then
|
||||
ln -s "$dots/config.mak" "$tmp/worktree/config.mak"
|
||||
fi
|
||||
|
||||
construct_makemanflags () {
|
||||
if test "$1" = "-asciidoc"
|
||||
then
|
||||
echo USE_ASCIIDOCTOR=
|
||||
elif test "$1" = "-asciidoctor"
|
||||
then
|
||||
echo USE_ASCIIDOCTOR=YesPlease
|
||||
fi
|
||||
}
|
||||
|
||||
from_makemanflags=$(construct_makemanflags "$from_program") &&
|
||||
to_makemanflags=$(construct_makemanflags "$to_program") &&
|
||||
|
||||
from_dir=$from_oid$from_program$cut_header_footer &&
|
||||
to_dir=$to_oid$to_program$cut_header_footer &&
|
||||
|
||||
# generate_render_makefile <srcdir> <dstdir>
|
||||
generate_render_makefile () {
|
||||
find "$1" -type f |
|
||||
@ -136,7 +95,7 @@ generate_render_makefile () {
|
||||
done
|
||||
}
|
||||
|
||||
# render_tree <committish_oid> <directory_name> <makemanflags>
|
||||
# render_tree <committish_oid>
|
||||
render_tree () {
|
||||
# Skip install-man entirely if we already have an installed directory.
|
||||
# We can't rely on make here, since "install-man" unconditionally
|
||||
@ -144,44 +103,28 @@ render_tree () {
|
||||
# we then can't rely on during the render step). We use "mv" to make
|
||||
# sure we don't get confused by a previous run that failed partway
|
||||
# through.
|
||||
oid=$1 &&
|
||||
dname=$2 &&
|
||||
makemanflags=$3 &&
|
||||
if ! test -d "$tmp/installed/$dname"
|
||||
if ! test -d "$tmp/installed/$1"
|
||||
then
|
||||
git -C "$tmp/worktree" checkout --detach "$oid" &&
|
||||
git -C "$tmp/worktree" checkout --detach "$1" &&
|
||||
make -j$parallel -C "$tmp/worktree" \
|
||||
$makemanflags \
|
||||
GIT_VERSION=omitted \
|
||||
SOURCE_DATE_EPOCH=0 \
|
||||
DESTDIR="$tmp/installed/$dname+" \
|
||||
DESTDIR="$PWD/$tmp/installed/$1+" \
|
||||
install-man &&
|
||||
mv "$tmp/installed/$dname+" "$tmp/installed/$dname"
|
||||
mv "$tmp/installed/$1+" "$tmp/installed/$1"
|
||||
fi &&
|
||||
|
||||
# As with "installed" above, we skip the render if it's already been
|
||||
# done. So using make here is primarily just about running in
|
||||
# parallel.
|
||||
if ! test -d "$tmp/rendered/$dname"
|
||||
if ! test -d "$tmp/rendered/$1"
|
||||
then
|
||||
generate_render_makefile "$tmp/installed/$dname" \
|
||||
"$tmp/rendered/$dname+" |
|
||||
generate_render_makefile "$tmp/installed/$1" "$tmp/rendered/$1+" |
|
||||
make -j$parallel -f - &&
|
||||
mv "$tmp/rendered/$dname+" "$tmp/rendered/$dname"
|
||||
|
||||
if test "$cut_header_footer" = "-cut-header-footer"
|
||||
then
|
||||
for f in $(find "$tmp/rendered/$dname" -type f)
|
||||
do
|
||||
tail -n +3 "$f" | head -n -2 |
|
||||
sed -e '1{/^$/d}' -e '${/^$/d}' >"$f+" &&
|
||||
mv "$f+" "$f" ||
|
||||
return 1
|
||||
done
|
||||
fi
|
||||
mv "$tmp/rendered/$1+" "$tmp/rendered/$1"
|
||||
fi
|
||||
}
|
||||
|
||||
render_tree $from_oid $from_dir $from_makemanflags &&
|
||||
render_tree $to_oid $to_dir $to_makemanflags &&
|
||||
git -C $tmp/rendered diff --no-index "$@" $from_dir $to_dir
|
||||
render_tree $from_oid &&
|
||||
render_tree $to_oid &&
|
||||
git -C $tmp/rendered diff --no-index "$@" $from_oid $to_oid
|
||||
|
@ -216,8 +216,7 @@ endif::git-pull[]
|
||||
--server-option=<option>::
|
||||
Transmit the given string to the server when communicating using
|
||||
protocol version 2. The given string must not contain a NUL or LF
|
||||
character. The server's handling of server options, including
|
||||
unknown ones, is server-specific.
|
||||
character.
|
||||
When multiple `--server-option=<option>` are given, they are all
|
||||
sent to the other side in the order listed on the command line.
|
||||
|
||||
|
@ -58,9 +58,9 @@ OPTIONS
|
||||
specifying `dir` will record not just a file `dir/file1`
|
||||
modified in the working tree, a file `dir/file2` added to
|
||||
the working tree, but also a file `dir/file3` removed from
|
||||
the working tree). Note that older versions of Git used
|
||||
the working tree. Note that older versions of Git used
|
||||
to ignore removed files; use `--no-all` option if you want
|
||||
to add modified or new files but ignore removed ones.
|
||||
to add modified or new files but ignore removed ones.
|
||||
+
|
||||
For more details about the <pathspec> syntax, see the 'pathspec' entry
|
||||
in linkgit:gitglossary[7].
|
||||
@ -124,7 +124,7 @@ subdirectories).
|
||||
--no-ignore-removal::
|
||||
Update the index not only where the working tree has a file
|
||||
matching <pathspec> but also where the index already has an
|
||||
entry. This adds, modifies, and removes index entries to
|
||||
entry. This adds, modifies, and removes index entries to
|
||||
match the working tree.
|
||||
+
|
||||
If no <pathspec> is given when `-A` option is used, all
|
||||
@ -193,11 +193,20 @@ for "git add --no-all <pathspec>...", i.e. ignored removed files.
|
||||
for command-line options).
|
||||
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
The optional configuration variable `core.excludesFile` indicates a path to a
|
||||
file containing patterns of file names to exclude from git-add, similar to
|
||||
$GIT_DIR/info/exclude. Patterns in the exclude file are used in addition to
|
||||
those in info/exclude. See linkgit:gitignore[5].
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
* Adds content from all `*.txt` files under `Documentation` directory
|
||||
and its subdirectories:
|
||||
and its subdirectories:
|
||||
+
|
||||
------------
|
||||
$ git add Documentation/\*.txt
|
||||
|
@ -99,11 +99,6 @@ default. You can use `--no-utf8` to override this.
|
||||
am.threeWay configuration variable. For more information,
|
||||
see am.threeWay in linkgit:git-config[1].
|
||||
|
||||
--rerere-autoupdate::
|
||||
--no-rerere-autoupdate::
|
||||
Allow the rerere mechanism to update the index with the
|
||||
result of auto-conflict resolution if possible.
|
||||
|
||||
--ignore-space-change::
|
||||
--ignore-whitespace::
|
||||
--whitespace=<option>::
|
||||
|
@ -9,7 +9,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git branch' [--color[=<when>] | --no-color] [-r | -a]
|
||||
[--list] [--show-current] [-v [--abbrev=<length> | --no-abbrev]]
|
||||
[--list] [-v [--abbrev=<length> | --no-abbrev]]
|
||||
[--column[=<options>] | --no-column] [--sort=<key>]
|
||||
[(--merged | --no-merged) [<commit>]]
|
||||
[--contains [<commit]] [--no-contains [<commit>]]
|
||||
@ -45,11 +45,7 @@ argument is missing it defaults to `HEAD` (i.e. the tip of the current
|
||||
branch).
|
||||
|
||||
The command's second form creates a new branch head named <branchname>
|
||||
which points to the current `HEAD`, or <start-point> if given. As a
|
||||
special case, for <start-point>, 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`.
|
||||
which points to the current `HEAD`, or <start-point> if given.
|
||||
|
||||
Note that this will create the new branch, but it will not switch the
|
||||
working tree to it; use "git checkout <newbranch>" to switch to the
|
||||
@ -164,10 +160,6 @@ This option is only applicable in non-verbose mode.
|
||||
branch --list 'maint-*'`, list only the branches that match
|
||||
the pattern(s).
|
||||
|
||||
--show-current::
|
||||
Print the name of the current branch. In detached HEAD state,
|
||||
nothing is printed.
|
||||
|
||||
-v::
|
||||
-vv::
|
||||
--verbose::
|
||||
@ -305,7 +297,7 @@ $ git checkout my2.6.14
|
||||
------------
|
||||
+
|
||||
<1> This step and the next one could be combined into a single step with
|
||||
"checkout -b my2.6.14 v2.6.14".
|
||||
"checkout -b my2.6.14 v2.6.14".
|
||||
|
||||
Delete an unneeded branch::
|
||||
+
|
||||
@ -317,10 +309,10 @@ $ git branch -D test <2>
|
||||
------------
|
||||
+
|
||||
<1> Delete the remote-tracking branches "todo", "html" and "man". The next
|
||||
'fetch' or 'pull' will create them again unless you configure them not to.
|
||||
See linkgit:git-fetch[1].
|
||||
'fetch' or 'pull' will create them again unless you configure them not to.
|
||||
See linkgit:git-fetch[1].
|
||||
<2> Delete the "test" branch even if the "master" branch (or whichever branch
|
||||
is currently checked out) does not have all commits from the test branch.
|
||||
is currently checked out) does not have all commits from the test branch.
|
||||
|
||||
|
||||
NOTES
|
||||
|
@ -23,8 +23,8 @@ In the second form, a list of objects (separated by linefeeds) is provided on
|
||||
stdin, and the SHA-1, type, and size of each object is printed on stdout. The
|
||||
output format can be overridden using the optional `<format>` argument. If
|
||||
either `--textconv` or `--filters` was specified, the input is expected to
|
||||
list the object names followed by the path name, separated by a single
|
||||
whitespace, so that the appropriate drivers can be determined.
|
||||
list the object names followed by the path name, separated by a single white
|
||||
space, so that the appropriate drivers can be determined.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -79,7 +79,7 @@ OPTIONS
|
||||
Print object information and contents for each object provided
|
||||
on stdin. May not be combined with any other options or arguments
|
||||
except `--textconv` or `--filters`, in which case the input lines
|
||||
also need to specify the path, separated by whitespace. See the
|
||||
also need to specify the path, separated by white space. See the
|
||||
section `BATCH OUTPUT` below for details.
|
||||
|
||||
--batch-check::
|
||||
@ -87,7 +87,7 @@ OPTIONS
|
||||
Print object information for each object provided on stdin. May
|
||||
not be combined with any other options or arguments except
|
||||
`--textconv` or `--filters`, in which case the input lines also
|
||||
need to specify the path, separated by whitespace. See the
|
||||
need to specify the path, separated by white space. See the
|
||||
section `BATCH OUTPUT` below for details.
|
||||
|
||||
--batch-all-objects::
|
||||
@ -252,12 +252,6 @@ the repository, then `cat-file` will ignore any custom format and print:
|
||||
<object> SP missing LF
|
||||
------------
|
||||
|
||||
If a name is specified that might refer to more than one object (an ambiguous short sha), then `cat-file` will ignore any custom format and print:
|
||||
|
||||
------------
|
||||
<object> SP ambiguous LF
|
||||
------------
|
||||
|
||||
If --follow-symlinks is used, and a symlink in the repository points
|
||||
outside the repository, then `cat-file` will ignore any custom format
|
||||
and print:
|
||||
|
@ -242,8 +242,6 @@ should result in deletion of the path).
|
||||
+
|
||||
When checking out paths from the index, this option lets you recreate
|
||||
the conflicted merge in the specified paths.
|
||||
+
|
||||
When switching branches with `--merge`, staged changes may be lost.
|
||||
|
||||
--conflict=<style>::
|
||||
The same as --merge option above, but changes the way the
|
||||
@ -262,9 +260,6 @@ When switching branches with `--merge`, staged changes may be lost.
|
||||
This means that you can use `git checkout -p` to selectively discard
|
||||
edits from your current working tree. See the ``Interactive Mode''
|
||||
section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
|
||||
+
|
||||
Note that this option uses the no overlay mode by default (see also
|
||||
`--[no-]overlay`), and currently doesn't support overlay mode.
|
||||
|
||||
--ignore-other-worktrees::
|
||||
`git checkout` refuses when the wanted ref is already checked
|
||||
@ -281,17 +276,6 @@ Note that this option uses the no overlay mode by default (see also
|
||||
Just like linkgit:git-submodule[1], this will detach the
|
||||
submodules HEAD.
|
||||
|
||||
--no-guess::
|
||||
Do not attempt to create a branch if a remote tracking branch
|
||||
of the same name exists.
|
||||
|
||||
--[no-]overlay::
|
||||
In the default overlay mode, `git checkout` never
|
||||
removes files from the index or the working tree. When
|
||||
specifying `--no-overlay`, files that appear in the index and
|
||||
working tree, but not in <tree-ish> are removed, to make them
|
||||
match <tree-ish> exactly.
|
||||
|
||||
<branch>::
|
||||
Branch to checkout; if it refers to a branch (i.e., a name that,
|
||||
when prepended with "refs/heads/", is a valid ref), then that
|
||||
@ -301,7 +285,7 @@ Note that this option uses the no overlay mode by default (see also
|
||||
+
|
||||
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}"`.
|
||||
also specify `-` which is synonymous to `"@{-1}`.
|
||||
+
|
||||
As a 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
|
||||
@ -313,10 +297,6 @@ leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
<start_point>::
|
||||
The name of a commit at which to start the new branch; see
|
||||
linkgit:git-branch[1] for details. Defaults to HEAD.
|
||||
+
|
||||
As a 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`.
|
||||
|
||||
<tree-ish>::
|
||||
Tree to checkout from (when paths are given). If not specified,
|
||||
@ -440,14 +420,14 @@ $ git tag foo <3>
|
||||
------------
|
||||
|
||||
<1> creates a new branch 'foo', which refers to commit 'f', and then
|
||||
updates HEAD to refer to branch 'foo'. In other words, we'll no longer
|
||||
be in detached HEAD state after this command.
|
||||
updates HEAD to refer to branch 'foo'. In other words, we'll no longer
|
||||
be in detached HEAD state after this command.
|
||||
|
||||
<2> similarly creates a new branch 'foo', which refers to commit 'f',
|
||||
but leaves HEAD detached.
|
||||
but leaves HEAD detached.
|
||||
|
||||
<3> creates a new tag 'foo', which refers to commit 'f',
|
||||
leaving HEAD detached.
|
||||
leaving HEAD detached.
|
||||
|
||||
If we have moved away from commit 'f', then we must first recover its object
|
||||
name (typically by using git reflog), and then we can create a reference to
|
||||
@ -475,8 +455,8 @@ EXAMPLES
|
||||
--------
|
||||
|
||||
. The following sequence checks out the `master` branch, reverts
|
||||
the `Makefile` to two revisions back, deletes hello.c by
|
||||
mistake, and gets it back from the index.
|
||||
the `Makefile` to two revisions back, deletes hello.c by
|
||||
mistake, and gets it back from the index.
|
||||
+
|
||||
------------
|
||||
$ git checkout master <1>
|
||||
@ -510,7 +490,7 @@ $ git checkout -- hello.c
|
||||
------------
|
||||
|
||||
. After working in the wrong branch, switching to the correct
|
||||
branch would be done using:
|
||||
branch would be done using:
|
||||
+
|
||||
------------
|
||||
$ git checkout mytopic
|
||||
@ -538,7 +518,7 @@ registered in your index file, so `git diff` would show you what
|
||||
changes you made since the tip of the new branch.
|
||||
|
||||
. When a merge conflict happens during switching branches with
|
||||
the `-m` option, you would see something like this:
|
||||
the `-m` option, you would see something like this:
|
||||
+
|
||||
------------
|
||||
$ git checkout -m mytopic
|
||||
|
@ -57,13 +57,6 @@ OPTIONS
|
||||
With this option, 'git cherry-pick' will let you edit the commit
|
||||
message prior to committing.
|
||||
|
||||
--cleanup=<mode>::
|
||||
This option determines how the commit message will be cleaned up before
|
||||
being passed on to the commit machinery. See linkgit:git-commit[1] for more
|
||||
details. In particular, if the '<mode>' is given a value of `scissors`,
|
||||
scissors will be appended to `MERGE_MSG` before being passed on in the case
|
||||
of a conflict.
|
||||
|
||||
-x::
|
||||
When recording the commit, append a line that says
|
||||
"(cherry picked from commit ...)" to the original commit
|
||||
@ -155,11 +148,6 @@ effect to your index in a row.
|
||||
Pass the merge strategy-specific option through to the
|
||||
merge strategy. See linkgit:git-merge[1] for details.
|
||||
|
||||
--rerere-autoupdate::
|
||||
--no-rerere-autoupdate::
|
||||
Allow the rerere mechanism to update the index with the
|
||||
result of auto-conflict resolution if possible.
|
||||
|
||||
SEQUENCER SUBCOMMANDS
|
||||
---------------------
|
||||
include::sequencer.txt[]
|
||||
@ -225,16 +213,16 @@ $ git reset --merge ORIG_HEAD <3>
|
||||
$ git cherry-pick -Xpatience topic^ <4>
|
||||
------------
|
||||
<1> apply the change that would be shown by `git show topic^`.
|
||||
In this example, the patch does not apply cleanly, so
|
||||
information about the conflict is written to the index and
|
||||
working tree and no new commit results.
|
||||
In this example, the patch does not apply cleanly, so
|
||||
information about the conflict is written to the index and
|
||||
working tree and no new commit results.
|
||||
<2> summarize changes to be reconciled
|
||||
<3> cancel the cherry-pick. In other words, return to the
|
||||
pre-cherry-pick state, preserving any local modifications
|
||||
you had in the working tree.
|
||||
pre-cherry-pick state, preserving any local modifications you had in
|
||||
the working tree.
|
||||
<4> try to apply the change introduced by `topic^` again,
|
||||
spending extra time to avoid mistakes based on incorrectly
|
||||
matching context lines.
|
||||
spending extra time to avoid mistakes based on incorrectly matching
|
||||
context lines.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
@ -55,13 +55,14 @@ OPTIONS
|
||||
|
||||
-e <pattern>::
|
||||
--exclude=<pattern>::
|
||||
Use the given exclude pattern in addition to the standard ignore rules
|
||||
(see linkgit:gitignore[5]).
|
||||
In addition to those found in .gitignore (per directory) and
|
||||
$GIT_DIR/info/exclude, also consider these patterns to be in the
|
||||
set of the ignore rules in effect.
|
||||
|
||||
-x::
|
||||
Don't use the standard ignore rules (see linkgit:gitignore[5]), but
|
||||
still use the ignore rules given with `-e` options from the command
|
||||
line. This allows removing all untracked
|
||||
Don't use the standard ignore rules read from .gitignore (per
|
||||
directory) and $GIT_DIR/info/exclude, but do still use the ignore
|
||||
rules given with `-e` options. This allows removing all untracked
|
||||
files, including build products. This can be used (possibly in
|
||||
conjunction with 'git reset') to create a pristine
|
||||
working directory to test a clean build.
|
||||
|
@ -131,14 +131,6 @@ objects from the source repository into a pack in the cloned repository.
|
||||
is specified. This flag forces progress status even if the
|
||||
standard error stream is not directed to a terminal.
|
||||
|
||||
--server-option=<option>::
|
||||
Transmit the given string to the server when communicating using
|
||||
protocol version 2. The given string must not contain a NUL or LF
|
||||
character. The server's handling of server options, including
|
||||
unknown ones, is server-specific.
|
||||
When multiple `--server-option=<option>` are given, they are all
|
||||
sent to the other side in the order listed on the command line.
|
||||
|
||||
--no-checkout::
|
||||
-n::
|
||||
No checkout of HEAD is performed after the clone is complete.
|
||||
@ -197,12 +189,6 @@ objects from the source repository into a pack in the cloned repository.
|
||||
values are given for the same key, each value will be written to
|
||||
the config file. This makes it safe, for example, to add
|
||||
additional fetch refspecs to the origin remote.
|
||||
+
|
||||
Due to limitations of the current implementation, some configuration
|
||||
variables do not take effect until after the initial fetch and checkout.
|
||||
Configuration variables known to not take effect are:
|
||||
`remote.<name>.mirror` and `remote.<name>.tagOpt`. Use the
|
||||
corresponding `--mirror` and `--no-tags` options instead.
|
||||
|
||||
--depth <depth>::
|
||||
Create a 'shallow' clone with a history truncated to the
|
||||
|
@ -47,7 +47,7 @@ OPTIONS
|
||||
The number of spaces between columns. One space by default.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
------
|
||||
|
||||
Format data by columns:
|
||||
------------
|
||||
|
@ -23,10 +23,6 @@ Creates a new commit object based on the provided tree object and
|
||||
emits the new commit object id on stdout. The log message is read
|
||||
from the standard input, unless `-m` or `-F` options are given.
|
||||
|
||||
The `-m` and `-F` options can be given any number of times, in any
|
||||
order. The commit log message will be composed in the order in which
|
||||
the options are given.
|
||||
|
||||
A commit object may have any number of parents. With exactly one
|
||||
parent, it is an ordinary commit. Having more than one parent makes
|
||||
the commit a merge between several lines of history. Initial (root)
|
||||
@ -45,7 +41,7 @@ state was.
|
||||
OPTIONS
|
||||
-------
|
||||
<tree>::
|
||||
An existing tree object.
|
||||
An existing tree object
|
||||
|
||||
-p <parent>::
|
||||
Each `-p` indicates the id of a parent commit object.
|
||||
@ -56,8 +52,7 @@ OPTIONS
|
||||
|
||||
-F <file>::
|
||||
Read the commit log message from the given file. Use `-` to read
|
||||
from the standard input. This can be given more than once and the
|
||||
content of each file becomes its own paragraph.
|
||||
from the standard input.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
|
@ -17,20 +17,16 @@ SYNOPSIS
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Create a new commit containing the current contents of the index and
|
||||
the given log message describing the changes. The new commit is a
|
||||
direct child of HEAD, usually the tip of the current branch, and the
|
||||
branch is updated to point to it (unless no branch is associated with
|
||||
the working tree, in which case HEAD is "detached" as described in
|
||||
linkgit:git-checkout[1]).
|
||||
Stores the current contents of the index in a new commit along
|
||||
with a log message from the user describing the changes.
|
||||
|
||||
The content to be committed can be specified in several ways:
|
||||
The content to be added can be specified in several ways:
|
||||
|
||||
1. by using linkgit:git-add[1] to incrementally "add" changes to the
|
||||
index before using the 'commit' command (Note: even modified files
|
||||
must be "added");
|
||||
1. by using 'git add' to incrementally "add" changes to the
|
||||
index before using the 'commit' command (Note: even modified
|
||||
files must be "added");
|
||||
|
||||
2. by using linkgit:git-rm[1] to remove files from the working tree
|
||||
2. by using 'git rm' to remove files from the working tree
|
||||
and the index, again before using the 'commit' command;
|
||||
|
||||
3. by listing files as arguments to the 'commit' command
|
||||
|
@ -126,7 +126,7 @@ See also <<FILES>>.
|
||||
|
||||
--local::
|
||||
For writing options: write to the repository `.git/config` file.
|
||||
This is the default behavior.
|
||||
This is the default behavior.
|
||||
+
|
||||
For reading options: read only from the repository `.git/config` rather than
|
||||
from all available files.
|
||||
@ -240,9 +240,7 @@ Valid `<type>`'s include:
|
||||
output. The optional `default` parameter is used instead, if
|
||||
there is no color configured for `name`.
|
||||
+
|
||||
`--type=color [--default=<default>]` is preferred over `--get-color`
|
||||
(but note that `--get-color` will omit the trailing newline printed by
|
||||
`--type=color`).
|
||||
`--type=color [--default=<default>]` is preferred over `--get-color`.
|
||||
|
||||
-e::
|
||||
--edit::
|
||||
|
@ -57,7 +57,7 @@ OPTIONS
|
||||
This is sort of "Git root" - if you run 'git daemon' with
|
||||
'--base-path=/srv/git' on example.com, then if you later try to pull
|
||||
'git://example.com/hello.git', 'git daemon' will interpret the path
|
||||
as `/srv/git/hello.git`.
|
||||
as '/srv/git/hello.git'.
|
||||
|
||||
--base-path-relaxed::
|
||||
If --base-path is enabled and repo lookup fails, with this option
|
||||
|
@ -139,7 +139,7 @@ at the end.
|
||||
|
||||
The number of additional commits is the number
|
||||
of commits which would be displayed by "git log v1.0.4..parent".
|
||||
The hash suffix is "-g" + unambiguous abbreviation for the tip commit
|
||||
The hash suffix is "-g" + 7-char abbreviation for the tip commit
|
||||
of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`).
|
||||
The "g" prefix stands for "git" and is used to allow describing the version of
|
||||
a software depending on the SCM the software is managed with. This is useful
|
||||
|
@ -10,8 +10,8 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
|
||||
[-t] [-r] [-c | --cc] [--combined-all-paths] [--root]
|
||||
[<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
|
||||
[-t] [-r] [-c | --cc] [--root] [<common diff options>]
|
||||
<tree-ish> [<tree-ish>] [<path>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -31,7 +31,10 @@ include::diff-options.txt[]
|
||||
|
||||
<path>...::
|
||||
If provided, the results are limited to a subset of files
|
||||
matching one of the provided pathspecs.
|
||||
matching one of these prefix strings.
|
||||
i.e., file matches `/^<pattern1>|<pattern2>|.../`
|
||||
Note that this parameter does not provide any wildcard or regexp
|
||||
features.
|
||||
|
||||
-r::
|
||||
recurse into sub-trees
|
||||
@ -105,13 +108,6 @@ include::pretty-options.txt[]
|
||||
itself and the commit log message is not shown, just like in any other
|
||||
"empty diff" case.
|
||||
|
||||
--combined-all-paths::
|
||||
This flag causes combined diffs (used for merge commits) to
|
||||
list the name of the file from all parents. It thus only has
|
||||
effect when -c or --cc are specified, and is likely only
|
||||
useful if filename changes are detected (i.e. when either
|
||||
rename or copy detection have been requested).
|
||||
|
||||
--always::
|
||||
Show the commit itself and the commit log message even
|
||||
if the diff itself is empty.
|
||||
@ -119,6 +115,51 @@ include::pretty-options.txt[]
|
||||
|
||||
include::pretty-formats.txt[]
|
||||
|
||||
|
||||
LIMITING OUTPUT
|
||||
---------------
|
||||
If you're only interested in differences in a subset of files, for
|
||||
example some architecture-specific files, you might do:
|
||||
|
||||
git diff-tree -r <tree-ish> <tree-ish> arch/ia64 include/asm-ia64
|
||||
|
||||
and it will only show you what changed in those two directories.
|
||||
|
||||
Or if you are searching for what changed in just `kernel/sched.c`, just do
|
||||
|
||||
git diff-tree -r <tree-ish> <tree-ish> kernel/sched.c
|
||||
|
||||
and it will ignore all differences to other files.
|
||||
|
||||
The pattern is always the prefix, and is matched exactly. There are no
|
||||
wildcards. Even stricter, it has to match a complete path component.
|
||||
I.e. "foo" does not pick up `foobar.h`. "foo" does match `foo/bar.h`
|
||||
so it can be used to name subdirectories.
|
||||
|
||||
An example of normal usage is:
|
||||
|
||||
torvalds@ppc970:~/git> git diff-tree --abbrev 5319e4
|
||||
:100664 100664 ac348b... a01513... git-fsck-objects.c
|
||||
|
||||
which tells you that the last commit changed just one file (it's from
|
||||
this one:
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
commit 3c6f7ca19ad4043e9e72fa94106f352897e651a8
|
||||
tree 5319e4d609cdd282069cc4dce33c1db559539b03
|
||||
parent b4e628ea30d5ab3606119d2ea5caeab141d38df7
|
||||
author Linus Torvalds <torvalds@ppc970.osdl.org> Sat Apr 9 12:02:30 2005
|
||||
committer Linus Torvalds <torvalds@ppc970.osdl.org> Sat Apr 9 12:02:30 2005
|
||||
|
||||
Make "git-fsck-objects" print out all the root commits it finds.
|
||||
|
||||
Once I do the reference tracking, I'll also make it print out all the
|
||||
HEAD commits it finds, which is even more interesting.
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
in case you care).
|
||||
|
||||
|
||||
include::diff-format.txt[]
|
||||
|
||||
GIT
|
||||
|
@ -132,9 +132,9 @@ $ git diff HEAD <3>
|
||||
+
|
||||
<1> Changes in the working tree not yet staged for the next commit.
|
||||
<2> Changes between the index and your last commit; what you
|
||||
would be committing if you run "git commit" without "-a" option.
|
||||
would be committing if you run "git commit" without "-a" option.
|
||||
<3> Changes in the working tree since your last commit; what you
|
||||
would be committing if you run "git commit -a"
|
||||
would be committing if you run "git commit -a"
|
||||
|
||||
Comparing with arbitrary commits::
|
||||
+
|
||||
@ -145,10 +145,10 @@ $ git diff HEAD^ HEAD <3>
|
||||
------------
|
||||
+
|
||||
<1> Instead of using the tip of the current branch, compare with the
|
||||
tip of "test" branch.
|
||||
tip of "test" branch.
|
||||
<2> Instead of comparing with the tip of "test" branch, compare with
|
||||
the tip of the current branch, but limit the comparison to the
|
||||
file "test".
|
||||
the tip of the current branch, but limit the comparison to the
|
||||
file "test".
|
||||
<3> Compare the version before the last commit and the last commit.
|
||||
|
||||
Comparing branches::
|
||||
@ -162,7 +162,7 @@ $ git diff topic...master <3>
|
||||
<1> Changes between the tips of the topic and the master branches.
|
||||
<2> Same as above.
|
||||
<3> Changes that occurred on the master branch since when the topic
|
||||
branch was started off it.
|
||||
branch was started off it.
|
||||
|
||||
Limiting the diff output::
|
||||
+
|
||||
@ -173,9 +173,9 @@ $ git diff arch/i386 include/asm-i386 <3>
|
||||
------------
|
||||
+
|
||||
<1> Show only modification, rename, and copy, but not addition
|
||||
or deletion.
|
||||
or deletion.
|
||||
<2> Show only names and the nature of change, but not actual
|
||||
diff output.
|
||||
diff output.
|
||||
<3> Limit diff output to named subtrees.
|
||||
|
||||
Munging the diff output::
|
||||
@ -186,7 +186,7 @@ $ git diff -R <2>
|
||||
------------
|
||||
+
|
||||
<1> Spend extra cycles to find renames, copies and complete
|
||||
rewrites (very expensive).
|
||||
rewrites (very expensive).
|
||||
<2> Output diff in reverse.
|
||||
|
||||
SEE ALSO
|
||||
|
@ -90,9 +90,7 @@ instead. `--no-symlinks` is the default on Windows.
|
||||
When 'git-difftool' is invoked with the `-g` or `--gui` option
|
||||
the default diff tool will be read from the configured
|
||||
`diff.guitool` variable instead of `diff.tool`. The `--no-gui`
|
||||
option can be used to override this setting. If `diff.guitool`
|
||||
is not set, we will fallback in the order of `merge.guitool`,
|
||||
`diff.tool`, `merge.tool` until a tool is found.
|
||||
option can be used to override this setting.
|
||||
|
||||
--[no-]trust-exit-code::
|
||||
'git-difftool' invokes a diff tool individually on each file.
|
||||
|
@ -110,25 +110,6 @@ marks the same across runs.
|
||||
the shape of the history and stored tree. See the section on
|
||||
`ANONYMIZING` below.
|
||||
|
||||
--reference-excluded-parents::
|
||||
By default, running a command such as `git fast-export
|
||||
master~5..master` will not include the commit master{tilde}5
|
||||
and will make master{tilde}4 no longer have master{tilde}5 as
|
||||
a parent (though both the old master{tilde}4 and new
|
||||
master{tilde}4 will have all the same files). Use
|
||||
--reference-excluded-parents to instead have the the stream
|
||||
refer to commits in the excluded range of history by their
|
||||
sha1sum. Note that the resulting stream can only be used by a
|
||||
repository which already contains the necessary parent
|
||||
commits.
|
||||
|
||||
--show-original-ids::
|
||||
Add an extra directive to the output for commits and blobs,
|
||||
`original-oid <SHA1SUM>`. While such directives will likely be
|
||||
ignored by importers such as git-fast-import, it may be useful
|
||||
for intermediary filters (e.g. for rewriting commit messages
|
||||
which refer to older commits, or for stripping blobs by id).
|
||||
|
||||
--refspec::
|
||||
Apply the specified refspec to each ref exported. Multiple of them can
|
||||
be specified.
|
||||
@ -138,9 +119,7 @@ marks the same across runs.
|
||||
'git rev-list', that specifies the specific objects and references
|
||||
to export. For example, `master~10..master` causes the
|
||||
current master reference to be exported along with all objects
|
||||
added since its 10th ancestor commit and (unless the
|
||||
--reference-excluded-parents option is specified) all files
|
||||
common to master{tilde}9 and master{tilde}10.
|
||||
added since its 10th ancestor commit.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
@ -40,10 +40,9 @@ OPTIONS
|
||||
not contain the old commit).
|
||||
|
||||
--quiet::
|
||||
Disable the output shown by --stats, making fast-import usually
|
||||
be silent when it is successful. However, if the import stream
|
||||
has directives intended to show user output (e.g. `progress`
|
||||
directives), the corresponding messages will still be shown.
|
||||
Disable all non-fatal output, making fast-import silent when it
|
||||
is successful. This option disables the output shown by
|
||||
--stats.
|
||||
|
||||
--stats::
|
||||
Display some basic statistics about the objects fast-import has
|
||||
@ -51,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
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -385,7 +399,6 @@ change to the project.
|
||||
....
|
||||
'commit' SP <ref> LF
|
||||
mark?
|
||||
original-oid?
|
||||
('author' (SP <name>)? SP LT <email> GT SP <when> LF)?
|
||||
'committer' (SP <name>)? SP LT <email> GT SP <when> LF
|
||||
data
|
||||
@ -422,12 +435,7 @@ However it is recommended that a `filedeleteall` command precede
|
||||
all `filemodify`, `filecopy`, `filerename` and `notemodify` commands in
|
||||
the same commit, as `filedeleteall` wipes the branch clean (see below).
|
||||
|
||||
The `LF` after the command is optional (it used to be required). Note
|
||||
that for reasons of backward compatibility, if the commit ends with a
|
||||
`data` command (i.e. it has has no `from`, `merge`, `filemodify`,
|
||||
`filedelete`, `filecopy`, `filerename`, `filedeleteall` or
|
||||
`notemodify` commands) then two `LF` commands may appear at the end of
|
||||
the command instead of just one.
|
||||
The `LF` after the command is optional (it used to be required).
|
||||
|
||||
`author`
|
||||
^^^^^^^^
|
||||
@ -747,19 +755,6 @@ New marks are created automatically. Existing marks can be moved
|
||||
to another object simply by reusing the same `<idnum>` in another
|
||||
`mark` command.
|
||||
|
||||
`original-oid`
|
||||
~~~~~~~~~~~~~~
|
||||
Provides the name of the object in the original source control system.
|
||||
fast-import will simply ignore this directive, but filter processes
|
||||
which operate on and modify the stream before feeding to fast-import
|
||||
may have uses for this information
|
||||
|
||||
....
|
||||
'original-oid' SP <object-identifier> LF
|
||||
....
|
||||
|
||||
where `<object-identifer>` is any string not containing LF.
|
||||
|
||||
`tag`
|
||||
~~~~~
|
||||
Creates an annotated tag referring to a specific commit. To create
|
||||
@ -768,7 +763,6 @@ lightweight (non-annotated) tags see the `reset` command below.
|
||||
....
|
||||
'tag' SP <name> LF
|
||||
'from' SP <commit-ish> LF
|
||||
original-oid?
|
||||
'tagger' (SP <name>)? SP LT <email> GT SP <when> LF
|
||||
data
|
||||
....
|
||||
@ -843,7 +837,6 @@ assigned mark.
|
||||
....
|
||||
'blob' LF
|
||||
mark?
|
||||
original-oid?
|
||||
data
|
||||
....
|
||||
|
||||
@ -971,6 +964,10 @@ might want to refer to in their commit messages.
|
||||
'get-mark' SP ':' <idnum> LF
|
||||
....
|
||||
|
||||
This command can be used anywhere in the stream that comments are
|
||||
accepted. In particular, the `get-mark` command can be used in the
|
||||
middle of a commit but not in the middle of a `data` command.
|
||||
|
||||
See ``Responses To Commands'' below for details about how to read
|
||||
this output safely.
|
||||
|
||||
@ -997,10 +994,9 @@ Output uses the same format as `git cat-file --batch`:
|
||||
<contents> LF
|
||||
====
|
||||
|
||||
This command can be used where a `filemodify` directive can appear,
|
||||
allowing it to be used in the middle of a commit. For a `filemodify`
|
||||
using an inline directive, it can also appear right before the `data`
|
||||
directive.
|
||||
This command can be used anywhere in the stream that comments are
|
||||
accepted. In particular, the `cat-blob` command can be used in the
|
||||
middle of a commit but not in the middle of a `data` command.
|
||||
|
||||
See ``Responses To Commands'' below for details about how to read
|
||||
this output safely.
|
||||
@ -1013,8 +1009,8 @@ printing a blob from the active commit (with `cat-blob`) or copying a
|
||||
blob or tree from a previous commit for use in the current one (with
|
||||
`filemodify`).
|
||||
|
||||
The `ls` command can also be used where a `filemodify` directive can
|
||||
appear, allowing it to be used in the middle of a commit.
|
||||
The `ls` command can be used anywhere in the stream that comments are
|
||||
accepted, including the middle of a commit.
|
||||
|
||||
Reading from the active commit::
|
||||
This form can only be used in the middle of a `commit`.
|
||||
@ -1398,13 +1394,6 @@ deltas are suboptimal (see above) then also adding the `-f` option
|
||||
to force recomputation of all deltas can significantly reduce the
|
||||
final packfile size (30-50% smaller can be quite typical).
|
||||
|
||||
Instead of running `git repack` you can also run `git gc
|
||||
--aggressive`, which will also optimize other things after an import
|
||||
(e.g. pack loose refs). As noted in the "AGGRESSIVE" section in
|
||||
linkgit:git-gc[1] the `--aggressive` option will find new deltas with
|
||||
the `-f` option to linkgit:git-repack[1]. For the reasons elaborated
|
||||
on above using `--aggressive` after a fast-import is one of the few
|
||||
cases where it's known to be worthwhile.
|
||||
|
||||
MEMORY UTILIZATION
|
||||
------------------
|
||||
|
@ -266,7 +266,7 @@ The `pu` branch will be updated even if it is does not fast-forward,
|
||||
because it is prefixed with a plus sign; `tmp` will not be.
|
||||
|
||||
* Peek at a remote's branch, without configuring the remote in your local
|
||||
repository:
|
||||
repository:
|
||||
+
|
||||
------------------------------------------------
|
||||
$ git fetch git://git.kernel.org/pub/scm/git/git.git maint
|
||||
|
@ -189,7 +189,7 @@ to other tags will be rewritten to point to the underlying commit.
|
||||
rewriting. When applying a tree filter, the command needs to
|
||||
temporarily check out the tree to some directory, which may consume
|
||||
considerable space in case of large projects. By default it
|
||||
does this in the `.git-rewrite/` directory but you can override
|
||||
does this in the '.git-rewrite/' directory but you can override
|
||||
that choice by this parameter.
|
||||
|
||||
-f::
|
||||
|
@ -128,18 +128,13 @@ objecttype::
|
||||
|
||||
objectsize::
|
||||
The size of the object (the same as 'git cat-file -s' reports).
|
||||
Append `:disk` to get the size, in bytes, that the object takes up on
|
||||
disk. See the note about on-disk sizes in the `CAVEATS` section below.
|
||||
|
||||
objectname::
|
||||
The object name (aka SHA-1).
|
||||
For a non-ambiguous abbreviation of the object name append `:short`.
|
||||
For an abbreviation of the object name with desired length append
|
||||
`:short=<length>`, where the minimum length is MINIMUM_ABBREV. The
|
||||
length may be exceeded to ensure unique object names.
|
||||
deltabase::
|
||||
This expands to the object name of the delta base for the
|
||||
given object, if it is stored as a delta. Otherwise it
|
||||
expands to the null object name (all zeroes).
|
||||
|
||||
upstream::
|
||||
The name of a local ref which can be considered ``upstream''
|
||||
@ -366,20 +361,6 @@ This prints the authorname, if present.
|
||||
git for-each-ref --format="%(refname)%(if)%(authorname)%(then) Authored by: %(authorname)%(end)"
|
||||
------------
|
||||
|
||||
CAVEATS
|
||||
-------
|
||||
|
||||
Note that the sizes of objects on disk are reported accurately, but care
|
||||
should be taken in drawing conclusions about which refs or objects are
|
||||
responsible for disk usage. The size of a packed non-delta object may be
|
||||
much larger than the size of objects which delta against it, but the
|
||||
choice of which object is the base and which is the delta is arbitrary
|
||||
and is subject to change during a repack.
|
||||
|
||||
Note also that multiple copies of an object may be present in the object
|
||||
database; in this case, it is undefined which copy's size or delta base
|
||||
will be reported.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-show-ref[1]
|
||||
|
@ -504,9 +504,9 @@ Toggle it to make sure it is set to `false`. Also, search for
|
||||
"mailnews.wraplength" and set the value to 0.
|
||||
|
||||
3. Disable the use of format=flowed:
|
||||
Edit..Preferences..Advanced..Config Editor. Search for
|
||||
"mailnews.send_plaintext_flowed".
|
||||
Toggle it to make sure it is set to `false`.
|
||||
Edit..Preferences..Advanced..Config Editor. Search for
|
||||
"mailnews.send_plaintext_flowed".
|
||||
Toggle it to make sure it is set to `false`.
|
||||
|
||||
After that is done, you should be able to compose email as you
|
||||
otherwise would (cut + paste, 'git format-patch' | 'git imap-send', etc),
|
||||
@ -629,14 +629,14 @@ EXAMPLES
|
||||
--------
|
||||
|
||||
* Extract commits between revisions R1 and R2, and apply them on top of
|
||||
the current branch using 'git am' to cherry-pick them:
|
||||
the current branch using 'git am' to cherry-pick them:
|
||||
+
|
||||
------------
|
||||
$ git format-patch -k --stdout R1..R2 | git am -3 -k
|
||||
------------
|
||||
|
||||
* Extract all commits which are in the current branch but not in the
|
||||
origin branch:
|
||||
origin branch:
|
||||
+
|
||||
------------
|
||||
$ git format-patch origin
|
||||
@ -645,7 +645,7 @@ $ git format-patch origin
|
||||
For each commit a separate file is created in the current directory.
|
||||
|
||||
* Extract all commits that lead to 'origin' since the inception of the
|
||||
project:
|
||||
project:
|
||||
+
|
||||
------------
|
||||
$ git format-patch --root origin
|
||||
@ -664,7 +664,7 @@ Note that non-Git "patch" programs won't understand renaming patches, so
|
||||
use it only when you know the recipient uses Git to apply your patch.
|
||||
|
||||
* Extract three topmost commits from the current branch and format them
|
||||
as e-mailable patches:
|
||||
as e-mailable patches:
|
||||
+
|
||||
------------
|
||||
$ git format-patch -3
|
||||
|
@ -62,17 +62,9 @@ index file, all SHA-1 references in `refs` namespace, and all reflogs
|
||||
with --no-full.
|
||||
|
||||
--connectivity-only::
|
||||
Check only the connectivity of reachable objects, making sure
|
||||
that any objects referenced by a reachable tag, commit, or tree
|
||||
is present. This speeds up the operation by avoiding reading
|
||||
blobs entirely (though it does still check that referenced blobs
|
||||
exist). This will detect corruption in commits and trees, but
|
||||
not do any semantic checks (e.g., for format errors). Corruption
|
||||
in blob objects will not be detected at all.
|
||||
+
|
||||
Unreachable tags, commits, and trees will also be accessed to find the
|
||||
tips of dangling segments of history. Use `--no-dangling` if you don't
|
||||
care about this output and want to speed it up further.
|
||||
Check only the connectivity of tags, commits and tree objects. By
|
||||
avoiding to unpack blobs, this speeds up the operation, at the
|
||||
expense of missing corrupt objects or other problematic issues.
|
||||
|
||||
--strict::
|
||||
Enable more strict checking, namely to catch a file mode
|
||||
@ -148,9 +140,9 @@ dangling <type> <object>::
|
||||
The <type> object <object>, is present in the database but never
|
||||
'directly' used. A dangling commit could be a root node.
|
||||
|
||||
hash mismatch <object>::
|
||||
The database has an object whose hash doesn't match the
|
||||
object database value.
|
||||
sha1 mismatch <object>::
|
||||
The database has an object who's sha1 doesn't match the
|
||||
database value.
|
||||
This indicates a serious data integrity problem.
|
||||
|
||||
Environment Variables
|
||||
|
@ -20,16 +20,17 @@ created from prior invocations of 'git add', packing refs, pruning
|
||||
reflog, rerere metadata or stale working trees. May also update ancillary
|
||||
indexes such as the commit-graph.
|
||||
|
||||
When common porcelain operations that create objects are run, they
|
||||
will check whether the repository has grown substantially since the
|
||||
last maintenance, and if so run `git gc` automatically. See `gc.auto`
|
||||
below for how to disable this behavior.
|
||||
Users are encouraged to run this task on a regular basis within
|
||||
each repository to maintain good disk space utilization and good
|
||||
operating performance.
|
||||
|
||||
Running `git gc` manually should only be needed when adding objects to
|
||||
a repository without regularly running such porcelain commands, to do
|
||||
a one-off repository optimization, or e.g. to clean up a suboptimal
|
||||
mass-import. See the "PACKFILE OPTIMIZATION" section in
|
||||
linkgit:git-fast-import[1] for more details on the import case.
|
||||
Some git commands may automatically run 'git gc'; see the `--auto` flag
|
||||
below for details. If you know what you're doing and all you want is to
|
||||
disable this behavior permanently without further considerations, just do:
|
||||
|
||||
----------------------
|
||||
$ git config --global gc.auto 0
|
||||
----------------------
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -39,17 +40,35 @@ OPTIONS
|
||||
space utilization and performance. This option will cause
|
||||
'git gc' to more aggressively optimize the repository at the expense
|
||||
of taking much more time. The effects of this optimization are
|
||||
mostly persistent. See the "AGGRESSIVE" section below for details.
|
||||
persistent, so this option only needs to be used occasionally; every
|
||||
few hundred changesets or so.
|
||||
|
||||
--auto::
|
||||
With this option, 'git gc' checks whether any housekeeping is
|
||||
required; if not, it exits without performing any work.
|
||||
Some git commands run `git gc --auto` after performing
|
||||
operations that could create many loose objects. Housekeeping
|
||||
is required if there are too many loose objects or too many
|
||||
packs in the repository.
|
||||
+
|
||||
See the `gc.auto` option in the "CONFIGURATION" section below for how
|
||||
this heuristic works.
|
||||
If the number of loose objects exceeds the value of the `gc.auto`
|
||||
configuration variable, then all loose objects are combined into a
|
||||
single pack using `git repack -d -l`. Setting the value of `gc.auto`
|
||||
to 0 disables automatic packing of loose objects.
|
||||
+
|
||||
Once housekeeping is triggered by exceeding the limits of
|
||||
configuration options such as `gc.auto` and `gc.autoPackLimit`, all
|
||||
If the number of packs exceeds the value of `gc.autoPackLimit`,
|
||||
then existing packs (except those marked with a `.keep` file
|
||||
or over `gc.bigPackThreshold` limit)
|
||||
are consolidated into a single pack by using the `-A` option of
|
||||
'git repack'.
|
||||
If the amount of memory is estimated not enough for `git repack` to
|
||||
run smoothly and `gc.bigPackThreshold` is not set, the largest
|
||||
pack will also be excluded (this is the equivalent of running `git gc`
|
||||
with `--keep-base-pack`).
|
||||
Setting `gc.autoPackLimit` to 0 disables automatic consolidation of
|
||||
packs.
|
||||
+
|
||||
If houskeeping is required due to many loose objects or packs, all
|
||||
other housekeeping tasks (e.g. rerere, working trees, reflog...) will
|
||||
be performed as well.
|
||||
|
||||
@ -57,7 +76,7 @@ be performed as well.
|
||||
--prune=<date>::
|
||||
Prune loose objects older than date (default is 2 weeks ago,
|
||||
overridable by the config variable `gc.pruneExpire`).
|
||||
--prune=now prunes loose objects regardless of their age and
|
||||
--prune=all prunes loose objects regardless of their age and
|
||||
increases the risk of corruption if another process is writing to
|
||||
the repository concurrently; see "NOTES" below. --prune is on by
|
||||
default.
|
||||
@ -77,39 +96,69 @@ be performed as well.
|
||||
`.keep` files are consolidated into a single pack. When this
|
||||
option is used, `gc.bigPackThreshold` is ignored.
|
||||
|
||||
AGGRESSIVE
|
||||
----------
|
||||
|
||||
When the `--aggressive` option is supplied, linkgit:git-repack[1] will
|
||||
be invoked with the `-f` flag, which in turn will pass
|
||||
`--no-reuse-delta` to linkgit:git-pack-objects[1]. This will throw
|
||||
away any existing deltas and re-compute them, at the expense of
|
||||
spending much more time on the repacking.
|
||||
|
||||
The effects of this are mostly persistent, e.g. when packs and loose
|
||||
objects are coalesced into one another pack the existing deltas in
|
||||
that pack might get re-used, but there are also various cases where we
|
||||
might pick a sub-optimal delta from a newer pack instead.
|
||||
|
||||
Furthermore, supplying `--aggressive` will tweak the `--depth` and
|
||||
`--window` options passed to linkgit:git-repack[1]. See the
|
||||
`gc.aggressiveDepth` and `gc.aggressiveWindow` settings below. By
|
||||
using a larger window size we're more likely to find more optimal
|
||||
deltas.
|
||||
|
||||
It's probably not worth it to use this option on a given repository
|
||||
without running tailored performance benchmarks on it. It takes a lot
|
||||
more time, and the resulting space/delta optimization may or may not
|
||||
be worth it. Not using this at all is the right trade-off for most
|
||||
users and their repositories.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
The below documentation is the same as what's found in
|
||||
linkgit:git-config[1]:
|
||||
The optional configuration variable `gc.reflogExpire` can be
|
||||
set to indicate how long historical entries within each branch's
|
||||
reflog should remain available in this repository. The setting is
|
||||
expressed as a length of time, for example '90 days' or '3 months'.
|
||||
It defaults to '90 days'.
|
||||
|
||||
The optional configuration variable `gc.reflogExpireUnreachable`
|
||||
can be set to indicate how long historical reflog entries which
|
||||
are not part of the current branch should remain available in
|
||||
this repository. These types of entries are generally created as
|
||||
a result of using `git commit --amend` or `git rebase` and are the
|
||||
commits prior to the amend or rebase occurring. Since these changes
|
||||
are not part of the current project most users will want to expire
|
||||
them sooner. This option defaults to '30 days'.
|
||||
|
||||
The above two configuration variables can be given to a pattern. For
|
||||
example, this sets non-default expiry values only to remote-tracking
|
||||
branches:
|
||||
|
||||
------------
|
||||
[gc "refs/remotes/*"]
|
||||
reflogExpire = never
|
||||
reflogExpireUnreachable = 3 days
|
||||
------------
|
||||
|
||||
The optional configuration variable `gc.rerereResolved` indicates
|
||||
how long records of conflicted merge you resolved earlier are
|
||||
kept. This defaults to 60 days.
|
||||
|
||||
The optional configuration variable `gc.rerereUnresolved` indicates
|
||||
how long records of conflicted merge you have not resolved are
|
||||
kept. This defaults to 15 days.
|
||||
|
||||
The optional configuration variable `gc.packRefs` determines if
|
||||
'git gc' runs 'git pack-refs'. This can be set to "notbare" to enable
|
||||
it within all non-bare repos or it can be set to a boolean value.
|
||||
This defaults to true.
|
||||
|
||||
The optional configuration variable `gc.commitGraph` determines if
|
||||
'git gc' should run 'git commit-graph write'. This can be set to a
|
||||
boolean value. This defaults to false.
|
||||
|
||||
The optional configuration variable `gc.aggressiveWindow` controls how
|
||||
much time is spent optimizing the delta compression of the objects in
|
||||
the repository when the --aggressive option is specified. The larger
|
||||
the value, the more time is spent optimizing the delta compression. See
|
||||
the documentation for the --window option in linkgit:git-repack[1] for
|
||||
more details. This defaults to 250.
|
||||
|
||||
Similarly, the optional configuration variable `gc.aggressiveDepth`
|
||||
controls --depth option in linkgit:git-repack[1]. This defaults to 50.
|
||||
|
||||
The optional configuration variable `gc.pruneExpire` controls how old
|
||||
the unreferenced loose objects have to be before they are pruned. The
|
||||
default is "2 weeks ago".
|
||||
|
||||
Optional configuration variable `gc.worktreePruneExpire` controls how
|
||||
old a stale working tree should be before `git worktree prune` deletes
|
||||
it. Default is "3 months ago".
|
||||
|
||||
include::config/gc.txt[]
|
||||
|
||||
NOTES
|
||||
-----
|
||||
@ -119,8 +168,8 @@ anywhere in your repository. In
|
||||
particular, it will keep not only objects referenced by your current set
|
||||
of branches and tags, but also objects referenced by the index,
|
||||
remote-tracking branches, refs saved by 'git filter-branch' in
|
||||
refs/original/, reflogs (which may reference commits in branches
|
||||
that were later amended or rewound), and anything else in the refs/* namespace.
|
||||
refs/original/, or reflogs (which may reference commits in branches
|
||||
that were later amended or rewound).
|
||||
If you are expecting some objects to be deleted and they aren't, check
|
||||
all of those locations and decide whether it makes sense in your case to
|
||||
remove those references.
|
||||
@ -141,7 +190,8 @@ mitigate this problem:
|
||||
|
||||
However, these features fall short of a complete solution, so users who
|
||||
run commands concurrently have to live with some risk of corruption (which
|
||||
seems to be low in practice).
|
||||
seems to be low in practice) unless they turn off automatic garbage
|
||||
collection with 'git config gc.auto 0'.
|
||||
|
||||
HOOKS
|
||||
-----
|
||||
|
@ -88,7 +88,7 @@ OPTIONS
|
||||
mechanism. Only useful with `--untracked`.
|
||||
|
||||
--exclude-standard::
|
||||
Do not pay attention to ignored files specified via the `.gitignore`
|
||||
Do not pay attention to ignored files specified via the `.gitignore`
|
||||
mechanism. Only useful when searching files in the current directory
|
||||
with `--no-index`.
|
||||
|
||||
|
@ -118,9 +118,9 @@ format is chosen. The following values are currently supported:
|
||||
|
||||
* "man": use the 'man' program as usual,
|
||||
* "woman": use 'emacsclient' to launch the "woman" mode in emacs
|
||||
(this only works starting with emacsclient versions 22),
|
||||
(this only works starting with emacsclient versions 22),
|
||||
* "konqueror": use 'kfmclient' to open the man page in a new konqueror
|
||||
tab (see 'Note about konqueror' below).
|
||||
tab (see 'Note about konqueror' below).
|
||||
|
||||
Values for other tools can be used if there is a corresponding
|
||||
`man.<tool>.cmd` configuration entry (see below).
|
||||
@ -171,8 +171,8 @@ variable, we launch 'kfmclient' to try to open the man page on an
|
||||
already opened konqueror in a new tab if possible.
|
||||
|
||||
For consistency, we also try such a trick if 'man.konqueror.path' is
|
||||
set to something like `A_PATH_TO/konqueror`. That means we will try to
|
||||
launch `A_PATH_TO/kfmclient` instead.
|
||||
set to something like 'A_PATH_TO/konqueror'. That means we will try to
|
||||
launch 'A_PATH_TO/kfmclient' instead.
|
||||
|
||||
If you really want to use 'konqueror', then you can use something like
|
||||
the following:
|
||||
|
@ -162,7 +162,7 @@ ScriptAliasMatch ^/git/[^/]*(.*) /usr/libexec/git-core/git-http-backend/storage.
|
||||
|
||||
Accelerated static Apache 2.x::
|
||||
Similar to the above, but Apache can be used to return static
|
||||
files that are stored on disk. On many systems this may
|
||||
files that are stored on disk. On many systems this may
|
||||
be more efficient as Apache can ask the kernel to copy the
|
||||
file contents from the file system directly to the network:
|
||||
+
|
||||
|
@ -38,6 +38,8 @@ the repository to another place if --separate-git-dir is given).
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
--
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
|
||||
@ -109,6 +111,8 @@ into it.
|
||||
If you provide a 'directory', the command is run inside it. If this directory
|
||||
does not exist, it will be created.
|
||||
|
||||
--
|
||||
|
||||
TEMPLATE DIRECTORY
|
||||
------------------
|
||||
|
||||
@ -128,7 +132,7 @@ The template directory will be one of the following (in order):
|
||||
The default template directory includes some directory structure, suggested
|
||||
"exclude patterns" (see linkgit:gitignore[5]), and sample hook files.
|
||||
|
||||
The sample hooks are all disabled by default. To enable one of the
|
||||
The sample hooks are all disabled by default, To enable one of the
|
||||
sample hooks rename it by removing its `.sample` suffix.
|
||||
|
||||
See linkgit:githooks[5] for more general info on hook execution.
|
||||
|
@ -29,8 +29,7 @@ OPTIONS
|
||||
The HTTP daemon command-line that will be executed.
|
||||
Command-line options may be specified here, and the
|
||||
configuration file will be added at the end of the command-line.
|
||||
Currently apache2, lighttpd, mongoose, plackup, python and
|
||||
webrick are supported.
|
||||
Currently apache2, lighttpd, mongoose, plackup and webrick are supported.
|
||||
(Default: lighttpd)
|
||||
|
||||
-m::
|
||||
|
@ -3,7 +3,7 @@ git-interpret-trailers(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-interpret-trailers - Add or parse structured information in commit messages
|
||||
git-interpret-trailers - add or parse structured information in commit messages
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
|
@ -192,10 +192,6 @@ log.date::
|
||||
Default format for human-readable dates. (Compare the
|
||||
`--date` option.) Defaults to "default", which means to write
|
||||
dates like `Sat May 8 19:35:34 2010 -0500`.
|
||||
+
|
||||
If the format is set to "auto:foo" and the pager is in use, format
|
||||
"foo" will be the used for the date format. Otherwise "default" will
|
||||
be used.
|
||||
|
||||
log.follow::
|
||||
If `true`, `git log` will act as if the `--follow` option was used when
|
||||
|
@ -118,7 +118,6 @@ OPTIONS
|
||||
linkgit:git-status[1] `--short` or linkgit:git-diff[1]
|
||||
`--name-status` for more user-friendly alternatives.
|
||||
+
|
||||
--
|
||||
This option identifies the file status with the following tags (followed by
|
||||
a space) at the start of each line:
|
||||
|
||||
@ -129,7 +128,6 @@ a space) at the start of each line:
|
||||
C:: modified/changed
|
||||
K:: to be killed
|
||||
?:: other
|
||||
--
|
||||
|
||||
-v::
|
||||
Similar to `-t`, but use lowercase letters for files
|
||||
|
@ -31,7 +31,7 @@ OPTIONS
|
||||
displayed.
|
||||
|
||||
--refs::
|
||||
Do not show peeled tags or pseudorefs like `HEAD` in the output.
|
||||
Do not show peeled tags or pseudorefs like HEAD in the output.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
|
@ -27,9 +27,9 @@ in the current working directory. Note that:
|
||||
taken as relative to the current working directory. E.g. when you are
|
||||
in a directory 'sub' that has a directory 'dir', you can run 'git
|
||||
ls-tree -r HEAD dir' to list the contents of the tree (that is
|
||||
`sub/dir` in `HEAD`). You don't want to give a tree that is not at the
|
||||
'sub/dir' in `HEAD`). You don't want to give a tree that is not at the
|
||||
root level (e.g. `git ls-tree -r HEAD:sub dir`) in this case, as that
|
||||
would result in asking for `sub/sub/dir` in the `HEAD` commit.
|
||||
would result in asking for 'sub/sub/dir' in the `HEAD` commit.
|
||||
However, the current working directory can be ignored by passing
|
||||
--full-tree option.
|
||||
|
||||
|
@ -83,8 +83,7 @@ invocations. The automated message can include the branch description.
|
||||
If `--log` is specified, a shortlog of the commits being merged
|
||||
will be appended to the specified message.
|
||||
|
||||
--rerere-autoupdate::
|
||||
--no-rerere-autoupdate::
|
||||
--[no-]rerere-autoupdate::
|
||||
Allow the rerere mechanism to update the index with the
|
||||
result of auto-conflict resolution if possible.
|
||||
|
||||
|
@ -28,9 +28,7 @@ to define the operation mode for the functions listed below.
|
||||
FUNCTIONS
|
||||
---------
|
||||
get_merge_tool::
|
||||
returns a merge tool. the return code is 1 if we returned a guessed
|
||||
merge tool, else 0. '$GIT_MERGETOOL_GUI' may be set to 'true' to
|
||||
search for the appropriate guitool.
|
||||
returns a merge tool.
|
||||
|
||||
get_merge_tool_cmd::
|
||||
returns the custom command for a merge tool.
|
||||
|
@ -83,9 +83,7 @@ success of the resolution after the custom tool has exited.
|
||||
--gui::
|
||||
When 'git-mergetool' is invoked with the `-g` or `--gui` option
|
||||
the default merge tool will be read from the configured
|
||||
`merge.guitool` variable instead of `merge.tool`. If
|
||||
`merge.guitool` is not set, we will fallback to the tool
|
||||
configured under `merge.tool`.
|
||||
`merge.guitool` variable instead of `merge.tool`.
|
||||
|
||||
--no-gui::
|
||||
This overrides a previous `-g` or `--gui` setting and reads the
|
||||
|
@ -146,7 +146,7 @@ OPTIONS
|
||||
|
||||
-C <object>::
|
||||
--reuse-message=<object>::
|
||||
Take the given blob object (for example, another note) as the
|
||||
Take the given blob object (for example, another note) as the
|
||||
note message. (Use `git notes copy <object>` instead to
|
||||
copy notes between objects.)
|
||||
|
||||
|
@ -71,12 +71,12 @@ $ git p4 clone //depot/path/project
|
||||
------------
|
||||
This:
|
||||
|
||||
1. Creates an empty Git repository in a subdirectory called 'project'.
|
||||
1. Creates an empty Git repository in a subdirectory called 'project'.
|
||||
+
|
||||
2. Imports the full contents of the head revision from the given p4
|
||||
depot path into a single commit in the Git branch 'refs/remotes/p4/master'.
|
||||
2. Imports the full contents of the head revision from the given p4
|
||||
depot path into a single commit in the Git branch 'refs/remotes/p4/master'.
|
||||
+
|
||||
3. Creates a local branch, 'master' from this remote and checks it out.
|
||||
3. Creates a local branch, 'master' from this remote and checks it out.
|
||||
|
||||
To reproduce the entire p4 history in Git, use the '@all' modifier on
|
||||
the depot path:
|
||||
|
@ -14,7 +14,7 @@ SYNOPSIS
|
||||
[--local] [--incremental] [--window=<n>] [--depth=<n>]
|
||||
[--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
|
||||
[--stdout [--filter=<filter-spec>] | base-name]
|
||||
[--shallow] [--keep-true-parents] [--sparse] < object-list
|
||||
[--shallow] [--keep-true-parents] < object-list
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
@ -196,15 +196,6 @@ depth is 4095.
|
||||
Add --no-reuse-object if you want to force a uniform compression
|
||||
level on all data no matter the source.
|
||||
|
||||
--sparse::
|
||||
Use the "sparse" algorithm to determine which objects to include in
|
||||
the pack, when combined with the "--revs" option. This algorithm
|
||||
only walks trees that appear in paths that introduce new objects.
|
||||
This can have significant performance benefits when computing
|
||||
a pack to send a small change. However, it is possible that extra
|
||||
objects are added to the pack-file if the included commits contain
|
||||
certain types of direct renames.
|
||||
|
||||
--thin::
|
||||
Create a "thin" pack by omitting the common objects between a
|
||||
sender and a receiver in order to reduce network transfer. This
|
||||
|
@ -112,9 +112,8 @@ When set to `merges`, rebase using `git rebase --rebase-merges` so that
|
||||
the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When set to `preserve` (deprecated in favor of `merges`), rebase with the
|
||||
`--preserve-merges` option passed to `git rebase` so that locally created
|
||||
merge commits will not be flattened.
|
||||
When set to preserve, rebase with the `--preserve-merges` option passed
|
||||
to `git rebase` so that locally created merge commits will not be flattened.
|
||||
+
|
||||
When false, merge the current branch into the upstream branch.
|
||||
+
|
||||
|
@ -73,26 +73,6 @@ be omitted--such a push will update a ref that `<src>` normally updates
|
||||
without any `<refspec>` on the command line. Otherwise, missing
|
||||
`:<dst>` means to update the same ref as the `<src>`.
|
||||
+
|
||||
If <dst> doesn't start with `refs/` (e.g. `refs/heads/master`) we will
|
||||
try to infer where in `refs/*` on the destination <repository> it
|
||||
belongs based on the the type of <src> being pushed and whether <dst>
|
||||
is ambiguous.
|
||||
+
|
||||
--
|
||||
* If <dst> unambiguously refers to a ref on the <repository> remote,
|
||||
then push to that ref.
|
||||
|
||||
* If <src> resolves to a ref starting with refs/heads/ or refs/tags/,
|
||||
then prepend that to <dst>.
|
||||
|
||||
* Other ambiguity resolutions might be added in the future, but for
|
||||
now any other cases will error out with an error indicating what we
|
||||
tried, and depending on the `advice.pushUnqualifiedRefname`
|
||||
configuration (see linkgit:git-config[1]) suggest what refs/
|
||||
namespace you may have wanted to push to.
|
||||
|
||||
--
|
||||
+
|
||||
The object referenced by <src> is used to update the <dst> reference
|
||||
on the remote side. Whether this is allowed depends on where in
|
||||
`refs/*` the <dst> reference lives as described in detail below, in
|
||||
@ -611,9 +591,6 @@ the ones in the examples below) can be configured as the default for
|
||||
`refs/remotes/satellite/master`) in the `mothership` repository;
|
||||
do the same for `dev` and `satellite/dev`.
|
||||
+
|
||||
See the section describing `<refspec>...` above for a discussion of
|
||||
the matching semantics.
|
||||
+
|
||||
This is to emulate `git fetch` run on the `mothership` using `git
|
||||
push` that is run in the opposite direction in order to integrate
|
||||
the work done on `satellite`, and is often necessary when you can
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git quiltimport' [--dry-run | -n] [--author <author>] [--patches <dir>]
|
||||
[--series <file>] [--keep-non-patch]
|
||||
[--series <file>]
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
@ -56,9 +56,6 @@ The default for the series file is <patches>/series
|
||||
or the value of the `$QUILT_SERIES` environment
|
||||
variable.
|
||||
|
||||
--keep-non-patch::
|
||||
Pass `-b` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -38,9 +38,8 @@ OPTIONS
|
||||
started.
|
||||
|
||||
--reset::
|
||||
Same as -m, except that unmerged entries are discarded instead
|
||||
of failing. When used with `-u`, updates leading to loss of
|
||||
working tree changes will not abort the operation.
|
||||
Same as -m, except that unmerged entries are discarded
|
||||
instead of failing.
|
||||
|
||||
-u::
|
||||
After a successful merge, update the files in the work
|
||||
@ -129,10 +128,6 @@ OPTIONS
|
||||
Instead of reading tree object(s) into the index, just empty
|
||||
it.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
Quiet, suppress feedback messages.
|
||||
|
||||
<tree-ish#>::
|
||||
The id of the tree object(s) to be read/merged.
|
||||
|
||||
|
@ -300,11 +300,6 @@ See also INCOMPATIBLE OPTIONS below.
|
||||
+
|
||||
See also INCOMPATIBLE OPTIONS below.
|
||||
|
||||
--rerere-autoupdate::
|
||||
--no-rerere-autoupdate::
|
||||
Allow the rerere mechanism to update the index with the
|
||||
result of auto-conflict resolution if possible.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
@ -415,14 +410,14 @@ See also INCOMPATIBLE OPTIONS below.
|
||||
+
|
||||
By default, or when `no-rebase-cousins` was specified, commits which do not
|
||||
have `<upstream>` as direct ancestor will keep their original branch point,
|
||||
i.e. commits that would be excluded by linkgit:git-log[1]'s
|
||||
i.e. commits that would be excluded by gitlink:git-log[1]'s
|
||||
`--ancestry-path` option will keep their original ancestry by default. If
|
||||
the `rebase-cousins` mode is turned on, such commits are instead rebased
|
||||
onto `<upstream>` (or `<onto>`, if specified).
|
||||
+
|
||||
The `--rebase-merges` mode is similar in spirit to the deprecated
|
||||
`--preserve-merges`, but in contrast to that option works well in interactive
|
||||
rebases: commits can be reordered, inserted and dropped at will.
|
||||
The `--rebase-merges` mode is similar in spirit to `--preserve-merges`, but
|
||||
in contrast to that option works well in interactive rebases: commits can be
|
||||
reordered, inserted and dropped at will.
|
||||
+
|
||||
It is currently only possible to recreate the merge commits using the
|
||||
`recursive` merge strategy; Different merge strategies can be used only via
|
||||
@ -432,10 +427,9 @@ See also REBASING MERGES and INCOMPATIBLE OPTIONS below.
|
||||
|
||||
-p::
|
||||
--preserve-merges::
|
||||
[DEPRECATED: use `--rebase-merges` instead] Recreate merge commits
|
||||
instead of flattening the history by replaying commits a merge commit
|
||||
introduces. Merge conflict resolutions or manual amendments to merge
|
||||
commits are not preserved.
|
||||
Recreate merge commits instead of flattening the history by replaying
|
||||
commits a merge commit introduces. Merge conflict resolutions or manual
|
||||
amendments to merge commits are not preserved.
|
||||
+
|
||||
This uses the `--interactive` machinery internally, but combining it
|
||||
with the `--interactive` option explicitly is generally not a good
|
||||
@ -507,15 +501,18 @@ See also INCOMPATIBLE OPTIONS below.
|
||||
with care: the final stash application after a successful
|
||||
rebase might result in non-trivial conflicts.
|
||||
|
||||
--reschedule-failed-exec::
|
||||
--no-reschedule-failed-exec::
|
||||
Automatically reschedule `exec` commands that failed. This only makes
|
||||
sense in interactive mode (or when an `--exec` option was provided).
|
||||
|
||||
INCOMPATIBLE OPTIONS
|
||||
--------------------
|
||||
|
||||
The following options:
|
||||
git-rebase has many flags that are incompatible with each other,
|
||||
predominantly due to the fact that it has three different underlying
|
||||
implementations:
|
||||
|
||||
* one based on linkgit:git-am[1] (the default)
|
||||
* one based on git-merge-recursive (merge backend)
|
||||
* one based on linkgit:git-cherry-pick[1] (interactive backend)
|
||||
|
||||
Flags only understood by the am backend:
|
||||
|
||||
* --committer-date-is-author-date
|
||||
* --ignore-date
|
||||
@ -523,22 +520,26 @@ The following options:
|
||||
* --ignore-whitespace
|
||||
* -C
|
||||
|
||||
are incompatible with the following options:
|
||||
Flags understood by both merge and interactive backends:
|
||||
|
||||
* --merge
|
||||
* --strategy
|
||||
* --strategy-option
|
||||
* --allow-empty-message
|
||||
|
||||
Flags only understood by the interactive backend:
|
||||
|
||||
* --[no-]autosquash
|
||||
* --rebase-merges
|
||||
* --preserve-merges
|
||||
* --interactive
|
||||
* --exec
|
||||
* --keep-empty
|
||||
* --autosquash
|
||||
* --edit-todo
|
||||
* --root when used in combination with --onto
|
||||
|
||||
In addition, the following pairs of options are incompatible:
|
||||
Other incompatible flag pairs:
|
||||
|
||||
* --preserve-merges and --interactive
|
||||
* --preserve-merges and --signoff
|
||||
@ -559,6 +560,8 @@ commit started empty (had no changes relative to its parent to
|
||||
start with) or ended empty (all changes were already applied
|
||||
upstream in other commits).
|
||||
|
||||
The merge backend does the same.
|
||||
|
||||
The interactive backend drops commits by default that
|
||||
started empty and halts if it hits a commit that ended up empty.
|
||||
The `--keep-empty` option exists for the interactive backend to allow
|
||||
@ -567,9 +570,8 @@ it to keep commits that started empty.
|
||||
Directory rename detection
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Directory rename heuristics are enabled in the merge and interactive
|
||||
backends. Due to the lack of accurate tree information, directory
|
||||
rename detection is disabled in the am backend.
|
||||
The merge and interactive backends work fine with
|
||||
directory rename detection. The am backend sometimes does not.
|
||||
|
||||
include::merge-strategies.txt[]
|
||||
|
||||
@ -675,8 +677,7 @@ $ git rebase -i HEAD~5
|
||||
|
||||
And move the first patch to the end of the list.
|
||||
|
||||
You might want to recreate merge commits, e.g. if you have a history
|
||||
like this:
|
||||
You might want to preserve merges, if you have a history like this:
|
||||
|
||||
------------------
|
||||
X
|
||||
@ -690,7 +691,7 @@ Suppose you want to rebase the side branch starting at "A" to "Q". Make
|
||||
sure that the current HEAD is "B", and call
|
||||
|
||||
-----------------------------
|
||||
$ git rebase -i -r --onto Q O
|
||||
$ git rebase -i -p --onto Q O
|
||||
-----------------------------
|
||||
|
||||
Reordering and editing commits usually creates untested intermediate
|
||||
@ -978,7 +979,7 @@ when the merge operation did not even start), it is rescheduled immediately.
|
||||
|
||||
At this time, the `merge` command will *always* use the `recursive`
|
||||
merge strategy for regular merges, and `octopus` for octopus merges,
|
||||
with no way to choose a different one. To work around
|
||||
strategy, with no way to choose a different one. To work around
|
||||
this, an `exec` command can be used to call `git merge` explicitly,
|
||||
using the fact that the labels are worktree-local refs (the ref
|
||||
`refs/rewritten/onto` would correspond to the label `onto`, for example).
|
||||
@ -1027,11 +1028,11 @@ merge cmake
|
||||
|
||||
BUGS
|
||||
----
|
||||
The todo list presented by the deprecated `--preserve-merges --interactive`
|
||||
does not represent the topology of the revision graph (use `--rebase-merges`
|
||||
instead). Editing commits and rewording their commit messages should work
|
||||
fine, but attempts to reorder commits tend to produce counterintuitive results.
|
||||
Use `--rebase-merges` in such scenarios instead.
|
||||
The todo list presented by `--preserve-merges --interactive` does not
|
||||
represent the topology of the revision graph. Editing commits and
|
||||
rewording their commit messages should work fine, but attempts to
|
||||
reorder commits tend to produce counterintuitive results. Use
|
||||
`--rebase-merges` in such scenarios instead.
|
||||
|
||||
For example, an attempt to rearrange
|
||||
------------
|
||||
|
@ -104,7 +104,7 @@ begins with `ext::`. Examples:
|
||||
link-level address).
|
||||
|
||||
"ext::git-server-alias foo %G/repo% with% spaces %Vfoo"::
|
||||
Represents a repository with path `/repo with spaces` accessed
|
||||
Represents a repository with path '/repo with spaces' accessed
|
||||
using the helper program "git-server-alias foo". The hostname for
|
||||
the remote server passed in the protocol stream will be "foo"
|
||||
(this allows multiple virtual Git servers to share a
|
||||
@ -118,7 +118,7 @@ begins with `ext::`. Examples:
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:gitremote-helpers[7]
|
||||
linkgit:gitremote-helpers[1]
|
||||
|
||||
GIT
|
||||
---
|
||||
|
@ -52,7 +52,7 @@ EXAMPLES
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:gitremote-helpers[7]
|
||||
linkgit:gitremote-helpers[1]
|
||||
|
||||
GIT
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
git-remote-helpers
|
||||
==================
|
||||
|
||||
This document has been moved to linkgit:gitremote-helpers[7].
|
||||
This document has been moved to linkgit:gitremote-helpers[1].
|
||||
|
||||
Please let the owners of the referring site know so that they can update the
|
||||
link you clicked to get here.
|
||||
|
30
Documentation/git-remote-testgit.txt
Normal file
30
Documentation/git-remote-testgit.txt
Normal file
@ -0,0 +1,30 @@
|
||||
git-remote-testgit(1)
|
||||
=====================
|
||||
|
||||
NAME
|
||||
----
|
||||
git-remote-testgit - Example remote-helper
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
git clone testgit::<source-repo> [<destination>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
This command is a simple remote-helper, that is used both as a
|
||||
testcase for the remote-helper functionality, and as an example to
|
||||
show remote-helper authors one possible implementation.
|
||||
|
||||
The best way to learn more is to read the comments and source code in
|
||||
'git-remote-testgit'.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:gitremote-helpers[1]
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
@ -24,7 +24,7 @@ on the initial manual merge, and applying previously recorded
|
||||
hand resolutions to their corresponding automerge results.
|
||||
|
||||
[NOTE]
|
||||
You need to set the configuration variable `rerere.enabled` in order to
|
||||
You need to set the configuration variable rerere.enabled in order to
|
||||
enable this command.
|
||||
|
||||
|
||||
|
@ -115,17 +115,17 @@ $ git pull git://info.example.com/ nitfol <4>
|
||||
------------
|
||||
+
|
||||
<1> You are happily working on something, and find the changes
|
||||
in these files are in good order. You do not want to see them
|
||||
when you run `git diff`, because you plan to work on other files
|
||||
and changes with these files are distracting.
|
||||
in these files are in good order. You do not want to see them
|
||||
when you run `git diff`, because you plan to work on other files
|
||||
and changes with these files are distracting.
|
||||
<2> Somebody asks you to pull, and the changes sound worthy of merging.
|
||||
<3> However, you already dirtied the index (i.e. your index does
|
||||
not match the `HEAD` commit). But you know the pull you are going
|
||||
to make does not affect `frotz.c` or `filfre.c`, so you revert the
|
||||
index changes for these two files. Your changes in working tree
|
||||
remain there.
|
||||
not match the `HEAD` commit). But you know the pull you are going
|
||||
to make does not affect `frotz.c` or `filfre.c`, so you revert the
|
||||
index changes for these two files. Your changes in working tree
|
||||
remain there.
|
||||
<4> Then you can pull and merge, leaving `frotz.c` and `filfre.c`
|
||||
changes still in the working tree.
|
||||
changes still in the working tree.
|
||||
|
||||
Undo a commit and redo::
|
||||
+
|
||||
@ -137,12 +137,12 @@ $ git commit -a -c ORIG_HEAD <3>
|
||||
------------
|
||||
+
|
||||
<1> This is most often done when you remembered what you
|
||||
just committed is incomplete, or you misspelled your commit
|
||||
message, or both. Leaves working tree as it was before "reset".
|
||||
just committed is incomplete, or you misspelled your commit
|
||||
message, or both. Leaves working tree as it was before "reset".
|
||||
<2> Make corrections to working tree files.
|
||||
<3> "reset" copies the old head to `.git/ORIG_HEAD`; redo the
|
||||
commit by starting with its log message. If you do not need to
|
||||
edit the message further, you can give `-C` option instead.
|
||||
commit by starting with its log message. If you do not need to
|
||||
edit the message further, you can give `-C` option instead.
|
||||
+
|
||||
See also the `--amend` option to linkgit:git-commit[1].
|
||||
|
||||
@ -155,9 +155,9 @@ $ git checkout topic/wip <3>
|
||||
------------
|
||||
+
|
||||
<1> You have made some commits, but realize they were premature
|
||||
to be in the `master` branch. You want to continue polishing
|
||||
them in a topic branch, so create `topic/wip` branch off of the
|
||||
current `HEAD`.
|
||||
to be in the `master` branch. You want to continue polishing
|
||||
them in a topic branch, so create `topic/wip` branch off of the
|
||||
current `HEAD`.
|
||||
<2> Rewind the master branch to get rid of those three commits.
|
||||
<3> Switch to `topic/wip` branch and keep working.
|
||||
|
||||
@ -169,10 +169,10 @@ $ git reset --hard HEAD~3 <1>
|
||||
------------
|
||||
+
|
||||
<1> The last three commits (`HEAD`, `HEAD^`, and `HEAD~2`) were bad
|
||||
and you do not want to ever see them again. Do *not* do this if
|
||||
you have already given these commits to somebody else. (See the
|
||||
"RECOVERING FROM UPSTREAM REBASE" section in linkgit:git-rebase[1]
|
||||
for the implications of doing so.)
|
||||
and you do not want to ever see them again. Do *not* do this if
|
||||
you have already given these commits to somebody else. (See the
|
||||
"RECOVERING FROM UPSTREAM REBASE" section in linkgit:git-rebase[1] for
|
||||
the implications of doing so.)
|
||||
|
||||
Undo a merge or pull::
|
||||
+
|
||||
@ -189,18 +189,18 @@ $ git reset --hard ORIG_HEAD <4>
|
||||
------------
|
||||
+
|
||||
<1> Try to update from the upstream resulted in a lot of
|
||||
conflicts; you were not ready to spend a lot of time merging
|
||||
right now, so you decide to do that later.
|
||||
conflicts; you were not ready to spend a lot of time merging
|
||||
right now, so you decide to do that later.
|
||||
<2> "pull" has not made merge commit, so `git reset --hard`
|
||||
which is a synonym for `git reset --hard HEAD` clears the mess
|
||||
from the index file and the working tree.
|
||||
which is a synonym for `git reset --hard HEAD` clears the mess
|
||||
from the index file and the working tree.
|
||||
<3> Merge a topic branch into the current branch, which resulted
|
||||
in a fast-forward.
|
||||
in a fast-forward.
|
||||
<4> But you decided that the topic branch is not ready for public
|
||||
consumption yet. "pull" or "merge" always leaves the original
|
||||
tip of the current branch in `ORIG_HEAD`, so resetting hard to it
|
||||
brings your index file and the working tree back to that state,
|
||||
and resets the tip of the branch to that commit.
|
||||
consumption yet. "pull" or "merge" always leaves the original
|
||||
tip of the current branch in `ORIG_HEAD`, so resetting hard to it
|
||||
brings your index file and the working tree back to that state,
|
||||
and resets the tip of the branch to that commit.
|
||||
|
||||
Undo a merge or pull inside a dirty working tree::
|
||||
+
|
||||
@ -214,14 +214,14 @@ $ git reset --merge ORIG_HEAD <2>
|
||||
------------
|
||||
+
|
||||
<1> Even if you may have local modifications in your
|
||||
working tree, you can safely say `git pull` when you know
|
||||
that the change in the other branch does not overlap with
|
||||
them.
|
||||
working tree, you can safely say `git pull` when you know
|
||||
that the change in the other branch does not overlap with
|
||||
them.
|
||||
<2> After inspecting the result of the merge, you may find
|
||||
that the change in the other branch is unsatisfactory. Running
|
||||
`git reset --hard ORIG_HEAD` will let you go back to where you
|
||||
were, but it will discard your local changes, which you do not
|
||||
want. `git reset --merge` keeps your local changes.
|
||||
that the change in the other branch is unsatisfactory. Running
|
||||
`git reset --hard ORIG_HEAD` will let you go back to where you
|
||||
were, but it will discard your local changes, which you do not
|
||||
want. `git reset --merge` keeps your local changes.
|
||||
|
||||
|
||||
Interrupted workflow::
|
||||
@ -428,8 +428,8 @@ working index HEAD target working index HEAD
|
||||
|
||||
`reset --merge` is meant to be used when resetting out of a conflicted
|
||||
merge. Any mergy operation guarantees that the working tree file that is
|
||||
involved in the merge does not have a local change with respect to the index
|
||||
before it starts, and that it writes the result out to the working tree. So if
|
||||
involved in the merge does not have local change wrt the index before
|
||||
it starts, and that it writes the result out to the working tree. So if
|
||||
we see some difference between the index and the target and also
|
||||
between the index and the working tree, then it means that we are not
|
||||
resetting out from a state that a mergy operation left after failing
|
||||
|
@ -66,13 +66,6 @@ more details.
|
||||
With this option, 'git revert' will not start the commit
|
||||
message editor.
|
||||
|
||||
--cleanup=<mode>::
|
||||
This option determines how the commit message will be cleaned up before
|
||||
being passed on to the commit machinery. See linkgit:git-commit[1] for more
|
||||
details. In particular, if the '<mode>' is given a value of `scissors`,
|
||||
scissors will be appended to `MERGE_MSG` before being passed on in the case
|
||||
of a conflict.
|
||||
|
||||
-n::
|
||||
--no-commit::
|
||||
Usually the command automatically creates some commits with
|
||||
@ -108,11 +101,6 @@ effect to your index in a row.
|
||||
Pass the merge strategy-specific option through to the
|
||||
merge strategy. See linkgit:git-merge[1] for details.
|
||||
|
||||
--rerere-autoupdate::
|
||||
--no-rerere-autoupdate::
|
||||
Allow the rerere mechanism to update the index with the
|
||||
result of auto-conflict resolution if possible.
|
||||
|
||||
SEQUENCER SUBCOMMANDS
|
||||
---------------------
|
||||
include::sequencer.txt[]
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user