Compare commits
118 Commits
v2.39.0-rc
...
v2.35.8
Author | SHA1 | Date | |
---|---|---|---|
7380a72f6b | |||
8cd052ea53 | |||
abcb63fb70 | |||
d6e9f67a8e | |||
3a19048ce4 | |||
bcd874d50f | |||
b8787a98db | |||
31f7fe5e34 | |||
ea56f91275 | |||
92957d8427 | |||
b524e896b6 | |||
668f2d5361 | |||
528290f8c6 | |||
4fe5d0b10a | |||
18e2b1cfc8 | |||
3bb3d6bac5 | |||
e91cfe6085 | |||
a5bb10fd5e | |||
c4137be0f5 | |||
29198213c9 | |||
9db05711c9 | |||
2f3b28f272 | |||
4989c35688 | |||
fef08dd32e | |||
8453685d04 | |||
e4cb3693a4 | |||
3c7896e362 | |||
6f5ff3aa31 | |||
0737200a06 | |||
0a1dc55c40 | |||
5843080c85 | |||
321854ac46 | |||
0c8d22abaf | |||
7c811ed5e5 | |||
a2b2173cfe | |||
c025b4b2f1 | |||
d99728b2ca | |||
a36df79a37 | |||
e4298ccd7f | |||
8516dac1e1 | |||
07f91e5e79 | |||
a69043d510 | |||
18bc8eb7b5 | |||
b0e3e2d06b | |||
fda237cb64 | |||
86f6f4fa91 | |||
79e0626b39 | |||
20854bc47a | |||
c03ffcff4e | |||
417fb91b5d | |||
b7a92d078b | |||
6a53a59bf9 | |||
91da4a29e1 | |||
a7237f5ae9 | |||
bd6d3de01f | |||
f44e6a2105 | |||
4bd481e0ad | |||
4fab049258 | |||
ed4404af3c | |||
87248c5933 | |||
2aedeff35f | |||
aeb93d7da2 | |||
0bbcf95194 | |||
e14d6b8408 | |||
394a759d2b | |||
a3033a68ac | |||
2c9a4c7310 | |||
fade728df1 | |||
bffc762f87 | |||
cf8f6ce02a | |||
58325b93c5 | |||
c508c30968 | |||
f39fe8fcb2 | |||
25d7cb600c | |||
012e0d76dc | |||
f8bf6b8f3d | |||
0227130244 | |||
02f4981723 | |||
fbabbc30e7 | |||
6c9466944c | |||
3748b5b7f5 | |||
7fe9bf55b8 | |||
5f22dcc02d | |||
d96ea538e8 | |||
32e357b6df | |||
8a755eddf5 | |||
82689d5e5d | |||
16128765d7 | |||
b7b37a3371 | |||
27ab4784d5 | |||
f8587c31c9 | |||
a59a8c687f | |||
bb3a9265e5 | |||
e0bfc0b3b9 | |||
6662a836eb | |||
3305300f4c | |||
304a50adff | |||
f930a23943 | |||
81c2d4c3a5 | |||
937b71cc8b | |||
17d23e8a38 | |||
522cc87fdc | |||
48050c42c7 | |||
1de69c0cdd | |||
f6e0b9f389 | |||
b49f309aa1 | |||
81dc898df9 | |||
a244dc5b0a | |||
3c50032ff5 | |||
dfa6b32b5e | |||
d74b1fd54f | |||
a60a66e409 | |||
e1e12e97ac | |||
447ac906e1 | |||
34ace8bad0 | |||
2455720950 | |||
8d0d48cf21 | |||
eb22e7dfa2 |
@ -9,7 +9,7 @@ freebsd_12_task:
|
|||||||
DEFAULT_TEST_TARGET: prove
|
DEFAULT_TEST_TARGET: prove
|
||||||
DEVELOPER: 1
|
DEVELOPER: 1
|
||||||
freebsd_instance:
|
freebsd_instance:
|
||||||
image_family: freebsd-12-3
|
image_family: freebsd-12-2
|
||||||
memory: 2G
|
memory: 2G
|
||||||
install_script:
|
install_script:
|
||||||
pkg install -y gettext gmake perl5
|
pkg install -y gettext gmake perl5
|
||||||
|
36
.github/workflows/main.yml
vendored
36
.github/workflows/main.yml
vendored
@ -37,14 +37,14 @@ jobs:
|
|||||||
echo "::set-output name=enabled::$enabled"
|
echo "::set-output name=enabled::$enabled"
|
||||||
- name: skip if the commit or tree was already tested
|
- name: skip if the commit or tree was already tested
|
||||||
id: skip-if-redundant
|
id: skip-if-redundant
|
||||||
uses: actions/github-script@v6
|
uses: actions/github-script@v3
|
||||||
if: steps.check-ref.outputs.enabled == 'yes'
|
if: steps.check-ref.outputs.enabled == 'yes'
|
||||||
with:
|
with:
|
||||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||||
script: |
|
script: |
|
||||||
try {
|
try {
|
||||||
// Figure out workflow ID, commit and tree
|
// Figure out workflow ID, commit and tree
|
||||||
const { data: run } = await github.rest.actions.getWorkflowRun({
|
const { data: run } = await github.actions.getWorkflowRun({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
run_id: context.runId,
|
run_id: context.runId,
|
||||||
@ -54,7 +54,7 @@ jobs:
|
|||||||
const tree_id = run.head_commit.tree_id;
|
const tree_id = run.head_commit.tree_id;
|
||||||
|
|
||||||
// See whether there is a successful run for that commit or tree
|
// See whether there is a successful run for that commit or tree
|
||||||
const { data: runs } = await github.rest.actions.listWorkflowRuns({
|
const { data: runs } = await github.actions.listWorkflowRuns({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
per_page: 500,
|
per_page: 500,
|
||||||
@ -119,8 +119,8 @@ jobs:
|
|||||||
- name: test
|
- name: test
|
||||||
shell: bash
|
shell: bash
|
||||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||||
- name: print test failures
|
- name: ci/print-test-failures.sh
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure()
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ci/print-test-failures.sh
|
run: ci/print-test-failures.sh
|
||||||
- name: Upload failed tests' directories
|
- name: Upload failed tests' directories
|
||||||
@ -204,8 +204,8 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
NO_SVN_TESTS: 1
|
NO_SVN_TESTS: 1
|
||||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||||
- name: print test failures
|
- name: ci/print-test-failures.sh
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure()
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ci/print-test-failures.sh
|
run: ci/print-test-failures.sh
|
||||||
- name: Upload failed tests' directories
|
- name: Upload failed tests' directories
|
||||||
@ -232,12 +232,12 @@ jobs:
|
|||||||
- jobname: linux-gcc
|
- jobname: linux-gcc
|
||||||
cc: gcc
|
cc: gcc
|
||||||
cc_package: gcc-8
|
cc_package: gcc-8
|
||||||
pool: ubuntu-latest
|
pool: ubuntu-20.04
|
||||||
- jobname: linux-TEST-vars
|
- jobname: linux-TEST-vars
|
||||||
cc: gcc
|
cc: gcc
|
||||||
os: ubuntu
|
os: ubuntu
|
||||||
cc_package: gcc-8
|
cc_package: gcc-8
|
||||||
pool: ubuntu-latest
|
pool: ubuntu-20.04
|
||||||
- jobname: osx-clang
|
- jobname: osx-clang
|
||||||
cc: clang
|
cc: clang
|
||||||
pool: macos-latest
|
pool: macos-latest
|
||||||
@ -251,12 +251,6 @@ jobs:
|
|||||||
- jobname: linux-leaks
|
- jobname: linux-leaks
|
||||||
cc: gcc
|
cc: gcc
|
||||||
pool: ubuntu-latest
|
pool: ubuntu-latest
|
||||||
- jobname: linux-asan
|
|
||||||
cc: gcc
|
|
||||||
pool: ubuntu-latest
|
|
||||||
- jobname: linux-ubsan
|
|
||||||
cc: gcc
|
|
||||||
pool: ubuntu-latest
|
|
||||||
env:
|
env:
|
||||||
CC: ${{matrix.vector.cc}}
|
CC: ${{matrix.vector.cc}}
|
||||||
CC_PACKAGE: ${{matrix.vector.cc_package}}
|
CC_PACKAGE: ${{matrix.vector.cc_package}}
|
||||||
@ -267,10 +261,8 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: ci/install-dependencies.sh
|
- run: ci/install-dependencies.sh
|
||||||
- run: ci/run-build-and-tests.sh
|
- run: ci/run-build-and-tests.sh
|
||||||
- name: print test failures
|
- run: ci/print-test-failures.sh
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure()
|
||||||
shell: bash
|
|
||||||
run: ci/print-test-failures.sh
|
|
||||||
- name: Upload failed tests' directories
|
- name: Upload failed tests' directories
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
@ -300,10 +292,8 @@ jobs:
|
|||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- run: ci/install-docker-dependencies.sh
|
- run: ci/install-docker-dependencies.sh
|
||||||
- run: ci/run-build-and-tests.sh
|
- run: ci/run-build-and-tests.sh
|
||||||
- name: print test failures
|
- run: ci/print-test-failures.sh
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure()
|
||||||
shell: bash
|
|
||||||
run: ci/print-test-failures.sh
|
|
||||||
- name: Upload failed tests' directories
|
- name: Upload failed tests' directories
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v1
|
||||||
|
13
.gitignore
vendored
13
.gitignore
vendored
@ -1,5 +1,7 @@
|
|||||||
|
/fuzz-commit-graph
|
||||||
/fuzz_corpora
|
/fuzz_corpora
|
||||||
/GIT-BUILD-DIR
|
/fuzz-pack-headers
|
||||||
|
/fuzz-pack-idx
|
||||||
/GIT-BUILD-OPTIONS
|
/GIT-BUILD-OPTIONS
|
||||||
/GIT-CFLAGS
|
/GIT-CFLAGS
|
||||||
/GIT-LDFLAGS
|
/GIT-LDFLAGS
|
||||||
@ -8,7 +10,6 @@
|
|||||||
/GIT-PERL-HEADER
|
/GIT-PERL-HEADER
|
||||||
/GIT-PYTHON-VARS
|
/GIT-PYTHON-VARS
|
||||||
/GIT-SCRIPT-DEFINES
|
/GIT-SCRIPT-DEFINES
|
||||||
/GIT-SPATCH-DEFINES
|
|
||||||
/GIT-USER-AGENT
|
/GIT-USER-AGENT
|
||||||
/GIT-VERSION-FILE
|
/GIT-VERSION-FILE
|
||||||
/bin-wrappers/
|
/bin-wrappers/
|
||||||
@ -52,7 +53,6 @@
|
|||||||
/git-cvsimport
|
/git-cvsimport
|
||||||
/git-cvsserver
|
/git-cvsserver
|
||||||
/git-daemon
|
/git-daemon
|
||||||
/git-diagnose
|
|
||||||
/git-diff
|
/git-diff
|
||||||
/git-diff-files
|
/git-diff-files
|
||||||
/git-diff-index
|
/git-diff-index
|
||||||
@ -72,13 +72,11 @@
|
|||||||
/git-format-patch
|
/git-format-patch
|
||||||
/git-fsck
|
/git-fsck
|
||||||
/git-fsck-objects
|
/git-fsck-objects
|
||||||
/git-fsmonitor--daemon
|
|
||||||
/git-gc
|
/git-gc
|
||||||
/git-get-tar-commit-id
|
/git-get-tar-commit-id
|
||||||
/git-grep
|
/git-grep
|
||||||
/git-hash-object
|
/git-hash-object
|
||||||
/git-help
|
/git-help
|
||||||
/git-hook
|
|
||||||
/git-http-backend
|
/git-http-backend
|
||||||
/git-http-fetch
|
/git-http-fetch
|
||||||
/git-http-push
|
/git-http-push
|
||||||
@ -180,14 +178,11 @@
|
|||||||
/git-verify-commit
|
/git-verify-commit
|
||||||
/git-verify-pack
|
/git-verify-pack
|
||||||
/git-verify-tag
|
/git-verify-tag
|
||||||
/git-version
|
|
||||||
/git-web--browse
|
/git-web--browse
|
||||||
/git-whatchanged
|
/git-whatchanged
|
||||||
/git-worktree
|
/git-worktree
|
||||||
/git-write-tree
|
/git-write-tree
|
||||||
/scalar
|
|
||||||
/git-core-*/?*
|
/git-core-*/?*
|
||||||
/git.res
|
|
||||||
/gitweb/GITWEB-BUILD-OPTIONS
|
/gitweb/GITWEB-BUILD-OPTIONS
|
||||||
/gitweb/gitweb.cgi
|
/gitweb/gitweb.cgi
|
||||||
/gitweb/static/gitweb.js
|
/gitweb/static/gitweb.js
|
||||||
@ -203,7 +198,6 @@
|
|||||||
*.[aos]
|
*.[aos]
|
||||||
*.o.json
|
*.o.json
|
||||||
*.py[co]
|
*.py[co]
|
||||||
.build/
|
|
||||||
.depend/
|
.depend/
|
||||||
*.gcda
|
*.gcda
|
||||||
*.gcno
|
*.gcno
|
||||||
@ -228,6 +222,7 @@
|
|||||||
*.hcc
|
*.hcc
|
||||||
*.obj
|
*.obj
|
||||||
*.lib
|
*.lib
|
||||||
|
*.res
|
||||||
*.sln
|
*.sln
|
||||||
*.sp
|
*.sp
|
||||||
*.suo
|
*.suo
|
||||||
|
5
.mailmap
5
.mailmap
@ -59,9 +59,8 @@ David Reiss <dreiss@facebook.com> <dreiss@dreiss-vmware.(none)>
|
|||||||
David S. Miller <davem@davemloft.net>
|
David S. Miller <davem@davemloft.net>
|
||||||
David Turner <novalis@novalis.org> <dturner@twopensource.com>
|
David Turner <novalis@novalis.org> <dturner@twopensource.com>
|
||||||
David Turner <novalis@novalis.org> <dturner@twosigma.com>
|
David Turner <novalis@novalis.org> <dturner@twosigma.com>
|
||||||
Derrick Stolee <derrickstolee@github.com> <stolee@gmail.com>
|
Derrick Stolee <dstolee@microsoft.com> <stolee@gmail.com>
|
||||||
Derrick Stolee <derrickstolee@github.com> Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
|
Derrick Stolee <dstolee@microsoft.com> Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
|
||||||
Derrick Stolee <derrickstolee@github.com> <dstolee@microsoft.com>
|
|
||||||
Deskin Miller <deskinm@umich.edu>
|
Deskin Miller <deskinm@umich.edu>
|
||||||
Đoàn Trần Công Danh <congdanhqx@gmail.com> Doan Tran Cong Danh
|
Đoàn Trần Công Danh <congdanhqx@gmail.com> Doan Tran Cong Danh
|
||||||
Dirk Süsserott <newsletter@dirk.my1.cc>
|
Dirk Süsserott <newsletter@dirk.my1.cc>
|
||||||
|
@ -70,8 +70,8 @@ git@sfconservancy.org, or individually:
|
|||||||
|
|
||||||
- Ævar Arnfjörð Bjarmason <avarab@gmail.com>
|
- Ævar Arnfjörð Bjarmason <avarab@gmail.com>
|
||||||
- Christian Couder <christian.couder@gmail.com>
|
- Christian Couder <christian.couder@gmail.com>
|
||||||
|
- Jeff King <peff@peff.net>
|
||||||
- Junio C Hamano <gitster@pobox.com>
|
- Junio C Hamano <gitster@pobox.com>
|
||||||
- Taylor Blau <me@ttaylorr.com>
|
|
||||||
|
|
||||||
All complaints will be reviewed and investigated promptly and fairly.
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
@ -26,13 +26,6 @@ code. For Git in general, a few rough rules are:
|
|||||||
go and fix it up."
|
go and fix it up."
|
||||||
Cf. http://lkml.iu.edu/hypermail/linux/kernel/1001.3/01069.html
|
Cf. http://lkml.iu.edu/hypermail/linux/kernel/1001.3/01069.html
|
||||||
|
|
||||||
- Log messages to explain your changes are as important as the
|
|
||||||
changes themselves. Clearly written code and in-code comments
|
|
||||||
explain how the code works and what is assumed from the surrounding
|
|
||||||
context. The log messages explain what the changes wanted to
|
|
||||||
achieve and why the changes were necessary (more on this in the
|
|
||||||
accompanying SubmittingPatches document).
|
|
||||||
|
|
||||||
Make your code readable and sensible, and don't try to be clever.
|
Make your code readable and sensible, and don't try to be clever.
|
||||||
|
|
||||||
As for more concrete guidelines, just imitate the existing code
|
As for more concrete guidelines, just imitate the existing code
|
||||||
@ -43,10 +36,7 @@ the overall style of existing code. Modifications to existing
|
|||||||
code is expected to match the style the surrounding code already
|
code is expected to match the style the surrounding code already
|
||||||
uses (even if it doesn't match the overall style of existing code).
|
uses (even if it doesn't match the overall style of existing code).
|
||||||
|
|
||||||
But if you must have a list of rules, here are some language
|
But if you must have a list of rules, here they are.
|
||||||
specific ones. Note that Documentation/ToolsForGit.txt document
|
|
||||||
has a collection of tips to help you use some external tools
|
|
||||||
to conform to these guidelines.
|
|
||||||
|
|
||||||
For shell scripts specifically (not exhaustive):
|
For shell scripts specifically (not exhaustive):
|
||||||
|
|
||||||
@ -162,6 +152,8 @@ For shell scripts specifically (not exhaustive):
|
|||||||
|
|
||||||
- We do not use \{m,n\};
|
- We do not use \{m,n\};
|
||||||
|
|
||||||
|
- We do not use -E;
|
||||||
|
|
||||||
- We do not use ? or + (which are \{0,1\} and \{1,\}
|
- We do not use ? or + (which are \{0,1\} and \{1,\}
|
||||||
respectively in BRE) but that goes without saying as these
|
respectively in BRE) but that goes without saying as these
|
||||||
are ERE elements not BRE (note that \? and \+ are not even part
|
are ERE elements not BRE (note that \? and \+ are not even part
|
||||||
@ -202,19 +194,10 @@ For C programs:
|
|||||||
by e.g. "echo DEVELOPER=1 >>config.mak".
|
by e.g. "echo DEVELOPER=1 >>config.mak".
|
||||||
|
|
||||||
- We try to support a wide range of C compilers to compile Git with,
|
- We try to support a wide range of C compilers to compile Git with,
|
||||||
including old ones. As of Git v2.35.0 Git requires C99 (we check
|
including old ones. You should not use features from newer C
|
||||||
"__STDC_VERSION__"). You should not use features from a newer C
|
|
||||||
standard, even if your compiler groks them.
|
standard, even if your compiler groks them.
|
||||||
|
|
||||||
New C99 features have been phased in gradually, if something's new
|
There are a few exceptions to this guideline:
|
||||||
in C99 but not used yet don't assume that it's safe to use, some
|
|
||||||
compilers we target have only partial support for it. These are
|
|
||||||
considered safe to use:
|
|
||||||
|
|
||||||
. since around 2007 with 2b6854c863a, we have been using
|
|
||||||
initializer elements which are not computable at load time. E.g.:
|
|
||||||
|
|
||||||
const char *args[] = {"constant", variable, NULL};
|
|
||||||
|
|
||||||
. since early 2012 with e1327023ea, we have been using an enum
|
. since early 2012 with e1327023ea, we have been using an enum
|
||||||
definition whose last element is followed by a comma. This, like
|
definition whose last element is followed by a comma. This, like
|
||||||
@ -227,27 +210,15 @@ For C programs:
|
|||||||
. since mid 2017 with 512f41cf, we have been using designated
|
. since mid 2017 with 512f41cf, we have been using designated
|
||||||
initializers for array (e.g. "int array[10] = { [5] = 2 }").
|
initializers for array (e.g. "int array[10] = { [5] = 2 }").
|
||||||
|
|
||||||
. since early 2021 with 765dc168882, we have been using variadic
|
These used to be forbidden, but we have not heard any breakage
|
||||||
macros, mostly for printf-like trace and debug macros.
|
report, and they are assumed to be safe.
|
||||||
|
|
||||||
. since late 2021 with 44ba10d6, we have had variables declared in
|
|
||||||
the for loop "for (int i = 0; i < 10; i++)".
|
|
||||||
|
|
||||||
New C99 features that we cannot use yet:
|
|
||||||
|
|
||||||
. %z and %zu as a printf() argument for a size_t (the %z being for
|
|
||||||
the POSIX-specific ssize_t). Instead you should use
|
|
||||||
printf("%"PRIuMAX, (uintmax_t)v). These days the MSVC version we
|
|
||||||
rely on supports %z, but the C library used by MinGW does not.
|
|
||||||
|
|
||||||
. Shorthand like ".a.b = *c" in struct initializations is known to
|
|
||||||
trip up an older IBM XLC version, use ".a = { .b = *c }" instead.
|
|
||||||
See the 33665d98 (reftable: make assignments portable to AIX xlc
|
|
||||||
v12.01, 2022-03-28).
|
|
||||||
|
|
||||||
- Variables have to be declared at the beginning of the block, before
|
- Variables have to be declared at the beginning of the block, before
|
||||||
the first statement (i.e. -Wdeclaration-after-statement).
|
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.
|
||||||
|
|
||||||
- NULL pointers shall be written as NULL, not as 0.
|
- NULL pointers shall be written as NULL, not as 0.
|
||||||
|
|
||||||
- When declaring pointers, the star sides with the variable
|
- When declaring pointers, the star sides with the variable
|
||||||
@ -508,6 +479,17 @@ For Perl programs:
|
|||||||
|
|
||||||
- Learn and use Git.pm if you need that functionality.
|
- Learn and use Git.pm if you need that functionality.
|
||||||
|
|
||||||
|
- For Emacs, it's useful to put the following in
|
||||||
|
GIT_CHECKOUT/.dir-locals.el, assuming you use cperl-mode:
|
||||||
|
|
||||||
|
;; note the first part is useful for C editing, too
|
||||||
|
((nil . ((indent-tabs-mode . t)
|
||||||
|
(tab-width . 8)
|
||||||
|
(fill-column . 80)))
|
||||||
|
(cperl-mode . ((cperl-indent-level . 8)
|
||||||
|
(cperl-extra-newline-before-brace . nil)
|
||||||
|
(cperl-merge-trailing-else . t))))
|
||||||
|
|
||||||
For Python scripts:
|
For Python scripts:
|
||||||
|
|
||||||
- We follow PEP-8 (http://www.python.org/dev/peps/pep-0008/).
|
- We follow PEP-8 (http://www.python.org/dev/peps/pep-0008/).
|
||||||
@ -619,7 +601,7 @@ Writing Documentation:
|
|||||||
avoidance of gendered pronouns.
|
avoidance of gendered pronouns.
|
||||||
|
|
||||||
- When it becomes awkward to stick to this style, prefer "you" when
|
- When it becomes awkward to stick to this style, prefer "you" when
|
||||||
addressing the hypothetical user, and possibly "we" when
|
addressing the the hypothetical user, and possibly "we" when
|
||||||
discussing how the program might react to the user. E.g.
|
discussing how the program might react to the user. E.g.
|
||||||
|
|
||||||
You can use this option instead of --xyz, but we might remove
|
You can use this option instead of --xyz, but we might remove
|
||||||
@ -663,8 +645,8 @@ Writing Documentation:
|
|||||||
(One or more of <file>.)
|
(One or more of <file>.)
|
||||||
|
|
||||||
Optional parts are enclosed in square brackets:
|
Optional parts are enclosed in square brackets:
|
||||||
[<file>...]
|
[<extra>]
|
||||||
(Zero or more of <file>.)
|
(Zero or one <extra>.)
|
||||||
|
|
||||||
--exec-path[=<path>]
|
--exec-path[=<path>]
|
||||||
(Option with an optional argument. Note that the "=" is inside the
|
(Option with an optional argument. Note that the "=" is inside the
|
||||||
@ -678,16 +660,6 @@ Writing Documentation:
|
|||||||
[-q | --quiet]
|
[-q | --quiet]
|
||||||
[--utf8 | --no-utf8]
|
[--utf8 | --no-utf8]
|
||||||
|
|
||||||
Use spacing around "|" token(s), but not immediately after opening or
|
|
||||||
before closing a [] or () pair:
|
|
||||||
Do: [-q | --quiet]
|
|
||||||
Don't: [-q|--quiet]
|
|
||||||
|
|
||||||
Don't use spacing around "|" tokens when they're used to seperate the
|
|
||||||
alternate arguments of an option:
|
|
||||||
Do: --track[=(direct|inherit)]
|
|
||||||
Don't: --track[=(direct | inherit)]
|
|
||||||
|
|
||||||
Parentheses are used for grouping:
|
Parentheses are used for grouping:
|
||||||
[(<rev> | <range>)...]
|
[(<rev> | <range>)...]
|
||||||
(Any number of either <rev> or <range>. Parens are needed to make
|
(Any number of either <rev> or <range>. Parens are needed to make
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# Import tree-wide shared Makefile behavior and libraries
|
|
||||||
include ../shared.mak
|
|
||||||
|
|
||||||
# Guard against environment variables
|
# Guard against environment variables
|
||||||
MAN1_TXT =
|
MAN1_TXT =
|
||||||
MAN5_TXT =
|
MAN5_TXT =
|
||||||
@ -21,25 +18,13 @@ MAN1_TXT += $(filter-out \
|
|||||||
MAN1_TXT += git.txt
|
MAN1_TXT += git.txt
|
||||||
MAN1_TXT += gitk.txt
|
MAN1_TXT += gitk.txt
|
||||||
MAN1_TXT += gitweb.txt
|
MAN1_TXT += gitweb.txt
|
||||||
MAN1_TXT += scalar.txt
|
|
||||||
|
|
||||||
# man5 / man7 guides (note: new guides should also be added to command-list.txt)
|
# man5 / man7 guides (note: new guides should also be added to command-list.txt)
|
||||||
MAN5_TXT += gitattributes.txt
|
MAN5_TXT += gitattributes.txt
|
||||||
MAN5_TXT += gitformat-bundle.txt
|
|
||||||
MAN5_TXT += gitformat-chunk.txt
|
|
||||||
MAN5_TXT += gitformat-commit-graph.txt
|
|
||||||
MAN5_TXT += gitformat-index.txt
|
|
||||||
MAN5_TXT += gitformat-pack.txt
|
|
||||||
MAN5_TXT += gitformat-signature.txt
|
|
||||||
MAN5_TXT += githooks.txt
|
MAN5_TXT += githooks.txt
|
||||||
MAN5_TXT += gitignore.txt
|
MAN5_TXT += gitignore.txt
|
||||||
MAN5_TXT += gitmailmap.txt
|
MAN5_TXT += gitmailmap.txt
|
||||||
MAN5_TXT += gitmodules.txt
|
MAN5_TXT += gitmodules.txt
|
||||||
MAN5_TXT += gitprotocol-capabilities.txt
|
|
||||||
MAN5_TXT += gitprotocol-common.txt
|
|
||||||
MAN5_TXT += gitprotocol-http.txt
|
|
||||||
MAN5_TXT += gitprotocol-pack.txt
|
|
||||||
MAN5_TXT += gitprotocol-v2.txt
|
|
||||||
MAN5_TXT += gitrepository-layout.txt
|
MAN5_TXT += gitrepository-layout.txt
|
||||||
MAN5_TXT += gitweb.conf.txt
|
MAN5_TXT += gitweb.conf.txt
|
||||||
|
|
||||||
@ -63,7 +48,6 @@ HOWTO_TXT += $(wildcard howto/*.txt)
|
|||||||
|
|
||||||
DOC_DEP_TXT += $(wildcard *.txt)
|
DOC_DEP_TXT += $(wildcard *.txt)
|
||||||
DOC_DEP_TXT += $(wildcard config/*.txt)
|
DOC_DEP_TXT += $(wildcard config/*.txt)
|
||||||
DOC_DEP_TXT += $(wildcard includes/*.txt)
|
|
||||||
|
|
||||||
ifdef MAN_FILTER
|
ifdef MAN_FILTER
|
||||||
MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT))
|
MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT))
|
||||||
@ -103,24 +87,28 @@ SP_ARTICLES += howto/coordinate-embargoed-releases
|
|||||||
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
||||||
SP_ARTICLES += $(API_DOCS)
|
SP_ARTICLES += $(API_DOCS)
|
||||||
|
|
||||||
TECH_DOCS += ReviewingGuidelines
|
|
||||||
TECH_DOCS += MyFirstContribution
|
TECH_DOCS += MyFirstContribution
|
||||||
TECH_DOCS += MyFirstObjectWalk
|
TECH_DOCS += MyFirstObjectWalk
|
||||||
TECH_DOCS += SubmittingPatches
|
TECH_DOCS += SubmittingPatches
|
||||||
TECH_DOCS += ToolsForGit
|
TECH_DOCS += technical/bundle-format
|
||||||
TECH_DOCS += technical/bitmap-format
|
|
||||||
TECH_DOCS += technical/bundle-uri
|
|
||||||
TECH_DOCS += technical/hash-function-transition
|
TECH_DOCS += technical/hash-function-transition
|
||||||
|
TECH_DOCS += technical/http-protocol
|
||||||
|
TECH_DOCS += technical/index-format
|
||||||
TECH_DOCS += technical/long-running-process-protocol
|
TECH_DOCS += technical/long-running-process-protocol
|
||||||
TECH_DOCS += technical/multi-pack-index
|
TECH_DOCS += technical/multi-pack-index
|
||||||
|
TECH_DOCS += technical/pack-format
|
||||||
TECH_DOCS += technical/pack-heuristics
|
TECH_DOCS += technical/pack-heuristics
|
||||||
|
TECH_DOCS += technical/pack-protocol
|
||||||
TECH_DOCS += technical/parallel-checkout
|
TECH_DOCS += technical/parallel-checkout
|
||||||
TECH_DOCS += technical/partial-clone
|
TECH_DOCS += technical/partial-clone
|
||||||
|
TECH_DOCS += technical/protocol-capabilities
|
||||||
|
TECH_DOCS += technical/protocol-common
|
||||||
|
TECH_DOCS += technical/protocol-v2
|
||||||
TECH_DOCS += technical/racy-git
|
TECH_DOCS += technical/racy-git
|
||||||
TECH_DOCS += technical/reftable
|
TECH_DOCS += technical/reftable
|
||||||
TECH_DOCS += technical/scalar
|
|
||||||
TECH_DOCS += technical/send-pack-pipeline
|
TECH_DOCS += technical/send-pack-pipeline
|
||||||
TECH_DOCS += technical/shallow
|
TECH_DOCS += technical/shallow
|
||||||
|
TECH_DOCS += technical/signature-format
|
||||||
TECH_DOCS += technical/trivial-merge
|
TECH_DOCS += technical/trivial-merge
|
||||||
SP_ARTICLES += $(TECH_DOCS)
|
SP_ARTICLES += $(TECH_DOCS)
|
||||||
SP_ARTICLES += technical/api-index
|
SP_ARTICLES += technical/api-index
|
||||||
@ -227,6 +215,38 @@ DEFAULT_EDITOR_SQ = $(subst ','\'',$(DEFAULT_EDITOR))
|
|||||||
ASCIIDOC_EXTRA += -a 'git-default-editor=$(DEFAULT_EDITOR_SQ)'
|
ASCIIDOC_EXTRA += -a 'git-default-editor=$(DEFAULT_EDITOR_SQ)'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
|
||||||
|
QUIET_SUBDIR1 =
|
||||||
|
|
||||||
|
ifneq ($(findstring $(MAKEFLAGS),w),w)
|
||||||
|
PRINT_DIR = --no-print-directory
|
||||||
|
else # "make -w"
|
||||||
|
NO_SUBDIR = :
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
||||||
|
ifndef V
|
||||||
|
QUIET = @
|
||||||
|
QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;
|
||||||
|
QUIET_XMLTO = @echo ' ' XMLTO $@;
|
||||||
|
QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;
|
||||||
|
QUIET_MAKEINFO = @echo ' ' MAKEINFO $@;
|
||||||
|
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
||||||
|
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
||||||
|
QUIET_GEN = @echo ' ' GEN $@;
|
||||||
|
QUIET_STDERR = 2> /dev/null
|
||||||
|
QUIET_SUBDIR0 = +@subdir=
|
||||||
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
||||||
|
$(MAKE) $(PRINT_DIR) -C $$subdir
|
||||||
|
|
||||||
|
QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<;
|
||||||
|
QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<;
|
||||||
|
QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<;
|
||||||
|
|
||||||
|
export V
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
all: html man
|
all: html man
|
||||||
|
|
||||||
html: $(DOC_HTML)
|
html: $(DOC_HTML)
|
||||||
@ -296,8 +316,6 @@ cmds_txt = cmds-ancillaryinterrogators.txt \
|
|||||||
cmds-synchingrepositories.txt \
|
cmds-synchingrepositories.txt \
|
||||||
cmds-synchelpers.txt \
|
cmds-synchelpers.txt \
|
||||||
cmds-guide.txt \
|
cmds-guide.txt \
|
||||||
cmds-developerinterfaces.txt \
|
|
||||||
cmds-userinterfaces.txt \
|
|
||||||
cmds-purehelpers.txt \
|
cmds-purehelpers.txt \
|
||||||
cmds-foreignscminterface.txt
|
cmds-foreignscminterface.txt
|
||||||
|
|
||||||
@ -313,12 +331,12 @@ $(mergetools_txt): mergetools-list.made
|
|||||||
|
|
||||||
mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
||||||
$(QUIET_GEN) \
|
$(QUIET_GEN) \
|
||||||
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && TOOL_MODE=diff && \
|
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
|
||||||
. ../git-mergetool--lib.sh && \
|
. ../git-mergetool--lib.sh && \
|
||||||
show_tool_names can_diff' | sed -e "s/\([a-z0-9]*\)/\`\1\`;;/" >mergetools-diff.txt && \
|
show_tool_names can_diff "* " || :' >mergetools-diff.txt && \
|
||||||
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && TOOL_MODE=merge && \
|
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
|
||||||
. ../git-mergetool--lib.sh && \
|
. ../git-mergetool--lib.sh && \
|
||||||
show_tool_names can_merge' | sed -e "s/\([a-z0-9]*\)/\`\1\`;;/" >mergetools-merge.txt && \
|
show_tool_names can_merge "* " || :' >mergetools-merge.txt && \
|
||||||
date >$@
|
date >$@
|
||||||
|
|
||||||
TRACK_ASCIIDOCFLAGS = $(subst ','\'',$(ASCIIDOC_COMMON):$(ASCIIDOC_HTML):$(ASCIIDOC_DOCBOOK))
|
TRACK_ASCIIDOCFLAGS = $(subst ','\'',$(ASCIIDOC_COMMON):$(ASCIIDOC_HTML):$(ASCIIDOC_DOCBOOK))
|
||||||
@ -401,7 +419,7 @@ gitman.texi: $(MAN_XML) cat-texi.perl texi.xsl
|
|||||||
$(RM) $@+
|
$(RM) $@+
|
||||||
|
|
||||||
gitman.info: gitman.texi
|
gitman.info: gitman.texi
|
||||||
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $<
|
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $*.texi
|
||||||
|
|
||||||
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
||||||
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@
|
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@
|
||||||
@ -445,11 +463,25 @@ quick-install-html: require-htmlrepo
|
|||||||
print-man1:
|
print-man1:
|
||||||
@for i in $(MAN1_TXT); do echo $$i; done
|
@for i in $(MAN1_TXT); do echo $$i; done
|
||||||
|
|
||||||
|
## Lint: Common
|
||||||
|
.build:
|
||||||
|
$(QUIET)mkdir $@
|
||||||
|
.build/lint-docs: | .build
|
||||||
|
$(QUIET)mkdir $@
|
||||||
|
|
||||||
## Lint: gitlink
|
## Lint: gitlink
|
||||||
|
.build/lint-docs/gitlink: | .build/lint-docs
|
||||||
|
$(QUIET)mkdir $@
|
||||||
|
.build/lint-docs/gitlink/howto: | .build/lint-docs/gitlink
|
||||||
|
$(QUIET)mkdir $@
|
||||||
|
.build/lint-docs/gitlink/config: | .build/lint-docs/gitlink
|
||||||
|
$(QUIET)mkdir $@
|
||||||
LINT_DOCS_GITLINK = $(patsubst %.txt,.build/lint-docs/gitlink/%.ok,$(HOWTO_TXT) $(DOC_DEP_TXT))
|
LINT_DOCS_GITLINK = $(patsubst %.txt,.build/lint-docs/gitlink/%.ok,$(HOWTO_TXT) $(DOC_DEP_TXT))
|
||||||
|
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink
|
||||||
|
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/howto
|
||||||
|
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/config
|
||||||
$(LINT_DOCS_GITLINK): lint-gitlink.perl
|
$(LINT_DOCS_GITLINK): lint-gitlink.perl
|
||||||
$(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt
|
$(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt
|
||||||
$(call mkdir_p_parent_template)
|
|
||||||
$(QUIET_LINT_GITLINK)$(PERL_PATH) lint-gitlink.perl \
|
$(QUIET_LINT_GITLINK)$(PERL_PATH) lint-gitlink.perl \
|
||||||
$< \
|
$< \
|
||||||
$(HOWTO_TXT) $(DOC_DEP_TXT) \
|
$(HOWTO_TXT) $(DOC_DEP_TXT) \
|
||||||
@ -460,35 +492,29 @@ $(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt
|
|||||||
lint-docs-gitlink: $(LINT_DOCS_GITLINK)
|
lint-docs-gitlink: $(LINT_DOCS_GITLINK)
|
||||||
|
|
||||||
## Lint: man-end-blurb
|
## Lint: man-end-blurb
|
||||||
|
.build/lint-docs/man-end-blurb: | .build/lint-docs
|
||||||
|
$(QUIET)mkdir $@
|
||||||
LINT_DOCS_MAN_END_BLURB = $(patsubst %.txt,.build/lint-docs/man-end-blurb/%.ok,$(MAN_TXT))
|
LINT_DOCS_MAN_END_BLURB = $(patsubst %.txt,.build/lint-docs/man-end-blurb/%.ok,$(MAN_TXT))
|
||||||
|
$(LINT_DOCS_MAN_END_BLURB): | .build/lint-docs/man-end-blurb
|
||||||
$(LINT_DOCS_MAN_END_BLURB): lint-man-end-blurb.perl
|
$(LINT_DOCS_MAN_END_BLURB): lint-man-end-blurb.perl
|
||||||
$(LINT_DOCS_MAN_END_BLURB): .build/lint-docs/man-end-blurb/%.ok: %.txt
|
$(LINT_DOCS_MAN_END_BLURB): .build/lint-docs/man-end-blurb/%.ok: %.txt
|
||||||
$(call mkdir_p_parent_template)
|
|
||||||
$(QUIET_LINT_MANEND)$(PERL_PATH) lint-man-end-blurb.perl $< >$@
|
$(QUIET_LINT_MANEND)$(PERL_PATH) lint-man-end-blurb.perl $< >$@
|
||||||
.PHONY: lint-docs-man-end-blurb
|
.PHONY: lint-docs-man-end-blurb
|
||||||
|
lint-docs-man-end-blurb: $(LINT_DOCS_MAN_END_BLURB)
|
||||||
|
|
||||||
## Lint: man-section-order
|
## Lint: man-section-order
|
||||||
|
.build/lint-docs/man-section-order: | .build/lint-docs
|
||||||
|
$(QUIET)mkdir $@
|
||||||
LINT_DOCS_MAN_SECTION_ORDER = $(patsubst %.txt,.build/lint-docs/man-section-order/%.ok,$(MAN_TXT))
|
LINT_DOCS_MAN_SECTION_ORDER = $(patsubst %.txt,.build/lint-docs/man-section-order/%.ok,$(MAN_TXT))
|
||||||
|
$(LINT_DOCS_MAN_SECTION_ORDER): | .build/lint-docs/man-section-order
|
||||||
$(LINT_DOCS_MAN_SECTION_ORDER): lint-man-section-order.perl
|
$(LINT_DOCS_MAN_SECTION_ORDER): lint-man-section-order.perl
|
||||||
$(LINT_DOCS_MAN_SECTION_ORDER): .build/lint-docs/man-section-order/%.ok: %.txt
|
$(LINT_DOCS_MAN_SECTION_ORDER): .build/lint-docs/man-section-order/%.ok: %.txt
|
||||||
$(call mkdir_p_parent_template)
|
|
||||||
$(QUIET_LINT_MANSEC)$(PERL_PATH) lint-man-section-order.perl $< >$@
|
$(QUIET_LINT_MANSEC)$(PERL_PATH) lint-man-section-order.perl $< >$@
|
||||||
.PHONY: lint-docs-man-section-order
|
.PHONY: lint-docs-man-section-order
|
||||||
lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER)
|
lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER)
|
||||||
|
|
||||||
.PHONY: lint-docs-fsck-msgids
|
|
||||||
LINT_DOCS_FSCK_MSGIDS = .build/lint-docs/fsck-msgids.ok
|
|
||||||
$(LINT_DOCS_FSCK_MSGIDS): lint-fsck-msgids.perl
|
|
||||||
$(LINT_DOCS_FSCK_MSGIDS): ../fsck.h fsck-msgids.txt
|
|
||||||
$(call mkdir_p_parent_template)
|
|
||||||
$(QUIET_GEN)$(PERL_PATH) lint-fsck-msgids.perl \
|
|
||||||
../fsck.h fsck-msgids.txt $@
|
|
||||||
|
|
||||||
lint-docs-fsck-msgids: $(LINT_DOCS_FSCK_MSGIDS)
|
|
||||||
|
|
||||||
## Lint: list of targets above
|
## Lint: list of targets above
|
||||||
.PHONY: lint-docs
|
.PHONY: lint-docs
|
||||||
lint-docs: lint-docs-fsck-msgids
|
|
||||||
lint-docs: lint-docs-gitlink
|
lint-docs: lint-docs-gitlink
|
||||||
lint-docs: lint-docs-man-end-blurb
|
lint-docs: lint-docs-man-end-blurb
|
||||||
lint-docs: lint-docs-man-section-order
|
lint-docs: lint-docs-man-section-order
|
||||||
@ -498,4 +524,7 @@ doc-l10n install-l10n::
|
|||||||
$(MAKE) -C po $@
|
$(MAKE) -C po $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Delete the target file on error
|
||||||
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
.PHONY: FORCE
|
.PHONY: FORCE
|
||||||
|
@ -710,104 +710,13 @@ dependencies. `prove` also makes the output nicer.
|
|||||||
Go ahead and commit this change, as well.
|
Go ahead and commit this change, as well.
|
||||||
|
|
||||||
[[ready-to-share]]
|
[[ready-to-share]]
|
||||||
== Getting Ready to Share: Anatomy of a Patch Series
|
== Getting Ready to Share
|
||||||
|
|
||||||
You may have noticed already that the Git project performs its code reviews via
|
You may have noticed already that the Git project performs its code reviews via
|
||||||
emailed patches, which are then applied by the maintainer when they are ready
|
emailed patches, which are then applied by the maintainer when they are ready
|
||||||
and approved by the community. The Git project does not accept contributions from
|
and approved by the community. The Git project does not accept patches from
|
||||||
pull requests, and the patches emailed for review need to be formatted a
|
pull requests, and the patches emailed for review need to be formatted a
|
||||||
specific way.
|
specific way. At this point the tutorial diverges, in order to demonstrate two
|
||||||
|
|
||||||
:patch-series: https://lore.kernel.org/git/pull.1218.git.git.1645209647.gitgitgadget@gmail.com/
|
|
||||||
:lore: https://lore.kernel.org/git/
|
|
||||||
|
|
||||||
Before taking a look at how to convert your commits into emailed patches,
|
|
||||||
let's analyze what the end result, a "patch series", looks like. Here is an
|
|
||||||
{patch-series}[example] of the summary view for a patch series on the web interface of
|
|
||||||
the {lore}[Git mailing list archive]:
|
|
||||||
|
|
||||||
----
|
|
||||||
2022-02-18 18:40 [PATCH 0/3] libify reflog John Cai via GitGitGadget
|
|
||||||
2022-02-18 18:40 ` [PATCH 1/3] reflog: libify delete reflog function and helpers John Cai via GitGitGadget
|
|
||||||
2022-02-18 19:10 ` Ævar Arnfjörð Bjarmason [this message]
|
|
||||||
2022-02-18 19:39 ` Taylor Blau
|
|
||||||
2022-02-18 19:48 ` Ævar Arnfjörð Bjarmason
|
|
||||||
2022-02-18 19:35 ` Taylor Blau
|
|
||||||
2022-02-21 1:43 ` John Cai
|
|
||||||
2022-02-21 1:50 ` Taylor Blau
|
|
||||||
2022-02-23 19:50 ` John Cai
|
|
||||||
2022-02-18 20:00 ` // other replies elided
|
|
||||||
2022-02-18 18:40 ` [PATCH 2/3] reflog: call reflog_delete from reflog.c John Cai via GitGitGadget
|
|
||||||
2022-02-18 19:15 ` Ævar Arnfjörð Bjarmason
|
|
||||||
2022-02-18 20:26 ` Junio C Hamano
|
|
||||||
2022-02-18 18:40 ` [PATCH 3/3] stash: call reflog_delete from reflog.c John Cai via GitGitGadget
|
|
||||||
2022-02-18 19:20 ` Ævar Arnfjörð Bjarmason
|
|
||||||
2022-02-19 0:21 ` Taylor Blau
|
|
||||||
2022-02-22 2:36 ` John Cai
|
|
||||||
2022-02-22 10:51 ` Ævar Arnfjörð Bjarmason
|
|
||||||
2022-02-18 19:29 ` [PATCH 0/3] libify reflog Ævar Arnfjörð Bjarmason
|
|
||||||
2022-02-22 18:30 ` [PATCH v2 0/3] libify reflog John Cai via GitGitGadget
|
|
||||||
2022-02-22 18:30 ` [PATCH v2 1/3] stash: add test to ensure reflog --rewrite --updatref behavior John Cai via GitGitGadget
|
|
||||||
2022-02-23 8:54 ` Ævar Arnfjörð Bjarmason
|
|
||||||
2022-02-23 21:27 ` Junio C Hamano
|
|
||||||
// continued
|
|
||||||
----
|
|
||||||
|
|
||||||
We can note a few things:
|
|
||||||
|
|
||||||
- Each commit is sent as a separate email, with the commit message title as
|
|
||||||
subject, prefixed with "[PATCH _i_/_n_]" for the _i_-th commit of an
|
|
||||||
_n_-commit series.
|
|
||||||
- Each patch is sent as a reply to an introductory email called the _cover
|
|
||||||
letter_ of the series, prefixed "[PATCH 0/_n_]".
|
|
||||||
- Subsequent iterations of the patch series are labelled "PATCH v2", "PATCH
|
|
||||||
v3", etc. in place of "PATCH". For example, "[PATCH v2 1/3]" would be the first of
|
|
||||||
three patches in the second iteration. Each iteration is sent with a new cover
|
|
||||||
letter (like "[PATCH v2 0/3]" above), itself a reply to the cover letter of the
|
|
||||||
previous iteration (more on that below).
|
|
||||||
|
|
||||||
NOTE: A single-patch topic is sent with "[PATCH]", "[PATCH v2]", etc. without
|
|
||||||
_i_/_n_ numbering (in the above thread overview, no single-patch topic appears,
|
|
||||||
though).
|
|
||||||
|
|
||||||
[[cover-letter]]
|
|
||||||
=== The cover letter
|
|
||||||
|
|
||||||
In addition to an email per patch, the Git community also expects your patches
|
|
||||||
to come with a cover letter. This is an important component of change
|
|
||||||
submission as it explains to the community from a high level what you're trying
|
|
||||||
to do, and why, in a way that's more apparent than just looking at your
|
|
||||||
patches.
|
|
||||||
|
|
||||||
The title of your cover letter should be something which succinctly covers the
|
|
||||||
purpose of your entire topic branch. It's often in the imperative mood, just
|
|
||||||
like our commit message titles. Here is how we'll title our series:
|
|
||||||
|
|
||||||
---
|
|
||||||
Add the 'psuh' command
|
|
||||||
---
|
|
||||||
|
|
||||||
The body of the cover letter is used to give additional context to reviewers.
|
|
||||||
Be sure to explain anything your patches don't make clear on their own, but
|
|
||||||
remember that since the cover letter is not recorded in the commit history,
|
|
||||||
anything that might be useful to future readers of the repository's history
|
|
||||||
should also be in your commit messages.
|
|
||||||
|
|
||||||
Here's an example body for `psuh`:
|
|
||||||
|
|
||||||
----
|
|
||||||
Our internal metrics indicate widespread interest in the command
|
|
||||||
git-psuh - that is, many users are trying to use it, but finding it is
|
|
||||||
unavailable, using some unknown workaround instead.
|
|
||||||
|
|
||||||
The following handful of patches add the psuh command and implement some
|
|
||||||
handy features on top of it.
|
|
||||||
|
|
||||||
This patchset is part of the MyFirstContribution tutorial and should not
|
|
||||||
be merged.
|
|
||||||
----
|
|
||||||
|
|
||||||
At this point the tutorial diverges, in order to demonstrate two
|
|
||||||
different methods of formatting your patchset and getting it reviewed.
|
different methods of formatting your patchset and getting it reviewed.
|
||||||
|
|
||||||
The first method to be covered is GitGitGadget, which is useful for those
|
The first method to be covered is GitGitGadget, which is useful for those
|
||||||
@ -899,22 +808,8 @@ https://github.com/gitgitgadget/git and open a PR either with the "New pull
|
|||||||
request" button or the convenient "Compare & pull request" button that may
|
request" button or the convenient "Compare & pull request" button that may
|
||||||
appear with the name of your newly pushed branch.
|
appear with the name of your newly pushed branch.
|
||||||
|
|
||||||
Review the PR's title and description, as they're used by GitGitGadget
|
Review the PR's title and description, as it's used by GitGitGadget as the cover
|
||||||
respectively as the subject and body of the cover letter for your change. Refer
|
letter for your change. When you're happy, submit your pull request.
|
||||||
to <<cover-letter,"The cover letter">> above for advice on how to title your
|
|
||||||
submission and what content to include in the description.
|
|
||||||
|
|
||||||
NOTE: For single-patch contributions, your commit message should already be
|
|
||||||
meaningful and explain at a high level the purpose (what is happening and why)
|
|
||||||
of your patch, so you usually do not need any additional context. In that case,
|
|
||||||
remove the PR description that GitHub automatically generates from your commit
|
|
||||||
message (your PR description should be empty). If you do need to supply even
|
|
||||||
more context, you can do so in that space and it will be appended to the email
|
|
||||||
that GitGitGadget will send, between the three-dash line and the diffstat
|
|
||||||
(see <<single-patch,Bonus Chapter: One-Patch Changes>> for how this looks once
|
|
||||||
submitted).
|
|
||||||
|
|
||||||
When you're happy, submit your pull request.
|
|
||||||
|
|
||||||
[[run-ci-ggg]]
|
[[run-ci-ggg]]
|
||||||
=== Running CI and Getting Ready to Send
|
=== Running CI and Getting Ready to Send
|
||||||
@ -1057,29 +952,49 @@ but want reviewers to look at what they have so far. You can add this flag with
|
|||||||
Check and make sure that your patches and cover letter template exist in the
|
Check and make sure that your patches and cover letter template exist in the
|
||||||
directory you specified - you're nearly ready to send out your review!
|
directory you specified - you're nearly ready to send out your review!
|
||||||
|
|
||||||
[[preparing-cover-letter]]
|
[[cover-letter]]
|
||||||
=== Preparing Email
|
=== Preparing Email
|
||||||
|
|
||||||
Since you invoked `format-patch` with `--cover-letter`, you've already got a
|
In addition to an email per patch, the Git community also expects your patches
|
||||||
cover letter template ready. Open it up in your favorite editor.
|
to come with a cover letter, typically with a subject line [PATCH 0/x] (where
|
||||||
|
x is the number of patches you're sending). Since you invoked `format-patch`
|
||||||
|
with `--cover-letter`, you've already got a template ready. Open it up in your
|
||||||
|
favorite editor.
|
||||||
|
|
||||||
You should see a number of headers present already. Check that your `From:`
|
You should see a number of headers present already. Check that your `From:`
|
||||||
header is correct. Then modify your `Subject:` (see <<cover-letter,above>> for
|
header is correct. Then modify your `Subject:` to something which succinctly
|
||||||
how to choose good title for your patch series):
|
covers the purpose of your entire topic branch, for example:
|
||||||
|
|
||||||
----
|
----
|
||||||
Subject: [PATCH 0/7] Add the 'psuh' command
|
Subject: [PATCH 0/7] adding the 'psuh' command
|
||||||
----
|
----
|
||||||
|
|
||||||
Make sure you retain the ``[PATCH 0/X]'' part; that's what indicates to the Git
|
Make sure you retain the ``[PATCH 0/X]'' part; that's what indicates to the Git
|
||||||
community that this email is the beginning of a patch series, and many
|
community that this email is the beginning of a review, and many reviewers
|
||||||
reviewers filter their email for this type of flag.
|
filter their email for this type of flag.
|
||||||
|
|
||||||
You'll need to add some extra parameters when you invoke `git send-email` to add
|
You'll need to add some extra parameters when you invoke `git send-email` to add
|
||||||
the cover letter.
|
the cover letter.
|
||||||
|
|
||||||
Next you'll have to fill out the body of your cover letter. Again, see
|
Next you'll have to fill out the body of your cover letter. This is an important
|
||||||
<<cover-letter,above>> for what content to include.
|
component of change submission as it explains to the community from a high level
|
||||||
|
what you're trying to do, and why, in a way that's more apparent than just
|
||||||
|
looking at your diff. Be sure to explain anything your diff doesn't make clear
|
||||||
|
on its own.
|
||||||
|
|
||||||
|
Here's an example body for `psuh`:
|
||||||
|
|
||||||
|
----
|
||||||
|
Our internal metrics indicate widespread interest in the command
|
||||||
|
git-psuh - that is, many users are trying to use it, but finding it is
|
||||||
|
unavailable, using some unknown workaround instead.
|
||||||
|
|
||||||
|
The following handful of patches add the psuh command and implement some
|
||||||
|
handy features on top of it.
|
||||||
|
|
||||||
|
This patchset is part of the MyFirstContribution tutorial and should not
|
||||||
|
be merged.
|
||||||
|
----
|
||||||
|
|
||||||
The template created by `git format-patch --cover-letter` includes a diffstat.
|
The template created by `git format-patch --cover-letter` includes a diffstat.
|
||||||
This gives reviewers a summary of what they're in for when reviewing your topic.
|
This gives reviewers a summary of what they're in for when reviewing your topic.
|
||||||
@ -1160,7 +1075,7 @@ all named like `v2-000n-my-commit-subject.patch`. `-v2` will also format
|
|||||||
your patches by prefixing them with "[PATCH v2]" instead of "[PATCH]",
|
your patches by prefixing them with "[PATCH v2]" instead of "[PATCH]",
|
||||||
and your range-diff will be prefaced with "Range-diff against v1".
|
and your range-diff will be prefaced with "Range-diff against v1".
|
||||||
|
|
||||||
After you run this command, `format-patch` will output the patches to the `psuh/`
|
Afer you run this command, `format-patch` will output the patches to the `psuh/`
|
||||||
directory, alongside the v1 patches. Using a single directory makes it easy to
|
directory, alongside the v1 patches. Using a single directory makes it easy to
|
||||||
refer to the old v1 patches while proofreading the v2 patches, but you will need
|
refer to the old v1 patches while proofreading the v2 patches, but you will need
|
||||||
to be careful to send out only the v2 patches. We will use a pattern like
|
to be careful to send out only the v2 patches. We will use a pattern like
|
||||||
|
@ -522,25 +522,24 @@ function shows that the all-object walk is being performed by
|
|||||||
`traverse_commit_list()` or `traverse_commit_list_filtered()`. Those two
|
`traverse_commit_list()` or `traverse_commit_list_filtered()`. Those two
|
||||||
functions reside in `list-objects.c`; examining the source shows that, despite
|
functions reside in `list-objects.c`; examining the source shows that, despite
|
||||||
the name, these functions traverse all kinds of objects. Let's have a look at
|
the name, these functions traverse all kinds of objects. Let's have a look at
|
||||||
the arguments to `traverse_commit_list()`.
|
the arguments to `traverse_commit_list_filtered()`, which are a superset of the
|
||||||
|
arguments to the unfiltered version.
|
||||||
|
|
||||||
- `struct rev_info *revs`: This is the `rev_info` used for the walk. If
|
- `struct list_objects_filter_options *filter_options`: This is a struct which
|
||||||
its `filter` member is not `NULL`, then `filter` contains information for
|
stores a filter-spec as outlined in `Documentation/rev-list-options.txt`.
|
||||||
how to filter the object list.
|
- `struct rev_info *revs`: This is the `rev_info` used for the walk.
|
||||||
- `show_commit_fn show_commit`: A callback which will be used to handle each
|
- `show_commit_fn show_commit`: A callback which will be used to handle each
|
||||||
individual commit object.
|
individual commit object.
|
||||||
- `show_object_fn show_object`: A callback which will be used to handle each
|
- `show_object_fn show_object`: A callback which will be used to handle each
|
||||||
non-commit object (so each blob, tree, or tag).
|
non-commit object (so each blob, tree, or tag).
|
||||||
- `void *show_data`: A context buffer which is passed in turn to `show_commit`
|
- `void *show_data`: A context buffer which is passed in turn to `show_commit`
|
||||||
and `show_object`.
|
and `show_object`.
|
||||||
|
|
||||||
In addition, `traverse_commit_list_filtered()` has an additional parameter:
|
|
||||||
|
|
||||||
- `struct oidset *omitted`: A linked-list of object IDs which the provided
|
- `struct oidset *omitted`: A linked-list of object IDs which the provided
|
||||||
filter caused to be omitted.
|
filter caused to be omitted.
|
||||||
|
|
||||||
It looks like these methods use callbacks we provide instead of needing us
|
It looks like this `traverse_commit_list_filtered()` uses callbacks we provide
|
||||||
to call it repeatedly ourselves. Cool! Let's add the callbacks first.
|
instead of needing us to call it repeatedly ourselves. Cool! Let's add the
|
||||||
|
callbacks first.
|
||||||
|
|
||||||
For the sake of this tutorial, we'll simply keep track of how many of each kind
|
For the sake of this tutorial, we'll simply keep track of how many of each kind
|
||||||
of object we find. At file scope in `builtin/walken.c` add the following
|
of object we find. At file scope in `builtin/walken.c` add the following
|
||||||
@ -713,9 +712,20 @@ help understand. In our case, that means we omit trees and blobs not directly
|
|||||||
referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only
|
referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only
|
||||||
`HEAD` in the `pending` list.)
|
`HEAD` in the `pending` list.)
|
||||||
|
|
||||||
|
First, we'll need to `#include "list-objects-filter-options.h"` and set up the
|
||||||
|
`struct list_objects_filter_options` at the top of the function.
|
||||||
|
|
||||||
|
----
|
||||||
|
static void walken_object_walk(struct rev_info *rev)
|
||||||
|
{
|
||||||
|
struct list_objects_filter_options filter_options = { 0 };
|
||||||
|
|
||||||
|
...
|
||||||
|
----
|
||||||
|
|
||||||
For now, we are not going to track the omitted objects, so we'll replace those
|
For now, we are not going to track the omitted objects, so we'll replace those
|
||||||
parameters with `NULL`. For the sake of simplicity, we'll add a simple
|
parameters with `NULL`. For the sake of simplicity, we'll add a simple
|
||||||
build-time branch to use our filter or not. Preface the line calling
|
build-time branch to use our filter or not. Replace the line calling
|
||||||
`traverse_commit_list()` with the following, which will remind us which kind of
|
`traverse_commit_list()` with the following, which will remind us which kind of
|
||||||
walk we've just performed:
|
walk we've just performed:
|
||||||
|
|
||||||
@ -723,17 +733,19 @@ walk we've just performed:
|
|||||||
if (0) {
|
if (0) {
|
||||||
/* Unfiltered: */
|
/* Unfiltered: */
|
||||||
trace_printf(_("Unfiltered object walk.\n"));
|
trace_printf(_("Unfiltered object walk.\n"));
|
||||||
|
traverse_commit_list(rev, walken_show_commit,
|
||||||
|
walken_show_object, NULL);
|
||||||
} else {
|
} else {
|
||||||
trace_printf(
|
trace_printf(
|
||||||
_("Filtered object walk with filterspec 'tree:1'.\n"));
|
_("Filtered object walk with filterspec 'tree:1'.\n"));
|
||||||
CALLOC_ARRAY(rev->filter, 1);
|
parse_list_objects_filter(&filter_options, "tree:1");
|
||||||
parse_list_objects_filter(rev->filter, "tree:1");
|
|
||||||
|
traverse_commit_list_filtered(&filter_options, rev,
|
||||||
|
walken_show_commit, walken_show_object, NULL, NULL);
|
||||||
}
|
}
|
||||||
traverse_commit_list(rev, walken_show_commit,
|
|
||||||
walken_show_object, NULL);
|
|
||||||
----
|
----
|
||||||
|
|
||||||
The `rev->filter` member is usually built directly from a command
|
`struct list_objects_filter_options` is usually built directly from a command
|
||||||
line argument, so the module provides an easy way to build one from a string.
|
line argument, so the module provides an easy way to build one from a string.
|
||||||
Even though we aren't taking user input right now, we can still build one with
|
Even though we aren't taking user input right now, we can still build one with
|
||||||
a hardcoded string using `parse_list_objects_filter()`.
|
a hardcoded string using `parse_list_objects_filter()`.
|
||||||
@ -772,7 +784,7 @@ object:
|
|||||||
----
|
----
|
||||||
...
|
...
|
||||||
|
|
||||||
traverse_commit_list_filtered(rev,
|
traverse_commit_list_filtered(&filter_options, rev,
|
||||||
walken_show_commit, walken_show_object, NULL, &omitted);
|
walken_show_commit, walken_show_object, NULL, &omitted);
|
||||||
|
|
||||||
...
|
...
|
||||||
|
86
Documentation/RelNotes/2.30.7.txt
Normal file
86
Documentation/RelNotes/2.30.7.txt
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
Git v2.30.7 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release addresses the security issues CVE-2022-41903 and
|
||||||
|
CVE-2022-23521.
|
||||||
|
|
||||||
|
|
||||||
|
Fixes since v2.30.6
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* CVE-2022-41903:
|
||||||
|
|
||||||
|
git log has the ability to display commits using an arbitrary
|
||||||
|
format with its --format specifiers. This functionality is also
|
||||||
|
exposed to git archive via the export-subst gitattribute.
|
||||||
|
|
||||||
|
When processing the padding operators (e.g., %<(, %<|(, %>(,
|
||||||
|
%>>(, or %><( ), an integer overflow can occur in
|
||||||
|
pretty.c::format_and_pad_commit() where a size_t is improperly
|
||||||
|
stored as an int, and then added as an offset to a subsequent
|
||||||
|
memcpy() call.
|
||||||
|
|
||||||
|
This overflow can be triggered directly by a user running a
|
||||||
|
command which invokes the commit formatting machinery (e.g., git
|
||||||
|
log --format=...). It may also be triggered indirectly through
|
||||||
|
git archive via the export-subst mechanism, which expands format
|
||||||
|
specifiers inside of files within the repository during a git
|
||||||
|
archive.
|
||||||
|
|
||||||
|
This integer overflow can result in arbitrary heap writes, which
|
||||||
|
may result in remote code execution.
|
||||||
|
|
||||||
|
* CVE-2022-23521:
|
||||||
|
|
||||||
|
gitattributes are a mechanism to allow defining attributes for
|
||||||
|
paths. These attributes can be defined by adding a `.gitattributes`
|
||||||
|
file to the repository, which contains a set of file patterns and
|
||||||
|
the attributes that should be set for paths matching this pattern.
|
||||||
|
|
||||||
|
When parsing gitattributes, multiple integer overflows can occur
|
||||||
|
when there is a huge number of path patterns, a huge number of
|
||||||
|
attributes for a single pattern, or when the declared attribute
|
||||||
|
names are huge.
|
||||||
|
|
||||||
|
These overflows can be triggered via a crafted `.gitattributes` file
|
||||||
|
that may be part of the commit history. Git silently splits lines
|
||||||
|
longer than 2KB when parsing gitattributes from a file, but not when
|
||||||
|
parsing them from the index. Consequentially, the failure mode
|
||||||
|
depends on whether the file exists in the working tree, the index or
|
||||||
|
both.
|
||||||
|
|
||||||
|
This integer overflow can result in arbitrary heap reads and writes,
|
||||||
|
which may result in remote code execution.
|
||||||
|
|
||||||
|
Credit for finding CVE-2022-41903 goes to Joern Schneeweisz of GitLab.
|
||||||
|
An initial fix was authored by Markus Vervier of X41 D-Sec. Credit for
|
||||||
|
finding CVE-2022-23521 goes to Markus Vervier and Eric Sesterhenn of X41
|
||||||
|
D-Sec. This work was sponsored by OSTIF.
|
||||||
|
|
||||||
|
The proposed fixes have been polished and extended to cover additional
|
||||||
|
findings by Patrick Steinhardt of GitLab, with help from others on the
|
||||||
|
Git security mailing list.
|
||||||
|
|
||||||
|
Patrick Steinhardt (21):
|
||||||
|
attr: fix overflow when upserting attribute with overly long name
|
||||||
|
attr: fix out-of-bounds read with huge attribute names
|
||||||
|
attr: fix integer overflow when parsing huge attribute names
|
||||||
|
attr: fix out-of-bounds write when parsing huge number of attributes
|
||||||
|
attr: fix out-of-bounds read with unreasonable amount of patterns
|
||||||
|
attr: fix integer overflow with more than INT_MAX macros
|
||||||
|
attr: harden allocation against integer overflows
|
||||||
|
attr: fix silently splitting up lines longer than 2048 bytes
|
||||||
|
attr: ignore attribute lines exceeding 2048 bytes
|
||||||
|
attr: ignore overly large gitattributes files
|
||||||
|
pretty: fix out-of-bounds write caused by integer overflow
|
||||||
|
pretty: fix out-of-bounds read when left-flushing with stealing
|
||||||
|
pretty: fix out-of-bounds read when parsing invalid padding format
|
||||||
|
pretty: fix adding linefeed when placeholder is not expanded
|
||||||
|
pretty: fix integer overflow in wrapping format
|
||||||
|
utf8: fix truncated string lengths in `utf8_strnwidth()`
|
||||||
|
utf8: fix returning negative string width
|
||||||
|
utf8: fix overflow when returning string width
|
||||||
|
utf8: fix checking for glyph width in `strbuf_utf8_replace()`
|
||||||
|
utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
|
||||||
|
pretty: restrict input lengths for padding and wrapping formats
|
||||||
|
|
52
Documentation/RelNotes/2.30.8.txt
Normal file
52
Documentation/RelNotes/2.30.8.txt
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
Git v2.30.8 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release addresses the security issues CVE-2023-22490 and
|
||||||
|
CVE-2023-23946.
|
||||||
|
|
||||||
|
|
||||||
|
Fixes since v2.30.7
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* CVE-2023-22490:
|
||||||
|
|
||||||
|
Using a specially-crafted repository, Git can be tricked into using
|
||||||
|
its local clone optimization even when using a non-local transport.
|
||||||
|
Though Git will abort local clones whose source $GIT_DIR/objects
|
||||||
|
directory contains symbolic links (c.f., CVE-2022-39253), the objects
|
||||||
|
directory itself may still be a symbolic link.
|
||||||
|
|
||||||
|
These two may be combined to include arbitrary files based on known
|
||||||
|
paths on the victim's filesystem within the malicious repository's
|
||||||
|
working copy, allowing for data exfiltration in a similar manner as
|
||||||
|
CVE-2022-39253.
|
||||||
|
|
||||||
|
* CVE-2023-23946:
|
||||||
|
|
||||||
|
By feeding a crafted input to "git apply", a path outside the
|
||||||
|
working tree can be overwritten as the user who is running "git
|
||||||
|
apply".
|
||||||
|
|
||||||
|
* A mismatched type in `attr.c::read_attr_from_index()` which could
|
||||||
|
cause Git to errantly reject attributes on Windows and 32-bit Linux
|
||||||
|
has been corrected.
|
||||||
|
|
||||||
|
Credit for finding CVE-2023-22490 goes to yvvdwf, and the fix was
|
||||||
|
developed by Taylor Blau, with additional help from others on the
|
||||||
|
Git security mailing list.
|
||||||
|
|
||||||
|
Credit for finding CVE-2023-23946 goes to Joern Schneeweisz, and the
|
||||||
|
fix was developed by Patrick Steinhardt.
|
||||||
|
|
||||||
|
|
||||||
|
Johannes Schindelin (1):
|
||||||
|
attr: adjust a mismatched data type
|
||||||
|
|
||||||
|
Patrick Steinhardt (1):
|
||||||
|
apply: fix writing behind newly created symbolic links
|
||||||
|
|
||||||
|
Taylor Blau (3):
|
||||||
|
t5619: demonstrate clone_local() with ambiguous transport
|
||||||
|
clone: delay picking a transport until after get_repo_path()
|
||||||
|
dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
|
||||||
|
|
43
Documentation/RelNotes/2.30.9.txt
Normal file
43
Documentation/RelNotes/2.30.9.txt
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
Git v2.30.9 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release addresses the security issues CVE-2023-25652,
|
||||||
|
CVE-2023-25815, and CVE-2023-29007.
|
||||||
|
|
||||||
|
|
||||||
|
Fixes since v2.30.8
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* CVE-2023-25652:
|
||||||
|
|
||||||
|
By feeding specially crafted input to `git apply --reject`, a
|
||||||
|
path outside the working tree can be overwritten with partially
|
||||||
|
controlled contents (corresponding to the rejected hunk(s) from
|
||||||
|
the given patch).
|
||||||
|
|
||||||
|
* CVE-2023-25815:
|
||||||
|
|
||||||
|
When Git is compiled with runtime prefix support and runs without
|
||||||
|
translated messages, it still used the gettext machinery to
|
||||||
|
display messages, which subsequently potentially looked for
|
||||||
|
translated messages in unexpected places. This allowed for
|
||||||
|
malicious placement of crafted messages.
|
||||||
|
|
||||||
|
* CVE-2023-29007:
|
||||||
|
|
||||||
|
When renaming or deleting a section from a configuration file,
|
||||||
|
certain malicious configuration values may be misinterpreted as
|
||||||
|
the beginning of a new configuration section, leading to arbitrary
|
||||||
|
configuration injection.
|
||||||
|
|
||||||
|
Credit for finding CVE-2023-25652 goes to Ry0taK, and the fix was
|
||||||
|
developed by Taylor Blau, Junio C Hamano and Johannes Schindelin,
|
||||||
|
with the help of Linus Torvalds.
|
||||||
|
|
||||||
|
Credit for finding CVE-2023-25815 goes to Maxime Escourbiac and
|
||||||
|
Yassine BENGANA of Michelin, and the fix was developed by Johannes
|
||||||
|
Schindelin.
|
||||||
|
|
||||||
|
Credit for finding CVE-2023-29007 goes to André Baptista and Vítor Pinho
|
||||||
|
of Ethiack, and the fix was developed by Taylor Blau, and Johannes
|
||||||
|
Schindelin, with help from Jeff King, and Patrick Steinhardt.
|
5
Documentation/RelNotes/2.31.6.txt
Normal file
5
Documentation/RelNotes/2.31.6.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Git v2.31.6 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.7; see
|
||||||
|
the release notes for that version for details.
|
6
Documentation/RelNotes/2.31.7.txt
Normal file
6
Documentation/RelNotes/2.31.7.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.31.7 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.8 to
|
||||||
|
address the security issues CVE-2023-22490 and CVE-2023-23946;
|
||||||
|
see the release notes for that version for details.
|
6
Documentation/RelNotes/2.31.8.txt
Normal file
6
Documentation/RelNotes/2.31.8.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.31.8 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the fixes that appear in v2.30.9 to address the
|
||||||
|
security issues CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007;
|
||||||
|
see the release notes for that version for details.
|
8
Documentation/RelNotes/2.32.5.txt
Normal file
8
Documentation/RelNotes/2.32.5.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
Git v2.32.5 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.7; see
|
||||||
|
the release notes for that version for details.
|
||||||
|
|
||||||
|
In addition, included are additional code for "git fsck" to check
|
||||||
|
for questionable .gitattributes files.
|
6
Documentation/RelNotes/2.32.6.txt
Normal file
6
Documentation/RelNotes/2.32.6.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.32.6 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.8 and v2.31.7
|
||||||
|
to address the security issues CVE-2023-22490 and CVE-2023-23946;
|
||||||
|
see the release notes for these versions for details.
|
7
Documentation/RelNotes/2.32.7.txt
Normal file
7
Documentation/RelNotes/2.32.7.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.32.7 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the fixes that appear in v2.30.9 and v2.31.8 to
|
||||||
|
address the security issues CVE-2023-25652, CVE-2023-25815, and
|
||||||
|
CVE-2023-29007; see the release notes for these versions for
|
||||||
|
details.
|
5
Documentation/RelNotes/2.33.6.txt
Normal file
5
Documentation/RelNotes/2.33.6.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Git v2.33.6 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.7; see
|
||||||
|
the release notes for that version for details.
|
7
Documentation/RelNotes/2.33.7.txt
Normal file
7
Documentation/RelNotes/2.33.7.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.33.7 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.8, v2.31.7
|
||||||
|
and v2.32.6 to address the security issues CVE-2023-22490 and
|
||||||
|
CVE-2023-23946; see the release notes for these versions for
|
||||||
|
details.
|
7
Documentation/RelNotes/2.33.8.txt
Normal file
7
Documentation/RelNotes/2.33.8.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.33.8 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the fixes that appear in v2.30.9, v2.31.8 and
|
||||||
|
v2.32.7 to address the security issues CVE-2023-25652,
|
||||||
|
CVE-2023-25815, and CVE-2023-29007; see the release notes for these
|
||||||
|
versions for details.
|
5
Documentation/RelNotes/2.34.6.txt
Normal file
5
Documentation/RelNotes/2.34.6.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Git v2.34.6 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.7; see
|
||||||
|
the release notes for that version for details.
|
7
Documentation/RelNotes/2.34.7.txt
Normal file
7
Documentation/RelNotes/2.34.7.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.34.7 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.8, v2.31.7,
|
||||||
|
v2.32.6 and v2.33.7 to address the security issues CVE-2023-22490
|
||||||
|
and CVE-2023-23946; see the release notes for these versions
|
||||||
|
for details.
|
7
Documentation/RelNotes/2.34.8.txt
Normal file
7
Documentation/RelNotes/2.34.8.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.34.8 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the fixes that appear in v2.30.9, v2.31.8,
|
||||||
|
v2.32.7 and v2.33.8 to address the security issues CVE-2023-25652,
|
||||||
|
CVE-2023-25815, and CVE-2023-29007; see the release notes for these
|
||||||
|
versions for details.
|
5
Documentation/RelNotes/2.35.6.txt
Normal file
5
Documentation/RelNotes/2.35.6.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Git v2.35.6 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.7; see
|
||||||
|
the release notes for that version for details.
|
7
Documentation/RelNotes/2.35.7.txt
Normal file
7
Documentation/RelNotes/2.35.7.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.35.7 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.8, v2.31.7,
|
||||||
|
v2.32.6, v2.33.7 and v2.34.7 to address the security issues
|
||||||
|
CVE-2023-22490 and CVE-2023-23946; see the release notes for
|
||||||
|
these versions for details.
|
7
Documentation/RelNotes/2.35.8.txt
Normal file
7
Documentation/RelNotes/2.35.8.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Git v2.35.8 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the fixes that appear in v2.30.9, v2.31.8,
|
||||||
|
v2.32.7, v2.33.8 and v2.34.8 to address the security issues
|
||||||
|
CVE-2023-25652, CVE-2023-25815, and CVE-2023-29007; see the release
|
||||||
|
notes for these versions for details.
|
@ -1,429 +0,0 @@
|
|||||||
Git 2.36 Release Notes
|
|
||||||
======================
|
|
||||||
|
|
||||||
Updates since Git 2.35
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Backward compatibility warts
|
|
||||||
|
|
||||||
* "git name-rev --stdin" has been deprecated and issues a warning
|
|
||||||
when used; use "git name-rev --annotate-stdin" instead.
|
|
||||||
|
|
||||||
* "git clone --filter=... --recurse-submodules" only makes the
|
|
||||||
top-level a partial clone, while submodules are fully cloned. This
|
|
||||||
behaviour is changed to pass the same filter down to the submodules.
|
|
||||||
|
|
||||||
* With the fixes for CVE-2022-24765 that are common with versions of
|
|
||||||
Git 2.30.4, 2.31.3, 2.32.2, 2.33.3, 2.34.3, and 2.35.3, Git has
|
|
||||||
been taught not to recognise repositories owned by other users, in
|
|
||||||
order to avoid getting affected by their config files and hooks.
|
|
||||||
You can list the path to the safe/trusted repositories that may be
|
|
||||||
owned by others on a multi-valued configuration variable
|
|
||||||
`safe.directory` to override this behaviour, or use '*' to declare
|
|
||||||
that you trust anything.
|
|
||||||
|
|
||||||
|
|
||||||
Note to those who build from the source
|
|
||||||
|
|
||||||
* Since Git 2.31, our source assumed that the compiler you use to
|
|
||||||
build Git supports variadic macros, with an easy-to-use escape
|
|
||||||
hatch to allow compilation without variadic macros with an request
|
|
||||||
to report that you had to use the escape hatch to the list.
|
|
||||||
Because we haven't heard from anybody who actually needed to use
|
|
||||||
the escape hatch, it has been removed, making support of variadic
|
|
||||||
macros a hard requirement.
|
|
||||||
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* Assorted updates to "git cat-file", especially "-h".
|
|
||||||
|
|
||||||
* The command line completion (in contrib/) learns to complete
|
|
||||||
arguments to give to "git sparse-checkout" command.
|
|
||||||
|
|
||||||
* "git log --remerge-diff" shows the difference from mechanical merge
|
|
||||||
result and the result that is actually recorded in a merge commit.
|
|
||||||
|
|
||||||
* "git log" and friends learned an option --exclude-first-parent-only
|
|
||||||
to propagate UNINTERESTING bit down only along the first-parent
|
|
||||||
chain, just like --first-parent option shows commits that lack the
|
|
||||||
UNINTERESTING bit only along the first-parent chain.
|
|
||||||
|
|
||||||
* The command line completion script (in contrib/) learned to
|
|
||||||
complete all Git subcommands, including the ones that are normally
|
|
||||||
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
|
|
||||||
|
|
||||||
* "git branch" learned the "--recurse-submodules" option.
|
|
||||||
|
|
||||||
* A user can forget to make a script file executable before giving
|
|
||||||
it to "git bisect run". In such a case, all tests will exit with
|
|
||||||
126 or 127 error codes, even on revisions that are marked as good.
|
|
||||||
Try to recognize this situation and stop iteration early.
|
|
||||||
|
|
||||||
* When "index-pack" dies due to incoming data exceeding the maximum
|
|
||||||
allowed input size, include the value of the limit in the error
|
|
||||||
message.
|
|
||||||
|
|
||||||
* The error message given by "git switch HEAD~4" has been clarified
|
|
||||||
to suggest the "--detach" option that is required.
|
|
||||||
|
|
||||||
* In sparse-checkouts, files mis-marked as missing from the working tree
|
|
||||||
could lead to later problems. Such files were hard to discover, and
|
|
||||||
harder to correct. Automatically detecting and correcting the marking
|
|
||||||
of such files has been added to avoid these problems.
|
|
||||||
|
|
||||||
* "git cat-file" learns "--batch-command" mode, which is a more
|
|
||||||
flexible interface than the existing "--batch" or "--batch-check"
|
|
||||||
modes, to allow different kinds of inquiries made.
|
|
||||||
|
|
||||||
* The level of verbose output from the ort backend during inner merge
|
|
||||||
has been aligned to that of the recursive backend.
|
|
||||||
|
|
||||||
* "git remote rename A B", depending on the number of remote-tracking
|
|
||||||
refs involved, takes long time renaming them. The command has been
|
|
||||||
taught to show progress bar while making the user wait.
|
|
||||||
|
|
||||||
* Bundle file format gets extended to allow a partial bundle,
|
|
||||||
filtered by similar criteria you would give when making a
|
|
||||||
partial/lazy clone.
|
|
||||||
|
|
||||||
* A new built-in userdiff driver for kotlin has been added.
|
|
||||||
|
|
||||||
* "git repack" learned a new configuration to disable triggering of
|
|
||||||
age-old "update-server-info" command, which is rarely useful these
|
|
||||||
days.
|
|
||||||
|
|
||||||
* "git stash" does not allow subcommands it internally runs as its
|
|
||||||
implementation detail, except for "git reset", to emit messages;
|
|
||||||
now "git reset" part has also been squelched.
|
|
||||||
|
|
||||||
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
|
|
||||||
and more generalized "--format" option.
|
|
||||||
|
|
||||||
* "git fetch --refetch" learned to fetch everything without telling
|
|
||||||
the other side what we already have, which is useful when you
|
|
||||||
cannot trust what you have in the local object store.
|
|
||||||
|
|
||||||
* "git branch" gives hint when branch tracking cannot be established
|
|
||||||
because fetch refspecs from multiple remote repositories overlap.
|
|
||||||
|
|
||||||
* "git worktree list --porcelain" did not c-quote pathnames and lock
|
|
||||||
reasons with unsafe bytes correctly, which is worked around by
|
|
||||||
introducing NUL terminated output format with "-z".
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* "git apply" (ab)used the util pointer of the string-list to keep
|
|
||||||
track of how each symbolic link needs to be handled, which has been
|
|
||||||
simplified by using strset.
|
|
||||||
|
|
||||||
* Fix a hand-rolled alloca() imitation that may have violated
|
|
||||||
alignment requirement of data being sorted in compatibility
|
|
||||||
implementation of qsort_s() and stable qsort().
|
|
||||||
|
|
||||||
* Use the parse-options API in "git reflog" command.
|
|
||||||
|
|
||||||
* The conditional inclusion mechanism of configuration files using
|
|
||||||
"[includeIf <condition>]" learns to base its decision on the
|
|
||||||
URL of the remote repository the repository interacts with.
|
|
||||||
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
|
|
||||||
|
|
||||||
* "git name-rev --stdin" does not behave like usual "--stdin" at
|
|
||||||
all. Start the process of renaming it to "--annotate-stdin".
|
|
||||||
(merge a2585719b3 jc/name-rev-stdin later to maint).
|
|
||||||
|
|
||||||
* "git update-index", "git checkout-index", and "git clean" are
|
|
||||||
taught to work better with the sparse checkout feature.
|
|
||||||
|
|
||||||
* Use an internal call to reset_head() helper function instead of
|
|
||||||
spawning "git checkout" in "rebase", and update code paths that are
|
|
||||||
involved in the change.
|
|
||||||
|
|
||||||
* Messages "ort" merge backend prepares while dealing with conflicted
|
|
||||||
paths were unnecessarily confusing since it did not differentiate
|
|
||||||
inner merges and outer merges.
|
|
||||||
|
|
||||||
* Small modernization of the rerere-train script (in contrib/).
|
|
||||||
|
|
||||||
* Use designated initializers we started using in mid 2017 in more
|
|
||||||
parts of the codebase that are relatively quiescent.
|
|
||||||
|
|
||||||
* Improve failure case behaviour of xdiff library when memory
|
|
||||||
allocation fails.
|
|
||||||
|
|
||||||
* General clean-up in reftable implementation, including
|
|
||||||
clarification of the API documentation, tightening the code to
|
|
||||||
honor documented length limit, etc.
|
|
||||||
|
|
||||||
* Remove the escape hatch we added when we introduced the weather
|
|
||||||
balloon to use variadic macros unconditionally, to make it official
|
|
||||||
that we now have a hard dependency on the feature.
|
|
||||||
|
|
||||||
* Makefile refactoring with a bit of suffixes rule stripping to
|
|
||||||
optimize the runtime overhead.
|
|
||||||
|
|
||||||
* "git stash drop" is reimplemented as an internal call to
|
|
||||||
reflog_delete() function, instead of invoking "git reflog delete"
|
|
||||||
via run_command() API.
|
|
||||||
|
|
||||||
* Count string_list items in size_t, not "unsigned int".
|
|
||||||
|
|
||||||
* The single-key interactive operation used by "git add -p" has been
|
|
||||||
made more robust.
|
|
||||||
|
|
||||||
* Remove unneeded <meta http-equiv=content-type...> from gitweb
|
|
||||||
output.
|
|
||||||
|
|
||||||
* "git name-rev" learned to use the generation numbers when setting
|
|
||||||
the lower bound of searching commits used to explain the revision,
|
|
||||||
when available, instead of committer time.
|
|
||||||
|
|
||||||
* Replace core.fsyncObjectFiles with two new configuration variables,
|
|
||||||
core.fsync and core.fsyncMethod.
|
|
||||||
|
|
||||||
* Updates to refs traditionally weren't fsync'ed, but we can
|
|
||||||
configure using core.fsync variable to do so.
|
|
||||||
|
|
||||||
* "git reflog" command now uses parse-options API to parse its
|
|
||||||
command line options.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.35
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* "rebase" and "stash" in secondary worktrees are broken in
|
|
||||||
Git 2.35.0, which has been corrected.
|
|
||||||
|
|
||||||
* "git pull --rebase" ignored the rebase.autostash configuration
|
|
||||||
variable when the remote history is a descendant of our history,
|
|
||||||
which has been corrected.
|
|
||||||
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
|
|
||||||
|
|
||||||
* "git update-index --refresh" has been taught to deal better with
|
|
||||||
racy timestamps (just like "git status" already does).
|
|
||||||
(merge 2ede073fd2 ms/update-index-racy later to maint).
|
|
||||||
|
|
||||||
* Avoid tests that are run under GIT_TRACE2 set from failing
|
|
||||||
unnecessarily.
|
|
||||||
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
|
|
||||||
|
|
||||||
* The merge-ort misbehaved when merge.renameLimit configuration is
|
|
||||||
set too low and failed to find all renames.
|
|
||||||
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
|
|
||||||
|
|
||||||
* We explain that revs come first before the pathspec among command
|
|
||||||
line arguments, but did not spell out that dashed options come
|
|
||||||
before other args, which has been corrected.
|
|
||||||
(merge c11f95010c tl/doc-cli-options-first later to maint).
|
|
||||||
|
|
||||||
* "git add -p" rewritten in C regressed hunk splitting in some cases,
|
|
||||||
which has been corrected.
|
|
||||||
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
|
|
||||||
|
|
||||||
* "git fetch --negotiate-only" is an internal command used by "git
|
|
||||||
push" to figure out which part of our history is missing from the
|
|
||||||
other side. It should never recurse into submodules even when
|
|
||||||
fetch.recursesubmodules configuration variable is set, nor it
|
|
||||||
should trigger "gc". The code has been tightened up to ensure it
|
|
||||||
only does common ancestry discovery and nothing else.
|
|
||||||
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
|
|
||||||
|
|
||||||
* The code path that verifies signatures made with ssh were made to
|
|
||||||
work better on a system with CRLF line endings.
|
|
||||||
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
|
|
||||||
|
|
||||||
* "git sparse-checkout init" failed to write into $GIT_DIR/info
|
|
||||||
directory when the repository was created without one, which has
|
|
||||||
been corrected to auto-create it.
|
|
||||||
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
|
|
||||||
|
|
||||||
* Cloning from a repository that does not yet have any branches or
|
|
||||||
tags but has other refs resulted in a "remote transport reported
|
|
||||||
error", which has been corrected.
|
|
||||||
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
|
|
||||||
|
|
||||||
* Mark in various places in the code that the sparse index and the
|
|
||||||
split index features are mutually incompatible.
|
|
||||||
(merge 451b66c533 js/sparse-vs-split-index later to maint).
|
|
||||||
|
|
||||||
* Update the logic to compute alignment requirement for our mem-pool.
|
|
||||||
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
|
|
||||||
|
|
||||||
* Pick a better random number generator and use it when we prepare
|
|
||||||
temporary filenames.
|
|
||||||
(merge 47efda967c bc/csprng-mktemps later to maint).
|
|
||||||
|
|
||||||
* Update the contributor-facing documents on proposed log messages.
|
|
||||||
(merge cdba0295b0 jc/doc-log-messages later to maint).
|
|
||||||
|
|
||||||
* When "git fetch --prune" failed to prune the refs it wanted to
|
|
||||||
prune, the command issued error messages but exited with exit
|
|
||||||
status 0, which has been corrected.
|
|
||||||
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
|
|
||||||
|
|
||||||
* Problems identified by Coverity in the reftable code have been
|
|
||||||
corrected.
|
|
||||||
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
|
|
||||||
|
|
||||||
* A bug that made multi-pack bitmap and the object order out-of-sync,
|
|
||||||
making the .midx data corrupt, has been fixed.
|
|
||||||
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
|
|
||||||
|
|
||||||
* The build procedure has been taught to notice older version of zlib
|
|
||||||
and enable our replacement uncompress2() automatically.
|
|
||||||
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
|
|
||||||
|
|
||||||
* Interaction between fetch.negotiationAlgorithm and
|
|
||||||
feature.experimental configuration variables has been corrected.
|
|
||||||
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
|
|
||||||
|
|
||||||
* "git diff --diff-filter=aR" is now parsed correctly.
|
|
||||||
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
|
|
||||||
|
|
||||||
* When "git subtree" wants to create a merge, it used "git merge" and
|
|
||||||
let it be affected by end-user's "merge.ff" configuration, which
|
|
||||||
has been corrected.
|
|
||||||
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
|
|
||||||
|
|
||||||
* Unlike "git apply", "git patch-id" did not handle patches with
|
|
||||||
hunks that has only 1 line in either preimage or postimage, which
|
|
||||||
has been corrected.
|
|
||||||
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
|
|
||||||
|
|
||||||
* "receive-pack" checks if it will do any ref updates (various
|
|
||||||
conditions could reject a push) before received objects are taken
|
|
||||||
out of the temporary directory used for quarantine purposes, so
|
|
||||||
that a push that is known-to-fail will not leave crufts that a
|
|
||||||
future "gc" needs to clean up.
|
|
||||||
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
|
|
||||||
|
|
||||||
* When there is no object to write .bitmap file for, "git
|
|
||||||
multi-pack-index" triggered an error, instead of just skipping,
|
|
||||||
which has been corrected.
|
|
||||||
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
|
|
||||||
|
|
||||||
* "git cmd -h" outside a repository should error out cleanly for many
|
|
||||||
commands, but instead it hit a BUG(), which has been corrected.
|
|
||||||
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
|
|
||||||
|
|
||||||
* "working tree" and "per-worktree ref" were in glossary, but
|
|
||||||
"worktree" itself wasn't, which has been corrected.
|
|
||||||
(merge 2df5387ed0 jc/glossary-worktree later to maint).
|
|
||||||
|
|
||||||
* L10n support for a few error messages.
|
|
||||||
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
|
|
||||||
|
|
||||||
* Test modernization.
|
|
||||||
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
|
|
||||||
|
|
||||||
* "git log --graph --graph" used to leak a graph structure, and there
|
|
||||||
was no way to countermand "--graph" that appear earlier on the
|
|
||||||
command line. A "--no-graph" option has been added and resource
|
|
||||||
leakage has been plugged.
|
|
||||||
|
|
||||||
* Error output given in response to an ambiguous object name has been
|
|
||||||
improved.
|
|
||||||
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
|
|
||||||
|
|
||||||
* "git sparse-checkout" wants to work with per-worktree configuration,
|
|
||||||
but did not work well in a worktree attached to a bare repository.
|
|
||||||
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
|
|
||||||
|
|
||||||
* Setting core.untrackedCache to true failed to add the untracked
|
|
||||||
cache extension to the index.
|
|
||||||
|
|
||||||
* Workaround we have for versions of PCRE2 before their version 10.36
|
|
||||||
were in effect only for their versions newer than 10.36 by mistake,
|
|
||||||
which has been corrected.
|
|
||||||
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
|
|
||||||
|
|
||||||
* Document Taylor as a new member of Git PLC at SFC. Welcome.
|
|
||||||
(merge e8d56ca863 tb/coc-plc-update later to maint).
|
|
||||||
|
|
||||||
* "git checkout -b branch/with/multi/level/name && git stash" only
|
|
||||||
recorded the last level component of the branch name, which has
|
|
||||||
been corrected.
|
|
||||||
|
|
||||||
* Check the return value from parse_tree_indirect() to turn segfaults
|
|
||||||
into calls to die().
|
|
||||||
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
|
|
||||||
|
|
||||||
* Newer version of GPGSM changed its output in a backward
|
|
||||||
incompatible way to break our code that parses its output. It also
|
|
||||||
added more processes our tests need to kill when cleaning up.
|
|
||||||
Adjustments have been made to accommodate these changes.
|
|
||||||
(merge b0b70d54c4 fs/gpgsm-update later to maint).
|
|
||||||
|
|
||||||
* The untracked cache newly computed weren't written back to the
|
|
||||||
on-disk index file when there is no other change to the index,
|
|
||||||
which has been corrected.
|
|
||||||
|
|
||||||
* "git config -h" did not describe the "--type" option correctly.
|
|
||||||
(merge 5445124fad mf/fix-type-in-config-h later to maint).
|
|
||||||
|
|
||||||
* The way generation number v2 in the commit-graph files are
|
|
||||||
(not) handled has been corrected.
|
|
||||||
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
|
|
||||||
|
|
||||||
* The method to trigger malloc check used in our tests no longer work
|
|
||||||
with newer versions of glibc.
|
|
||||||
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
|
|
||||||
|
|
||||||
* When "git fetch --recurse-submodules" grabbed submodule commits
|
|
||||||
that would be needed to recursively check out newly fetched commits
|
|
||||||
in the superproject, it only paid attention to submodules that are
|
|
||||||
in the current checkout of the superproject. We now do so for all
|
|
||||||
submodules that have been run "git submodule init" on.
|
|
||||||
|
|
||||||
* "git rebase $base $non_branch_commit", when $base is an ancestor or
|
|
||||||
the $non_branch_commit, modified the current branch, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* When "shallow" information is updated, we forgot to update the
|
|
||||||
in-core equivalent, which has been corrected.
|
|
||||||
|
|
||||||
* When creating a loose object file, we didn't report the exact
|
|
||||||
filename of the file we failed to fsync, even though the
|
|
||||||
information was readily available, which has been corrected.
|
|
||||||
|
|
||||||
* "git am" can read from the standard input when no mailbox is given
|
|
||||||
on the command line, but the end-user gets no indication when it
|
|
||||||
happens, making Git appear stuck.
|
|
||||||
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
|
|
||||||
|
|
||||||
* "git mv" failed to refresh the cached stat information for the
|
|
||||||
entry it moved.
|
|
||||||
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge cfc5cf428b jc/find-header later to maint).
|
|
||||||
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
|
|
||||||
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
|
|
||||||
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
|
|
||||||
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
|
|
||||||
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
|
|
||||||
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
|
|
||||||
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
|
|
||||||
(merge cbac0076ef gh/doc-typos later to maint).
|
|
||||||
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
|
|
||||||
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
|
|
||||||
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
|
|
||||||
(merge 74f3390dde sy/diff-usage-typofix later to maint).
|
|
||||||
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
|
|
||||||
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
|
|
||||||
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
|
|
||||||
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
|
|
||||||
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
|
|
||||||
(merge d17294a05e ab/hash-object-leakfix later to maint).
|
|
||||||
(merge b8403129d3 jd/t0015-modernize later to maint).
|
|
||||||
(merge 332acc248d ds/mailmap later to maint).
|
|
||||||
(merge 04bf052eef ab/grep-patterntype later to maint).
|
|
||||||
(merge 6ee36364eb ab/diff-free-more later to maint).
|
|
||||||
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
|
|
||||||
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
|
|
||||||
(merge c614beb933 ep/t6423-modernize later to maint).
|
|
||||||
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
|
|
||||||
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
|
|
||||||
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
|
|
||||||
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
|
|
@ -1,33 +0,0 @@
|
|||||||
Git v2.36.1 Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
Fixes since v2.36
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* "git submodule update" without pathspec should silently skip an
|
|
||||||
uninitialized submodule, but it started to become noisy by mistake.
|
|
||||||
|
|
||||||
* "diff-tree --stdin" has been broken for about a year, but 2.36
|
|
||||||
release broke it even worse by breaking running the command with
|
|
||||||
<pathspec>, which in turn broke "gitk" and got noticed. This has
|
|
||||||
been corrected by aligning its behaviour to that of "log".
|
|
||||||
|
|
||||||
* Regression fix for 2.36 where "git name-rev" started to sometimes
|
|
||||||
reference strings after they are freed.
|
|
||||||
|
|
||||||
* "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
|
|
||||||
when showing the second and subsequent commits, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* "git fast-export -- <pathspec>" lost the pathspec when showing the
|
|
||||||
second and subsequent commits, which has been corrected.
|
|
||||||
|
|
||||||
* "git format-patch <args> -- <pathspec>" lost the pathspec when
|
|
||||||
showing the second and subsequent commits, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Get rid of a bogus and over-eager coccinelle rule.
|
|
||||||
|
|
||||||
* Correct choices of C compilers used in various CI jobs.
|
|
||||||
|
|
||||||
Also contains minor documentation updates and code clean-ups.
|
|
@ -1,56 +0,0 @@
|
|||||||
Git v2.36.2 Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This release merges up the fixes that appear in v2.30.5, v2.31.4,
|
|
||||||
v2.32.3, v2.33.4, v2.34.4 and v2.35.4 to address the security
|
|
||||||
issue CVE-2022-29187; see the release notes for these versions
|
|
||||||
for details.
|
|
||||||
|
|
||||||
Apart from that, this maintenance release is primarily to merge down
|
|
||||||
updates to the build and CI procedures from the 'master' front, in
|
|
||||||
order to ensure that we can cut healthy maintenance releases in the
|
|
||||||
future. It also contains a handful of small and trivially-correct
|
|
||||||
bugfixes.
|
|
||||||
|
|
||||||
Fixes since v2.36.1
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
* Fixes real problems noticed by gcc 12 and works around false
|
|
||||||
positives.
|
|
||||||
|
|
||||||
* Update URL to the gitk repository.
|
|
||||||
|
|
||||||
* The "--current" option of "git show-branch" should have been made
|
|
||||||
incompatible with the "--reflog" mode, but this was not enforced,
|
|
||||||
which has been corrected.
|
|
||||||
|
|
||||||
* "git archive --add-file=<path>" picked up the raw permission bits
|
|
||||||
from the path and propagated to zip output in some cases, without
|
|
||||||
normalization, which has been corrected (tar output did not have
|
|
||||||
this issue).
|
|
||||||
|
|
||||||
* A bit of test framework fixes with a few fixes to issues found by
|
|
||||||
valgrind.
|
|
||||||
|
|
||||||
* macOS CI jobs have been occasionally flaky due to tentative version
|
|
||||||
skew between perforce and the homebrew packager. Instead of
|
|
||||||
failing the whole CI job, just let it skip the p4 tests when this
|
|
||||||
happens.
|
|
||||||
|
|
||||||
* The commit summary shown after making a commit is matched to what
|
|
||||||
is given in "git status" not to use the break-rewrite heuristics.
|
|
||||||
|
|
||||||
* Avoid problems from interaction between malloc_check and address
|
|
||||||
sanitizer.
|
|
||||||
|
|
||||||
* "git rebase --keep-base <upstream> <branch-to-rebase>" computed the
|
|
||||||
commit to rebase onto incorrectly, which has been corrected.
|
|
||||||
|
|
||||||
* The path taken by "git multi-pack-index" command from the end user
|
|
||||||
was compared with path internally prepared by the tool withut first
|
|
||||||
normalizing, which lead to duplicated paths not being noticed,
|
|
||||||
which has been corrected.
|
|
||||||
|
|
||||||
* "git clone --origin X" leaked piece of memory that held value read
|
|
||||||
from the clone.defaultRemoteName configuration variable, which has
|
|
||||||
been plugged.
|
|
@ -1,5 +0,0 @@
|
|||||||
Git v2.36.3 Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This release merges the security fix that appears in v2.30.6; see
|
|
||||||
the release notes for that version for details.
|
|
@ -1,337 +0,0 @@
|
|||||||
Git v2.37 Release Notes
|
|
||||||
=======================
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* "vimdiff[123]" mergetool drivers have been reimplemented with a
|
|
||||||
more generic layout mechanism.
|
|
||||||
|
|
||||||
* "git -v" and "git -h" are now understood as "git --version" and
|
|
||||||
"git --help".
|
|
||||||
|
|
||||||
* The temporary files fed to external diff command are now generated
|
|
||||||
inside a new temporary directory under the same basename.
|
|
||||||
|
|
||||||
* "git log --since=X" will stop traversal upon seeing a commit that
|
|
||||||
is older than X, but there may be commits behind it that is younger
|
|
||||||
than X when the commit was created with a faulty clock. A new
|
|
||||||
option is added to keep digging without stopping, and instead
|
|
||||||
filter out commits with timestamp older than X.
|
|
||||||
|
|
||||||
* "git -c branch.autosetupmerge=simple branch $A $B" will set the $B
|
|
||||||
as $A's upstream only when $A and $B shares the same name, and "git
|
|
||||||
-c push.default=simple" on branch $A would push to update the
|
|
||||||
branch $A at the remote $B came from. Also more places use the
|
|
||||||
sole remote, if exists, before defaulting to 'origin'.
|
|
||||||
|
|
||||||
* A new doc has been added that lists tips for tools to work with
|
|
||||||
Git's codebase.
|
|
||||||
|
|
||||||
* "git remote -v" now shows the list-objects-filter used during
|
|
||||||
fetching from the remote, if available.
|
|
||||||
|
|
||||||
* With the new http.curloptResolve configuration, the CURLOPT_RESOLVE
|
|
||||||
mechanism that allows cURL based applications to use pre-resolved
|
|
||||||
IP addresses for the requests is exposed to the scripts.
|
|
||||||
|
|
||||||
* "git add -i" was rewritten in C some time ago and has been in
|
|
||||||
testing; the reimplementation is now exposed to general public by
|
|
||||||
default.
|
|
||||||
|
|
||||||
* Deprecate non-cone mode of the sparse-checkout feature.
|
|
||||||
|
|
||||||
* Introduce a filesystem-dependent mechanism to optimize the way the
|
|
||||||
bits for many loose object files are ensured to hit the disk
|
|
||||||
platter.
|
|
||||||
|
|
||||||
* The "do not remove the directory the user started Git in" logic,
|
|
||||||
when Git cannot tell where that directory is, is disabled. Earlier
|
|
||||||
we refused to run in such a case.
|
|
||||||
|
|
||||||
* A mechanism to pack unreachable objects into a "cruft pack",
|
|
||||||
instead of ejecting them into loose form to be reclaimed later, has
|
|
||||||
been introduced.
|
|
||||||
|
|
||||||
* Update the doctype written in gitweb output to xhtml5.
|
|
||||||
|
|
||||||
* The "transfer.credentialsInURL" configuration variable controls what
|
|
||||||
happens when a URL with embedded login credential is used on either
|
|
||||||
"fetch" or "push". Credentials are currently only detected in
|
|
||||||
`remote.<name>.url` config, not `remote.<name>.pushurl`.
|
|
||||||
|
|
||||||
* "git revert" learns "--reference" option to use more human-readable
|
|
||||||
reference to the commit it reverts in the message template it
|
|
||||||
prepares for the user.
|
|
||||||
|
|
||||||
* Various error messages that talk about the removal of
|
|
||||||
"--preserve-merges" in "rebase" have been strengthened, and "rebase
|
|
||||||
--abort" learned to get out of a state that was left by an earlier
|
|
||||||
use of the option.
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* The performance of the "untracked cache" feature has been improved
|
|
||||||
when "--untracked-files=<mode>" and "status.showUntrackedFiles"
|
|
||||||
are combined.
|
|
||||||
|
|
||||||
* "git stash" works better with sparse index entries.
|
|
||||||
|
|
||||||
* "git show :<path>" learned to work better with the sparse-index
|
|
||||||
feature.
|
|
||||||
|
|
||||||
* Introduce and apply coccinelle rule to discourage an explicit
|
|
||||||
comparison between a pointer and NULL, and applies the clean-up to
|
|
||||||
the maintenance track.
|
|
||||||
|
|
||||||
* Preliminary code refactoring around transport and bundle code.
|
|
||||||
|
|
||||||
* "sparse-checkout" learns to work better with the sparse-index
|
|
||||||
feature.
|
|
||||||
|
|
||||||
* A workflow change for translators are being proposed. git.pot is
|
|
||||||
no longer version controlled and it is local responsibility of
|
|
||||||
translators to generate it.
|
|
||||||
|
|
||||||
* Plug the memory leaks from the trickiest API of all, the revision
|
|
||||||
walker.
|
|
||||||
|
|
||||||
* Rename .env_array member to .env in the child_process structure.
|
|
||||||
|
|
||||||
* The fsmonitor--daemon handles even more corner cases when
|
|
||||||
watching filesystem events.
|
|
||||||
|
|
||||||
* A new bug() and BUG_if_bug() API is introduced to make it easier to
|
|
||||||
uniformly log "detect multiple bugs and abort in the end" pattern.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.36
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* "git submodule update" without pathspec should silently skip an
|
|
||||||
uninitialized submodule, but it started to become noisy by mistake.
|
|
||||||
(merge 4f1ccef87c gc/submodule-update-part2 later to maint).
|
|
||||||
|
|
||||||
* "diff-tree --stdin" has been broken for about a year, but 2.36
|
|
||||||
release broke it even worse by breaking running the command with
|
|
||||||
<pathspec>, which in turn broke "gitk" and got noticed. This has
|
|
||||||
been corrected by aligning its behaviour to that of "log".
|
|
||||||
(merge f8781bfda3 jc/diff-tree-stdin-fix later to maint).
|
|
||||||
|
|
||||||
* Regression fix for 2.36 where "git name-rev" started to sometimes
|
|
||||||
reference strings after they are freed.
|
|
||||||
(merge 45a14f578e rs/name-rev-fix-free-after-use later to maint).
|
|
||||||
|
|
||||||
* "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
|
|
||||||
when showing the second and subsequent commits, which has been
|
|
||||||
corrected.
|
|
||||||
(merge 5cdb38458e jc/show-pathspec-fix later to maint).
|
|
||||||
|
|
||||||
* "git fast-export -- <pathspec>" lost the pathspec when showing the
|
|
||||||
second and subsequent commits, which has been corrected.
|
|
||||||
(merge d1c25272f5 rs/fast-export-pathspec-fix later to maint).
|
|
||||||
|
|
||||||
* "git format-patch <args> -- <pathspec>" lost the pathspec when
|
|
||||||
showing the second and subsequent commits, which has been
|
|
||||||
corrected.
|
|
||||||
(merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint).
|
|
||||||
|
|
||||||
* "git clone --origin X" leaked piece of memory that held value read
|
|
||||||
from the clone.defaultRemoteName configuration variable, which has
|
|
||||||
been plugged.
|
|
||||||
(merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint).
|
|
||||||
|
|
||||||
* Get rid of a bogus and over-eager coccinelle rule.
|
|
||||||
(merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint).
|
|
||||||
|
|
||||||
* The path taken by "git multi-pack-index" command from the end user
|
|
||||||
was compared with path internally prepared by the tool without first
|
|
||||||
normalizing, which lead to duplicated paths not being noticed,
|
|
||||||
which has been corrected.
|
|
||||||
(merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint).
|
|
||||||
|
|
||||||
* Correct choices of C compilers used in various CI jobs.
|
|
||||||
(merge 3506cae04f ab/cc-package-fixes later to maint).
|
|
||||||
|
|
||||||
* Various cleanups to "git p4".
|
|
||||||
(merge 4ff0108d9e jh/p4-various-fixups later to maint).
|
|
||||||
|
|
||||||
* The progress meter of "git blame" was showing incorrect numbers
|
|
||||||
when processing only parts of the file.
|
|
||||||
(merge e5f5d7d42e ea/progress-partial-blame later to maint).
|
|
||||||
|
|
||||||
* "git rebase --keep-base <upstream> <branch-to-rebase>" computed the
|
|
||||||
commit to rebase onto incorrectly, which has been corrected.
|
|
||||||
(merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint).
|
|
||||||
|
|
||||||
* Fix a leak of FILE * in an error codepath.
|
|
||||||
(merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint).
|
|
||||||
|
|
||||||
* Avoid problems from interaction between malloc_check and address
|
|
||||||
sanitizer.
|
|
||||||
(merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint).
|
|
||||||
|
|
||||||
* The commit summary shown after making a commit is matched to what
|
|
||||||
is given in "git status" not to use the break-rewrite heuristics.
|
|
||||||
(merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint).
|
|
||||||
|
|
||||||
* Update a few end-user facing messages around EOL conversion.
|
|
||||||
(merge c970d30c2c ah/convert-warning-message later to maint).
|
|
||||||
|
|
||||||
* Trace2 documentation updates.
|
|
||||||
(merge a6c80c313c js/trace2-doc-fixes later to maint).
|
|
||||||
|
|
||||||
* Build procedure fixup.
|
|
||||||
(merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint).
|
|
||||||
|
|
||||||
* "git pull" without "--recurse-submodules=<arg>" made
|
|
||||||
submodule.recurse take precedence over fetch.recurseSubmodules by
|
|
||||||
mistake, which has been corrected.
|
|
||||||
(merge 5819417365 gc/pull-recurse-submodules later to maint).
|
|
||||||
|
|
||||||
* "git bisect" was too silent before it is ready to start computing
|
|
||||||
the actual bisection, which has been corrected.
|
|
||||||
(merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint).
|
|
||||||
|
|
||||||
* macOS CI jobs have been occasionally flaky due to tentative version
|
|
||||||
skew between perforce and the homebrew packager. Instead of
|
|
||||||
failing the whole CI job, just let it skip the p4 tests when this
|
|
||||||
happens.
|
|
||||||
(merge f15e00b463 cb/ci-make-p4-optional later to maint).
|
|
||||||
|
|
||||||
* A bit of test framework fixes with a few fixes to issues found by
|
|
||||||
valgrind.
|
|
||||||
(merge 7c898554d7 ab/valgrind-fixes later to maint).
|
|
||||||
|
|
||||||
* "git archive --add-file=<path>" picked up the raw permission bits
|
|
||||||
from the path and propagated to zip output in some cases, without
|
|
||||||
normalization, which has been corrected (tar output did not have
|
|
||||||
this issue).
|
|
||||||
(merge 6a61661967 jc/archive-add-file-normalize-mode later to maint).
|
|
||||||
|
|
||||||
* "make coverage-report" without first running "make coverage" did
|
|
||||||
not produce any meaningful result, which has been corrected.
|
|
||||||
(merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint).
|
|
||||||
|
|
||||||
* The "--current" option of "git show-branch" should have been made
|
|
||||||
incompatible with the "--reflog" mode, but this was not enforced,
|
|
||||||
which has been corrected.
|
|
||||||
(merge 41c64ae0e7 jc/show-branch-g-current later to maint).
|
|
||||||
|
|
||||||
* "git fetch" unnecessarily failed when an unexpected optional
|
|
||||||
section appeared in the output, which has been corrected.
|
|
||||||
(merge 7709acf7be jt/fetch-peek-optional-section later to maint).
|
|
||||||
|
|
||||||
* The way "git fetch" without "--update-head-ok" ensures that HEAD in
|
|
||||||
no worktree points at any ref being updated was too wasteful, which
|
|
||||||
has been optimized a bit.
|
|
||||||
(merge f7400da800 os/fetch-check-not-current-branch later to maint).
|
|
||||||
|
|
||||||
* "git fetch --recurse-submodules" from multiple remotes (either from
|
|
||||||
a remote group, or "--all") used to make one extra "git fetch" in
|
|
||||||
the submodules, which has been corrected.
|
|
||||||
(merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint).
|
|
||||||
|
|
||||||
* With a recent update to refuse access to repositories of other
|
|
||||||
people by default, "sudo make install" and "sudo git describe"
|
|
||||||
stopped working, which has been corrected.
|
|
||||||
(merge 6b11e3d52e cb/path-owner-check-with-sudo-plus later to maint).
|
|
||||||
|
|
||||||
* The tests that ensured merges stop when interfering local changes
|
|
||||||
are present did not make sure that local changes are preserved; now
|
|
||||||
they do.
|
|
||||||
(merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint).
|
|
||||||
|
|
||||||
* Some real problems noticed by gcc 12 have been fixed, while false
|
|
||||||
positives have been worked around.
|
|
||||||
|
|
||||||
* Update the version of FreeBSD image used in Cirrus CI.
|
|
||||||
(merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint).
|
|
||||||
|
|
||||||
* The multi-pack-index code did not protect the packfile it is going
|
|
||||||
to depend on from getting removed while in use, which has been
|
|
||||||
corrected.
|
|
||||||
(merge 4090511e40 tb/midx-race-in-pack-objects later to maint).
|
|
||||||
|
|
||||||
* Teach "git repack --geometric" work better with "--keep-pack" and
|
|
||||||
avoid corrupting the repository when packsize limit is used.
|
|
||||||
(merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint).
|
|
||||||
|
|
||||||
* The documentation on the interaction between "--add-file" and
|
|
||||||
"--prefix" options of "git archive" has been improved.
|
|
||||||
(merge a75910602a rs/document-archive-prefix later to maint).
|
|
||||||
|
|
||||||
* A git subcommand like "git add -p" spawns a separate git process
|
|
||||||
while relaying its command line arguments. A pathspec with only
|
|
||||||
negative elements was mistakenly passed with an empty string, which
|
|
||||||
has been corrected.
|
|
||||||
(merge b02fdbc80a jc/all-negative-pathspec later to maint).
|
|
||||||
|
|
||||||
* With a more targeted workaround in http.c in another topic, we may
|
|
||||||
be able to lift this blanket "GCC12 dangling-pointer warning is
|
|
||||||
broken and unsalvageable" workaround.
|
|
||||||
(merge 419141e495 cb/buggy-gcc-12-workaround later to maint).
|
|
||||||
|
|
||||||
* A misconfigured 'branch..remote' led to a bug in configuration
|
|
||||||
parsing.
|
|
||||||
(merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint).
|
|
||||||
|
|
||||||
* "git -c diff.submodule=log range-diff" did not show anything for
|
|
||||||
submodules that changed in the ranges being compared, and
|
|
||||||
"git -c diff.submodule=diff range-diff" did not work correctly.
|
|
||||||
Fix this by including the "--submodule=short" output
|
|
||||||
unconditionally to be compared.
|
|
||||||
|
|
||||||
* In Git 2.36 we revamped the way how hooks are invoked. One change
|
|
||||||
that is end-user visible is that the output of a hook is no longer
|
|
||||||
directly connected to the standard output of "git" that spawns the
|
|
||||||
hook, which was noticed post release. This is getting corrected.
|
|
||||||
(merge a082345372 ab/hooks-regression-fix later to maint).
|
|
||||||
|
|
||||||
* Updating the graft information invalidates the list of parents of
|
|
||||||
in-core commit objects that used to be in the graft file.
|
|
||||||
|
|
||||||
* "git show-ref --heads" (and "--tags") still iterated over all the
|
|
||||||
refs only to discard refs outside the specified area, which has
|
|
||||||
been corrected.
|
|
||||||
(merge c0c9d35e27 tb/show-ref-optim later to maint).
|
|
||||||
|
|
||||||
* Remove redundant copying (with index v3 and older) or possible
|
|
||||||
over-reading beyond end of mmapped memory (with index v4) has been
|
|
||||||
corrected.
|
|
||||||
(merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint).
|
|
||||||
|
|
||||||
* Sample watchman interface hook sometimes failed to produce
|
|
||||||
correctly formatted JSON message, which has been corrected.
|
|
||||||
(merge 134047b500 sn/fsmonitor-missing-clock later to maint).
|
|
||||||
|
|
||||||
* Use-after-free (with another forget-to-free) fix.
|
|
||||||
(merge 323822c72b ab/remote-free-fix later to maint).
|
|
||||||
|
|
||||||
* Remove a coccinelle rule that is no longer relevant.
|
|
||||||
(merge b1299de4a1 jc/cocci-cleanup later to maint).
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge e6b2582da3 cm/reftable-0-length-memset later to maint).
|
|
||||||
(merge 0b75e5bf22 ab/misc-cleanup later to maint).
|
|
||||||
(merge 52e1ab8a76 ea/rebase-code-simplify later to maint).
|
|
||||||
(merge 756d15923b sg/safe-directory-tests-and-docs later to maint).
|
|
||||||
(merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint).
|
|
||||||
(merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint).
|
|
||||||
(merge 1da312742d gf/unused-includes later to maint).
|
|
||||||
(merge 465b30a92d pb/submodule-recurse-mode-enum later to maint).
|
|
||||||
(merge 82b28c4ed8 km/t3501-use-test-helpers later to maint).
|
|
||||||
(merge 72315e431b sa/t1011-use-helpers later to maint).
|
|
||||||
(merge 95b3002201 cg/vscode-with-gdb later to maint).
|
|
||||||
(merge fbe5f6b804 tk/p4-utf8-bom later to maint).
|
|
||||||
(merge 17f273ffba tk/p4-with-explicity-sync later to maint).
|
|
||||||
(merge 944db25c60 kf/p4-multiple-remotes later to maint).
|
|
||||||
(merge b014cee8de jc/update-ozlabs-url later to maint).
|
|
||||||
(merge 4ec5008062 pb/ggg-in-mfc-doc later to maint).
|
|
||||||
(merge af845a604d tb/receive-pack-code-cleanup later to maint).
|
|
||||||
(merge 2acf4cf001 js/ci-gcc-12-fixes later to maint).
|
|
||||||
(merge 05e280c0a6 jc/http-clear-finished-pointer later to maint).
|
|
||||||
(merge 8c49d704ef fh/transport-push-leakfix later to maint).
|
|
||||||
(merge 1d232d38bd tl/ls-tree-oid-only later to maint).
|
|
||||||
(merge db7961e6a6 gc/document-config-worktree-scope later to maint).
|
|
||||||
(merge ce18a30bb7 fs/ssh-default-key-command-doc later to maint).
|
|
@ -1,17 +0,0 @@
|
|||||||
Git 2.37.1 Release Notes
|
|
||||||
========================
|
|
||||||
|
|
||||||
This release merges up the fixes that appear in v2.30.5, v2.31.4,
|
|
||||||
v2.32.3, v2.33.4, v2.34.4, v2.35.4, and v2.36.2 to address the
|
|
||||||
security issue CVE-2022-29187; see the release notes for these
|
|
||||||
versions for details.
|
|
||||||
|
|
||||||
Fixes since Git 2.37
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
|
|
||||||
correctly record a removed file to the index, which is an old
|
|
||||||
regression but has become widely known because the C version has
|
|
||||||
become the default in the latest release.
|
|
||||||
|
|
||||||
* Fix for CVS-2022-29187.
|
|
@ -1,88 +0,0 @@
|
|||||||
Git 2.37.2 Release Notes
|
|
||||||
========================
|
|
||||||
|
|
||||||
This primarily is to backport various fixes accumulated on the 'master'
|
|
||||||
front since 2.37.1.
|
|
||||||
|
|
||||||
Fixes since v2.37.1
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
* "git shortlog -n" relied on the underlying qsort() to be stable,
|
|
||||||
which shouldn't have. Fixed.
|
|
||||||
|
|
||||||
* Variable quoting fix in the vimdiff driver of "git mergetool".
|
|
||||||
|
|
||||||
* An earlier attempt to plug leaks placed a clean-up label to jump to
|
|
||||||
at a bogus place, which as been corrected.
|
|
||||||
|
|
||||||
* Fixes a long-standing corner case bug around directory renames in
|
|
||||||
the merge-ort strategy.
|
|
||||||
|
|
||||||
* Recent update to vimdiff layout code has been made more robust
|
|
||||||
against different end-user vim settings.
|
|
||||||
|
|
||||||
* In a non-bare repository, the behavior of Git when the
|
|
||||||
core.worktree configuration variable points at a directory that has
|
|
||||||
a repository as its subdirectory, regressed in Git 2.27 days.
|
|
||||||
|
|
||||||
* References to commands-to-be-typed-literally in "git rebase"
|
|
||||||
documentation mark-up have been corrected.
|
|
||||||
|
|
||||||
* Give _() markings to fatal/warning/usage: labels that are shown in
|
|
||||||
front of these messages.
|
|
||||||
|
|
||||||
* "git mktree --missing" lazily fetched objects that are missing from
|
|
||||||
the local object store, which was totally unnecessary for the purpose
|
|
||||||
of creating the tree object(s) from its input.
|
|
||||||
|
|
||||||
* Fixes for tests when the source directory has unusual characters in
|
|
||||||
its path, e.g. whitespaces, double-quotes, etc.
|
|
||||||
|
|
||||||
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
|
|
||||||
add some missing information to the documentation.
|
|
||||||
|
|
||||||
* Certain diff options are currently ignored when combined-diff is
|
|
||||||
shown; mark them as incompatible with the feature.
|
|
||||||
|
|
||||||
* "git clone" from a repository with some ref whose HEAD is unborn
|
|
||||||
did not set the HEAD in the resulting repository correctly, which
|
|
||||||
has been corrected.
|
|
||||||
|
|
||||||
* mkstemp() emulation on Windows has been improved.
|
|
||||||
|
|
||||||
* Add missing documentation for "include" and "includeIf" features in
|
|
||||||
"git config" file format, which incidentally teaches the command
|
|
||||||
line completion to include them in its offerings.
|
|
||||||
|
|
||||||
* Avoid "white/black-list" in documentation and code comments.
|
|
||||||
|
|
||||||
* Workaround for a compiler warning against use of die() in
|
|
||||||
osx-keychain (in contrib/).
|
|
||||||
|
|
||||||
* Workaround for a false positive compiler warning.
|
|
||||||
|
|
||||||
* The resolve-undo information in the index was not protected against
|
|
||||||
GC, which has been corrected.
|
|
||||||
|
|
||||||
* A corner case bug where lazily fetching objects from a promisor
|
|
||||||
remote resulted in infinite recursion has been corrected.
|
|
||||||
|
|
||||||
* "git p4" working on UTF-16 files on Windows did not implement
|
|
||||||
CRLF-to-LF conversion correctly, which has been corrected.
|
|
||||||
|
|
||||||
* "git p4" did not handle non-ASCII client name well, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
|
|
||||||
while recreating the throw-away merges.
|
|
||||||
|
|
||||||
* "git checkout" miscounted the paths it updated, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Fix for a bug that makes write-tree to fail to write out a
|
|
||||||
non-existent index as a tree, introduced in 2.37.
|
|
||||||
|
|
||||||
* There was a bug in the codepath to upgrade generation information
|
|
||||||
in commit-graph from v1 to v2 format, which has been corrected.
|
|
||||||
|
|
||||||
Also contains minor documentation updates and code clean-ups.
|
|
@ -1,46 +0,0 @@
|
|||||||
Git 2.37.3 Release Notes
|
|
||||||
========================
|
|
||||||
|
|
||||||
This primarily is to backport various fixes accumulated on the 'master'
|
|
||||||
front since 2.37.2.
|
|
||||||
|
|
||||||
Fixes since v2.37.2
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
* The build procedure for Windows that uses CMake has been updated to
|
|
||||||
pick up the shell interpreter from local installation location.
|
|
||||||
|
|
||||||
* Conditionally allow building Python interpreter on Windows
|
|
||||||
|
|
||||||
* Fix to lstat() emulation on Windows.
|
|
||||||
|
|
||||||
* Older gcc with -Wall complains about the universal zero initializer
|
|
||||||
"struct s = { 0 };" idiom, which makes developers' lives
|
|
||||||
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
|
|
||||||
build procedure has been tweaked to help these compilers.
|
|
||||||
|
|
||||||
* Plug memory leaks in the failure code path in the "merge-ort" merge
|
|
||||||
strategy backend.
|
|
||||||
|
|
||||||
* Avoid repeatedly running getconf to ask libc version in the test
|
|
||||||
suite, and instead just as it once per script.
|
|
||||||
|
|
||||||
* Platform-specific code that determines if a directory is OK to use
|
|
||||||
as a repository has been taught to report more details, especially
|
|
||||||
on Windows.
|
|
||||||
|
|
||||||
* "vimdiff3" regression has been corrected.
|
|
||||||
|
|
||||||
* "git fsck" reads mode from tree objects but canonicalizes the mode
|
|
||||||
before passing it to the logic to check object sanity, which has
|
|
||||||
hid broken tree objects from the checking logic. This has been
|
|
||||||
corrected, but to help exiting projects with broken tree objects
|
|
||||||
that they cannot fix retroactively, the severity of anomalies this
|
|
||||||
code detects has been demoted to "info" for now.
|
|
||||||
|
|
||||||
* Fixes to sparse index compatibility work for "reset" and "checkout"
|
|
||||||
commands.
|
|
||||||
|
|
||||||
* Documentation for "git add --renormalize" has been improved.
|
|
||||||
|
|
||||||
Also contains other minor documentation updates and code clean-ups.
|
|
@ -1,65 +0,0 @@
|
|||||||
Git 2.37.4 Release Notes
|
|
||||||
========================
|
|
||||||
|
|
||||||
This primarily is to backport various fixes accumulated on the 'master'
|
|
||||||
front since 2.37.3, and also includes the same security fixes as in
|
|
||||||
v2.30.6.
|
|
||||||
|
|
||||||
Fixes since v2.37.3
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
* CVE-2022-39253:
|
|
||||||
When relying on the `--local` clone optimization, Git dereferences
|
|
||||||
symbolic links in the source repository before creating hardlinks
|
|
||||||
(or copies) of the dereferenced link in the destination repository.
|
|
||||||
This can lead to surprising behavior where arbitrary files are
|
|
||||||
present in a repository's `$GIT_DIR` when cloning from a malicious
|
|
||||||
repository.
|
|
||||||
|
|
||||||
Git will no longer dereference symbolic links via the `--local`
|
|
||||||
clone mechanism, and will instead refuse to clone repositories that
|
|
||||||
have symbolic links present in the `$GIT_DIR/objects` directory.
|
|
||||||
|
|
||||||
Additionally, the value of `protocol.file.allow` is changed to be
|
|
||||||
"user" by default.
|
|
||||||
|
|
||||||
Credit for finding CVE-2022-39253 goes to Cory Snider of Mirantis.
|
|
||||||
The fix was authored by Taylor Blau, with help from Johannes
|
|
||||||
Schindelin.
|
|
||||||
|
|
||||||
* CVE-2022-39260:
|
|
||||||
An overly-long command string given to `git shell` can result in
|
|
||||||
overflow in `split_cmdline()`, leading to arbitrary heap writes and
|
|
||||||
remote code execution when `git shell` is exposed and the directory
|
|
||||||
`$HOME/git-shell-commands` exists.
|
|
||||||
|
|
||||||
`git shell` is taught to refuse interactive commands that are
|
|
||||||
longer than 4MiB in size. `split_cmdline()` is hardened to reject
|
|
||||||
inputs larger than 2GiB.
|
|
||||||
|
|
||||||
Credit for finding CVE-2022-39260 goes to Kevin Backhouse of
|
|
||||||
GitHub. The fix was authored by Kevin Backhouse, Jeff King, and
|
|
||||||
Taylor Blau.
|
|
||||||
|
|
||||||
* An earlier optimization discarded a tree-object buffer that is
|
|
||||||
still in use, which has been corrected.
|
|
||||||
|
|
||||||
* Fix deadlocks between main Git process and subprocess spawned via
|
|
||||||
the pipe_command() API, that can kill "git add -p" that was
|
|
||||||
reimplemented in C recently.
|
|
||||||
|
|
||||||
* xcalloc(), imitating calloc(), takes "number of elements of the
|
|
||||||
array", and "size of a single element", in this order. A call that
|
|
||||||
does not follow this ordering has been corrected.
|
|
||||||
|
|
||||||
* The preload-index codepath made copies of pathspec to give to
|
|
||||||
multiple threads, which were left leaked.
|
|
||||||
|
|
||||||
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
|
|
||||||
to 22.04.
|
|
||||||
|
|
||||||
* The auto-stashed local changes created by "git merge --autostash"
|
|
||||||
was mixed into a conflicted state left in the working tree, which
|
|
||||||
has been corrected.
|
|
||||||
|
|
||||||
Also contains other minor documentation updates and code clean-ups.
|
|
@ -1,404 +0,0 @@
|
|||||||
Git v2.38 Release Notes
|
|
||||||
=======================
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* "git remote show [-n] frotz" now pays attention to negative
|
|
||||||
pathspec.
|
|
||||||
|
|
||||||
* "git push" sometimes performs poorly when reachability bitmaps are
|
|
||||||
used, even in a repository where other operations are helped by
|
|
||||||
bitmaps. The push.useBitmaps configuration variable is introduced
|
|
||||||
to allow disabling use of reachability bitmaps only for "git push".
|
|
||||||
|
|
||||||
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
|
|
||||||
|
|
||||||
* "git merge-tree" learned a new mode where it takes two commits and
|
|
||||||
computes a tree that would result in the merge commit, if the
|
|
||||||
histories leading to these two commits were to be merged.
|
|
||||||
|
|
||||||
* "git mv A B" in a sparsely populated working tree can be asked to
|
|
||||||
move a path between directories that are "in cone" (i.e. expected
|
|
||||||
to be materialized in the working tree) and "out of cone"
|
|
||||||
(i.e. expected to be hidden). The handling of such cases has been
|
|
||||||
improved.
|
|
||||||
|
|
||||||
* Earlier, HTTP transport clients learned to tell the server side
|
|
||||||
what locale they are in by sending Accept-Language HTTP header, but
|
|
||||||
this was done only for some requests but not others.
|
|
||||||
|
|
||||||
* Introduce a safe.barerepository configuration variable that
|
|
||||||
allows users to forbid discovery of bare repositories.
|
|
||||||
|
|
||||||
* Various messages that come from the pack-bitmap codepaths have been
|
|
||||||
tweaked.
|
|
||||||
|
|
||||||
* "git rebase -i" learns to update branches whose tip appear in the
|
|
||||||
rebased range with "--update-refs" option.
|
|
||||||
|
|
||||||
* "git ls-files" learns the "--format" option to tweak its output.
|
|
||||||
|
|
||||||
* "git cat-file" learned an option to use the mailmap when showing
|
|
||||||
commit and tag objects.
|
|
||||||
|
|
||||||
* When "git merge" finds that it cannot perform a merge, it should
|
|
||||||
restore the working tree to the state before the command was
|
|
||||||
initiated, but in some corner cases it didn't.
|
|
||||||
|
|
||||||
* Operating modes like "--batch" of "git cat-file" command learned to
|
|
||||||
take NUL-terminated input, instead of one-item-per-line.
|
|
||||||
|
|
||||||
* "git rm" has become more aware of the sparse-index feature.
|
|
||||||
|
|
||||||
* "git rev-list --disk-usage" learned to take an optional value
|
|
||||||
"human" to show the reported value in human-readable format, like
|
|
||||||
"3.40MiB".
|
|
||||||
|
|
||||||
* The "diagnose" feature to create a zip archive for diagnostic
|
|
||||||
material has been lifted from "scalar" and made into a feature of
|
|
||||||
"git bugreport".
|
|
||||||
|
|
||||||
* The namespaces used by "log --decorate" from "refs/" hierarchy by
|
|
||||||
default has been tightened.
|
|
||||||
|
|
||||||
* "git rev-list --ancestry-path=C A..B" is a natural extension of
|
|
||||||
"git rev-list A..B"; instead of choosing a subset of A..B to those
|
|
||||||
that have ancestry relationship with A, it lets a subset with
|
|
||||||
ancestry relationship with C.
|
|
||||||
|
|
||||||
* "scalar" now enables built-in fsmonitor on enlisted repositories,
|
|
||||||
when able.
|
|
||||||
|
|
||||||
* The bash prompt (in contrib/) learned to optionally indicate when
|
|
||||||
the index is unmerged.
|
|
||||||
|
|
||||||
* "git clone" command learned the "--bundle-uri" option to coordinate
|
|
||||||
with hosting sites the use of pre-prepared bundle files.
|
|
||||||
|
|
||||||
* "git range-diff" learned to honor pathspec argument if given.
|
|
||||||
|
|
||||||
* "git format-patch --from=<ident>" can be told to add an in-body
|
|
||||||
"From:" line even for commits that are authored by the given
|
|
||||||
<ident> with "--force-in-body-from" option.
|
|
||||||
|
|
||||||
* The built-in fsmonitor refuses to work on a network mounted
|
|
||||||
repositories; a configuration knob for users to override this has
|
|
||||||
been introduced.
|
|
||||||
|
|
||||||
* The "scalar" addition from Microsoft is now part of the core Git
|
|
||||||
installation.
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* Collection of what is referenced by objects in promisor packs have
|
|
||||||
been optimized to inspect these objects in the in-pack order.
|
|
||||||
|
|
||||||
* Introduce a helper to see if a branch is already being worked on
|
|
||||||
(hence should not be newly checked out in a working tree), which
|
|
||||||
performs much better than the existing find_shared_symref() to
|
|
||||||
replace many uses of the latter.
|
|
||||||
|
|
||||||
* Teach "git archive" to (optionally and then by default) avoid
|
|
||||||
spawning an external "gzip" process when creating ".tar.gz" (and
|
|
||||||
".tgz") archives.
|
|
||||||
|
|
||||||
* Allow large objects read from a packstream to be streamed into a
|
|
||||||
loose object file straight, without having to keep it in-core as a
|
|
||||||
whole.
|
|
||||||
|
|
||||||
* Further preparation to turn git-submodule.sh into a builtin
|
|
||||||
continues.
|
|
||||||
|
|
||||||
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
|
|
||||||
macro, which would improve maintainability and readability.
|
|
||||||
|
|
||||||
* Teach "make all" to build gitweb as well.
|
|
||||||
|
|
||||||
* Tweak tests so that they still work when the "git init" template
|
|
||||||
did not create .git/info directory.
|
|
||||||
|
|
||||||
* Add Coccinelle rules to detect the pattern of initializing and then
|
|
||||||
finalizing a structure without using it in between at all, which
|
|
||||||
happens after code restructuring and the compilers fail to
|
|
||||||
recognize as an unused variable.
|
|
||||||
|
|
||||||
* The code to convert between GPG trust level strings and internal
|
|
||||||
constants we use to represent them have been cleaned up.
|
|
||||||
|
|
||||||
* Support for libnettle as SHA256 implementation has been added.
|
|
||||||
|
|
||||||
* The way "git multi-pack" uses parse-options API has been improved.
|
|
||||||
|
|
||||||
* A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
|
|
||||||
macro has been improved.
|
|
||||||
|
|
||||||
* API tweak to make it easier to run fuzz testing on commit-graph parser.
|
|
||||||
|
|
||||||
* Omit fsync-related trace2 entries when their values are all zero.
|
|
||||||
|
|
||||||
* The codepath to write multi-pack index has been taught to release a
|
|
||||||
large chunk of memory that holds an array of objects in the packs,
|
|
||||||
as soon as it is done with the array, to reduce memory consumption.
|
|
||||||
|
|
||||||
* Add a level of redirection to array allocation API in xdiff part,
|
|
||||||
to make it easier to share with the libgit2 project.
|
|
||||||
|
|
||||||
* "git fetch" client logs the partial clone filter used in the trace2
|
|
||||||
output.
|
|
||||||
|
|
||||||
* The "bundle URI" design gets documented.
|
|
||||||
|
|
||||||
* The common ancestor negotiation exchange during a "git fetch"
|
|
||||||
session now leaves trace log.
|
|
||||||
|
|
||||||
* Test portability improvements.
|
|
||||||
(merge 4d1d843be7 mt/rot13-in-c later to maint).
|
|
||||||
|
|
||||||
* The "subcommand" mode is introduced to parse-options API and update
|
|
||||||
the command line parser of Git commands with subcommands.
|
|
||||||
|
|
||||||
* The pack bitmap file gained a bitmap-lookup table to speed up
|
|
||||||
locating the necessary bitmap for a given commit.
|
|
||||||
|
|
||||||
* The assembly version of SHA-1 implementation for PPC has been
|
|
||||||
removed.
|
|
||||||
|
|
||||||
* The server side that responds to "git fetch" and "git clone"
|
|
||||||
request has been optimized by allowing it to send objects in its
|
|
||||||
object store without recomputing and validating the object names.
|
|
||||||
|
|
||||||
* Annotate function parameters that are not used (but cannot be
|
|
||||||
removed for structural reasons), to prepare us to later compile
|
|
||||||
with -Wunused warning turned on.
|
|
||||||
|
|
||||||
* Share the text used to explain configuration variables used by "git
|
|
||||||
<subcmd>" in "git help <subcmd>" with the text from "git help config".
|
|
||||||
|
|
||||||
* "git mv A B" in a sparsely populated working tree can be asked to
|
|
||||||
move a path from a directory that is "in cone" to another directory
|
|
||||||
that is "out of cone". Handling of such a case has been improved.
|
|
||||||
|
|
||||||
* The chainlint script for our tests has been revamped.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.37
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
|
|
||||||
correctly record a removed file to the index, which was fixed.
|
|
||||||
|
|
||||||
* Certain diff options are currently ignored when combined-diff is
|
|
||||||
shown; mark them as incompatible with the feature.
|
|
||||||
|
|
||||||
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
|
|
||||||
add some missing information to the documentation.
|
|
||||||
|
|
||||||
* Fixes for tests when the source directory has unusual characters in
|
|
||||||
its path, e.g. whitespaces, double-quotes, etc.
|
|
||||||
|
|
||||||
* "git mktree --missing" lazily fetched objects that are missing from
|
|
||||||
the local object store, which was totally unnecessary for the purpose
|
|
||||||
of creating the tree object(s) from its input.
|
|
||||||
|
|
||||||
* Give _() markings to fatal/warning/usage: labels that are shown in
|
|
||||||
front of these messages.
|
|
||||||
|
|
||||||
* References to commands-to-be-typed-literally in "git rebase"
|
|
||||||
documentation mark-up have been corrected.
|
|
||||||
|
|
||||||
* In a non-bare repository, the behavior of Git when the
|
|
||||||
core.worktree configuration variable points at a directory that has
|
|
||||||
a repository as its subdirectory, regressed in Git 2.27 days.
|
|
||||||
|
|
||||||
* Recent update to vimdiff layout code has been made more robust
|
|
||||||
against different end-user vim settings.
|
|
||||||
|
|
||||||
* Plug various memory leaks, both in the main code and in test-tool
|
|
||||||
commands.
|
|
||||||
|
|
||||||
* Fixes a long-standing corner case bug around directory renames in
|
|
||||||
the merge-ort strategy.
|
|
||||||
|
|
||||||
* The resolve-undo information in the index was not protected against
|
|
||||||
GC, which has been corrected.
|
|
||||||
|
|
||||||
* A corner case bug where lazily fetching objects from a promisor
|
|
||||||
remote resulted in infinite recursion has been corrected.
|
|
||||||
|
|
||||||
* "git clone" from a repository with some ref whose HEAD is unborn
|
|
||||||
did not set the HEAD in the resulting repository correctly, which
|
|
||||||
has been corrected.
|
|
||||||
|
|
||||||
* An earlier attempt to plug leaks placed a clean-up label to jump to
|
|
||||||
at a bogus place, which as been corrected.
|
|
||||||
|
|
||||||
* Variable quoting fix in the vimdiff driver of "git mergetool"
|
|
||||||
|
|
||||||
* "git shortlog -n" relied on the underlying qsort() to be stable,
|
|
||||||
which shouldn't have. Fixed.
|
|
||||||
|
|
||||||
* A fix for a regression in test framework.
|
|
||||||
|
|
||||||
* mkstemp() emulation on Windows has been improved.
|
|
||||||
|
|
||||||
* Add missing documentation for "include" and "includeIf" features in
|
|
||||||
"git config" file format, which incidentally teaches the command
|
|
||||||
line completion to include them in its offerings.
|
|
||||||
|
|
||||||
* Avoid "white/black-list" in documentation and code comments.
|
|
||||||
|
|
||||||
* Workaround for a compiler warning against use of die() in
|
|
||||||
osx-keychain (in contrib/).
|
|
||||||
|
|
||||||
* Workaround for a false positive compiler warning.
|
|
||||||
|
|
||||||
* "git p4" working on UTF-16 files on Windows did not implement
|
|
||||||
CRLF-to-LF conversion correctly, which has been corrected.
|
|
||||||
|
|
||||||
* "git p4" did not handle non-ASCII client name well, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
|
|
||||||
while recreating the throw-away merges.
|
|
||||||
|
|
||||||
* "git checkout" miscounted the paths it updated, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Fix for a bug that makes write-tree to fail to write out a
|
|
||||||
non-existent index as a tree, introduced in 2.37.
|
|
||||||
|
|
||||||
* There was a bug in the codepath to upgrade generation information
|
|
||||||
in commit-graph from v1 to v2 format, which has been corrected.
|
|
||||||
|
|
||||||
* Gitweb had legacy URL shortener that is specific to the way
|
|
||||||
projects hosted on kernel.org used to (but no longer) work, which
|
|
||||||
has been removed.
|
|
||||||
|
|
||||||
* Fix build procedure for Windows that uses CMake so that it can pick
|
|
||||||
up the shell interpreter from local installation location.
|
|
||||||
|
|
||||||
* Conditionally allow building Python interpreter on Windows
|
|
||||||
|
|
||||||
* Fix to lstat() emulation on Windows.
|
|
||||||
|
|
||||||
* Older gcc with -Wall complains about the universal zero initializer
|
|
||||||
"struct s = { 0 };" idiom, which makes developers' lives
|
|
||||||
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
|
|
||||||
build procedure has been tweaked to help these compilers.
|
|
||||||
|
|
||||||
* Plug memory leaks in the failure code path in the "merge-ort" merge
|
|
||||||
strategy backend.
|
|
||||||
|
|
||||||
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
|
|
||||||
|
|
||||||
* A follow-up fix to a fix for a regression in 2.36 around hooks.
|
|
||||||
|
|
||||||
* Avoid repeatedly running getconf to ask libc version in the test
|
|
||||||
suite, and instead just as it once per script.
|
|
||||||
|
|
||||||
* Platform-specific code that determines if a directory is OK to use
|
|
||||||
as a repository has been taught to report more details, especially
|
|
||||||
on Windows.
|
|
||||||
|
|
||||||
* "vimdiff3" regression fix.
|
|
||||||
|
|
||||||
* "git fsck" reads mode from tree objects but canonicalizes the mode
|
|
||||||
before passing it to the logic to check object sanity, which has
|
|
||||||
hid broken tree objects from the checking logic. This has been
|
|
||||||
corrected, but to help existing projects with broken tree objects
|
|
||||||
that they cannot fix retroactively, the severity of anomalies this
|
|
||||||
code detects has been demoted to "info" for now.
|
|
||||||
|
|
||||||
* Fixes to sparse index compatibility work for "reset" and "checkout"
|
|
||||||
commands.
|
|
||||||
|
|
||||||
* An earlier optimization discarded a tree-object buffer that is
|
|
||||||
still in use, which has been corrected.
|
|
||||||
|
|
||||||
* Fix deadlocks between main Git process and subprocess spawned via
|
|
||||||
the pipe_command() API, that can kill "git add -p" that was
|
|
||||||
reimplemented in C recently.
|
|
||||||
|
|
||||||
* The sequencer machinery translated messages left in the reflog by
|
|
||||||
mistake, which has been corrected.
|
|
||||||
|
|
||||||
* xcalloc(), imitating calloc(), takes "number of elements of the
|
|
||||||
array", and "size of a single element", in this order. A call that
|
|
||||||
does not follow this ordering has been corrected.
|
|
||||||
|
|
||||||
* The preload-index codepath made copies of pathspec to give to
|
|
||||||
multiple threads, which were left leaked.
|
|
||||||
|
|
||||||
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
|
|
||||||
to 22.04.
|
|
||||||
|
|
||||||
* The auto-stashed local changes created by "git merge --autostash"
|
|
||||||
was mixed into a conflicted state left in the working tree, which
|
|
||||||
has been corrected.
|
|
||||||
|
|
||||||
* Multi-pack index got corrupted when preferred pack changed from one
|
|
||||||
pack to another in a certain way, which has been corrected.
|
|
||||||
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
|
|
||||||
|
|
||||||
* The clean-up of temporary files created via mks_tempfile_dt() was
|
|
||||||
racy and attempted to unlink() the leading directory when signals
|
|
||||||
are involved, which has been corrected.
|
|
||||||
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
|
|
||||||
|
|
||||||
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
|
|
||||||
to schedule tasks.
|
|
||||||
(merge ee69e7884e bc/gc-crontab-fix later to maint).
|
|
||||||
|
|
||||||
* Those who use diff-so-fancy as the diff-filter noticed a regression
|
|
||||||
or two in the code that parses the diff output in the built-in
|
|
||||||
version of "add -p", which has been corrected.
|
|
||||||
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
|
|
||||||
|
|
||||||
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
|
|
||||||
and "git checkout" work better in a sparse checkout.
|
|
||||||
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
|
|
||||||
|
|
||||||
* "git diff --no-index A B" managed its the pathnames of its two
|
|
||||||
input files rather haphazardly, sometimes leaking them. The
|
|
||||||
command line argument processing has been straightened out to clean
|
|
||||||
it up.
|
|
||||||
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
|
|
||||||
|
|
||||||
* "git rev-list --verify-objects" ought to inspect the contents of
|
|
||||||
objects and notice corrupted ones, but it didn't when the commit
|
|
||||||
graph is in use, which has been corrected.
|
|
||||||
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
|
|
||||||
|
|
||||||
* More fixes to "add -p"
|
|
||||||
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
|
|
||||||
|
|
||||||
* The parser in the script interface to parse-options in "git
|
|
||||||
rev-parse" has been updated to diagnose a bogus input correctly.
|
|
||||||
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
|
|
||||||
|
|
||||||
* The code that manages list-object-filter structure, used in partial
|
|
||||||
clones, leaked the instances, which has been plugged.
|
|
||||||
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
|
|
||||||
|
|
||||||
* Fix another UI regression in the reimplemented "add -p".
|
|
||||||
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
|
|
||||||
|
|
||||||
* "git fetch" over protocol v2 sent an incorrect ref prefix request
|
|
||||||
to the server and made "git pull" with configured fetch refspec
|
|
||||||
that does not cover the remote branch to merge with fail, which has
|
|
||||||
been corrected.
|
|
||||||
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
|
|
||||||
|
|
||||||
* A result from opendir() was leaking in the commit-graph expiration
|
|
||||||
codepath, which has been plugged.
|
|
||||||
(merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).
|
|
||||||
|
|
||||||
* Just like we have coding guidelines, we now have guidelines for
|
|
||||||
reviewers.
|
|
||||||
(merge e01b851923 vd/doc-reviewing-guidelines later to maint).
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
|
|
||||||
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
|
|
||||||
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
|
|
@ -1,5 +0,0 @@
|
|||||||
Git v2.38.1 Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This release merges the security fix that appears in v2.30.6; see
|
|
||||||
the release notes for that version for details.
|
|
@ -1,60 +0,0 @@
|
|||||||
Git 2.38.2 Release Notes
|
|
||||||
========================
|
|
||||||
|
|
||||||
This is to backport various fixes accumulated during the development
|
|
||||||
towards Git 2.39, the next feature release.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.38.1
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
* Update CodingGuidelines to clarify what features to use and avoid
|
|
||||||
in C99.
|
|
||||||
|
|
||||||
* The codepath that reads from the index v4 had unaligned memory
|
|
||||||
accesses, which has been corrected.
|
|
||||||
|
|
||||||
* "git remote rename" failed to rename a remote without fetch
|
|
||||||
refspec, which has been corrected.
|
|
||||||
|
|
||||||
* "git clone" did not like to see the "--bare" and the "--origin"
|
|
||||||
options used together without a good reason.
|
|
||||||
|
|
||||||
* Fix messages incorrectly marked for translation.
|
|
||||||
|
|
||||||
* "git fsck" failed to release contents of tree objects already used
|
|
||||||
from the memory, which has been fixed.
|
|
||||||
|
|
||||||
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
|
|
||||||
itself, which has been corrected.
|
|
||||||
|
|
||||||
* In read-only repositories, "git merge-tree" tried to come up with a
|
|
||||||
merge result tree object, which it failed (which is not wrong) and
|
|
||||||
led to a segfault (which is bad), which has been corrected.
|
|
||||||
|
|
||||||
* Force C locale while running tests around httpd to make sure we can
|
|
||||||
find expected error messages in the log.
|
|
||||||
|
|
||||||
* Fix a logic in "mailinfo -b" that miscomputed the length of a
|
|
||||||
substring, which lead to an out-of-bounds access.
|
|
||||||
|
|
||||||
* The codepath to sign learned to report errors when it fails to read
|
|
||||||
from "ssh-keygen".
|
|
||||||
|
|
||||||
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
|
|
||||||
which has been corrected.
|
|
||||||
|
|
||||||
* Documentation on various Boolean GIT_* environment variables have
|
|
||||||
been clarified.
|
|
||||||
|
|
||||||
* "git multi-pack-index repack/expire" used to repack unreachable
|
|
||||||
cruft into a new pack, which have been corrected.
|
|
||||||
|
|
||||||
* The code to clean temporary object directories (used for
|
|
||||||
quarantine) tried to remove them inside its signal handler, which
|
|
||||||
was a no-no.
|
|
||||||
|
|
||||||
* "git branch --edit-description" on an unborh branch misleadingly
|
|
||||||
said that no such branch exists, which has been corrected.
|
|
||||||
|
|
||||||
Also contains various documentation updates and code clean-ups.
|
|
@ -1,313 +0,0 @@
|
|||||||
Git v2.39 Release Notes
|
|
||||||
=======================
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
* "git grep" learned to expand the sparse-index more lazily and on
|
|
||||||
demand in a sparse checkout.
|
|
||||||
|
|
||||||
* By default, use of fsmonitor on a repository on networked
|
|
||||||
filesystem is disabled. Add knobs to make it workable on macOS.
|
|
||||||
|
|
||||||
* After checking out a "branch" that is a symbolic-ref that points at
|
|
||||||
another branch, "git symbolic-ref HEAD" reports the underlying
|
|
||||||
branch, not the symbolic-ref the user gave checkout as argument.
|
|
||||||
The command learned the "--no-recurse" option to stop after
|
|
||||||
dereferencing a symbolic-ref only once.
|
|
||||||
|
|
||||||
* "git branch --edit-description @{-1}" is now a way to edit branch
|
|
||||||
description of the branch you were on before switching to the
|
|
||||||
current branch.
|
|
||||||
|
|
||||||
* "git merge-tree --stdin" is a new way to request a series of merges
|
|
||||||
and report the merge results.
|
|
||||||
|
|
||||||
* "git shortlog" learned to group by the "format" string.
|
|
||||||
|
|
||||||
* A new "--include-whitespace" option is added to "git patch-id", and
|
|
||||||
existing bugs in the internal patch-id logic that did not match
|
|
||||||
what "git patch-id" produces have been corrected.
|
|
||||||
|
|
||||||
* Enable gc.cruftpacks by default for those who opt into
|
|
||||||
feature.experimental setting.
|
|
||||||
|
|
||||||
* "git repack" learns to send cruft objects out of the way into
|
|
||||||
packfiles outside the repository.
|
|
||||||
|
|
||||||
* 'scalar reconfigure -a' is taught to automatically remove
|
|
||||||
scalar.repo entires which no longer exist.
|
|
||||||
|
|
||||||
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
|
|
||||||
others.
|
|
||||||
|
|
||||||
* 'git maintenance register' is taught to write configuration to an
|
|
||||||
arbitrary path, and 'git for-each-repo' is taught to expand tilde
|
|
||||||
characters in paths.
|
|
||||||
|
|
||||||
* When creating new notes, the template used to get a stray empty
|
|
||||||
newline, which has been removed.
|
|
||||||
|
|
||||||
* "git receive-pack" used to use all the local refs as the boundary for
|
|
||||||
checking connectivity of the data "git push" sent, but now it uses
|
|
||||||
only the refs that it advertised to the pusher. In a repository with
|
|
||||||
the .hideRefs configuration, this reduces the resources needed to
|
|
||||||
perform the check.
|
|
||||||
|
|
||||||
* With '--recurse-submodules=on-demand', all submodules are
|
|
||||||
recursively pushed.
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
--------------------------------------------------------------
|
|
||||||
|
|
||||||
* With a bit of header twiddling, use the native regexp library on
|
|
||||||
macOS instead of the compat/ one.
|
|
||||||
|
|
||||||
* Prepare for GNU [ef]grep that throw warning of their uses.
|
|
||||||
|
|
||||||
* Sources related to fuzz testing have been moved down to their own
|
|
||||||
directory.
|
|
||||||
|
|
||||||
* Most credential helpers ignored unknown entries in a credential
|
|
||||||
description, but a few died upon seeing them. The latter were
|
|
||||||
taught to ignore them, too
|
|
||||||
|
|
||||||
* "scalar unregister" in a repository that is already been
|
|
||||||
unregistered reported an error.
|
|
||||||
|
|
||||||
* Remove error detection from a function that fetches from promisor
|
|
||||||
remotes, and make it die when such a fetch fails to bring all the
|
|
||||||
requested objects, to give an early failure to various operations.
|
|
||||||
|
|
||||||
* Update CodingGuidelines to clarify what features to use and avoid
|
|
||||||
in C99.
|
|
||||||
|
|
||||||
* Avoid false-positive from LSan whose assumption may be broken with
|
|
||||||
higher optimization levels.
|
|
||||||
|
|
||||||
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
|
|
||||||
|
|
||||||
* More UNUSED annotation to help using -Wunused option with the
|
|
||||||
compiler.
|
|
||||||
(merge 4b992f0a24 jk/unused-anno-more later to maint).
|
|
||||||
|
|
||||||
* Rewrite a deep recursion in the skipping negotiator to use a loop
|
|
||||||
with on-heap prio queue to avoid stack wastage.
|
|
||||||
|
|
||||||
* Add documentation for message IDs in fsck error messages.
|
|
||||||
|
|
||||||
* Define the logical elements of a "bundle list", data structure to
|
|
||||||
store them in-core, format to transfer them, and code to parse
|
|
||||||
them.
|
|
||||||
|
|
||||||
* The role the security mailing list plays in an embargoed release
|
|
||||||
has been documented.
|
|
||||||
|
|
||||||
* Two new facilities, "timer" and "counter", are introduced to the
|
|
||||||
trace2 API.
|
|
||||||
|
|
||||||
* Code simplification by using strvec_pushf() instead of building an
|
|
||||||
argument in a separate strbuf.
|
|
||||||
|
|
||||||
* Make sure generated dependency file is stably sorted to help
|
|
||||||
developers debugging their build issues.
|
|
||||||
|
|
||||||
* The glossary entries for "commit-graph file" and "reachability
|
|
||||||
bitmap" have been added.
|
|
||||||
|
|
||||||
* Various tests exercising the transfer.credentialsInUrl
|
|
||||||
configuration are taught to avoid making requests which require
|
|
||||||
resolving localhost to reduce CI-flakiness.
|
|
||||||
|
|
||||||
* A redundant diagnostic message is dropped from test_path_is_missing().
|
|
||||||
|
|
||||||
* Simplify the run-command API.
|
|
||||||
|
|
||||||
* Update the actions/github-script dependency in CI to avoid a
|
|
||||||
deprecation warning.
|
|
||||||
|
|
||||||
* Progress on being able to initialize a rev_info struct with a
|
|
||||||
macro.
|
|
||||||
|
|
||||||
* Add trace2 counters to the region to clear skip worktree bits in a
|
|
||||||
sparse checkout.
|
|
||||||
|
|
||||||
* Modernize test script to avoid "test -f" and friends.
|
|
||||||
|
|
||||||
* Avoid calling 'cache_tree_update()' when doing so would be
|
|
||||||
redundant.
|
|
||||||
|
|
||||||
* Update the credential-cache documentation to provide a more
|
|
||||||
realistic example.
|
|
||||||
|
|
||||||
* Makefile comments updates and reordering to clarify knobs used to
|
|
||||||
choose SHA implementations.
|
|
||||||
|
|
||||||
* A design document for sparse-checkout's future directions has been
|
|
||||||
added.
|
|
||||||
|
|
||||||
* Teach chainlint.pl to annotate the original test definition instead
|
|
||||||
of the token stream.
|
|
||||||
|
|
||||||
* "make coccicheck" is time consuming. It has been made to run more
|
|
||||||
incrementally.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.38
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* The codepath that reads from the index v4 had unaligned memory
|
|
||||||
accesses, which has been corrected.
|
|
||||||
|
|
||||||
* Fix messages incorrectly marked for translation.
|
|
||||||
|
|
||||||
* "git fsck" failed to release contents of tree objects already used
|
|
||||||
from the memory, which has been fixed.
|
|
||||||
|
|
||||||
* "git clone" did not like to see the "--bare" and the "--origin"
|
|
||||||
options used together without a good reason.
|
|
||||||
|
|
||||||
* "git remote rename" failed to rename a remote without fetch
|
|
||||||
refspec, which has been corrected.
|
|
||||||
|
|
||||||
* Documentation on various Boolean GIT_* environment variables have
|
|
||||||
been clarified.
|
|
||||||
|
|
||||||
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
|
|
||||||
itself, which has been corrected.
|
|
||||||
|
|
||||||
* "git multi-pack-index repack/expire" used to repack unreachable
|
|
||||||
cruft into a new pack, which have been corrected.
|
|
||||||
|
|
||||||
* In read-only repositories, "git merge-tree" tried to come up with a
|
|
||||||
merge result tree object, which it failed (which is not wrong) and
|
|
||||||
led to a segfault (which is bad), which has been corrected.
|
|
||||||
|
|
||||||
* Force C locale while running tests around httpd to make sure we can
|
|
||||||
find expected error messages in the log.
|
|
||||||
|
|
||||||
* Fix a logic in "mailinfo -b" that miscomputed the length of a
|
|
||||||
substring, which lead to an out-of-bounds access.
|
|
||||||
|
|
||||||
* The codepath to sign learned to report errors when it fails to read
|
|
||||||
from "ssh-keygen".
|
|
||||||
|
|
||||||
* Code clean-up that results in plugging a leak.
|
|
||||||
|
|
||||||
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
|
|
||||||
which has been corrected.
|
|
||||||
|
|
||||||
* The code to clean temporary object directories (used for
|
|
||||||
quarantine) tried to remove them inside its signal handler, which
|
|
||||||
was a no-no.
|
|
||||||
|
|
||||||
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
|
|
||||||
|
|
||||||
* Clarify that "the sentence after <area>: prefix does not begin with
|
|
||||||
a capital letter" rule applies only to the commit title.
|
|
||||||
|
|
||||||
* "git branch --edit-description" on an unborh branch misleadingly
|
|
||||||
said that no such branch exists, which has been corrected.
|
|
||||||
|
|
||||||
* Work around older clang that warns against C99 zero initialization
|
|
||||||
syntax for struct.
|
|
||||||
|
|
||||||
* Giving "--invert-grep" and "--all-match" without "--grep" to the
|
|
||||||
"git log" command resulted in an attempt to access grep pattern
|
|
||||||
expression structure that has not been allocated, which has been
|
|
||||||
corrected.
|
|
||||||
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
|
|
||||||
|
|
||||||
* "git diff rev^!" did not show combined diff to go to the rev from
|
|
||||||
its parents.
|
|
||||||
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
|
|
||||||
|
|
||||||
* Allow configuration files in "protected" scopes to include other
|
|
||||||
configuration files.
|
|
||||||
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
|
|
||||||
|
|
||||||
* Give a bit more diversity to macOS CI by using sha1dc in one of the
|
|
||||||
jobs (the other one tests Apple Common Crypto).
|
|
||||||
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
|
|
||||||
|
|
||||||
* A bugfix with tracing support in midx codepath
|
|
||||||
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
|
|
||||||
|
|
||||||
* When geometric repacking feature is in use together with the
|
|
||||||
--pack-kept-objects option, we lost packs marked with .keep files.
|
|
||||||
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
|
|
||||||
|
|
||||||
* Move a global variable added as a hack during regression fixes to
|
|
||||||
its proper place in the API.
|
|
||||||
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
|
|
||||||
|
|
||||||
* Update to build procedure with VS using CMake/CTest.
|
|
||||||
(merge c858750b41 js/cmake-updates later to maint).
|
|
||||||
|
|
||||||
* The short-help text shown by "git cmd -h" and the synopsis text
|
|
||||||
shown at the beginning of "git help cmd" have been made more
|
|
||||||
consistent.
|
|
||||||
|
|
||||||
* When creating a multi-pack bitmap, remove per-pack bitmap files
|
|
||||||
unconditionally as they will never be consulted.
|
|
||||||
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
|
|
||||||
|
|
||||||
* Fix a longstanding syntax error in Git.pm error codepath.
|
|
||||||
|
|
||||||
* "git diff --stat" etc. were invented back when everything was ASCII
|
|
||||||
and strlen() was a way to measure the display width of a string;
|
|
||||||
adjust them to compute the display width assuming UTF-8 pathnames.
|
|
||||||
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
|
|
||||||
|
|
||||||
* "git branch --edit-description" can exit with status -1 which is
|
|
||||||
not a good practice; it learned to use 1 as everybody else instead.
|
|
||||||
|
|
||||||
* "git apply" limits its input to a bit less than 1 GiB.
|
|
||||||
|
|
||||||
* Merging a branch with directory renames into a branch that changes
|
|
||||||
the directory to a symlink was mishandled by the ort merge
|
|
||||||
strategy, which has been corrected.
|
|
||||||
|
|
||||||
* A bugfix to "git subtree" in its split and merge features.
|
|
||||||
|
|
||||||
* Fix some bugs in the reflog messages when rebasing and changes the
|
|
||||||
reflog messages of "rebase --apply" to match "rebase --merge" with
|
|
||||||
the aim of making the reflog easier to parse.
|
|
||||||
|
|
||||||
* "git rebase --keep-base" used to discard the commits that are
|
|
||||||
already cherry-picked to the upstream, even when "keep-base" meant
|
|
||||||
that the base, on top of which the history is being rebuilt, does
|
|
||||||
not yet include these cherry-picked commits. The --keep-base
|
|
||||||
option now implies --reapply-cherry-picks and --no-fork-point
|
|
||||||
options.
|
|
||||||
|
|
||||||
* The way "git repack" creared temporary files when it received a
|
|
||||||
signal was prone to deadlocking, which has been corrected.
|
|
||||||
|
|
||||||
* Various tests exercising the transfer.credentialsInUrl
|
|
||||||
configuration are taught to avoid making requests which require
|
|
||||||
resolving localhost to reduce CI-flakiness.
|
|
||||||
|
|
||||||
* The adjust_shared_perm() helper function learned to refrain from
|
|
||||||
setting the "g+s" bit on directories when it is not necessary.
|
|
||||||
|
|
||||||
* "git archive" mistakenly complained twice about a missing
|
|
||||||
executable, which has been corrected.
|
|
||||||
|
|
||||||
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
|
|
||||||
|
|
||||||
* `git rebase --update-refs` would delete references when all
|
|
||||||
`update-ref` commands in the sequencer were removed, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Fix a regression in the bisect-helper which mistakenly treats
|
|
||||||
arguments to the command given to 'git bisect run' as arguments to
|
|
||||||
the helper.
|
|
||||||
|
|
||||||
* Correct an error where `git rebase` would mistakenly use a branch or
|
|
||||||
tag named "refs/rewritten/xyz" when missing a rebase label.
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
|
|
||||||
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
|
|
@ -1,162 +0,0 @@
|
|||||||
Reviewing Patches in the Git Project
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
The Git development community is a widely distributed, diverse, ever-changing
|
|
||||||
group of individuals. Asynchronous communication via the Git mailing list poses
|
|
||||||
unique challenges when reviewing or discussing patches. This document contains
|
|
||||||
some guiding principles and helpful tools you can use to make your reviews both
|
|
||||||
more efficient for yourself and more effective for other contributors.
|
|
||||||
|
|
||||||
Note that none of the recommendations here are binding or in any way a
|
|
||||||
requirement of participation in the Git community. They are provided as a
|
|
||||||
resource to supplement your skills as a contributor.
|
|
||||||
|
|
||||||
Principles
|
|
||||||
----------
|
|
||||||
|
|
||||||
Selecting patch(es) to review
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
If you are looking for a patch series in need of review, start by checking
|
|
||||||
latest "What's cooking in git.git" email
|
|
||||||
(https://lore.kernel.org/git/xmqqilm1yp3m.fsf@gitster.g/[example]). The "What's
|
|
||||||
cooking" emails & replies can be found using the query `s:"What's cooking"` on
|
|
||||||
the https://lore.kernel.org/git/[`lore.kernel.org` mailing list archive];
|
|
||||||
alternatively, you can find the contents of the "What's cooking" email tracked
|
|
||||||
in `whats-cooking.txt` on the `todo` branch of Git. Topics tagged with "Needs
|
|
||||||
review" and those in the "[New Topics]" section are typically those that would
|
|
||||||
benefit the most from additional review.
|
|
||||||
|
|
||||||
Patches can also be searched manually in the mailing list archive using a query
|
|
||||||
like `s:"PATCH" -s:"Re:"`. You can browse these results for topics relevant to
|
|
||||||
your expertise or interest.
|
|
||||||
|
|
||||||
If you've already contributed to Git, you may also be CC'd in another
|
|
||||||
contributor's patch series. These are topics where the author feels that your
|
|
||||||
attention is warranted. This may be because their patch changes something you
|
|
||||||
wrote previously (making you a good judge of whether the new approach does or
|
|
||||||
doesn't work), or because you have the expertise to provide an exceptionally
|
|
||||||
helpful review. There is no requirement to review these patches but, in the
|
|
||||||
spirit of open source collaboration, you should strongly consider doing so.
|
|
||||||
|
|
||||||
Reviewing patches
|
|
||||||
~~~~~~~~~~~~~~~~~
|
|
||||||
While every contributor takes their own approach to reviewing patches, here are
|
|
||||||
some general pieces of advice to make your reviews as clear and helpful as
|
|
||||||
possible. The advice is broken into two rough categories: high-level reviewing
|
|
||||||
guidance, and concrete tips for interacting with patches on the mailing list.
|
|
||||||
|
|
||||||
==== High-level guidance
|
|
||||||
- Remember to review the content of commit messages for correctness and clarity,
|
|
||||||
in addition to the code change in the patch's diff. The commit message of a
|
|
||||||
patch should accurately and fully explain the code change being made in the
|
|
||||||
diff.
|
|
||||||
|
|
||||||
- Reviewing test coverage is an important - but easy to overlook - component of
|
|
||||||
reviews. A patch's changes may be covered by existing tests, or new tests may
|
|
||||||
be introduced to exercise new behavior. Checking out a patch or series locally
|
|
||||||
allows you to manually mutate lines of new & existing tests to verify expected
|
|
||||||
pass/fail behavior. You can use this information to verify proper coverage or
|
|
||||||
to suggest additional tests the author could add.
|
|
||||||
|
|
||||||
- When providing a recommendation, be as clear as possible about whether you
|
|
||||||
consider it "blocking" (the code would be broken or otherwise made worse if an
|
|
||||||
issue isn't fixed) or "non-blocking" (the patch could be made better by taking
|
|
||||||
the recommendation, but acceptance of the series does not require it).
|
|
||||||
Non-blocking recommendations can be particularly ambiguous when they are
|
|
||||||
related to - but outside the scope of - a series ("nice-to-have"s), or when
|
|
||||||
they represent only stylistic differences between the author and reviewer.
|
|
||||||
|
|
||||||
- When commenting on an issue, try to include suggestions for how the author
|
|
||||||
could fix it. This not only helps the author to understand and fix the issue,
|
|
||||||
it also deepens and improves your understanding of the topic.
|
|
||||||
|
|
||||||
- Reviews do not need to exclusively point out problems. Feel free to "think out
|
|
||||||
loud" in your review: describe how you read & understood a complex section of
|
|
||||||
a patch, ask a question about something that confused you, point out something
|
|
||||||
you found exceptionally well-written, etc. In particular, uplifting feedback
|
|
||||||
goes a long way towards encouraging contributors to participate more actively
|
|
||||||
in the Git community.
|
|
||||||
|
|
||||||
==== Performing your review
|
|
||||||
- Provide your review comments per-patch in a plaintext "Reply-All" email to the
|
|
||||||
relevant patch. Comments should be made inline, immediately below the relevant
|
|
||||||
section(s).
|
|
||||||
|
|
||||||
- You may find that the limited context provided in the patch diff is sometimes
|
|
||||||
insufficient for a thorough review. In such cases, you can review patches in
|
|
||||||
your local tree by either applying patches with linkgit:git-am[1] or checking
|
|
||||||
out the associated branch from https://github.com/gitster/git once the series
|
|
||||||
is tracked there.
|
|
||||||
|
|
||||||
- Large, complicated patch diffs are sometimes unavoidable, such as when they
|
|
||||||
refactor existing code. If you find such a patch difficult to parse, try
|
|
||||||
reviewing the diff produced with the `--color-moved` and/or
|
|
||||||
`--ignore-space-change` options.
|
|
||||||
|
|
||||||
- If a patch is long, you are encouraged to delete parts of it that are
|
|
||||||
unrelated to your review from the email reply. Make sure to leave enough
|
|
||||||
context for readers to understand your comments!
|
|
||||||
|
|
||||||
- If you cannot complete a full review of a series all at once, consider letting
|
|
||||||
the author know (on- or off-list) if/when you plan to review the rest of the
|
|
||||||
series.
|
|
||||||
|
|
||||||
Completing a review
|
|
||||||
~~~~~~~~~~~~~~~~~~~
|
|
||||||
Once each patch of a series is reviewed, the author (and/or other contributors)
|
|
||||||
may discuss the review(s). This may result in no changes being applied, or the
|
|
||||||
author will send a new version of their patch(es).
|
|
||||||
|
|
||||||
After a series is rerolled in response to your or others' review, make sure to
|
|
||||||
re-review the updates. If you are happy with the state of the patch series,
|
|
||||||
explicitly indicate your approval (typically with a reply to the latest
|
|
||||||
version's cover letter). Optionally, you can let the author know that they can
|
|
||||||
add a "Reviewed-by: <you>" trailer if they resubmit the reviewed patch verbatim
|
|
||||||
in a later iteration of the series.
|
|
||||||
|
|
||||||
Finally, subsequent "What's cooking" emails may explicitly ask whether a
|
|
||||||
reviewed topic is ready for merging to the `next` branch (typically phrased
|
|
||||||
"Will merge to \'next\'?"). You can help the maintainer and author by responding
|
|
||||||
with a short description of the state of your (and others', if applicable)
|
|
||||||
review, including the links to the relevant thread(s).
|
|
||||||
|
|
||||||
Terminology
|
|
||||||
-----------
|
|
||||||
nit: ::
|
|
||||||
Denotes a small issue that should be fixed, such as a typographical error
|
|
||||||
or mis-alignment of conditions in an `if()` statement.
|
|
||||||
|
|
||||||
aside: ::
|
|
||||||
optional: ::
|
|
||||||
non-blocking: ::
|
|
||||||
Indicates to the reader that the following comment should not block the
|
|
||||||
acceptance of the patch or series. These are typically recommendations
|
|
||||||
related to code organization & style, or musings about topics related to
|
|
||||||
the patch in question, but beyond its scope.
|
|
||||||
|
|
||||||
s/<before>/<after>/::
|
|
||||||
Shorthand for "you wrote <before>, but I think you meant <after>," usually
|
|
||||||
for misspellings or other typographical errors. The syntax is a reference
|
|
||||||
to "substitute" command commonly found in Unix tools such as `ed`, `sed`,
|
|
||||||
`vim`, and `perl`.
|
|
||||||
|
|
||||||
cover letter::
|
|
||||||
The "Patch 0" of a multi-patch series. This email describes the
|
|
||||||
high-level intent and structure of the patch series to readers on the
|
|
||||||
Git mailing list. It is also where the changelog notes and range-diff of
|
|
||||||
subsequent versions are provided by the author.
|
|
||||||
+
|
|
||||||
On single-patch submissions, cover letter content is typically not sent as a
|
|
||||||
separate email. Instead, it is inserted between the end of the patch's commit
|
|
||||||
message (after the `---`) and the beginning of the diff.
|
|
||||||
|
|
||||||
#leftoverbits::
|
|
||||||
Used by either an author or a reviewer to describe features or suggested
|
|
||||||
changes that are out-of-scope of a given patch or series, but are relevant
|
|
||||||
to the topic for the sake of discussion.
|
|
||||||
|
|
||||||
See Also
|
|
||||||
--------
|
|
||||||
link:MyFirstContribution.html[MyFirstContribution]
|
|
@ -110,35 +110,6 @@ run `git diff --check` on your changes before you commit.
|
|||||||
[[describe-changes]]
|
[[describe-changes]]
|
||||||
=== Describe your changes well.
|
=== Describe your changes well.
|
||||||
|
|
||||||
The log message that explains your changes is just as important as the
|
|
||||||
changes themselves. Your code may be clearly written with in-code
|
|
||||||
comment to sufficiently explain how it works with the surrounding
|
|
||||||
code, but those who need to fix or enhance your code in the future
|
|
||||||
will need to know _why_ your code does what it does, for a few
|
|
||||||
reasons:
|
|
||||||
|
|
||||||
. Your code may be doing something differently from what you wanted it
|
|
||||||
to do. Writing down what you actually wanted to achieve will help
|
|
||||||
them fix your code and make it do what it should have been doing
|
|
||||||
(also, you often discover your own bugs yourself, while writing the
|
|
||||||
log message to summarize the thought behind it).
|
|
||||||
|
|
||||||
. Your code may be doing things that were only necessary for your
|
|
||||||
immediate needs (e.g. "do X to directories" without implementing or
|
|
||||||
even designing what is to be done on files). Writing down why you
|
|
||||||
excluded what the code does not do will help guide future developers.
|
|
||||||
Writing down "we do X to directories, because directories have
|
|
||||||
characteristic Y" would help them infer "oh, files also have the same
|
|
||||||
characteristic Y, so perhaps doing X to them would also make sense?".
|
|
||||||
Saying "we don't do the same X to files, because ..." will help them
|
|
||||||
decide if the reasoning is sound (in which case they do not waste
|
|
||||||
time extending your code to cover files), or reason differently (in
|
|
||||||
which case, they can explain why they extend your code to cover
|
|
||||||
files, too).
|
|
||||||
|
|
||||||
The goal of your log message is to convey the _why_ behind your
|
|
||||||
change to help future developers.
|
|
||||||
|
|
||||||
The first line of the commit message should be a short description (50
|
The first line of the commit message should be a short description (50
|
||||||
characters is the soft limit, see DISCUSSION in linkgit:git-commit[1]),
|
characters is the soft limit, see DISCUSSION in linkgit:git-commit[1]),
|
||||||
and should skip the full stop. It is also conventional in most cases to
|
and should skip the full stop. It is also conventional in most cases to
|
||||||
@ -153,9 +124,7 @@ files you are modifying to see the current conventions.
|
|||||||
|
|
||||||
[[summary-section]]
|
[[summary-section]]
|
||||||
The title sentence after the "area:" prefix omits the full stop at the
|
The title sentence after the "area:" prefix omits the full stop at the
|
||||||
end, and its first word is not capitalized (the omission
|
end, and its first word is not capitalized unless there is a reason to
|
||||||
of capitalization applies only to the word after the "area:"
|
|
||||||
prefix of the title) unless there is a reason to
|
|
||||||
capitalize it other than because it is the first word in the sentence.
|
capitalize it other than because it is the first word in the sentence.
|
||||||
E.g. "doc: clarify...", not "doc: Clarify...", or "githooks.txt:
|
E.g. "doc: clarify...", not "doc: Clarify...", or "githooks.txt:
|
||||||
improve...", not "githooks.txt: Improve...". But "refs: HEAD is also
|
improve...", not "githooks.txt: Improve...". But "refs: HEAD is also
|
||||||
@ -173,13 +142,6 @@ The body should provide a meaningful commit message, which:
|
|||||||
|
|
||||||
. alternate solutions considered but discarded, if any.
|
. alternate solutions considered but discarded, if any.
|
||||||
|
|
||||||
[[present-tense]]
|
|
||||||
The problem statement that describes the status quo is written in the
|
|
||||||
present tense. Write "The code does X when it is given input Y",
|
|
||||||
instead of "The code used to do Y when given input X". You do not
|
|
||||||
have to say "Currently"---the status quo in the problem statement is
|
|
||||||
about the code _without_ your change, by project convention.
|
|
||||||
|
|
||||||
[[imperative-mood]]
|
[[imperative-mood]]
|
||||||
Describe your changes in imperative mood, e.g. "make xyzzy do frotz"
|
Describe your changes in imperative mood, e.g. "make xyzzy do frotz"
|
||||||
instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy
|
instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy
|
||||||
@ -454,10 +416,7 @@ repositories.
|
|||||||
|
|
||||||
- `gitk-git/` comes from Paul Mackerras's gitk project:
|
- `gitk-git/` comes from Paul Mackerras's gitk project:
|
||||||
|
|
||||||
git://git.ozlabs.org/~paulus/gitk
|
git://ozlabs.org/~paulus/gitk
|
||||||
|
|
||||||
Those who are interested in improve gitk can volunteer to help Paul
|
|
||||||
in maintaining it cf. <YntxL/fTplFm8lr6@cleo>.
|
|
||||||
|
|
||||||
- `po/` comes from the localization coordinator, Jiang Xin:
|
- `po/` comes from the localization coordinator, Jiang Xin:
|
||||||
|
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
Tools for developing Git
|
|
||||||
========================
|
|
||||||
:sectanchors:
|
|
||||||
|
|
||||||
[[summary]]
|
|
||||||
== Summary
|
|
||||||
|
|
||||||
This document gathers tips, scripts and configuration file to help people
|
|
||||||
working on Git's codebase use their favorite tools while following Git's
|
|
||||||
coding style.
|
|
||||||
|
|
||||||
[[author]]
|
|
||||||
=== Author
|
|
||||||
|
|
||||||
The Git community.
|
|
||||||
|
|
||||||
[[table_of_contents]]
|
|
||||||
== Table of contents
|
|
||||||
|
|
||||||
- <<vscode>>
|
|
||||||
- <<emacs>>
|
|
||||||
|
|
||||||
[[vscode]]
|
|
||||||
=== Visual Studio Code (VS Code)
|
|
||||||
|
|
||||||
The contrib/vscode/init.sh script creates configuration files that enable
|
|
||||||
several valuable VS Code features. See contrib/vscode/README.md for more
|
|
||||||
information on using the script.
|
|
||||||
|
|
||||||
[[emacs]]
|
|
||||||
=== Emacs
|
|
||||||
|
|
||||||
This is adapted from Linux's suggestion in its CodingStyle document:
|
|
||||||
|
|
||||||
- To follow rules of the CodingGuideline, it's useful to put the following in
|
|
||||||
GIT_CHECKOUT/.dir-locals.el, assuming you use cperl-mode:
|
|
||||||
----
|
|
||||||
;; note the first part is useful for C editing, too
|
|
||||||
((nil . ((indent-tabs-mode . t)
|
|
||||||
(tab-width . 8)
|
|
||||||
(fill-column . 80)))
|
|
||||||
(cperl-mode . ((cperl-indent-level . 8)
|
|
||||||
(cperl-extra-newline-before-brace . nil)
|
|
||||||
(cperl-merge-trailing-else . t))))
|
|
||||||
----
|
|
||||||
|
|
||||||
For a more complete setup, since Git's codebase uses a coding style
|
|
||||||
similar to the Linux kernel's style, tips given in Linux's CodingStyle
|
|
||||||
document can be applied here too.
|
|
||||||
|
|
||||||
==== https://www.kernel.org/doc/html/v4.10/process/coding-style.html#you-ve-made-a-mess-of-it
|
|
@ -38,10 +38,9 @@ while ($changed) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $text (sort keys %include) {
|
while (my ($text, $included) = each %include) {
|
||||||
my $included = $include{$text};
|
|
||||||
if (! exists $included{$text} &&
|
if (! exists $included{$text} &&
|
||||||
(my $base = $text) =~ s/\.txt$//) {
|
(my $base = $text) =~ s/\.txt$//) {
|
||||||
print "$base.html $base.xml : ", join(" ", sort keys %$included), "\n";
|
print "$base.html $base.xml : ", join(" ", keys %$included), "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ sub format_one {
|
|||||||
$state = 0;
|
$state = 0;
|
||||||
open I, '<', "$name.txt" or die "No such file $name.txt";
|
open I, '<', "$name.txt" or die "No such file $name.txt";
|
||||||
while (<I>) {
|
while (<I>) {
|
||||||
if (/^(?:git|scalar)[a-z0-9-]*\(([0-9])\)$/) {
|
if (/^git[a-z0-9-]*\(([0-9])\)$/) {
|
||||||
$mansection = $1;
|
$mansection = $1;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
@ -159,33 +159,6 @@ all branches that begin with `foo/`. This is useful if your branches are
|
|||||||
organized hierarchically and you would like to apply a configuration to
|
organized hierarchically and you would like to apply a configuration to
|
||||||
all the branches in that hierarchy.
|
all the branches in that hierarchy.
|
||||||
|
|
||||||
`hasconfig:remote.*.url:`::
|
|
||||||
The data that follows this keyword is taken to
|
|
||||||
be a pattern with standard globbing wildcards and two
|
|
||||||
additional ones, `**/` and `/**`, that can match multiple
|
|
||||||
components. The first time this keyword is seen, the rest of
|
|
||||||
the config files will be scanned for remote URLs (without
|
|
||||||
applying any values). If there exists at least one remote URL
|
|
||||||
that matches this pattern, the include condition is met.
|
|
||||||
+
|
|
||||||
Files included by this option (directly or indirectly) are not allowed
|
|
||||||
to contain remote URLs.
|
|
||||||
+
|
|
||||||
Note that unlike other includeIf conditions, resolving this condition
|
|
||||||
relies on information that is not yet known at the point of reading the
|
|
||||||
condition. A typical use case is this option being present as a
|
|
||||||
system-level or global-level config, and the remote URL being in a
|
|
||||||
local-level config; hence the need to scan ahead when resolving this
|
|
||||||
condition. In order to avoid the chicken-and-egg problem in which
|
|
||||||
potentially-included files can affect whether such files are potentially
|
|
||||||
included, Git breaks the cycle by prohibiting these files from affecting
|
|
||||||
the resolution of these conditions (thus, prohibiting them from
|
|
||||||
declaring remote URLs).
|
|
||||||
+
|
|
||||||
As for the naming of this keyword, it is for forwards compatibiliy with
|
|
||||||
a naming scheme that supports more variable-based include conditions,
|
|
||||||
but currently Git only supports the exact keyword described above.
|
|
||||||
|
|
||||||
A few more notes on matching via `gitdir` and `gitdir/i`:
|
A few more notes on matching via `gitdir` and `gitdir/i`:
|
||||||
|
|
||||||
* Symlinks in `$GIT_DIR` are not resolved before matching.
|
* Symlinks in `$GIT_DIR` are not resolved before matching.
|
||||||
@ -253,14 +226,6 @@ Example
|
|||||||
; currently checked out
|
; currently checked out
|
||||||
[includeIf "onbranch:foo-branch"]
|
[includeIf "onbranch:foo-branch"]
|
||||||
path = foo.inc
|
path = foo.inc
|
||||||
|
|
||||||
; include only if a remote with the given URL exists (note
|
|
||||||
; that such a URL may be provided later in a file or in a
|
|
||||||
; file read after this file is read, as seen in this example)
|
|
||||||
[includeIf "hasconfig:remote.*.url:https://example.com/**"]
|
|
||||||
path = foo.inc
|
|
||||||
[remote "origin"]
|
|
||||||
url = https://example.com/git
|
|
||||||
----
|
----
|
||||||
|
|
||||||
Values
|
Values
|
||||||
@ -387,8 +352,6 @@ include::config/branch.txt[]
|
|||||||
|
|
||||||
include::config/browser.txt[]
|
include::config/browser.txt[]
|
||||||
|
|
||||||
include::config/bundle.txt[]
|
|
||||||
|
|
||||||
include::config/checkout.txt[]
|
include::config/checkout.txt[]
|
||||||
|
|
||||||
include::config/clean.txt[]
|
include::config/clean.txt[]
|
||||||
@ -425,8 +388,6 @@ include::config/filter.txt[]
|
|||||||
|
|
||||||
include::config/fsck.txt[]
|
include::config/fsck.txt[]
|
||||||
|
|
||||||
include::config/fsmonitor--daemon.txt[]
|
|
||||||
|
|
||||||
include::config/gc.txt[]
|
include::config/gc.txt[]
|
||||||
|
|
||||||
include::config/gitcvs.txt[]
|
include::config/gitcvs.txt[]
|
||||||
@ -449,8 +410,6 @@ include::config/i18n.txt[]
|
|||||||
|
|
||||||
include::config/imap.txt[]
|
include::config/imap.txt[]
|
||||||
|
|
||||||
include::config/includeif.txt[]
|
|
||||||
|
|
||||||
include::config/index.txt[]
|
include::config/index.txt[]
|
||||||
|
|
||||||
include::config/init.txt[]
|
include::config/init.txt[]
|
||||||
@ -501,7 +460,7 @@ include::config/repack.txt[]
|
|||||||
|
|
||||||
include::config/rerere.txt[]
|
include::config/rerere.txt[]
|
||||||
|
|
||||||
include::config/revert.txt[]
|
include::config/reset.txt[]
|
||||||
|
|
||||||
include::config/safe.txt[]
|
include::config/safe.txt[]
|
||||||
|
|
||||||
@ -511,8 +470,6 @@ include::config/sequencer.txt[]
|
|||||||
|
|
||||||
include::config/showbranch.txt[]
|
include::config/showbranch.txt[]
|
||||||
|
|
||||||
include::config/sparse.txt[]
|
|
||||||
|
|
||||||
include::config/splitindex.txt[]
|
include::config/splitindex.txt[]
|
||||||
|
|
||||||
include::config/ssh.txt[]
|
include::config/ssh.txt[]
|
||||||
|
@ -7,6 +7,6 @@ add.ignore-errors (deprecated)::
|
|||||||
variables.
|
variables.
|
||||||
|
|
||||||
add.interactive.useBuiltin::
|
add.interactive.useBuiltin::
|
||||||
Set to `false` to fall back to the original Perl implementation of
|
[EXPERIMENTAL] Set to `true` to use the experimental built-in
|
||||||
the interactive version of linkgit:git-add[1] instead of the built-in
|
implementation of the interactive version of linkgit:git-add[1]
|
||||||
version. Is `true` by default.
|
instead of the Perl script version. Is `false` by default.
|
||||||
|
@ -4,10 +4,6 @@ advice.*::
|
|||||||
can tell Git that you do not need help by setting these to 'false':
|
can tell Git that you do not need help by setting these to 'false':
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
ambiguousFetchRefspec::
|
|
||||||
Advice shown when fetch refspec for multiple remotes map to
|
|
||||||
the same remote-tracking branch namespace and causes branch
|
|
||||||
tracking set-up to fail.
|
|
||||||
fetchShowForcedUpdates::
|
fetchShowForcedUpdates::
|
||||||
Advice shown when linkgit:git-fetch[1] takes a long time
|
Advice shown when linkgit:git-fetch[1] takes a long time
|
||||||
to calculate forced updates after ref updates, or to warn
|
to calculate forced updates after ref updates, or to warn
|
||||||
@ -71,10 +67,10 @@ advice.*::
|
|||||||
commitBeforeMerge::
|
commitBeforeMerge::
|
||||||
Advice shown when linkgit:git-merge[1] refuses to
|
Advice shown when linkgit:git-merge[1] refuses to
|
||||||
merge to avoid overwriting local changes.
|
merge to avoid overwriting local changes.
|
||||||
resetNoRefresh::
|
resetQuiet::
|
||||||
Advice to consider using the `--no-refresh` option to
|
Advice to consider using the `--quiet` option to linkgit:git-reset[1]
|
||||||
linkgit:git-reset[1] when the command takes more than 2 seconds
|
when the command takes more than 2 seconds to enumerate unstaged
|
||||||
to refresh the index after reset.
|
changes after reset.
|
||||||
resolveConflict::
|
resolveConflict::
|
||||||
Advice shown by various commands when conflicts
|
Advice shown by various commands when conflicts
|
||||||
prevent the operation from being performed.
|
prevent the operation from being performed.
|
||||||
@ -89,9 +85,6 @@ advice.*::
|
|||||||
linkgit:git-switch[1] or linkgit:git-checkout[1]
|
linkgit:git-switch[1] or linkgit:git-checkout[1]
|
||||||
to move to the detach HEAD state, to instruct how to
|
to move to the detach HEAD state, to instruct how to
|
||||||
create a local branch after the fact.
|
create a local branch after the fact.
|
||||||
suggestDetachingHead::
|
|
||||||
Advice shown when linkgit:git-switch[1] refuses to detach HEAD
|
|
||||||
without the explicit `--detach` option.
|
|
||||||
checkoutAmbiguousRemoteBranchName::
|
checkoutAmbiguousRemoteBranchName::
|
||||||
Advice shown when the argument to
|
Advice shown when the argument to
|
||||||
linkgit:git-checkout[1] and linkgit:git-switch[1]
|
linkgit:git-checkout[1] and linkgit:git-switch[1]
|
||||||
@ -123,9 +116,6 @@ advice.*::
|
|||||||
submoduleAlternateErrorStrategyDie::
|
submoduleAlternateErrorStrategyDie::
|
||||||
Advice shown when a submodule.alternateErrorStrategy option
|
Advice shown when a submodule.alternateErrorStrategy option
|
||||||
configured to "die" causes a fatal error.
|
configured to "die" causes a fatal error.
|
||||||
submodulesNotUpdated::
|
|
||||||
Advice shown when a user runs a submodule command that fails
|
|
||||||
because `git submodule update --init` was not run.
|
|
||||||
addIgnoredFile::
|
addIgnoredFile::
|
||||||
Advice shown if a user attempts to add an ignored file to
|
Advice shown if a user attempts to add an ignored file to
|
||||||
the index.
|
the index.
|
||||||
|
@ -9,9 +9,7 @@ branch.autoSetupMerge::
|
|||||||
automatic setup is done when the starting point is either a
|
automatic setup is done when the starting point is either a
|
||||||
local branch or remote-tracking branch; `inherit` -- if the starting point
|
local branch or remote-tracking branch; `inherit` -- if the starting point
|
||||||
has a tracking configuration, it is copied to the new
|
has a tracking configuration, it is copied to the new
|
||||||
branch; `simple` -- automatic setup is done only when the starting point
|
branch. This option defaults to true.
|
||||||
is a remote-tracking branch and the new branch has the same name as the
|
|
||||||
remote branch. This option defaults to true.
|
|
||||||
|
|
||||||
branch.autoSetupRebase::
|
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', 'git switch' or 'git checkout'
|
||||||
@ -40,9 +38,8 @@ branch.<name>.remote::
|
|||||||
may be overridden with `remote.pushDefault` (for all branches).
|
may be overridden with `remote.pushDefault` (for all branches).
|
||||||
The remote to push to, for the current branch, may be further
|
The remote to push to, for the current branch, may be further
|
||||||
overridden by `branch.<name>.pushRemote`. If no remote is
|
overridden by `branch.<name>.pushRemote`. If no remote is
|
||||||
configured, or if you are not on any branch and there is more than
|
configured, or if you are not on any branch, it defaults to
|
||||||
one remote defined in the repository, it defaults to `origin` for
|
`origin` for fetching and `remote.pushDefault` for pushing.
|
||||||
fetching and `remote.pushDefault` for pushing.
|
|
||||||
Additionally, `.` (a period) is the current local repository
|
Additionally, `.` (a period) is the current local repository
|
||||||
(a dot-repository), see `branch.<name>.merge`'s final note below.
|
(a dot-repository), see `branch.<name>.merge`'s final note below.
|
||||||
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
bundle.*::
|
|
||||||
The `bundle.*` keys may appear in a bundle list file found via the
|
|
||||||
`git clone --bundle-uri` option. These keys currently have no effect
|
|
||||||
if placed in a repository config file, though this will change in the
|
|
||||||
future. See link:technical/bundle-uri.html[the bundle URI design
|
|
||||||
document] for more details.
|
|
||||||
|
|
||||||
bundle.version::
|
|
||||||
This integer value advertises the version of the bundle list format
|
|
||||||
used by the bundle list. Currently, the only accepted value is `1`.
|
|
||||||
|
|
||||||
bundle.mode::
|
|
||||||
This string value should be either `all` or `any`. This value describes
|
|
||||||
whether all of the advertised bundles are required to unbundle a
|
|
||||||
complete understanding of the bundled information (`all`) or if any one
|
|
||||||
of the listed bundle URIs is sufficient (`any`).
|
|
||||||
|
|
||||||
bundle.<id>.*::
|
|
||||||
The `bundle.<id>.*` keys are used to describe a single item in the
|
|
||||||
bundle list, grouped under `<id>` for identification purposes.
|
|
||||||
|
|
||||||
bundle.<id>.uri::
|
|
||||||
This string value defines the URI by which Git can reach the contents
|
|
||||||
of this `<id>`. This URI may be a bundle file or another bundle list.
|
|
@ -6,8 +6,3 @@ clone.defaultRemoteName::
|
|||||||
clone.rejectShallow::
|
clone.rejectShallow::
|
||||||
Reject to clone a repository if it is a shallow one, can be overridden by
|
Reject to clone a repository if it is a shallow one, can be overridden by
|
||||||
passing option `--reject-shallow` in command line. See linkgit:git-clone[1]
|
passing option `--reject-shallow` in command line. See linkgit:git-clone[1]
|
||||||
|
|
||||||
clone.filterSubmodules::
|
|
||||||
If a partial clone filter is provided (see `--filter` in
|
|
||||||
linkgit:git-rev-list[1]) and `--recurse-submodules` is used, also apply
|
|
||||||
the filter to submodules.
|
|
||||||
|
@ -62,54 +62,22 @@ core.protectNTFS::
|
|||||||
Defaults to `true` on Windows, and `false` elsewhere.
|
Defaults to `true` on Windows, and `false` elsewhere.
|
||||||
|
|
||||||
core.fsmonitor::
|
core.fsmonitor::
|
||||||
If set to true, enable the built-in file system monitor
|
If set, the value of this variable is used as a command which
|
||||||
daemon for this working directory (linkgit:git-fsmonitor{litdd}daemon[1]).
|
will identify all files that may have changed since the
|
||||||
+
|
requested date/time. This information is used to speed up git by
|
||||||
Like hook-based file system monitors, the built-in file system monitor
|
avoiding unnecessary processing of files that have not changed.
|
||||||
can speed up Git commands that need to refresh the Git index
|
See the "fsmonitor-watchman" section of linkgit:githooks[5].
|
||||||
(e.g. `git status`) in a working directory with many files. The
|
|
||||||
built-in monitor eliminates the need to install and maintain an
|
|
||||||
external third-party tool.
|
|
||||||
+
|
|
||||||
The built-in file system monitor is currently available only on a
|
|
||||||
limited set of supported platforms. Currently, this includes Windows
|
|
||||||
and MacOS.
|
|
||||||
+
|
|
||||||
Otherwise, this variable contains the pathname of the "fsmonitor"
|
|
||||||
hook command.
|
|
||||||
+
|
|
||||||
This hook command is used to identify all files that may have changed
|
|
||||||
since the requested date/time. This information is used to speed up
|
|
||||||
git by avoiding unnecessary scanning of files that have not changed.
|
|
||||||
+
|
|
||||||
See the "fsmonitor-watchman" section of linkgit:githooks[5].
|
|
||||||
+
|
|
||||||
Note that if you concurrently use multiple versions of Git, such
|
|
||||||
as one version on the command line and another version in an IDE
|
|
||||||
tool, that the definition of `core.fsmonitor` was extended to
|
|
||||||
allow boolean values in addition to hook pathnames. Git versions
|
|
||||||
2.35.1 and prior will not understand the boolean values and will
|
|
||||||
consider the "true" or "false" values as hook pathnames to be
|
|
||||||
invoked. Git versions 2.26 thru 2.35.1 default to hook protocol
|
|
||||||
V2 and will fall back to no fsmonitor (full scan). Git versions
|
|
||||||
prior to 2.26 default to hook protocol V1 and will silently
|
|
||||||
assume there were no changes to report (no scan), so status
|
|
||||||
commands may report incomplete results. For this reason, it is
|
|
||||||
best to upgrade all of your Git versions before using the built-in
|
|
||||||
file system monitor.
|
|
||||||
|
|
||||||
core.fsmonitorHookVersion::
|
core.fsmonitorHookVersion::
|
||||||
Sets the protocol version to be used when invoking the
|
Sets the version of hook that is to be used when calling fsmonitor.
|
||||||
"fsmonitor" hook.
|
There are currently versions 1 and 2. When this is not set,
|
||||||
+
|
version 2 will be tried first and if it fails then version 1
|
||||||
There are currently versions 1 and 2. When this is not set,
|
will be tried. Version 1 uses a timestamp as input to determine
|
||||||
version 2 will be tried first and if it fails then version 1
|
which files have changes since that time but some monitors
|
||||||
will be tried. Version 1 uses a timestamp as input to determine
|
like watchman have race conditions when used with a timestamp.
|
||||||
which files have changes since that time but some monitors
|
Version 2 uses an opaque string so that the monitor can return
|
||||||
like Watchman have race conditions when used with a timestamp.
|
something that can be used to determine what files have changed
|
||||||
Version 2 uses an opaque string so that the monitor can return
|
without race conditions.
|
||||||
something that can be used to determine what files have changed
|
|
||||||
without race conditions.
|
|
||||||
|
|
||||||
core.trustctime::
|
core.trustctime::
|
||||||
If false, the ctime differences between the index and the
|
If false, the ctime differences between the index and the
|
||||||
@ -444,32 +412,17 @@ You probably do not need to adjust this value.
|
|||||||
Common unit suffixes of 'k', 'm', or 'g' are supported.
|
Common unit suffixes of 'k', 'm', or 'g' are supported.
|
||||||
|
|
||||||
core.bigFileThreshold::
|
core.bigFileThreshold::
|
||||||
The size of files considered "big", which as discussed below
|
Files larger than this size are stored deflated, without
|
||||||
changes the behavior of numerous git commands, as well as how
|
attempting delta compression. Storing large files without
|
||||||
such files are stored within the repository. The default is
|
delta compression avoids excessive memory usage, at the
|
||||||
512 MiB. Common unit suffixes of 'k', 'm', or 'g' are
|
slight expense of increased disk usage. Additionally files
|
||||||
supported.
|
larger than this size are always treated as binary.
|
||||||
+
|
+
|
||||||
Files above the configured limit will be:
|
Default is 512 MiB on all platforms. This should be reasonable
|
||||||
|
for most projects as source code and other text files can still
|
||||||
|
be delta compressed, but larger binary media files won't be.
|
||||||
+
|
+
|
||||||
* Stored deflated in packfiles, without attempting delta compression.
|
Common unit suffixes of 'k', 'm', or 'g' are supported.
|
||||||
+
|
|
||||||
The default limit is primarily set with this use-case in mind. With it,
|
|
||||||
most projects will have their source code and other text files delta
|
|
||||||
compressed, but not larger binary media files.
|
|
||||||
+
|
|
||||||
Storing large files without delta compression avoids excessive memory
|
|
||||||
usage, at the slight expense of increased disk usage.
|
|
||||||
+
|
|
||||||
* Will be treated as if they were labeled "binary" (see
|
|
||||||
linkgit:gitattributes[5]). e.g. linkgit:git-log[1] and
|
|
||||||
linkgit:git-diff[1] will not compute diffs for files above this limit.
|
|
||||||
+
|
|
||||||
* Will generally be streamed when written, which avoids excessive
|
|
||||||
memory usage, at the cost of some fixed overhead. Commands that make
|
|
||||||
use of this include linkgit:git-archive[1],
|
|
||||||
linkgit:git-fast-import[1], linkgit:git-index-pack[1],
|
|
||||||
linkgit:git-unpack-objects[1] and linkgit:git-fsck[1].
|
|
||||||
|
|
||||||
core.excludesFile::
|
core.excludesFile::
|
||||||
Specifies the pathname to the file that contains patterns to
|
Specifies the pathname to the file that contains patterns to
|
||||||
@ -594,72 +547,13 @@ core.whitespace::
|
|||||||
is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
|
is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
|
||||||
errors. The default tab width is 8. Allowed values are 1 to 63.
|
errors. The default tab width is 8. Allowed values are 1 to 63.
|
||||||
|
|
||||||
core.fsync::
|
|
||||||
A comma-separated list of components of the repository that
|
|
||||||
should be hardened via the core.fsyncMethod when created or
|
|
||||||
modified. You can disable hardening of any component by
|
|
||||||
prefixing it with a '-'. Items that are not hardened may be
|
|
||||||
lost in the event of an unclean system shutdown. Unless you
|
|
||||||
have special requirements, it is recommended that you leave
|
|
||||||
this option empty or pick one of `committed`, `added`,
|
|
||||||
or `all`.
|
|
||||||
+
|
|
||||||
When this configuration is encountered, the set of components starts with
|
|
||||||
the platform default value, disabled components are removed, and additional
|
|
||||||
components are added. `none` resets the state so that the platform default
|
|
||||||
is ignored.
|
|
||||||
+
|
|
||||||
The empty string resets the fsync configuration to the platform
|
|
||||||
default. The default on most platforms is equivalent to
|
|
||||||
`core.fsync=committed,-loose-object`, which has good performance,
|
|
||||||
but risks losing recent work in the event of an unclean system shutdown.
|
|
||||||
+
|
|
||||||
* `none` clears the set of fsynced components.
|
|
||||||
* `loose-object` hardens objects added to the repo in loose-object form.
|
|
||||||
* `pack` hardens objects added to the repo in packfile form.
|
|
||||||
* `pack-metadata` hardens packfile bitmaps and indexes.
|
|
||||||
* `commit-graph` hardens the commit-graph file.
|
|
||||||
* `index` hardens the index when it is modified.
|
|
||||||
* `objects` is an aggregate option that is equivalent to
|
|
||||||
`loose-object,pack`.
|
|
||||||
* `reference` hardens references modified in the repo.
|
|
||||||
* `derived-metadata` is an aggregate option that is equivalent to
|
|
||||||
`pack-metadata,commit-graph`.
|
|
||||||
* `committed` is an aggregate option that is currently equivalent to
|
|
||||||
`objects`. This mode sacrifices some performance to ensure that work
|
|
||||||
that is committed to the repository with `git commit` or similar commands
|
|
||||||
is hardened.
|
|
||||||
* `added` is an aggregate option that is currently equivalent to
|
|
||||||
`committed,index`. This mode sacrifices additional performance to
|
|
||||||
ensure that the results of commands like `git add` and similar operations
|
|
||||||
are hardened.
|
|
||||||
* `all` is an aggregate option that syncs all individual components above.
|
|
||||||
|
|
||||||
core.fsyncMethod::
|
|
||||||
A value indicating the strategy Git will use to harden repository data
|
|
||||||
using fsync and related primitives.
|
|
||||||
+
|
|
||||||
* `fsync` uses the fsync() system call or platform equivalents.
|
|
||||||
* `writeout-only` issues pagecache writeback requests, but depending on the
|
|
||||||
filesystem and storage hardware, data added to the repository may not be
|
|
||||||
durable in the event of a system crash. This is the default mode on macOS.
|
|
||||||
* `batch` enables a mode that uses writeout-only flushes to stage multiple
|
|
||||||
updates in the disk writeback cache and then does a single full fsync of
|
|
||||||
a dummy file to trigger the disk cache flush at the end of the operation.
|
|
||||||
+
|
|
||||||
Currently `batch` mode only applies to loose-object files. Other repository
|
|
||||||
data is made durable as if `fsync` was specified. This mode is expected to
|
|
||||||
be as safe as `fsync` on macOS for repos stored on HFS+ or APFS filesystems
|
|
||||||
and on Windows for repos stored on NTFS or ReFS filesystems.
|
|
||||||
|
|
||||||
core.fsyncObjectFiles::
|
core.fsyncObjectFiles::
|
||||||
This boolean will enable 'fsync()' when writing object files.
|
This boolean will enable 'fsync()' when writing object files.
|
||||||
This setting is deprecated. Use core.fsync instead.
|
|
||||||
+
|
+
|
||||||
This setting affects data added to the Git repository in loose-object
|
This is a total waste of time and effort on a filesystem that orders
|
||||||
form. When set to true, Git will issue an fsync or similar system call
|
data writes properly, but can be useful for filesystems that do not use
|
||||||
to flush caches so that loose-objects remain consistent in the face
|
journalling (traditional UNIX filesystems) or that only journal metadata
|
||||||
of a unclean system shutdown.
|
and not file contents (OS X's HFS+, or Linux ext3 with "data=writeback").
|
||||||
|
|
||||||
core.preloadIndex::
|
core.preloadIndex::
|
||||||
Enable parallel index preload for operations like 'git diff'
|
Enable parallel index preload for operations like 'git diff'
|
||||||
@ -721,10 +615,8 @@ core.sparseCheckout::
|
|||||||
|
|
||||||
core.sparseCheckoutCone::
|
core.sparseCheckoutCone::
|
||||||
Enables the "cone mode" of the sparse checkout feature. When the
|
Enables the "cone mode" of the sparse checkout feature. When the
|
||||||
sparse-checkout file contains a limited set of patterns, this
|
sparse-checkout file contains a limited set of patterns, then this
|
||||||
mode provides significant performance advantages. The "non-cone
|
mode provides significant performance advantages. See
|
||||||
mode" can be requested to allow specifying more flexible
|
|
||||||
patterns by setting this variable to 'false'. See
|
|
||||||
linkgit:git-sparse-checkout[1] for more information.
|
linkgit:git-sparse-checkout[1] for more information.
|
||||||
|
|
||||||
core.abbrev::
|
core.abbrev::
|
||||||
|
@ -178,6 +178,21 @@ diff.<driver>.cachetextconv::
|
|||||||
Set this option to true to make the diff driver cache the text
|
Set this option to true to make the diff driver cache the text
|
||||||
conversion outputs. See linkgit:gitattributes[5] for details.
|
conversion outputs. See linkgit:gitattributes[5] for details.
|
||||||
|
|
||||||
|
diff.tool::
|
||||||
|
Controls which diff tool is used by linkgit:git-difftool[1].
|
||||||
|
This variable overrides the value configured in `merge.tool`.
|
||||||
|
The list below shows the valid built-in values.
|
||||||
|
Any other value is treated as a custom diff tool and requires
|
||||||
|
that a corresponding difftool.<tool>.cmd variable is defined.
|
||||||
|
|
||||||
|
diff.guitool::
|
||||||
|
Controls which diff tool is used by linkgit:git-difftool[1] when
|
||||||
|
the -g/--gui flag is specified. This variable overrides the value
|
||||||
|
configured in `merge.guitool`. The list below shows the valid
|
||||||
|
built-in values. Any other value is treated as a custom diff tool
|
||||||
|
and requires that a corresponding difftool.<guitool>.cmd variable
|
||||||
|
is defined.
|
||||||
|
|
||||||
include::../mergetools-diff.txt[]
|
include::../mergetools-diff.txt[]
|
||||||
|
|
||||||
diff.indentHeuristic::
|
diff.indentHeuristic::
|
||||||
|
@ -1,17 +1,6 @@
|
|||||||
diff.tool::
|
difftool.<tool>.path::
|
||||||
Controls which diff tool is used by linkgit:git-difftool[1].
|
Override the path for the given tool. This is useful in case
|
||||||
This variable overrides the value configured in `merge.tool`.
|
your tool is not in the PATH.
|
||||||
The list below shows the valid built-in values.
|
|
||||||
Any other value is treated as a custom diff tool and requires
|
|
||||||
that a corresponding difftool.<tool>.cmd variable is defined.
|
|
||||||
|
|
||||||
diff.guitool::
|
|
||||||
Controls which diff tool is used by linkgit:git-difftool[1] when
|
|
||||||
the -g/--gui flag is specified. This variable overrides the value
|
|
||||||
configured in `merge.guitool`. The list below shows the valid
|
|
||||||
built-in values. Any other value is treated as a custom diff tool
|
|
||||||
and requires that a corresponding difftool.<guitool>.cmd variable
|
|
||||||
is defined.
|
|
||||||
|
|
||||||
difftool.<tool>.cmd::
|
difftool.<tool>.cmd::
|
||||||
Specify the command to invoke the specified diff tool.
|
Specify the command to invoke the specified diff tool.
|
||||||
@ -20,17 +9,6 @@ difftool.<tool>.cmd::
|
|||||||
file containing the contents of the diff pre-image and 'REMOTE'
|
file containing the contents of the diff pre-image and 'REMOTE'
|
||||||
is set to the name of the temporary file containing the contents
|
is set to the name of the temporary file containing the contents
|
||||||
of the diff post-image.
|
of the diff post-image.
|
||||||
+
|
|
||||||
See the `--tool=<tool>` option in linkgit:git-difftool[1] for more details.
|
|
||||||
|
|
||||||
difftool.<tool>.path::
|
|
||||||
Override the path for the given tool. This is useful in case
|
|
||||||
your tool is not in the PATH.
|
|
||||||
|
|
||||||
difftool.trustExitCode::
|
|
||||||
Exit difftool if the invoked diff tool returns a non-zero exit status.
|
|
||||||
+
|
|
||||||
See the `--trust-exit-code` option in linkgit:git-difftool[1] for more details.
|
|
||||||
|
|
||||||
difftool.prompt::
|
difftool.prompt::
|
||||||
Prompt before each invocation of the diff tool.
|
Prompt before each invocation of the diff tool.
|
||||||
|
@ -6,34 +6,3 @@ extensions.objectFormat::
|
|||||||
Note that this setting should only be set by linkgit:git-init[1] or
|
Note that this setting should only be set by linkgit:git-init[1] or
|
||||||
linkgit:git-clone[1]. Trying to change it after initialization will not
|
linkgit:git-clone[1]. Trying to change it after initialization will not
|
||||||
work and will produce hard-to-diagnose issues.
|
work and will produce hard-to-diagnose issues.
|
||||||
|
|
||||||
extensions.worktreeConfig::
|
|
||||||
If enabled, then worktrees will load config settings from the
|
|
||||||
`$GIT_DIR/config.worktree` file in addition to the
|
|
||||||
`$GIT_COMMON_DIR/config` file. Note that `$GIT_COMMON_DIR` and
|
|
||||||
`$GIT_DIR` are the same for the main working tree, while other
|
|
||||||
working trees have `$GIT_DIR` equal to
|
|
||||||
`$GIT_COMMON_DIR/worktrees/<id>/`. The settings in the
|
|
||||||
`config.worktree` file will override settings from any other
|
|
||||||
config files.
|
|
||||||
+
|
|
||||||
When enabling `extensions.worktreeConfig`, you must be careful to move
|
|
||||||
certain values from the common config file to the main working tree's
|
|
||||||
`config.worktree` file, if present:
|
|
||||||
+
|
|
||||||
* `core.worktree` must be moved from `$GIT_COMMON_DIR/config` to
|
|
||||||
`$GIT_COMMON_DIR/config.worktree`.
|
|
||||||
* If `core.bare` is true, then it must be moved from `$GIT_COMMON_DIR/config`
|
|
||||||
to `$GIT_COMMON_DIR/config.worktree`.
|
|
||||||
+
|
|
||||||
It may also be beneficial to adjust the locations of `core.sparseCheckout`
|
|
||||||
and `core.sparseCheckoutCone` depending on your desire for customizable
|
|
||||||
sparse-checkout settings for each worktree. By default, the `git
|
|
||||||
sparse-checkout` builtin enables `extensions.worktreeConfig`, assigns
|
|
||||||
these config values on a per-worktree basis, and uses the
|
|
||||||
`$GIT_DIR/info/sparse-checkout` file to specify the sparsity for each
|
|
||||||
worktree independently. See linkgit:git-sparse-checkout[1] for more
|
|
||||||
details.
|
|
||||||
+
|
|
||||||
For historical reasons, `extensions.worktreeConfig` is respected
|
|
||||||
regardless of the `core.repositoryFormatVersion` setting.
|
|
||||||
|
@ -14,9 +14,6 @@ feature.experimental::
|
|||||||
+
|
+
|
||||||
* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
|
* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
|
||||||
skipping more commits at a time, reducing the number of round trips.
|
skipping more commits at a time, reducing the number of round trips.
|
||||||
+
|
|
||||||
* `gc.cruftPacks=true` reduces disk space used by unreachable objects during
|
|
||||||
garbage collection, preventing loose object explosions.
|
|
||||||
|
|
||||||
feature.manyFiles::
|
feature.manyFiles::
|
||||||
Enable config options that optimize for repos with many files in the
|
Enable config options that optimize for repos with many files in the
|
||||||
|
@ -56,19 +56,18 @@ fetch.output::
|
|||||||
OUTPUT in linkgit:git-fetch[1] for detail.
|
OUTPUT in linkgit:git-fetch[1] for detail.
|
||||||
|
|
||||||
fetch.negotiationAlgorithm::
|
fetch.negotiationAlgorithm::
|
||||||
Control how information about the commits in the local repository
|
Control how information about the commits in the local repository is
|
||||||
is sent when negotiating the contents of the packfile to be sent by
|
sent when negotiating the contents of the packfile to be sent by the
|
||||||
the server. Set to "consecutive" to use an algorithm that walks
|
server. Set to "skipping" to use an algorithm that skips commits in an
|
||||||
over consecutive commits checking each one. Set to "skipping" to
|
effort to converge faster, but may result in a larger-than-necessary
|
||||||
use an algorithm that skips commits in an effort to converge
|
packfile; or set to "noop" to not send any information at all, which
|
||||||
faster, but may result in a larger-than-necessary packfile; or set
|
will almost certainly result in a larger-than-necessary packfile, but
|
||||||
to "noop" to not send any information at all, which will almost
|
will skip the negotiation step.
|
||||||
certainly result in a larger-than-necessary packfile, but will skip
|
The default is "default" which instructs Git to use the default algorithm
|
||||||
the negotiation step. Set to "default" to override settings made
|
that never skips commits (unless the server has acknowledged it or one
|
||||||
previously and use the default behaviour. The default is normally
|
of its descendants). If `feature.experimental` is enabled, then this
|
||||||
"consecutive", but if `feature.experimental` is true, then the
|
setting defaults to "skipping".
|
||||||
default is "skipping". Unknown values will cause 'git fetch' to
|
Unknown values will cause 'git fetch' to error out.
|
||||||
error out.
|
|
||||||
+
|
+
|
||||||
See also the `--negotiate-only` and `--negotiation-tip` options to
|
See also the `--negotiate-only` and `--negotiation-tip` options to
|
||||||
linkgit:git-fetch[1].
|
linkgit:git-fetch[1].
|
||||||
|
@ -15,10 +15,6 @@ format.from::
|
|||||||
different. If set to a non-boolean value, format-patch uses that
|
different. If set to a non-boolean value, format-patch uses that
|
||||||
value instead of your committer identity. Defaults to false.
|
value instead of your committer identity. Defaults to false.
|
||||||
|
|
||||||
format.forceInBodyFrom::
|
|
||||||
Provides the default value for the `--[no-]force-in-body-from`
|
|
||||||
option to format-patch. Defaults to false.
|
|
||||||
|
|
||||||
format.numbered::
|
format.numbered::
|
||||||
A boolean which can enable or disable sequence numbers in patch
|
A boolean which can enable or disable sequence numbers in patch
|
||||||
subjects. It defaults to "auto" which enables it only if there
|
subjects. It defaults to "auto" which enables it only if there
|
||||||
|
@ -35,10 +35,6 @@ allow new instances of the same breakages go unnoticed.
|
|||||||
Setting an unknown `fsck.<msg-id>` value will cause fsck to die, but
|
Setting an unknown `fsck.<msg-id>` value will cause fsck to die, but
|
||||||
doing the same for `receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>`
|
doing the same for `receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>`
|
||||||
will only cause git to warn.
|
will only cause git to warn.
|
||||||
+
|
|
||||||
See `Fsck Messages` section of linkgit:git-fsck[1] for supported
|
|
||||||
values of `<msg-id>`.
|
|
||||||
|
|
||||||
|
|
||||||
fsck.skipList::
|
fsck.skipList::
|
||||||
The path to a list of object names (i.e. one unabbreviated SHA-1 per
|
The path to a list of object names (i.e. one unabbreviated SHA-1 per
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
fsmonitor.allowRemote::
|
|
||||||
By default, the fsmonitor daemon refuses to work against network-mounted
|
|
||||||
repositories. Setting `fsmonitor.allowRemote` to `true` overrides this
|
|
||||||
behavior. Only respected when `core.fsmonitor` is set to `true`.
|
|
||||||
|
|
||||||
fsmonitor.socketDir::
|
|
||||||
This Mac OS-specific option, if set, specifies the directory in
|
|
||||||
which to create the Unix domain socket used for communication
|
|
||||||
between the fsmonitor daemon and various Git commands. The directory must
|
|
||||||
reside on a native Mac OS filesystem. Only respected when `core.fsmonitor`
|
|
||||||
is set to `true`.
|
|
@ -81,21 +81,14 @@ gc.packRefs::
|
|||||||
to enable it within all non-bare repos or it can be set to a
|
to enable it within all non-bare repos or it can be set to a
|
||||||
boolean value. The default is `true`.
|
boolean value. The default is `true`.
|
||||||
|
|
||||||
gc.cruftPacks::
|
|
||||||
Store unreachable objects in a cruft pack (see
|
|
||||||
linkgit:git-repack[1]) instead of as loose objects. The default
|
|
||||||
is `false`.
|
|
||||||
|
|
||||||
gc.pruneExpire::
|
gc.pruneExpire::
|
||||||
When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'
|
When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.
|
||||||
(and 'repack --cruft --cruft-expiration 2.weeks.ago' if using
|
Override the grace period with this config variable. The value
|
||||||
cruft packs via `gc.cruftPacks` or `--cruft`). Override the
|
"now" may be used to disable this grace period and always prune
|
||||||
grace period with this config variable. The value "now" may be
|
unreachable objects immediately, or "never" may be used to
|
||||||
used to disable this grace period and always prune unreachable
|
suppress pruning. This feature helps prevent corruption when
|
||||||
objects immediately, or "never" may be used to suppress pruning.
|
'git gc' runs concurrently with another process writing to the
|
||||||
This feature helps prevent corruption when 'git gc' runs
|
repository; see the "NOTES" section of linkgit:git-gc[1].
|
||||||
concurrently with another process writing to the repository; see
|
|
||||||
the "NOTES" section of linkgit:git-gc[1].
|
|
||||||
|
|
||||||
gc.worktreePruneExpire::
|
gc.worktreePruneExpire::
|
||||||
When 'git gc' is run, it calls
|
When 'git gc' is run, it calls
|
||||||
|
@ -36,12 +36,9 @@ gpg.minTrustLevel::
|
|||||||
|
|
||||||
gpg.ssh.defaultKeyCommand::
|
gpg.ssh.defaultKeyCommand::
|
||||||
This command that will be run when user.signingkey is not set and a ssh
|
This command that will be run when user.signingkey is not set and a ssh
|
||||||
signature is requested. On successful exit a valid ssh public key
|
signature is requested. On successful exit a valid ssh public key is
|
||||||
prefixed with `key::` is expected in the first line of its output.
|
expected in the first line of its output. To automatically use the first
|
||||||
This allows for a script doing a dynamic lookup of the correct public
|
available key from your ssh-agent set this to "ssh-add -L".
|
||||||
key when it is impractical to statically configure `user.signingKey`.
|
|
||||||
For example when keys or SSH Certificates are rotated frequently or
|
|
||||||
selection of the right key depends on external factors unknown to git.
|
|
||||||
|
|
||||||
gpg.ssh.allowedSignersFile::
|
gpg.ssh.allowedSignersFile::
|
||||||
A file containing ssh public keys which you are willing to trust.
|
A file containing ssh public keys which you are willing to trust.
|
||||||
@ -69,7 +66,7 @@ This way only committers with an already valid key can add or change keys in the
|
|||||||
+
|
+
|
||||||
Since OpensSSH 8.8 this file allows specifying a key lifetime using valid-after &
|
Since OpensSSH 8.8 this file allows specifying a key lifetime using valid-after &
|
||||||
valid-before options. Git will mark signatures as valid if the signing key was
|
valid-before options. Git will mark signatures as valid if the signing key was
|
||||||
valid at the time of the signature's creation. This allows users to change a
|
valid at the time of the signatures creation. This allows users to change a
|
||||||
signing key without invalidating all previously made signatures.
|
signing key without invalidating all previously made signatures.
|
||||||
+
|
+
|
||||||
Using a SSH CA key with the cert-authority option
|
Using a SSH CA key with the cert-authority option
|
||||||
|
@ -17,11 +17,8 @@ grep.extendedRegexp::
|
|||||||
other than 'default'.
|
other than 'default'.
|
||||||
|
|
||||||
grep.threads::
|
grep.threads::
|
||||||
Number of grep worker threads to use. If unset (or set to 0), Git will
|
Number of grep worker threads to use.
|
||||||
use as many threads as the number of logical cores available.
|
See `grep.threads` in linkgit:git-grep[1] for more information.
|
||||||
|
|
||||||
grep.fullName::
|
|
||||||
If set to true, enable `--full-name` option by default.
|
|
||||||
|
|
||||||
grep.fallbackToNoIndex::
|
grep.fallbackToNoIndex::
|
||||||
If set to true, fall back to git grep --no-index if git grep
|
If set to true, fall back to git grep --no-index if git grep
|
||||||
|
@ -98,22 +98,6 @@ http.version::
|
|||||||
- HTTP/2
|
- HTTP/2
|
||||||
- HTTP/1.1
|
- HTTP/1.1
|
||||||
|
|
||||||
http.curloptResolve::
|
|
||||||
Hostname resolution information that will be used first by
|
|
||||||
libcurl when sending HTTP requests. This information should
|
|
||||||
be in one of the following formats:
|
|
||||||
|
|
||||||
- [+]HOST:PORT:ADDRESS[,ADDRESS]
|
|
||||||
- -HOST:PORT
|
|
||||||
|
|
||||||
+
|
|
||||||
The first format redirects all requests to the given `HOST:PORT`
|
|
||||||
to the provided `ADDRESS`(s). The second format clears all
|
|
||||||
previous config values for that `HOST:PORT` combination. To
|
|
||||||
allow easy overriding of all the settings inherited from the
|
|
||||||
system config, an empty value will reset all resolution
|
|
||||||
information to the empty list.
|
|
||||||
|
|
||||||
http.sslVersion::
|
http.sslVersion::
|
||||||
The SSL version to use when negotiating an SSL connection, if you
|
The SSL version to use when negotiating an SSL connection, if you
|
||||||
want to force the default. The available and default version
|
want to force the default. The available and default version
|
||||||
@ -203,7 +187,7 @@ http.schannelUseSSLCAInfo::
|
|||||||
when the `schannel` backend was configured via `http.sslBackend`,
|
when the `schannel` backend was configured via `http.sslBackend`,
|
||||||
unless `http.schannelUseSSLCAInfo` overrides this behavior.
|
unless `http.schannelUseSSLCAInfo` overrides this behavior.
|
||||||
|
|
||||||
http.pinnedPubkey::
|
http.pinnedpubkey::
|
||||||
Public key of the https service. It may either be the filename of
|
Public key of the https service. It may either be the filename of
|
||||||
a PEM or DER encoded public key file or a string starting with
|
a PEM or DER encoded public key file or a string starting with
|
||||||
'sha256//' followed by the base64 encoded sha256 hash of the
|
'sha256//' followed by the base64 encoded sha256 hash of the
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
include.path::
|
|
||||||
includeIf.<condition>.path::
|
|
||||||
Special variables to include other configuration files. See
|
|
||||||
the "CONFIGURATION FILE" section in the main
|
|
||||||
linkgit:git-config[1] documentation,
|
|
||||||
specifically the "Includes" and "Conditional Includes" subsections.
|
|
@ -7,10 +7,6 @@ log.date::
|
|||||||
Set the default date-time mode for the 'log' command.
|
Set the default date-time mode for the 'log' command.
|
||||||
Setting a value for log.date is similar to using 'git log''s
|
Setting a value for log.date is similar to using 'git log''s
|
||||||
`--date` option. See linkgit:git-log[1] for details.
|
`--date` option. See linkgit:git-log[1] for details.
|
||||||
+
|
|
||||||
If the format is set to "auto:foo" and the pager is in use, format
|
|
||||||
"foo" will be the used for the date format. Otherwise "default" will
|
|
||||||
be used.
|
|
||||||
|
|
||||||
log.decorate::
|
log.decorate::
|
||||||
Print out the ref names of any commits that are shown by the log
|
Print out the ref names of any commits that are shown by the log
|
||||||
@ -22,11 +18,6 @@ log.decorate::
|
|||||||
names are shown. This is the same as the `--decorate` option
|
names are shown. This is the same as the `--decorate` option
|
||||||
of the `git log`.
|
of the `git log`.
|
||||||
|
|
||||||
log.initialDecorationSet::
|
|
||||||
By default, `git log` only shows decorations for certain known ref
|
|
||||||
namespaces. If 'all' is specified, then show all refs as
|
|
||||||
decorations.
|
|
||||||
|
|
||||||
log.excludeDecoration::
|
log.excludeDecoration::
|
||||||
Exclude the specified patterns from the log decorations. This is
|
Exclude the specified patterns from the log decorations. This is
|
||||||
similar to the `--decorate-refs-exclude` command-line option, but
|
similar to the `--decorate-refs-exclude` command-line option, but
|
||||||
@ -34,9 +25,9 @@ log.excludeDecoration::
|
|||||||
option.
|
option.
|
||||||
|
|
||||||
log.diffMerges::
|
log.diffMerges::
|
||||||
Set diff format to be used when `--diff-merges=on` is
|
Set default diff format to be used for merge commits. See
|
||||||
specified, see `--diff-merges` in linkgit:git-log[1] for
|
`--diff-merges` in linkgit:git-log[1] for details.
|
||||||
details. Defaults to `separate`.
|
Defaults to `separate`.
|
||||||
|
|
||||||
log.follow::
|
log.follow::
|
||||||
If `true`, `git log` will act as if the `--follow` option was used when
|
If `true`, `git log` will act as if the `--follow` option was used when
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
lsrefs.unborn::
|
lsrefs.unborn::
|
||||||
May be "advertise" (the default), "allow", or "ignore". If "advertise",
|
May be "advertise" (the default), "allow", or "ignore". If "advertise",
|
||||||
the server will respond to the client sending "unborn" (as described in
|
the server will respond to the client sending "unborn" (as described in
|
||||||
linkgit:gitprotocol-v2[5]) and will advertise support for this feature during the
|
protocol-v2.txt) and will advertise support for this feature during the
|
||||||
protocol v2 capability advertisement. "allow" is the same as
|
protocol v2 capability advertisement. "allow" is the same as
|
||||||
"advertise" except that the server will not advertise support for this
|
"advertise" except that the server will not advertise support for this
|
||||||
feature; this is useful for load-balanced servers that cannot be
|
feature; this is useful for load-balanced servers that cannot be
|
||||||
|
@ -45,21 +45,12 @@ mergetool.meld.useAutoMerge::
|
|||||||
value of `false` avoids using `--auto-merge` altogether, and is the
|
value of `false` avoids using `--auto-merge` altogether, and is the
|
||||||
default value.
|
default value.
|
||||||
|
|
||||||
mergetool.vimdiff.layout::
|
|
||||||
The vimdiff backend uses this variable to control how its split
|
|
||||||
windows look like. Applies even if you are using Neovim (`nvim`) or
|
|
||||||
gVim (`gvim`) as the merge tool. See BACKEND SPECIFIC HINTS section
|
|
||||||
ifndef::git-mergetool[]
|
|
||||||
in linkgit:git-mergetool[1].
|
|
||||||
endif::[]
|
|
||||||
for details.
|
|
||||||
|
|
||||||
mergetool.hideResolved::
|
mergetool.hideResolved::
|
||||||
During a merge Git will automatically resolve as many conflicts as
|
During a merge Git will automatically resolve as many conflicts as
|
||||||
possible and write the 'MERGED' file containing conflict markers around
|
possible and write the 'MERGED' file containing conflict markers around
|
||||||
any conflicts that it cannot resolve; 'LOCAL' and 'REMOTE' normally
|
any conflicts that it cannot resolve; 'LOCAL' and 'REMOTE' normally
|
||||||
represent the versions of the file from before Git's conflict
|
represent the versions of the file from before Git's conflict
|
||||||
resolution. This flag causes 'LOCAL' and 'REMOTE' to be overwritten so
|
resolution. This flag causes 'LOCAL' and 'REMOTE' to be overwriten so
|
||||||
that only the unresolved conflicts are presented to the merge tool. Can
|
that only the unresolved conflicts are presented to the merge tool. Can
|
||||||
be configured per-tool via the `mergetool.<tool>.hideResolved`
|
be configured per-tool via the `mergetool.<tool>.hideResolved`
|
||||||
configuration variable. Defaults to `false`.
|
configuration variable. Defaults to `false`.
|
||||||
|
@ -3,9 +3,6 @@ notes.mergeStrategy::
|
|||||||
conflicts. Must be one of `manual`, `ours`, `theirs`, `union`, or
|
conflicts. Must be one of `manual`, `ours`, `theirs`, `union`, or
|
||||||
`cat_sort_uniq`. Defaults to `manual`. See "NOTES MERGE STRATEGIES"
|
`cat_sort_uniq`. Defaults to `manual`. See "NOTES MERGE STRATEGIES"
|
||||||
section of linkgit:git-notes[1] for more information on each strategy.
|
section of linkgit:git-notes[1] for more information on each strategy.
|
||||||
+
|
|
||||||
This setting can be overridden by passing the `--strategy` option to
|
|
||||||
linkgit:git-notes[1].
|
|
||||||
|
|
||||||
notes.<name>.mergeStrategy::
|
notes.<name>.mergeStrategy::
|
||||||
Which merge strategy to choose when doing a notes merge into
|
Which merge strategy to choose when doing a notes merge into
|
||||||
@ -14,35 +11,28 @@ notes.<name>.mergeStrategy::
|
|||||||
linkgit:git-notes[1] for more information on the available strategies.
|
linkgit:git-notes[1] for more information on the available strategies.
|
||||||
|
|
||||||
notes.displayRef::
|
notes.displayRef::
|
||||||
Which ref (or refs, if a glob or specified more than once), in
|
The (fully qualified) refname from which to show notes when
|
||||||
addition to the default set by `core.notesRef` or
|
showing commit messages. The value of this variable can be set
|
||||||
`GIT_NOTES_REF`, to read notes from when showing commit
|
to a glob, in which case notes from all matching refs will be
|
||||||
messages with the 'git log' family of commands.
|
shown. You may also specify this configuration variable
|
||||||
|
several times. A warning will be issued for refs that do not
|
||||||
|
exist, but a glob that does not match any refs is silently
|
||||||
|
ignored.
|
||||||
+
|
+
|
||||||
This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`
|
This setting can be overridden with the `GIT_NOTES_DISPLAY_REF`
|
||||||
environment variable, which must be a colon separated list of refs or
|
environment variable, which must be a colon separated list of refs or
|
||||||
globs.
|
globs.
|
||||||
+
|
+
|
||||||
A warning will be issued for refs that do not exist,
|
|
||||||
but a glob that does not match any refs is silently ignored.
|
|
||||||
+
|
|
||||||
This setting can be disabled by the `--no-notes` option to the 'git
|
|
||||||
log' family of commands, or by the `--notes=<ref>` option accepted by
|
|
||||||
those commands.
|
|
||||||
+
|
|
||||||
The effective value of "core.notesRef" (possibly overridden by
|
The effective value of "core.notesRef" (possibly overridden by
|
||||||
GIT_NOTES_REF) is also implicitly added to the list of refs to be
|
GIT_NOTES_REF) is also implicitly added to the list of refs to be
|
||||||
displayed.
|
displayed.
|
||||||
|
|
||||||
notes.rewrite.<command>::
|
notes.rewrite.<command>::
|
||||||
When rewriting commits with <command> (currently `amend` or
|
When rewriting commits with <command> (currently `amend` or
|
||||||
`rebase`), if this variable is `false`, git will not copy
|
`rebase`) and this variable is set to `true`, Git
|
||||||
notes from the original to the rewritten commit. Defaults to
|
automatically copies your notes from the original to the
|
||||||
`true`. See also "`notes.rewriteRef`" below.
|
rewritten commit. Defaults to `true`, but see
|
||||||
+
|
"notes.rewriteRef" below.
|
||||||
This setting can be overridden with the `GIT_NOTES_REWRITE_REF`
|
|
||||||
environment variable, which must be a colon separated list of refs or
|
|
||||||
globs.
|
|
||||||
|
|
||||||
notes.rewriteMode::
|
notes.rewriteMode::
|
||||||
When copying notes during a rewrite (see the
|
When copying notes during a rewrite (see the
|
||||||
@ -56,13 +46,14 @@ environment variable.
|
|||||||
|
|
||||||
notes.rewriteRef::
|
notes.rewriteRef::
|
||||||
When copying notes during a rewrite, specifies the (fully
|
When copying notes during a rewrite, specifies the (fully
|
||||||
qualified) ref whose notes should be copied. May be a glob,
|
qualified) ref whose notes should be copied. The ref may be a
|
||||||
in which case notes in all matching refs will be copied. You
|
glob, in which case notes in all matching refs will be copied.
|
||||||
may also specify this configuration several times.
|
You may also specify this configuration several times.
|
||||||
+
|
+
|
||||||
Does not have a default value; you must configure this variable to
|
Does not have a default value; you must configure this variable to
|
||||||
enable note rewriting. Set it to `refs/notes/commits` to enable
|
enable note rewriting. Set it to `refs/notes/commits` to enable
|
||||||
rewriting for the default commit notes.
|
rewriting for the default commit notes.
|
||||||
+
|
+
|
||||||
Can be overridden with the `GIT_NOTES_REWRITE_REF` environment variable.
|
This setting can be overridden with the `GIT_NOTES_REWRITE_REF`
|
||||||
See `notes.rewrite.<command>` above for a further description of its format.
|
environment variable, which must be a colon separated list of refs or
|
||||||
|
globs.
|
||||||
|
@ -164,16 +164,9 @@ When writing a multi-pack reachability bitmap, no new namehashes are
|
|||||||
computed; instead, any namehashes stored in an existing bitmap are
|
computed; instead, any namehashes stored in an existing bitmap are
|
||||||
permuted into their appropriate location when writing a new bitmap.
|
permuted into their appropriate location when writing a new bitmap.
|
||||||
|
|
||||||
pack.writeBitmapLookupTable::
|
|
||||||
When true, Git will include a "lookup table" section in the
|
|
||||||
bitmap index (if one is written). This table is used to defer
|
|
||||||
loading individual bitmaps as late as possible. This can be
|
|
||||||
beneficial in repositories that have relatively large bitmap
|
|
||||||
indexes. Defaults to false.
|
|
||||||
|
|
||||||
pack.writeReverseIndex::
|
pack.writeReverseIndex::
|
||||||
When true, git will write a corresponding .rev file (see:
|
When true, git will write a corresponding .rev file (see:
|
||||||
linkgit:gitformat-pack[5])
|
link:../technical/pack-format.html[Documentation/technical/pack-format.txt])
|
||||||
for each new packfile that it writes in all places except for
|
for each new packfile that it writes in all places except for
|
||||||
linkgit:git-fast-import[1] and in the bulk checkin mechanism.
|
linkgit:git-fast-import[1] and in the bulk checkin mechanism.
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
|
@ -58,6 +58,6 @@ protocol.version::
|
|||||||
* `1` - the original wire protocol with the addition of a version string
|
* `1` - the original wire protocol with the addition of a version string
|
||||||
in the initial response from the server.
|
in the initial response from the server.
|
||||||
|
|
||||||
* `2` - Wire protocol version 2, see linkgit:gitprotocol-v2[5].
|
* `2` - link:technical/protocol-v2.html[wire protocol version 2].
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -1,14 +1,3 @@
|
|||||||
push.autoSetupRemote::
|
|
||||||
If set to "true" assume `--set-upstream` on default push when no
|
|
||||||
upstream tracking exists for the current branch; this option
|
|
||||||
takes effect with push.default options 'simple', 'upstream',
|
|
||||||
and 'current'. It is useful if by default you want new branches
|
|
||||||
to be pushed to the default remote (like the behavior of
|
|
||||||
'push.default=current') and you also want the upstream tracking
|
|
||||||
to be set. Workflows most likely to benefit from this option are
|
|
||||||
'simple' central workflows where all branches are expected to
|
|
||||||
have the same name on the remote.
|
|
||||||
|
|
||||||
push.default::
|
push.default::
|
||||||
Defines the action `git push` should take if no refspec is
|
Defines the action `git push` should take if no refspec is
|
||||||
given (whether from the command-line, config, or elsewhere).
|
given (whether from the command-line, config, or elsewhere).
|
||||||
@ -110,8 +99,18 @@ This will result in only b (a and c are cleared).
|
|||||||
----
|
----
|
||||||
|
|
||||||
push.recurseSubmodules::
|
push.recurseSubmodules::
|
||||||
May be "check", "on-demand", "only", or "no", with the same behavior
|
Make sure all submodule commits used by the revisions to be pushed
|
||||||
as that of "push --recurse-submodules".
|
are available on a remote-tracking branch. If the value is 'check'
|
||||||
|
then Git will verify that all submodule commits that changed in the
|
||||||
|
revisions to be pushed are available on at least one remote of the
|
||||||
|
submodule. If any commits are missing, the push will be aborted and
|
||||||
|
exit with non-zero status. If the value is 'on-demand' then all
|
||||||
|
submodules that changed in the revisions to be pushed will be
|
||||||
|
pushed. If on-demand was not able to push all necessary revisions
|
||||||
|
it will also be aborted and exit with non-zero status. If the value
|
||||||
|
is 'no' then default behavior of ignoring submodules when pushing
|
||||||
|
is retained. You may override this configuration at time of push by
|
||||||
|
specifying '--recurse-submodules=check|on-demand|no'.
|
||||||
If not set, 'no' is used by default, unless 'submodule.recurse' is
|
If not set, 'no' is used by default, unless 'submodule.recurse' is
|
||||||
set (in which case a 'true' value means 'on-demand').
|
set (in which case a 'true' value means 'on-demand').
|
||||||
|
|
||||||
@ -127,8 +126,3 @@ push.negotiate::
|
|||||||
server attempt to find commits in common. If "false", Git will
|
server attempt to find commits in common. If "false", Git will
|
||||||
rely solely on the server's ref advertisement to find commits
|
rely solely on the server's ref advertisement to find commits
|
||||||
in common.
|
in common.
|
||||||
|
|
||||||
push.useBitmaps::
|
|
||||||
If set to "false", disable use of bitmaps for "git push" even if
|
|
||||||
`pack.useBitmaps` is "true", without preventing other git operations
|
|
||||||
from using bitmaps. Default is true.
|
|
||||||
|
@ -21,9 +21,6 @@ rebase.autoStash::
|
|||||||
`--autostash` options of linkgit:git-rebase[1].
|
`--autostash` options of linkgit:git-rebase[1].
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
|
|
||||||
rebase.updateRefs::
|
|
||||||
If set to true enable `--update-refs` option by default.
|
|
||||||
|
|
||||||
rebase.missingCommitsCheck::
|
rebase.missingCommitsCheck::
|
||||||
If set to "warn", git rebase -i will print a warning if some
|
If set to "warn", git rebase -i will print a warning if some
|
||||||
commits are removed (e.g. a line was deleted), however the
|
commits are removed (e.g. a line was deleted), however the
|
||||||
|
@ -82,7 +82,5 @@ remote.<name>.promisor::
|
|||||||
objects.
|
objects.
|
||||||
|
|
||||||
remote.<name>.partialclonefilter::
|
remote.<name>.partialclonefilter::
|
||||||
The filter that will be applied when fetching from this promisor remote.
|
The filter that will be applied when fetching from this
|
||||||
Changing or clearing this value will only affect fetches for new commits.
|
promisor remote.
|
||||||
To fetch associated objects for commits already present in the local object
|
|
||||||
database, use the `--refetch` option of linkgit:git-fetch[1].
|
|
||||||
|
@ -25,17 +25,3 @@ repack.writeBitmaps::
|
|||||||
space and extra time spent on the initial repack. This has
|
space and extra time spent on the initial repack. This has
|
||||||
no effect if multiple packfiles are created.
|
no effect if multiple packfiles are created.
|
||||||
Defaults to true on bare repos, false otherwise.
|
Defaults to true on bare repos, false otherwise.
|
||||||
|
|
||||||
repack.updateServerInfo::
|
|
||||||
If set to false, linkgit:git-repack[1] will not run
|
|
||||||
linkgit:git-update-server-info[1]. Defaults to true. Can be overridden
|
|
||||||
when true by the `-n` option of linkgit:git-repack[1].
|
|
||||||
|
|
||||||
repack.cruftWindow::
|
|
||||||
repack.cruftWindowMemory::
|
|
||||||
repack.cruftDepth::
|
|
||||||
repack.cruftThreads::
|
|
||||||
Parameters used by linkgit:git-pack-objects[1] when generating
|
|
||||||
a cruft pack and the respective parameters are not given over
|
|
||||||
the command line. See similarly named `pack.*` configuration
|
|
||||||
variables for defaults and meaning.
|
|
||||||
|
2
Documentation/config/reset.txt
Normal file
2
Documentation/config/reset.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
reset.quiet::
|
||||||
|
When set to true, 'git reset' will default to the '--quiet' option.
|
@ -1,3 +0,0 @@
|
|||||||
revert.reference::
|
|
||||||
Setting this variable to true makes `git revert` behave
|
|
||||||
as if the `--reference` option is given.
|
|
@ -1,22 +1,3 @@
|
|||||||
safe.bareRepository::
|
|
||||||
Specifies which bare repositories Git will work with. The currently
|
|
||||||
supported values are:
|
|
||||||
+
|
|
||||||
* `all`: Git works with all bare repositories. This is the default.
|
|
||||||
* `explicit`: Git only works with bare repositories specified via
|
|
||||||
the top-level `--git-dir` command-line option, or the `GIT_DIR`
|
|
||||||
environment variable (see linkgit:git[1]).
|
|
||||||
+
|
|
||||||
If you do not use bare repositories in your workflow, then it may be
|
|
||||||
beneficial to set `safe.bareRepository` to `explicit` in your global
|
|
||||||
config. This will protect you from attacks that involve cloning a
|
|
||||||
repository that contains a bare repository and running a Git command
|
|
||||||
within that directory.
|
|
||||||
+
|
|
||||||
This config setting is only respected in protected configuration (see
|
|
||||||
<<SCOPES>>). This prevents the untrusted repository from tampering with
|
|
||||||
this value.
|
|
||||||
|
|
||||||
safe.directory::
|
safe.directory::
|
||||||
These config entries specify Git-tracked directories that are
|
These config entries specify Git-tracked directories that are
|
||||||
considered safe even if they are owned by someone other than the
|
considered safe even if they are owned by someone other than the
|
||||||
@ -31,9 +12,9 @@ via `git config --add`. To reset the list of safe directories (e.g. to
|
|||||||
override any such directories specified in the system config), add a
|
override any such directories specified in the system config), add a
|
||||||
`safe.directory` entry with an empty value.
|
`safe.directory` entry with an empty value.
|
||||||
+
|
+
|
||||||
This config setting is only respected in protected configuration (see
|
This config setting is only respected when specified in a system or global
|
||||||
<<SCOPES>>). This prevents the untrusted repository from tampering with this
|
config, not when it is specified in a repository config or via the command
|
||||||
value.
|
line option `-c safe.directory=<path>`.
|
||||||
+
|
+
|
||||||
The value of this setting is interpolated, i.e. `~/<path>` expands to a
|
The value of this setting is interpolated, i.e. `~/<path>` expands to a
|
||||||
path relative to the home directory and `%(prefix)/<path>` expands to a
|
path relative to the home directory and `%(prefix)/<path>` expands to a
|
||||||
|
@ -18,49 +18,17 @@ sendemail.<identity>.*::
|
|||||||
identity is selected, through either the command-line or
|
identity is selected, through either the command-line or
|
||||||
`sendemail.identity`.
|
`sendemail.identity`.
|
||||||
|
|
||||||
sendemail.multiEdit::
|
|
||||||
If true (default), a single editor instance will be spawned to edit
|
|
||||||
files you have to edit (patches when `--annotate` is used, and the
|
|
||||||
summary when `--compose` is used). If false, files will be edited one
|
|
||||||
after the other, spawning a new editor each time.
|
|
||||||
|
|
||||||
sendemail.confirm::
|
|
||||||
Sets the default for whether to confirm before sending. Must be
|
|
||||||
one of 'always', 'never', 'cc', 'compose', or 'auto'. See `--confirm`
|
|
||||||
in the linkgit:git-send-email[1] documentation for the meaning of these
|
|
||||||
values.
|
|
||||||
|
|
||||||
sendemail.aliasesFile::
|
sendemail.aliasesFile::
|
||||||
To avoid typing long email addresses, point this to one or more
|
|
||||||
email aliases files. You must also supply `sendemail.aliasFileType`.
|
|
||||||
|
|
||||||
sendemail.aliasFileType::
|
sendemail.aliasFileType::
|
||||||
Format of the file(s) specified in sendemail.aliasesFile. Must be
|
|
||||||
one of 'mutt', 'mailrc', 'pine', 'elm', or 'gnus', or 'sendmail'.
|
|
||||||
+
|
|
||||||
What an alias file in each format looks like can be found in
|
|
||||||
the documentation of the email program of the same name. The
|
|
||||||
differences and limitations from the standard formats are
|
|
||||||
described below:
|
|
||||||
+
|
|
||||||
--
|
|
||||||
sendmail;;
|
|
||||||
* Quoted aliases and quoted addresses are not supported: lines that
|
|
||||||
contain a `"` symbol are ignored.
|
|
||||||
* Redirection to a file (`/path/name`) or pipe (`|command`) is not
|
|
||||||
supported.
|
|
||||||
* File inclusion (`:include: /path/name`) is not supported.
|
|
||||||
* Warnings are printed on the standard error output for any
|
|
||||||
explicitly unsupported constructs, and any other lines that are not
|
|
||||||
recognized by the parser.
|
|
||||||
--
|
|
||||||
sendemail.annotate::
|
sendemail.annotate::
|
||||||
sendemail.bcc::
|
sendemail.bcc::
|
||||||
sendemail.cc::
|
sendemail.cc::
|
||||||
sendemail.ccCmd::
|
sendemail.ccCmd::
|
||||||
sendemail.chainReplyTo::
|
sendemail.chainReplyTo::
|
||||||
|
sendemail.confirm::
|
||||||
sendemail.envelopeSender::
|
sendemail.envelopeSender::
|
||||||
sendemail.from::
|
sendemail.from::
|
||||||
|
sendemail.multiEdit::
|
||||||
sendemail.signedoffbycc::
|
sendemail.signedoffbycc::
|
||||||
sendemail.smtpPass::
|
sendemail.smtpPass::
|
||||||
sendemail.suppresscc::
|
sendemail.suppresscc::
|
||||||
@ -76,9 +44,7 @@ sendemail.thread::
|
|||||||
sendemail.transferEncoding::
|
sendemail.transferEncoding::
|
||||||
sendemail.validate::
|
sendemail.validate::
|
||||||
sendemail.xmailer::
|
sendemail.xmailer::
|
||||||
These configuration variables all provide a default for
|
See linkgit:git-send-email[1] for description.
|
||||||
linkgit:git-send-email[1] command-line options. See its
|
|
||||||
documentation for details.
|
|
||||||
|
|
||||||
sendemail.signedoffcc (deprecated)::
|
sendemail.signedoffcc (deprecated)::
|
||||||
Deprecated alias for `sendemail.signedoffbycc`.
|
Deprecated alias for `sendemail.signedoffbycc`.
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
sparse.expectFilesOutsideOfPatterns::
|
|
||||||
Typically with sparse checkouts, files not matching any
|
|
||||||
sparsity patterns are marked with a SKIP_WORKTREE bit in the
|
|
||||||
index and are missing from the working tree. Accordingly, Git
|
|
||||||
will ordinarily check whether files with the SKIP_WORKTREE bit
|
|
||||||
are in fact present in the working tree contrary to
|
|
||||||
expectations. If Git finds any, it marks those paths as
|
|
||||||
present by clearing the relevant SKIP_WORKTREE bits. This
|
|
||||||
option can be used to tell Git that such
|
|
||||||
present-despite-skipped files are expected and to stop
|
|
||||||
checking for them.
|
|
||||||
+
|
|
||||||
The default is `false`, which allows Git to automatically recover
|
|
||||||
from the list of files in the index and working tree falling out of
|
|
||||||
sync.
|
|
||||||
+
|
|
||||||
Set this to `true` if you are in a setup where some external factor
|
|
||||||
relieves Git of the responsibility for maintaining the consistency
|
|
||||||
between the presence of working tree files and sparsity patterns. For
|
|
||||||
example, if you have a Git-aware virtual file system that has a robust
|
|
||||||
mechanism for keeping the working tree and the sparsity patterns up to
|
|
||||||
date based on access patterns.
|
|
||||||
+
|
|
||||||
Regardless of this setting, Git does not check for
|
|
||||||
present-despite-skipped files unless sparse checkout is enabled, so
|
|
||||||
this config option has no effect unless `core.sparseCheckout` is
|
|
||||||
`true`.
|
|
@ -1,3 +1,10 @@
|
|||||||
|
stash.useBuiltin::
|
||||||
|
Unused configuration variable. Used in Git versions 2.22 to
|
||||||
|
2.26 as an escape hatch to enable the legacy shellscript
|
||||||
|
implementation of stash. 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.
|
||||||
|
|
||||||
stash.showIncludeUntracked::
|
stash.showIncludeUntracked::
|
||||||
If this is set to true, the `git stash show` command will show
|
If this is set to true, the `git stash show` command will show
|
||||||
the untracked files of a stash entry. Defaults to false. See
|
the untracked files of a stash entry. Defaults to false. See
|
||||||
|
@ -59,33 +59,18 @@ submodule.active::
|
|||||||
|
|
||||||
submodule.recurse::
|
submodule.recurse::
|
||||||
A boolean indicating if commands should enable the `--recurse-submodules`
|
A boolean indicating if commands should enable the `--recurse-submodules`
|
||||||
option by default. Defaults to false.
|
option by default.
|
||||||
+
|
Applies to all commands that support this option
|
||||||
When set to true, it can be deactivated via the
|
(`checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`, `reset`,
|
||||||
`--no-recurse-submodules` option. Note that some Git commands
|
`restore` and `switch`) except `clone` and `ls-files`.
|
||||||
lacking this option may call some of the above commands affected by
|
|
||||||
`submodule.recurse`; for instance `git remote update` will call
|
|
||||||
`git fetch` but does not have a `--no-recurse-submodules` option.
|
|
||||||
For these commands a workaround is to temporarily change the
|
|
||||||
configuration value by using `git -c submodule.recurse=0`.
|
|
||||||
+
|
|
||||||
The following list shows the commands that accept
|
|
||||||
`--recurse-submodules` and whether they are supported by this
|
|
||||||
setting.
|
|
||||||
|
|
||||||
* `checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`,
|
|
||||||
`reset`, `restore` and `switch` are always supported.
|
|
||||||
* `clone` and `ls-files` are not supported.
|
|
||||||
* `branch` is supported only if `submodule.propagateBranches` is
|
|
||||||
enabled
|
|
||||||
|
|
||||||
submodule.propagateBranches::
|
|
||||||
[EXPERIMENTAL] A boolean that enables branching support when
|
|
||||||
using `--recurse-submodules` or `submodule.recurse=true`.
|
|
||||||
Enabling this will allow certain commands to accept
|
|
||||||
`--recurse-submodules` and certain commands that already accept
|
|
||||||
`--recurse-submodules` will now consider branches.
|
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
|
When set to true, it can be deactivated via the
|
||||||
|
`--no-recurse-submodules` option. Note that some Git commands
|
||||||
|
lacking this option may call some of the above commands affected by
|
||||||
|
`submodule.recurse`; for instance `git remote update` will call
|
||||||
|
`git fetch` but does not have a `--no-recurse-submodules` option.
|
||||||
|
For these commands a workaround is to temporarily change the
|
||||||
|
configuration value by using `git -c submodule.recurse=0`.
|
||||||
|
|
||||||
submodule.fetchJobs::
|
submodule.fetchJobs::
|
||||||
Specifies how many submodules are fetched/cloned at the same time.
|
Specifies how many submodules are fetched/cloned at the same time.
|
||||||
|
@ -1,41 +1,3 @@
|
|||||||
transfer.credentialsInUrl::
|
|
||||||
A configured URL can contain plaintext credentials in the form
|
|
||||||
`<protocol>://<user>:<password>@<domain>/<path>`. You may want
|
|
||||||
to warn or forbid the use of such configuration (in favor of
|
|
||||||
using linkgit:git-credential[1]). This will be used on
|
|
||||||
linkgit:git-clone[1], linkgit:git-fetch[1], linkgit:git-push[1],
|
|
||||||
and any other direct use of the configured URL.
|
|
||||||
+
|
|
||||||
Note that this is currently limited to detecting credentials in
|
|
||||||
`remote.<name>.url` configuration, it won't detect credentials in
|
|
||||||
`remote.<name>.pushurl` configuration.
|
|
||||||
+
|
|
||||||
You might want to enable this to prevent inadvertent credentials
|
|
||||||
exposure, e.g. because:
|
|
||||||
+
|
|
||||||
* The OS or system where you're running git may not provide a way or
|
|
||||||
otherwise allow you to configure the permissions of the
|
|
||||||
configuration file where the username and/or password are stored.
|
|
||||||
* Even if it does, having such data stored "at rest" might expose you
|
|
||||||
in other ways, e.g. a backup process might copy the data to another
|
|
||||||
system.
|
|
||||||
* The git programs will pass the full URL to one another as arguments
|
|
||||||
on the command-line, meaning the credentials will be exposed to other
|
|
||||||
users on OS's or systems that allow other users to see the full
|
|
||||||
process list of other users. On linux the "hidepid" setting
|
|
||||||
documented in procfs(5) allows for configuring this behavior.
|
|
||||||
+
|
|
||||||
If such concerns don't apply to you then you probably don't need to be
|
|
||||||
concerned about credentials exposure due to storing that sensitive
|
|
||||||
data in git's configuration files. If you do want to use this, set
|
|
||||||
`transfer.credentialsInUrl` to one of these values:
|
|
||||||
+
|
|
||||||
* `allow` (default): Git will proceed with its activity without warning.
|
|
||||||
* `warn`: Git will write a warning message to `stderr` when parsing a URL
|
|
||||||
with a plaintext credential.
|
|
||||||
* `die`: Git will write a failure message to `stderr` when parsing a URL
|
|
||||||
with a plaintext credential.
|
|
||||||
|
|
||||||
transfer.fsckObjects::
|
transfer.fsckObjects::
|
||||||
When `fetch.fsckObjects` or `receive.fsckObjects` are
|
When `fetch.fsckObjects` or `receive.fsckObjects` are
|
||||||
not set, the value of this variable is used instead.
|
not set, the value of this variable is used instead.
|
||||||
|
@ -49,9 +49,9 @@ uploadpack.packObjectsHook::
|
|||||||
`pack-objects` to the hook, and expects a completed packfile on
|
`pack-objects` to the hook, and expects a completed packfile on
|
||||||
stdout.
|
stdout.
|
||||||
+
|
+
|
||||||
Note that this configuration variable is only respected when it is specified
|
Note that this configuration variable is ignored if it is seen in the
|
||||||
in protected configuration (see <<SCOPES>>). This is a safety measure
|
repository-level config (this is a safety measure against fetching from
|
||||||
against fetching from untrusted repositories.
|
untrusted repositories).
|
||||||
|
|
||||||
uploadpack.allowFilter::
|
uploadpack.allowFilter::
|
||||||
If this option is set, `upload-pack` will support partial
|
If this option is set, `upload-pack` will support partial
|
||||||
|
@ -43,7 +43,7 @@ That is, from the left to the right:
|
|||||||
. a space.
|
. a space.
|
||||||
. sha1 for "src"; 0\{40\} if creation or unmerged.
|
. sha1 for "src"; 0\{40\} if creation or unmerged.
|
||||||
. a space.
|
. a space.
|
||||||
. sha1 for "dst"; 0\{40\} if deletion, unmerged or "work tree out of sync with the index".
|
. sha1 for "dst"; 0\{40\} if creation, unmerged or "look at work tree".
|
||||||
. a space.
|
. a space.
|
||||||
. status, followed by optional "score" number.
|
. status, followed by optional "score" number.
|
||||||
. a tab or a NUL when `-z` option is used.
|
. a tab or a NUL when `-z` option is used.
|
||||||
@ -69,8 +69,8 @@ percentage of similarity between the source and target of the move or
|
|||||||
copy). Status letter M may be followed by a score (denoting the
|
copy). Status letter M may be followed by a score (denoting the
|
||||||
percentage of dissimilarity) for file rewrites.
|
percentage of dissimilarity) for file rewrites.
|
||||||
|
|
||||||
The sha1 for "dst" is shown as all 0's if a file on the filesystem
|
<sha1> is shown as all 0's if a file is new on the filesystem
|
||||||
is out of sync with the index.
|
and it is out of sync with the index.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ endif::git-diff[]
|
|||||||
endif::git-format-patch[]
|
endif::git-format-patch[]
|
||||||
|
|
||||||
ifdef::git-log[]
|
ifdef::git-log[]
|
||||||
--diff-merges=(off|none|on|first-parent|1|separate|m|combined|c|dense-combined|cc|remerge|r)::
|
--diff-merges=(off|none|on|first-parent|1|separate|m|combined|c|dense-combined|cc)::
|
||||||
--no-diff-merges::
|
--no-diff-merges::
|
||||||
Specify diff format to be used for merge commits. Default is
|
Specify diff format to be used for merge commits. Default is
|
||||||
{diff-merges-default} unless `--first-parent` is in use, in which case
|
{diff-merges-default} unless `--first-parent` is in use, in which case
|
||||||
@ -64,18 +64,6 @@ ifdef::git-log[]
|
|||||||
each of the parents. Separate log entry and diff is generated
|
each of the parents. Separate log entry and diff is generated
|
||||||
for each parent.
|
for each parent.
|
||||||
+
|
+
|
||||||
--diff-merges=remerge:::
|
|
||||||
--diff-merges=r:::
|
|
||||||
--remerge-diff:::
|
|
||||||
With this option, two-parent merge commits are remerged to
|
|
||||||
create a temporary tree object -- potentially containing files
|
|
||||||
with conflict markers and such. A diff is then shown between
|
|
||||||
that temporary tree and the actual merge commit.
|
|
||||||
+
|
|
||||||
The output emitted when this option is used is subject to change, and
|
|
||||||
so is its interaction with other options (unless explicitly
|
|
||||||
documented).
|
|
||||||
+
|
|
||||||
--diff-merges=combined:::
|
--diff-merges=combined:::
|
||||||
--diff-merges=c:::
|
--diff-merges=c:::
|
||||||
-c:::
|
-c:::
|
||||||
@ -628,8 +616,11 @@ ifndef::git-format-patch[]
|
|||||||
Also, these upper-case letters can be downcased to exclude. E.g.
|
Also, these upper-case letters can be downcased to exclude. E.g.
|
||||||
`--diff-filter=ad` excludes added and deleted paths.
|
`--diff-filter=ad` excludes added and deleted paths.
|
||||||
+
|
+
|
||||||
Note that not all diffs can feature all types. For instance, copied and
|
Note that not all diffs can feature all types. For instance, diffs
|
||||||
renamed entries cannot appear if detection for those types is disabled.
|
from the index to the working tree can never have Added entries
|
||||||
|
(because the set of paths included in the diff is limited by what is in
|
||||||
|
the index). Similarly, copied and renamed entries cannot appear if
|
||||||
|
detection for those types is disabled.
|
||||||
|
|
||||||
-S<string>::
|
-S<string>::
|
||||||
Look for differences that change the number of occurrences of
|
Look for differences that change the number of occurrences of
|
||||||
|
@ -71,7 +71,6 @@ configuration variables documented in linkgit:git-config[1], and the
|
|||||||
ancestors of the provided `--negotiation-tip=*` arguments,
|
ancestors of the provided `--negotiation-tip=*` arguments,
|
||||||
which we have in common with the server.
|
which we have in common with the server.
|
||||||
+
|
+
|
||||||
This is incompatible with `--recurse-submodules=[yes|on-demand]`.
|
|
||||||
Internally this is used to implement the `push.negotiate` option, see
|
Internally this is used to implement the `push.negotiate` option, see
|
||||||
linkgit:git-config[1].
|
linkgit:git-config[1].
|
||||||
|
|
||||||
@ -163,16 +162,6 @@ endif::git-pull[]
|
|||||||
behavior for a remote may be specified with the remote.<name>.tagOpt
|
behavior for a remote may be specified with the remote.<name>.tagOpt
|
||||||
setting. See linkgit:git-config[1].
|
setting. See linkgit:git-config[1].
|
||||||
|
|
||||||
ifndef::git-pull[]
|
|
||||||
--refetch::
|
|
||||||
Instead of negotiating with the server to avoid transferring commits and
|
|
||||||
associated objects that are already present locally, this option fetches
|
|
||||||
all objects as a fresh clone would. Use this to reapply a partial clone
|
|
||||||
filter from configuration or using `--filter=` when the filter
|
|
||||||
definition has changed. Automatic post-fetch maintenance will perform
|
|
||||||
object database pack consolidation to remove any duplicate objects.
|
|
||||||
endif::git-pull[]
|
|
||||||
|
|
||||||
--refmap=<refspec>::
|
--refmap=<refspec>::
|
||||||
When fetching refs listed on the command line, use the
|
When fetching refs listed on the command line, use the
|
||||||
specified refspec (can be given more than once) to map the
|
specified refspec (can be given more than once) to map the
|
||||||
@ -196,23 +185,15 @@ endif::git-pull[]
|
|||||||
ifndef::git-pull[]
|
ifndef::git-pull[]
|
||||||
--recurse-submodules[=yes|on-demand|no]::
|
--recurse-submodules[=yes|on-demand|no]::
|
||||||
This option controls if and under what conditions new commits of
|
This option controls if and under what conditions new commits of
|
||||||
submodules should be fetched too. When recursing through submodules,
|
populated submodules should be fetched too. It can be used as a
|
||||||
`git fetch` always attempts to fetch "changed" submodules, that is, a
|
boolean option to completely disable recursion when set to 'no' or to
|
||||||
submodule that has commits that are referenced by a newly fetched
|
unconditionally recurse into all populated submodules when set to
|
||||||
superproject commit but are missing in the local submodule clone. A
|
'yes', which is the default when this option is used without any
|
||||||
changed submodule can be fetched as long as it is present locally e.g.
|
value. Use 'on-demand' to only recurse into a populated submodule
|
||||||
in `$GIT_DIR/modules/` (see linkgit:gitsubmodules[7]); if the upstream
|
when the superproject retrieves a commit that updates the submodule's
|
||||||
adds a new submodule, that submodule cannot be fetched until it is
|
reference to a commit that isn't already in the local submodule
|
||||||
cloned e.g. by `git submodule update`.
|
clone. By default, 'on-demand' is used, unless
|
||||||
+
|
`fetch.recurseSubmodules` is set (see linkgit:git-config[1]).
|
||||||
When set to 'on-demand', only changed submodules are fetched. When set
|
|
||||||
to 'yes', all populated submodules are fetched and submodules that are
|
|
||||||
both unpopulated and changed are fetched. When set to 'no', submodules
|
|
||||||
are never fetched.
|
|
||||||
+
|
|
||||||
When unspecified, this uses the value of `fetch.recurseSubmodules` if it
|
|
||||||
is set (see linkgit:git-config[1]), defaulting to 'on-demand' if unset.
|
|
||||||
When this option is used without any value, it defaults to 'yes'.
|
|
||||||
endif::git-pull[]
|
endif::git-pull[]
|
||||||
|
|
||||||
-j::
|
-j::
|
||||||
|
@ -1,161 +0,0 @@
|
|||||||
`badDate`::
|
|
||||||
(ERROR) Invalid date format in an author/committer line.
|
|
||||||
|
|
||||||
`badDateOverflow`::
|
|
||||||
(ERROR) Invalid date value in an author/committer line.
|
|
||||||
|
|
||||||
`badEmail`::
|
|
||||||
(ERROR) Invalid email format in an author/committer line.
|
|
||||||
|
|
||||||
`badFilemode`::
|
|
||||||
(INFO) A tree contains a bad filemode entry.
|
|
||||||
|
|
||||||
`badName`::
|
|
||||||
(ERROR) An author/committer name is empty.
|
|
||||||
|
|
||||||
`badObjectSha1`::
|
|
||||||
(ERROR) An object has a bad sha1.
|
|
||||||
|
|
||||||
`badParentSha1`::
|
|
||||||
(ERROR) A commit object has a bad parent sha1.
|
|
||||||
|
|
||||||
`badTagName`::
|
|
||||||
(INFO) A tag has an invalid format.
|
|
||||||
|
|
||||||
`badTimezone`::
|
|
||||||
(ERROR) Found an invalid time zone in an author/committer line.
|
|
||||||
|
|
||||||
`badTree`::
|
|
||||||
(ERROR) A tree cannot be parsed.
|
|
||||||
|
|
||||||
`badTreeSha1`::
|
|
||||||
(ERROR) A tree has an invalid format.
|
|
||||||
|
|
||||||
`badType`::
|
|
||||||
(ERROR) Found an invalid object type.
|
|
||||||
|
|
||||||
`duplicateEntries`::
|
|
||||||
(ERROR) A tree contains duplicate file entries.
|
|
||||||
|
|
||||||
`emptyName`::
|
|
||||||
(WARN) A path contains an empty name.
|
|
||||||
|
|
||||||
`extraHeaderEntry`::
|
|
||||||
(IGNORE) Extra headers found after `tagger`.
|
|
||||||
|
|
||||||
`fullPathname`::
|
|
||||||
(WARN) A path contains the full path starting with "/".
|
|
||||||
|
|
||||||
`gitattributesSymlink`::
|
|
||||||
(INFO) `.gitattributes` is a symlink.
|
|
||||||
|
|
||||||
`gitignoreSymlink`::
|
|
||||||
(INFO) `.gitignore` is a symlink.
|
|
||||||
|
|
||||||
`gitmodulesBlob`::
|
|
||||||
(ERROR) A non-blob found at `.gitmodules`.
|
|
||||||
|
|
||||||
`gitmodulesLarge`::
|
|
||||||
(ERROR) The `.gitmodules` file is too large to parse.
|
|
||||||
|
|
||||||
`gitmodulesMissing`::
|
|
||||||
(ERROR) Unable to read `.gitmodules` blob.
|
|
||||||
|
|
||||||
`gitmodulesName`::
|
|
||||||
(ERROR) A submodule name is invalid.
|
|
||||||
|
|
||||||
`gitmodulesParse`::
|
|
||||||
(INFO) Could not parse `.gitmodules` blob.
|
|
||||||
|
|
||||||
`gitmodulesLarge`;
|
|
||||||
(ERROR) `.gitmodules` blob is too large to parse.
|
|
||||||
|
|
||||||
`gitmodulesPath`::
|
|
||||||
(ERROR) `.gitmodules` path is invalid.
|
|
||||||
|
|
||||||
`gitmodulesSymlink`::
|
|
||||||
(ERROR) `.gitmodules` is a symlink.
|
|
||||||
|
|
||||||
`gitmodulesUpdate`::
|
|
||||||
(ERROR) Found an invalid submodule update setting.
|
|
||||||
|
|
||||||
`gitmodulesUrl`::
|
|
||||||
(ERROR) Found an invalid submodule url.
|
|
||||||
|
|
||||||
`hasDot`::
|
|
||||||
(WARN) A tree contains an entry named `.`.
|
|
||||||
|
|
||||||
`hasDotdot`::
|
|
||||||
(WARN) A tree contains an entry named `..`.
|
|
||||||
|
|
||||||
`hasDotgit`::
|
|
||||||
(WARN) A tree contains an entry named `.git`.
|
|
||||||
|
|
||||||
`mailmapSymlink`::
|
|
||||||
(INFO) `.mailmap` is a symlink.
|
|
||||||
|
|
||||||
`missingAuthor`::
|
|
||||||
(ERROR) Author is missing.
|
|
||||||
|
|
||||||
`missingCommitter`::
|
|
||||||
(ERROR) Committer is missing.
|
|
||||||
|
|
||||||
`missingEmail`::
|
|
||||||
(ERROR) Email is missing in an author/committer line.
|
|
||||||
|
|
||||||
`missingNameBeforeEmail`::
|
|
||||||
(ERROR) Missing name before an email in an author/committer line.
|
|
||||||
|
|
||||||
`missingObject`::
|
|
||||||
(ERROR) Missing `object` line in tag object.
|
|
||||||
|
|
||||||
`missingSpaceBeforeDate`::
|
|
||||||
(ERROR) Missing space before date in an author/committer line.
|
|
||||||
|
|
||||||
`missingSpaceBeforeEmail`::
|
|
||||||
(ERROR) Missing space before the email in author/committer line.
|
|
||||||
|
|
||||||
`missingTag`::
|
|
||||||
(ERROR) Unexpected end after `type` line in a tag object.
|
|
||||||
|
|
||||||
`missingTagEntry`::
|
|
||||||
(ERROR) Missing `tag` line in a tag object.
|
|
||||||
|
|
||||||
`missingTaggerEntry`::
|
|
||||||
(INFO) Missing `tagger` line in a tag object.
|
|
||||||
|
|
||||||
`missingTree`::
|
|
||||||
(ERROR) Missing `tree` line in a commit object.
|
|
||||||
|
|
||||||
`missingType`::
|
|
||||||
(ERROR) Invalid type value on the `type` line in a tag object.
|
|
||||||
|
|
||||||
`missingTypeEntry`::
|
|
||||||
(ERROR) Missing `type` line in a tag object.
|
|
||||||
|
|
||||||
`multipleAuthors`::
|
|
||||||
(ERROR) Multiple author lines found in a commit.
|
|
||||||
|
|
||||||
`nulInCommit`::
|
|
||||||
(WARN) Found a NUL byte in the commit object body.
|
|
||||||
|
|
||||||
`nulInHeader`::
|
|
||||||
(FATAL) NUL byte exists in the object header.
|
|
||||||
|
|
||||||
`nullSha1`::
|
|
||||||
(WARN) Tree contains entries pointing to a null sha1.
|
|
||||||
|
|
||||||
`treeNotSorted`::
|
|
||||||
(ERROR) A tree is not properly sorted.
|
|
||||||
|
|
||||||
`unknownType`::
|
|
||||||
(ERROR) Found an unknown object type.
|
|
||||||
|
|
||||||
`unterminatedHeader`::
|
|
||||||
(FATAL) Missing end-of-line in the object header.
|
|
||||||
|
|
||||||
`zeroPaddedDate`::
|
|
||||||
(ERROR) Found a zero padded date in an author/commiter line.
|
|
||||||
|
|
||||||
`zeroPaddedFilemode`::
|
|
||||||
(WARN) Found a zero padded filemode in a tree.
|
|
@ -188,9 +188,7 @@ for "git add --no-all <pathspec>...", i.e. ignored removed files.
|
|||||||
forcibly add them again to the index. This is useful after
|
forcibly add them again to the index. This is useful after
|
||||||
changing `core.autocrlf` configuration or the `text` attribute
|
changing `core.autocrlf` configuration or the `text` attribute
|
||||||
in order to correct files added with wrong CRLF/LF line endings.
|
in order to correct files added with wrong CRLF/LF line endings.
|
||||||
This option implies `-u`. Lone CR characters are untouched, thus
|
This option implies `-u`.
|
||||||
while a CRLF cleans to LF, a CRCRLF sequence is only partially
|
|
||||||
cleaned to CRLF.
|
|
||||||
|
|
||||||
--chmod=(+|-)x::
|
--chmod=(+|-)x::
|
||||||
Override the executable bit of the added files. The executable
|
Override the executable bit of the added files. The executable
|
||||||
@ -433,13 +431,6 @@ they will make the patch impossible to apply:
|
|||||||
* deleting context or removal lines
|
* deleting context or removal lines
|
||||||
* modifying the contents of context or removal lines
|
* modifying the contents of context or removal lines
|
||||||
|
|
||||||
CONFIGURATION
|
|
||||||
-------------
|
|
||||||
|
|
||||||
include::includes/cmd-config-section-all.txt[]
|
|
||||||
|
|
||||||
include::config/add.txt[]
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
linkgit:git-status[1]
|
linkgit:git-status[1]
|
||||||
|
@ -112,7 +112,10 @@ default. You can use `--no-utf8` to override this.
|
|||||||
am.threeWay configuration variable. For more information,
|
am.threeWay configuration variable. For more information,
|
||||||
see am.threeWay in linkgit:git-config[1].
|
see am.threeWay in linkgit:git-config[1].
|
||||||
|
|
||||||
include::rerere-options.txt[]
|
--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-space-change::
|
||||||
--ignore-whitespace::
|
--ignore-whitespace::
|
||||||
@ -258,13 +261,6 @@ This command can run `applypatch-msg`, `pre-applypatch`,
|
|||||||
and `post-applypatch` hooks. See linkgit:githooks[5] for more
|
and `post-applypatch` hooks. See linkgit:githooks[5] for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
CONFIGURATION
|
|
||||||
-------------
|
|
||||||
|
|
||||||
include::includes/cmd-config-section-all.txt[]
|
|
||||||
|
|
||||||
include::config/am.txt[]
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
linkgit:git-apply[1].
|
linkgit:git-apply[1].
|
||||||
|
@ -8,7 +8,7 @@ git-annotate - Annotate file lines with commit information
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git annotate' [<options>] [<rev-opts>] [<rev>] [--] <file>
|
'git annotate' [<options>] <file> [<revision>]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -263,9 +263,13 @@ has no effect when `--index` or `--cached` is in use.
|
|||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
include::includes/cmd-config-section-all.txt[]
|
apply.ignoreWhitespace::
|
||||||
|
Set to 'change' if you want changes in whitespace to be ignored by default.
|
||||||
include::config/apply.txt[]
|
Set to one of: no, none, never, false if you want changes in
|
||||||
|
whitespace to be significant.
|
||||||
|
apply.whitespace::
|
||||||
|
When no `--whitespace` flag is given from the command
|
||||||
|
line, this configuration item is used as the default.
|
||||||
|
|
||||||
SUBMODULES
|
SUBMODULES
|
||||||
----------
|
----------
|
||||||
|
@ -34,12 +34,10 @@ OPTIONS
|
|||||||
-------
|
-------
|
||||||
|
|
||||||
--format=<fmt>::
|
--format=<fmt>::
|
||||||
Format of the resulting archive. Possible values are `tar`,
|
Format of the resulting archive: 'tar' or 'zip'. If this option
|
||||||
`zip`, `tar.gz`, `tgz`, and any format defined using the
|
|
||||||
configuration option `tar.<format>.command`. If `--format`
|
|
||||||
is not given, and the output file is specified, the format is
|
is not given, and the output file is specified, the format is
|
||||||
inferred from the filename if possible (e.g. writing to `foo.zip`
|
inferred from the filename if possible (e.g. writing to "foo.zip"
|
||||||
makes the output to be in the `zip` format). Otherwise the output
|
makes the output to be in the zip format). Otherwise the output
|
||||||
format is `tar`.
|
format is `tar`.
|
||||||
|
|
||||||
-l::
|
-l::
|
||||||
@ -51,9 +49,7 @@ OPTIONS
|
|||||||
Report progress to stderr.
|
Report progress to stderr.
|
||||||
|
|
||||||
--prefix=<prefix>/::
|
--prefix=<prefix>/::
|
||||||
Prepend <prefix>/ to paths in the archive. Can be repeated; its
|
Prepend <prefix>/ to each filename in the archive.
|
||||||
rightmost value is used for all tracked files. See below which
|
|
||||||
value gets used by `--add-file` and `--add-virtual-file`.
|
|
||||||
|
|
||||||
-o <file>::
|
-o <file>::
|
||||||
--output=<file>::
|
--output=<file>::
|
||||||
@ -61,26 +57,9 @@ OPTIONS
|
|||||||
|
|
||||||
--add-file=<file>::
|
--add-file=<file>::
|
||||||
Add a non-tracked file to the archive. Can be repeated to add
|
Add a non-tracked file to the archive. Can be repeated to add
|
||||||
multiple files. The path of the file in the archive is built by
|
|
||||||
concatenating the value of the last `--prefix` option (if any)
|
|
||||||
before this `--add-file` and the basename of <file>.
|
|
||||||
|
|
||||||
--add-virtual-file=<path>:<content>::
|
|
||||||
Add the specified contents to the archive. Can be repeated to add
|
|
||||||
multiple files. The path of the file in the archive is built
|
multiple files. The path of the file in the archive is built
|
||||||
by concatenating the value of the last `--prefix` option (if any)
|
by concatenating the value for `--prefix` (if any) and the
|
||||||
before this `--add-virtual-file` and `<path>`.
|
basename of <file>.
|
||||||
+
|
|
||||||
The `<path>` argument can start and end with a literal double-quote
|
|
||||||
character; the contained file name is interpreted as a C-style string,
|
|
||||||
i.e. the backslash is interpreted as escape character. The path must
|
|
||||||
be quoted if it contains a colon, to avoid the colon from being
|
|
||||||
misinterpreted as the separator between the path and the contents, or
|
|
||||||
if the path begins or ends with a double-quote character.
|
|
||||||
+
|
|
||||||
The file mode is limited to a regular file, and the option may be
|
|
||||||
subject to platform-dependent command-line limits. For non-trivial
|
|
||||||
cases, write an untracked file and use `--add-file` instead.
|
|
||||||
|
|
||||||
--worktree-attributes::
|
--worktree-attributes::
|
||||||
Look for attributes in .gitattributes files in the working tree
|
Look for attributes in .gitattributes files in the working tree
|
||||||
@ -145,16 +124,17 @@ tar.<format>.command::
|
|||||||
is executed using the shell with the generated tar file on its
|
is executed using the shell with the generated tar file on its
|
||||||
standard input, and should produce the final output on its
|
standard input, and should produce the final output on its
|
||||||
standard output. Any compression-level options will be passed
|
standard output. Any compression-level options will be passed
|
||||||
to the command (e.g., `-9`).
|
to the command (e.g., "-9"). An output file with the same
|
||||||
|
extension as `<format>` will be use this format if no other
|
||||||
|
format is given.
|
||||||
+
|
+
|
||||||
The `tar.gz` and `tgz` formats are defined automatically and use the
|
The "tar.gz" and "tgz" formats are defined automatically and default to
|
||||||
magic command `git archive gzip` by default, which invokes an internal
|
`gzip -cn`. You may override them with custom commands.
|
||||||
implementation of gzip.
|
|
||||||
|
|
||||||
tar.<format>.remote::
|
tar.<format>.remote::
|
||||||
If true, enable the format for use by remote clients via
|
If true, enable `<format>` for use by remote clients via
|
||||||
linkgit:git-upload-archive[1]. Defaults to false for
|
linkgit:git-upload-archive[1]. Defaults to false for
|
||||||
user-defined formats, but true for the `tar.gz` and `tgz`
|
user-defined formats, but true for the "tar.gz" and "tgz"
|
||||||
formats.
|
formats.
|
||||||
|
|
||||||
[[ATTRIBUTES]]
|
[[ATTRIBUTES]]
|
||||||
@ -214,12 +194,6 @@ EXAMPLES
|
|||||||
commit on the current branch. Note that the output format is
|
commit on the current branch. Note that the output format is
|
||||||
inferred by the extension of the output file.
|
inferred by the extension of the output file.
|
||||||
|
|
||||||
`git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD`::
|
|
||||||
|
|
||||||
Creates a tar archive that contains the contents of the latest
|
|
||||||
commit on the current branch with no prefix and the untracked
|
|
||||||
file 'configure' with the prefix 'build/'.
|
|
||||||
|
|
||||||
`git config tar.tar.xz.command "xz -c"`::
|
`git config tar.tar.xz.command "xz -c"`::
|
||||||
|
|
||||||
Configure a "tar.xz" format for making LZMA-compressed tarfiles.
|
Configure a "tar.xz" format for making LZMA-compressed tarfiles.
|
||||||
|
@ -241,12 +241,6 @@ MAPPING AUTHORS
|
|||||||
|
|
||||||
See linkgit:gitmailmap[5].
|
See linkgit:gitmailmap[5].
|
||||||
|
|
||||||
CONFIGURATION
|
|
||||||
-------------
|
|
||||||
|
|
||||||
include::includes/cmd-config-section-all.txt[]
|
|
||||||
|
|
||||||
include::config/blame.txt[]
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
|
@ -16,8 +16,7 @@ SYNOPSIS
|
|||||||
[--points-at <object>] [--format=<format>]
|
[--points-at <object>] [--format=<format>]
|
||||||
[(-r | --remotes) | (-a | --all)]
|
[(-r | --remotes) | (-a | --all)]
|
||||||
[--list] [<pattern>...]
|
[--list] [<pattern>...]
|
||||||
'git branch' [--track[=(direct|inherit)] | --no-track] [-f]
|
'git branch' [--track[=(direct|inherit)] | --no-track] [-f] <branchname> [<start-point>]
|
||||||
[--recurse-submodules] <branchname> [<start-point>]
|
|
||||||
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
||||||
'git branch' --unset-upstream [<branchname>]
|
'git branch' --unset-upstream [<branchname>]
|
||||||
'git branch' (-m | -M) [<oldbranch>] <newbranch>
|
'git branch' (-m | -M) [<oldbranch>] <newbranch>
|
||||||
@ -221,17 +220,13 @@ The exact upstream branch is chosen depending on the optional argument:
|
|||||||
itself as the upstream; `--track=inherit` means to copy the upstream
|
itself as the upstream; `--track=inherit` means to copy the upstream
|
||||||
configuration of the start-point branch.
|
configuration of the start-point branch.
|
||||||
+
|
+
|
||||||
The branch.autoSetupMerge configuration variable specifies how `git switch`,
|
`--track=direct` is the default when the start point is a remote-tracking branch.
|
||||||
`git checkout` and `git branch` should behave when neither `--track` nor
|
Set the branch.autoSetupMerge configuration variable to `false` if you
|
||||||
`--no-track` are specified:
|
want `git switch`, `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
|
||||||
The default option, `true`, behaves as though `--track=direct`
|
start-point is either a local or remote-tracking branch. Set it to
|
||||||
were given whenever the start-point is a remote-tracking branch.
|
`inherit` if you want to copy the tracking configuration from the
|
||||||
`false` behaves as if `--no-track` were given. `always` behaves as though
|
branch point.
|
||||||
`--track=direct` were given. `inherit` behaves as though `--track=inherit`
|
|
||||||
were given. `simple` behaves as though `--track=direct` were given only when
|
|
||||||
the start-point is a remote-tracking branch and the new branch has the same
|
|
||||||
name as the remote branch.
|
|
||||||
+
|
+
|
||||||
See linkgit:git-pull[1] and linkgit:git-config[1] for additional discussion on
|
See linkgit:git-pull[1] and linkgit:git-config[1] for additional discussion on
|
||||||
how the `branch.<name>.remote` and `branch.<name>.merge` options are used.
|
how the `branch.<name>.remote` and `branch.<name>.merge` options are used.
|
||||||
@ -240,22 +235,6 @@ how the `branch.<name>.remote` and `branch.<name>.merge` options are used.
|
|||||||
Do not set up "upstream" configuration, even if the
|
Do not set up "upstream" configuration, even if the
|
||||||
branch.autoSetupMerge configuration variable is set.
|
branch.autoSetupMerge configuration variable is set.
|
||||||
|
|
||||||
--recurse-submodules::
|
|
||||||
THIS OPTION IS EXPERIMENTAL! Causes the current command to
|
|
||||||
recurse into submodules if `submodule.propagateBranches` is
|
|
||||||
enabled. See `submodule.propagateBranches` in
|
|
||||||
linkgit:git-config[1]. Currently, only branch creation is
|
|
||||||
supported.
|
|
||||||
+
|
|
||||||
When used in branch creation, a new branch <branchname> will be created
|
|
||||||
in the superproject and all of the submodules in the superproject's
|
|
||||||
<start-point>. In submodules, the branch will point to the submodule
|
|
||||||
commit in the superproject's <start-point> but the branch's tracking
|
|
||||||
information will be set up based on the submodule's branches and remotes
|
|
||||||
e.g. `git branch --recurse-submodules topic origin/main` will create the
|
|
||||||
submodule branch "topic" that points to the submodule commit in the
|
|
||||||
superproject's "origin/main", but tracks the submodule's "origin/main".
|
|
||||||
|
|
||||||
--set-upstream::
|
--set-upstream::
|
||||||
As this option had confusing syntax, it is no longer supported.
|
As this option had confusing syntax, it is no longer supported.
|
||||||
Please use `--track` or `--set-upstream-to` instead.
|
Please use `--track` or `--set-upstream-to` instead.
|
||||||
@ -336,10 +315,6 @@ CONFIGURATION
|
|||||||
`--list` is used or implied. The default is to use a pager.
|
`--list` is used or implied. The default is to use a pager.
|
||||||
See linkgit:git-config[1].
|
See linkgit:git-config[1].
|
||||||
|
|
||||||
include::includes/cmd-config-section-rest.txt[]
|
|
||||||
|
|
||||||
include::config/branch.txt[]
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git bugreport' [(-o | --output-directory) <path>] [(-s | --suffix) <format>]
|
'git bugreport' [(-o | --output-directory) <path>] [(-s | --suffix) <format>]
|
||||||
[--diagnose[=<mode>]]
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -32,10 +31,6 @@ The following information is captured automatically:
|
|||||||
- A list of enabled hooks
|
- A list of enabled hooks
|
||||||
- $SHELL
|
- $SHELL
|
||||||
|
|
||||||
Additional information may be gathered into a separate zip archive using the
|
|
||||||
`--diagnose` option, and can be attached alongside the bugreport document to
|
|
||||||
provide additional context to readers.
|
|
||||||
|
|
||||||
This tool is invoked via the typical Git setup process, which means that in some
|
This tool is invoked via the typical Git setup process, which means that in some
|
||||||
cases, it might not be able to launch - for example, if a relevant config file
|
cases, it might not be able to launch - for example, if a relevant config file
|
||||||
is unreadable. In this kind of scenario, it may be helpful to manually gather
|
is unreadable. In this kind of scenario, it may be helpful to manually gather
|
||||||
@ -54,19 +49,6 @@ OPTIONS
|
|||||||
named 'git-bugreport-<formatted suffix>'. This should take the form of a
|
named 'git-bugreport-<formatted suffix>'. This should take the form of a
|
||||||
strftime(3) format string; the current local time will be used.
|
strftime(3) format string; the current local time will be used.
|
||||||
|
|
||||||
--no-diagnose::
|
|
||||||
--diagnose[=<mode>]::
|
|
||||||
Create a zip archive of supplemental information about the user's
|
|
||||||
machine, Git client, and repository state. The archive is written to the
|
|
||||||
same output directory as the bug report and is named
|
|
||||||
'git-diagnostics-<formatted suffix>'.
|
|
||||||
+
|
|
||||||
Without `mode` specified, the diagnostic archive will contain the default set of
|
|
||||||
statistics reported by `git diagnose`. An optional `mode` value may be specified
|
|
||||||
to change which information is included in the archive. See
|
|
||||||
linkgit:git-diagnose[1] for the list of valid values for `mode` and details
|
|
||||||
about their usage.
|
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
---
|
---
|
||||||
Part of the linkgit:git[1] suite
|
Part of the linkgit:git[1] suite
|
||||||
|
@ -42,7 +42,7 @@ BUNDLE FORMAT
|
|||||||
Bundles are `.pack` files (see linkgit:git-pack-objects[1]) with a
|
Bundles are `.pack` files (see linkgit:git-pack-objects[1]) with a
|
||||||
header indicating what references are contained within the bundle.
|
header indicating what references are contained within the bundle.
|
||||||
|
|
||||||
Like the packed archive format itself bundles can either be
|
Like the the packed archive format itself bundles can either be
|
||||||
self-contained, or be created using exclusions.
|
self-contained, or be created using exclusions.
|
||||||
See the "OBJECT PREREQUISITES" section below.
|
See the "OBJECT PREREQUISITES" section below.
|
||||||
|
|
||||||
@ -56,8 +56,10 @@ using "thin packs", bundles created using exclusions are smaller in
|
|||||||
size. That they're "thin" under the hood is merely noted here as a
|
size. That they're "thin" under the hood is merely noted here as a
|
||||||
curiosity, and as a reference to other documentation.
|
curiosity, and as a reference to other documentation.
|
||||||
|
|
||||||
See linkgit:gitformat-bundle[5] for more details and the discussion of
|
See link:technical/bundle-format.html[the `bundle-format`
|
||||||
"thin pack" in linkgit:gitformat-pack[5] for further details.
|
documentation] for more details and the discussion of "thin pack" in
|
||||||
|
link:technical/pack-format.html[the pack format documentation] for
|
||||||
|
further details.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
@ -73,11 +75,8 @@ verify <file>::
|
|||||||
cleanly to the current repository. This includes checks on the
|
cleanly to the current repository. This includes checks on the
|
||||||
bundle format itself as well as checking that the prerequisite
|
bundle format itself as well as checking that the prerequisite
|
||||||
commits exist and are fully linked in the current repository.
|
commits exist and are fully linked in the current repository.
|
||||||
Then, 'git bundle' prints a list of missing commits, if any.
|
'git bundle' prints a list of missing commits, if any, and exits
|
||||||
Finally, information about additional capabilities, such as "object
|
with a non-zero status.
|
||||||
filter", is printed. See "Capabilities" in linkgit:gitformat-bundle[5]
|
|
||||||
for more information. The exit code is zero for success, but will
|
|
||||||
be nonzero if the bundle file is invalid.
|
|
||||||
|
|
||||||
list-heads <file>::
|
list-heads <file>::
|
||||||
Lists the references defined in the bundle. If followed by a
|
Lists the references defined in the bundle. If followed by a
|
||||||
@ -335,11 +334,6 @@ You can also see what references it offers:
|
|||||||
$ git ls-remote mybundle
|
$ git ls-remote mybundle
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
FILE FORMAT
|
|
||||||
-----------
|
|
||||||
|
|
||||||
See linkgit:gitformat-bundle[5].
|
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
---
|
---
|
||||||
Part of the linkgit:git[1] suite
|
Part of the linkgit:git[1] suite
|
||||||
|
@ -9,14 +9,8 @@ git-cat-file - Provide content or type and size information for repository objec
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git cat-file' <type> <object>
|
'git cat-file' (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <type> | --textconv | --filters ) [--path=<path>] <object>
|
||||||
'git cat-file' (-e | -p) <object>
|
'git cat-file' (--batch[=<format>] | --batch-check[=<format>]) [ --textconv | --filters ] [--follow-symlinks]
|
||||||
'git cat-file' (-t | -s) [--allow-unknown-type] <object>
|
|
||||||
'git cat-file' (--batch | --batch-check | --batch-command) [--batch-all-objects]
|
|
||||||
[--buffer] [--follow-symlinks] [--unordered]
|
|
||||||
[--textconv | --filters] [-z]
|
|
||||||
'git cat-file' (--textconv | --filters)
|
|
||||||
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -63,12 +57,6 @@ OPTIONS
|
|||||||
or to ask for a "blob" with `<object>` being a tag object that
|
or to ask for a "blob" with `<object>` being a tag object that
|
||||||
points at it.
|
points at it.
|
||||||
|
|
||||||
--[no-]mailmap::
|
|
||||||
--[no-]use-mailmap::
|
|
||||||
Use mailmap file to map author, committer and tagger names
|
|
||||||
and email addresses to canonical real names and email addresses.
|
|
||||||
See linkgit:git-shortlog[1].
|
|
||||||
|
|
||||||
--textconv::
|
--textconv::
|
||||||
Show the content as transformed by a textconv filter. In this case,
|
Show the content as transformed by a textconv filter. In this case,
|
||||||
`<object>` has to be of the form `<tree-ish>:<path>`, or `:<path>` in
|
`<object>` has to be of the form `<tree-ish>:<path>`, or `:<path>` in
|
||||||
@ -102,33 +90,6 @@ OPTIONS
|
|||||||
need to specify the path, separated by whitespace. See the
|
need to specify the path, separated by whitespace. See the
|
||||||
section `BATCH OUTPUT` below for details.
|
section `BATCH OUTPUT` below for details.
|
||||||
|
|
||||||
--batch-command::
|
|
||||||
--batch-command=<format>::
|
|
||||||
Enter a command mode that reads commands and arguments from stdin. May
|
|
||||||
only be combined with `--buffer`, `--textconv` or `--filters`. In the
|
|
||||||
case of `--textconv` or `--filters`, the input lines also need to specify
|
|
||||||
the path, separated by whitespace. See the section `BATCH OUTPUT` below
|
|
||||||
for details.
|
|
||||||
+
|
|
||||||
`--batch-command` recognizes the following commands:
|
|
||||||
+
|
|
||||||
--
|
|
||||||
contents <object>::
|
|
||||||
Print object contents for object reference `<object>`. This corresponds to
|
|
||||||
the output of `--batch`.
|
|
||||||
|
|
||||||
info <object>::
|
|
||||||
Print object info for object reference `<object>`. This corresponds to the
|
|
||||||
output of `--batch-check`.
|
|
||||||
|
|
||||||
flush::
|
|
||||||
Used with `--buffer` to execute all preceding commands that were issued
|
|
||||||
since the beginning or since the last flush was issued. When `--buffer`
|
|
||||||
is used, no output will come until a `flush` is issued. When `--buffer`
|
|
||||||
is not used, commands are flushed each time without issuing `flush`.
|
|
||||||
--
|
|
||||||
+
|
|
||||||
|
|
||||||
--batch-all-objects::
|
--batch-all-objects::
|
||||||
Instead of reading a list of objects on stdin, perform the
|
Instead of reading a list of objects on stdin, perform the
|
||||||
requested batch operation on all objects in the repository and
|
requested batch operation on all objects in the repository and
|
||||||
@ -143,7 +104,7 @@ flush::
|
|||||||
that a process can interactively read and write from
|
that a process can interactively read and write from
|
||||||
`cat-file`. With this option, the output uses normal stdio
|
`cat-file`. With this option, the output uses normal stdio
|
||||||
buffering; this is much more efficient when invoking
|
buffering; this is much more efficient when invoking
|
||||||
`--batch-check` or `--batch-command` on a large number of objects.
|
`--batch-check` on a large number of objects.
|
||||||
|
|
||||||
--unordered::
|
--unordered::
|
||||||
When `--batch-all-objects` is in use, visit objects in an
|
When `--batch-all-objects` is in use, visit objects in an
|
||||||
@ -213,11 +174,6 @@ respectively print:
|
|||||||
/etc/passwd
|
/etc/passwd
|
||||||
--
|
--
|
||||||
|
|
||||||
-z::
|
|
||||||
Only meaningful with `--batch`, `--batch-check`, or
|
|
||||||
`--batch-command`; input is NUL-delimited instead of
|
|
||||||
newline-delimited.
|
|
||||||
|
|
||||||
|
|
||||||
OUTPUT
|
OUTPUT
|
||||||
------
|
------
|
||||||
@ -240,13 +196,6 @@ from stdin, one per line, and print information about them. By default,
|
|||||||
the whole line is considered as an object, as if it were fed to
|
the whole line is considered as an object, as if it were fed to
|
||||||
linkgit:git-rev-parse[1].
|
linkgit:git-rev-parse[1].
|
||||||
|
|
||||||
When `--batch-command` is given, `cat-file` will read commands from stdin,
|
|
||||||
one per line, and print information based on the command given. With
|
|
||||||
`--batch-command`, the `info` command followed by an object will print
|
|
||||||
information about the object the same way `--batch-check` would, and the
|
|
||||||
`contents` command followed by an object prints contents in the same way
|
|
||||||
`--batch` would.
|
|
||||||
|
|
||||||
You can specify the information shown for each object by using a custom
|
You can specify the information shown for each object by using a custom
|
||||||
`<format>`. The `<format>` is copied literally to stdout for each
|
`<format>`. The `<format>` is copied literally to stdout for each
|
||||||
object, with placeholders of the form `%(atom)` expanded, followed by a
|
object, with placeholders of the form `%(atom)` expanded, followed by a
|
||||||
@ -282,9 +231,9 @@ newline. The available atoms are:
|
|||||||
If no format is specified, the default format is `%(objectname)
|
If no format is specified, the default format is `%(objectname)
|
||||||
%(objecttype) %(objectsize)`.
|
%(objecttype) %(objectsize)`.
|
||||||
|
|
||||||
If `--batch` is specified, or if `--batch-command` is used with the `contents`
|
If `--batch` is specified, the object information is followed by the
|
||||||
command, the object information is followed by the object contents (consisting
|
object contents (consisting of `%(objectsize)` bytes), followed by a
|
||||||
of `%(objectsize)` bytes), followed by a newline.
|
newline.
|
||||||
|
|
||||||
For example, `--batch` without a custom format would produce:
|
For example, `--batch` without a custom format would produce:
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ OPTIONS
|
|||||||
Instead of printing the paths that are excluded, for each path
|
Instead of printing the paths that are excluded, for each path
|
||||||
that matches an exclude pattern, print the exclude pattern
|
that matches an exclude pattern, print the exclude pattern
|
||||||
together with the path. (Matching an exclude pattern usually
|
together with the path. (Matching an exclude pattern usually
|
||||||
means the path is excluded, but if the pattern begins with "`!`"
|
means the path is excluded, but if the pattern begins with '!'
|
||||||
then it is a negated pattern and matching it means the path is
|
then it is a negated pattern and matching it means the path is
|
||||||
NOT excluded.)
|
NOT excluded.)
|
||||||
+
|
+
|
||||||
@ -77,7 +77,7 @@ If `--verbose` is specified, the output is a series of lines of the form:
|
|||||||
<pathname> is the path of a file being queried, <pattern> is the
|
<pathname> is the path of a file being queried, <pattern> is the
|
||||||
matching pattern, <source> is the pattern's source file, and <linenum>
|
matching pattern, <source> is the pattern's source file, and <linenum>
|
||||||
is the line number of the pattern within that source. If the pattern
|
is the line number of the pattern within that source. If the pattern
|
||||||
contained a "`!`" prefix or "`/`" suffix, it will be preserved in the
|
contained a `!` prefix or `/` suffix, it will be preserved in the
|
||||||
output. <source> will be an absolute path when referring to the file
|
output. <source> will be an absolute path when referring to the file
|
||||||
configured by `core.excludesFile`, or relative to the repository root
|
configured by `core.excludesFile`, or relative to the repository root
|
||||||
when referring to `.git/info/exclude` or a per-directory exclude file.
|
when referring to `.git/info/exclude` or a per-directory exclude file.
|
||||||
|
@ -12,7 +12,6 @@ SYNOPSIS
|
|||||||
'git checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
|
'git checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
|
||||||
[--stage=<number>|all]
|
[--stage=<number>|all]
|
||||||
[--temp]
|
[--temp]
|
||||||
[--ignore-skip-worktree-bits]
|
|
||||||
[-z] [--stdin]
|
[-z] [--stdin]
|
||||||
[--] [<file>...]
|
[--] [<file>...]
|
||||||
|
|
||||||
@ -38,9 +37,8 @@ OPTIONS
|
|||||||
|
|
||||||
-a::
|
-a::
|
||||||
--all::
|
--all::
|
||||||
checks out all files in the index except for those with the
|
checks out all files in the index. Cannot be used
|
||||||
skip-worktree bit set (see `--ignore-skip-worktree-bits`).
|
together with explicit filenames.
|
||||||
Cannot be used together with explicit filenames.
|
|
||||||
|
|
||||||
-n::
|
-n::
|
||||||
--no-create::
|
--no-create::
|
||||||
@ -61,10 +59,6 @@ OPTIONS
|
|||||||
write the content to temporary files. The temporary name
|
write the content to temporary files. The temporary name
|
||||||
associations will be written to stdout.
|
associations will be written to stdout.
|
||||||
|
|
||||||
--ignore-skip-worktree-bits::
|
|
||||||
Check out all files, including those with the skip-worktree bit
|
|
||||||
set.
|
|
||||||
|
|
||||||
--stdin::
|
--stdin::
|
||||||
Instead of taking list of paths from the command line,
|
Instead of taking list of paths from the command line,
|
||||||
read list of paths from the standard input. Paths are
|
read list of paths from the standard input. Paths are
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user