Compare commits
53 Commits
v2.24.0-rc
...
v2.20.2
Author | SHA1 | Date | |
---|---|---|---|
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 |
@ -148,21 +148,8 @@ SpacesInSquareBrackets: false
|
||||
Cpp11BracedListStyle: false
|
||||
|
||||
# A list of macros that should be interpreted as foreach loops instead of as
|
||||
# function calls. Taken from:
|
||||
# git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' \
|
||||
# | sed "s,^#define \([^[:space:]]*for_each[^[:space:]]*\)(.*$, - '\1'," \
|
||||
# | sort | uniq
|
||||
ForEachMacros:
|
||||
- 'for_each_abbrev'
|
||||
- 'for_each_builtin'
|
||||
- 'for_each_string_list_item'
|
||||
- 'for_each_ut'
|
||||
- 'for_each_wanted_builtin'
|
||||
- 'list_for_each'
|
||||
- 'list_for_each_dir'
|
||||
- 'list_for_each_prev'
|
||||
- 'list_for_each_prev_safe'
|
||||
- 'list_for_each_safe'
|
||||
# function calls.
|
||||
ForEachMacros: ['for_each_string_list_item']
|
||||
|
||||
# The maximum number of consecutive empty lines to keep.
|
||||
MaxEmptyLinesToKeep: 1
|
||||
|
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -5,7 +5,6 @@
|
||||
*.pl eof=lf diff=perl
|
||||
*.pm eol=lf diff=perl
|
||||
*.py eol=lf diff=python
|
||||
*.bat eol=crlf
|
||||
/Documentation/**/*.txt eol=lf
|
||||
/command-list.txt eol=lf
|
||||
/GIT-VERSION-GEN eol=lf
|
||||
|
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!
|
||||
|
25
.gitignore
vendored
25
.gitignore
vendored
@ -1,4 +1,3 @@
|
||||
/fuzz-commit-graph
|
||||
/fuzz_corpora
|
||||
/fuzz-pack-headers
|
||||
/fuzz-pack-idx
|
||||
@ -58,7 +57,6 @@
|
||||
/git-difftool
|
||||
/git-difftool--helper
|
||||
/git-describe
|
||||
/git-env--helper
|
||||
/git-fast-export
|
||||
/git-fast-import
|
||||
/git-fetch
|
||||
@ -83,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
|
||||
@ -123,6 +121,10 @@
|
||||
/git-range-diff
|
||||
/git-read-tree
|
||||
/git-rebase
|
||||
/git-rebase--am
|
||||
/git-rebase--common
|
||||
/git-rebase--interactive
|
||||
/git-rebase--merge
|
||||
/git-rebase--preserve-merges
|
||||
/git-receive-pack
|
||||
/git-reflog
|
||||
@ -133,6 +135,7 @@
|
||||
/git-remote-ftps
|
||||
/git-remote-fd
|
||||
/git-remote-ext
|
||||
/git-remote-testgit
|
||||
/git-remote-testpy
|
||||
/git-remote-testsvn
|
||||
/git-repack
|
||||
@ -140,7 +143,6 @@
|
||||
/git-request-pull
|
||||
/git-rerere
|
||||
/git-reset
|
||||
/git-restore
|
||||
/git-rev-list
|
||||
/git-rev-parse
|
||||
/git-revert
|
||||
@ -165,7 +167,6 @@
|
||||
/git-submodule
|
||||
/git-submodule--helper
|
||||
/git-svn
|
||||
/git-switch
|
||||
/git-symbolic-ref
|
||||
/git-tag
|
||||
/git-unpack-file
|
||||
@ -216,7 +217,6 @@
|
||||
/tags
|
||||
/TAGS
|
||||
/cscope*
|
||||
*.hcc
|
||||
*.obj
|
||||
*.lib
|
||||
*.res
|
||||
@ -227,14 +227,5 @@
|
||||
*.user
|
||||
*.idb
|
||||
*.pdb
|
||||
*.ilk
|
||||
*.iobj
|
||||
*.ipdb
|
||||
*.dll
|
||||
.vs/
|
||||
Debug/
|
||||
Release/
|
||||
/UpgradeLog*.htm
|
||||
/git.VC.VC.opendb
|
||||
/git.VC.db
|
||||
*.dSYM
|
||||
/Debug/
|
||||
/Release/
|
||||
|
5
.mailmap
5
.mailmap
@ -18,7 +18,6 @@ Alexey Shumkin <alex.crezoff@gmail.com> <zapped@mail.ru>
|
||||
Alexey Shumkin <alex.crezoff@gmail.com> <Alex.Crezoff@gmail.com>
|
||||
Anders Kaseorg <andersk@MIT.EDU> <andersk@ksplice.com>
|
||||
Anders Kaseorg <andersk@MIT.EDU> <andersk@mit.edu>
|
||||
Andrey Mazo <ahippo@yandex.com> Mazo, Andrey <amazo@checkvideo.com>
|
||||
Aneesh Kumar K.V <aneesh.kumar@gmail.com>
|
||||
Amos Waterland <apw@debian.org> <apw@rossby.metr.ou.edu>
|
||||
Amos Waterland <apw@debian.org> <apw@us.ibm.com>
|
||||
@ -28,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>
|
||||
@ -41,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>
|
||||
@ -211,7 +207,6 @@ Petr Baudis <pasky@ucw.cz> <pasky@suse.cz>
|
||||
Petr Baudis <pasky@ucw.cz> <xpasky@machine>
|
||||
Phil Hord <hordp@cisco.com> <phil.hord@gmail.com>
|
||||
Philip Jägenstedt <philip@foolip.org> <philip.jagenstedt@gmail.com>
|
||||
Philip Oakley <philipoakley@iee.email> <philipoakley@iee.org> # secondary <philipoakley@dunelm.org.uk>
|
||||
Philipp A. Hartmann <pah@qo.cx> <ph@sorgh.de>
|
||||
Philippe Bruhat <book@cpan.org>
|
||||
Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
|
||||
|
12
.travis.yml
12
.travis.yml
@ -8,8 +8,6 @@ os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
osx_image: xcode10.1
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
@ -21,10 +19,16 @@ matrix:
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
- env: jobname=linux-gcc-4.8
|
||||
- env: jobname=Windows
|
||||
os: linux
|
||||
dist: trusty
|
||||
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:
|
||||
|
@ -1,93 +0,0 @@
|
||||
# Git Code of Conduct
|
||||
|
||||
This code of conduct outlines our expectations for participants within
|
||||
the Git community, as well as steps for reporting unacceptable behavior.
|
||||
We are committed to providing a welcoming and inspiring community for
|
||||
all and expect our code of conduct to be honored. Anyone who violates
|
||||
this code of conduct may be banned from the community.
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to make participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age,
|
||||
body size, disability, ethnicity, sex characteristics, gender identity and
|
||||
expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all project spaces, and it also applies
|
||||
when an individual is representing the project or its community in public
|
||||
spaces. Examples of representing a project or community include using an
|
||||
official project e-mail address, posting via an official social media account,
|
||||
or acting as an appointed representative at an online or offline event.
|
||||
Representation of a project may be further defined and clarified by project
|
||||
maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at git@sfconservancy.org. All
|
||||
complaints will be reviewed and investigated and will result in a response
|
||||
that is deemed necessary and appropriate to the circumstances. The project
|
||||
team is obligated to maintain confidentiality with regard to the reporter of
|
||||
an incident. Further details of specific enforcement policies may be posted
|
||||
separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
The project leadership team can be contacted by email as a whole at
|
||||
git@sfconservancy.org, or individually:
|
||||
|
||||
- Ævar Arnfjörð Bjarmason <avarab@gmail.com>
|
||||
- Christian Couder <christian.couder@gmail.com>
|
||||
- Jeff King <peff@peff.net>
|
||||
- Junio C Hamano <gitster@pobox.com>
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
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
|
||||
|
@ -195,30 +195,10 @@ For C programs:
|
||||
by e.g. "echo DEVELOPER=1 >>config.mak".
|
||||
|
||||
- We try to support a wide range of C compilers to compile Git with,
|
||||
including old ones. You should not use features from newer C
|
||||
standard, even if your compiler groks them.
|
||||
including old ones. That means that you should not use C99
|
||||
initializers, even if a lot of compilers grok it.
|
||||
|
||||
There are a few exceptions to this guideline:
|
||||
|
||||
. since early 2012 with e1327023ea, we have been using an enum
|
||||
definition whose last element is followed by a comma. This, like
|
||||
an array initializer that ends with a trailing comma, can be used
|
||||
to reduce the patch noise when adding a new identifer at the end.
|
||||
|
||||
. since mid 2017 with cbc0f81d, we have been using designated
|
||||
initializers for struct (e.g. "struct t v = { .val = 'a' };").
|
||||
|
||||
. since mid 2017 with 512f41cf, we have been using designated
|
||||
initializers for array (e.g. "int array[10] = { [5] = 2 }").
|
||||
|
||||
These used to be forbidden, but we have not heard any breakage
|
||||
report, and they are assumed to be safe.
|
||||
|
||||
- Variables have to be declared at the beginning of the block, before
|
||||
the first statement (i.e. -Wdeclaration-after-statement).
|
||||
|
||||
- Declaring a variable in the for loop "for (int i = 0; i < 10; i++)"
|
||||
is still not allowed in this codebase.
|
||||
- Variables have to be declared at the beginning of the block.
|
||||
|
||||
- NULL pointers shall be written as NULL, not as 0.
|
||||
|
||||
@ -432,12 +412,6 @@ For C programs:
|
||||
must be declared with "extern" in header files. However, function
|
||||
declarations should not use "extern", as that is already the default.
|
||||
|
||||
- You can launch gdb around your program using the shorthand GIT_DEBUGGER.
|
||||
Run `GIT_DEBUGGER=1 ./bin-wrappers/git foo` to simply use gdb as is, or
|
||||
run `GIT_DEBUGGER="<debugger> <debugger-args>" ./bin-wrappers/git foo` to
|
||||
use your own debugger and arguments. Example: `GIT_DEBUGGER="ddd --gdb"
|
||||
./bin-wrappers/git log` (See `wrap-for-bin.sh`.)
|
||||
|
||||
For Perl programs:
|
||||
|
||||
- Most of the C guidelines above apply.
|
||||
@ -606,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
|
||||
@ -76,7 +68,6 @@ SP_ARTICLES += howto/maintain-git
|
||||
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
||||
SP_ARTICLES += $(API_DOCS)
|
||||
|
||||
TECH_DOCS += MyFirstContribution
|
||||
TECH_DOCS += SubmittingPatches
|
||||
TECH_DOCS += technical/hash-function-transition
|
||||
TECH_DOCS += technical/http-protocol
|
||||
@ -98,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
|
||||
@ -123,8 +112,7 @@ ASCIIDOC_HTML = xhtml11
|
||||
ASCIIDOC_DOCBOOK = docbook
|
||||
ASCIIDOC_CONF = -f asciidoc.conf
|
||||
ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
|
||||
-amanversion=$(GIT_VERSION) \
|
||||
-amanmanual='Git Manual' -amansource='Git'
|
||||
-agit_version=$(GIT_VERSION)
|
||||
TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
|
||||
TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
|
||||
MANPAGE_XSL = manpage-normal.xsl
|
||||
@ -198,13 +186,11 @@ ifdef USE_ASCIIDOCTOR
|
||||
ASCIIDOC = asciidoctor
|
||||
ASCIIDOC_CONF =
|
||||
ASCIIDOC_HTML = xhtml5
|
||||
ASCIIDOC_DOCBOOK = docbook5
|
||||
ASCIIDOC_DOCBOOK = docbook45
|
||||
ASCIIDOC_EXTRA += -acompat-mode -atabsize=8
|
||||
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
||||
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
|
||||
DBLATEX_COMMON =
|
||||
XMLTO_EXTRA += --skip-validation
|
||||
XMLTO_EXTRA += -x manpage.xsl
|
||||
endif
|
||||
|
||||
SHELL_PATH ?= $(SHELL)
|
||||
@ -338,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
|
||||
@ -356,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 $@+ $@
|
||||
@ -371,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 $@+ $@
|
||||
@ -390,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
|
||||
@ -448,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) - >$@+ && \
|
||||
@ -482,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
|
||||
|
File diff suppressed because it is too large
Load Diff
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.
|
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.
|
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.
|
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.
|
@ -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).
|
@ -1,150 +0,0 @@
|
||||
Git 2.22.1 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.22
|
||||
-----------------
|
||||
|
||||
* A relative pathname given to "git init --template=<path> <repo>"
|
||||
ought to be relative to the directory "git init" gets invoked in,
|
||||
but it instead was made relative to the repository, which has been
|
||||
corrected.
|
||||
|
||||
* "git worktree add" used to fail when another worktree connected to
|
||||
the same repository was corrupt, which has been corrected.
|
||||
|
||||
* The ownership rule for the file descriptor to fast-import remote
|
||||
backend was mixed up, leading to unrelated file descriptor getting
|
||||
closed, which has been fixed.
|
||||
|
||||
* "git update-server-info" used to leave stale packfiles in its
|
||||
output, which has been corrected.
|
||||
|
||||
* The server side support for "git fetch" used to show incorrect
|
||||
value for the HEAD symbolic ref when the namespace feature is in
|
||||
use, which has been corrected.
|
||||
|
||||
* "git am -i --resolved" segfaulted after trying to see a commit as
|
||||
if it were a tree, which has been corrected.
|
||||
|
||||
* "git bundle verify" needs to see if prerequisite objects exist in
|
||||
the receiving repository, but the command did not check if we are
|
||||
in a repository upfront, which has been corrected.
|
||||
|
||||
* "git merge --squash" is designed to update the working tree and the
|
||||
index without creating the commit, and this cannot be countermanded
|
||||
by adding the "--commit" option; the command now refuses to work
|
||||
when both options are given.
|
||||
|
||||
* The data collected by fsmonitor was not properly written back to
|
||||
the on-disk index file, breaking t7519 tests occasionally, which
|
||||
has been corrected.
|
||||
|
||||
* Update to Unicode 12.1 width table.
|
||||
|
||||
* The command line to invoke a "git cat-file" command from inside
|
||||
"git p4" was not properly quoted to protect a caret and running a
|
||||
broken command on Windows, which has been corrected.
|
||||
|
||||
* "git request-pull" learned to warn when the ref we ask them to pull
|
||||
from in the local repository and in the published repository are
|
||||
different.
|
||||
|
||||
* When creating a partial clone, the object filtering criteria is
|
||||
recorded for the origin of the clone, but this incorrectly used a
|
||||
hardcoded name "origin" to name that remote; it has been corrected
|
||||
to honor the "--origin <name>" option.
|
||||
|
||||
* "git fetch" into a lazy clone forgot to fetch base objects that are
|
||||
necessary to complete delta in a thin packfile, which has been
|
||||
corrected.
|
||||
|
||||
* The filter_data used in the list-objects-filter (which manages a
|
||||
lazily sparse clone repository) did not use the dynamic array API
|
||||
correctly---'nr' is supposed to point at one past the last element
|
||||
of the array in use. This has been corrected.
|
||||
|
||||
* The description about slashes in gitignore patterns (used to
|
||||
indicate things like "anchored to this level only" and "only
|
||||
matches directories") has been revamped.
|
||||
|
||||
* The URL decoding code has been updated to avoid going past the end
|
||||
of the string while parsing %-<hex>-<hex> sequence.
|
||||
|
||||
* The list of for-each like macros used by clang-format has been
|
||||
updated.
|
||||
|
||||
* "git push --atomic" that goes over the transport-helper (namely,
|
||||
the smart http transport) failed to prevent refs to be pushed when
|
||||
it can locally tell that one of the ref update will fail without
|
||||
having to consult the other end, which has been corrected.
|
||||
|
||||
* "git clean" silently skipped a path when it cannot lstat() it; now
|
||||
it gives a warning.
|
||||
|
||||
* A codepath that reads from GPG for signed object verification read
|
||||
past the end of allocated buffer, which has been fixed.
|
||||
|
||||
* "git rm" to resolve a conflicted path leaked an internal message
|
||||
"needs merge" before actually removing the path, which was
|
||||
confusing. This has been corrected.
|
||||
|
||||
* The "git clone" documentation refers to command line options in its
|
||||
description in the short form; they have been replaced with long
|
||||
forms to make them more recognisable.
|
||||
|
||||
* The configuration variable rebase.rescheduleFailedExec should be
|
||||
effective only while running an interactive rebase and should not
|
||||
affect anything when running a non-interactive one, which was not
|
||||
the case. This has been corrected.
|
||||
|
||||
* "git submodule foreach" did not protect command line options passed
|
||||
to the command to be run in each submodule correctly, when the
|
||||
"--recursive" option was in use.
|
||||
|
||||
* Use "Erase in Line" CSI sequence that is already used in the editor
|
||||
support to clear cruft in the progress output.
|
||||
|
||||
* The codepath to compute delta islands used to spew progress output
|
||||
without giving the callers any way to squelch it, which has been
|
||||
fixed.
|
||||
|
||||
* The code to parse scaled numbers out of configuration files has
|
||||
been made more robust and also easier to follow.
|
||||
|
||||
* An incorrect list of options was cached after command line
|
||||
completion failed (e.g. trying to complete a command that requires
|
||||
a repository outside one), which has been corrected.
|
||||
|
||||
* "git rebase --abort" used to leave refs/rewritten/ when concluding
|
||||
"git rebase -r", which has been corrected.
|
||||
|
||||
* "git stash show 23" used to work, but no more after getting
|
||||
rewritten in C; this regression has been corrected.
|
||||
|
||||
* "git interpret-trailers" always treated '#' as the comment
|
||||
character, regardless of core.commentChar setting, which has been
|
||||
corrected.
|
||||
|
||||
* Code clean-up to avoid signed integer overlaps during binary search.
|
||||
|
||||
* "git checkout -p" needs to selectively apply a patch in reverse,
|
||||
which did not work well.
|
||||
|
||||
* The commit-graph file is now part of the "files that the runtime
|
||||
may keep open file descriptors on, all of which would need to be
|
||||
closed when done with the object store", and the file descriptor to
|
||||
an existing commit-graph file now is closed before "gc" finalizes a
|
||||
new instance to replace it.
|
||||
|
||||
* Code restructuring during 2.20 period broke fetching tags via
|
||||
"import" based transports.
|
||||
|
||||
* We have been trying out a few language features outside c89; the
|
||||
coding guidelines document did not talk about them and instead had
|
||||
a blanket ban against them.
|
||||
|
||||
* The internal diff machinery can be made to read out of bounds while
|
||||
looking for --funcion-context line in a corner case, which has been
|
||||
corrected.
|
||||
|
||||
Also contains various documentation updates, code clean-ups and minor fixups.
|
@ -1,348 +0,0 @@
|
||||
Git 2.23 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.22
|
||||
-------------------
|
||||
|
||||
Backward compatibility note
|
||||
|
||||
* The "--base" option of "format-patch" computed the patch-ids for
|
||||
prerequisite patches in an unstable way, which has been updated to
|
||||
compute in a way that is compatible with "git patch-id --stable".
|
||||
|
||||
* The "git log" command by default behaves as if the --mailmap option
|
||||
was given.
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* The "git fast-export/import" pair has been taught to handle commits
|
||||
with log messages in encoding other than UTF-8 better.
|
||||
|
||||
* In recent versions of Git, per-worktree refs are exposed in
|
||||
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
|
||||
must be a valid refname component. The code now sanitizes the names
|
||||
given to worktrees, to make sure these refs are well-formed.
|
||||
|
||||
* "git merge" learned "--quit" option that cleans up the in-progress
|
||||
merge while leaving the working tree and the index still in a mess.
|
||||
|
||||
* "git format-patch" learns a configuration to set the default for
|
||||
its --notes=<ref> option.
|
||||
|
||||
* The code to show args with potential typo that cannot be
|
||||
interpreted as a commit-ish has been improved.
|
||||
|
||||
* "git clone --recurse-submodules" learned to set up the submodules
|
||||
to ignore commit object names recorded in the superproject gitlink
|
||||
and instead use the commits that happen to be at the tip of the
|
||||
remote-tracking branches from the get-go, by passing the new
|
||||
"--remote-submodules" option.
|
||||
|
||||
* The pattern "git diff/grep" use to extract funcname and words
|
||||
boundary for Matlab has been extend to cover Octave, which is more
|
||||
or less equivalent.
|
||||
|
||||
* "git help git" was hard to discover (well, at least for some
|
||||
people).
|
||||
|
||||
* The pattern "git diff/grep" use to extract funcname and words
|
||||
boundary for Rust has been added.
|
||||
|
||||
* "git status" can be told a non-standard default value for the
|
||||
"--[no-]ahead-behind" option with a new configuration variable
|
||||
status.aheadBehind.
|
||||
|
||||
* "git fetch" and "git pull" reports when a fetch results in
|
||||
non-fast-forward updates to let the user notice unusual situation.
|
||||
The commands learned "--no-show-forced-updates" option to disable
|
||||
this safety feature.
|
||||
|
||||
* Two new commands "git switch" and "git restore" are introduced to
|
||||
split "checking out a branch to work on advancing its history" and
|
||||
"checking out paths out of the index and/or a tree-ish to work on
|
||||
advancing the current history" out of the single "git checkout"
|
||||
command.
|
||||
|
||||
* "git branch --list" learned to always output the detached HEAD as
|
||||
the first item (when the HEAD is detached, of course), regardless
|
||||
of the locale.
|
||||
|
||||
* The conditional inclusion mechanism learned to base the choice on
|
||||
the branch the HEAD currently is on.
|
||||
|
||||
* "git rev-list --objects" learned the "--no-object-names" option to
|
||||
squelch the path to the object that is used as a grouping hint for
|
||||
pack-objects.
|
||||
|
||||
* A new tag.gpgSign configuration variable turns "git tag -a" into
|
||||
"git tag -s".
|
||||
|
||||
* "git multi-pack-index" learned expire and repack subcommands.
|
||||
|
||||
* "git blame" learned to "ignore" commits in the history, whose
|
||||
effects (as well as their presence) get ignored.
|
||||
|
||||
* "git cherry-pick/revert" learned a new "--skip" action.
|
||||
|
||||
* The tips of refs from the alternate object store can be used as
|
||||
starting point for reachability computation now.
|
||||
|
||||
* Extra blank lines in "git status" output have been reduced.
|
||||
|
||||
* The commits in a repository can be described by multiple
|
||||
commit-graph files now, which allows the commit-graph files to be
|
||||
updated incrementally.
|
||||
|
||||
* "git range-diff" output has been tweaked for easier identification
|
||||
of which part of what file the patch shown is about.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* Update supporting parts of "git rebase" to remove code that should
|
||||
no longer be used.
|
||||
|
||||
* Developer support to emulate unsatisfied prerequisites in tests to
|
||||
ensure that the remainder of the tests still succeeds when tests
|
||||
with prerequisites are skipped.
|
||||
|
||||
* "git update-server-info" learned not to rewrite the file with the
|
||||
same contents.
|
||||
|
||||
* The way of specifying the path to find dynamic libraries at runtime
|
||||
has been simplified. The old default to pass -R/path/to/dir has been
|
||||
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
|
||||
which is the more recent GCC uses. Those who need to build with an
|
||||
old GCC can still use "CC_LD_DYNPATH=-R"
|
||||
|
||||
* Prepare use of reachability index in topological walker that works
|
||||
on a range (A..B).
|
||||
|
||||
* A new tutorial targeting specifically aspiring git-core
|
||||
developers has been added.
|
||||
|
||||
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
|
||||
libraries from at runtime.
|
||||
|
||||
* "git mergetool" and its tests now spawn fewer subprocesses.
|
||||
|
||||
* Dev support update to help tracing out tests.
|
||||
|
||||
* Support to build with MSVC has been updated.
|
||||
|
||||
* "git fetch" that grabs from a group of remotes learned to run the
|
||||
auto-gc only once at the very end.
|
||||
|
||||
* A handful of Windows build patches have been upstreamed.
|
||||
|
||||
* The code to read state files used by the sequencer machinery for
|
||||
"git status" has been made more robust against a corrupt or stale
|
||||
state files.
|
||||
|
||||
* "git for-each-ref" with multiple patterns have been optimized.
|
||||
|
||||
* The tree-walk API learned to pass an in-core repository
|
||||
instance throughout more codepaths.
|
||||
|
||||
* When one step in multi step cherry-pick or revert is reset or
|
||||
committed, the command line prompt script failed to notice the
|
||||
current status, which has been improved.
|
||||
|
||||
* Many GIT_TEST_* environment variables control various aspects of
|
||||
how our tests are run, but a few followed "non-empty is true, empty
|
||||
or unset is false" while others followed the usual "there are a few
|
||||
ways to spell true, like yes, on, etc., and also ways to spell
|
||||
false, like no, off, etc." convention.
|
||||
|
||||
* Adjust the dir-iterator API and apply it to the local clone
|
||||
optimization codepath.
|
||||
|
||||
* We have been trying out a few language features outside c89; the
|
||||
coding guidelines document did not talk about them and instead had
|
||||
a blanket ban against them.
|
||||
|
||||
* A test helper has been introduced to optimize preparation of test
|
||||
repositories with many simple commits, and a handful of test
|
||||
scripts have been updated to use it.
|
||||
|
||||
|
||||
Fixes since v2.22
|
||||
-----------------
|
||||
|
||||
* A relative pathname given to "git init --template=<path> <repo>"
|
||||
ought to be relative to the directory "git init" gets invoked in,
|
||||
but it instead was made relative to the repository, which has been
|
||||
corrected.
|
||||
|
||||
* "git worktree add" used to fail when another worktree connected to
|
||||
the same repository was corrupt, which has been corrected.
|
||||
|
||||
* The ownership rule for the file descriptor to fast-import remote
|
||||
backend was mixed up, leading to an unrelated file descriptor getting
|
||||
closed, which has been fixed.
|
||||
|
||||
* A "merge -c" instruction during "git rebase --rebase-merges" should
|
||||
give the user a chance to edit the log message, even when there is
|
||||
otherwise no need to create a new merge and replace the existing
|
||||
one (i.e. fast-forward instead), but did not. Which has been
|
||||
corrected.
|
||||
|
||||
* Code cleanup and futureproof.
|
||||
|
||||
* More parameter validation.
|
||||
|
||||
* "git update-server-info" used to leave stale packfiles in its
|
||||
output, which has been corrected.
|
||||
|
||||
* The server side support for "git fetch" used to show incorrect
|
||||
value for the HEAD symbolic ref when the namespace feature is in
|
||||
use, which has been corrected.
|
||||
|
||||
* "git am -i --resolved" segfaulted after trying to see a commit as
|
||||
if it were a tree, which has been corrected.
|
||||
|
||||
* "git bundle verify" needs to see if prerequisite objects exist in
|
||||
the receiving repository, but the command did not check if we are
|
||||
in a repository upfront, which has been corrected.
|
||||
|
||||
* "git merge --squash" is designed to update the working tree and the
|
||||
index without creating the commit, and this cannot be countermanded
|
||||
by adding the "--commit" option; the command now refuses to work
|
||||
when both options are given.
|
||||
|
||||
* The data collected by fsmonitor was not properly written back to
|
||||
the on-disk index file, breaking t7519 tests occasionally, which
|
||||
has been corrected.
|
||||
|
||||
* Update to Unicode 12.1 width table.
|
||||
|
||||
* The command line to invoke a "git cat-file" command from inside
|
||||
"git p4" was not properly quoted to protect a caret and running a
|
||||
broken command on Windows, which has been corrected.
|
||||
|
||||
* "git request-pull" learned to warn when the ref we ask them to pull
|
||||
from in the local repository and in the published repository are
|
||||
different.
|
||||
|
||||
* When creating a partial clone, the object filtering criteria is
|
||||
recorded for the origin of the clone, but this incorrectly used a
|
||||
hardcoded name "origin" to name that remote; it has been corrected
|
||||
to honor the "--origin <name>" option.
|
||||
|
||||
* "git fetch" into a lazy clone forgot to fetch base objects that are
|
||||
necessary to complete delta in a thin packfile, which has been
|
||||
corrected.
|
||||
|
||||
* The filter_data used in the list-objects-filter (which manages a
|
||||
lazily sparse clone repository) did not use the dynamic array API
|
||||
correctly---'nr' is supposed to point at one past the last element
|
||||
of the array in use. This has been corrected.
|
||||
|
||||
* The description about slashes in gitignore patterns (used to
|
||||
indicate things like "anchored to this level only" and "only
|
||||
matches directories") has been revamped.
|
||||
|
||||
* The URL decoding code has been updated to avoid going past the end
|
||||
of the string while parsing %-<hex>-<hex> sequence.
|
||||
|
||||
* The list of for-each like macros used by clang-format has been
|
||||
updated.
|
||||
|
||||
* "git branch --list" learned to show branches that are checked out
|
||||
in other worktrees connected to the same repository prefixed with
|
||||
'+', similar to the way the currently checked out branch is shown
|
||||
with '*' in front.
|
||||
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
|
||||
|
||||
* Code restructuring during 2.20 period broke fetching tags via
|
||||
"import" based transports.
|
||||
|
||||
* The commit-graph file is now part of the "files that the runtime
|
||||
may keep open file descriptors on, all of which would need to be
|
||||
closed when done with the object store", and the file descriptor to
|
||||
an existing commit-graph file now is closed before "gc" finalizes a
|
||||
new instance to replace it.
|
||||
|
||||
* "git checkout -p" needs to selectively apply a patch in reverse,
|
||||
which did not work well.
|
||||
|
||||
* Code clean-up to avoid signed integer wraparounds during binary search.
|
||||
|
||||
* "git interpret-trailers" always treated '#' as the comment
|
||||
character, regardless of core.commentChar setting, which has been
|
||||
corrected.
|
||||
|
||||
* "git stash show 23" used to work, but no more after getting
|
||||
rewritten in C; this regression has been corrected.
|
||||
|
||||
* "git rebase --abort" used to leave refs/rewritten/ when concluding
|
||||
"git rebase -r", which has been corrected.
|
||||
|
||||
* An incorrect list of options was cached after command line
|
||||
completion failed (e.g. trying to complete a command that requires
|
||||
a repository outside one), which has been corrected.
|
||||
|
||||
* The code to parse scaled numbers out of configuration files has
|
||||
been made more robust and also easier to follow.
|
||||
|
||||
* The codepath to compute delta islands used to spew progress output
|
||||
without giving the callers any way to squelch it, which has been
|
||||
fixed.
|
||||
|
||||
* Protocol capabilities that go over wire should never be translated,
|
||||
but it was incorrectly marked for translation, which has been
|
||||
corrected. The output of protocol capabilities for debugging has
|
||||
been tweaked a bit.
|
||||
|
||||
* Use "Erase in Line" CSI sequence that is already used in the editor
|
||||
support to clear cruft in the progress output.
|
||||
|
||||
* "git submodule foreach" did not protect command line options passed
|
||||
to the command to be run in each submodule correctly, when the
|
||||
"--recursive" option was in use.
|
||||
|
||||
* The configuration variable rebase.rescheduleFailedExec should be
|
||||
effective only while running an interactive rebase and should not
|
||||
affect anything when running a non-interactive one, which was not
|
||||
the case. This has been corrected.
|
||||
|
||||
* The "git clone" documentation refers to command line options in its
|
||||
description in the short form; they have been replaced with long
|
||||
forms to make them more recognisable.
|
||||
|
||||
* Generation of pack bitmaps are now disabled when .keep files exist,
|
||||
as these are mutually exclusive features.
|
||||
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
|
||||
|
||||
* "git rm" to resolve a conflicted path leaked an internal message
|
||||
"needs merge" before actually removing the path, which was
|
||||
confusing. This has been corrected.
|
||||
|
||||
* "git stash --keep-index" did not work correctly on paths that have
|
||||
been removed, which has been fixed.
|
||||
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
|
||||
|
||||
* Window 7 update ;-)
|
||||
|
||||
* A codepath that reads from GPG for signed object verification read
|
||||
past the end of allocated buffer, which has been fixed.
|
||||
|
||||
* "git clean" silently skipped a path when it cannot lstat() it; now
|
||||
it gives a warning.
|
||||
|
||||
* "git push --atomic" that goes over the transport-helper (namely,
|
||||
the smart http transport) failed to prevent refs to be pushed when
|
||||
it can locally tell that one of the ref update will fail without
|
||||
having to consult the other end, which has been corrected.
|
||||
|
||||
* The internal diff machinery can be made to read out of bounds while
|
||||
looking for --function-context line in a corner case, which has been
|
||||
corrected.
|
||||
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge fbec05c210 cc/test-oidmap later to maint).
|
||||
(merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
|
||||
(merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
|
||||
(merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
|
@ -1,387 +0,0 @@
|
||||
Git 2.24 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.23
|
||||
-------------------
|
||||
|
||||
Backward compatibility note
|
||||
|
||||
* Although it is not officially deprecated, "filter-branch" is
|
||||
showing its age and alternatives are available. From this release,
|
||||
we started to discourage its uses and hint people about
|
||||
filter-repo.
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* We now have an active interim maintainer for the Git-Gui part of
|
||||
the system. Praise and thank Pratyush Yadav for volunteering.
|
||||
|
||||
* The command line parser learned "--end-of-options" notation; the
|
||||
standard convention for scripters to have hardcoded set of options
|
||||
first on the command line, and force the command to treat end-user
|
||||
input as non-options, has been to use "--" as the delimiter, but
|
||||
that would not work for commands that use "--" as a delimiter
|
||||
between revs and pathspec.
|
||||
|
||||
* A mechanism to affect the default setting for a (related) group of
|
||||
configuration variables is introduced.
|
||||
|
||||
* "git fetch" learned "--set-upstream" option to help those who first
|
||||
clone from their private fork they intend to push to, add the true
|
||||
upstream via "git remote add" and then "git fetch" from it.
|
||||
|
||||
* Device-tree files learned their own userdiff patterns.
|
||||
(merge 3c81760bc6 sb/userdiff-dts later to maint).
|
||||
|
||||
* "git rebase --rebase-merges" learned to drive different merge
|
||||
strategies and pass strategy specific options to them.
|
||||
|
||||
* A new "pre-merge-commit" hook has been introduced.
|
||||
|
||||
* Command line completion updates for "git -c var.name=val" have been
|
||||
added.
|
||||
|
||||
* The lazy clone machinery has been taught that there can be more
|
||||
than one promisor remote and consult them in order when downloading
|
||||
missing objects on demand.
|
||||
|
||||
* The list-objects-filter API (used to create a sparse/lazy clone)
|
||||
learned to take a combined filter specification.
|
||||
|
||||
* The documentation and tests for "git format-patch" have been
|
||||
cleaned up.
|
||||
|
||||
* On Windows, the root level of UNC share is now allowed to be used
|
||||
just like any other directory.
|
||||
|
||||
* The command line completion support (in contrib/) learned about the
|
||||
"--skip" option of "git revert" and "git cherry-pick".
|
||||
|
||||
* "git rebase --keep-base <upstream>" tries to find the original base
|
||||
of the topic being rebased and rebase on top of that same base,
|
||||
which is useful when running the "git rebase -i" (and its limited
|
||||
variant "git rebase -x").
|
||||
|
||||
The command also has learned to fast-forward in more cases where it
|
||||
can instead of replaying to recreate identical commits.
|
||||
|
||||
* A configuration variable tells "git fetch" to write the commit
|
||||
graph after finishing.
|
||||
|
||||
* "git add -i" has been taught to show the total number of hunks and
|
||||
the hunks that has been processed so far when showing prompts.
|
||||
|
||||
* "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
|
||||
submodules, but this did not apply to "git fetch --multiple" that
|
||||
fetches from multiple remote repositories. It now does.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* The code to write commit-graph over given commit object names has
|
||||
been made a bit more robust.
|
||||
|
||||
* The first line of verbose output from each test piece now carries
|
||||
the test name and number to help scanning with eyeballs.
|
||||
|
||||
* Further clean-up of the initialization code.
|
||||
|
||||
* xmalloc() used to have a mechanism to ditch memory and address
|
||||
space resources as the last resort upon seeing an allocation
|
||||
failure from the underlying malloc(), which made the code complex
|
||||
and thread-unsafe with dubious benefit, as major memory resource
|
||||
users already do limit their uses with various other mechanisms.
|
||||
It has been simplified away.
|
||||
|
||||
* Unnecessary full-tree diff in "git log -L" machinery has been
|
||||
optimized away.
|
||||
|
||||
* The http transport lacked some optimization the native transports
|
||||
learned to avoid unnecessary ref advertisement, which has been
|
||||
corrected.
|
||||
|
||||
* Preparation for SHA-256 upgrade continues in the test department.
|
||||
(merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).
|
||||
|
||||
* The memory ownership model of the "git fast-import" got
|
||||
straightened out.
|
||||
|
||||
* Output from trace2 subsystem is formatted more prettily now.
|
||||
|
||||
* The internal code originally invented for ".gitignore" processing
|
||||
got reshuffled and renamed to make it less tied to "excluding" and
|
||||
stress more that it is about "matching", as it has been reused for
|
||||
things like sparse checkout specification that want to check if a
|
||||
path is "included".
|
||||
|
||||
* "git stash" learned to write refreshed index back to disk.
|
||||
|
||||
* Coccinelle checks are done on more source files than before now.
|
||||
|
||||
* The cache-tree code has been taught to be less aggressive in
|
||||
attempting to see if a tree object it computed already exists in
|
||||
the repository.
|
||||
|
||||
* The code to parse and use the commit-graph file has been made more
|
||||
robust against corrupted input.
|
||||
|
||||
* The hg-to-git script (in contrib/) has been updated to work with
|
||||
Python 3.
|
||||
|
||||
* Update the way build artifacts in t/helper/ directory are ignored.
|
||||
|
||||
* Preparation for SHA-256 upgrade continues.
|
||||
|
||||
* "git log --graph" for an octopus merge is sometimes colored
|
||||
incorrectly, which is demonstrated and documented but not yet
|
||||
fixed.
|
||||
|
||||
* The trace2 output, when sending them to files in a designated
|
||||
directory, can populate the directory with too many files; a
|
||||
mechanism is introduced to set the maximum number of files and
|
||||
discard further logs when the maximum is reached.
|
||||
|
||||
* We have adopted a Code-of-conduct document.
|
||||
(merge 3f9ef874a7 jk/coc later to maint).
|
||||
|
||||
|
||||
Fixes since v2.23
|
||||
-----------------
|
||||
|
||||
* "git grep --recurse-submodules" that looks at the working tree
|
||||
files looked at the contents in the index in submodules, instead of
|
||||
files in the working tree.
|
||||
(merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).
|
||||
|
||||
* Codepaths to walk tree objects have been audited for integer
|
||||
overflows and hardened.
|
||||
(merge 5aa02f9868 jk/tree-walk-overflow later to maint).
|
||||
|
||||
* "git pack-refs" can lose refs that are created while running, which
|
||||
is getting corrected.
|
||||
(merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).
|
||||
|
||||
* "git checkout" and "git restore" to re-populate the index from a
|
||||
tree-ish (typically HEAD) did not work correctly for a path that
|
||||
was removed and then added again with the intent-to-add bit, when
|
||||
the corresponding working tree file was empty. This has been
|
||||
corrected.
|
||||
|
||||
* Compilation fix.
|
||||
(merge 70597e8386 rs/nedalloc-fixlets later to maint).
|
||||
|
||||
* "git gui" learned to call the clean-up procedure before exiting.
|
||||
(merge 0d88f3d2c5 py/git-gui-do-quit later to maint).
|
||||
|
||||
* We promoted the "indent heuristics" that decides where to split
|
||||
diff hunks from experimental to the default a few years ago, but
|
||||
some stale documentation still marked it as experimental, which has
|
||||
been corrected.
|
||||
(merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).
|
||||
|
||||
* Fix a mismerge that happened in 2.22 timeframe.
|
||||
(merge acb7da05ac en/checkout-mismerge-fix later to maint).
|
||||
|
||||
* "git archive" recorded incorrect length in extended pax header in
|
||||
some corner cases, which has been corrected.
|
||||
(merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).
|
||||
|
||||
* On-demand object fetching in lazy clone incorrectly tried to fetch
|
||||
commits from submodule projects, while still working in the
|
||||
superproject, which has been corrected.
|
||||
(merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).
|
||||
|
||||
* Prepare get_short_oid() codepath to be thread-safe.
|
||||
(merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).
|
||||
|
||||
* "for-each-ref" and friends that show refs did not protect themselves
|
||||
against ancient tags that did not record tagger names when asked to
|
||||
show "%(taggername)", which have been corrected.
|
||||
(merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).
|
||||
|
||||
* The "git am" based backend of "git rebase" ignored the result of
|
||||
updating ".gitattributes" done in one step when replaying
|
||||
subsequent steps.
|
||||
(merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).
|
||||
|
||||
* Tell cURL library to use the same malloc() implementation, with the
|
||||
xmalloc() wrapper, as the rest of the system, for consistency.
|
||||
(merge 93b980e58f cb/curl-use-xmalloc later to maint).
|
||||
|
||||
* Build fix to adjust .gitignore to unignore a path that we started to track.
|
||||
(merge aac6ff7b5b js/visual-studio later to maint).
|
||||
|
||||
* A few implementation fixes in the notes API.
|
||||
(merge 60fe477a0b mh/notes-duplicate-entries later to maint).
|
||||
|
||||
* Fix an earlier regression to "git push --all" which should have
|
||||
been forbidden when the target remote repository is set to be a
|
||||
mirror.
|
||||
(merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).
|
||||
|
||||
* Fix an earlier regression in the test suite, which mistakenly
|
||||
stopped running HTTPD tests.
|
||||
(merge 3960290675 sg/git-test-boolean later to maint).
|
||||
|
||||
* "git rebase --autostash <upstream> <branch>", when <branch> is
|
||||
different from the current branch, incorrectly moved the tip of the
|
||||
current branch, which has been corrected.
|
||||
(merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).
|
||||
|
||||
* Update support for Asciidoctor documentation toolchain.
|
||||
(merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).
|
||||
|
||||
* Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
|
||||
no longer works with the older one.
|
||||
(merge f6461b82b9 bc/doc-use-docbook-5 later to maint).
|
||||
|
||||
* The markup used in user-manual has been updated to work better with
|
||||
asciidoctor.
|
||||
(merge c4d2f6143a ma/user-manual-markup-update later to maint).
|
||||
|
||||
* Make sure the grep machinery does not abort when seeing a payload
|
||||
that is not UTF-8 even when JIT is not in use with PCRE1.
|
||||
(merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).
|
||||
|
||||
* The name of the blob object that stores the filter specification
|
||||
for sparse cloning/fetching was interpreted in a wrong place in the
|
||||
code, causing Git to abort.
|
||||
|
||||
* "git log --decorate-refs-exclude=<pattern>" was incorrectly
|
||||
overruled when the "--simplify-by-decoration" option is used, which
|
||||
has been corrected.
|
||||
(merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).
|
||||
|
||||
* The "upload-pack" (the counterpart of "git fetch") needs to disable
|
||||
commit-graph when responding to a shallow clone/fetch request, but
|
||||
the way this was done made Git panic, which has been corrected.
|
||||
|
||||
* The object traversal machinery has been optimized not to load tree
|
||||
objects when we are only interested in commit history.
|
||||
(merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).
|
||||
|
||||
* The object name parser for "Nth parent" syntax has been made more
|
||||
robust against integer overflows.
|
||||
(merge 59fa5f5a25 rs/nth-parent-parse later to maint).
|
||||
|
||||
* The code used in following tags in "git fetch" has been optimized.
|
||||
(merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).
|
||||
|
||||
* Regression fix for progress output.
|
||||
(merge 2bb74b53a4 sg/progress-fix later to maint).
|
||||
|
||||
* A bug in merge-recursive code that triggers when a branch with a
|
||||
symbolic link is merged with a branch that replaces it with a
|
||||
directory has been fixed.
|
||||
(merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).
|
||||
|
||||
* The rename detection logic sorts a list of rename source candidates
|
||||
by similarity to pick the best candidate, which means that a tie
|
||||
between sources with the same similarity is broken by the original
|
||||
location in the original candidate list (which is sorted by path).
|
||||
Force the sorting by similarity done with a stable sort, which is
|
||||
not promised by system supplied qsort(3), to ensure consistent
|
||||
results across platforms.
|
||||
(merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).
|
||||
|
||||
* The code to skip "UTF" and "UTF-" prefix, when computing an advice
|
||||
message, did not work correctly when the prefix was "UTF", which
|
||||
has been fixed.
|
||||
(merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).
|
||||
|
||||
* The author names taken from SVN repositories may have extra leading
|
||||
or trailing whitespaces, which are now munged away.
|
||||
(merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).
|
||||
|
||||
* "git rebase -i" showed a wrong HEAD while "reword" open the editor.
|
||||
(merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).
|
||||
|
||||
* A few simplification and bugfixes to PCRE interface.
|
||||
(merge c581e4a749 ab/pcre-jit-fixes later to maint).
|
||||
|
||||
* PCRE fixes.
|
||||
(merge ff61681b46 cb/pcre1-cleanup later to maint).
|
||||
|
||||
* "git range-diff" segfaulted when diff.noprefix configuration was
|
||||
used, as it blindly expected the patch it internally generates to
|
||||
have the standard a/ and b/ prefixes. The command now forces the
|
||||
internal patch to be built without any prefix, not to be affected
|
||||
by any end-user configuration.
|
||||
(merge 937b76ed49 js/range-diff-noprefix later to maint).
|
||||
|
||||
* "git stash apply" in a subdirectory of a secondary worktree failed
|
||||
to access the worktree correctly, which has been corrected.
|
||||
(merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).
|
||||
|
||||
* The merge-recursive machiery is one of the most complex parts of
|
||||
the system that accumulated cruft over time. This large series
|
||||
cleans up the implementation quite a bit.
|
||||
(merge b657047719 en/merge-recursive-cleanup later to maint).
|
||||
|
||||
* Pretty-printed command line formatter (used in e.g. reporting the
|
||||
command being run by the tracing API) had a bug that lost an
|
||||
argument that is an empty string, which has been corrected.
|
||||
(merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).
|
||||
|
||||
* "git range-diff" failed to handle mode-only change, which has been
|
||||
corrected.
|
||||
(merge 2b6a9b13ca tg/range-diff-output-update later to maint).
|
||||
|
||||
* Dev support update.
|
||||
(merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).
|
||||
|
||||
* "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
|
||||
not "mkdir -p <outdir>", which was corrected.
|
||||
|
||||
* "git stash save" lost local changes to submodules, which has been
|
||||
corrected.
|
||||
(merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge d1387d3895 en/fast-import-merge-doc later to maint).
|
||||
(merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
|
||||
(merge 415b770b88 ds/midx-expire-repack later to maint).
|
||||
(merge 19800bdc3f nd/diff-parseopt later to maint).
|
||||
(merge 58166c2e9d tg/t0021-racefix later to maint).
|
||||
(merge 7027f508c7 dl/compat-cleanup later to maint).
|
||||
(merge e770fbfeff jc/test-cleanup later to maint).
|
||||
(merge 1fd881d404 rs/trace2-dst-warning later to maint).
|
||||
(merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
|
||||
(merge 9784f97321 mh/release-commit-memory-fix later to maint).
|
||||
(merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
|
||||
(merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
|
||||
(merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
|
||||
(merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
|
||||
(merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
|
||||
(merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
|
||||
(merge 47b27c96fa ss/get-time-cleanup later to maint).
|
||||
(merge dd2e50a84e jk/commit-graph-cleanup later to maint).
|
||||
(merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
|
||||
(merge 40e747e89d dl/submodule-set-branch later to maint).
|
||||
(merge 689a146c91 rs/commit-graph-use-list-count later to maint).
|
||||
(merge 0eb7c37a8a js/doc-patch-text later to maint).
|
||||
(merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
|
||||
(merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
|
||||
(merge af78249463 cc/svn-fe-py-shebang later to maint).
|
||||
(merge 7bd97d6dff rs/alias-use-copy-array later to maint).
|
||||
(merge c46ebc2496 sg/travis-help-debug later to maint).
|
||||
(merge 24c681794f ps/my-first-contribution-alphasort later to maint).
|
||||
(merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
|
||||
(merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
|
||||
(merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
|
||||
(merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
|
||||
(merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
|
||||
(merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
|
||||
(merge 53d687bf5f ah/cleanups later to maint).
|
||||
(merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
|
||||
(merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
|
||||
(merge d928a8388a am/t0028-utf16-tests later to maint).
|
||||
(merge b05b40930e dl/t0000-skip-test-test later to maint).
|
||||
(merge 03d3b1297c js/xdiffi-comment-updates later to maint).
|
||||
(merge 57d8f4b4c7 js/doc-stash-save later to maint).
|
||||
(merge 8c1cfd58e3 ta/t1308-typofix later to maint).
|
||||
(merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
|
||||
(merge 68b69211b2 bb/compat-util-comment-fix later to maint).
|
||||
(merge 5cc6a4be11 rs/http-push-simplify later to maint).
|
||||
(merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
|
||||
(merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
|
@ -10,7 +10,7 @@ Fixes since v2.7
|
||||
setting GIT_WORK_TREE environment themselves.
|
||||
|
||||
* The "exclude_list" structure has the usual "alloc, nr" pair of
|
||||
fields to be used by ALLOC_GROW(), but clear_pattern_list() forgot
|
||||
fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
|
||||
to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
|
||||
array.
|
||||
|
||||
|
@ -270,7 +270,7 @@ notes for details).
|
||||
setting GIT_WORK_TREE environment themselves.
|
||||
|
||||
* The "exclude_list" structure has the usual "alloc, nr" pair of
|
||||
fields to be used by ALLOC_GROW(), but clear_pattern_list() forgot
|
||||
fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
|
||||
to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
|
||||
array.
|
||||
|
||||
|
@ -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 Pratyush Yadav:
|
||||
- 'git-gui/' comes from git-gui project, maintained by Pat Thoyts:
|
||||
|
||||
https://github.com/prati0100/git-gui.git
|
||||
git://repo.or.cz/git-gui.git
|
||||
|
||||
- `gitk-git/` comes from Paul Mackerras's gitk project:
|
||||
- 'gitk-git/' comes from Paul Mackerras's gitk project:
|
||||
|
||||
git://ozlabs.org/~paulus/gitk
|
||||
|
||||
- `po/` comes from the localization coordinator, Jiang Xin:
|
||||
- 'po/' comes from the localization coordinator, Jiang Xin:
|
||||
|
||||
https://github.com/git-l10n/git-po/
|
||||
|
||||
|
@ -78,9 +78,9 @@ template::[header-declarations]
|
||||
<refmeta>
|
||||
<refentrytitle>{mantitle}</refentrytitle>
|
||||
<manvolnum>{manvolnum}</manvolnum>
|
||||
<refmiscinfo class="source">{mansource}</refmiscinfo>
|
||||
<refmiscinfo class="version">{manversion}</refmiscinfo>
|
||||
<refmiscinfo class="manual">{manmanual}</refmiscinfo>
|
||||
<refmiscinfo class="source">Git</refmiscinfo>
|
||||
<refmiscinfo class="version">{git_version}</refmiscinfo>
|
||||
<refmiscinfo class="manual">Git Manual</refmiscinfo>
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname>{manname}</refname>
|
||||
|
@ -9,40 +9,20 @@ module Git
|
||||
named :chrome
|
||||
|
||||
def process(parent, target, attrs)
|
||||
prefix = parent.document.attr('git-relative-html-prefix')
|
||||
if parent.document.doctype == 'book'
|
||||
"<ulink url=\"#{prefix}#{target}.html\">" \
|
||||
"#{target}(#{attrs[1]})</ulink>"
|
||||
elsif parent.document.basebackend? 'html'
|
||||
%(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>)
|
||||
if parent.document.basebackend? 'html'
|
||||
prefix = parent.document.attr('git-relative-html-prefix')
|
||||
%(<a href="#{prefix}#{target}.html">#{target}(#{attrs[1]})</a>\n)
|
||||
elsif parent.document.basebackend? 'docbook'
|
||||
"<citerefentry>\n" \
|
||||
"<refentrytitle>#{target}</refentrytitle>" \
|
||||
"<manvolnum>#{attrs[1]}</manvolnum>\n" \
|
||||
"</citerefentry>"
|
||||
"</citerefentry>\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class DocumentPostProcessor < Asciidoctor::Extensions::Postprocessor
|
||||
def process document, output
|
||||
if document.basebackend? 'docbook'
|
||||
mansource = document.attributes['mansource']
|
||||
manversion = document.attributes['manversion']
|
||||
manmanual = document.attributes['manmanual']
|
||||
new_tags = "" \
|
||||
"<refmiscinfo class=\"source\">#{mansource}</refmiscinfo>\n" \
|
||||
"<refmiscinfo class=\"version\">#{manversion}</refmiscinfo>\n" \
|
||||
"<refmiscinfo class=\"manual\">#{manmanual}</refmiscinfo>\n"
|
||||
output = output.sub(/<\/refmeta>/, new_tags + "</refmeta>")
|
||||
end
|
||||
output
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Asciidoctor::Extensions.register do
|
||||
inline_macro Git::Documentation::LinkGitProcessor, :linkgit
|
||||
postprocessor Git::Documentation::DocumentPostProcessor
|
||||
end
|
||||
|
@ -110,24 +110,5 @@ commit. And the default value is 40. If there are more than one
|
||||
`-C` options given, the <num> argument of the last `-C` will
|
||||
take effect.
|
||||
|
||||
--ignore-rev <rev>::
|
||||
Ignore changes made by the revision when assigning blame, as if the
|
||||
change never happened. Lines that were changed or added by an ignored
|
||||
commit will be blamed on the previous commit that changed that line or
|
||||
nearby lines. This option may be specified multiple times to ignore
|
||||
more than one revision. If the `blame.markIgnoredLines` config option
|
||||
is set, then lines that were changed by an ignored commit and attributed to
|
||||
another commit will be marked with a `?` in the blame output. If the
|
||||
`blame.markUnblamableLines` config option is set, then those lines touched
|
||||
by an ignored commit that we could not attribute to another revision are
|
||||
marked with a '*'.
|
||||
|
||||
--ignore-revs-file <file>::
|
||||
Ignore revisions listed in `file`, which must be in the same format as an
|
||||
`fsck.skipList`. This option may be repeated, and these files will be
|
||||
processed after any files specified with the `blame.ignoreRevsFile` config
|
||||
option. An empty file name, `""`, will clear the list of revs from
|
||||
previously processed files.
|
||||
|
||||
-h::
|
||||
Show help message.
|
||||
|
@ -144,20 +144,6 @@ refer to linkgit:gitignore[5] for details. For convenience:
|
||||
This is the same as `gitdir` except that matching is done
|
||||
case-insensitively (e.g. on case-insensitive file sytems)
|
||||
|
||||
`onbranch`::
|
||||
The data that follows the keyword `onbranch:` is taken to be a
|
||||
pattern with standard globbing wildcards and two additional
|
||||
ones, `**/` and `/**`, that can match multiple path components.
|
||||
If we are in a worktree where the name of the branch that is
|
||||
currently checked out matches the pattern, the include condition
|
||||
is met.
|
||||
+
|
||||
If the pattern ends with `/`, `**` will be automatically added. For
|
||||
example, the pattern `foo/` becomes `foo/**`. In other words, it matches
|
||||
all branches that begin with `foo/`. This is useful if your branches are
|
||||
organized hierarchically and you would like to apply a configuration to
|
||||
all the branches in that hierarchy.
|
||||
|
||||
A few more notes on matching via `gitdir` and `gitdir/i`:
|
||||
|
||||
* Symlinks in `$GIT_DIR` are not resolved before matching.
|
||||
@ -178,53 +164,46 @@ to either specify only the realpath version, or both versions.
|
||||
Example
|
||||
~~~~~~~
|
||||
|
||||
----
|
||||
# Core variables
|
||||
[core]
|
||||
; Don't trust file modes
|
||||
filemode = false
|
||||
# Core variables
|
||||
[core]
|
||||
; Don't trust file modes
|
||||
filemode = false
|
||||
|
||||
# Our diff algorithm
|
||||
[diff]
|
||||
external = /usr/local/bin/diff-wrapper
|
||||
renames = true
|
||||
# Our diff algorithm
|
||||
[diff]
|
||||
external = /usr/local/bin/diff-wrapper
|
||||
renames = true
|
||||
|
||||
[branch "devel"]
|
||||
remote = origin
|
||||
merge = refs/heads/devel
|
||||
[branch "devel"]
|
||||
remote = origin
|
||||
merge = refs/heads/devel
|
||||
|
||||
# Proxy settings
|
||||
[core]
|
||||
gitProxy="ssh" for "kernel.org"
|
||||
gitProxy=default-proxy ; for the rest
|
||||
# Proxy settings
|
||||
[core]
|
||||
gitProxy="ssh" for "kernel.org"
|
||||
gitProxy=default-proxy ; for the rest
|
||||
|
||||
[include]
|
||||
path = /path/to/foo.inc ; include by absolute path
|
||||
path = foo.inc ; find "foo.inc" relative to the current file
|
||||
path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory
|
||||
[include]
|
||||
path = /path/to/foo.inc ; include by absolute path
|
||||
path = foo.inc ; find "foo.inc" relative to the current file
|
||||
path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory
|
||||
|
||||
; include if $GIT_DIR is /path/to/foo/.git
|
||||
[includeIf "gitdir:/path/to/foo/.git"]
|
||||
path = /path/to/foo.inc
|
||||
; include if $GIT_DIR is /path/to/foo/.git
|
||||
[includeIf "gitdir:/path/to/foo/.git"]
|
||||
path = /path/to/foo.inc
|
||||
|
||||
; include for all repositories inside /path/to/group
|
||||
[includeIf "gitdir:/path/to/group/"]
|
||||
path = /path/to/foo.inc
|
||||
; include for all repositories inside /path/to/group
|
||||
[includeIf "gitdir:/path/to/group/"]
|
||||
path = /path/to/foo.inc
|
||||
|
||||
; include for all repositories inside $HOME/to/group
|
||||
[includeIf "gitdir:~/to/group/"]
|
||||
path = /path/to/foo.inc
|
||||
; include for all repositories inside $HOME/to/group
|
||||
[includeIf "gitdir:~/to/group/"]
|
||||
path = /path/to/foo.inc
|
||||
|
||||
; relative paths are always relative to the including
|
||||
; file (if the condition is true); their location is not
|
||||
; affected by the condition
|
||||
[includeIf "gitdir:/path/to/group/"]
|
||||
path = foo.inc
|
||||
----
|
||||
|
||||
; include only if we are in a worktree where foo-branch is
|
||||
; currently checked out
|
||||
[includeIf "onbranch:foo-branch"]
|
||||
; relative paths are always relative to the including
|
||||
; file (if the condition is true); their location is not
|
||||
; affected by the condition
|
||||
[includeIf "gitdir:/path/to/group/"]
|
||||
path = foo.inc
|
||||
|
||||
Values
|
||||
@ -347,8 +326,6 @@ include::config/difftool.txt[]
|
||||
|
||||
include::config/fastimport.txt[]
|
||||
|
||||
include::config/feature.txt[]
|
||||
|
||||
include::config/fetch.txt[]
|
||||
|
||||
include::config/format.txt[]
|
||||
@ -445,8 +422,6 @@ include::config/submodule.txt[]
|
||||
|
||||
include::config/tag.txt[]
|
||||
|
||||
include::config/trace2.txt[]
|
||||
|
||||
include::config/transfer.txt[]
|
||||
|
||||
include::config/uploadarchive.txt[]
|
||||
|
@ -4,10 +4,6 @@ advice.*::
|
||||
can tell Git that you do not need help by setting these to 'false':
|
||||
+
|
||||
--
|
||||
fetchShowForcedUpdates::
|
||||
Advice shown when linkgit:git-fetch[1] takes a long time
|
||||
to calculate forced updates after ref updates, or to warn
|
||||
that the check is disabled.
|
||||
pushUpdateRejected::
|
||||
Set this variable to 'false' if you want to disable
|
||||
'pushNonFFCurrent',
|
||||
@ -34,26 +30,12 @@ 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.
|
||||
statusAheadBehind::
|
||||
Shown when linkgit:git-status[1] computes the ahead/behind
|
||||
counts for a local ref compared to its remote tracking ref,
|
||||
and that calculation takes longer than expected. Will not
|
||||
appear if `status.aheadBehind` is false or the option
|
||||
`--no-ahead-behind` is given.
|
||||
statusHints::
|
||||
Show directions on how to proceed from the current
|
||||
state in the output of linkgit:git-status[1], in
|
||||
the template shown when writing commit messages in
|
||||
linkgit:git-commit[1], and in the help message shown
|
||||
by linkgit:git-switch[1] or
|
||||
linkgit:git-checkout[1] when switching branch.
|
||||
by linkgit:git-checkout[1] when switching branch.
|
||||
statusUoption::
|
||||
Advise to consider using the `-u` option to linkgit:git-status[1]
|
||||
when the command takes more than 2 seconds to enumerate untracked
|
||||
@ -68,21 +50,17 @@ advice.*::
|
||||
resolveConflict::
|
||||
Advice shown by various commands when conflicts
|
||||
prevent the operation from being performed.
|
||||
sequencerInUse::
|
||||
Advice shown when a sequencer command is already in progress.
|
||||
implicitIdentity::
|
||||
Advice on how to set your identity configuration when
|
||||
your information is guessed from the system username and
|
||||
domain name.
|
||||
detachedHead::
|
||||
Advice shown when you used
|
||||
linkgit:git-switch[1] or linkgit:git-checkout[1]
|
||||
to move to the detach HEAD state, to instruct how to
|
||||
create a local branch after the fact.
|
||||
Advice shown when you used linkgit:git-checkout[1] to
|
||||
move to the detach HEAD state, to instruct how to create
|
||||
a local branch after the fact.
|
||||
checkoutAmbiguousRemoteBranchName::
|
||||
Advice shown when the argument to
|
||||
linkgit:git-checkout[1] and linkgit:git-switch[1]
|
||||
ambiguously resolves to a
|
||||
linkgit:git-checkout[1] ambiguously resolves to a
|
||||
remote tracking branch on more than one remote in
|
||||
situations where an unambiguous argument would have
|
||||
otherwise caused a remote-tracking branch to be
|
||||
@ -105,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.
|
||||
--
|
||||
|
@ -1,28 +1,18 @@
|
||||
alias.*::
|
||||
Command aliases for the linkgit:git[1] command wrapper - e.g.
|
||||
after defining `alias.last = cat-file commit HEAD`, the invocation
|
||||
`git last` is equivalent to `git cat-file commit HEAD`. To avoid
|
||||
after defining "alias.last = cat-file commit HEAD", the invocation
|
||||
"git last" is equivalent to "git cat-file commit HEAD". To avoid
|
||||
confusion and troubles with script usage, aliases that
|
||||
hide existing Git commands are ignored. Arguments are split by
|
||||
spaces, the usual shell quoting and escaping is supported.
|
||||
A quote pair or a backslash can be used to quote them.
|
||||
+
|
||||
Note that the first word of an alias does not necessarily have to be a
|
||||
command. It can be a command-line option that will be passed into the
|
||||
invocation of `git`. In particular, this is useful when used with `-c`
|
||||
to pass in one-time configurations or `-p` to force pagination. For example,
|
||||
`loud-rebase = -c commit.verbose=true rebase` can be defined such that
|
||||
running `git loud-rebase` would be equivalent to
|
||||
`git -c commit.verbose=true rebase`. Also, `ps = -p status` would be a
|
||||
helpful alias since `git ps` would paginate the output of `git status`
|
||||
where the original command does not.
|
||||
+
|
||||
If the alias expansion is prefixed with an exclamation point,
|
||||
it will be treated as a shell command. For example, defining
|
||||
`alias.new = !gitk --all --not ORIG_HEAD`, the invocation
|
||||
`git new` is equivalent to running the shell command
|
||||
`gitk --all --not ORIG_HEAD`. Note that shell commands will be
|
||||
"alias.new = !gitk --all --not ORIG_HEAD", the invocation
|
||||
"git new" is equivalent to running the shell command
|
||||
"gitk --all --not ORIG_HEAD". Note that shell commands will be
|
||||
executed from the top-level directory of a repository, which may
|
||||
not necessarily be the current directory.
|
||||
`GIT_PREFIX` is set as returned by running `git rev-parse --show-prefix`
|
||||
`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix'
|
||||
from the original current directory. See linkgit:git-rev-parse[1].
|
||||
|
@ -19,19 +19,3 @@ blame.showEmail::
|
||||
blame.showRoot::
|
||||
Do not treat root commits as boundaries in linkgit:git-blame[1].
|
||||
This option defaults to false.
|
||||
|
||||
blame.ignoreRevsFile::
|
||||
Ignore revisions listed in the file, one unabbreviated object name per
|
||||
line, in linkgit:git-blame[1]. Whitespace and comments beginning with
|
||||
`#` are ignored. This option may be repeated multiple times. Empty
|
||||
file names will reset the list of ignored revisions. This option will
|
||||
be handled before the command line option `--ignore-revs-file`.
|
||||
|
||||
blame.markUnblamables::
|
||||
Mark lines that were changed by an ignored revision that we could not
|
||||
attribute to another commit with a '*' in the output of
|
||||
linkgit:git-blame[1].
|
||||
|
||||
blame.markIgnoredLines::
|
||||
Mark lines that were changed by an ignored revision that we attributed to
|
||||
another commit with a '?' in the output of linkgit:git-blame[1].
|
||||
|
@ -1,5 +1,5 @@
|
||||
branch.autoSetupMerge::
|
||||
Tells 'git branch', 'git switch' and 'git checkout' to set up new branches
|
||||
Tells 'git branch' and 'git checkout' to set up new branches
|
||||
so that linkgit:git-pull[1] will appropriately merge from the
|
||||
starting point branch. Note that even if this option is not set,
|
||||
this behavior can be chosen per-branch using the `--track`
|
||||
@ -11,7 +11,7 @@ branch.autoSetupMerge::
|
||||
branch. This option defaults to true.
|
||||
|
||||
branch.autoSetupRebase::
|
||||
When a new branch is created with 'git branch', 'git switch' or 'git checkout'
|
||||
When a new branch is created with 'git branch' or 'git checkout'
|
||||
that tracks another branch, this variable tells Git to set
|
||||
up pull to rebase instead of merge (see "branch.<name>.rebase").
|
||||
When `never`, rebase is never automatically set to true.
|
||||
@ -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.
|
||||
+
|
||||
|
@ -1,6 +1,5 @@
|
||||
checkout.defaultRemote::
|
||||
When you run 'git checkout <something>'
|
||||
or 'git switch <something>' and only have one
|
||||
When you run 'git checkout <something>' and only have one
|
||||
remote, it may implicitly fall back on checking out and
|
||||
tracking e.g. 'origin/<something>'. This stops working as soon
|
||||
as you have more than one remote with a '<something>'
|
||||
@ -9,10 +8,16 @@ checkout.defaultRemote::
|
||||
disambiguation. The typical use-case is to set this to
|
||||
`origin`.
|
||||
+
|
||||
Currently this is used by linkgit:git-switch[1] and
|
||||
linkgit:git-checkout[1] when 'git checkout <something>'
|
||||
or 'git switch <something>'
|
||||
will checkout the '<something>' branch on another remote,
|
||||
Currently this is used by linkgit:git-checkout[1] when 'git checkout
|
||||
<something>' will checkout the '<something>' branch on another remote,
|
||||
and by linkgit:git-worktree[1] when 'git worktree add' refers to a
|
||||
remote branch. This setting might be used for other checkout-like
|
||||
commands or functionality in the future.
|
||||
|
||||
checkout.optimizeNewBranch::
|
||||
Optimizes the performance of "git checkout -b <new_branch>" when
|
||||
using sparse-checkout. When set to true, git will not update the
|
||||
repo based on the current sparse-checkout settings. This means it
|
||||
will not update the skip-worktree bit in the index nor add/remove
|
||||
files in the working directory to reflect the current sparse checkout
|
||||
settings nor will it show the local changes.
|
||||
|
@ -14,7 +14,7 @@ color.blame.highlightRecent::
|
||||
+
|
||||
This setting should be set to a comma-separated list of color and date settings,
|
||||
starting and ending with a color, the dates should be set from oldest to newest.
|
||||
The metadata will be colored given the colors if the line was introduced
|
||||
The metadata will be colored given the colors if the the line was introduced
|
||||
before the given timestamp, overwriting older timestamped colors.
|
||||
+
|
||||
Instead of an absolute timestamp relative timestamps work as well, e.g.
|
||||
|
@ -86,9 +86,7 @@ core.untrackedCache::
|
||||
it will automatically be removed, if set to `false`. Before
|
||||
setting it to `true`, you should check that mtime is working
|
||||
properly on your system.
|
||||
See linkgit:git-update-index[1]. `keep` by default, unless
|
||||
`feature.manyFiles` is enabled which sets this setting to
|
||||
`true` by default.
|
||||
See linkgit:git-update-index[1]. `keep` by default.
|
||||
|
||||
core.checkStat::
|
||||
When missing or is set to `default`, many fields in the stat
|
||||
@ -123,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
|
||||
@ -416,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].
|
||||
@ -431,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
|
||||
@ -440,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
|
||||
@ -579,7 +574,7 @@ the `GIT_NOTES_REF` environment variable. See linkgit:git-notes[1].
|
||||
|
||||
core.commitGraph::
|
||||
If true, then git will read the commit-graph file (if it exists)
|
||||
to parse the graph structure of commits. Defaults to true. See
|
||||
to parse the graph structure of commits. Defaults to false. See
|
||||
linkgit:git-commit-graph[1] for more information.
|
||||
|
||||
core.useReplaceRefs::
|
||||
|
@ -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,13 +73,12 @@ 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
|
||||
affects only 'git diff' Porcelain, and not lower level 'diff'
|
||||
commands such as 'git diff-files'. 'git checkout'
|
||||
and 'git switch' also honor
|
||||
commands such as 'git diff-files'. 'git checkout' also honors
|
||||
this setting when reporting uncommitted changes. Setting it to
|
||||
'all' disables the submodule summary normally shown by 'git commit'
|
||||
and 'git status' when `status.submoduleSummary` is set unless it is
|
||||
@ -189,7 +188,7 @@ diff.guitool::
|
||||
include::../mergetools-diff.txt[]
|
||||
|
||||
diff.indentHeuristic::
|
||||
Set this option to `false` to disable the default heuristics
|
||||
Set this option to `true` to enable experimental heuristics
|
||||
that shift diff hunk boundaries to make patches easier to read.
|
||||
|
||||
diff.algorithm::
|
||||
|
@ -1,37 +0,0 @@
|
||||
feature.*::
|
||||
The config settings that start with `feature.` modify the defaults of
|
||||
a group of other config settings. These groups are created by the Git
|
||||
developer community as recommended defaults and are subject to change.
|
||||
In particular, new config options may be added with different defaults.
|
||||
|
||||
feature.experimental::
|
||||
Enable config options that are new to Git, and are being considered for
|
||||
future defaults. Config settings included here may be added or removed
|
||||
with each release, including minor version updates. These settings may
|
||||
have unintended interactions since they are so new. Please enable this
|
||||
setting if you are interested in providing feedback on experimental
|
||||
features. The new default values are:
|
||||
+
|
||||
* `pack.useSparse=true` uses a new algorithm when constructing a pack-file
|
||||
which can improve `git push` performance in repos with many files.
|
||||
+
|
||||
* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
|
||||
skipping more commits at a time, reducing the number of round trips.
|
||||
+
|
||||
* `fetch.writeCommitGraph=true` writes a commit-graph after every `git fetch`
|
||||
command that downloads a pack-file from a remote. Using the `--split` option,
|
||||
most executions will create a very small commit-graph file on top of the
|
||||
existing commit-graph file(s). Occasionally, these files will merge and the
|
||||
write may take longer. Having an updated commit-graph file helps performance
|
||||
of many Git commands, including `git merge-base`, `git push -f`, and
|
||||
`git log --graph`.
|
||||
|
||||
feature.manyFiles::
|
||||
Enable config options that optimize for repos with many files in the
|
||||
working directory. With many files, commands such as `git status` and
|
||||
`git checkout` may be slow and these new defaults improve performance:
|
||||
+
|
||||
* `index.version=4` enables path-prefix compression in the index.
|
||||
+
|
||||
* `core.untrackedCache=true` enables the untracked cache. This setting assumes
|
||||
that mtime is working on your machine.
|
@ -59,33 +59,7 @@ fetch.negotiationAlgorithm::
|
||||
effort to converge faster, but may result in a larger-than-necessary
|
||||
packfile; The default is "default" which instructs Git to use the default algorithm
|
||||
that never skips commits (unless the server has acknowledged it or one
|
||||
of its descendants). If `feature.experimental` is enabled, then this
|
||||
setting defaults to "skipping".
|
||||
of its descendants).
|
||||
Unknown values will cause 'git fetch' to error out.
|
||||
+
|
||||
See also the `--negotiation-tip` option for linkgit:git-fetch[1].
|
||||
|
||||
fetch.showForcedUpdates::
|
||||
Set to false to enable `--no-show-forced-updates` in
|
||||
linkgit:git-fetch[1] and linkgit:git-pull[1] commands.
|
||||
Defaults to true.
|
||||
|
||||
fetch.parallel::
|
||||
Specifies the maximal number of fetch operations to be run in parallel
|
||||
at a time (submodules, or remotes when the `--multiple` option of
|
||||
linkgit:git-fetch[1] is in effect).
|
||||
+
|
||||
A value of 0 will give some reasonable default. If unset, it defaults to 1.
|
||||
+
|
||||
For submodules, this setting can be overridden using the `submodule.fetchJobs`
|
||||
config setting.
|
||||
|
||||
fetch.writeCommitGraph::
|
||||
Set to true to write a commit-graph after every `git fetch` command
|
||||
that downloads a pack-file from a remote. Using the `--split` option,
|
||||
most executions will create a very small commit-graph file on top of
|
||||
the existing commit-graph file(s). Occasionally, these files will
|
||||
merge and the write may take longer. Having an updated commit-graph
|
||||
file helps performance of many Git commands, including `git merge-base`,
|
||||
`git push -f`, and `git log --graph`. Defaults to false, unless
|
||||
`feature.experimental` is true.
|
||||
|
@ -77,27 +77,11 @@ format.coverLetter::
|
||||
A boolean that controls whether to generate a cover-letter when
|
||||
format-patch is invoked, but in addition can be set to "auto", to
|
||||
generate a cover-letter only when there's more than one patch.
|
||||
Default is false.
|
||||
|
||||
format.outputDirectory::
|
||||
Set a custom directory to store the resulting files instead of the
|
||||
current working directory. All directory components will be created.
|
||||
current working directory.
|
||||
|
||||
format.useAutoBase::
|
||||
A boolean value which lets you enable the `--base=auto` option of
|
||||
format-patch by default.
|
||||
|
||||
format.notes::
|
||||
Provides the default value for the `--notes` option to
|
||||
format-patch. Accepts a boolean value, or a ref which specifies
|
||||
where to get notes. If false, format-patch defaults to
|
||||
`--no-notes`. If true, format-patch defaults to `--notes`. If
|
||||
set to a non-boolean value, format-patch defaults to
|
||||
`--notes=<ref>`, where `ref` is the non-boolean value. Defaults
|
||||
to false.
|
||||
+
|
||||
If one wishes to use the ref `ref/notes/true`, please use that literal
|
||||
instead.
|
||||
+
|
||||
This configuration can be specified multiple times in order to allow
|
||||
multiple notes refs to be included.
|
||||
|
@ -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,17 +36,12 @@ 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
|
||||
required. Default is true. See linkgit:git-commit-graph[1]
|
||||
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.
|
||||
|
||||
gc.logExpiry::
|
||||
@ -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
|
||||
|
@ -2,7 +2,7 @@ gpg.program::
|
||||
Use this custom program instead of "`gpg`" found on `$PATH` when
|
||||
making or verifying a PGP signature. The program must support the
|
||||
same command-line interface as GPG, namely, to verify a detached
|
||||
signature, "`gpg --verify $signature - <$file`" is run, and the
|
||||
signature, "`gpg --verify $file - <$signature`" is run, and the
|
||||
program is expected to signal a good signature by exiting with
|
||||
code 0, and to generate an ASCII-armored detached signature, the
|
||||
standard input of "`gpg -bsau $key`" is fed with the contents to be
|
||||
@ -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
|
||||
|
@ -24,4 +24,3 @@ index.threads::
|
||||
index.version::
|
||||
Specify the version with which new index files should be
|
||||
initialized. This does not affect existing repositories.
|
||||
If `feature.manyFiles` is enabled, then the default is 4.
|
||||
|
@ -2,8 +2,7 @@ interactive.singleKey::
|
||||
In interactive commands, allow the user to provide one-letter
|
||||
input with a single key (i.e., without hitting enter).
|
||||
Currently this is used by the `--patch` mode of
|
||||
linkgit:git-add[1], linkgit:git-checkout[1],
|
||||
linkgit:git-restore[1], linkgit:git-commit[1],
|
||||
linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],
|
||||
linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this
|
||||
setting is silently ignored if portable keystroke input
|
||||
is not available; requires the Perl module Term::ReadKey.
|
||||
|
@ -40,5 +40,4 @@ log.showSignature::
|
||||
|
||||
log.mailmap::
|
||||
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
|
||||
linkgit:git-whatchanged[1] assume `--use-mailmap`, otherwise
|
||||
assume `--no-use-mailmap`. True by default.
|
||||
linkgit:git-whatchanged[1] assume `--use-mailmap`.
|
||||
|
@ -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,16 +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. Default is `false`
|
||||
unless `feature.experimental` is enabled.
|
||||
|
||||
pack.writeBitmaps (deprecated)::
|
||||
This is a deprecated synonym for `repack.writeBitmaps`.
|
||||
|
||||
@ -125,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.
|
||||
|
@ -76,11 +76,3 @@ remote.<name>.pruneTags::
|
||||
+
|
||||
See also `remote.<name>.prune` and the PRUNING section of
|
||||
linkgit:git-fetch[1].
|
||||
|
||||
remote.<name>.promisor::
|
||||
When set to true, this remote will be used to fetch promisor
|
||||
objects.
|
||||
|
||||
remote.<name>.partialclonefilter::
|
||||
The filter that will be applied when fetching from this
|
||||
promisor remote.
|
||||
|
@ -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 as 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.
|
||||
|
@ -12,11 +12,6 @@ status.branch::
|
||||
Set to true to enable --branch by default in linkgit:git-status[1].
|
||||
The option --no-branch takes precedence over this variable.
|
||||
|
||||
status.aheadBehind::
|
||||
Set to true to enable `--ahead-behind` and false to enable
|
||||
`--no-ahead-behind` by default in linkgit:git-status[1] for
|
||||
non-porcelain status formats. Defaults to true.
|
||||
|
||||
status.displayCommentPrefix::
|
||||
If set to true, linkgit:git-status[1] will insert a comment
|
||||
prefix before each output line (starting with
|
||||
|
@ -8,14 +8,6 @@ tag.sort::
|
||||
linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the
|
||||
value of this variable will be used as the default.
|
||||
|
||||
tag.gpgSign::
|
||||
A boolean to specify whether all tags should be GPG signed.
|
||||
Use of this option when running in an automated script can
|
||||
result in a large number of tags being signed. It is therefore
|
||||
convenient to use an agent to avoid typing your gpg passphrase
|
||||
several times. Note that this option doesn't affects tag signing
|
||||
behavior enabled by "-u <keyid>" or "--local-user=<keyid>" options.
|
||||
|
||||
tar.umask::
|
||||
This variable can be used to restrict the permission bits of
|
||||
tar archive entries. The default is 0002, which turns off the
|
||||
|
@ -1,62 +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.
|
||||
|
||||
trace2.maxFiles::
|
||||
Integer. When writing trace files to a target directory, do not
|
||||
write additional traces if we would exceed this many files. Instead,
|
||||
write a sentinel file that will block further tracing to this
|
||||
directory. Defaults to 0, which disables this check.
|
@ -17,7 +17,7 @@ linkgit:git-receive-pack[1]. On the fetch side, malformed objects will
|
||||
instead be left unreferenced in the repository.
|
||||
+
|
||||
Due to the non-quarantine nature of the `fetch.fsckObjects`
|
||||
implementation it cannot be relied upon to leave the object store
|
||||
implementation it can not be relied upon to leave the object store
|
||||
clean like `receive.fsckObjects` can.
|
||||
+
|
||||
As objects are unpacked they're written to the object store, so there
|
||||
|
@ -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
|
||||
|
@ -1,15 +1,11 @@
|
||||
Generating patch text with -p
|
||||
-----------------------------
|
||||
Generating patches with -p
|
||||
--------------------------
|
||||
|
||||
Running
|
||||
linkgit:git-diff[1],
|
||||
linkgit:git-log[1],
|
||||
linkgit:git-show[1],
|
||||
linkgit:git-diff-index[1],
|
||||
linkgit:git-diff-tree[1], or
|
||||
linkgit:git-diff-files[1]
|
||||
with the `-p` option produces patch text.
|
||||
You can customize the creation of patch text via the
|
||||
When "git-diff-index", "git-diff-tree", or "git-diff-files" are run
|
||||
with a `-p` option, "git diff" without the `--raw` option, or
|
||||
"git log" with the "-p" option, they
|
||||
do not produce the output described above; instead they produce a
|
||||
patch file. You can customize the creation of such patches via the
|
||||
`GIT_EXTERNAL_DIFF` and the `GIT_DIFF_OPTS` environment variables.
|
||||
|
||||
What the -p option produces is slightly different from the traditional
|
||||
@ -53,7 +49,7 @@ similarity index value of 100% is thus reserved for two equal
|
||||
files, while 100% dissimilarity means that no line from the old
|
||||
file made it into the new one.
|
||||
+
|
||||
The index line includes the blob object names before and after the change.
|
||||
The index line includes the SHA-1 checksum before and after the change.
|
||||
The <mode> is included if the file mode does not change; otherwise,
|
||||
separate lines indicate the old and the new mode.
|
||||
|
||||
@ -74,7 +70,7 @@ separate lines indicate the old and the new mode.
|
||||
rename to a
|
||||
|
||||
|
||||
Combined diff format
|
||||
combined diff format
|
||||
--------------------
|
||||
|
||||
Any diff-generating command can take the `-c` or `--cc` option to
|
||||
@ -84,7 +80,7 @@ linkgit:git-show[1]. Note also that you can give the `-m` option to any
|
||||
of these commands to force generation of diffs with individual parents
|
||||
of a merge.
|
||||
|
||||
A "combined diff" format looks like this:
|
||||
A 'combined diff' format looks like this:
|
||||
|
||||
------------
|
||||
diff --combined describe.c
|
||||
@ -117,11 +113,11 @@ index fabadb8,cc95eb0..4866510
|
||||
------------
|
||||
|
||||
1. It is preceded with a "git diff" header, that looks like
|
||||
this (when the `-c` option is used):
|
||||
this (when `-c` option is used):
|
||||
|
||||
diff --combined file
|
||||
+
|
||||
or like this (when the `--cc` option is used):
|
||||
or like this (when `--cc` option is used):
|
||||
|
||||
diff --cc file
|
||||
|
||||
@ -147,24 +143,11 @@ 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
|
||||
was created for review of merge commit changes, and was not
|
||||
meant to be applied. The change is similar to the change in the
|
||||
meant for apply. The change is similar to the change in the
|
||||
extended 'index' header:
|
||||
|
||||
@@@ <from-file-range> <from-file-range> <to-file-range> @@@
|
||||
|
@ -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-footer cut away 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_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-footer)
|
||||
cut_footer=-cut-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_footer &&
|
||||
to_dir=$to_oid$to_program$cut_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,43 +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_footer" = "-cut-footer"
|
||||
then
|
||||
for f in $(find "$tmp/rendered/$dname" -type f)
|
||||
do
|
||||
head -n -2 "$f" | sed -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
|
||||
|
@ -88,10 +88,6 @@ ifndef::git-pull[]
|
||||
Allow several <repository> and <group> arguments to be
|
||||
specified. No <refspec>s may be specified.
|
||||
|
||||
--[no-]auto-gc::
|
||||
Run `git gc --auto` at the end to perform garbage collection
|
||||
if needed. This is enabled by default.
|
||||
|
||||
-p::
|
||||
--prune::
|
||||
Before fetching, remove any remote-tracking references that no
|
||||
@ -160,27 +156,15 @@ ifndef::git-pull[]
|
||||
|
||||
-j::
|
||||
--jobs=<n>::
|
||||
Number of parallel children to be used for all forms of fetching.
|
||||
+
|
||||
If the `--multiple` option was specified, the different remotes will be fetched
|
||||
in parallel. If multiple submodules are fetched, they will be fetched in
|
||||
parallel. To control them independently, use the config settings
|
||||
`fetch.parallel` and `submodule.fetchJobs` (see linkgit:git-config[1]).
|
||||
+
|
||||
Typically, parallel recursive and multi-remote fetches will be faster. By
|
||||
default fetches are performed sequentially, not in parallel.
|
||||
Number of parallel children to be used for fetching submodules.
|
||||
Each will fetch from different submodules, such that fetching many
|
||||
submodules will be faster. By default submodules will be fetched
|
||||
one at a time.
|
||||
|
||||
--no-recurse-submodules::
|
||||
Disable recursive fetching of submodules (this has the same effect as
|
||||
using the `--recurse-submodules=no` option).
|
||||
|
||||
--set-upstream::
|
||||
If the remote is fetched successfully, pull and add upstream
|
||||
(tracking) reference, used by argument-less
|
||||
linkgit:git-pull[1] and other commands. For more information,
|
||||
see `branch.<name>.merge` and `branch.<name>.remote` in
|
||||
linkgit:git-config[1].
|
||||
|
||||
--submodule-prefix=<path>::
|
||||
Prepend <path> to paths printed in informative messages
|
||||
such as "Fetching submodule foo". This option is used
|
||||
@ -232,24 +216,10 @@ 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.
|
||||
|
||||
--show-forced-updates::
|
||||
By default, git checks if a branch is force-updated during
|
||||
fetch. This can be disabled through fetch.showForcedUpdates, but
|
||||
the --show-forced-updates option guarantees this check occurs.
|
||||
See linkgit:git-config[1].
|
||||
|
||||
--no-show-forced-updates::
|
||||
By default, git checks if a branch is force-updated during
|
||||
fetch. Pass --no-show-forced-updates or set fetch.showForcedUpdates
|
||||
to false to skip this check for performance reasons. If used during
|
||||
'git-pull' the --ff-only option will still check for forced updates
|
||||
before attempting a fast-forward update. See linkgit:git-config[1].
|
||||
|
||||
-4::
|
||||
--ipv4::
|
||||
Use IPv4 addresses only, ignoring IPv6 addresses.
|
||||
|
@ -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>::
|
||||
|
@ -10,7 +10,6 @@ SYNOPSIS
|
||||
[verse]
|
||||
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
|
||||
[-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
|
||||
[--ignore-rev <rev>] [--ignore-revs-file <file>]
|
||||
[--progress] [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>..<rev>]
|
||||
[--] <file>
|
||||
|
||||
|
@ -8,14 +8,12 @@ git-branch - List, create, or delete branches
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git branch' [--color[=<when>] | --no-color] [--show-current]
|
||||
[-v [--abbrev=<length> | --no-abbrev]]
|
||||
'git branch' [--color[=<when>] | --no-color] [-r | -a]
|
||||
[--list] [-v [--abbrev=<length> | --no-abbrev]]
|
||||
[--column[=<options>] | --no-column] [--sort=<key>]
|
||||
[(--merged | --no-merged) [<commit>]]
|
||||
[--contains [<commit]] [--no-contains [<commit>]]
|
||||
[--points-at <object>] [--format=<format>]
|
||||
[(-r | --remotes) | (-a | --all)]
|
||||
[--list] [<pattern>...]
|
||||
[--points-at <object>] [--format=<format>] [<pattern>...]
|
||||
'git branch' [--track | --no-track] [-f] <branchname> [<start-point>]
|
||||
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
||||
'git branch' --unset-upstream [<branchname>]
|
||||
@ -28,19 +26,13 @@ DESCRIPTION
|
||||
-----------
|
||||
|
||||
If `--list` is given, or if there are no non-option arguments, existing
|
||||
branches are listed; the current branch will be highlighted in green and
|
||||
marked with an asterisk. Any branches checked out in linked worktrees will
|
||||
be highlighted in cyan and marked with a plus sign. Option `-r` causes the
|
||||
remote-tracking branches to be listed,
|
||||
and option `-a` shows both local and remote branches.
|
||||
|
||||
If a `<pattern>`
|
||||
branches are listed; the current branch will be highlighted with an
|
||||
asterisk. Option `-r` causes the remote-tracking branches to be listed,
|
||||
and option `-a` shows both local and remote branches. If a `<pattern>`
|
||||
is given, it is used as a shell wildcard to restrict the output to
|
||||
matching branches. If multiple patterns are given, a branch is shown if
|
||||
it matches any of the patterns.
|
||||
|
||||
Note that when providing a
|
||||
`<pattern>`, you must use `--list`; otherwise the command may be interpreted
|
||||
it matches any of the patterns. Note that when providing a
|
||||
`<pattern>`, you must use `--list`; otherwise the command is interpreted
|
||||
as branch creation.
|
||||
|
||||
With `--contains`, shows only the branches that contain the named commit
|
||||
@ -53,14 +45,10 @@ 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 switch <newbranch>" to switch to the
|
||||
working tree to it; use "git checkout <newbranch>" to switch to the
|
||||
new branch.
|
||||
|
||||
When a local branch is started off a remote-tracking branch, Git sets up the
|
||||
@ -161,12 +149,10 @@ This option is only applicable in non-verbose mode.
|
||||
-r::
|
||||
--remotes::
|
||||
List or delete (if used with -d) the remote-tracking branches.
|
||||
Combine with `--list` to match the optional pattern(s).
|
||||
|
||||
-a::
|
||||
--all::
|
||||
List both remote-tracking branches and local branches.
|
||||
Combine with `--list` to match optional pattern(s).
|
||||
|
||||
-l::
|
||||
--list::
|
||||
@ -174,20 +160,14 @@ 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::
|
||||
When in list mode,
|
||||
show sha1 and commit subject line for each head, along with
|
||||
relationship to upstream branch (if any). If given twice, print
|
||||
the path of the linked worktree (if any) and the name of the upstream
|
||||
branch, as well (see also `git remote show <remote>`). Note that the
|
||||
current worktree's HEAD will not have its path printed (it will always
|
||||
be your current directory).
|
||||
the name of the upstream branch, as well (see also `git remote
|
||||
show <remote>`).
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
@ -214,7 +194,7 @@ This option is only applicable in non-verbose mode.
|
||||
+
|
||||
This behavior is the default when the start point is a remote-tracking branch.
|
||||
Set the branch.autoSetupMerge configuration variable to `false` if you
|
||||
want `git switch`, `git checkout` and `git branch` to always behave as if `--no-track`
|
||||
want `git checkout` and `git branch` to always behave as if `--no-track`
|
||||
were given. Set it to `always` if you want this behavior when the
|
||||
start-point is either a local or remote-tracking branch.
|
||||
|
||||
@ -313,11 +293,11 @@ Start development from a known tag::
|
||||
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
|
||||
$ cd my2.6
|
||||
$ git branch my2.6.14 v2.6.14 <1>
|
||||
$ git switch my2.6.14
|
||||
$ 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::
|
||||
+
|
||||
@ -329,30 +309,18 @@ $ 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.
|
||||
|
||||
Listing branches from a specific remote::
|
||||
+
|
||||
------------
|
||||
$ git branch -r -l '<remote>/<pattern>' <1>
|
||||
$ git for-each-ref 'refs/remotes/<remote>/<pattern>' <2>
|
||||
------------
|
||||
+
|
||||
<1> Using `-a` would conflate <remote> with any local branches you happen to
|
||||
have been prefixed with the same <remote> pattern.
|
||||
<2> `for-each-ref` can take a wide range of options. See linkgit:git-for-each-ref[1]
|
||||
|
||||
Patterns will normally need quoting.
|
||||
|
||||
NOTES
|
||||
-----
|
||||
|
||||
If you are creating a branch that you want to switch to immediately,
|
||||
it is easier to use the "git switch" command with its `-c` option to
|
||||
do the same thing with a single command.
|
||||
If you are creating a branch that you want to checkout immediately, it is
|
||||
easier to use the git checkout command with its `-b` option to create
|
||||
a branch and check it out with a single command.
|
||||
|
||||
The options `--contains`, `--no-contains`, `--merged` and `--no-merged`
|
||||
serve four related but different purposes:
|
||||
|
@ -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:
|
||||
|
@ -88,8 +88,7 @@ but it is explicitly forbidden at the beginning of a branch name).
|
||||
When run with `--branch` option in a repository, the input is first
|
||||
expanded for the ``previous checkout syntax''
|
||||
`@{-n}`. For example, `@{-1}` is a way to refer the last thing that
|
||||
was checked out using "git switch" or "git checkout" operation.
|
||||
This option should be
|
||||
was checked out using "git checkout" operation. This option should be
|
||||
used by porcelains to accept this syntax anywhere a branch name is
|
||||
expected, so they can act as if you typed the branch name. As an
|
||||
exception note that, the ``previous checkout operation'' might result
|
||||
|
@ -23,22 +23,31 @@ or the specified tree. If no paths are given, 'git checkout' will
|
||||
also update `HEAD` to set the specified branch as the current
|
||||
branch.
|
||||
|
||||
'git checkout' [<branch>]::
|
||||
To prepare for working on `<branch>`, switch to it by updating
|
||||
'git checkout' <branch>::
|
||||
To prepare for working on <branch>, switch to it by updating
|
||||
the index and the files in the working tree, and by pointing
|
||||
`HEAD` at the branch. Local modifications to the files in the
|
||||
HEAD at the branch. Local modifications to the files in the
|
||||
working tree are kept, so that they can be committed to the
|
||||
`<branch>`.
|
||||
<branch>.
|
||||
+
|
||||
If `<branch>` is not found but there does exist a tracking branch in
|
||||
exactly one remote (call it `<remote>`) with a matching name and
|
||||
`--no-guess` is not specified, treat as equivalent to
|
||||
If <branch> is not found but there does exist a tracking branch in
|
||||
exactly one remote (call it <remote>) with a matching name, treat as
|
||||
equivalent to
|
||||
+
|
||||
------------
|
||||
$ git checkout -b <branch> --track <remote>/<branch>
|
||||
------------
|
||||
+
|
||||
You could omit `<branch>`, in which case the command degenerates to
|
||||
If the branch exists in multiple remotes and one of them is named by
|
||||
the `checkout.defaultRemote` configuration variable, we'll use that
|
||||
one for the purposes of disambiguation, even if the `<branch>` isn't
|
||||
unique across all remotes. Set it to
|
||||
e.g. `checkout.defaultRemote=origin` to always checkout remote
|
||||
branches from there if `<branch>` is ambiguous but exists on the
|
||||
'origin' remote. See also `checkout.defaultRemote` in
|
||||
linkgit:git-config[1].
|
||||
+
|
||||
You could omit <branch>, in which case the command degenerates to
|
||||
"check out the current branch", which is a glorified no-op with
|
||||
rather expensive side-effects to show only the tracking information,
|
||||
if exists, for the current branch.
|
||||
@ -52,7 +61,7 @@ if exists, for the current branch.
|
||||
`--track` without `-b` implies branch creation; see the
|
||||
description of `--track` below.
|
||||
+
|
||||
If `-B` is given, `<new_branch>` is created if it doesn't exist; otherwise, it
|
||||
If `-B` is given, <new_branch> is created if it doesn't exist; otherwise, it
|
||||
is reset. This is the transactional equivalent of
|
||||
+
|
||||
------------
|
||||
@ -66,25 +75,25 @@ successful.
|
||||
'git checkout' --detach [<branch>]::
|
||||
'git checkout' [--detach] <commit>::
|
||||
|
||||
Prepare to work on top of `<commit>`, by detaching `HEAD` at it
|
||||
Prepare to work on top of <commit>, by detaching HEAD at it
|
||||
(see "DETACHED HEAD" section), and updating the index and the
|
||||
files in the working tree. Local modifications to the files
|
||||
in the working tree are kept, so that the resulting working
|
||||
tree will be the state recorded in the commit plus the local
|
||||
modifications.
|
||||
+
|
||||
When the `<commit>` argument is a branch name, the `--detach` option can
|
||||
be used to detach `HEAD` at the tip of the branch (`git checkout
|
||||
<branch>` would check out that branch without detaching `HEAD`).
|
||||
When the <commit> argument is a branch name, the `--detach` option can
|
||||
be used to detach HEAD at the tip of the branch (`git checkout
|
||||
<branch>` would check out that branch without detaching HEAD).
|
||||
+
|
||||
Omitting `<branch>` detaches `HEAD` at the tip of the current branch.
|
||||
Omitting <branch> detaches HEAD at the tip of the current branch.
|
||||
|
||||
'git checkout' [<tree-ish>] [--] <pathspec>...::
|
||||
|
||||
Overwrite paths in the working tree by replacing with the
|
||||
contents in the index or in the `<tree-ish>` (most often a
|
||||
commit). When a `<tree-ish>` is given, the paths that
|
||||
match the `<pathspec>` are updated both in the index and in
|
||||
contents in the index or in the <tree-ish> (most often a
|
||||
commit). When a <tree-ish> is given, the paths that
|
||||
match the <pathspec> are updated both in the index and in
|
||||
the working tree.
|
||||
+
|
||||
The index may contain unmerged entries because of a previous failed merge.
|
||||
@ -109,8 +118,7 @@ OPTIONS
|
||||
--quiet::
|
||||
Quiet, suppress feedback messages.
|
||||
|
||||
--progress::
|
||||
--no-progress::
|
||||
--[no-]progress::
|
||||
Progress status is reported on the standard error stream
|
||||
by default when it is attached to a terminal, unless `--quiet`
|
||||
is specified. This flag enables progress reporting even if not
|
||||
@ -119,7 +127,7 @@ OPTIONS
|
||||
-f::
|
||||
--force::
|
||||
When switching branches, proceed even if the index or the
|
||||
working tree differs from `HEAD`. This is used to throw away
|
||||
working tree differs from HEAD. This is used to throw away
|
||||
local changes.
|
||||
+
|
||||
When checking out paths from the index, do not fail upon unmerged
|
||||
@ -146,12 +154,12 @@ on your side branch as `theirs` (i.e. "one contributor's work on top
|
||||
of it").
|
||||
|
||||
-b <new_branch>::
|
||||
Create a new branch named `<new_branch>` and start it at
|
||||
`<start_point>`; see linkgit:git-branch[1] for details.
|
||||
Create a new branch named <new_branch> and start it at
|
||||
<start_point>; see linkgit:git-branch[1] for details.
|
||||
|
||||
-B <new_branch>::
|
||||
Creates the branch `<new_branch>` and start it at `<start_point>`;
|
||||
if it already exists, then reset it to `<start_point>`. This is
|
||||
Creates the branch <new_branch> and start it at <start_point>;
|
||||
if it already exists, then reset it to <start_point>. This is
|
||||
equivalent to running "git branch" with "-f"; see
|
||||
linkgit:git-branch[1] for details.
|
||||
|
||||
@ -164,36 +172,15 @@ If no `-b` option is given, the name of the new branch will be
|
||||
derived from the remote-tracking branch, by looking at the local part of
|
||||
the refspec configured for the corresponding remote, and then stripping
|
||||
the initial part up to the "*".
|
||||
This would tell us to use `hack` as the local branch when branching
|
||||
off of `origin/hack` (or `remotes/origin/hack`, or even
|
||||
`refs/remotes/origin/hack`). If the given name has no slash, or the above
|
||||
This would tell us to use "hack" as the local branch when branching
|
||||
off of "origin/hack" (or "remotes/origin/hack", or even
|
||||
"refs/remotes/origin/hack"). If the given name has no slash, or the above
|
||||
guessing results in an empty name, the guessing is aborted. You can
|
||||
explicitly give a name with `-b` in such a case.
|
||||
|
||||
--no-track::
|
||||
Do not set up "upstream" configuration, even if the
|
||||
`branch.autoSetupMerge` configuration variable is true.
|
||||
|
||||
--guess::
|
||||
--no-guess::
|
||||
If `<branch>` is not found but there does exist a tracking
|
||||
branch in exactly one remote (call it `<remote>`) with a
|
||||
matching name, treat as equivalent to
|
||||
+
|
||||
------------
|
||||
$ git checkout -b <branch> --track <remote>/<branch>
|
||||
------------
|
||||
+
|
||||
If the branch exists in multiple remotes and one of them is named by
|
||||
the `checkout.defaultRemote` configuration variable, we'll use that
|
||||
one for the purposes of disambiguation, even if the `<branch>` isn't
|
||||
unique across all remotes. Set it to
|
||||
e.g. `checkout.defaultRemote=origin` to always checkout remote
|
||||
branches from there if `<branch>` is ambiguous but exists on the
|
||||
'origin' remote. See also `checkout.defaultRemote` in
|
||||
linkgit:git-config[1].
|
||||
+
|
||||
Use `--no-guess` to disable this.
|
||||
branch.autoSetupMerge configuration variable is true.
|
||||
|
||||
-l::
|
||||
Create the new branch's reflog; see linkgit:git-branch[1] for
|
||||
@ -202,21 +189,21 @@ Use `--no-guess` to disable this.
|
||||
--detach::
|
||||
Rather than checking out a branch to work on it, check out a
|
||||
commit for inspection and discardable experiments.
|
||||
This is the default behavior of `git checkout <commit>` when
|
||||
`<commit>` is not a branch name. See the "DETACHED HEAD" section
|
||||
This is the default behavior of "git checkout <commit>" when
|
||||
<commit> is not a branch name. See the "DETACHED HEAD" section
|
||||
below for details.
|
||||
|
||||
--orphan <new_branch>::
|
||||
Create a new 'orphan' branch, named `<new_branch>`, started from
|
||||
`<start_point>` and switch to it. The first commit made on this
|
||||
Create a new 'orphan' branch, named <new_branch>, started from
|
||||
<start_point> and switch to it. The first commit made on this
|
||||
new branch will have no parents and it will be the root of a new
|
||||
history totally disconnected from all the other branches and
|
||||
commits.
|
||||
+
|
||||
The index and the working tree are adjusted as if you had previously run
|
||||
`git checkout <start_point>`. This allows you to start a new history
|
||||
that records a set of paths similar to `<start_point>` by easily running
|
||||
`git commit -a` to make the root commit.
|
||||
"git checkout <start_point>". This allows you to start a new history
|
||||
that records a set of paths similar to <start_point> by easily running
|
||||
"git commit -a" to make the root commit.
|
||||
+
|
||||
This can be useful when you want to publish the tree from a commit
|
||||
without exposing its full history. You might want to do this to publish
|
||||
@ -225,17 +212,17 @@ whose full history contains proprietary or otherwise encumbered bits of
|
||||
code.
|
||||
+
|
||||
If you want to start a disconnected history that records a set of paths
|
||||
that is totally different from the one of `<start_point>`, then you should
|
||||
that is totally different from the one of <start_point>, then you should
|
||||
clear the index and the working tree right after creating the orphan
|
||||
branch by running `git rm -rf .` from the top level of the working tree.
|
||||
branch by running "git rm -rf ." from the top level of the working tree.
|
||||
Afterwards you will be ready to prepare your new files, repopulating the
|
||||
working tree, by copying them from elsewhere, extracting a tarball, etc.
|
||||
|
||||
--ignore-skip-worktree-bits::
|
||||
In sparse checkout mode, `git checkout -- <paths>` would
|
||||
update only entries matched by `<paths>` and sparse patterns
|
||||
in `$GIT_DIR/info/sparse-checkout`. This option ignores
|
||||
the sparse patterns and adds back any files in `<paths>`.
|
||||
update only entries matched by <paths> and sparse patterns
|
||||
in $GIT_DIR/info/sparse-checkout. This option ignores
|
||||
the sparse patterns and adds back any files in <paths>.
|
||||
|
||||
-m::
|
||||
--merge::
|
||||
@ -255,29 +242,24 @@ 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
|
||||
The same as --merge option above, but changes the way the
|
||||
conflicting hunks are presented, overriding the
|
||||
`merge.conflictStyle` configuration variable. Possible values are
|
||||
merge.conflictStyle configuration variable. Possible values are
|
||||
"merge" (default) and "diff3" (in addition to what is shown by
|
||||
"merge" style, shows the original contents).
|
||||
|
||||
-p::
|
||||
--patch::
|
||||
Interactively select hunks in the difference between the
|
||||
`<tree-ish>` (or the index, if unspecified) and the working
|
||||
<tree-ish> (or the index, if unspecified) and the working
|
||||
tree. The chosen hunks are then applied in reverse to the
|
||||
working tree (and if a `<tree-ish>` was specified, the index).
|
||||
working tree (and if a <tree-ish> was specified, the index).
|
||||
+
|
||||
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
|
||||
`--overlay`), and currently doesn't support overlay mode.
|
||||
|
||||
--ignore-other-worktrees::
|
||||
`git checkout` refuses when the wanted ref is already checked
|
||||
@ -285,42 +267,27 @@ Note that this option uses the no overlay mode by default (see also
|
||||
out anyway. In other words, the ref can be held by more than one
|
||||
worktree.
|
||||
|
||||
--overwrite-ignore::
|
||||
--no-overwrite-ignore::
|
||||
Silently overwrite ignored files when switching branches. This
|
||||
is the default behavior. Use `--no-overwrite-ignore` to abort
|
||||
the operation when the new branch contains ignored files.
|
||||
|
||||
--recurse-submodules::
|
||||
--no-recurse-submodules::
|
||||
Using `--recurse-submodules` will update the content of all initialized
|
||||
--[no-]recurse-submodules::
|
||||
Using --recurse-submodules will update the content of all initialized
|
||||
submodules according to the commit recorded in the superproject. If
|
||||
local modifications in a submodule would be overwritten the checkout
|
||||
will fail unless `-f` is used. If nothing (or `--no-recurse-submodules`)
|
||||
will fail unless `-f` is used. If nothing (or --no-recurse-submodules)
|
||||
is used, the work trees of submodules will not be updated.
|
||||
Just like linkgit:git-submodule[1], this will detach `HEAD` of the
|
||||
submodule.
|
||||
|
||||
--overlay::
|
||||
--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.
|
||||
Just like linkgit:git-submodule[1], this will detach the
|
||||
submodules HEAD.
|
||||
|
||||
<branch>::
|
||||
Branch to checkout; if it refers to a branch (i.e., a name that,
|
||||
when prepended with "refs/heads/", is a valid ref), then that
|
||||
branch is checked out. Otherwise, if it refers to a valid
|
||||
commit, your `HEAD` becomes "detached" and you are no longer on
|
||||
commit, your HEAD becomes "detached" and you are no longer on
|
||||
any branch (see below for details).
|
||||
+
|
||||
You can use the `@{-N}` syntax to refer to the N-th last
|
||||
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
|
||||
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`.
|
||||
|
||||
@ -329,11 +296,7 @@ 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`.
|
||||
linkgit:git-branch[1] for details. Defaults to HEAD.
|
||||
|
||||
<tree-ish>::
|
||||
Tree to checkout from (when paths are given). If not specified,
|
||||
@ -343,9 +306,9 @@ leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
|
||||
DETACHED HEAD
|
||||
-------------
|
||||
`HEAD` normally refers to a named branch (e.g. `master`). Meanwhile, each
|
||||
HEAD normally refers to a named branch (e.g. 'master'). Meanwhile, each
|
||||
branch refers to a specific commit. Let's look at a repo with three
|
||||
commits, one of them tagged, and with branch `master` checked out:
|
||||
commits, one of them tagged, and with branch 'master' checked out:
|
||||
|
||||
------------
|
||||
HEAD (refers to branch 'master')
|
||||
@ -358,10 +321,10 @@ a---b---c branch 'master' (refers to commit 'c')
|
||||
------------
|
||||
|
||||
When a commit is created in this state, the branch is updated to refer to
|
||||
the new commit. Specifically, 'git commit' creates a new commit `d`, whose
|
||||
parent is commit `c`, and then updates branch `master` to refer to new
|
||||
commit `d`. `HEAD` still refers to branch `master` and so indirectly now refers
|
||||
to commit `d`:
|
||||
the new commit. Specifically, 'git commit' creates a new commit 'd', whose
|
||||
parent is commit 'c', and then updates branch 'master' to refer to new
|
||||
commit 'd'. HEAD still refers to branch 'master' and so indirectly now refers
|
||||
to commit 'd':
|
||||
|
||||
------------
|
||||
$ edit; git add; git commit
|
||||
@ -378,7 +341,7 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
It is sometimes useful to be able to checkout a commit that is not at
|
||||
the tip of any named branch, or even to create a new commit that is not
|
||||
referenced by a named branch. Let's look at what happens when we
|
||||
checkout commit `b` (here we show two ways this may be done):
|
||||
checkout commit 'b' (here we show two ways this may be done):
|
||||
|
||||
------------
|
||||
$ git checkout v2.0 # or
|
||||
@ -393,9 +356,9 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
tag 'v2.0' (refers to commit 'b')
|
||||
------------
|
||||
|
||||
Notice that regardless of which checkout command we use, `HEAD` now refers
|
||||
directly to commit `b`. This is known as being in detached `HEAD` state.
|
||||
It means simply that `HEAD` refers to a specific commit, as opposed to
|
||||
Notice that regardless of which checkout command we use, HEAD now refers
|
||||
directly to commit 'b'. This is known as being in detached HEAD state.
|
||||
It means simply that HEAD refers to a specific commit, as opposed to
|
||||
referring to a named branch. Let's see what happens when we create a commit:
|
||||
|
||||
------------
|
||||
@ -412,7 +375,7 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
tag 'v2.0' (refers to commit 'b')
|
||||
------------
|
||||
|
||||
There is now a new commit `e`, but it is referenced only by `HEAD`. We can
|
||||
There is now a new commit 'e', but it is referenced only by HEAD. We can
|
||||
of course add yet another commit in this state:
|
||||
|
||||
------------
|
||||
@ -430,7 +393,7 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
------------
|
||||
|
||||
In fact, we can perform all the normal Git operations. But, let's look
|
||||
at what happens when we then checkout `master`:
|
||||
at what happens when we then checkout master:
|
||||
|
||||
------------
|
||||
$ git checkout master
|
||||
@ -445,9 +408,9 @@ a---b---c---d branch 'master' (refers to commit 'd')
|
||||
------------
|
||||
|
||||
It is important to realize that at this point nothing refers to commit
|
||||
`f`. Eventually commit `f` (and by extension commit `e`) will be deleted
|
||||
'f'. Eventually commit 'f' (and by extension commit 'e') will be deleted
|
||||
by the routine Git garbage collection process, unless we create a reference
|
||||
before that happens. If we have not yet moved away from commit `f`,
|
||||
before that happens. If we have not yet moved away from commit 'f',
|
||||
any of these will create a reference to it:
|
||||
|
||||
------------
|
||||
@ -456,19 +419,19 @@ $ git branch foo <2>
|
||||
$ 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.
|
||||
<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.
|
||||
|
||||
<2> similarly creates a new branch `foo`, which refers to commit `f`,
|
||||
but leaves `HEAD` detached.
|
||||
<2> similarly creates a new branch 'foo', which refers to commit 'f',
|
||||
but leaves HEAD detached.
|
||||
|
||||
<3> creates a new tag `foo`, which refers to commit `f`,
|
||||
leaving `HEAD` detached.
|
||||
<3> creates a new tag 'foo', which refers to commit 'f',
|
||||
leaving HEAD detached.
|
||||
|
||||
If we have moved away from commit `f`, then we must first recover its object
|
||||
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
|
||||
it. For example, to see the last two commits to which `HEAD` referred, we
|
||||
it. For example, to see the last two commits to which HEAD referred, we
|
||||
can use either of these commands:
|
||||
|
||||
------------
|
||||
@ -479,12 +442,12 @@ $ git log -g -2 HEAD
|
||||
ARGUMENT DISAMBIGUATION
|
||||
-----------------------
|
||||
|
||||
When there is only one argument given and it is not `--` (e.g. `git
|
||||
checkout abc`), and when the argument is both a valid `<tree-ish>`
|
||||
(e.g. a branch `abc` exists) and a valid `<pathspec>` (e.g. a file
|
||||
When there is only one argument given and it is not `--` (e.g. "git
|
||||
checkout abc"), and when the argument is both a valid `<tree-ish>`
|
||||
(e.g. a branch "abc" exists) and a valid `<pathspec>` (e.g. a file
|
||||
or a directory whose name is "abc" exists), Git would usually ask
|
||||
you to disambiguate. Because checking out a branch is so common an
|
||||
operation, however, `git checkout abc` takes "abc" as a `<tree-ish>`
|
||||
operation, however, "git checkout abc" takes "abc" as a `<tree-ish>`
|
||||
in such a situation. Use `git checkout -- <pathspec>` if you want
|
||||
to checkout these paths out of the index.
|
||||
|
||||
@ -492,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>
|
||||
@ -504,7 +467,7 @@ $ git checkout hello.c <3>
|
||||
+
|
||||
<1> switch branch
|
||||
<2> take a file out of another commit
|
||||
<3> restore `hello.c` from the index
|
||||
<3> restore hello.c from the index
|
||||
+
|
||||
If you want to check out _all_ C source files out of the index,
|
||||
you can say
|
||||
@ -527,13 +490,13 @@ $ 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
|
||||
------------
|
||||
+
|
||||
However, your "wrong" branch and correct `mytopic` branch may
|
||||
However, your "wrong" branch and correct "mytopic" branch may
|
||||
differ in files that you have modified locally, in which case
|
||||
the above checkout would fail like this:
|
||||
+
|
||||
@ -555,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
|
||||
@ -574,11 +537,6 @@ $ edit frotz
|
||||
$ git add frotz
|
||||
------------
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-switch[1],
|
||||
linkgit:git-restore[1]
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -10,7 +10,9 @@ SYNOPSIS
|
||||
[verse]
|
||||
'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--ff]
|
||||
[-S[<keyid>]] <commit>...
|
||||
'git cherry-pick' (--continue | --skip | --abort | --quit)
|
||||
'git cherry-pick' --continue
|
||||
'git cherry-pick' --quit
|
||||
'git cherry-pick' --abort
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -55,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
|
||||
@ -153,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[]
|
||||
@ -223,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
|
||||
--------
|
||||
|
@ -26,20 +26,18 @@ are affected.
|
||||
OPTIONS
|
||||
-------
|
||||
-d::
|
||||
Normally, when no <path> is specified, git clean will not
|
||||
recurse into untracked directories to avoid removing too much.
|
||||
Specify -d to have it recurse into such directories as well.
|
||||
If any paths are specified, -d is irrelevant; all untracked
|
||||
files matching the specified paths (with exceptions for nested
|
||||
git directories mentioned under `--force`) will be removed.
|
||||
Remove untracked directories in addition to untracked files.
|
||||
If an untracked directory is managed by a different Git
|
||||
repository, it is not removed by default. Use -f option twice
|
||||
if you really want to remove such a directory.
|
||||
|
||||
-f::
|
||||
--force::
|
||||
If the Git configuration variable clean.requireForce is not set
|
||||
to false, 'git clean' will refuse to delete files or directories
|
||||
unless given -f or -i. Git will refuse to modify untracked
|
||||
nested git repositories (directories with a .git subdirectory)
|
||||
unless a second -f is given.
|
||||
unless given -f, -n or -i. Git will refuse to delete directories
|
||||
with .git sub directory or file unless a second -f
|
||||
is given.
|
||||
|
||||
-i::
|
||||
--interactive::
|
||||
@ -57,15 +55,16 @@ 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 restore' or 'git reset') to create a pristine
|
||||
conjunction with 'git reset') to create a pristine
|
||||
working directory to test a clean build.
|
||||
|
||||
-X::
|
||||
|
@ -15,15 +15,14 @@ SYNOPSIS
|
||||
[--dissociate] [--separate-git-dir <git dir>]
|
||||
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
||||
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
||||
[--[no-]remote-submodules] [--jobs <n>] [--] <repository>
|
||||
[<directory>]
|
||||
[--jobs <n>] [--] <repository> [<directory>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
Clones a repository into a newly created directory, creates
|
||||
remote-tracking branches for each branch in the cloned repository
|
||||
(visible using `git branch --remotes`), and creates and checks out an
|
||||
(visible using `git branch -r`), and creates and checks out an
|
||||
initial branch that is forked from the cloned repository's
|
||||
currently active branch.
|
||||
|
||||
@ -41,8 +40,8 @@ configuration variables.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-l::
|
||||
--local::
|
||||
-l::
|
||||
When the repository to clone from is on a local machine,
|
||||
this flag bypasses the normal "Git aware" transport
|
||||
mechanism and clones the repository by making a copy of
|
||||
@ -63,8 +62,8 @@ Git transport instead.
|
||||
directory instead of using hardlinks. This may be desirable
|
||||
if you are trying to make a back-up of your repository.
|
||||
|
||||
-s::
|
||||
--shared::
|
||||
-s::
|
||||
When the repository to clone is on the local machine,
|
||||
instead of using hard links, automatically setup
|
||||
`.git/objects/info/alternates` to share the objects
|
||||
@ -81,13 +80,13 @@ which automatically call `git gc --auto`. (See linkgit:git-gc[1].)
|
||||
If these objects are removed and were referenced by the cloned repository,
|
||||
then the cloned repository will become corrupt.
|
||||
+
|
||||
Note that running `git repack` without the `--local` option in a repository
|
||||
cloned with `--shared` will copy objects from the source repository into a pack
|
||||
in the cloned repository, removing the disk space savings of `clone --shared`.
|
||||
It is safe, however, to run `git gc`, which uses the `--local` option by
|
||||
Note that running `git repack` without the `-l` option in a repository
|
||||
cloned with `-s` will copy objects from the source repository into a pack
|
||||
in the cloned repository, removing the disk space savings of `clone -s`.
|
||||
It is safe, however, to run `git gc`, which uses the `-l` option by
|
||||
default.
|
||||
+
|
||||
If you want to break the dependency of a repository cloned with `--shared` on
|
||||
If you want to break the dependency of a repository cloned with `-s` on
|
||||
its source repository, you can simply run `git repack -a` to copy all
|
||||
objects from the source repository into a pack in the cloned repository.
|
||||
|
||||
@ -116,39 +115,31 @@ objects from the source repository into a pack in the cloned repository.
|
||||
same repository, and this option can be used to stop the
|
||||
borrowing.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
-q::
|
||||
Operate quietly. Progress is not reported to the standard
|
||||
error stream.
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
-v::
|
||||
Run verbosely. Does not affect the reporting of progress status
|
||||
to the standard error stream.
|
||||
|
||||
--progress::
|
||||
Progress status is reported on the standard error stream
|
||||
by default when it is attached to a terminal, unless `--quiet`
|
||||
by default when it is attached to a terminal, unless -q
|
||||
is specified. This flag forces progress status even if the
|
||||
standard error stream is not directed to a terminal.
|
||||
|
||||
--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.
|
||||
|
||||
-n::
|
||||
--no-checkout::
|
||||
-n::
|
||||
No checkout of HEAD is performed after the clone is complete.
|
||||
|
||||
--bare::
|
||||
Make a 'bare' Git repository. That is, instead of
|
||||
creating `<directory>` and placing the administrative
|
||||
files in `<directory>/.git`, make the `<directory>`
|
||||
itself the `$GIT_DIR`. This obviously implies the `--no-checkout`
|
||||
itself the `$GIT_DIR`. This obviously implies the `-n`
|
||||
because there is nowhere to check out the working tree.
|
||||
Also the branch heads at the remote are copied directly
|
||||
to corresponding local branch heads, without mapping
|
||||
@ -164,13 +155,13 @@ objects from the source repository into a pack in the cloned repository.
|
||||
that all these refs are overwritten by a `git remote update` in the
|
||||
target repository.
|
||||
|
||||
-o <name>::
|
||||
--origin <name>::
|
||||
-o <name>::
|
||||
Instead of using the remote name `origin` to keep track
|
||||
of the upstream repository, use `<name>`.
|
||||
|
||||
-b <name>::
|
||||
--branch <name>::
|
||||
-b <name>::
|
||||
Instead of pointing the newly created HEAD to the branch pointed
|
||||
to by the cloned repository's HEAD, point to `<name>` branch
|
||||
instead. In a non-bare repository, this is the branch that will
|
||||
@ -178,8 +169,8 @@ objects from the source repository into a pack in the cloned repository.
|
||||
`--branch` can also take tags and detaches the HEAD at that commit
|
||||
in the resulting repository.
|
||||
|
||||
-u <upload-pack>::
|
||||
--upload-pack <upload-pack>::
|
||||
-u <upload-pack>::
|
||||
When given, and the repository to clone from is accessed
|
||||
via ssh, this specifies a non-default path for the command
|
||||
run on the other end.
|
||||
@ -188,8 +179,8 @@ objects from the source repository into a pack in the cloned repository.
|
||||
Specify the directory from which templates will be used;
|
||||
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
|
||||
|
||||
-c <key>=<value>::
|
||||
--config <key>=<value>::
|
||||
-c <key>=<value>::
|
||||
Set a configuration variable in the newly-created repository;
|
||||
this takes effect immediately after the repository is
|
||||
initialized, but before the remote history is fetched or any
|
||||
@ -198,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
|
||||
@ -261,12 +246,6 @@ or `--mirror` is given)
|
||||
--[no-]shallow-submodules::
|
||||
All submodules which are cloned will be shallow with a depth of 1.
|
||||
|
||||
--[no-]remote-submodules::
|
||||
All submodules which are cloned will use the status of the submodule’s
|
||||
remote-tracking branch to update the submodule, rather than the
|
||||
superproject’s recorded SHA-1. Equivalent to passing `--remote` to
|
||||
`git submodule update`.
|
||||
|
||||
--separate-git-dir=<git dir>::
|
||||
Instead of placing the cloned repository where it is supposed
|
||||
to be, place the cloned repository at the specified directory,
|
||||
|
@ -47,7 +47,7 @@ OPTIONS
|
||||
The number of spaces between columns. One space by default.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
------
|
||||
|
||||
Format data by columns:
|
||||
------------
|
||||
|
@ -10,8 +10,8 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git commit-graph read' [--object-dir <dir>]
|
||||
'git commit-graph verify' [--object-dir <dir>] [--shallow] [--[no-]progress]
|
||||
'git commit-graph write' <options> [--object-dir <dir>] [--[no-]progress]
|
||||
'git commit-graph verify' [--object-dir <dir>]
|
||||
'git commit-graph write' <options> [--object-dir <dir>]
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
@ -26,12 +26,9 @@ OPTIONS
|
||||
Use given directory for the location of packfiles and commit-graph
|
||||
file. This parameter exists to specify the location of an alternate
|
||||
that only has the objects directory, not a full `.git` directory. The
|
||||
commit-graph file is expected to be in the `<dir>/info` directory and
|
||||
commit-graph file is expected to be at `<dir>/info/commit-graph` and
|
||||
the packfiles are expected to be in `<dir>/pack`.
|
||||
|
||||
--[no-]progress::
|
||||
Turn progress on/off explicitly. If neither is specified, progress is
|
||||
shown if standard error is connected to a terminal.
|
||||
|
||||
COMMANDS
|
||||
--------
|
||||
@ -54,25 +51,6 @@ or `--stdin-packs`.)
|
||||
+
|
||||
With the `--append` option, include all commits that are present in the
|
||||
existing commit-graph file.
|
||||
+
|
||||
With the `--split` option, write the commit-graph as a chain of multiple
|
||||
commit-graph files stored in `<dir>/info/commit-graphs`. The new commits
|
||||
not already in the commit-graph are added in a new "tip" file. This file
|
||||
is merged with the existing file if the following merge conditions are
|
||||
met:
|
||||
+
|
||||
* If `--size-multiple=<X>` is not specified, let `X` equal 2. If the new
|
||||
tip file would have `N` commits and the previous tip has `M` commits and
|
||||
`X` times `N` is greater than `M`, instead merge the two files into a
|
||||
single file.
|
||||
+
|
||||
* If `--max-commits=<M>` is specified with `M` a positive integer, and the
|
||||
new tip file would have more than `M` commits, then instead merge the new
|
||||
tip with the previous tip.
|
||||
+
|
||||
Finally, if `--expire-time=<datetime>` is not specified, let `datetime`
|
||||
be the current time. After writing the split commit-graph, delete all
|
||||
unused commit-graph whose modified times are older than `datetime`.
|
||||
|
||||
'read'::
|
||||
|
||||
@ -83,9 +61,6 @@ Used for debugging purposes.
|
||||
|
||||
Read the commit-graph file and verify its contents against the object
|
||||
database. Used to check for corrupted data.
|
||||
+
|
||||
With the `--shallow` option, only check the tip commit-graph file in
|
||||
a chain of split commit-graphs.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
|
@ -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
|
||||
@ -282,20 +278,18 @@ FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].)
|
||||
--untracked-files[=<mode>]::
|
||||
Show untracked files.
|
||||
+
|
||||
--
|
||||
The mode parameter is optional (defaults to 'all'), and is used to
|
||||
specify the handling of untracked files; when -u is not used, the
|
||||
default is 'normal', i.e. show untracked files and directories.
|
||||
|
||||
+
|
||||
The possible options are:
|
||||
|
||||
+
|
||||
- 'no' - Show no untracked files
|
||||
- 'normal' - Shows untracked files and directories
|
||||
- 'all' - Also shows individual files in untracked directories.
|
||||
|
||||
+
|
||||
The default can be changed using the status.showUntrackedFiles
|
||||
configuration variable documented in linkgit:git-config[1].
|
||||
--
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
@ -361,7 +355,7 @@ When recording your own work, the contents of modified files in
|
||||
your working tree are temporarily stored to a staging area
|
||||
called the "index" with 'git add'. A file can be
|
||||
reverted back, only in the index but not in the working tree,
|
||||
to that of the last commit with `git restore --staged <file>`,
|
||||
to that of the last commit with `git reset HEAD -- <file>`,
|
||||
which effectively reverts 'git add' and prevents the changes to
|
||||
this file from participating in the next commit. After building
|
||||
the state to be committed incrementally with these commands,
|
||||
|
@ -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::
|
||||
@ -339,35 +337,33 @@ EXAMPLES
|
||||
|
||||
Given a .git/config like this:
|
||||
|
||||
------------
|
||||
#
|
||||
# This is the config file, and
|
||||
# a '#' or ';' character indicates
|
||||
# a comment
|
||||
#
|
||||
#
|
||||
# This is the config file, and
|
||||
# a '#' or ';' character indicates
|
||||
# a comment
|
||||
#
|
||||
|
||||
; core variables
|
||||
[core]
|
||||
; Don't trust file modes
|
||||
filemode = false
|
||||
; core variables
|
||||
[core]
|
||||
; Don't trust file modes
|
||||
filemode = false
|
||||
|
||||
; Our diff algorithm
|
||||
[diff]
|
||||
external = /usr/local/bin/diff-wrapper
|
||||
renames = true
|
||||
; Our diff algorithm
|
||||
[diff]
|
||||
external = /usr/local/bin/diff-wrapper
|
||||
renames = true
|
||||
|
||||
; Proxy settings
|
||||
[core]
|
||||
gitproxy=proxy-command for kernel.org
|
||||
gitproxy=default-proxy ; for all the rest
|
||||
; Proxy settings
|
||||
[core]
|
||||
gitproxy=proxy-command for kernel.org
|
||||
gitproxy=default-proxy ; for all the rest
|
||||
|
||||
; HTTP
|
||||
[http]
|
||||
sslVerify
|
||||
[http "https://weak.example.com"]
|
||||
sslVerify = false
|
||||
cookieFile = /tmp/cookie.txt
|
||||
------------
|
||||
; HTTP
|
||||
[http]
|
||||
sslVerify
|
||||
[http "https://weak.example.com"]
|
||||
sslVerify = false
|
||||
cookieFile = /tmp/cookie.txt
|
||||
|
||||
you can set the filemode to true with
|
||||
|
||||
|
@ -232,7 +232,7 @@ write so it might not be enough to grant the users using
|
||||
'git-cvsserver' write access to the database file without granting
|
||||
them write access to the directory, too.
|
||||
|
||||
The database cannot be reliably regenerated in a
|
||||
The database can not be reliably regenerated in a
|
||||
consistent form after the branch it is tracking has changed.
|
||||
Example: For merged branches, 'git-cvsserver' only tracks
|
||||
one branch of development, and after a 'git merge' an
|
||||
|
@ -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.
|
||||
|
@ -17,9 +17,9 @@ This program dumps the given revisions in a form suitable to be piped
|
||||
into 'git fast-import'.
|
||||
|
||||
You can use it as a human-readable bundle replacement (see
|
||||
linkgit:git-bundle[1]), or as a format that can be edited before being
|
||||
fed to 'git fast-import' in order to do history rewrites (an ability
|
||||
relied on by tools like 'git filter-repo').
|
||||
linkgit:git-bundle[1]), or as a kind of an interactive
|
||||
'git filter-branch'.
|
||||
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -75,20 +75,11 @@ produced incorrect results if you gave these options.
|
||||
Before processing any input, load the marks specified in
|
||||
<file>. The input file must exist, must be readable, and
|
||||
must use the same format as produced by --export-marks.
|
||||
|
||||
--mark-tags::
|
||||
In addition to labelling blobs and commits with mark ids, also
|
||||
label tags. This is useful in conjunction with
|
||||
`--export-marks` and `--import-marks`, and is also useful (and
|
||||
necessary) for exporting of nested tags. It does not hurt
|
||||
other cases and would be the default, but many fast-import
|
||||
frontends are not prepared to accept tags with mark
|
||||
identifiers.
|
||||
+
|
||||
Any commits (or tags) that have already been marked will not be
|
||||
exported again. If the backend uses a similar --import-marks file,
|
||||
this allows for incremental bidirectional exporting of the repository
|
||||
by keeping the marks the same across runs.
|
||||
Any commits that have already been marked will not be exported again.
|
||||
If the backend uses a similar --import-marks file, this allows for
|
||||
incremental bidirectional exporting of the repository by keeping the
|
||||
marks the same across runs.
|
||||
|
||||
--fake-missing-tagger::
|
||||
Some old repositories have tags without a tagger. The
|
||||
@ -119,32 +110,6 @@ by keeping the 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 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).
|
||||
|
||||
--reencode=(yes|no|abort)::
|
||||
Specify how to handle `encoding` header in commit objects. When
|
||||
asking to 'abort' (which is the default), this program will die
|
||||
when encountering such a commit object. With 'yes', the commit
|
||||
message will be reencoded into UTF-8. With 'no', the original
|
||||
encoding will be preserved.
|
||||
|
||||
--refspec::
|
||||
Apply the specified refspec to each ref exported. Multiple of them can
|
||||
be specified.
|
||||
@ -154,9 +119,7 @@ by keeping the 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
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -337,13 +351,6 @@ and control the current import process. More detailed discussion
|
||||
`commit` command. This command is optional and is not
|
||||
needed to perform an import.
|
||||
|
||||
`alias`::
|
||||
Record that a mark refers to a given object without first
|
||||
creating any new object. Using --import-marks and referring
|
||||
to missing marks will cause fast-import to fail, so aliases
|
||||
can provide a way to set otherwise pruned commits to a valid
|
||||
value (e.g. the nearest non-pruned ancestor).
|
||||
|
||||
`checkpoint`::
|
||||
Forces fast-import to close the current packfile, generate its
|
||||
unique SHA-1 checksum and index, and start a new packfile.
|
||||
@ -392,13 +399,11 @@ 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
|
||||
('encoding' SP <encoding>)?
|
||||
data
|
||||
('from' SP <commit-ish> LF)?
|
||||
('merge' SP <commit-ish> LF)*
|
||||
('merge' SP <commit-ish> LF)?
|
||||
(filemodify | filedelete | filecopy | filerename | filedeleteall | notemodify)*
|
||||
LF?
|
||||
....
|
||||
@ -430,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 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`
|
||||
^^^^^^^^
|
||||
@ -463,12 +463,6 @@ that was selected by the --date-format=<fmt> command-line option.
|
||||
See ``Date Formats'' above for the set of supported formats, and
|
||||
their syntax.
|
||||
|
||||
`encoding`
|
||||
^^^^^^^^^^
|
||||
The optional `encoding` command indicates the encoding of the commit
|
||||
message. Most commits are UTF-8 and the encoding is omitted, but this
|
||||
allows importing commit messages into git without first reencoding them.
|
||||
|
||||
`from`
|
||||
^^^^^^
|
||||
The `from` command is used to specify the commit to initialize
|
||||
@ -761,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
|
||||
@ -781,9 +762,7 @@ lightweight (non-annotated) tags see the `reset` command below.
|
||||
|
||||
....
|
||||
'tag' SP <name> LF
|
||||
mark?
|
||||
'from' SP <commit-ish> LF
|
||||
original-oid?
|
||||
'tagger' (SP <name>)? SP LT <email> GT SP <when> LF
|
||||
data
|
||||
....
|
||||
@ -858,7 +837,6 @@ assigned mark.
|
||||
....
|
||||
'blob' LF
|
||||
mark?
|
||||
original-oid?
|
||||
data
|
||||
....
|
||||
|
||||
@ -921,21 +899,6 @@ a data chunk which does not have an LF as its last byte.
|
||||
+
|
||||
The `LF` after `<delim> LF` is optional (it used to be required).
|
||||
|
||||
`alias`
|
||||
~~~~~~~
|
||||
Record that a mark refers to a given object without first creating any
|
||||
new object.
|
||||
|
||||
....
|
||||
'alias' LF
|
||||
mark
|
||||
'to' SP <commit-ish> LF
|
||||
LF?
|
||||
....
|
||||
|
||||
For a detailed description of `<commit-ish>` see above under `from`.
|
||||
|
||||
|
||||
`checkpoint`
|
||||
~~~~~~~~~~~~
|
||||
Forces fast-import to close the current packfile, start a new one, and to
|
||||
@ -1001,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.
|
||||
|
||||
@ -1027,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.
|
||||
@ -1043,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`.
|
||||
@ -1428,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
|
||||
------------------
|
||||
|
@ -262,11 +262,11 @@ This updates (or creates, as necessary) branches `pu` and `tmp` in
|
||||
the local repository by fetching from the branches (respectively)
|
||||
`pu` and `maint` from the remote repository.
|
||||
+
|
||||
The `pu` branch will be updated even if it does not fast-forward,
|
||||
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
|
||||
@ -285,7 +285,7 @@ BUGS
|
||||
----
|
||||
Using --recurse-submodules can only fetch new commits in already checked
|
||||
out submodules right now. When e.g. upstream added a new submodule in the
|
||||
just fetched commits of the superproject the submodule itself cannot be
|
||||
just fetched commits of the superproject the submodule itself can not be
|
||||
fetched, making it impossible to check out that submodule later without
|
||||
having to do a fetch again. This is expected to be fixed in a future Git
|
||||
version.
|
||||
|
@ -16,19 +16,6 @@ SYNOPSIS
|
||||
[--original <namespace>] [-d <directory>] [-f | --force]
|
||||
[--state-branch <branch>] [--] [<rev-list options>...]
|
||||
|
||||
WARNING
|
||||
-------
|
||||
'git filter-branch' has a plethora of pitfalls that can produce non-obvious
|
||||
manglings of the intended history rewrite (and can leave you with little
|
||||
time to investigate such problems since it has such abysmal performance).
|
||||
These safety and performance issues cannot be backward compatibly fixed and
|
||||
as such, its use is not recommended. Please use an alternative history
|
||||
filtering tool such as https://github.com/newren/git-filter-repo/[git
|
||||
filter-repo]. If you still need to use 'git filter-branch', please
|
||||
carefully read <<SAFETY>> (and <<PERFORMANCE>>) to learn about the land
|
||||
mines of filter-branch, and then vigilantly avoid as many of the hazards
|
||||
listed there as reasonably possible.
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Lets you rewrite Git revision history by rewriting the branches mentioned
|
||||
@ -202,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::
|
||||
@ -458,236 +445,36 @@ warned.
|
||||
(or if your git-gc is not new enough to support arguments to
|
||||
`--prune`, use `git repack -ad; git prune` instead).
|
||||
|
||||
[[PERFORMANCE]]
|
||||
PERFORMANCE
|
||||
-----------
|
||||
NOTES
|
||||
-----
|
||||
|
||||
The performance of git-filter-branch is glacially slow; its design makes it
|
||||
impossible for a backward-compatible implementation to ever be fast:
|
||||
git-filter-branch allows you to make complex shell-scripted rewrites
|
||||
of your Git history, but you probably don't need this flexibility if
|
||||
you're simply _removing unwanted data_ like large files or passwords.
|
||||
For those operations you may want to consider
|
||||
http://rtyley.github.io/bfg-repo-cleaner/[The BFG Repo-Cleaner],
|
||||
a JVM-based alternative to git-filter-branch, typically at least
|
||||
10-50x faster for those use-cases, and with quite different
|
||||
characteristics:
|
||||
|
||||
* In editing files, git-filter-branch by design checks out each and
|
||||
every commit as it existed in the original repo. If your repo has 10\^5
|
||||
files and 10\^5 commits, but each commit only modifies 5 files, then
|
||||
git-filter-branch will make you do 10\^10 modifications, despite only
|
||||
having (at most) 5*10^5 unique blobs.
|
||||
* Any particular version of a file is cleaned exactly _once_. The BFG,
|
||||
unlike git-filter-branch, does not give you the opportunity to
|
||||
handle a file differently based on where or when it was committed
|
||||
within your history. This constraint gives the core performance
|
||||
benefit of The BFG, and is well-suited to the task of cleansing bad
|
||||
data - you don't care _where_ the bad data is, you just want it
|
||||
_gone_.
|
||||
|
||||
* If you try and cheat and try to make git-filter-branch only work on
|
||||
files modified in a commit, then two things happen
|
||||
* By default The BFG takes full advantage of multi-core machines,
|
||||
cleansing commit file-trees in parallel. git-filter-branch cleans
|
||||
commits sequentially (i.e. in a single-threaded manner), though it
|
||||
_is_ possible to write filters that include their own parallelism,
|
||||
in the scripts executed against each commit.
|
||||
|
||||
** you run into problems with deletions whenever the user is simply
|
||||
trying to rename files (because attempting to delete files that
|
||||
don't exist looks like a no-op; it takes some chicanery to remap
|
||||
deletes across file renames when the renames happen via arbitrary
|
||||
user-provided shell)
|
||||
|
||||
** even if you succeed at the map-deletes-for-renames chicanery, you
|
||||
still technically violate backward compatibility because users are
|
||||
allowed to filter files in ways that depend upon topology of
|
||||
commits instead of filtering solely based on file contents or names
|
||||
(though this has not been observed in the wild).
|
||||
|
||||
* Even if you don't need to edit files but only want to e.g. rename or
|
||||
remove some and thus can avoid checking out each file (i.e. you can use
|
||||
--index-filter), you still are passing shell snippets for your filters.
|
||||
This means that for every commit, you have to have a prepared git repo
|
||||
where those filters can be run. That's a significant setup.
|
||||
|
||||
* Further, several additional files are created or updated per commit by
|
||||
git-filter-branch. Some of these are for supporting the convenience
|
||||
functions provided by git-filter-branch (such as map()), while others
|
||||
are for keeping track of internal state (but could have also been
|
||||
accessed by user filters; one of git-filter-branch's regression tests
|
||||
does so). This essentially amounts to using the filesystem as an IPC
|
||||
mechanism between git-filter-branch and the user-provided filters.
|
||||
Disks tend to be a slow IPC mechanism, and writing these files also
|
||||
effectively represents a forced synchronization point between separate
|
||||
processes that we hit with every commit.
|
||||
|
||||
* The user-provided shell commands will likely involve a pipeline of
|
||||
commands, resulting in the creation of many processes per commit.
|
||||
Creating and running another process takes a widely varying amount of
|
||||
time between operating systems, but on any platform it is very slow
|
||||
relative to invoking a function.
|
||||
|
||||
* git-filter-branch itself is written in shell, which is kind of slow.
|
||||
This is the one performance issue that could be backward-compatibly
|
||||
fixed, but compared to the above problems that are intrinsic to the
|
||||
design of git-filter-branch, the language of the tool itself is a
|
||||
relatively minor issue.
|
||||
|
||||
** Side note: Unfortunately, people tend to fixate on the
|
||||
written-in-shell aspect and periodically ask if git-filter-branch
|
||||
could be rewritten in another language to fix the performance
|
||||
issues. Not only does that ignore the bigger intrinsic problems
|
||||
with the design, it'd help less than you'd expect: if
|
||||
git-filter-branch itself were not shell, then the convenience
|
||||
functions (map(), skip_commit(), etc) and the `--setup` argument
|
||||
could no longer be executed once at the beginning of the program
|
||||
but would instead need to be prepended to every user filter (and
|
||||
thus re-executed with every commit).
|
||||
|
||||
The https://github.com/newren/git-filter-repo/[git filter-repo] tool is
|
||||
an alternative to git-filter-branch which does not suffer from these
|
||||
performance problems or the safety problems (mentioned below). For those
|
||||
with existing tooling which relies upon git-filter-branch, 'git
|
||||
repo-filter' also provides
|
||||
https://github.com/newren/git-filter-repo/blob/master/contrib/filter-repo-demos/filter-lamely[filter-lamely],
|
||||
a drop-in git-filter-branch replacement (with a few caveats). While
|
||||
filter-lamely suffers from all the same safety issues as
|
||||
git-filter-branch, it at least ameloriates the performance issues a
|
||||
little.
|
||||
|
||||
[[SAFETY]]
|
||||
SAFETY
|
||||
------
|
||||
|
||||
git-filter-branch is riddled with gotchas resulting in various ways to
|
||||
easily corrupt repos or end up with a mess worse than what you started
|
||||
with:
|
||||
|
||||
* Someone can have a set of "working and tested filters" which they
|
||||
document or provide to a coworker, who then runs them on a different OS
|
||||
where the same commands are not working/tested (some examples in the
|
||||
git-filter-branch manpage are also affected by this). BSD vs. GNU
|
||||
userland differences can really bite. If lucky, error messages are
|
||||
spewed. But just as likely, the commands either don't do the filtering
|
||||
requested, or silently corrupt by making some unwanted change. The
|
||||
unwanted change may only affect a few commits, so it's not necessarily
|
||||
obvious either. (The fact that problems won't necessarily be obvious
|
||||
means they are likely to go unnoticed until the rewritten history is in
|
||||
use for quite a while, at which point it's really hard to justify
|
||||
another flag-day for another rewrite.)
|
||||
|
||||
* Filenames with spaces are often mishandled by shell snippets since
|
||||
they cause problems for shell pipelines. Not everyone is familiar with
|
||||
find -print0, xargs -0, git-ls-files -z, etc. Even people who are
|
||||
familiar with these may assume such flags are not relevant because
|
||||
someone else renamed any such files in their repo back before the person
|
||||
doing the filtering joined the project. And often, even those familiar
|
||||
with handling arguments with spaces may not do so just because they
|
||||
aren't in the mindset of thinking about everything that could possibly
|
||||
go wrong.
|
||||
|
||||
* Non-ascii filenames can be silently removed despite being in a desired
|
||||
directory. Keeping only wanted paths is often done using pipelines like
|
||||
`git ls-files | grep -v ^WANTED_DIR/ | xargs git rm`. ls-files will
|
||||
only quote filenames if needed, so folks may not notice that one of the
|
||||
files didn't match the regex (at least not until it's much too late).
|
||||
Yes, someone who knows about core.quotePath can avoid this (unless they
|
||||
have other special characters like \t, \n, or "), and people who use
|
||||
ls-files -z with something other than grep can avoid this, but that
|
||||
doesn't mean they will.
|
||||
|
||||
* Similarly, when moving files around, one can find that filenames with
|
||||
non-ascii or special characters end up in a different directory, one
|
||||
that includes a double quote character. (This is technically the same
|
||||
issue as above with quoting, but perhaps an interesting different way
|
||||
that it can and has manifested as a problem.)
|
||||
|
||||
* It's far too easy to accidentally mix up old and new history. It's
|
||||
still possible with any tool, but git-filter-branch almost invites it.
|
||||
If lucky, the only downside is users getting frustrated that they don't
|
||||
know how to shrink their repo and remove the old stuff. If unlucky,
|
||||
they merge old and new history and end up with multiple "copies" of each
|
||||
commit, some of which have unwanted or sensitive files and others which
|
||||
don't. This comes about in multiple different ways:
|
||||
|
||||
** the default to only doing a partial history rewrite ('--all' is not
|
||||
the default and few examples show it)
|
||||
|
||||
** the fact that there's no automatic post-run cleanup
|
||||
|
||||
** the fact that --tag-name-filter (when used to rename tags) doesn't
|
||||
remove the old tags but just adds new ones with the new name
|
||||
|
||||
** the fact that little educational information is provided to inform
|
||||
users of the ramifications of a rewrite and how to avoid mixing old
|
||||
and new history. For example, this man page discusses how users
|
||||
need to understand that they need to rebase their changes for all
|
||||
their branches on top of new history (or delete and reclone), but
|
||||
that's only one of multiple concerns to consider. See the
|
||||
"DISCUSSION" section of the git filter-repo manual page for more
|
||||
details.
|
||||
|
||||
* Annotated tags can be accidentally converted to lightweight tags, due
|
||||
to either of two issues:
|
||||
|
||||
** Someone can do a history rewrite, realize they messed up, restore
|
||||
from the backups in refs/original/, and then redo their
|
||||
git-filter-branch command. (The backup in refs/original/ is not a
|
||||
real backup; it dereferences tags first.)
|
||||
|
||||
** Running git-filter-branch with either --tags or --all in your
|
||||
<rev-list options>. In order to retain annotated tags as
|
||||
annotated, you must use --tag-name-filter (and must not have
|
||||
restored from refs/original/ in a previously botched rewrite).
|
||||
|
||||
* Any commit messages that specify an encoding will become corrupted
|
||||
by the rewrite; git-filter-branch ignores the encoding, takes the original
|
||||
bytes, and feeds it to commit-tree without telling it the proper
|
||||
encoding. (This happens whether or not --msg-filter is used.)
|
||||
|
||||
* Commit messages (even if they are all UTF-8) by default become
|
||||
corrupted due to not being updated -- any references to other commit
|
||||
hashes in commit messages will now refer to no-longer-extant commits.
|
||||
|
||||
* There are no facilities for helping users find what unwanted crud they
|
||||
should delete, which means they are much more likely to have incomplete
|
||||
or partial cleanups that sometimes result in confusion and people
|
||||
wasting time trying to understand. (For example, folks tend to just
|
||||
look for big files to delete instead of big directories or extensions,
|
||||
and once they do so, then sometime later folks using the new repository
|
||||
who are going through history will notice a build artifact directory
|
||||
that has some files but not others, or a cache of dependencies
|
||||
(node_modules or similar) which couldn't have ever been functional since
|
||||
it's missing some files.)
|
||||
|
||||
* If --prune-empty isn't specified, then the filtering process can
|
||||
create hoards of confusing empty commits
|
||||
|
||||
* If --prune-empty is specified, then intentionally placed empty
|
||||
commits from before the filtering operation are also pruned instead of
|
||||
just pruning commits that became empty due to filtering rules.
|
||||
|
||||
* If --prune empty is specified, sometimes empty commits are missed
|
||||
and left around anyway (a somewhat rare bug, but it happens...)
|
||||
|
||||
* A minor issue, but users who have a goal to update all names and
|
||||
emails in a repository may be led to --env-filter which will only update
|
||||
authors and committers, missing taggers.
|
||||
|
||||
* If the user provides a --tag-name-filter that maps multiple tags to
|
||||
the same name, no warning or error is provided; git-filter-branch simply
|
||||
overwrites each tag in some undocumented pre-defined order resulting in
|
||||
only one tag at the end. (A git-filter-branch regression test requires
|
||||
this surprising behavior.)
|
||||
|
||||
Also, the poor performance of git-filter-branch often leads to safety
|
||||
issues:
|
||||
|
||||
* Coming up with the correct shell snippet to do the filtering you want
|
||||
is sometimes difficult unless you're just doing a trivial modification
|
||||
such as deleting a couple files. Unfortunately, people often learn if
|
||||
the snippet is right or wrong by trying it out, but the rightness or
|
||||
wrongness can vary depending on special circumstances (spaces in
|
||||
filenames, non-ascii filenames, funny author names or emails, invalid
|
||||
timezones, presence of grafts or replace objects, etc.), meaning they
|
||||
may have to wait a long time, hit an error, then restart. The
|
||||
performance of git-filter-branch is so bad that this cycle is painful,
|
||||
reducing the time available to carefully re-check (to say nothing about
|
||||
what it does to the patience of the person doing the rewrite even if
|
||||
they do technically have more time available). This problem is extra
|
||||
compounded because errors from broken filters may not be shown for a
|
||||
long time and/or get lost in a sea of output. Even worse, broken
|
||||
filters often just result in silent incorrect rewrites.
|
||||
|
||||
* To top it all off, even when users finally find working commands, they
|
||||
naturally want to share them. But they may be unaware that their repo
|
||||
didn't have some special cases that someone else's does. So, when
|
||||
someone else with a different repository runs the same commands, they
|
||||
get hit by the problems above. Or, the user just runs commands that
|
||||
really were vetted for special cases, but they run it on a different OS
|
||||
where it doesn't work, as noted above.
|
||||
* The http://rtyley.github.io/bfg-repo-cleaner/#examples[command options]
|
||||
are much more restrictive than git-filter branch, and dedicated just
|
||||
to the tasks of removing unwanted data- e.g:
|
||||
`--strip-blobs-bigger-than 1M`.
|
||||
|
||||
GIT
|
||||
---
|
||||
|
@ -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''
|
||||
@ -214,11 +209,6 @@ symref::
|
||||
`:lstrip` and `:rstrip` options in the same way as `refname`
|
||||
above.
|
||||
|
||||
worktreepath::
|
||||
The absolute path to the worktree in which the ref is checked
|
||||
out, if it is checked out in any linked worktree. Empty string
|
||||
otherwise.
|
||||
|
||||
In addition to the above, for commit and tag objects, the header
|
||||
field names (`tree`, `parent`, `object`, `type`, and `tag`) can
|
||||
be used to specify the value in the header field.
|
||||
@ -371,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]
|
||||
|
@ -17,13 +17,12 @@ SYNOPSIS
|
||||
[--signature-file=<file>]
|
||||
[-n | --numbered | -N | --no-numbered]
|
||||
[--start-number <n>] [--numbered-files]
|
||||
[--in-reply-to=<message id>] [--suffix=.<sfx>]
|
||||
[--in-reply-to=Message-Id] [--suffix=.<sfx>]
|
||||
[--ignore-if-in-upstream]
|
||||
[--rfc] [--subject-prefix=<subject prefix>]
|
||||
[--rfc] [--subject-prefix=Subject-Prefix]
|
||||
[(--reroll-count|-v) <n>]
|
||||
[--to=<email>] [--cc=<email>]
|
||||
[--[no-]cover-letter] [--quiet]
|
||||
[--no-notes | --notes[=<ref>]]
|
||||
[--[no-]cover-letter] [--quiet] [--notes[=<ref>]]
|
||||
[--interdiff=<previous>]
|
||||
[--range-diff=<previous> [--creation-factor=<percent>]]
|
||||
[--progress]
|
||||
@ -66,8 +65,7 @@ they are created in the current working directory. The default path
|
||||
can be set with the `format.outputDirectory` configuration option.
|
||||
The `-o` option takes precedence over `format.outputDirectory`.
|
||||
To store patches in the current working directory even when
|
||||
`format.outputDirectory` points elsewhere, use `-o .`. All directory
|
||||
components will be created.
|
||||
`format.outputDirectory` points elsewhere, use `-o .`.
|
||||
|
||||
By default, the subject of a single patch is "[PATCH] " followed by
|
||||
the concatenation of lines from the commit message up to the first blank
|
||||
@ -160,9 +158,9 @@ Beware that the default for 'git send-email' is to thread emails
|
||||
itself. If you want `git format-patch` to take care of threading, you
|
||||
will want to ensure that threading is disabled for `git send-email`.
|
||||
|
||||
--in-reply-to=<message id>::
|
||||
--in-reply-to=Message-Id::
|
||||
Make the first mail (or all the mails with `--no-thread`) appear as a
|
||||
reply to the given <message id>, which avoids breaking threads to
|
||||
reply to the given Message-Id, which avoids breaking threads to
|
||||
provide a new patch series.
|
||||
|
||||
--ignore-if-in-upstream::
|
||||
@ -172,9 +170,9 @@ will want to ensure that threading is disabled for `git send-email`.
|
||||
patches being generated, and any patch that matches is
|
||||
ignored.
|
||||
|
||||
--subject-prefix=<subject prefix>::
|
||||
--subject-prefix=<Subject-Prefix>::
|
||||
Instead of the standard '[PATCH]' prefix in the subject
|
||||
line, instead use '[<subject prefix>]'. This
|
||||
line, instead use '[<Subject-Prefix>]'. This
|
||||
allows for useful naming of a patch series, and can be
|
||||
combined with the `--numbered` option.
|
||||
|
||||
@ -265,7 +263,6 @@ material (this may change in the future).
|
||||
for details.
|
||||
|
||||
--notes[=<ref>]::
|
||||
--no-notes::
|
||||
Append the notes (see linkgit:git-notes[1]) for the commit
|
||||
after the three-dash line.
|
||||
+
|
||||
@ -276,9 +273,6 @@ these explanations after `format-patch` has run but before sending,
|
||||
keeping them as Git notes allows them to be maintained between versions
|
||||
of the patch series (but see the discussion of the `notes.rewrite`
|
||||
configuration options in linkgit:git-notes[1] to use this workflow).
|
||||
+
|
||||
The default is `--no-notes`, unless the `format.notes` configuration is
|
||||
set.
|
||||
|
||||
--[no-]signature=<signature>::
|
||||
Add a signature to each message produced. Per RFC 3676 the signature
|
||||
@ -315,8 +309,7 @@ you can use `--suffix=-patch` to get `0001-description-of-my-change-patch`.
|
||||
--base=<commit>::
|
||||
Record the base tree information to identify the state the
|
||||
patch series applies to. See the BASE TREE INFORMATION section
|
||||
below for details. If <commit> is "auto", a base commit is
|
||||
automatically chosen.
|
||||
below for details.
|
||||
|
||||
--root::
|
||||
Treat the revision argument as a <revision range>, even if it
|
||||
@ -332,9 +325,8 @@ CONFIGURATION
|
||||
-------------
|
||||
You can specify extra mail header lines to be added to each message,
|
||||
defaults for the subject prefix and file suffix, number patches when
|
||||
outputting more than one patch, add "To:" or "Cc:" headers, configure
|
||||
attachments, change the patch output directory, and sign off patches
|
||||
with configuration variables.
|
||||
outputting more than one patch, add "To" or "Cc:" headers, configure
|
||||
attachments, and sign off patches with configuration variables.
|
||||
|
||||
------------
|
||||
[format]
|
||||
@ -346,8 +338,7 @@ with configuration variables.
|
||||
cc = <email>
|
||||
attach [ = mime-boundary-string ]
|
||||
signOff = true
|
||||
outputDirectory = <directory>
|
||||
coverLetter = auto
|
||||
coverletter = auto
|
||||
------------
|
||||
|
||||
|
||||
@ -430,8 +421,8 @@ One way to test if your MUA is set up correctly is:
|
||||
* Apply it:
|
||||
|
||||
$ git fetch <project> master:test-apply
|
||||
$ git switch test-apply
|
||||
$ git restore --source=HEAD --staged --worktree :/
|
||||
$ git checkout test-apply
|
||||
$ git reset --hard
|
||||
$ git am a.patch
|
||||
|
||||
If it does not apply correctly, there can be various reasons.
|
||||
@ -513,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),
|
||||
@ -638,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
|
||||
@ -654,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
|
||||
@ -673,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
|
||||
@ -104,11 +96,6 @@ care about this output and want to speed it up further.
|
||||
progress status even if the standard error stream is not
|
||||
directed to a terminal.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
include::config/fsck.txt[]
|
||||
|
||||
DISCUSSION
|
||||
----------
|
||||
|
||||
@ -153,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,52 +96,83 @@ 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
|
||||
-----
|
||||
|
||||
'git gc' tries very hard not to delete objects that are referenced
|
||||
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, notes saved
|
||||
by 'git notes' under refs/notes/, reflogs (which may reference commits
|
||||
in branches that were later amended or rewound), and anything else in
|
||||
the refs/* namespace. 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.
|
||||
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/, 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.
|
||||
|
||||
On the other hand, when 'git gc' runs concurrently with another process,
|
||||
there is a risk of it deleting an object that the other process is using
|
||||
@ -140,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`.
|
||||
|
||||
@ -271,23 +271,6 @@ providing this option will cause it to die.
|
||||
|
||||
-f <file>::
|
||||
Read patterns from <file>, one per line.
|
||||
+
|
||||
Passing the pattern via <file> allows for providing a search pattern
|
||||
containing a \0.
|
||||
+
|
||||
Not all pattern types support patterns containing \0. Git will error
|
||||
out if a given pattern type can't support such a pattern. The
|
||||
`--perl-regexp` pattern type when compiled against the PCRE v2 backend
|
||||
has the widest support for these types of patterns.
|
||||
+
|
||||
In versions of Git before 2.23.0 patterns containing \0 would be
|
||||
silently considered fixed. This was never documented, there were also
|
||||
odd and undocumented interactions between e.g. non-ASCII patterns
|
||||
containing \0 and `--ignore-case`.
|
||||
+
|
||||
In future versions we may learn to support patterns containing \0 for
|
||||
more search backends, until then we'll die when the pattern type in
|
||||
question doesn't support them.
|
||||
|
||||
-e::
|
||||
The next parameter is the pattern. This option has to be
|
||||
|
@ -112,9 +112,15 @@ Other
|
||||
versions are distributed as part of the Git suite for the convenience
|
||||
of end users.
|
||||
|
||||
The official repository of the 'git gui' project can be found at:
|
||||
A 'git gui' development repository can be obtained from:
|
||||
|
||||
https://github.com/prati0100/git-gui.git/
|
||||
git clone git://repo.or.cz/git-gui.git
|
||||
|
||||
or
|
||||
|
||||
git clone http://repo.or.cz/r/git-gui.git
|
||||
|
||||
or browsed online at http://repo.or.cz/w/git-gui.git/[].
|
||||
|
||||
GIT
|
||||
---
|
||||
|
@ -18,7 +18,9 @@ Computes the object ID value for an object with specified type
|
||||
with the contents of the named file (which can be outside of the
|
||||
work tree), and optionally writes the resulting object into the
|
||||
object database. Reports its object ID to its standard output.
|
||||
When <type> is not specified, it defaults to "blob".
|
||||
This is used by 'git cvsimport' to update the index
|
||||
without modifying files in the work tree. When <type> is not
|
||||
specified, it defaults to "blob".
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
|
@ -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:
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user