Compare commits
20 Commits
v2.30.0-rc
...
v2.25.5
Author | SHA1 | Date | |
---|---|---|---|
42ce4c7930 | |||
97d1dcb1ef | |||
06214d171b | |||
92ac04b8ee | |||
d60b6a96f0 | |||
4bd06fd490 | |||
c753e2a7a8 | |||
bcf08f33d8 | |||
c735d7470e | |||
b1726b1a38 | |||
8b1a5f33d3 | |||
804963848e | |||
9fb2a1fb08 | |||
fb049fd85b | |||
6eed462c8f | |||
9b77cec89b | |||
6b82d3eea6 | |||
22539ec3b5 | |||
0d58fef58a | |||
684dd4c2b4 |
@ -4,7 +4,7 @@ insert_final_newline = true
|
||||
|
||||
# The settings for C (*.c and *.h) files are mirrored in .clang-format. Keep
|
||||
# them in sync.
|
||||
[*.{c,h,sh,perl,pl,pm,txt}]
|
||||
[*.{c,h,sh,perl,pl,pm}]
|
||||
indent_style = tab
|
||||
tab_width = 8
|
||||
|
||||
|
3
.github/CONTRIBUTING.md
vendored
3
.github/CONTRIBUTING.md
vendored
@ -16,7 +16,4 @@ If you prefer video, then [this talk](https://www.youtube.com/watch?v=Q7i_qQW__q
|
||||
might be useful to you as the presenter walks you through the contribution
|
||||
process by example.
|
||||
|
||||
Or, you can follow the ["My First Contribution"](https://git-scm.com/docs/MyFirstContribution)
|
||||
tutorial for another example of the contribution process.
|
||||
|
||||
Your friendly Git community!
|
||||
|
71
.github/workflows/check-whitespace.yml
vendored
71
.github/workflows/check-whitespace.yml
vendored
@ -1,71 +0,0 @@
|
||||
name: check-whitespace
|
||||
|
||||
# Get the repo with the commits(+1) in the series.
|
||||
# Process `git log --check` output to extract just the check errors.
|
||||
# Add a comment to the pull request with the check errors.
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
|
||||
jobs:
|
||||
check-whitespace:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set commit count
|
||||
shell: bash
|
||||
run: echo "COMMIT_DEPTH=$((1+$COMMITS))" >>$GITHUB_ENV
|
||||
env:
|
||||
COMMITS: ${{ github.event.pull_request.commits }}
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: ${{ env.COMMIT_DEPTH }}
|
||||
|
||||
- name: git log --check
|
||||
id: check_out
|
||||
run: |
|
||||
log=
|
||||
commit=
|
||||
while read dash etc
|
||||
do
|
||||
case "${dash}" in
|
||||
"---")
|
||||
commit="${etc}"
|
||||
;;
|
||||
"")
|
||||
;;
|
||||
*)
|
||||
if test -n "${commit}"
|
||||
then
|
||||
log="${log}\n${commit}"
|
||||
echo ""
|
||||
echo "--- ${commit}"
|
||||
fi
|
||||
commit=
|
||||
log="${log}\n${dash} ${etc}"
|
||||
echo "${dash} ${etc}"
|
||||
;;
|
||||
esac
|
||||
done <<< $(git log --check --pretty=format:"---% h% s" -${{github.event.pull_request.commits}})
|
||||
|
||||
if test -n "${log}"
|
||||
then
|
||||
echo "::set-output name=checkout::"${log}""
|
||||
exit 2
|
||||
fi
|
||||
|
||||
- name: Add Check Output as Comment
|
||||
uses: actions/github-script@v3
|
||||
id: add-comment
|
||||
env:
|
||||
log: ${{ steps.check_out.outputs.checkout }}
|
||||
with:
|
||||
script: |
|
||||
await github.issues.createComment({
|
||||
issue_number: context.issue.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: `Whitespace errors found in workflow ${{ github.workflow }}:\n\n\`\`\`\n${process.env.log.replace(/\\n/g, "\n")}\n\`\`\``
|
||||
})
|
||||
if: ${{ failure() }}
|
353
.github/workflows/main.yml
vendored
353
.github/workflows/main.yml
vendored
@ -1,353 +0,0 @@
|
||||
name: CI/PR
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
env:
|
||||
DEVELOPER: 1
|
||||
|
||||
jobs:
|
||||
ci-config:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
|
||||
steps:
|
||||
- name: try to clone ci-config branch
|
||||
run: |
|
||||
git -c protocol.version=2 clone \
|
||||
--no-tags \
|
||||
--single-branch \
|
||||
-b ci-config \
|
||||
--depth 1 \
|
||||
--no-checkout \
|
||||
--filter=blob:none \
|
||||
https://github.com/${{ github.repository }} \
|
||||
config-repo &&
|
||||
cd config-repo &&
|
||||
git checkout HEAD -- ci/config || : ignore
|
||||
- id: check-ref
|
||||
name: check whether CI is enabled for ref
|
||||
run: |
|
||||
enabled=yes
|
||||
if test -x config-repo/ci/config/allow-ref &&
|
||||
! config-repo/ci/config/allow-ref '${{ github.ref }}'
|
||||
then
|
||||
enabled=no
|
||||
fi
|
||||
echo "::set-output name=enabled::$enabled"
|
||||
- name: skip if the commit or tree was already tested
|
||||
id: skip-if-redundant
|
||||
uses: actions/github-script@v3
|
||||
if: steps.check-ref.outputs.enabled == 'yes'
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
try {
|
||||
// Figure out workflow ID, commit and tree
|
||||
const { data: run } = await github.actions.getWorkflowRun({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: context.runId,
|
||||
});
|
||||
const workflow_id = run.workflow_id;
|
||||
const head_sha = run.head_sha;
|
||||
const tree_id = run.head_commit.tree_id;
|
||||
|
||||
// See whether there is a successful run for that commit or tree
|
||||
const { data: runs } = await github.actions.listWorkflowRuns({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
per_page: 500,
|
||||
status: 'success',
|
||||
workflow_id,
|
||||
});
|
||||
for (const run of runs.workflow_runs) {
|
||||
if (head_sha === run.head_sha) {
|
||||
core.warning(`Successful run for the commit ${head_sha}: ${run.html_url}`);
|
||||
core.setOutput('enabled', ' but skip');
|
||||
break;
|
||||
}
|
||||
if (run.head_commit && tree_id === run.head_commit.tree_id) {
|
||||
core.warning(`Successful run for the tree ${tree_id}: ${run.html_url}`);
|
||||
core.setOutput('enabled', ' but skip');
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
core.warning(e);
|
||||
}
|
||||
|
||||
windows-build:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: download git-sdk-64-minimal
|
||||
shell: bash
|
||||
run: |
|
||||
## Get artifact
|
||||
urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds
|
||||
id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" |
|
||||
jq -r ".value[] | .id")
|
||||
download_url="$(curl "$urlbase/$id/artifacts" |
|
||||
jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')"
|
||||
curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \
|
||||
-o artifacts.zip "$download_url"
|
||||
|
||||
## Unzip and remove the artifact
|
||||
unzip artifacts.zip
|
||||
rm artifacts.zip
|
||||
- name: build
|
||||
shell: powershell
|
||||
env:
|
||||
HOME: ${{runner.workspace}}
|
||||
MSYSTEM: MINGW64
|
||||
NO_PERL: 1
|
||||
run: |
|
||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||
printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude
|
||||
|
||||
ci/make-test-artifacts.sh artifacts
|
||||
"@
|
||||
- name: upload build artifacts
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: windows-artifacts
|
||||
path: artifacts
|
||||
- name: upload git-sdk-64-minimal
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: git-sdk-64-minimal
|
||||
path: git-sdk-64-minimal
|
||||
windows-test:
|
||||
runs-on: windows-latest
|
||||
needs: [windows-build]
|
||||
strategy:
|
||||
matrix:
|
||||
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: download build artifacts
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
name: windows-artifacts
|
||||
path: ${{github.workspace}}
|
||||
- name: extract build artifacts
|
||||
shell: bash
|
||||
run: tar xf artifacts.tar.gz
|
||||
- name: download git-sdk-64-minimal
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
name: git-sdk-64-minimal
|
||||
path: ${{github.workspace}}/git-sdk-64-minimal/
|
||||
- name: test
|
||||
shell: powershell
|
||||
run: |
|
||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||
# Let Git ignore the SDK
|
||||
printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude
|
||||
|
||||
ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||
"@
|
||||
- name: ci/print-test-failures.sh
|
||||
if: failure()
|
||||
shell: powershell
|
||||
run: |
|
||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: failed-tests-windows
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
vs-build:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
MSYSTEM: MINGW64
|
||||
NO_PERL: 1
|
||||
GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: download git-sdk-64-minimal
|
||||
shell: bash
|
||||
run: |
|
||||
## Get artifact
|
||||
urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds
|
||||
id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" |
|
||||
jq -r ".value[] | .id")
|
||||
download_url="$(curl "$urlbase/$id/artifacts" |
|
||||
jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')"
|
||||
curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \
|
||||
-o artifacts.zip "$download_url"
|
||||
|
||||
## Unzip and remove the artifact
|
||||
unzip artifacts.zip
|
||||
rm artifacts.zip
|
||||
- name: download vcpkg artifacts
|
||||
shell: powershell
|
||||
run: |
|
||||
$urlbase = "https://dev.azure.com/git/git/_apis/build/builds"
|
||||
$id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=9&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id
|
||||
$downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[0].resource.downloadUrl
|
||||
(New-Object Net.WebClient).DownloadFile($downloadUrl, "compat.zip")
|
||||
Expand-Archive compat.zip -DestinationPath . -Force
|
||||
Remove-Item compat.zip
|
||||
- name: add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v1
|
||||
- name: copy dlls to root
|
||||
shell: powershell
|
||||
run: |
|
||||
& compat\vcbuild\vcpkg_copy_dlls.bat release
|
||||
if (!$?) { exit(1) }
|
||||
- name: generate Visual Studio solution
|
||||
shell: bash
|
||||
run: |
|
||||
cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows \
|
||||
-DMSGFMT_EXE=`pwd`/git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
|
||||
- name: MSBuild
|
||||
run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
|
||||
- name: bundle artifact tar
|
||||
shell: powershell
|
||||
env:
|
||||
MSVC: 1
|
||||
VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
|
||||
run: |
|
||||
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||
mkdir -p artifacts &&
|
||||
eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)\"
|
||||
"@
|
||||
- name: upload build artifacts
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: vs-artifacts
|
||||
path: artifacts
|
||||
vs-test:
|
||||
runs-on: windows-latest
|
||||
needs: [vs-build, windows-build]
|
||||
strategy:
|
||||
matrix:
|
||||
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: download git-sdk-64-minimal
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
name: git-sdk-64-minimal
|
||||
path: ${{github.workspace}}/git-sdk-64-minimal/
|
||||
- name: download build artifacts
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
name: vs-artifacts
|
||||
path: ${{github.workspace}}
|
||||
- name: extract build artifacts
|
||||
shell: bash
|
||||
run: tar xf artifacts.tar.gz
|
||||
- name: test
|
||||
shell: powershell
|
||||
env:
|
||||
MSYSTEM: MINGW64
|
||||
NO_SVN_TESTS: 1
|
||||
GIT_TEST_SKIP_REBASE_P: 1
|
||||
run: |
|
||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||
# Let Git ignore the SDK and the test-cache
|
||||
printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude
|
||||
|
||||
ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||
"@
|
||||
- name: ci/print-test-failures.sh
|
||||
if: failure()
|
||||
shell: powershell
|
||||
run: |
|
||||
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: failed-tests-windows
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
regular:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
strategy:
|
||||
matrix:
|
||||
vector:
|
||||
- jobname: linux-clang
|
||||
cc: clang
|
||||
pool: ubuntu-latest
|
||||
- jobname: linux-gcc
|
||||
cc: gcc
|
||||
pool: ubuntu-latest
|
||||
- jobname: osx-clang
|
||||
cc: clang
|
||||
pool: macos-latest
|
||||
- jobname: osx-gcc
|
||||
cc: gcc
|
||||
pool: macos-latest
|
||||
- jobname: GETTEXT_POISON
|
||||
cc: gcc
|
||||
pool: ubuntu-latest
|
||||
env:
|
||||
CC: ${{matrix.vector.cc}}
|
||||
jobname: ${{matrix.vector.jobname}}
|
||||
runs-on: ${{matrix.vector.pool}}
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/run-build-and-tests.sh
|
||||
- run: ci/print-test-failures.sh
|
||||
if: failure()
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: failed-tests-${{matrix.vector.jobname}}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
dockerized:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
strategy:
|
||||
matrix:
|
||||
vector:
|
||||
- jobname: linux-musl
|
||||
image: alpine
|
||||
- jobname: Linux32
|
||||
image: daald/ubuntu32:xenial
|
||||
env:
|
||||
jobname: ${{matrix.vector.jobname}}
|
||||
runs-on: ubuntu-latest
|
||||
container: ${{matrix.vector.image}}
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- run: ci/install-docker-dependencies.sh
|
||||
- run: ci/run-build-and-tests.sh
|
||||
- run: ci/print-test-failures.sh
|
||||
if: failure()
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: failed-tests-${{matrix.vector.jobname}}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
static-analysis:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: StaticAnalysis
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/run-static-analysis.sh
|
||||
documentation:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: Documentation
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/test-documentation.sh
|
13
.gitignore
vendored
13
.gitignore
vendored
@ -25,7 +25,6 @@
|
||||
/git-bisect--helper
|
||||
/git-blame
|
||||
/git-branch
|
||||
/git-bugreport
|
||||
/git-bundle
|
||||
/git-cat-file
|
||||
/git-check-attr
|
||||
@ -67,7 +66,6 @@
|
||||
/git-filter-branch
|
||||
/git-fmt-merge-msg
|
||||
/git-for-each-ref
|
||||
/git-for-each-repo
|
||||
/git-format-patch
|
||||
/git-fsck
|
||||
/git-fsck-objects
|
||||
@ -85,13 +83,13 @@
|
||||
/git-init-db
|
||||
/git-interpret-trailers
|
||||
/git-instaweb
|
||||
/git-legacy-stash
|
||||
/git-log
|
||||
/git-ls-files
|
||||
/git-ls-remote
|
||||
/git-ls-tree
|
||||
/git-mailinfo
|
||||
/git-mailsplit
|
||||
/git-maintenance
|
||||
/git-merge
|
||||
/git-merge-base
|
||||
/git-merge-index
|
||||
@ -115,6 +113,7 @@
|
||||
/git-pack-redundant
|
||||
/git-pack-objects
|
||||
/git-pack-refs
|
||||
/git-parse-remote
|
||||
/git-patch-id
|
||||
/git-prune
|
||||
/git-prune-packed
|
||||
@ -134,6 +133,8 @@
|
||||
/git-remote-ftps
|
||||
/git-remote-fd
|
||||
/git-remote-ext
|
||||
/git-remote-testpy
|
||||
/git-remote-testsvn
|
||||
/git-repack
|
||||
/git-replace
|
||||
/git-request-pull
|
||||
@ -146,9 +147,11 @@
|
||||
/git-rm
|
||||
/git-send-email
|
||||
/git-send-pack
|
||||
/git-serve
|
||||
/git-sh-i18n
|
||||
/git-sh-i18n--envsubst
|
||||
/git-sh-setup
|
||||
/git-sh-i18n
|
||||
/git-shell
|
||||
/git-shortlog
|
||||
/git-show
|
||||
@ -186,7 +189,6 @@
|
||||
/gitweb/gitweb.cgi
|
||||
/gitweb/static/gitweb.js
|
||||
/gitweb/static/gitweb.min.*
|
||||
/config-list.h
|
||||
/command-list.h
|
||||
*.tar.gz
|
||||
*.dsc
|
||||
@ -194,7 +196,6 @@
|
||||
/git.spec
|
||||
*.exe
|
||||
*.[aos]
|
||||
*.o.json
|
||||
*.py[co]
|
||||
.depend/
|
||||
*.gcda
|
||||
@ -216,7 +217,6 @@
|
||||
/tags
|
||||
/TAGS
|
||||
/cscope*
|
||||
/compile_commands.json
|
||||
*.hcc
|
||||
*.obj
|
||||
*.lib
|
||||
@ -239,4 +239,3 @@ Release/
|
||||
/git.VC.VC.opendb
|
||||
/git.VC.db
|
||||
*.dSYM
|
||||
/contrib/buildsystems/out
|
||||
|
1
.mailmap
1
.mailmap
@ -31,7 +31,6 @@ Brandon Casey <drafnel@gmail.com> <casey@nrlssc.navy.mil>
|
||||
Brandon Williams <bwilliams.eng@gmail.com> <bmwill@google.com>
|
||||
brian m. carlson <sandals@crustytoothpaste.net>
|
||||
brian m. carlson <sandals@crustytoothpaste.net> <sandals@crustytoothpaste.ath.cx>
|
||||
brian m. carlson <sandals@crustytoothpaste.net> <bk2204@github.com>
|
||||
Bryan Larsen <bryan@larsen.st> <bryan.larsen@gmail.com>
|
||||
Bryan Larsen <bryan@larsen.st> <bryanlarsen@yahoo.com>
|
||||
Cheng Renquan <crquan@gmail.com>
|
||||
|
12
.travis.yml
12
.travis.yml
@ -16,7 +16,7 @@ compiler:
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- env: jobname=GETTEXT_POISON
|
||||
- env: jobname=GIT_TEST_GETTEXT_POISON
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
@ -32,15 +32,7 @@ matrix:
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
script: ci/run-docker.sh
|
||||
- env: jobname=linux-musl
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
script: ci/run-docker.sh
|
||||
script: ci/run-linux32-docker.sh
|
||||
- env: jobname=StaticAnalysis
|
||||
os: linux
|
||||
compiler:
|
||||
|
@ -8,9 +8,3 @@
|
||||
# in practice it (hopefully!) doesn't matter.
|
||||
race:^want_color$
|
||||
race:^transfer_debug$
|
||||
|
||||
# A boolean value, which tells whether the replace_map has been initialized or
|
||||
# not, is read racily with an update. As this variable is written to only once,
|
||||
# and it's OK if the value change right after reading it, this shouldn't be a
|
||||
# problem.
|
||||
race:^lookup_replace_object$
|
||||
|
@ -91,10 +91,16 @@ For shell scripts specifically (not exhaustive):
|
||||
|
||||
- No shell arrays.
|
||||
|
||||
- No strlen ${#parameter}.
|
||||
|
||||
- No pattern replacement ${parameter/pattern/string}.
|
||||
|
||||
- We use Arithmetic Expansion $(( ... )).
|
||||
|
||||
- Inside Arithmetic Expansion, spell shell variables with $ in front
|
||||
of them, as some shells do not grok $((x)) while accepting $(($x))
|
||||
just fine (e.g. dash older than 0.5.4).
|
||||
|
||||
- We do not use Process Substitution <(list) or >(list).
|
||||
|
||||
- Do not write control structures on a single line with semicolon.
|
||||
@ -232,18 +238,6 @@ For C programs:
|
||||
while( condition )
|
||||
func (bar+1);
|
||||
|
||||
- Do not explicitly compare an integral value with constant 0 or '\0',
|
||||
or a pointer value with constant NULL. For instance, to validate that
|
||||
counted array <ptr, cnt> is initialized but has no elements, write:
|
||||
|
||||
if (!ptr || cnt)
|
||||
BUG("empty array expected");
|
||||
|
||||
and not:
|
||||
|
||||
if (ptr == NULL || cnt != 0);
|
||||
BUG("empty array expected");
|
||||
|
||||
- We avoid using braces unnecessarily. I.e.
|
||||
|
||||
if (bla) {
|
||||
@ -489,11 +483,16 @@ For Python scripts:
|
||||
|
||||
- We follow PEP-8 (http://www.python.org/dev/peps/pep-0008/).
|
||||
|
||||
- As a minimum, we aim to be compatible with Python 2.7.
|
||||
- As a minimum, we aim to be compatible with Python 2.6 and 2.7.
|
||||
|
||||
- Where required libraries do not restrict us to Python 2, we try to
|
||||
also be compatible with Python 3.1 and later.
|
||||
|
||||
- When you must differentiate between Unicode literals and byte string
|
||||
literals, it is OK to use the 'b' prefix. Even though the Python
|
||||
documentation for version 2.6 does not mention this prefix, it has
|
||||
been supported since version 2.6.0.
|
||||
|
||||
Error Messages
|
||||
|
||||
- Do not end error messages with a full stop.
|
||||
|
@ -17,7 +17,6 @@ MAN1_TXT += git.txt
|
||||
MAN1_TXT += gitk.txt
|
||||
MAN1_TXT += gitweb.txt
|
||||
|
||||
# man5 / man7 guides (note: new guides should also be added to command-list.txt)
|
||||
MAN5_TXT += gitattributes.txt
|
||||
MAN5_TXT += githooks.txt
|
||||
MAN5_TXT += gitignore.txt
|
||||
@ -31,7 +30,6 @@ MAN7_TXT += gitcredentials.txt
|
||||
MAN7_TXT += gitcvs-migration.txt
|
||||
MAN7_TXT += gitdiffcore.txt
|
||||
MAN7_TXT += giteveryday.txt
|
||||
MAN7_TXT += gitfaq.txt
|
||||
MAN7_TXT += gitglossary.txt
|
||||
MAN7_TXT += gitnamespaces.txt
|
||||
MAN7_TXT += gitremote-helpers.txt
|
||||
@ -94,7 +92,6 @@ TECH_DOCS += technical/protocol-capabilities
|
||||
TECH_DOCS += technical/protocol-common
|
||||
TECH_DOCS += technical/protocol-v2
|
||||
TECH_DOCS += technical/racy-git
|
||||
TECH_DOCS += technical/reftable
|
||||
TECH_DOCS += technical/send-pack-pipeline
|
||||
TECH_DOCS += technical/shallow
|
||||
TECH_DOCS += technical/signature-format
|
||||
@ -152,9 +149,32 @@ endif
|
||||
-include ../config.mak.autogen
|
||||
-include ../config.mak
|
||||
|
||||
#
|
||||
# For docbook-xsl ...
|
||||
# -1.68.1, no extra settings are needed?
|
||||
# 1.69.0, set ASCIIDOC_ROFF?
|
||||
# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP?
|
||||
# 1.71.1, set ASCIIDOC_ROFF?
|
||||
# 1.72.0, set DOCBOOK_XSL_172.
|
||||
# 1.73.0-, no extra settings are needed
|
||||
#
|
||||
|
||||
ifdef DOCBOOK_XSL_172
|
||||
ASCIIDOC_EXTRA += -a git-asciidoc-no-roff
|
||||
MANPAGE_XSL = manpage-1.72.xsl
|
||||
else
|
||||
ifndef ASCIIDOC_ROFF
|
||||
# docbook-xsl after 1.72 needs the regular XSL, but will not
|
||||
# pass-thru raw roff codes from asciidoc.conf, so turn them off.
|
||||
ASCIIDOC_EXTRA += -a git-asciidoc-no-roff
|
||||
endif
|
||||
endif
|
||||
ifndef NO_MAN_BOLD_LITERAL
|
||||
XMLTO_EXTRA += -m manpage-bold-literal.xsl
|
||||
endif
|
||||
ifdef DOCBOOK_SUPPRESS_SP
|
||||
XMLTO_EXTRA += -m manpage-suppress-sp.xsl
|
||||
endif
|
||||
|
||||
# Newer DocBook stylesheet emits warning cruft in the output when
|
||||
# this is not set, and if set it shows an absolute link. Older
|
||||
@ -295,7 +315,6 @@ cmds_txt = cmds-ancillaryinterrogators.txt \
|
||||
cmds-plumbingmanipulators.txt \
|
||||
cmds-synchingrepositories.txt \
|
||||
cmds-synchelpers.txt \
|
||||
cmds-guide.txt \
|
||||
cmds-purehelpers.txt \
|
||||
cmds-foreignscminterface.txt
|
||||
|
||||
@ -303,7 +322,7 @@ $(cmds_txt): cmd-list.made
|
||||
|
||||
cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
|
||||
$(QUIET_GEN)$(RM) $@ && \
|
||||
$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(cmds_txt) $(QUIET_STDERR) && \
|
||||
$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(QUIET_STDERR) && \
|
||||
date >$@
|
||||
|
||||
mergetools_txt = mergetools-diff.txt mergetools-merge.txt
|
||||
@ -380,10 +399,7 @@ SubmittingPatches.txt: SubmittingPatches
|
||||
$(QUIET_GEN) cp $< $@
|
||||
|
||||
XSLT = docbook.xsl
|
||||
XSLTOPTS =
|
||||
XSLTOPTS += --xinclude
|
||||
XSLTOPTS += --stringparam html.stylesheet docbook-xsl.css
|
||||
XSLTOPTS += --param generate.consistent.ids 1
|
||||
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
|
||||
|
||||
user-manual.html: user-manual.xml $(XSLT)
|
||||
$(QUIET_XSLTPROC)$(RM) $@+ $@ && \
|
||||
|
@ -23,42 +23,6 @@ useful additional context:
|
||||
- `Documentation/SubmittingPatches`
|
||||
- `Documentation/howto/new-command.txt`
|
||||
|
||||
[[getting-help]]
|
||||
=== Getting Help
|
||||
|
||||
If you get stuck, you can seek help in the following places.
|
||||
|
||||
==== git@vger.kernel.org
|
||||
|
||||
This is the main Git project mailing list where code reviews, version
|
||||
announcements, design discussions, and more take place. Those interested in
|
||||
contributing are welcome to post questions here. The Git list requires
|
||||
plain-text-only emails and prefers inline and bottom-posting when replying to
|
||||
mail; you will be CC'd in all replies to you. Optionally, you can subscribe to
|
||||
the list by sending an email to majordomo@vger.kernel.org with "subscribe git"
|
||||
in the body. The https://lore.kernel.org/git[archive] of this mailing list is
|
||||
available to view in a browser.
|
||||
|
||||
==== https://groups.google.com/forum/#!forum/git-mentoring[git-mentoring@googlegroups.com]
|
||||
|
||||
This mailing list is targeted to new contributors and was created as a place to
|
||||
post questions and receive answers outside of the public eye of the main list.
|
||||
Veteran contributors who are especially interested in helping mentor newcomers
|
||||
are present on the list. In order to avoid search indexers, group membership is
|
||||
required to view messages; anyone can join and no approval is required.
|
||||
|
||||
==== https://webchat.freenode.net/#git-devel[#git-devel] on Freenode
|
||||
|
||||
This IRC channel is for conversations between Git contributors. If someone is
|
||||
currently online and knows the answer to your question, you can receive help
|
||||
in real time. Otherwise, you can read the
|
||||
https://colabti.org/irclogger/irclogger_logs/git-devel[scrollback] to see
|
||||
whether someone answered you. IRC does not allow offline private messaging, so
|
||||
if you try to private message someone and then log out of IRC, they cannot
|
||||
respond to you. It's better to ask your questions in the channel so that you
|
||||
can be answered if you disconnect and so that others can learn from the
|
||||
conversation.
|
||||
|
||||
[[getting-started]]
|
||||
== Getting Started
|
||||
|
||||
@ -249,7 +213,7 @@ component you're working on, followed by a blank line (always required) and then
|
||||
the body of your commit message, which should provide the bulk of the context.
|
||||
Remember to be explicit and provide the "Why" of your change, especially if it
|
||||
couldn't easily be understood from your diff. When editing your commit message,
|
||||
don't remove the `Signed-off-by` trailer which was added by `-s` above.
|
||||
don't remove the Signed-off-by line which was added by `-s` above.
|
||||
|
||||
----
|
||||
psuh: add a built-in by popular demand
|
||||
@ -319,14 +283,14 @@ function body:
|
||||
...
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
if (git_config_get_string_tmp("user.name", &cfg_name) > 0)
|
||||
if (git_config_get_string_const("user.name", &cfg_name) > 0)
|
||||
printf(_("No name is found in config\n"));
|
||||
else
|
||||
printf(_("Your name: %s\n"), cfg_name);
|
||||
----
|
||||
|
||||
`git_config()` will grab the configuration from config files known to Git and
|
||||
apply standard precedence rules. `git_config_get_string_tmp()` will look up
|
||||
apply standard precedence rules. `git_config_get_string_const()` will look up
|
||||
a specific key ("user.name") and give you the value. There are a number of
|
||||
single-key lookup functions like this one; you can see them all (and more info
|
||||
about how to use `git_config()`) in `Documentation/technical/api-config.txt`.
|
||||
@ -507,9 +471,6 @@ documentation is consistent with other Git and UNIX manpages; this makes life
|
||||
easier for your user, who can skip to the section they know contains the
|
||||
information they need.
|
||||
|
||||
NOTE: Before trying to build the docs, make sure you have the package `asciidoc`
|
||||
installed.
|
||||
|
||||
Now that you've written your manpage, you'll need to build it explicitly. We
|
||||
convert your AsciiDoc to troff which is man-readable like so:
|
||||
|
||||
@ -525,6 +486,8 @@ $ make -C Documentation/ git-psuh.1
|
||||
$ man Documentation/git-psuh.1
|
||||
----
|
||||
|
||||
NOTE: You may need to install the package `asciidoc` to get this to work.
|
||||
|
||||
While this isn't as satisfying as running through `git help`, you can at least
|
||||
check that your help page looks right.
|
||||
|
||||
@ -1143,25 +1106,11 @@ After a few days, you will hopefully receive a reply to your patchset with some
|
||||
comments. Woohoo! Now you can get back to work.
|
||||
|
||||
It's good manners to reply to each comment, notifying the reviewer that you have
|
||||
made the change suggested, feel the original is better, or that the comment
|
||||
made the change requested, feel the original is better, or that the comment
|
||||
inspired you to do something a new way which is superior to both the original
|
||||
and the suggested change. This way reviewers don't need to inspect your v2 to
|
||||
figure out whether you implemented their comment or not.
|
||||
|
||||
Reviewers may ask you about what you wrote in the patchset, either in
|
||||
the proposed commit log message or in the changes themselves. You
|
||||
should answer these questions in your response messages, but often the
|
||||
reason why reviewers asked these questions to understand what you meant
|
||||
to write is because your patchset needed clarification to be understood.
|
||||
|
||||
Do not be satisfied by just answering their questions in your response
|
||||
and hear them say that they now understand what you wanted to say.
|
||||
Update your patches to clarify the points reviewers had trouble with,
|
||||
and prepare your v2; the words you used to explain your v1 to answer
|
||||
reviewers' questions may be useful thing to use. Your goal is to make
|
||||
your v2 clear enough so that it becomes unnecessary for you to give the
|
||||
same explanation to the next person who reads it.
|
||||
|
||||
If you are going to push back on a comment, be polite and explain why you feel
|
||||
your original is better; be prepared that the reviewer may still disagree with
|
||||
you, and the rest of the community may weigh in on one side or the other. As
|
||||
@ -1194,8 +1143,8 @@ look at the section below this one for some context.)
|
||||
[[after-approval]]
|
||||
=== After Review Approval
|
||||
|
||||
The Git project has four integration branches: `seen`, `next`, `master`, and
|
||||
`maint`. Your change will be placed into `seen` fairly early on by the maintainer
|
||||
The Git project has four integration branches: `pu`, `next`, `master`, and
|
||||
`maint`. Your change will be placed into `pu` fairly early on by the maintainer
|
||||
while it is still in the review process; from there, when it is ready for wider
|
||||
testing, it will be merged into `next`. Plenty of early testers use `next` and
|
||||
may report issues. Eventually, changes in `next` will make it to `master`,
|
||||
|
@ -182,6 +182,30 @@ its `init_log_defaults()` sets its own state (`decoration_style`) and asks
|
||||
`grep` and `diff` to initialize themselves by calling each of their
|
||||
initialization functions.
|
||||
|
||||
For our first example within `git walken`, we don't intend to use any other
|
||||
components within Git, and we don't have any configuration to do. However, we
|
||||
may want to add some later, so for now, we can add an empty placeholder. Create
|
||||
a new function in `builtin/walken.c`:
|
||||
|
||||
----
|
||||
static void init_walken_defaults(void)
|
||||
{
|
||||
/*
|
||||
* We don't actually need the same components `git log` does; leave this
|
||||
* empty for now.
|
||||
*/
|
||||
}
|
||||
----
|
||||
|
||||
Make sure to add a line invoking it inside of `cmd_walken()`.
|
||||
|
||||
----
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
init_walken_defaults();
|
||||
}
|
||||
----
|
||||
|
||||
==== Configuring From `.gitconfig`
|
||||
|
||||
Next, we should have a look at any relevant configuration settings (i.e.,
|
||||
@ -333,6 +357,9 @@ static void walken_commit_walk(struct rev_info *rev)
|
||||
...
|
||||
|
||||
while ((commit = get_revision(rev))) {
|
||||
if (!commit)
|
||||
continue;
|
||||
|
||||
strbuf_reset(&prettybuf);
|
||||
pp_commit_easy(CMIT_FMT_ONELINE, commit, &prettybuf);
|
||||
puts(prettybuf.buf);
|
||||
@ -364,9 +391,17 @@ Next, let's try to filter the commits we see based on their author. This is
|
||||
equivalent to running `git log --author=<pattern>`. We can add a filter by
|
||||
modifying `rev_info.grep_filter`, which is a `struct grep_opt`.
|
||||
|
||||
First some setup. Add `grep_config()` to `git_walken_config()`:
|
||||
First some setup. Add `init_grep_defaults()` to `init_walken_defaults()` and add
|
||||
`grep_config()` to `git_walken_config()`:
|
||||
|
||||
----
|
||||
static void init_walken_defaults(void)
|
||||
{
|
||||
init_grep_defaults(the_repository);
|
||||
}
|
||||
|
||||
...
|
||||
|
||||
static int git_walken_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
grep_config(var, value, cb);
|
||||
|
16
Documentation/RelNotes/2.17.6.txt
Normal file
16
Documentation/RelNotes/2.17.6.txt
Normal file
@ -0,0 +1,16 @@
|
||||
Git v2.17.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release addresses the security issues CVE-2021-21300.
|
||||
|
||||
Fixes since v2.17.5
|
||||
-------------------
|
||||
|
||||
* CVE-2021-21300:
|
||||
On case-insensitive file systems with support for symbolic links,
|
||||
if Git is configured globally to apply delay-capable clean/smudge
|
||||
filters (such as Git LFS), Git could be fooled into running
|
||||
remote code during a clone.
|
||||
|
||||
Credit for finding and fixing this vulnerability goes to Matheus
|
||||
Tavares, helped by Johannes Schindelin.
|
6
Documentation/RelNotes/2.18.5.txt
Normal file
6
Documentation/RelNotes/2.18.5.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Git v2.18.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6 to address
|
||||
the security issue CVE-2021-21300; see the release notes for that
|
||||
version for details.
|
6
Documentation/RelNotes/2.19.6.txt
Normal file
6
Documentation/RelNotes/2.19.6.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Git v2.19.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6 and
|
||||
v2.18.5 to address the security issue CVE-2021-21300; see the
|
||||
release notes for these versions for details.
|
6
Documentation/RelNotes/2.20.5.txt
Normal file
6
Documentation/RelNotes/2.20.5.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Git v2.20.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6, v2.18.5
|
||||
and v2.19.6 to address the security issue CVE-2021-21300; see
|
||||
the release notes for these versions for details.
|
6
Documentation/RelNotes/2.21.4.txt
Normal file
6
Documentation/RelNotes/2.21.4.txt
Normal file
@ -0,0 +1,6 @@
|
||||
Git v2.21.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6, v2.18.5,
|
||||
v2.19.6 and v2.20.5 to address the security issue CVE-2021-21300;
|
||||
see the release notes for these versions for details.
|
7
Documentation/RelNotes/2.22.5.txt
Normal file
7
Documentation/RelNotes/2.22.5.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Git v2.22.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6,
|
||||
v2.18.5, v2.19.6, v2.20.5 and v2.21.4 to address the security
|
||||
issue CVE-2021-21300; see the release notes for these versions
|
||||
for details.
|
7
Documentation/RelNotes/2.23.4.txt
Normal file
7
Documentation/RelNotes/2.23.4.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Git v2.23.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6, v2.18.5,
|
||||
v2.19.6, v2.20.5, v2.21.4 and v2.22.5 to address the security
|
||||
issue CVE-2021-21300; see the release notes for these versions
|
||||
for details.
|
7
Documentation/RelNotes/2.24.4.txt
Normal file
7
Documentation/RelNotes/2.24.4.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Git v2.24.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6, v2.18.5,
|
||||
v2.19.6, v2.20.5, v2.21.4, v2.22.5 and v2.23.4 to address the
|
||||
security issue CVE-2021-21300; see the release notes for these
|
||||
versions for details.
|
7
Documentation/RelNotes/2.25.5.txt
Normal file
7
Documentation/RelNotes/2.25.5.txt
Normal file
@ -0,0 +1,7 @@
|
||||
Git v2.25.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.17.6, v2.18.5,
|
||||
v2.19.6, v2.20.5, v2.21.4, v2.22.5, v2.23.4 and v2.24.4 to address
|
||||
the security issue CVE-2021-21300; see the release notes for
|
||||
these versions for details.
|
@ -1,341 +0,0 @@
|
||||
Git 2.26 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.25
|
||||
-------------------
|
||||
|
||||
Backward compatibility notes
|
||||
|
||||
* "git rebase" uses a different backend that is based on the 'merge'
|
||||
machinery by default. There are a few known differences in the
|
||||
behaviour from the traditional machinery based on patch+apply.
|
||||
|
||||
If your workflow is negatively affected by this change, please
|
||||
report it to git@vger.kernel.org so that we can take a look into
|
||||
it. After doing so, you can set the 'rebase.backend' configuration
|
||||
variable to 'apply', in order to use the old default behaviour in
|
||||
the meantime.
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* Sample credential helper for using .netrc has been updated to work
|
||||
out of the box.
|
||||
|
||||
* gpg.minTrustLevel configuration variable has been introduced to
|
||||
tell various signature verification codepaths the required minimum
|
||||
trust level.
|
||||
|
||||
* The command line completion (in contrib/) learned to complete
|
||||
subcommands and arguments to "git worktree".
|
||||
|
||||
* Disambiguation logic to tell revisions and pathspec apart has been
|
||||
tweaked so that backslash-escaped glob special characters do not
|
||||
count in the "wildcards are pathspec" rule.
|
||||
|
||||
* One effect of specifying where the GIT_DIR is (either with the
|
||||
environment variable, or with the "git --git-dir=<where> cmd"
|
||||
option) is to disable the repository discovery. This has been
|
||||
placed a bit more stress in the documentation, as new users often
|
||||
get confused.
|
||||
|
||||
* Two help messages given when "git add" notices the user gave it
|
||||
nothing to add have been updated to use advise() API.
|
||||
|
||||
* A new version of fsmonitor-watchman hook has been introduced, to
|
||||
avoid races.
|
||||
|
||||
* "git config" learned to show in which "scope", in addition to in
|
||||
which file, each config setting comes from.
|
||||
|
||||
* The basic 7 colors learned the brighter counterparts
|
||||
(e.g. "brightred").
|
||||
|
||||
* "git sparse-checkout" learned a new "add" subcommand.
|
||||
|
||||
* A configuration element used for credential subsystem can now use
|
||||
wildcard pattern to specify for which set of URLs the entry
|
||||
applies.
|
||||
|
||||
* "git clone --recurse-submodules --single-branch" now uses the same
|
||||
single-branch option when cloning the submodules.
|
||||
|
||||
* "git rm" and "git stash" learns the new "--pathspec-from-file"
|
||||
option.
|
||||
|
||||
* "git am --show-current-patch" is a way to show the piece of e-mail
|
||||
for the stopped step, which is not suitable to directly feed "git
|
||||
apply" (it is designed to be a good "git am" input). It learned a
|
||||
new option to show only the patch part.
|
||||
|
||||
* Handling of conflicting renames in merge-recursive have further
|
||||
been made consistent with how existing codepaths try to mimic what
|
||||
is done to add/add conflicts.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* Tell .editorconfig that in this project, *.txt files are indented
|
||||
with tabs.
|
||||
|
||||
* The test-lint machinery knew to check "VAR=VAL shell_function"
|
||||
construct, but did not check "VAR= shell_function", which has been
|
||||
corrected.
|
||||
|
||||
* Replace "git config --bool" calls with "git config --type=bool" in
|
||||
sample templates.
|
||||
|
||||
* The effort to move "git-add--interactive" to C continues.
|
||||
|
||||
* Improve error message generation for "git submodule add".
|
||||
|
||||
* Preparation of test scripts for the day when the object names will
|
||||
use SHA-256 continues.
|
||||
|
||||
* Warn programmers about pretend_object_file() that allows the code
|
||||
to tentatively use in-core objects.
|
||||
|
||||
* The way "git pack-objects" reuses objects stored in existing pack
|
||||
to generate its result has been improved.
|
||||
|
||||
* The transport protocol version 2 becomes the default one.
|
||||
|
||||
* Traditionally, we avoided threaded grep while searching in objects
|
||||
(as opposed to files in the working tree) as accesses to the object
|
||||
layer is not thread-safe. This limitation is getting lifted.
|
||||
|
||||
* "git rebase -i" (and friends) used to unnecessarily check out the
|
||||
tip of the branch to be rebased, which has been corrected.
|
||||
|
||||
* A low-level API function get_oid(), that accepts various ways to
|
||||
name an object, used to issue end-user facing error messages
|
||||
without l10n, which has been updated to be translatable.
|
||||
|
||||
* Unneeded connectivity check is now disabled in a partial clone when
|
||||
fetching into it.
|
||||
|
||||
* Some rough edges in the sparse-checkout feature, especially around
|
||||
the cone mode, have been cleaned up.
|
||||
|
||||
* The diff-* plumbing family of subcommands now pay attention to the
|
||||
diff.wsErrorHighlight configuration, which has been ignored before;
|
||||
this allows "git add -p" to also show the whitespace problems to
|
||||
the end user.
|
||||
|
||||
* Some codepaths were given a repository instance as a parameter to
|
||||
work in the repository, but passed the_repository instance to its
|
||||
callees, which has been cleaned up (somewhat).
|
||||
|
||||
* Memory footprint and performance of "git name-rev" has been
|
||||
improved.
|
||||
|
||||
* The object reachability bitmap machinery and the partial cloning
|
||||
machinery were not prepared to work well together, because some
|
||||
object-filtering criteria that partial clones use inherently rely
|
||||
on object traversal, but the bitmap machinery is an optimization
|
||||
to bypass that object traversal. There however are some cases
|
||||
where they can work together, and they were taught about them.
|
||||
|
||||
* "git rebase" has learned to use the merge backend (i.e. the
|
||||
machinery that drives "rebase -i") by default, while allowing
|
||||
"--apply" option to use the "apply" backend (e.g. the moral
|
||||
equivalent of "format-patch piped to am"). The rebase.backend
|
||||
configuration variable can be set to customize.
|
||||
|
||||
* Underlying machinery of "git bisect--helper" is being refactored
|
||||
into pieces that are more easily reused.
|
||||
|
||||
|
||||
Fixes since v2.25
|
||||
-----------------
|
||||
|
||||
* "git commit" gives output similar to "git status" when there is
|
||||
nothing to commit, but without honoring the advise.statusHints
|
||||
configuration variable, which has been corrected.
|
||||
|
||||
* has_object_file() said "no" given an object registered to the
|
||||
system via pretend_object_file(), making it inconsistent with
|
||||
read_object_file(), causing lazy fetch to attempt fetching an
|
||||
empty tree from promisor remotes.
|
||||
|
||||
* Complete an update to tutorial that encourages "git switch" over
|
||||
"git checkout" that was done only half-way.
|
||||
|
||||
* C pedantry ;-) fix.
|
||||
|
||||
* The code that tries to skip over the entries for the paths in a
|
||||
single directory using the cache-tree was not careful enough
|
||||
against corrupt index file.
|
||||
|
||||
* Reduce unnecessary round-trip when running "ls-remote" over the
|
||||
stateless RPC mechanism.
|
||||
|
||||
* "git restore --staged" did not correctly update the cache-tree
|
||||
structure, resulting in bogus trees to be written afterwards, which
|
||||
has been corrected.
|
||||
|
||||
* The code recently added to move to the entry beyond the ones in the
|
||||
same directory in the index in the sparse-cone mode did not count
|
||||
the number of entries to skip over incorrectly, which has been
|
||||
corrected.
|
||||
|
||||
* Rendering by "git log --graph" of ancestry lines leading to a merge
|
||||
commit were made suboptimal to waste vertical space a bit with a
|
||||
recent update, which has been corrected.
|
||||
|
||||
* Work around test breakages caused by custom regex engine used in
|
||||
libasan, when address sanitizer is used with more recent versions
|
||||
of gcc and clang.
|
||||
|
||||
* Minor bugfixes to "git add -i" that has recently been rewritten in C.
|
||||
|
||||
* "git fetch --refmap=" option has got a better documentation.
|
||||
|
||||
* "git checkout X" did not correctly fail when X is not a local
|
||||
branch but could name more than one remote-tracking branches
|
||||
(i.e. to be dwimmed as the starting point to create a corresponding
|
||||
local branch), which has been corrected.
|
||||
(merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).
|
||||
|
||||
* Corner case bugs in "git clean" that stems from a (necessarily for
|
||||
performance reasons) awkward calling convention in the directory
|
||||
enumeration API has been corrected.
|
||||
|
||||
* A fetch that is told to recursively fetch updates in submodules
|
||||
inevitably produces reams of output, and it becomes hard to spot
|
||||
error messages. The command has been taught to enumerate
|
||||
submodules that had errors at the end of the operation.
|
||||
(merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).
|
||||
|
||||
* The "--recurse-submodules" option of various subcommands did not
|
||||
work well when run in an alternate worktree, which has been
|
||||
corrected.
|
||||
|
||||
* Futureproofing a test not to depend on the current implementation
|
||||
detail.
|
||||
|
||||
* Running "git rm" on a submodule failed unnecessarily when
|
||||
.gitmodules is only cache-dirty, which has been corrected.
|
||||
|
||||
* C pedantry ;-) fix.
|
||||
|
||||
* "git grep --no-index" should not get affected by the contents of
|
||||
the .gitmodules file but when "--recurse-submodules" is given or
|
||||
the "submodule.recurse" variable is set, it did. Now these
|
||||
settings are ignored in the "--no-index" mode.
|
||||
|
||||
* Technical details of the bundle format has been documented.
|
||||
|
||||
* Unhelpful warning messages during documentation build have been squelched.
|
||||
|
||||
* "git rebase -i" identifies existing commits in its todo file with
|
||||
their abbreviated object name, which could become ambiguous as it
|
||||
goes to create new commits, and has a mechanism to avoid ambiguity
|
||||
in the main part of its execution. A few other cases however were
|
||||
not covered by the protection against ambiguity, which has been
|
||||
corrected.
|
||||
|
||||
* Allow the rebase.missingCommitsCheck configuration to kick in when
|
||||
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
|
||||
(merge 5a5445d878 ag/edit-todo-drop-check later to maint).
|
||||
|
||||
* The way "git submodule status" reports an initialized but not yet
|
||||
populated submodule has not been reimplemented correctly when a
|
||||
part of the "git submodule" command was rewritten in C, which has
|
||||
been corrected.
|
||||
(merge f38c92452d pk/status-of-uncloned-submodule later to maint).
|
||||
|
||||
* The code to automatically shrink the fan-out in the notes tree had
|
||||
an off-by-one bug, which has been killed.
|
||||
|
||||
* The index-pack code now diagnoses a bad input packstream that
|
||||
records the same object twice when it is used as delta base; the
|
||||
code used to declare a software bug when encountering such an
|
||||
input, but it is an input error.
|
||||
|
||||
|
||||
* The code to compute the commit-graph has been taught to use a more
|
||||
robust way to tell if two object directories refer to the same
|
||||
thing.
|
||||
(merge a7df60cac8 tb/commit-graph-object-dir later to maint).
|
||||
|
||||
* "git remote rename X Y" needs to adjust configuration variables
|
||||
(e.g. branch.<name>.remote) whose value used to be X to Y.
|
||||
branch.<name>.pushRemote is now also updated.
|
||||
|
||||
* Update to doc-diff.
|
||||
|
||||
* Doc markup fix.
|
||||
|
||||
* "git check-ignore" did not work when the given path is explicitly
|
||||
marked as not ignored with a negative entry in the .gitignore file.
|
||||
|
||||
* The merge-recursive machinery failed to refresh the cache entry for
|
||||
a merge result in a couple of places, resulting in an unnecessary
|
||||
merge failure, which has been fixed.
|
||||
|
||||
* Fix for a bug revealed by a recent change to make the protocol v2
|
||||
the default.
|
||||
|
||||
* In rare cases "git worktree add <path>" could think that <path>
|
||||
was already a registered worktree even when it wasn't and refuse
|
||||
to add the new worktree. This has been corrected.
|
||||
(merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).
|
||||
|
||||
* "git push" should stop from updating a branch that is checked out
|
||||
when receive.denyCurrentBranch configuration is set, but it failed
|
||||
to pay attention to checkouts in secondary worktrees. This has
|
||||
been corrected.
|
||||
(merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).
|
||||
|
||||
* "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
|
||||
checked it out, even when the BRANCH is checked out in a different
|
||||
worktree. This has been corrected.
|
||||
(merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).
|
||||
|
||||
* "git describe" in a repository with multiple root commits sometimes
|
||||
gave up looking for the best tag to describe a given commit with
|
||||
too early, which has been adjusted.
|
||||
|
||||
* "git merge signed-tag" while lacking the public key started to say
|
||||
"No signature", which was utterly wrong. This regression has been
|
||||
reverted.
|
||||
|
||||
* MinGW's poll() emulation has been improved.
|
||||
|
||||
* "git show" and others gave an object name in raw format in its
|
||||
error output, which has been corrected to give it in hex.
|
||||
|
||||
* "git fetch" over HTTP walker protocol did not show any progress
|
||||
output. We inherently do not know how much work remains, but still
|
||||
we can show something not to bore users.
|
||||
(merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).
|
||||
|
||||
* Both "git ls-remote -h" and "git grep -h" give short usage help,
|
||||
like any other Git subcommand, but it is not unreasonable to expect
|
||||
that the former would behave the same as "git ls-remote --head"
|
||||
(there is no other sensible behaviour for the latter). The
|
||||
documentation has been updated in an attempt to clarify this.
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
|
||||
(merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
|
||||
(merge c513a958b6 ss/t6025-modernize later to maint).
|
||||
(merge b441717256 dl/test-must-fail-fixes later to maint).
|
||||
(merge d031049da3 mt/sparse-checkout-doc-update later to maint).
|
||||
(merge 145136a95a jc/skip-prefix later to maint).
|
||||
(merge 5290d45134 jk/alloc-cleanups later to maint).
|
||||
(merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
|
||||
(merge 517b60564e rs/strbuf-insertstr later to maint).
|
||||
(merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
|
||||
(merge de26f02db1 js/test-avoid-pipe later to maint).
|
||||
(merge a2dc43414c es/doc-mentoring later to maint).
|
||||
(merge 02bbbe9df9 es/worktree-cleanup later to maint).
|
||||
(merge 2ce6d075fa rs/micro-cleanups later to maint).
|
||||
(merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
|
||||
(merge 3c29e21eb0 ma/test-cleanup later to maint).
|
||||
(merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
|
||||
(merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
|
||||
(merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
|
||||
(merge fd0bc17557 kk/complete-diff-color-moved later to maint).
|
||||
(merge 65bf820d0e en/test-cleanup later to maint).
|
@ -1,5 +0,0 @@
|
||||
Git v2.26.1 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.4; see
|
||||
the release notes for that version for details.
|
@ -1,5 +0,0 @@
|
||||
Git v2.26.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.17.5; see
|
||||
the release notes for that version for details.
|
@ -1,525 +0,0 @@
|
||||
Git 2.27 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.26
|
||||
-------------------
|
||||
|
||||
Backward compatibility notes
|
||||
|
||||
* When "git describe C" finds that commit C is pointed by a signed or
|
||||
annotated tag, which records T as its tagname in the object, the
|
||||
command gives T as its answer. Even if the user renames or moves
|
||||
such a tag from its natural location in the "refs/tags/" hierarchy,
|
||||
"git describe C" would still give T as the answer, but in such a
|
||||
case "git show T^0" would no longer work as expected. There may be
|
||||
nothing at "refs/tags/T" or even worse there may be a different tag
|
||||
instead.
|
||||
|
||||
Starting from this version, "git describe" will always use the
|
||||
"long" version, as if the "--long" option were given, when giving
|
||||
its output based on such a misplaced tag to work around the problem.
|
||||
|
||||
* "git pull" issues a warning message until the pull.rebase
|
||||
configuration variable is explicitly given, which some existing
|
||||
users may find annoying---those who prefer not to rebase need to
|
||||
set the variable to false to squelch the warning.
|
||||
|
||||
* The transport protocol version 2, which was promoted to the default
|
||||
in Git 2.26 release, turned out to have some remaining rough edges,
|
||||
so it has been demoted from the default.
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* A handful of options to configure SSL when talking to proxies have
|
||||
been added.
|
||||
|
||||
* Smudge/clean conversion filters are now given more information
|
||||
(e.g. the object of the tree-ish in which the blob being converted
|
||||
appears, in addition to its path, which has already been given).
|
||||
|
||||
* When "git describe C" finds an annotated tag with tagname A to be
|
||||
the best name to explain commit C, and the tag is stored in a
|
||||
"wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
|
||||
command gave a warning message but used A (not B) to describe C.
|
||||
If C is exactly at the tag, the describe output would be "A", but
|
||||
"git rev-parse A^0" would not be equal as "git rev-parse C^0". The
|
||||
behavior of the command has been changed to use the "long" form
|
||||
i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.
|
||||
|
||||
* "git pull" learned to warn when no pull.rebase configuration
|
||||
exists, and neither --[no-]rebase nor --ff-only is given (which
|
||||
would result a merge).
|
||||
|
||||
* "git p4" learned four new hooks and also "--no-verify" option to
|
||||
bypass them (and the existing "p4-pre-submit" hook).
|
||||
|
||||
* "git pull" shares many options with underlying "git fetch", but
|
||||
some of them were not documented and some of those that would make
|
||||
sense to pass down were not passed down.
|
||||
|
||||
* "git rebase" learned the "--no-gpg-sign" option to countermand
|
||||
commit.gpgSign the user may have.
|
||||
|
||||
* The output from "git format-patch" uses RFC 2047 encoding for
|
||||
non-ASCII letters on From: and Subject: headers, so that it can
|
||||
directly be fed to e-mail programs. A new option has been added
|
||||
to produce these headers in raw.
|
||||
|
||||
* "git log" learned "--show-pulls" that helps pathspec limited
|
||||
history views; a merge commit that takes the whole change from a
|
||||
side branch, which is normally omitted from the output, is shown
|
||||
in addition to the commits that introduce real changes.
|
||||
|
||||
* The interactive input from various codepaths are consolidated and
|
||||
any prompt possibly issued earlier are fflush()ed before we read.
|
||||
|
||||
* Allow "git rebase" to reapply all local commits, even if the may be
|
||||
already in the upstream, without checking first.
|
||||
|
||||
* The 'pack.useSparse' configuration variable now defaults to 'true',
|
||||
enabling an optimization that has been experimental since Git 2.21.
|
||||
|
||||
* "git rebase" happens to call some hooks meant for "checkout" and
|
||||
"commit" by this was not a designed behaviour than historical
|
||||
accident. This has been documented.
|
||||
|
||||
* "git merge" learns the "--autostash" option.
|
||||
|
||||
* "sparse-checkout" UI improvements.
|
||||
|
||||
* "git update-ref --stdin" learned a handful of new verbs to let the
|
||||
user control ref update transactions more explicitly, which helps
|
||||
as an ingredient to implement two-phase commit-style atomic
|
||||
ref-updates across multiple repositories.
|
||||
|
||||
* "git commit-graph write" learned different ways to write out split
|
||||
files.
|
||||
|
||||
* Introduce an extension to the commit-graph to make it efficient to
|
||||
check for the paths that were modified at each commit using Bloom
|
||||
filters.
|
||||
|
||||
* The approxidate parser learns to parse seconds with fraction and
|
||||
ignore fractional part.
|
||||
|
||||
* The userdiff patterns for Markdown documents have been added.
|
||||
|
||||
* The sparse-checkout patterns have been forbidden from excluding all
|
||||
paths, leaving an empty working tree, for a long time. This
|
||||
limitation has been lifted.
|
||||
|
||||
* "git restore --staged --worktree" now defaults to take the contents
|
||||
out of "HEAD", instead of erring out.
|
||||
|
||||
* "git p4" learned to recover from a (broken) state where a directory
|
||||
and a file are recorded at the same path in the Perforce repository
|
||||
the same way as their clients do.
|
||||
|
||||
* "git multi-pack-index repack" has been taught to honor some
|
||||
repack.* configuration variables.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* The advise API has been revamped to allow more systematic enumeration of
|
||||
advice knobs in the future.
|
||||
|
||||
* SHA-256 transition continues.
|
||||
|
||||
* The code to interface with GnuPG has been refactored.
|
||||
|
||||
* "git stash" has kept an escape hatch to use the scripted version
|
||||
for a few releases, which got stale. It has been removed.
|
||||
|
||||
* Enable tests that require GnuPG on Windows.
|
||||
|
||||
* Minor test usability improvement.
|
||||
|
||||
* Trace2 enhancement to allow logging of the environment variables.
|
||||
|
||||
* Test clean-up continues.
|
||||
|
||||
* Perf-test update.
|
||||
|
||||
* A Windows-specific test element has been made more robust against
|
||||
misuse from both user's environment and programmer's errors.
|
||||
|
||||
* Various tests have been updated to work around issues found with
|
||||
shell utilities that come with busybox etc.
|
||||
|
||||
* The config API made mixed uses of int and size_t types to represent
|
||||
length of various pieces of text it parsed, which has been updated
|
||||
to use the correct type (i.e. size_t) throughout.
|
||||
|
||||
* The "--decorate-refs" and "--decorate-refs-exclude" options "git
|
||||
log" takes have learned a companion configuration variable
|
||||
log.excludeDecoration that sits at the lowest priority in the
|
||||
family.
|
||||
|
||||
* A new CI job to build and run test suite on linux with musl libc
|
||||
has been added.
|
||||
|
||||
* Update the CI configuration to use GitHub Actions, retiring the one
|
||||
based on Azure Pipelines.
|
||||
|
||||
* The directory traversal code had redundant recursive calls which
|
||||
made its performance characteristics exponential with respect to
|
||||
the depth of the tree, which was corrected.
|
||||
|
||||
* "git blame" learns to take advantage of the "changed-paths" Bloom
|
||||
filter stored in the commit-graph file.
|
||||
|
||||
* The "bugreport" tool has been added.
|
||||
|
||||
* The object walk with object filter "--filter=tree:0" can now take
|
||||
advantage of the pack bitmap when available.
|
||||
|
||||
* Instead of always building all branches at GitHub via Actions,
|
||||
users can specify which branches to build.
|
||||
|
||||
* Codepaths that show progress meter have been taught to also use the
|
||||
start_progress() and the stop_progress() calls as a "region" to be
|
||||
traced.
|
||||
|
||||
* Instead of downloading Windows SDK for CI jobs for windows builds
|
||||
from an external site (wingit.blob.core.windows.net), use the one
|
||||
created in the windows-build job, to work around quota issues at
|
||||
the external site.
|
||||
|
||||
|
||||
Fixes since v2.26
|
||||
-----------------
|
||||
|
||||
* The real_path() convenience function can easily be misused; with a
|
||||
bit of code refactoring in the callers' side, its use has been
|
||||
eliminated.
|
||||
(merge 49d3c4b481 am/real-path-fix later to maint).
|
||||
|
||||
* Update "git p4" to work with Python 3.
|
||||
(merge 6bb40ed20a yz/p4-py3 later to maint).
|
||||
|
||||
* The mechanism to prevent "git commit" from making an empty commit
|
||||
or amending during an interrupted cherry-pick was broken during the
|
||||
rewrite of "git rebase" in C, which has been corrected.
|
||||
(merge 430b75f720 pw/advise-rebase-skip later to maint).
|
||||
|
||||
* Fix "git checkout --recurse-submodules" of a nested submodule
|
||||
hierarchy.
|
||||
(merge 846f34d351 pb/recurse-submodules-fix later to maint).
|
||||
|
||||
* The "--fork-point" mode of "git rebase" regressed when the command
|
||||
was rewritten in C back in 2.20 era, which has been corrected.
|
||||
(merge f08132f889 at/rebase-fork-point-regression-fix later to maint).
|
||||
|
||||
* The import-tars importer (in contrib/fast-import/) used to create
|
||||
phony files at the top-level of the repository when the archive
|
||||
contains global PAX headers, which made its own logic to detect and
|
||||
omit the common leading directory ineffective, which has been
|
||||
corrected.
|
||||
(merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint).
|
||||
|
||||
* Simplify the commit ancestry connectedness check in a partial clone
|
||||
repository in which "promised" objects are assumed to be obtainable
|
||||
lazily on-demand from promisor remote repositories.
|
||||
(merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint).
|
||||
|
||||
* The server-end of the v2 protocol to serve "git clone" and "git
|
||||
fetch" was not prepared to see a delim packets at unexpected
|
||||
places, which led to a crash.
|
||||
(merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint).
|
||||
|
||||
* When fed a midx that records no objects, some codepaths tried to
|
||||
loop from 0 through (num_objects-1), which, due to integer
|
||||
arithmetic wrapping around, made it nonsense operation with out of
|
||||
bounds array accesses. The code has been corrected to reject such
|
||||
an midx file.
|
||||
(merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint).
|
||||
|
||||
* Utitiles run via the run_command() API were not spawned correctly
|
||||
on Cygwin, when the paths to them are given as a full path with
|
||||
backslashes.
|
||||
(merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint).
|
||||
|
||||
* "git pull --rebase" tried to run a rebase even after noticing that
|
||||
the pull results in a fast-forward and no rebase is needed nor
|
||||
sensible, for the past few years due to a mistake nobody noticed.
|
||||
(merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint).
|
||||
|
||||
* "git rebase" with the merge backend did not work well when the
|
||||
rebase.abbreviateCommands configuration was set.
|
||||
(merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint).
|
||||
|
||||
* The logic to auto-follow tags by "git clone --single-branch" was
|
||||
not careful to avoid lazy-fetching unnecessary tags, which has been
|
||||
corrected.
|
||||
(merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint).
|
||||
|
||||
* "git rebase -i" did not leave the reflog entries correctly.
|
||||
(merge 1f6965f994 en/sequencer-reflog-action later to maint).
|
||||
|
||||
* The more aggressive updates to remote-tracking branches we had for
|
||||
the past 7 years or so were not reflected in the documentation,
|
||||
which has been corrected.
|
||||
(merge a44088435c pb/pull-fetch-doc later to maint).
|
||||
|
||||
* We've left the command line parsing of "git log :/a/b/" broken for
|
||||
about a full year without anybody noticing, which has been
|
||||
corrected.
|
||||
(merge 0220461071 jc/missing-ref-store-fix later to maint).
|
||||
|
||||
* Misc fixes for Windows.
|
||||
(merge 3efc128cd5 js/mingw-fixes later to maint).
|
||||
|
||||
* "git rebase" (again) learns to honor "--no-keep-empty", which lets
|
||||
the user to discard commits that are empty from the beginning (as
|
||||
opposed to the ones that become empty because of rebasing). The
|
||||
interactive rebase also marks commits that are empty in the todo.
|
||||
(merge 50ed76148a en/rebase-no-keep-empty later to maint).
|
||||
|
||||
* Parsing the host part out of URL for the credential helper has been corrected.
|
||||
(merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint).
|
||||
|
||||
* Document the recommended way to abort a failing test early (e.g. by
|
||||
exiting a loop), which is to say "return 1".
|
||||
(merge 7cc112dc95 jc/doc-test-leaving-early later to maint).
|
||||
|
||||
* The code that refreshes the last access and modified time of
|
||||
on-disk packfiles and loose object files have been updated.
|
||||
(merge 312cd76130 lr/freshen-file-fix later to maint).
|
||||
|
||||
* Validation of push certificate has been made more robust against
|
||||
timing attacks.
|
||||
(merge 719483e547 bc/constant-memequal later to maint).
|
||||
|
||||
* The custom hash function used by "git fast-import" has been
|
||||
replaced with the one from hashmap.c, which gave us a nice
|
||||
performance boost.
|
||||
(merge d8410a816b jk/fast-import-use-hashmap later to maint).
|
||||
|
||||
* The "git submodule" command did not initialize a few variables it
|
||||
internally uses and was affected by variable settings leaked from
|
||||
the environment.
|
||||
(merge 65d100c4dd lx/submodule-clear-variables later to maint).
|
||||
|
||||
* Raise the minimum required version of docbook-xsl package to 1.74,
|
||||
as 1.74.0 was from late 2008, which is more than 10 years old, and
|
||||
drop compatibility cruft from our documentation suite.
|
||||
(merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint).
|
||||
|
||||
* "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap"
|
||||
(merge 88acccda38 jc/log-no-mailmap later to maint).
|
||||
|
||||
* "git commit-graph write --expire-time=<timestamp>" did not use the
|
||||
given timestamp correctly, which has been corrected.
|
||||
(merge b09b785c78 ds/commit-graph-expiry-fix later to maint).
|
||||
|
||||
* Tests update to use "test-chmtime" instead of "touch -t".
|
||||
(merge e892a56845 ds/t5319-touch-fix later to maint).
|
||||
|
||||
* "git diff" in a partial clone learned to avoid lazy loading blob
|
||||
objects in more casese when they are not needed.
|
||||
(merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint).
|
||||
|
||||
* "git push --atomic" used to show failures for refs that weren't
|
||||
even pushed, which has been corrected.
|
||||
(merge dfe1b7f19c jx/atomic-push later to maint).
|
||||
|
||||
* Code in builtin/*, i.e. those can only be called from within
|
||||
built-in subcommands, that implements bulk of a couple of
|
||||
subcommands have been moved to libgit.a so that they could be used
|
||||
by others.
|
||||
(merge 9460fd48b5 dl/libify-a-few later to maint).
|
||||
|
||||
* Allowing the user to split a patch hunk while "git stash -p" does
|
||||
not work well; a band-aid has been added to make this (partially)
|
||||
work better.
|
||||
|
||||
* "git diff-tree --pretty --notes" used to hit an assertion failure,
|
||||
as it forgot to initialize the notes subsystem.
|
||||
(merge 5778b22b3d tb/diff-tree-with-notes later to maint).
|
||||
|
||||
* "git range-diff" fixes.
|
||||
(merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint).
|
||||
|
||||
* "git grep" did not quote a path with unusual character like other
|
||||
commands (like "git diff", "git status") do, but did quote when run
|
||||
from a subdirectory, both of which has been corrected.
|
||||
(merge 45115d8490 mt/grep-cquote-path later to maint).
|
||||
|
||||
* GNU/Hurd is also among the ones that need the fopen() wrapper.
|
||||
(merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint).
|
||||
|
||||
* Those fetching over protocol v2 from linux-next and other kernel
|
||||
repositories are reporting that v2 often fetches way too much than
|
||||
needed.
|
||||
(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
|
||||
|
||||
* The upload-pack protocol v2 gave up too early before finding a
|
||||
common ancestor, resulting in a wasteful fetch from a fork of a
|
||||
project. This has been corrected to match the behaviour of v0
|
||||
protocol.
|
||||
(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
|
||||
|
||||
* The build procedure did not use the libcurl library and its include
|
||||
files correctly for a custom-built installation.
|
||||
(merge 0573831950 jk/build-with-right-curl later to maint).
|
||||
|
||||
* Tighten "git mailinfo" to notice and error out when decoded result
|
||||
contains NUL in it.
|
||||
(merge 3919997447 dd/mailinfo-with-nul later to maint).
|
||||
|
||||
* Fix in-core inconsistency after fetching into a shallow repository
|
||||
that broke the code to write out commit-graph.
|
||||
(merge 37b9dcabfc tb/reset-shallow later to maint).
|
||||
|
||||
* The commit-graph code exhausted file descriptors easily when it
|
||||
does not have to.
|
||||
(merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint).
|
||||
|
||||
* The multi-pack-index left mmapped file descriptors open when it
|
||||
does not have to.
|
||||
(merge 6c7ff7cf7f ds/multi-pack-index later to maint).
|
||||
|
||||
* Recent update to Homebrew used by macOS folks breaks build by
|
||||
moving gettext library and necessary headers.
|
||||
(merge a0b3108618 ds/build-homebrew-gettext-fix later to maint).
|
||||
|
||||
* Incompatible options "--root" and "--fork-point" of "git rebase"
|
||||
have been marked and documented as being incompatible.
|
||||
(merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint).
|
||||
|
||||
* Error and verbose trace messages from "git push" did not redact
|
||||
credential material embedded in URLs.
|
||||
(merge d192fa5006 js/anonymise-push-url-in-errors later to maint).
|
||||
|
||||
* Update the parser used for credential.<URL>.<variable>
|
||||
configuration, to handle <URL>s with '/' in them correctly.
|
||||
(merge b44d0118ac bc/wildcard-credential later to maint).
|
||||
|
||||
* Recent updates broke parsing of "credential.<url>.<key>" where
|
||||
<url> is not a full URL (e.g. [credential "https://"] helper = ...)
|
||||
stopped working, which has been corrected.
|
||||
(merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint).
|
||||
(merge cd93e6c029 js/partial-urlmatch later to maint).
|
||||
|
||||
* Some of the files commit-graph subsystem keeps on disk did not
|
||||
correctly honor the core.sharedRepository settings and some were
|
||||
left read-write.
|
||||
|
||||
* In error messages that "git switch" mentions its option to create a
|
||||
new branch, "-b/-B" options were shown, where "-c/-C" options
|
||||
should be, which has been corrected.
|
||||
(merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint).
|
||||
|
||||
* With the recent tightening of the code that is used to parse
|
||||
various parts of a URL for use in the credential subsystem, a
|
||||
hand-edited credential-store file causes the credential helper to
|
||||
die, which is a bit too harsh to the users. Demote the error
|
||||
behaviour to just ignore and keep using well-formed lines instead.
|
||||
(merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint).
|
||||
|
||||
* The samples in the credential documentation has been updated to
|
||||
make it clear that we depict what would appear in the .git/config
|
||||
file, by adding appropriate quotes as needed..
|
||||
(merge 177681a07e jk/credential-sample-update later to maint).
|
||||
|
||||
* "git branch" and other "for-each-ref" variants accepted multiple
|
||||
--sort=<key> options in the increasing order of precedence, but it
|
||||
had a few breakages around "--ignore-case" handling, and tie-breaking
|
||||
with the refname, which have been fixed.
|
||||
(merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint).
|
||||
|
||||
* The coding guideline for shell scripts instructed to refer to a
|
||||
variable with dollar-sign inside arithmetic expansion to work
|
||||
around a bug in old versions of dash, which is a thing of the past.
|
||||
Now we are not forbidden from writing $((var+1)).
|
||||
(merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint).
|
||||
|
||||
* The <stdlib.h> header on NetBSD brings in its own definition of
|
||||
hmac() function (eek), which conflicts with our own and unrelated
|
||||
function with the same name. Our function has been renamed to work
|
||||
around the issue.
|
||||
(merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint).
|
||||
|
||||
* The basic test did not honor $TEST_SHELL_PATH setting, which has
|
||||
been corrected.
|
||||
(merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint).
|
||||
|
||||
* Minor in-code comments and documentation updates around credential
|
||||
API.
|
||||
(merge 1aed817f99 cb/credential-doc-fixes later to maint).
|
||||
|
||||
* Teach "am", "commit", "merge" and "rebase", when they are run with
|
||||
the "--quiet" option, to pass "--quiet" down to "gc --auto".
|
||||
(merge 7c3e9e8cfb jc/auto-gc-quiet later to maint).
|
||||
|
||||
* The code to skip unmerged paths in the index when sparse checkout
|
||||
is in use would have made out-of-bound access of the in-core index
|
||||
when the last path was unmerged, which has been corrected.
|
||||
|
||||
* Serving a "git fetch" client over "git://" and "ssh://" protocols
|
||||
using the on-wire protocol version 2 was buggy on the server end
|
||||
when the client needs to make a follow-up request to
|
||||
e.g. auto-follow tags.
|
||||
(merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint).
|
||||
|
||||
* "git bisect replay" had trouble with input files when they used
|
||||
CRLF line ending, which has been corrected.
|
||||
(merge 6c722cbe5a cw/bisect-replay-with-dos later to maint).
|
||||
|
||||
* "rebase -i" segfaulted when rearranging a sequence that has a
|
||||
fix-up that applies another fix-up (which may or may not be a
|
||||
fix-up of yet another step).
|
||||
(merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint).
|
||||
|
||||
* "git fsck" ensures that the paths recorded in tree objects are
|
||||
sorted and without duplicates, but it failed to notice a case where
|
||||
a blob is followed by entries that sort before a tree with the same
|
||||
name. This has been corrected.
|
||||
(merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint).
|
||||
|
||||
* Code clean-up by removing a compatibility implementation of a
|
||||
function we no longer use.
|
||||
(merge 84b0115f0d cb/no-more-gmtime later to maint).
|
||||
|
||||
* When a binary file gets modified and renamed on both sides of history
|
||||
to different locations, both files would be written to the working
|
||||
tree but both would have the contents from "ours". This has been
|
||||
corrected so that the path from each side gets their original content.
|
||||
|
||||
* Fix for a copy-and-paste error introduced during 2.20 era.
|
||||
(merge e68a5272b1 ds/multi-pack-verify later to maint).
|
||||
|
||||
* Update an unconditional use of "grep -a" with a perl script in a test.
|
||||
(merge 1eb7371236 dd/t5703-grep-a-fix later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge 564956f358 jc/maintain-doc later to maint).
|
||||
(merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
|
||||
(merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
|
||||
(merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
|
||||
(merge 8312aa7d74 jc/config-tar later to maint).
|
||||
(merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
|
||||
(merge 64d1022e14 ar/test-style-fixes later to maint).
|
||||
(merge 4a465443a6 ds/doc-clone-filter later to maint).
|
||||
(merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint).
|
||||
(merge d3507cc712 js/test-junit-finalization-fix later to maint).
|
||||
(merge 2149b6748f bc/faq later to maint).
|
||||
(merge 12dc0879f1 jk/test-cleanup later to maint).
|
||||
(merge 344420bf0f pb/rebase-doc-typofix later to maint).
|
||||
(merge 7cd54d37dc dl/wrapper-fix-indentation later to maint).
|
||||
(merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint).
|
||||
(merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint).
|
||||
(merge 0740d0a5d3 jk/oid-array-cleanups later to maint).
|
||||
(merge a1aba0c95c js/t0007-typofix later to maint).
|
||||
(merge 76ba7fa225 ma/config-doc-fix later to maint).
|
||||
(merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint).
|
||||
(merge 88eaf361e0 eb/mboxrd-doc later to maint).
|
||||
(merge 051cc54941 tm/zsh-complete-switch-restore later to maint).
|
||||
(merge 39102cf4fe ms/doc-revision-illustration-fix later to maint).
|
||||
(merge 4d9378bfad eb/gitweb-more-trailers later to maint).
|
||||
(merge bdccbf7047 mt/doc-worktree-ref later to maint).
|
||||
(merge ce9baf234f dl/push-recurse-submodules-fix later to maint).
|
||||
(merge 4153274052 bc/doc-credential-helper-value later to maint).
|
||||
(merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint).
|
@ -1,236 +0,0 @@
|
||||
Git 2.28 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.27
|
||||
-------------------
|
||||
|
||||
Backward compatibility notes
|
||||
|
||||
* "fetch.writeCommitGraph" is deemed to be still a bit too risky and
|
||||
is no longer part of the "feature.experimental" set.
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* The commands in the "diff" family learned to honor "diff.relative"
|
||||
configuration variable.
|
||||
|
||||
* The check in "git fsck" to ensure that the tree objects are sorted
|
||||
still had corner cases it missed unsorted entries.
|
||||
|
||||
* The interface to redact sensitive information in the trace output
|
||||
has been simplified.
|
||||
|
||||
* The command line completion (in contrib/) learned to complete
|
||||
options that the "git switch" command takes.
|
||||
|
||||
* "git diff" used to take arguments in random and nonsense range
|
||||
notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
|
||||
which has been cleaned up.
|
||||
|
||||
* "git diff-files" has been taught to say paths that are marked as
|
||||
intent-to-add are new files, not modified from an empty blob.
|
||||
|
||||
* "git status" learned to report the status of sparse checkout.
|
||||
|
||||
* "git difftool" has trouble dealing with paths added to the index
|
||||
with the intent-to-add bit.
|
||||
|
||||
* "git fast-export --anonymize" learned to take customized mapping to
|
||||
allow its users to tweak its output more usable for debugging.
|
||||
|
||||
* The command line completion support (in contrib/) used to be
|
||||
prepared to work with "set -u" but recent changes got a bit more
|
||||
sloppy. This has been corrected.
|
||||
|
||||
* "git gui" now allows opening work trees from the start-up dialog.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* Code optimization for a common case.
|
||||
(merge 8777616e4d an/merge-single-strategy-optim later to maint).
|
||||
|
||||
* We've adopted a convention that any on-stack structure can be
|
||||
initialized to have zero values in all fields with "= { 0 }",
|
||||
even when the first field happens to be a pointer, but sparse
|
||||
complained that a null pointer should be spelled NULL for a long
|
||||
time. Start using -Wno-universal-initializer option to squelch
|
||||
it (the latest sparse has it on by default).
|
||||
|
||||
* "git log -L..." now takes advantage of the "which paths are touched
|
||||
by this commit?" info stored in the commit-graph system.
|
||||
|
||||
* As FreeBSD is not the only platform whose regexp library reports
|
||||
a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
|
||||
automatically and skip the affected tests.
|
||||
|
||||
* "git bugreport" learns to report what shell is in use.
|
||||
|
||||
* Support for GIT_CURL_VERBOSE has been rewritten in terms of
|
||||
GIT_TRACE_CURL.
|
||||
|
||||
* Preliminary clean-ups around refs API, plus file format
|
||||
specification documentation for the reftable backend.
|
||||
|
||||
* Workaround breakage in MSVC build, where "curl-config --cflags"
|
||||
gives settings appropriate for GCC build.
|
||||
|
||||
* Code clean-up of "git clean" resulted in a fix of recent
|
||||
performance regression.
|
||||
|
||||
* Code clean-up in the codepath that serves "git fetch" continues.
|
||||
|
||||
* "git merge-base --is-ancestor" is taught to take advantage of the
|
||||
commit graph.
|
||||
|
||||
* Rewrite of parts of the scripted "git submodule" Porcelain command
|
||||
continues; this time it is "git submodule set-branch" subcommand's
|
||||
turn.
|
||||
|
||||
* The "fetch/clone" protocol has been updated to allow the server to
|
||||
instruct the clients to grab pre-packaged packfile(s) in addition
|
||||
to the packed object data coming over the wire.
|
||||
|
||||
* A misdesigned strbuf_write_fd() function has been retired.
|
||||
|
||||
* SHA-256 migration work continues, including CVS/SVN interface.
|
||||
|
||||
* A few fields in "struct commit" that do not have to always be
|
||||
present have been moved to commit slabs.
|
||||
|
||||
* API cleanup for get_worktrees()
|
||||
|
||||
* By renumbering object flag bits, "struct object" managed to lose
|
||||
bloated inter-field padding.
|
||||
|
||||
* The name of the primary branch in existing repositories, and the
|
||||
default name used for the first branch in newly created
|
||||
repositories, is made configurable, so that we can eventually wean
|
||||
ourselves off of the hardcoded 'master'.
|
||||
|
||||
* The effort to avoid using test_must_fail on non-git command continues.
|
||||
|
||||
* In 2.28-rc0, we corrected a bug that some repository extensions are
|
||||
honored by mistake even in a version 0 repositories (these
|
||||
configuration variables in extensions.* namespace were supposed to
|
||||
have special meaning in repositories whose version numbers are 1 or
|
||||
higher), but this was a bit too big a change. The behaviour in
|
||||
recent versions of Git where certain extensions.* were honored by
|
||||
mistake even in version 0 repositories has been restored.
|
||||
|
||||
|
||||
Fixes since v2.27
|
||||
-----------------
|
||||
|
||||
* The "--prepare-p4-only" option of "git p4" is supposed to stop
|
||||
after replaying one changeset, but kept going (by mistake?)
|
||||
|
||||
* The error message from "git checkout -b foo -t bar baz" was
|
||||
confusing.
|
||||
|
||||
* Some repositories in the wild have commits that record nonsense
|
||||
committer timezone (e.g. rails.git); "git fast-import" learned an
|
||||
option to pass these nonsense timestamps intact to allow recreating
|
||||
existing repositories as-is.
|
||||
(merge d42a2fb72f en/fast-import-looser-date later to maint).
|
||||
|
||||
* The command line completion script (in contrib/) tried to complete
|
||||
"git stash -p" as if it were "git stash push -p", but it was too
|
||||
aggressive and also affected "git stash show -p", which has been
|
||||
corrected.
|
||||
(merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).
|
||||
|
||||
* On-the-wire protocol v2 easily falls into a deadlock between the
|
||||
remote-curl helper and the fetch-pack process when the server side
|
||||
prematurely throws an error and disconnects. The communication has
|
||||
been updated to make it more robust.
|
||||
|
||||
* "git checkout -p" did not handle a newly added path at all.
|
||||
(merge 2c8bd8471a js/checkout-p-new-file later to maint).
|
||||
|
||||
* The code to parse "git bisect start" command line was lax in
|
||||
validating the arguments.
|
||||
(merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).
|
||||
|
||||
* Reduce memory usage during "diff --quiet" in a worktree with too
|
||||
many stat-unmatched paths.
|
||||
(merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).
|
||||
|
||||
* The reflog entries for "git clone" and "git fetch" did not
|
||||
anonymize the URL they operated on.
|
||||
(merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).
|
||||
|
||||
* The behaviour of "sparse-checkout" in the state "git clone
|
||||
--no-checkout" left was changed accidentally in 2.27, which has
|
||||
been corrected.
|
||||
|
||||
* Use of negative pathspec, while collecting paths including
|
||||
untracked ones in the working tree, was broken.
|
||||
|
||||
* The same worktree directory must be registered only once, but
|
||||
"git worktree move" allowed this invariant to be violated, which
|
||||
has been corrected.
|
||||
(merge 810382ed37 es/worktree-duplicate-paths later to maint).
|
||||
|
||||
* The effect of sparse checkout settings on submodules is documented.
|
||||
(merge e7d7c73249 en/sparse-with-submodule-doc later to maint).
|
||||
|
||||
* Code clean-up around "git branch" with a minor bugfix.
|
||||
(merge dc44639904 dl/branch-cleanup later to maint).
|
||||
|
||||
* A branch name used in a test has been clarified to match what is
|
||||
going on.
|
||||
(merge 08dc26061f pb/t4014-unslave later to maint).
|
||||
|
||||
* An in-code comment in "git diff" has been updated.
|
||||
(merge c592fd4c83 dl/diff-usage-comment-update later to maint).
|
||||
|
||||
* The documentation and some tests have been adjusted for the recent
|
||||
renaming of "pu" branch to "seen".
|
||||
(merge 6dca5dbf93 js/pu-to-seen later to maint).
|
||||
|
||||
* The code to push changes over "dumb" HTTP had a bad interaction
|
||||
with the commit reachability code due to incorrect allocation of
|
||||
object flag bits, which has been corrected.
|
||||
(merge 64472d15e9 bc/http-push-flagsfix later to maint).
|
||||
|
||||
* "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
|
||||
header with the value given from the command line, and let it be
|
||||
overridden by the value on In-Reply-To: header in the messages
|
||||
being sent out (if exists).
|
||||
(merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).
|
||||
|
||||
* "git log -Lx,y:path --before=date" lost track of where the range
|
||||
should be because it didn't take the changes made by the youngest
|
||||
commits that are omitted from the output into account.
|
||||
|
||||
* When "fetch.writeCommitGraph" configuration is set in a shallow
|
||||
repository and a fetch moves the shallow boundary, we wrote out
|
||||
broken commit-graph files that do not match the reality, which has
|
||||
been corrected.
|
||||
|
||||
* "git checkout" failed to catch an error from fstat() after updating
|
||||
a path in the working tree.
|
||||
(merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).
|
||||
|
||||
* When an aliased command, whose output is piped to a pager by git,
|
||||
gets killed by a signal, the pager got into a funny state, which
|
||||
has been corrected (again).
|
||||
(merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).
|
||||
|
||||
* The code to produce progress output from "git commit-graph --write"
|
||||
had a few breakages, which have been fixed.
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
|
||||
(merge d63ae31962 cb/t5608-cleanup later to maint).
|
||||
(merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
|
||||
(merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
|
||||
(merge b75a219904 es/advertise-contribution-doc later to maint).
|
||||
(merge 0c9a4f638a rs/pull-leakfix later to maint).
|
||||
(merge d546fe2874 rs/commit-reach-leakfix later to maint).
|
||||
(merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
|
||||
(merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
|
||||
(merge 0172f7834a cc/cat-file-usage-update later to maint).
|
||||
(merge 81de0c01cf ma/rebase-doc-typofix later to maint).
|
@ -1,514 +0,0 @@
|
||||
Git 2.29 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.28
|
||||
-------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* "git help log" has been enhanced by sharing more material from the
|
||||
documentation for the underlying "git rev-list" command.
|
||||
|
||||
* "git for-each-ref --format=<>" learned %(contents:size).
|
||||
|
||||
* "git merge" learned to selectively omit " into <branch>" at the end
|
||||
of the title of default merge message with merge.suppressDest
|
||||
configuration.
|
||||
|
||||
* The component to respond to "git fetch" request is made more
|
||||
configurable to selectively allow or reject object filtering
|
||||
specification used for partial cloning.
|
||||
|
||||
* Stop when "sendmail.*" configuration variables are defined, which
|
||||
could be a mistaken attempt to define "sendemail.*" variables.
|
||||
|
||||
* The existing backends for "git mergetool" based on variants of vim
|
||||
have been refactored and then support for "nvim" has been added.
|
||||
|
||||
* "git bisect" learns the "--first-parent" option to find the first
|
||||
breakage along the first-parent chain.
|
||||
|
||||
* "git log --first-parent -p" showed patches only for single-parent
|
||||
commits on the first-parent chain; the "--first-parent" option has
|
||||
been made to imply "-m". Use "--no-diff-merges" to restore the
|
||||
previous behaviour to omit patches for merge commits.
|
||||
|
||||
* The commit labels used to explain each side of conflicted hunks
|
||||
placed by the sequencer machinery have been made more readable by
|
||||
humans.
|
||||
|
||||
* The "--batch-size" option of "git multi-pack-index repack" command
|
||||
is now used to specify that very small packfiles are collected into
|
||||
one until the total size roughly exceeds it.
|
||||
|
||||
* The recent addition of SHA-256 support is marked as experimental in
|
||||
the documentation.
|
||||
|
||||
* "git fetch" learned --no-write-fetch-head option to avoid writing
|
||||
the FETCH_HEAD file.
|
||||
|
||||
* Command line completion (in contrib/) usually omits redundant,
|
||||
deprecated and/or dangerous options from its output; it learned to
|
||||
optionally include all of them.
|
||||
|
||||
* The output from the "diff" family of the commands had abbreviated
|
||||
object names of blobs involved in the patch, but its length was not
|
||||
affected by the --abbrev option. Now it is.
|
||||
|
||||
* "git worktree" gained a "repair" subcommand to help users recover
|
||||
after moving the worktrees or repository manually without telling
|
||||
Git. Also, "git init --separate-git-dir" no longer corrupts
|
||||
administrative data related to linked worktrees.
|
||||
|
||||
* The "--format=" option to the "for-each-ref" command and friends
|
||||
learned a few more tricks, e.g. the ":short" suffix that applies to
|
||||
"objectname" now also can be used for "parent", "tree", etc.
|
||||
|
||||
* "git worktree add" learns that the "-d" is a synonym to "--detach"
|
||||
option to create a new worktree without being on a branch.
|
||||
|
||||
* "format-patch --range-diff=<prev> <origin>..HEAD" has been taught
|
||||
not to ignore <origin> when <prev> is a single version.
|
||||
|
||||
* "add -p" now allows editing paths that were only added in intent.
|
||||
|
||||
* The 'meld' backend of the "git mergetool" learned to give the
|
||||
underlying 'meld' the '--auto-merge' option, which would help
|
||||
reduce the amount of text that requires manual merging.
|
||||
|
||||
* "git for-each-ref" and friends that list refs used to allow only
|
||||
one --merged or --no-merged to filter them; they learned to take
|
||||
combination of both kind of filtering.
|
||||
|
||||
* "git maintenance", a "git gc"'s big brother, has been introduced to
|
||||
take care of more repository maintenance tasks, not limited to the
|
||||
object database cleaning.
|
||||
|
||||
* "git receive-pack" that accepts requests by "git push" learned to
|
||||
outsource most of the ref updates to the new "proc-receive" hook.
|
||||
|
||||
* "git push" that wants to be atomic and wants to send push
|
||||
certificate learned not to prepare and sign the push certificate
|
||||
when it fails the local check (hence due to atomicity it is known
|
||||
that no certificate is needed).
|
||||
|
||||
* "git commit-graph write" learned to limit the number of bloom
|
||||
filters that are computed from scratch with the --max-new-filters
|
||||
option.
|
||||
|
||||
* The transport protocol v2 has become the default again.
|
||||
|
||||
* The installation procedure learned to optionally omit "git-foo"
|
||||
executable files for each 'foo' built-in subcommand, which are only
|
||||
required by old timers that still rely on the age old promise that
|
||||
prepending "git --exec-path" output to PATH early in their script
|
||||
will keep the "git-foo" calls they wrote working.
|
||||
|
||||
* The command line completion (in contrib/) learned that "git restore
|
||||
-s <TAB>" is often followed by a refname.
|
||||
|
||||
* "git shortlog" has been taught to group commits by the contents of
|
||||
the trailer lines, like "Reviewed-by:", "Coauthored-by:", etc.
|
||||
|
||||
* "git archive" learns the "--add-file" option to include untracked
|
||||
files into a snapshot from a tree-ish.
|
||||
|
||||
* "git fetch" and "git push" support negative refspecs.
|
||||
|
||||
* "git format-patch" learns to take "whenAble" as a possible value
|
||||
for the format.useAutoBase configuration variable to become no-op
|
||||
when the automatically computed base does not make sense.
|
||||
|
||||
* Credential helpers are now allowed to terminate lines with CRLF
|
||||
line ending, as well as LF line ending.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* The changed-path Bloom filter is improved using ideas from an
|
||||
independent implementation.
|
||||
|
||||
* Updates to the changed-paths bloom filter.
|
||||
|
||||
* The test framework has been updated so that most tests will run
|
||||
with predictable (artificial) timestamps.
|
||||
|
||||
* Preliminary clean-up of the refs API in preparation for adding a
|
||||
new refs backend "reftable".
|
||||
|
||||
* Dev support to limit the use of test_must_fail to only git commands.
|
||||
|
||||
* While packing many objects in a repository with a promissor remote,
|
||||
lazily fetching missing objects from the promissor remote one by
|
||||
one may be inefficient---the code now attempts to fetch all the
|
||||
missing objects in batch (obviously this won't work for a lazy
|
||||
clone that lazily fetches tree objects as you cannot even enumerate
|
||||
what blobs are missing until you learn which trees are missing).
|
||||
|
||||
* The pretend-object mechanism checks if the given object already
|
||||
exists in the object store before deciding to keep the data
|
||||
in-core, but the check would have triggered lazy fetching of such
|
||||
an object from a promissor remote.
|
||||
|
||||
* The argv_array API is useful for not just managing argv but any
|
||||
"vector" (NULL-terminated array) of strings, and has seen adoption
|
||||
to a certain degree. It has been renamed to "strvec" to reduce the
|
||||
barrier to adoption.
|
||||
|
||||
* The final leg of SHA-256 transition plus doc updates. Note that
|
||||
there is no interoperability between SHA-1 and SHA-256
|
||||
repositories yet.
|
||||
|
||||
* CMake support to build with MSVC for Windows bypassing the Makefile.
|
||||
|
||||
* A new helper function has_object() has been introduced to make it
|
||||
easier to mark object existence checks that do and don't want to
|
||||
trigger lazy fetches, and a few such checks are converted using it.
|
||||
|
||||
* A no-op replacement function implemented as a C preprocessor macro
|
||||
does not perform as good a job as one implemented as a "static
|
||||
inline" function in catching errors in parameters; replace the
|
||||
former with the latter in <git-compat-util.h> header.
|
||||
|
||||
* Test framework update.
|
||||
(merge d572f52a64 es/test-cmp-typocatcher later to maint).
|
||||
|
||||
* Updates to "git merge" tests, in preparation for a new merge
|
||||
strategy backend.
|
||||
|
||||
* midx and commit-graph files now use the byte defined in their file
|
||||
format specification for identifying the hash function used for
|
||||
object names.
|
||||
|
||||
* The FETCH_HEAD is now always read from the filesystem regardless of
|
||||
the ref backend in use, as its format is much richer than the
|
||||
normal refs, and written directly by "git fetch" as a plain file..
|
||||
|
||||
* An unused binary has been discarded, and and a bunch of commands
|
||||
have been turned into into built-in.
|
||||
|
||||
* A handful of places in in-tree code still relied on being able to
|
||||
execute the git subcommands, especially built-ins, in "git-foo"
|
||||
form, which have been corrected.
|
||||
|
||||
* When a packfile is removed by "git repack", multi-pack-index gets
|
||||
cleared; the code was taught to do so less aggressively by first
|
||||
checking if the midx actually refers to a pack that no longer
|
||||
exists.
|
||||
|
||||
* Internal API clean-up to handle two options "diff-index" and "log"
|
||||
have, which happen to share the same short form, more sensibly.
|
||||
|
||||
* The "add -i/-p" machinery has been written in C but it is not used
|
||||
by default yet. It is made default to those who are participating
|
||||
in feature.experimental experiment.
|
||||
|
||||
* Allow maintainers to tweak $(TAR) invocations done while making
|
||||
distribution tarballs.
|
||||
|
||||
* "git index-pack" learned to resolve deltified objects with greater
|
||||
parallelism.
|
||||
|
||||
* "diff-highlight" (in contrib/) had a logic to flush its output upon
|
||||
seeing a blank line but the way it detected a blank line was broken.
|
||||
|
||||
* The logic to skip testing on the tagged commit and the tag itself
|
||||
was not quite consistent which led to failure of Windows test
|
||||
tasks. It has been revamped to consistently skip revisions that
|
||||
have already been tested, based on the tree object of the revision.
|
||||
|
||||
|
||||
Fixes since v2.28
|
||||
-----------------
|
||||
|
||||
* The "mediawiki" remote backend which lives in contrib/mw-to-git/
|
||||
and is not built with git by default, had an RCE bug allowing a
|
||||
malicious MediaWiki server operator to inject arbitrary commands
|
||||
for execution by a cloning client. This has been fixed.
|
||||
|
||||
The bug was discovered and reported by Joern Schneeweisz of GitLab
|
||||
to the git-security mailing list. Its practical impact due to the
|
||||
obscurity of git-remote-mediawiki was deemed small enough to forgo
|
||||
a dedicated security release.
|
||||
|
||||
* "git clone --separate-git-dir=$elsewhere" used to stomp on the
|
||||
contents of the existing directory $elsewhere, which has been
|
||||
taught to fail when $elsewhere is not an empty directory.
|
||||
(merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).
|
||||
|
||||
* With the base fix to 2.27 regresion, any new extensions in a v0
|
||||
repository would still be silently honored, which is not quite
|
||||
right. Instead, complain and die loudly.
|
||||
(merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint).
|
||||
|
||||
* Fetching from a lazily cloned repository resulted at the server
|
||||
side in attempts to lazy fetch objects that the client side has,
|
||||
many of which will not be available from the third-party anyway.
|
||||
(merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint).
|
||||
|
||||
* Fix to an ancient bug caused by an over-eager attempt for
|
||||
optimization.
|
||||
(merge a98f7fb366 rs/add-index-entry-optim-fix later to maint).
|
||||
|
||||
* Pushing a ref whose name contains non-ASCII character with the
|
||||
"--force-with-lease" option did not work over smart HTTP protocol,
|
||||
which has been corrected.
|
||||
(merge cd85b447bf bc/push-cas-cquoted-refname later to maint).
|
||||
|
||||
* "git mv src dst", when src is an unmerged path, errored out
|
||||
correctly but with an incorrect error message to claim that src is
|
||||
not tracked, which has been clarified.
|
||||
(merge 9b906af657 ct/mv-unmerged-path-error later to maint).
|
||||
|
||||
* Fix to a regression introduced during 2.27 cycle.
|
||||
(merge cada7308ad en/fill-directory-exponential later to maint).
|
||||
|
||||
* Command line completion (in contrib/) update.
|
||||
(merge 688b87c81b mp/complete-show-color-moved later to maint).
|
||||
|
||||
* All "mergy" operations that internally use the merge-recursive
|
||||
machinery should honor the merge.renormalize configuration, but
|
||||
many of them didn't.
|
||||
|
||||
* Doc cleanup around "worktree".
|
||||
(merge dc9c144be5 es/worktree-doc-cleanups later to maint).
|
||||
|
||||
* The "git blame --first-parent" option was not documented, but now
|
||||
it is.
|
||||
(merge 11bc12ae1e rp/blame-first-parent-doc later to maint).
|
||||
|
||||
* The logic to find the ref transaction hook script attempted to
|
||||
cache the path to the found hook without realizing that it needed
|
||||
to keep a copied value, as the API it used returned a transitory
|
||||
buffer space. This has been corrected.
|
||||
(merge 09b2aa30c9 ps/ref-transaction-hook later to maint).
|
||||
|
||||
* Recent versions of "git diff-files" shows a diff between the index
|
||||
and the working tree for "intent-to-add" paths as a "new file"
|
||||
patch; "git apply --cached" should be able to take "git diff-files"
|
||||
and should act as an equivalent to "git add" for the path, but the
|
||||
command failed to do so for such a path.
|
||||
(merge 4c025c667e rp/apply-cached-with-i-t-a later to maint).
|
||||
|
||||
* "git diff [<tree-ish>] $path" for a $path that is marked with i-t-a
|
||||
bit was not showing the mode bits from the working tree.
|
||||
(merge cb0dd22b82 rp/ita-diff-modefix later to maint).
|
||||
|
||||
* Ring buffer with size 4 used for bin-hex translation resulted in a
|
||||
wrong object name in the sequencer's todo output, which has been
|
||||
corrected.
|
||||
(merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint).
|
||||
|
||||
* When given more than one target line ranges, "git blame -La,b
|
||||
-Lc,d" was over-eager to coalesce groups of original lines and
|
||||
showed incorrect results, which has been corrected.
|
||||
(merge c2ebaa27d6 jk/blame-coalesce-fix later to maint).
|
||||
|
||||
* The regexp to identify the function boundary for FORTRAN programs
|
||||
has been updated.
|
||||
(merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint).
|
||||
|
||||
* A few end-user facing messages have been updated to be
|
||||
hash-algorithm agnostic.
|
||||
(merge 4279000d3e jc/object-names-are-not-sha-1 later to maint).
|
||||
|
||||
* "unlink" emulation on MinGW has been optimized.
|
||||
(merge 680e0b4524 jh/mingw-unlink later to maint).
|
||||
|
||||
* The purpose of "git init --separate-git-dir" is to initialize a
|
||||
new project with the repository separate from the working tree,
|
||||
or, in the case of an existing project, to move the repository
|
||||
(the .git/ directory) out of the working tree. It does not make
|
||||
sense to use --separate-git-dir with a bare repository for which
|
||||
there is no working tree, so disallow its use with bare
|
||||
repositories.
|
||||
(merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint).
|
||||
|
||||
* "ls-files -o" mishandled the top-level directory of another git
|
||||
working tree that hangs in the current git working tree.
|
||||
(merge ab282aa548 en/dir-nonbare-embedded later to maint).
|
||||
|
||||
* Fix some incorrect UNLEAK() annotations.
|
||||
(merge 3e19816dc0 jk/unleak-fixes later to maint).
|
||||
|
||||
* Use more buffered I/O where we used to call many small write(2)s.
|
||||
(merge a698d67b08 rs/more-buffered-io later to maint).
|
||||
|
||||
* The patch-id computation did not ignore the "incomplete last line"
|
||||
marker like whitespaces.
|
||||
(merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint).
|
||||
|
||||
* Updates into a lazy/partial clone with a submodule did not work
|
||||
well with transfer.fsckobjects set.
|
||||
|
||||
* The parser for "git for-each-ref --format=..." was too loose when
|
||||
parsing the "%(trailers...)" atom, and forgot that "trailers" and
|
||||
"trailers:<modifiers>" are the only two allowed forms, which has
|
||||
been corrected.
|
||||
(merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint).
|
||||
|
||||
* Long ago, we decided to use 3 threads by default when running the
|
||||
index-pack task in parallel, which has been adjusted a bit upwards.
|
||||
(merge fbff95b67f jk/index-pack-w-more-threads later to maint).
|
||||
|
||||
* "git restore/checkout --no-overlay" with wildcarded pathspec
|
||||
mistakenly removed matching paths in subdirectories, which has been
|
||||
corrected.
|
||||
(merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint).
|
||||
|
||||
* The description of --cached/--index options in "git apply --help"
|
||||
has been updated.
|
||||
(merge d064702be3 rp/apply-cached-doc later to maint).
|
||||
|
||||
* Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and
|
||||
running "git log --ignore-missing $ZERO_OID" fell back to start
|
||||
digging from HEAD; it has been corrected to become a no-op, like
|
||||
"git log --tags=no-tag-matches-this-pattern" does.
|
||||
(merge 04a0e98515 jk/rev-input-given-fix later to maint).
|
||||
|
||||
* Various callers of run_command API have been modernized.
|
||||
(merge afbdba391e jc/run-command-use-embedded-args later to maint).
|
||||
|
||||
* List of options offered and accepted by "git add -i/-p" were
|
||||
inconsistent, which have been corrected.
|
||||
(merge ce910287e7 pw/add-p-allowed-options-fix later to maint).
|
||||
|
||||
* "git diff --stat -w" showed 0-line changes for paths whose changes
|
||||
were only whitespaces, which was not intuitive. We now omit such
|
||||
paths from the stat output.
|
||||
(merge 1cf3d5db9b mr/diff-hide-stat-wo-textual-change later to maint).
|
||||
|
||||
* It was possible for xrealloc() to send a non-NULL pointer that has
|
||||
been freed, which has been fixed.
|
||||
(merge 6479ea4a8a jk/xrealloc-avoid-use-after-free later to maint).
|
||||
|
||||
* "git status" has trouble showing where it came from by interpreting
|
||||
reflog entries that record certain events, e.g. "checkout @{u}", and
|
||||
gives a hard/fatal error. Even though it inherently is impossible
|
||||
to give a correct answer because the reflog entries lose some
|
||||
information (e.g. "@{u}" does not record what branch the user was
|
||||
on hence which branch 'the upstream' needs to be computed, and even
|
||||
if the record were available, the relationship between branches may
|
||||
have changed), at least hide the error and allow "status" to show its
|
||||
output.
|
||||
|
||||
* "git status --short" quoted a path with SP in it when tracked, but
|
||||
not those that are untracked, ignored or unmerged. They are all
|
||||
shown quoted consistently.
|
||||
|
||||
* "git diff/show" on a change that involves a submodule used to read
|
||||
the information on commits in the submodule from a wrong repository
|
||||
and gave a wrong information when the commit-graph is involved.
|
||||
(merge 85a1ec2c32 mf/submodule-summary-with-correct-repository later to maint).
|
||||
|
||||
* Unlike "git config --local", "git config --worktree" did not fail
|
||||
early and cleanly when started outside a git repository.
|
||||
(merge 378fe5fc3d mt/config-fail-nongit-early later to maint).
|
||||
|
||||
* There is a logic to estimate how many objects are in the
|
||||
repository, which is meant to run once per process invocation, but
|
||||
it ran every time the estimated value was requested.
|
||||
(merge 67bb65de5d jk/dont-count-existing-objects-twice later to maint).
|
||||
|
||||
* "git remote set-head" that failed still said something that hints
|
||||
the operation went through, which was misleading.
|
||||
(merge 5a07c6c3c2 cs/don-t-pretend-a-failed-remote-set-head-succeeded later to maint).
|
||||
|
||||
* "git fetch --all --ipv4/--ipv6" forgot to pass the protocol options
|
||||
to instances of the "git fetch" that talk to individual remotes,
|
||||
which has been corrected.
|
||||
(merge 4e735c1326 ar/fetch-ipversion-in-all later to maint).
|
||||
|
||||
* The "unshelve" subcommand of "git p4" incorrectly used commit^N
|
||||
where it meant to say commit~N to name the Nth generation
|
||||
ancestor, which has been corrected.
|
||||
(merge 0acbf5997f ld/p4-unshelve-fix later to maint).
|
||||
|
||||
* "git clone" that clones from SHA-1 repository, while
|
||||
GIT_DEFAULT_HASH set to use SHA-256 already, resulted in an
|
||||
unusable repository that half-claims to be SHA-256 repository
|
||||
with SHA-1 objects and refs. This has been corrected.
|
||||
|
||||
* Adjust sample hooks for hash algorithm other than SHA-1.
|
||||
(merge d8d3d632f4 dl/zero-oid-in-hooks later to maint).
|
||||
|
||||
* "git range-diff" showed incorrect diffstat, which has been
|
||||
corrected.
|
||||
|
||||
* Earlier we taught "git pull" to warn when the user does not say the
|
||||
histories need to be merged, rebased or accepts only fast-
|
||||
forwarding, but the warning triggered for those who have set the
|
||||
pull.ff configuration variable.
|
||||
(merge 54200cef86 ah/pull later to maint).
|
||||
|
||||
* Compilation fix around type punning.
|
||||
(merge 176380fd11 jk/drop-unaligned-loads later to maint).
|
||||
|
||||
* "git blame --ignore-rev/--ignore-revs-file" failed to validate
|
||||
their input are valid revision, and failed to take into account
|
||||
that the user may want to give an annotated tag instead of a
|
||||
commit, which has been corrected.
|
||||
(merge 610e2b9240 jc/blame-ignore-fix later to maint).
|
||||
|
||||
* "git bisect start X Y", when X and Y are not valid committish
|
||||
object names, should take X and Y as pathspec, but didn't.
|
||||
(merge 73c6de06af cc/bisect-start-fix later to maint).
|
||||
|
||||
* The explanation of the "scissors line" has been clarified.
|
||||
(merge 287416dba6 eg/mailinfo-doc-scissors later to maint).
|
||||
|
||||
* A race that leads to an access to a free'd data was corrected in
|
||||
the codepath that reads pack files.
|
||||
(merge bda959c476 mt/delta-base-cache-races later to maint).
|
||||
|
||||
* in_merge_bases_many(), a way to see if a commit is reachable from
|
||||
any commit in a set of commits, was totally broken when the
|
||||
commit-graph feature was in use, which has been corrected.
|
||||
(merge 8791bf1841 ds/in-merge-bases-many-optim-bug later to maint).
|
||||
|
||||
* "git submodule update --quiet" did not squelch underlying "rebase"
|
||||
and "pull" commands.
|
||||
(merge 3ad0401e9e td/submodule-update-quiet later to maint).
|
||||
|
||||
* The lazy fetching done internally to make missing objects available
|
||||
in a partial clone incorrectly made permanent damage to the partial
|
||||
clone filter in the repository, which has been corrected.
|
||||
|
||||
* "log -c --find-object=X" did not work well to find a merge that
|
||||
involves a change to an object X from only one parent.
|
||||
(merge 957876f17d jk/diff-cc-oidfind-fix later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge 84544f2ea3 sk/typofixes later to maint).
|
||||
(merge b17f411ab5 ar/help-guides-doc later to maint).
|
||||
(merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint).
|
||||
(merge 861c4ce141 en/typofixes later to maint).
|
||||
(merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint).
|
||||
(merge e2bfa50ac3 jb/doc-packfile-name later to maint).
|
||||
(merge 918d8ff780 es/worktree-cleanup later to maint).
|
||||
(merge dc156bc31f ma/t1450-quotefix later to maint).
|
||||
(merge 56e743426b en/merge-recursive-comment-fixes later to maint).
|
||||
(merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint).
|
||||
(merge de20baf2c9 ny/notes-doc-sample-update later to maint).
|
||||
(merge f649aaaf82 so/rev-parser-errormessage-fix later to maint).
|
||||
(merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint).
|
||||
(merge ac900fddb7 ma/stop-progress-null-fix later to maint).
|
||||
(merge e767963ab6 rs/upload-pack-sigchain-fix later to maint).
|
||||
(merge a831908599 rs/preserve-merges-unused-code-removal later to maint).
|
||||
(merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint).
|
||||
(merge 847b37271e pb/set-url-docfix later to maint).
|
||||
(merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint).
|
||||
(merge ce820cbd58 dl/subtree-docs later to maint).
|
||||
(merge 55fe225dde jk/leakfix later to maint).
|
||||
(merge ee22a29215 so/pretty-abbrev-doc later to maint).
|
||||
(merge 3100fd5588 jc/post-checkout-doc later to maint).
|
||||
(merge 17bae89476 pb/doc-external-diff-env later to maint).
|
||||
(merge 27ed6ccc12 jk/worktree-check-clean-leakfix later to maint).
|
||||
(merge 1302badd16 ea/blame-use-oideq later to maint).
|
||||
(merge e6d5a11fed al/t3200-back-on-a-branch later to maint).
|
||||
(merge 324efcf6b6 pw/add-p-leakfix later to maint).
|
||||
(merge 1c6ffb546b jk/add-i-fixes later to maint).
|
||||
(merge e40e936551 cd/commit-graph-doc later to maint).
|
||||
(merge 0512eabd91 jc/sequencer-stopped-sha-simplify later to maint).
|
||||
(merge d01141de5a so/combine-diff-simplify later to maint).
|
||||
(merge 3be01e5ab1 sn/fast-import-doc later to maint).
|
@ -1,11 +0,0 @@
|
||||
Git v2.29.1 Release Notes
|
||||
=========================
|
||||
|
||||
This is to fix the build procedure change in 2.28 where we failed to
|
||||
install a few programs that should be installed in /usr/bin (namely,
|
||||
receive-pack, upload-archive and upload-pack) when the non-default
|
||||
SKIP_DASHED_BUILT_INS installation option is in effect.
|
||||
|
||||
A minor glitch in a non-default installation may usually not deserve
|
||||
a hotfix, but I know Git for Windows ship binaries built with this
|
||||
option, so let's make an exception.
|
@ -1,12 +0,0 @@
|
||||
Git v2.29.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release is primarily to fix brown-paper-bag breakages in the
|
||||
2.29.0 release.
|
||||
|
||||
Fixes since v2.29.1
|
||||
-------------------
|
||||
|
||||
* In 2.29, "--committer-date-is-author-date" option of "rebase" and
|
||||
"am" subcommands lost the e-mail address by mistake, which has been
|
||||
corrected.
|
@ -1,393 +0,0 @@
|
||||
Git 2.30 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.29
|
||||
-------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* Userdiff for PHP update.
|
||||
|
||||
* Userdiff for Rust update.
|
||||
|
||||
* Userdiff for CSS update.
|
||||
|
||||
* The command line completion script (in contrib/) learned that "git
|
||||
stash show" takes the options "git diff" takes.
|
||||
|
||||
* "git worktree list" now shows if each worktree is locked. This
|
||||
possibly may open us to show other kinds of states in the future.
|
||||
|
||||
* "git maintenance", an extended big brother of "git gc", continues
|
||||
to evolve.
|
||||
|
||||
* "git push --force-with-lease[=<ref>]" can easily be misused to lose
|
||||
commits unless the user takes good care of their own "git fetch".
|
||||
A new option "--force-if-includes" attempts to ensure that what is
|
||||
being force-pushed was created after examining the commit at the
|
||||
tip of the remote ref that is about to be force-replaced.
|
||||
|
||||
* "git clone" learned clone.defaultremotename configuration variable
|
||||
to customize what nickname to use to call the remote the repository
|
||||
was cloned from.
|
||||
|
||||
* "git checkout" learned to use checkout.guess configuration variable
|
||||
and enable/disable its "--[no-]guess" option accordingly.
|
||||
|
||||
* "git resurrect" script (in contrib/) learned that the object names
|
||||
may be longer than 40-hex depending on the hash function in use.
|
||||
|
||||
* "git diff A...B" learned "git diff --merge-base A B", which is a
|
||||
longer short-hand to say the same thing.
|
||||
|
||||
* A sample 'push-to-checkout' hook, that performs the same as
|
||||
what the built-in default action does, has been added.
|
||||
|
||||
* "git diff" family of commands learned the "-I<regex>" option to
|
||||
ignore hunks whose changed lines all match the given pattern.
|
||||
|
||||
* The userdiff pattern learned to identify the function definition in
|
||||
POSIX shells and bash.
|
||||
|
||||
* "git checkout-index" did not consistently signal an error with its
|
||||
exit status, but now it does.
|
||||
|
||||
* A commit and tag object may have CR at the end of each and
|
||||
every line (you can create such an object with hash-object or
|
||||
using --cleanup=verbatim to decline the default clean-up
|
||||
action), but it would make it impossible to have a blank line
|
||||
to separate the title from the body of the message. We are now
|
||||
more lenient and accept a line with lone CR on it as a blank line,
|
||||
too.
|
||||
|
||||
* Exit codes from "git remote add" etc. were not usable by scripted
|
||||
callers, but now they are.
|
||||
|
||||
* "git archive" now allows compression level higher than "-9"
|
||||
when generating tar.gz output.
|
||||
|
||||
* Zsh autocompletion (in contrib/) update.
|
||||
|
||||
* The maximum length of output filenames "git format-patch" creates
|
||||
has become configurable (used to be capped at 64).
|
||||
|
||||
* "git rev-parse" learned the "--end-of-options" to help scripts to
|
||||
safely take a parameter that is supposed to be a revision, e.g.
|
||||
"git rev-parse --verify -q --end-of-options $rev".
|
||||
|
||||
* The command line completion script (in contrib/) learned to expand
|
||||
commands that are alias of alias.
|
||||
|
||||
* "git update-ref --stdin" learns to take multiple transactions in a
|
||||
single session.
|
||||
|
||||
* Various subcommands of "git config" that takes value_regex
|
||||
learn the "--literal-value" option to take the value_regex option
|
||||
as a literal string.
|
||||
|
||||
* The transport layer was taught to optionally exchange the session
|
||||
ID assigned by the trace2 subsystem during fetch/push transactions.
|
||||
|
||||
* "git imap-send" used to ignore configuration variables like
|
||||
core.askpass; this has been corrected.
|
||||
|
||||
* "git $cmd $args", when $cmd is not a recognised subcommand, by
|
||||
default tries to see if $cmd is a typo of an existing subcommand
|
||||
and optionally executes the corrected command if there is only one
|
||||
possibility, depending on the setting of help.autocorrect; the
|
||||
users can now disable the whole thing, including the cycles spent
|
||||
to find a likely typo, by setting the configuration variable to
|
||||
'never'.
|
||||
|
||||
* "@" sometimes worked (e.g. "git push origin @:there") as a part of
|
||||
a refspec element, but "git push origin @" did not work, which has
|
||||
been corrected.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* Use "git archive" more to produce the release tarball.
|
||||
|
||||
* GitHub Actions automated test improvement to skip tests on a tree
|
||||
identical to what has already been tested.
|
||||
|
||||
* Test-coverage for running commit-graph task "git maintenance" has
|
||||
been extended.
|
||||
|
||||
* Our test scripts can be told to run only individual pieces while
|
||||
skipping others with the "--run=..." option; they were taught to
|
||||
take a substring of test title, in addition to numbers, to name the
|
||||
test pieces to run.
|
||||
|
||||
* Adjust tests so that they won't scream when the default initial
|
||||
branch name is changed to 'main'.
|
||||
|
||||
* Rewriting "git bisect" in C continues.
|
||||
|
||||
* More preliminary tests have been added to document desired outcome
|
||||
of various "directory rename" situations.
|
||||
|
||||
* Micro clean-up of a couple of test scripts.
|
||||
|
||||
* "git diff" and other commands that share the same machinery to
|
||||
compare with working tree files have been taught to take advantage
|
||||
of the fsmonitor data when available.
|
||||
|
||||
* The code to detect premature EOF in the sideband demultiplexer has
|
||||
been cleaned up.
|
||||
|
||||
* Test scripts are being prepared to transition of the default branch
|
||||
name to 'main'.
|
||||
|
||||
* "git fetch --depth=<n>" over the stateless RPC / smart HTTP
|
||||
transport handled EOF from the client poorly at the server end.
|
||||
|
||||
* A specialization of hashmap that uses a string as key has been
|
||||
introduced. Hopefully it will see wider use over time.
|
||||
|
||||
* "git bisect start/next" in a large span of history spends a lot of
|
||||
time trying to come up with exactly the half-way point; this can be
|
||||
optimized by stopping when we see a commit that is close enough to
|
||||
the half-way point.
|
||||
|
||||
* A lazily defined test prerequisite can now be defined in terms of
|
||||
another lazily defined test prerequisite.
|
||||
|
||||
* Expectation for the original contributor after responding to a
|
||||
review comment to use the explanation in a patch update has been
|
||||
described.
|
||||
|
||||
* Multiple "credential-store" backends can race to lock the same
|
||||
file, causing everybody else but one to fail---reattempt locking
|
||||
with some timeout to reduce the rate of the failure.
|
||||
|
||||
* "git-parse-remote" shell script library outlived its usefulness.
|
||||
|
||||
* Like die() and error(), a call to warning() will also trigger a
|
||||
trace2 event.
|
||||
|
||||
* Use of non-reentrant localtime() has been removed.
|
||||
|
||||
* Non-reentrant time-related library functions and ctime/asctime with
|
||||
awkward calling interfaces are banned from the codebase.
|
||||
|
||||
|
||||
Fixes since v2.29
|
||||
-----------------
|
||||
|
||||
* In 2.29, "--committer-date-is-author-date" option of "rebase" and
|
||||
"am" subcommands lost the e-mail address by mistake, which has been
|
||||
corrected.
|
||||
(merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint).
|
||||
|
||||
* "git checkout -p A...B [-- <path>]" did not work, even though the
|
||||
same command without "-p" correctly used the merge-base between
|
||||
commits A and B.
|
||||
(merge 35166b1fb5 dl/checkout-p-merge-base later to maint).
|
||||
|
||||
* The side-band status report can be sent at the same time as the
|
||||
primary payload multiplexed, but the demultiplexer on the receiving
|
||||
end incorrectly split a single status report into two, which has
|
||||
been corrected.
|
||||
(merge 712b0377db js/avoid-split-sideband-message later to maint).
|
||||
|
||||
* "git fast-import" wasted a lot of memory when many marks were in use.
|
||||
(merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint).
|
||||
|
||||
* A test helper "test_cmp A B" was taught to diagnose missing files A
|
||||
or B as a bug in test, but some tests legitimately wanted to notice
|
||||
a failure to even create file B as an error, in addition to leaving
|
||||
the expected result in it, and were misdiagnosed as a bug. This
|
||||
has been corrected.
|
||||
(merge 262d5ad5a5 es/test-cmp-typocatcher later to maint).
|
||||
|
||||
* When "git commit-graph" detects the same commit recorded more than
|
||||
once while it is merging the layers, it used to die. The code now
|
||||
ignores all but one of them and continues.
|
||||
(merge 85102ac71b ds/commit-graph-merging-fix later to maint).
|
||||
|
||||
* The meaning of a Signed-off-by trailer can vary from project to
|
||||
project; this and also what it means to this project has been
|
||||
clarified in the documentation.
|
||||
(merge 3abd4a67d9 bk/sob-dco later to maint).
|
||||
|
||||
* "git credential' didn't honor the core.askPass configuration
|
||||
variable (among other things), which has been corrected.
|
||||
(merge 567ad2c0f9 tk/credential-config later to maint).
|
||||
|
||||
* Dev support to catch a tentative definition of a variable in our C
|
||||
code as an error.
|
||||
(merge 5539183622 jk/no-common later to maint).
|
||||
|
||||
* "git rebase --rebase-merges" did not correctly pass --gpg-sign
|
||||
command line option to underlying "git merge" when replaying a merge
|
||||
using non-default merge strategy or when replaying an octopus merge
|
||||
(because replaying a two-head merge with the default strategy was
|
||||
done in a separate codepath, the problem did not trigger for most
|
||||
users), which has been corrected.
|
||||
(merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint).
|
||||
|
||||
* "git apply -R" did not handle patches that touch the same path
|
||||
twice correctly, which has been corrected. This is most relevant
|
||||
in a patch that changes a path from a regular file to a symbolic
|
||||
link (and vice versa).
|
||||
(merge b0f266de11 jt/apply-reverse-twice later to maint).
|
||||
|
||||
* A recent oid->hash conversion missed one spot, breaking "git svn".
|
||||
(merge 03bb366de4 bc/svn-hash-oid-fix later to maint).
|
||||
|
||||
* The documentation on the "--abbrev=<n>" option did not say the
|
||||
output may be longer than "<n>" hexdigits, which has been
|
||||
clarified.
|
||||
(merge cda34e0d0c jc/abbrev-doc later to maint).
|
||||
|
||||
* "git p4" now honors init.defaultBranch configuration.
|
||||
(merge 1b09d1917f js/p4-default-branch later to maint).
|
||||
|
||||
* Recently the format of an internal state file "rebase -i" uses has
|
||||
been tightened up for consistency, which would hurt those who start
|
||||
"rebase -i" with old git and then continue with new git. Loosen
|
||||
the reader side a bit (which we may want to tighten again in a year
|
||||
or so).
|
||||
(merge c779386182 jc/sequencer-stopped-sha-simplify later to maint).
|
||||
|
||||
* The code to see if "git stash drop" can safely remove refs/stash
|
||||
has been made more carerful.
|
||||
(merge 4f44c5659b rs/empty-reflog-check-fix later to maint).
|
||||
|
||||
* "git log -L<range>:<path>" is documented to take no pathspec, but
|
||||
this was not enforced by the command line option parser, which has
|
||||
been corrected.
|
||||
(merge 39664cb0ac jc/line-log-takes-no-pathspec later to maint).
|
||||
|
||||
* "git format-patch --output=there" did not work as expected and
|
||||
instead crashed. The option is now supported.
|
||||
(merge dc1672dd10 jk/format-patch-output later to maint).
|
||||
|
||||
* Define ARM64 compiled with MSVC to be little-endian.
|
||||
(merge 0c038fc65a dg/bswap-msvc later to maint).
|
||||
|
||||
* "git rebase -i" did not store ORIG_HEAD correctly.
|
||||
(merge 8843302307 pw/rebase-i-orig-head later to maint).
|
||||
|
||||
* "git blame -L :funcname -- path" did not work well for a path for
|
||||
which a userdiff driver is defined.
|
||||
|
||||
* "make DEVELOPER=1 sparse" used to run sparse and let it emit
|
||||
warnings; now such warnings will cause an error.
|
||||
(merge 521dc56270 jc/sparse-error-for-developer-build later to maint).
|
||||
|
||||
* "git blame --ignore-revs-file=<file>" learned to ignore a
|
||||
non-existent object name in the input, instead of complaining.
|
||||
(merge c714d05875 jc/blame-ignore-fix later to maint).
|
||||
|
||||
* Running "git diff" while allowing external diff in a state with
|
||||
unmerged paths used to segfault, which has been corrected.
|
||||
(merge d66851806f jk/diff-release-filespec-fix later to maint).
|
||||
|
||||
* Build configuration cleanup.
|
||||
(merge b990f02fd8 ab/config-mak-uname-simplify later to maint).
|
||||
|
||||
* Fix regression introduced when nvimdiff support in mergetool was added.
|
||||
(merge 12026f46e7 pd/mergetool-nvimdiff later to maint).
|
||||
|
||||
* The exchange between receive-pack and proc-receive hook did not
|
||||
carefully check for errors.
|
||||
|
||||
* The code was not prepared to deal with pack .idx file that is
|
||||
larger than 4GB.
|
||||
(merge 81c4c5cf2e jk/4gb-idx later to maint).
|
||||
|
||||
* Since jgit does not yet work with SHA-256 repositories, mark the
|
||||
tests that uses it not to run unless we are testing with ShA-1
|
||||
repositories.
|
||||
(merge ea699b4adc sg/t5310-jgit-wants-sha1 later to maint).
|
||||
|
||||
* Config parser fix for "git notes".
|
||||
(merge 45fef1599a na/notes-displayref-is-not-boolean later to maint).
|
||||
|
||||
* Move a definition of compatibility wrapper from cache.h to
|
||||
git-compat-util.h
|
||||
(merge a76b138daa hn/sleep-millisec-decl later to maint).
|
||||
|
||||
* Error message fix.
|
||||
(merge eaf5341538 km/stash-error-message-fix later to maint).
|
||||
|
||||
* "git pull --rebase --recurse-submodules" checked for local changes
|
||||
in a wrong range and failed to run correctly when it should.
|
||||
(merge 5176f20ffe pb/pull-rebase-recurse-submodules later to maint).
|
||||
|
||||
* "git push" that is killed may leave a pack-objects process behind,
|
||||
still computing to find a good compression, wasting cycles. This
|
||||
has been corrected.
|
||||
(merge 8b59935114 jk/stop-pack-objects-when-push-is-killed later to maint).
|
||||
|
||||
* "git fetch" that is killed may leave a pack-objects process behind,
|
||||
still computing to find a good compression, wasting cycles. This
|
||||
has been corrected.
|
||||
(merge 309a4028e7 jk/stop-pack-objects-when-fetch-is-killed later to maint).
|
||||
|
||||
* "git add -i" failed to honor custom colors configured to show
|
||||
patches, which has been corrected.
|
||||
(merge 96386faa03 js/add-i-color-fix later to maint).
|
||||
|
||||
* Processes that access packdata while the .idx file gets removed
|
||||
(e.g. while repacking) did not fail or fall back gracefully as they
|
||||
could.
|
||||
(merge 506ec2fbda tb/idx-midx-race-fix later to maint).
|
||||
|
||||
* "git apply" adjusted the permission bits of working-tree files and
|
||||
directories according core.sharedRepository setting by mistake and
|
||||
for a long time, which has been corrected.
|
||||
(merge eb3c027e17 mt/do-not-use-scld-in-working-tree later to maint).
|
||||
|
||||
* "fetch-pack" could pass NULL pointer to unlink(2) when it sees an
|
||||
invalid filename; the error checking has been tightened to make
|
||||
this impossible.
|
||||
(merge 6031af387e rs/fetch-pack-invalid-lockfile later to maint).
|
||||
|
||||
* "git maintenance run/start/stop" needed to be run in a repository
|
||||
to hold the lockfile they use, but didn't make sure they are
|
||||
actually in a repository, which has been corrected.
|
||||
|
||||
* The glossary described a branch as an "active" line of development,
|
||||
which is misleading---a stale and non-moving branch is still a
|
||||
branch.
|
||||
(merge eef1ceabd8 so/glossary-branch-is-not-necessarily-active later to maint).
|
||||
|
||||
* Newer versions of xsltproc can assign IDs in HTML documents it
|
||||
generates in a consistent manner. Use the feature to help format
|
||||
HTML version of the user manual reproducibly.
|
||||
(merge 3569e11d69 ae/doc-reproducible-html later to maint).
|
||||
|
||||
* Tighten error checking in the codepath that responds to "git fetch".
|
||||
(merge d43a21bdbb jk/check-config-parsing-error-in-upload-pack later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint).
|
||||
(merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint).
|
||||
(merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint).
|
||||
(merge 6db29ab213 jk/fast-import-marks-cleanup later to maint).
|
||||
(merge e5cf6d3df4 nk/dir-c-comment-update later to maint).
|
||||
(merge 5710dcce74 jk/report-fn-typedef later to maint).
|
||||
(merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint).
|
||||
(merge 4e1bee9a99 js/t7006-cleanup later to maint).
|
||||
(merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint).
|
||||
(merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint).
|
||||
(merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint).
|
||||
(merge 9542d56379 sd/prompt-local-variable later to maint).
|
||||
(merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint).
|
||||
(merge b7e20b4373 mc/typofix later to maint).
|
||||
(merge f6bcd9a8a4 js/test-whitespace-fixes later to maint).
|
||||
(merge 53b67a801b js/test-file-size later to maint).
|
||||
(merge 970909c2a7 rs/hashwrite-be64 later to maint).
|
||||
(merge 5a923bb1f0 ma/list-object-filter-opt-msgfix later to maint).
|
||||
(merge 1c3e412916 rs/archive-plug-leak-refname later to maint).
|
||||
(merge d44e5267ea rs/plug-diff-cache-leak later to maint).
|
||||
(merge 793c1464d3 ab/gc-keep-base-option later to maint).
|
||||
(merge b86339b12b mt/worktree-error-message-fix later to maint).
|
||||
(merge e01ae2a4a7 js/pull-rebase-use-advise later to maint).
|
||||
(merge e63d774242 sn/config-doc-typofix later to maint).
|
||||
(merge 08e9df2395 jk/multi-line-indent-style-fix later to maint).
|
||||
(merge e66590348a da/vs-build-iconv-fix later to maint).
|
||||
(merge 7fe07275be js/cmake-extra-built-ins-fix later to maint).
|
@ -3,9 +3,8 @@ Submitting Patches
|
||||
|
||||
== Guidelines
|
||||
|
||||
Here are some guidelines for people who want to contribute their code to this
|
||||
software. There is also a link:MyFirstContribution.html[step-by-step tutorial]
|
||||
available which covers many of these same guidelines.
|
||||
Here are some guidelines for people who want to contribute their code
|
||||
to this software.
|
||||
|
||||
[[base-branch]]
|
||||
=== Decide what to base your work on.
|
||||
@ -19,7 +18,7 @@ change is relevant to.
|
||||
base your work on the tip of the topic.
|
||||
|
||||
* A new feature should be based on `master` in general. If the new
|
||||
feature depends on a topic that is in `seen`, but not in `master`,
|
||||
feature depends on a topic that is in `pu`, but not in `master`,
|
||||
base your work on the tip of that topic.
|
||||
|
||||
* Corrections and enhancements to a topic not yet in `master` should
|
||||
@ -28,7 +27,7 @@ change is relevant to.
|
||||
into the series.
|
||||
|
||||
* In the exceptional case that a new feature depends on several topics
|
||||
not in `master`, start working on `next` or `seen` privately and send
|
||||
not in `master`, start working on `next` or `pu` privately and send
|
||||
out patches for discussion. Before the final merge, you may have to
|
||||
wait until some of the dependent topics graduate to `master`, and
|
||||
rebase your work.
|
||||
@ -38,7 +37,7 @@ change is relevant to.
|
||||
these parts should be based on their trees.
|
||||
|
||||
To find the tip of a topic branch, run `git log --first-parent
|
||||
master..seen` and look for the merge commit. The second parent of this
|
||||
master..pu` and look for the merge commit. The second parent of this
|
||||
commit is the tip of the topic branch.
|
||||
|
||||
[[separate-commits]]
|
||||
@ -209,7 +208,7 @@ send them as replies to either an additional "cover letter" message
|
||||
(see below), the first patch, or the respective preceding patch.
|
||||
|
||||
If your log message (including your name on the
|
||||
`Signed-off-by` trailer) is not writable in ASCII, make sure that
|
||||
Signed-off-by line) is not writable in ASCII, make sure that
|
||||
you send off a message in the correct encoding.
|
||||
|
||||
WARNING: Be wary of your MUAs word-wrap
|
||||
@ -229,7 +228,7 @@ previously sent.
|
||||
The `git format-patch` command follows the best current practice to
|
||||
format the body of an e-mail message. At the beginning of the
|
||||
patch should come your commit message, ending with the
|
||||
`Signed-off-by` trailers, and a line that consists of three dashes,
|
||||
Signed-off-by: lines, and a line that consists of three dashes,
|
||||
followed by the diffstat information and the patch itself. If
|
||||
you are forwarding a patch from somebody else, optionally, at
|
||||
the beginning of the e-mail message just before the commit
|
||||
@ -290,24 +289,25 @@ identify them), to solicit comments and reviews.
|
||||
:git-ml: footnote:[The mailing list: git@vger.kernel.org]
|
||||
|
||||
After the list reached a consensus that it is a good idea to apply the
|
||||
patch, re-send it with "To:" set to the maintainer{current-maintainer}
|
||||
and "cc:" the list{git-ml} for inclusion. This is especially relevant
|
||||
when the maintainer did not heavily participate in the discussion and
|
||||
instead left the review to trusted others.
|
||||
patch, re-send it with "To:" set to the maintainer{current-maintainer} and "cc:" the
|
||||
list{git-ml} for inclusion.
|
||||
|
||||
Do not forget to add trailers such as `Acked-by:`, `Reviewed-by:` and
|
||||
`Tested-by:` lines as necessary to credit people who helped your
|
||||
patch, and "cc:" them when sending such a final version for inclusion.
|
||||
patch.
|
||||
|
||||
[[sign-off]]
|
||||
=== Certify your work by adding your `Signed-off-by` trailer
|
||||
=== Certify your work by adding your "Signed-off-by: " line
|
||||
|
||||
To improve tracking of who did what, we ask you to certify that you
|
||||
wrote the patch or have the right to pass it on under the same license
|
||||
as ours, by "signing off" your patch. Without sign-off, we cannot
|
||||
accept your patches.
|
||||
To improve tracking of who did what, we've borrowed the
|
||||
"sign-off" procedure from the Linux kernel project on patches
|
||||
that are being emailed around. Although core Git is a lot
|
||||
smaller project it is a good discipline to follow it.
|
||||
|
||||
If you can certify the below D-C-O:
|
||||
The sign-off is a simple line at the end of the explanation for
|
||||
the patch, which certifies that you wrote it or otherwise have
|
||||
the right to pass it on as an open-source patch. The rules are
|
||||
pretty simple: if you can certify the below D-C-O:
|
||||
|
||||
[[dco]]
|
||||
.Developer's Certificate of Origin 1.1
|
||||
@ -337,29 +337,23 @@ d. I understand and agree that this project and the contribution
|
||||
this project or the open source license(s) involved.
|
||||
____
|
||||
|
||||
you add a "Signed-off-by" trailer to your commit, that looks like
|
||||
this:
|
||||
then you just add a line saying
|
||||
|
||||
....
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
....
|
||||
|
||||
This line can be added by Git if you run the git-commit command with
|
||||
the -s option.
|
||||
This line can be automatically added by Git if you run the git-commit
|
||||
command with the -s option.
|
||||
|
||||
Notice that you can place your own `Signed-off-by` trailer when
|
||||
Notice that you can place your own Signed-off-by: line when
|
||||
forwarding somebody else's patch with the above rules for
|
||||
D-C-O. Indeed you are encouraged to do so. Do not forget to
|
||||
place an in-body "From: " line at the beginning to properly attribute
|
||||
the change to its true author (see (2) above).
|
||||
|
||||
This procedure originally came from the Linux kernel project, so our
|
||||
rule is quite similar to theirs, but what exactly it means to sign-off
|
||||
your patch differs from project to project, so it may be different
|
||||
from that of the project you are accustomed to.
|
||||
|
||||
[[real-name]]
|
||||
Also notice that a real name is used in the `Signed-off-by` trailer. Please
|
||||
Also notice that a real name is used in the Signed-off-by: line. Please
|
||||
don't hide your real name.
|
||||
|
||||
[[commit-trailers]]
|
||||
@ -429,7 +423,7 @@ help you find out who they are.
|
||||
and cooked further and eventually graduates to `master`.
|
||||
|
||||
In any time between the (2)-(3) cycle, the maintainer may pick it up
|
||||
from the list and queue it to `seen`, in order to make it easier for
|
||||
from the list and queue it to `pu`, in order to make it easier for
|
||||
people play with it without having to pick up and apply the patch to
|
||||
their trees themselves.
|
||||
|
||||
@ -440,7 +434,7 @@ their trees themselves.
|
||||
master. `git pull --rebase` will automatically skip already-applied
|
||||
patches, and will let you know. This works only if you rebase on top
|
||||
of the branch in which your patch has been merged (i.e. it will not
|
||||
tell you if your patch is merged in `seen` if you rebase on top of
|
||||
tell you if your patch is merged in pu if you rebase on top of
|
||||
master).
|
||||
|
||||
* Read the Git mailing list, the maintainer regularly posts messages
|
||||
|
@ -31,6 +31,24 @@ ifdef::backend-docbook[]
|
||||
endif::backend-docbook[]
|
||||
|
||||
ifdef::backend-docbook[]
|
||||
ifndef::git-asciidoc-no-roff[]
|
||||
# "unbreak" docbook-xsl v1.68 for manpages. v1.69 works with or without this.
|
||||
# v1.72 breaks with this because it replaces dots not in roff requests.
|
||||
[listingblock]
|
||||
<example><title>{title}</title>
|
||||
<literallayout class="monospaced">
|
||||
ifdef::doctype-manpage[]
|
||||
.ft C
|
||||
endif::doctype-manpage[]
|
||||
|
|
||||
ifdef::doctype-manpage[]
|
||||
.ft
|
||||
endif::doctype-manpage[]
|
||||
</literallayout>
|
||||
{title#}</example>
|
||||
endif::git-asciidoc-no-roff[]
|
||||
|
||||
ifdef::git-asciidoc-no-roff[]
|
||||
ifdef::doctype-manpage[]
|
||||
# The following two small workarounds insert a simple paragraph after screen
|
||||
[listingblock]
|
||||
@ -49,6 +67,7 @@ ifdef::doctype-manpage[]
|
||||
{title#}</para></formalpara>
|
||||
{title%}<simpara></simpara>
|
||||
endif::doctype-manpage[]
|
||||
endif::git-asciidoc-no-roff[]
|
||||
endif::backend-docbook[]
|
||||
|
||||
ifdef::doctype-manpage[]
|
||||
|
@ -11,12 +11,11 @@
|
||||
|
||||
-L <start>,<end>::
|
||||
-L :<funcname>::
|
||||
Annotate only the line range given by '<start>,<end>',
|
||||
or by the function name regex '<funcname>'.
|
||||
May be specified multiple times. Overlapping ranges are allowed.
|
||||
Annotate only the given line range. May be specified multiple times.
|
||||
Overlapping ranges are allowed.
|
||||
+
|
||||
'<start>' and '<end>' are optional. `-L <start>` or `-L <start>,` spans from
|
||||
'<start>' to end of file. `-L ,<end>` spans from start of file to '<end>'.
|
||||
<start> and <end> are optional. ``-L <start>'' or ``-L <start>,'' spans from
|
||||
<start> to end of file. ``-L ,<end>'' spans from start of file to <end>.
|
||||
+
|
||||
include::line-range-format.txt[]
|
||||
|
||||
@ -37,12 +36,6 @@ include::line-range-format.txt[]
|
||||
START. `git blame --reverse START` is taken as `git blame
|
||||
--reverse START..HEAD` for convenience.
|
||||
|
||||
--first-parent::
|
||||
Follow only the first parent commit upon seeing a merge
|
||||
commit. This option can be used to determine when a line
|
||||
was introduced to a particular integration branch, rather
|
||||
than when it was introduced to the history overall.
|
||||
|
||||
-p::
|
||||
--porcelain::
|
||||
Show in a format designed for machine consumption.
|
||||
|
@ -6,14 +6,9 @@ sub format_one {
|
||||
my ($out, $nameattr) = @_;
|
||||
my ($name, $attr) = @$nameattr;
|
||||
my ($state, $description);
|
||||
my $mansection;
|
||||
$state = 0;
|
||||
open I, '<', "$name.txt" or die "No such file $name.txt";
|
||||
while (<I>) {
|
||||
if (/^git[a-z0-9-]*\(([0-9])\)$/) {
|
||||
$mansection = $1;
|
||||
next;
|
||||
}
|
||||
if (/^NAME$/) {
|
||||
$state = 1;
|
||||
next;
|
||||
@ -32,7 +27,7 @@ sub format_one {
|
||||
die "No description found in $name.txt";
|
||||
}
|
||||
if (my ($verify_name, $text) = ($description =~ /^($name) - (.*)/)) {
|
||||
print $out "linkgit:$name\[$mansection\]::\n\t";
|
||||
print $out "linkgit:$name\[1\]::\n\t";
|
||||
if ($attr =~ / deprecated /) {
|
||||
print $out "(deprecated) ";
|
||||
}
|
||||
@ -43,15 +38,12 @@ sub format_one {
|
||||
}
|
||||
}
|
||||
|
||||
my ($input, @categories) = @ARGV;
|
||||
|
||||
open IN, "<$input";
|
||||
while (<IN>) {
|
||||
while (<>) {
|
||||
last if /^### command list/;
|
||||
}
|
||||
|
||||
my %cmds = ();
|
||||
for (sort <IN>) {
|
||||
for (sort <>) {
|
||||
next if /^#/;
|
||||
|
||||
chomp;
|
||||
@ -59,10 +51,17 @@ for (sort <IN>) {
|
||||
$attr = '' unless defined $attr;
|
||||
push @{$cmds{$cat}}, [$name, " $attr "];
|
||||
}
|
||||
close IN;
|
||||
|
||||
for my $out (@categories) {
|
||||
my ($cat) = $out =~ /^cmds-(.*)\.txt$/;
|
||||
for my $cat (qw(ancillaryinterrogators
|
||||
ancillarymanipulators
|
||||
mainporcelain
|
||||
plumbinginterrogators
|
||||
plumbingmanipulators
|
||||
synchingrepositories
|
||||
foreignscminterface
|
||||
purehelpers
|
||||
synchelpers)) {
|
||||
my $out = "cmds-$cat.txt";
|
||||
open O, '>', "$out+" or die "Cannot open output file $out+";
|
||||
for (@{$cmds{$cat}}) {
|
||||
format_one(\*O, $_);
|
||||
|
@ -3,12 +3,11 @@ CONFIGURATION FILE
|
||||
|
||||
The Git configuration file contains a number of variables that affect
|
||||
the Git commands' behavior. The files `.git/config` and optionally
|
||||
`config.worktree` (see the "CONFIGURATION FILE" section of
|
||||
linkgit:git-worktree[1]) in each repository are used to store the
|
||||
configuration for that repository, and `$HOME/.gitconfig` is used to
|
||||
store a per-user configuration as fallback values for the `.git/config`
|
||||
file. The file `/etc/gitconfig` can be used to store a system-wide
|
||||
default configuration.
|
||||
`config.worktree` (see `extensions.worktreeConfig` below) in each
|
||||
repository are used to store the configuration for that repository, and
|
||||
`$HOME/.gitconfig` is used to store a per-user configuration as
|
||||
fallback values for the `.git/config` file. The file `/etc/gitconfig`
|
||||
can be used to store a system-wide default configuration.
|
||||
|
||||
The configuration variables are used by both the Git plumbing
|
||||
and the porcelains. The variables are divided into sections, wherein
|
||||
@ -64,7 +63,7 @@ The variable names are case-insensitive, allow only alphanumeric characters
|
||||
and `-`, and must start with an alphabetic character.
|
||||
|
||||
A line that defines a value can be continued to the next line by
|
||||
ending it with a `\`; the backslash and the end-of-line are
|
||||
ending it with a `\`; the backquote and the end-of-line are
|
||||
stripped. Leading whitespaces after 'name =', the remainder of the
|
||||
line after the first comment character '#' or ';', and trailing
|
||||
whitespaces of the line are discarded unless they are enclosed in
|
||||
@ -221,13 +220,13 @@ Example
|
||||
; affected by the condition
|
||||
[includeIf "gitdir:/path/to/group/"]
|
||||
path = foo.inc
|
||||
|
||||
; include only if we are in a worktree where foo-branch is
|
||||
; currently checked out
|
||||
[includeIf "onbranch:foo-branch"]
|
||||
path = foo.inc
|
||||
----
|
||||
|
||||
; include only if we are in a worktree where foo-branch is
|
||||
; currently checked out
|
||||
[includeIf "onbranch:foo-branch"]
|
||||
path = foo.inc
|
||||
|
||||
Values
|
||||
~~~~~~
|
||||
|
||||
@ -264,9 +263,7 @@ color::
|
||||
+
|
||||
The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`,
|
||||
`blue`, `magenta`, `cyan` and `white`. The first color given is the
|
||||
foreground; the second is the background. All the basic colors except
|
||||
`normal` have a bright variant that can be specified by prefixing the
|
||||
color with `bright`, like `brightred`.
|
||||
foreground; the second is the background.
|
||||
+
|
||||
Colors may also be given as numbers between 0 and 255; these use ANSI
|
||||
256-color mode (but note that not all terminals may support this). If
|
||||
@ -334,16 +331,12 @@ include::config/checkout.txt[]
|
||||
|
||||
include::config/clean.txt[]
|
||||
|
||||
include::config/clone.txt[]
|
||||
|
||||
include::config/color.txt[]
|
||||
|
||||
include::config/column.txt[]
|
||||
|
||||
include::config/commit.txt[]
|
||||
|
||||
include::config/commitgraph.txt[]
|
||||
|
||||
include::config/credential.txt[]
|
||||
|
||||
include::config/completion.txt[]
|
||||
@ -352,8 +345,6 @@ include::config/diff.txt[]
|
||||
|
||||
include::config/difftool.txt[]
|
||||
|
||||
include::config/extensions.txt[]
|
||||
|
||||
include::config/fastimport.txt[]
|
||||
|
||||
include::config/feature.txt[]
|
||||
@ -402,8 +393,6 @@ include::config/mailinfo.txt[]
|
||||
|
||||
include::config/mailmap.txt[]
|
||||
|
||||
include::config/maintenance.txt[]
|
||||
|
||||
include::config/man.txt[]
|
||||
|
||||
include::config/merge.txt[]
|
||||
@ -456,8 +445,6 @@ include::config/submodule.txt[]
|
||||
|
||||
include::config/tag.txt[]
|
||||
|
||||
include::config/tar.txt[]
|
||||
|
||||
include::config/trace2.txt[]
|
||||
|
||||
include::config/transfer.txt[]
|
||||
|
@ -10,8 +10,9 @@ advice.*::
|
||||
that the check is disabled.
|
||||
pushUpdateRejected::
|
||||
Set this variable to 'false' if you want to disable
|
||||
'pushNonFFCurrent', 'pushNonFFMatching', 'pushAlreadyExists',
|
||||
'pushFetchFirst', 'pushNeedsForce', and 'pushRefNeedsUpdate'
|
||||
'pushNonFFCurrent',
|
||||
'pushNonFFMatching', 'pushAlreadyExists',
|
||||
'pushFetchFirst', and 'pushNeedsForce'
|
||||
simultaneously.
|
||||
pushNonFFCurrent::
|
||||
Advice shown when linkgit:git-push[1] fails due to a
|
||||
@ -40,10 +41,6 @@ advice.*::
|
||||
we can still suggest that the user push to either
|
||||
refs/heads/* or refs/tags/* based on the type of the
|
||||
source object.
|
||||
pushRefNeedsUpdate::
|
||||
Shown when linkgit:git-push[1] rejects a forced update of
|
||||
a branch when its remote-tracking ref has updates that we
|
||||
do not have locally.
|
||||
statusAheadBehind::
|
||||
Shown when linkgit:git-status[1] computes the ahead/behind
|
||||
counts for a local ref compared to its remote tracking ref,
|
||||
@ -113,10 +110,4 @@ advice.*::
|
||||
submoduleAlternateErrorStrategyDie::
|
||||
Advice shown when a submodule.alternateErrorStrategy option
|
||||
configured to "die" causes a fatal error.
|
||||
addIgnoredFile::
|
||||
Advice shown if a user attempts to add an ignored file to
|
||||
the index.
|
||||
addEmptyPathspec::
|
||||
Advice shown if a user runs the add command without providing
|
||||
the pathspec parameter.
|
||||
--
|
||||
|
@ -81,16 +81,15 @@ branch.<name>.rebase::
|
||||
"git pull" is run. See "pull.rebase" for doing this in a non
|
||||
branch-specific manner.
|
||||
+
|
||||
When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
|
||||
When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
|
||||
When `preserve` (deprecated in favor of `merges`), also pass
|
||||
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||
commits will not be flattened by running 'git pull'.
|
||||
+
|
||||
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
||||
mode.
|
||||
When the value is `interactive`, the rebase is run in interactive mode.
|
||||
+
|
||||
*NOTE*: this is a possibly dangerous operation; do *not* use
|
||||
it unless you understand the implications (see linkgit:git-rebase[1]
|
||||
|
@ -1,23 +1,18 @@
|
||||
checkout.defaultRemote::
|
||||
When you run `git checkout <something>`
|
||||
or `git switch <something>` and only have one
|
||||
When you run 'git checkout <something>'
|
||||
or 'git switch <something>' and only have one
|
||||
remote, it may implicitly fall back on checking out and
|
||||
tracking e.g. `origin/<something>`. This stops working as soon
|
||||
as you have more than one remote with a `<something>`
|
||||
tracking e.g. 'origin/<something>'. This stops working as soon
|
||||
as you have more than one remote with a '<something>'
|
||||
reference. This setting allows for setting the name of a
|
||||
preferred remote that should always win when it comes to
|
||||
disambiguation. The typical use-case is to set this to
|
||||
`origin`.
|
||||
+
|
||||
Currently this is used by linkgit:git-switch[1] and
|
||||
linkgit:git-checkout[1] when `git checkout <something>`
|
||||
or `git switch <something>`
|
||||
will checkout the `<something>` branch on another remote,
|
||||
and by linkgit:git-worktree[1] when `git worktree add` refers to a
|
||||
linkgit:git-checkout[1] when 'git checkout <something>'
|
||||
or 'git switch <something>'
|
||||
will checkout the '<something>' branch on another remote,
|
||||
and by linkgit:git-worktree[1] when 'git worktree add' refers to a
|
||||
remote branch. This setting might be used for other checkout-like
|
||||
commands or functionality in the future.
|
||||
|
||||
checkout.guess::
|
||||
Provides the default value for the `--guess` or `--no-guess`
|
||||
option in `git checkout` and `git switch`. See
|
||||
linkgit:git-switch[1] and linkgit:git-checkout[1].
|
||||
|
@ -1,4 +0,0 @@
|
||||
clone.defaultRemoteName::
|
||||
The name of the remote to create when cloning a repository. Defaults to
|
||||
`origin`, and can be overridden by passing the `--origin` command-line
|
||||
option to linkgit:git-clone[1].
|
@ -1,8 +0,0 @@
|
||||
commitGraph.maxNewFilters::
|
||||
Specifies the default value for the `--max-new-filters` option of `git
|
||||
commit-graph write` (c.f., linkgit:git-commit-graph[1]).
|
||||
|
||||
commitGraph.readChangedPaths::
|
||||
If true, then git will use the changed-path Bloom filters in the
|
||||
commit-graph file (if it exists, and they are present). Defaults to
|
||||
true. See linkgit:git-commit-graph[1] for more information.
|
@ -68,17 +68,6 @@ core.fsmonitor::
|
||||
avoiding unnecessary processing of files that have not changed.
|
||||
See the "fsmonitor-watchman" section of linkgit:githooks[5].
|
||||
|
||||
core.fsmonitorHookVersion::
|
||||
Sets the version of hook that is to be used when calling fsmonitor.
|
||||
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
|
||||
will be tried. Version 1 uses a timestamp as input to determine
|
||||
which files have changes since that time but some monitors
|
||||
like watchman have race conditions when used with a timestamp.
|
||||
Version 2 uses an opaque string so that the monitor can return
|
||||
something that can be used to determine what files have changed
|
||||
without race conditions.
|
||||
|
||||
core.trustctime::
|
||||
If false, the ctime differences between the index and the
|
||||
working tree are ignored; useful when the inode change time
|
||||
@ -399,7 +388,7 @@ the largest projects. You probably do not need to adjust this value.
|
||||
Common unit suffixes of 'k', 'm', or 'g' are supported.
|
||||
|
||||
core.deltaBaseCacheLimit::
|
||||
Maximum number of bytes per thread to reserve for caching base objects
|
||||
Maximum number of bytes to reserve for caching base objects
|
||||
that may be referenced by multiple deltified objects. By storing the
|
||||
entire decompressed base objects in a cache Git is able
|
||||
to avoid unpacking and decompressing frequently used base
|
||||
@ -606,8 +595,8 @@ core.useReplaceRefs::
|
||||
|
||||
core.multiPackIndex::
|
||||
Use the multi-pack-index file to track multiple packfiles using a
|
||||
single index. See linkgit:git-multi-pack-index[1] for more
|
||||
information. Defaults to true.
|
||||
single index. See link:technical/multi-pack-index.html[the
|
||||
multi-pack-index design document].
|
||||
|
||||
core.sparseCheckout::
|
||||
Enable "sparse checkout" feature. See linkgit:git-sparse-checkout[1]
|
||||
|
@ -1,13 +1,9 @@
|
||||
credential.helper::
|
||||
Specify an external helper to be called when a username or
|
||||
password credential is needed; the helper may consult external
|
||||
storage to avoid prompting the user for the credentials. This is
|
||||
normally the name of a credential helper with possible
|
||||
arguments, but may also be an absolute path with arguments or, if
|
||||
preceded by `!`, shell commands.
|
||||
+
|
||||
Note that multiple helpers may be defined. See linkgit:gitcredentials[7]
|
||||
for details and examples.
|
||||
storage to avoid prompting the user for the credentials. Note
|
||||
that multiple helpers may be defined. See linkgit:gitcredentials[7]
|
||||
for details.
|
||||
|
||||
credential.useHttpPath::
|
||||
When acquiring credentials, consider the "path" component of an http
|
||||
@ -28,9 +24,3 @@ credential.<url>.*::
|
||||
|
||||
credentialCache.ignoreSIGHUP::
|
||||
Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting.
|
||||
|
||||
credentialStore.lockTimeoutMS::
|
||||
The length of time, in milliseconds, for git-credential-store to retry
|
||||
when trying to lock the credentials file. Value 0 means not to retry at
|
||||
all; -1 means to try indefinitely. Default is 1000 (i.e., retry for
|
||||
1s).
|
||||
|
@ -105,10 +105,6 @@ diff.mnemonicPrefix::
|
||||
diff.noprefix::
|
||||
If set, 'git diff' does not show any source or destination prefix.
|
||||
|
||||
diff.relative::
|
||||
If set to 'true', 'git diff' does not show changes outside of the directory
|
||||
and show pathnames relative to the current directory.
|
||||
|
||||
diff.orderFile::
|
||||
File indicating how to order files within a diff.
|
||||
See the '-O' option to linkgit:git-diff[1] for details.
|
||||
|
@ -1,8 +0,0 @@
|
||||
extensions.objectFormat::
|
||||
Specify the hash algorithm to use. The acceptable values are `sha1` and
|
||||
`sha256`. If not specified, `sha1` is assumed. It is an error to specify
|
||||
this key unless `core.repositoryFormatVersion` is 1.
|
||||
+
|
||||
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
|
||||
work and will produce hard-to-diagnose issues.
|
@ -12,8 +12,19 @@ feature.experimental::
|
||||
setting if you are interested in providing feedback on experimental
|
||||
features. The new default values are:
|
||||
+
|
||||
* `pack.useSparse=true` uses a new algorithm when constructing a pack-file
|
||||
which can improve `git push` performance in repos with many files.
|
||||
+
|
||||
* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
|
||||
skipping more commits at a time, reducing the number of round trips.
|
||||
+
|
||||
* `fetch.writeCommitGraph=true` writes a commit-graph after every `git fetch`
|
||||
command that downloads a pack-file from a remote. Using the `--split` option,
|
||||
most executions will create a very small commit-graph file on top of the
|
||||
existing commit-graph file(s). Occasionally, these files will merge and the
|
||||
write may take longer. Having an updated commit-graph file helps performance
|
||||
of many Git commands, including `git merge-base`, `git push -f`, and
|
||||
`git log --graph`.
|
||||
|
||||
feature.manyFiles::
|
||||
Enable config options that optimize for repos with many files in the
|
||||
|
@ -1,14 +1,11 @@
|
||||
fetch.recurseSubmodules::
|
||||
This option controls whether `git fetch` (and the underlying fetch
|
||||
in `git pull`) will recursively fetch into populated submodules.
|
||||
This option can be set either to a boolean value or to 'on-demand'.
|
||||
This option can be either set to a boolean value or to 'on-demand'.
|
||||
Setting it to a boolean changes the behavior of fetch and pull to
|
||||
recurse unconditionally into submodules when set to true or to not
|
||||
recurse at all when set to false. When set to 'on-demand', fetch and
|
||||
pull will only recurse into a populated submodule when its
|
||||
superproject retrieves a commit that updates the submodule's
|
||||
unconditionally recurse into submodules when set to true or to not
|
||||
recurse at all when set to false. When set to 'on-demand' (the default
|
||||
value), fetch and pull will only recurse into a populated submodule
|
||||
when its superproject retrieves a commit that updates the submodule's
|
||||
reference.
|
||||
Defaults to 'on-demand', or to the value of 'submodule.recurse' if set.
|
||||
|
||||
fetch.fsckObjects::
|
||||
If it is set to true, git-fetch-pack will check all fetched
|
||||
@ -60,10 +57,7 @@ fetch.negotiationAlgorithm::
|
||||
sent when negotiating the contents of the packfile to be sent by the
|
||||
server. Set to "skipping" to use an algorithm that skips commits in an
|
||||
effort to converge faster, but may result in a larger-than-necessary
|
||||
packfile; or set to "noop" to not send any information at all, which
|
||||
will almost certainly result in a larger-than-necessary packfile, but
|
||||
will skip the negotiation step.
|
||||
The default is "default" which instructs Git to use the default algorithm
|
||||
packfile; The default is "default" which instructs Git to use the default algorithm
|
||||
that never skips commits (unless the server has acknowledged it or one
|
||||
of its descendants). If `feature.experimental` is enabled, then this
|
||||
setting defaults to "skipping".
|
||||
@ -93,4 +87,5 @@ fetch.writeCommitGraph::
|
||||
the existing commit-graph file(s). Occasionally, these files will
|
||||
merge and the write may take longer. Having an updated commit-graph
|
||||
file helps performance of many Git commands, including `git merge-base`,
|
||||
`git push -f`, and `git log --graph`. Defaults to false.
|
||||
`git push -f`, and `git log --graph`. Defaults to false, unless
|
||||
`feature.experimental` is true.
|
||||
|
@ -8,15 +8,3 @@ merge.log::
|
||||
most the specified number of one-line descriptions from the
|
||||
actual commits that are being merged. Defaults to false, and
|
||||
true is a synonym for 20.
|
||||
|
||||
merge.suppressDest::
|
||||
By adding a glob that matches the names of integration
|
||||
branches to this multi-valued configuration variable, the
|
||||
default merge message computed for merges into these
|
||||
integration branches will omit "into <branch name>" from
|
||||
its title.
|
||||
+
|
||||
An element with an empty value can be used to clear the list
|
||||
of globs accumulated from previous configuration entries.
|
||||
When there is no `merge.suppressDest` variable defined, the
|
||||
default value of `master` is used for backward compatibility.
|
||||
|
@ -57,11 +57,6 @@ format.suffix::
|
||||
`.patch`. Use this variable to change that suffix (make sure to
|
||||
include the dot if you want it).
|
||||
|
||||
format.encodeEmailHeaders::
|
||||
Encode email headers that have non-ASCII characters with
|
||||
"Q-encoding" (described in RFC 2047) for email transmission.
|
||||
Defaults to true.
|
||||
|
||||
format.pretty::
|
||||
The default pretty format for log/show/whatchanged command,
|
||||
See linkgit:git-log[1], linkgit:git-show[1],
|
||||
@ -79,7 +74,7 @@ format.thread::
|
||||
|
||||
format.signOff::
|
||||
A boolean value which lets you enable the `-s/--signoff` option of
|
||||
format-patch by default. *Note:* Adding the `Signed-off-by` trailer to a
|
||||
format-patch by default. *Note:* Adding the Signed-off-by: line to a
|
||||
patch should be a conscious act and means that you certify you have
|
||||
the rights to submit this work under the same open source license.
|
||||
Please see the 'SubmittingPatches' document for further discussion.
|
||||
@ -94,16 +89,9 @@ format.outputDirectory::
|
||||
Set a custom directory to store the resulting files instead of the
|
||||
current working directory. All directory components will be created.
|
||||
|
||||
format.filenameMaxLength::
|
||||
The maximum length of the output filenames generated by the
|
||||
`format-patch` command; defaults to 64. Can be overridden
|
||||
by the `--filename-max-length=<n>` command line option.
|
||||
|
||||
format.useAutoBase::
|
||||
A boolean value which lets you enable the `--base=auto` option of
|
||||
format-patch by default. Can also be set to "whenAble" to allow
|
||||
enabling `--base=auto` if a suitable base is available, but to skip
|
||||
adding base info otherwise without the format dying.
|
||||
format-patch by default.
|
||||
|
||||
format.notes::
|
||||
Provides the default value for the `--notes` option to
|
||||
|
@ -44,9 +44,9 @@ gc.autoDetach::
|
||||
|
||||
gc.bigPackThreshold::
|
||||
If non-zero, all packs larger than this limit are kept when
|
||||
`git gc` is run. This is very similar to `--keep-largest-pack`
|
||||
`git gc` is run. This is very similar to `--keep-base-pack`
|
||||
except that all packs that meet the threshold are kept, not
|
||||
just the largest pack. Defaults to zero. Common unit suffixes of
|
||||
just the base pack. Defaults to zero. Common unit suffixes of
|
||||
'k', 'm', or 'g' are supported.
|
||||
+
|
||||
Note that if the number of kept packs is more than gc.autoPackLimit,
|
||||
@ -57,7 +57,7 @@ gc.autoPackLimit and gc.bigPackThreshold should be respected again.
|
||||
If the amount of memory estimated for `git repack` to run smoothly is
|
||||
not available and `gc.bigPackThreshold` is not set, the largest pack
|
||||
will also be excluded (this is the equivalent of running `git gc` with
|
||||
`--keep-largest-pack`).
|
||||
`--keep-base-pack`).
|
||||
|
||||
gc.writeCommitGraph::
|
||||
If true, then gc will rewrite the commit-graph file when
|
||||
|
@ -18,18 +18,3 @@ gpg.<format>.program::
|
||||
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
||||
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
||||
value for `gpg.x509.program` is "gpgsm".
|
||||
|
||||
gpg.minTrustLevel::
|
||||
Specifies a minimum trust level for signature verification. If
|
||||
this option is unset, then signature verification for merge
|
||||
operations require a key with at least `marginal` trust. Other
|
||||
operations that perform signature verification require a key
|
||||
with at least `undefined` trust. Setting this option overrides
|
||||
the required trust-level for all operations. Supported values,
|
||||
in increasing order of significance:
|
||||
+
|
||||
* `undefined`
|
||||
* `never`
|
||||
* `marginal`
|
||||
* `fully`
|
||||
* `ultimate`
|
||||
|
@ -8,14 +8,13 @@ help.format::
|
||||
the default. 'web' and 'html' are the same.
|
||||
|
||||
help.autoCorrect::
|
||||
If git detects typos and can identify exactly one valid command similar
|
||||
to the error, git will automatically run the intended command after
|
||||
waiting a duration of time defined by this configuration value in
|
||||
deciseconds (0.1 sec). If this value is 0, the suggested corrections
|
||||
will be shown, but not executed. If it is a negative integer, or
|
||||
"immediate", the suggested command
|
||||
is run immediately. If "never", suggestions are not shown at all. The
|
||||
default value is zero.
|
||||
Automatically correct and execute mistyped commands after
|
||||
waiting for the given number of deciseconds (0.1 sec). If more
|
||||
than one command can be deduced from the entered text, nothing
|
||||
will be executed. If the value of this option is negative,
|
||||
the corrected command will be executed immediately. If the
|
||||
value is 0 - the command will be just shown but not executed.
|
||||
This is the default.
|
||||
|
||||
help.htmlPath::
|
||||
Specify the path where the HTML documentation resides. File system paths
|
||||
|
@ -29,27 +29,6 @@ http.proxyAuthMethod::
|
||||
* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)
|
||||
--
|
||||
|
||||
http.proxySSLCert::
|
||||
The pathname of a file that stores a client certificate to use to authenticate
|
||||
with an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_CERT` environment
|
||||
variable.
|
||||
|
||||
http.proxySSLKey::
|
||||
The pathname of a file that stores a private key to use to authenticate with
|
||||
an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_KEY` environment
|
||||
variable.
|
||||
|
||||
http.proxySSLCertPasswordProtected::
|
||||
Enable Git's password prompt for the proxy SSL certificate. Otherwise OpenSSL
|
||||
will prompt the user, possibly many times, if the certificate or private key
|
||||
is encrypted. Can be overriden by the `GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED`
|
||||
environment variable.
|
||||
|
||||
http.proxySSLCAInfo::
|
||||
Pathname to the file containing the certificate bundle that should be used to
|
||||
verify the proxy with when using an HTTPS proxy. Can be overriden by the
|
||||
`GIT_PROXY_SSL_CAINFO` environment variable.
|
||||
|
||||
http.emptyAuth::
|
||||
Attempt authentication without seeking a username or password. This
|
||||
can be used to attempt GSS-Negotiate authentication without specifying
|
||||
|
@ -1,7 +1,3 @@
|
||||
init.templateDir::
|
||||
Specify the directory from which templates will be copied.
|
||||
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
|
||||
|
||||
init.defaultBranch::
|
||||
Allows overriding the default branch name e.g. when initializing
|
||||
a new repository or when cloning an empty repository.
|
||||
|
@ -18,12 +18,6 @@ log.decorate::
|
||||
names are shown. This is the same as the `--decorate` option
|
||||
of the `git log`.
|
||||
|
||||
log.excludeDecoration::
|
||||
Exclude the specified patterns from the log decorations. This is
|
||||
similar to the `--decorate-refs-exclude` command-line option, but
|
||||
the config option can be overridden by the `--decorate-refs`
|
||||
option.
|
||||
|
||||
log.follow::
|
||||
If `true`, `git log` will act as if the `--follow` option was used when
|
||||
a single <path> is given. This has the same limitations as `--follow`,
|
||||
|
@ -1,59 +0,0 @@
|
||||
maintenance.auto::
|
||||
This boolean config option controls whether some commands run
|
||||
`git maintenance run --auto` after doing their normal work. Defaults
|
||||
to true.
|
||||
|
||||
maintenance.strategy::
|
||||
This string config option provides a way to specify one of a few
|
||||
recommended schedules for background maintenance. This only affects
|
||||
which tasks are run during `git maintenance run --schedule=X`
|
||||
commands, provided no `--task=<task>` arguments are provided.
|
||||
Further, if a `maintenance.<task>.schedule` config value is set,
|
||||
then that value is used instead of the one provided by
|
||||
`maintenance.strategy`. The possible strategy strings are:
|
||||
+
|
||||
* `none`: This default setting implies no task are run at any schedule.
|
||||
* `incremental`: This setting optimizes for performing small maintenance
|
||||
activities that do not delete any data. This does not schedule the `gc`
|
||||
task, but runs the `prefetch` and `commit-graph` tasks hourly and the
|
||||
`loose-objects` and `incremental-repack` tasks daily.
|
||||
|
||||
maintenance.<task>.enabled::
|
||||
This boolean config option controls whether the maintenance task
|
||||
with name `<task>` is run when no `--task` option is specified to
|
||||
`git maintenance run`. These config values are ignored if a
|
||||
`--task` option exists. By default, only `maintenance.gc.enabled`
|
||||
is true.
|
||||
|
||||
maintenance.<task>.schedule::
|
||||
This config option controls whether or not the given `<task>` runs
|
||||
during a `git maintenance run --schedule=<frequency>` command. The
|
||||
value must be one of "hourly", "daily", or "weekly".
|
||||
|
||||
maintenance.commit-graph.auto::
|
||||
This integer config option controls how often the `commit-graph` task
|
||||
should be run as part of `git maintenance run --auto`. If zero, then
|
||||
the `commit-graph` task will not run with the `--auto` option. A
|
||||
negative value will force the task to run every time. Otherwise, a
|
||||
positive value implies the command should run when the number of
|
||||
reachable commits that are not in the commit-graph file is at least
|
||||
the value of `maintenance.commit-graph.auto`. The default value is
|
||||
100.
|
||||
|
||||
maintenance.loose-objects.auto::
|
||||
This integer config option controls how often the `loose-objects` task
|
||||
should be run as part of `git maintenance run --auto`. If zero, then
|
||||
the `loose-objects` task will not run with the `--auto` option. A
|
||||
negative value will force the task to run every time. Otherwise, a
|
||||
positive value implies the command should run when the number of
|
||||
loose objects is at least the value of `maintenance.loose-objects.auto`.
|
||||
The default value is 100.
|
||||
|
||||
maintenance.incremental-repack.auto::
|
||||
This integer config option controls how often the `incremental-repack`
|
||||
task should be run as part of `git maintenance run --auto`. If zero,
|
||||
then the `incremental-repack` task will not run with the `--auto`
|
||||
option. A negative value will force the task to run every time.
|
||||
Otherwise, a positive value implies the command should run when the
|
||||
number of pack-files not in the multi-pack-index is at least the value
|
||||
of `maintenance.incremental-repack.auto`. The default value is 10.
|
@ -70,16 +70,6 @@ merge.stat::
|
||||
Whether to print the diffstat between ORIG_HEAD and the merge result
|
||||
at the end of the merge. True by default.
|
||||
|
||||
merge.autoStash::
|
||||
When set to true, automatically create a temporary stash entry
|
||||
before the operation begins, and apply it after the operation
|
||||
ends. This means that you can run merge on a dirty worktree.
|
||||
However, use with care: the final stash application after a
|
||||
successful merge might result in non-trivial conflicts.
|
||||
This option can be overridden by the `--no-autostash` and
|
||||
`--autostash` options of linkgit:git-merge[1].
|
||||
Defaults to false.
|
||||
|
||||
merge.tool::
|
||||
Controls which merge tool is used by linkgit:git-mergetool[1].
|
||||
The list below shows the valid built-in values.
|
||||
|
@ -30,16 +30,6 @@ mergetool.meld.hasOutput::
|
||||
to `true` tells Git to unconditionally use the `--output` option,
|
||||
and `false` avoids using `--output`.
|
||||
|
||||
mergetool.meld.useAutoMerge::
|
||||
When the `--auto-merge` is given, meld will merge all non-conflicting
|
||||
parts automatically, highlight the conflicting parts and wait for
|
||||
user decision. Setting `mergetool.meld.useAutoMerge` to `true` tells
|
||||
Git to unconditionally use the `--auto-merge` option with `meld`.
|
||||
Setting this value to `auto` makes git detect whether `--auto-merge`
|
||||
is supported and will only use `--auto-merge` when available. A
|
||||
value of `false` avoids using `--auto-merge` altogether, and is the
|
||||
default value.
|
||||
|
||||
mergetool.keepBackup::
|
||||
After performing a merge, the original file with conflict markers
|
||||
can be saved as a file with a `.orig` extension. If this variable
|
||||
|
@ -27,13 +27,6 @@ Note that changing the compression level will not automatically recompress
|
||||
all existing objects. You can force recompression by passing the -F option
|
||||
to linkgit:git-repack[1].
|
||||
|
||||
pack.allowPackReuse::
|
||||
When true, and when reachability bitmaps are enabled,
|
||||
pack-objects will try to send parts of the bitmapped packfile
|
||||
verbatim. This can reduce memory and CPU usage to serve fetches,
|
||||
but might result in sending a slightly larger pack. Defaults to
|
||||
true.
|
||||
|
||||
pack.island::
|
||||
An extended regular expression configuring a set of delta
|
||||
islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1]
|
||||
@ -119,8 +112,8 @@ pack.useSparse::
|
||||
objects. This can have significant performance benefits when
|
||||
computing a pack to send a small change. However, it is possible
|
||||
that extra objects are added to the pack-file if the included
|
||||
commits contain certain types of direct renames. Default is
|
||||
`true`.
|
||||
commits contain certain types of direct renames. Default is `false`
|
||||
unless `feature.experimental` is enabled.
|
||||
|
||||
pack.writeBitmaps (deprecated)::
|
||||
This is a deprecated synonym for `repack.writeBitmaps`.
|
||||
|
@ -45,10 +45,11 @@ The protocol names currently used by git are:
|
||||
--
|
||||
|
||||
protocol.version::
|
||||
If set, clients will attempt to communicate with a server
|
||||
using the specified protocol version. If the server does
|
||||
not support it, communication falls back to version 0.
|
||||
If unset, the default is `2`.
|
||||
Experimental. If set, clients will attempt to communicate with a
|
||||
server using the specified protocol version. If unset, no
|
||||
attempt will be made by the client to communicate using a
|
||||
particular protocol version, this results in protocol version 0
|
||||
being used.
|
||||
Supported versions:
|
||||
+
|
||||
--
|
||||
|
@ -14,16 +14,15 @@ pull.rebase::
|
||||
pull" is run. See "branch.<name>.rebase" for setting this on a
|
||||
per-branch basis.
|
||||
+
|
||||
When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
|
||||
When `merges`, pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
|
||||
When `preserve` (deprecated in favor of `merges`), also pass
|
||||
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||
commits will not be flattened by running 'git pull'.
|
||||
+
|
||||
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
||||
mode.
|
||||
When the value is `interactive`, the rebase is run in interactive mode.
|
||||
+
|
||||
*NOTE*: this is a possibly dangerous operation; do *not* use
|
||||
it unless you understand the implications (see linkgit:git-rebase[1]
|
||||
|
@ -1,7 +1,6 @@
|
||||
push.default::
|
||||
Defines the action `git push` should take if no refspec is
|
||||
given (whether from the command-line, config, or elsewhere).
|
||||
Different values are well-suited for
|
||||
explicitly given. Different values are well-suited for
|
||||
specific workflows; for instance, in a purely central workflow
|
||||
(i.e. the fetch source is equal to the push destination),
|
||||
`upstream` is probably what you want. Possible values are:
|
||||
@ -9,7 +8,7 @@ push.default::
|
||||
--
|
||||
|
||||
* `nothing` - do not push anything (error out) unless a refspec is
|
||||
given. This is primarily meant for people who want to
|
||||
explicitly given. This is primarily meant for people who want to
|
||||
avoid mistakes by always being explicit.
|
||||
|
||||
* `current` - push the current branch to update a branch with the same
|
||||
@ -112,11 +111,3 @@ push.recurseSubmodules::
|
||||
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
|
||||
set (in which case a 'true' value means 'on-demand').
|
||||
|
||||
push.useForceIfIncludes::
|
||||
If set to "true", it is equivalent to specifying
|
||||
`--force-if-includes` as an option to linkgit:git-push[1]
|
||||
in the command line. Adding `--no-force-if-includes` at the
|
||||
time of push overrides this configuration setting.
|
||||
|
@ -5,12 +5,6 @@ rebase.useBuiltin::
|
||||
is always used. Setting this will emit a warning, to alert any
|
||||
remaining users that setting this now does nothing.
|
||||
|
||||
rebase.backend::
|
||||
Default backend to use for rebasing. Possible choices are
|
||||
'apply' or 'merge'. In the future, if the merge backend gains
|
||||
all remaining capabilities of the apply backend, this setting
|
||||
may become unused.
|
||||
|
||||
rebase.stat::
|
||||
Whether to show a diffstat of what changed upstream since the last
|
||||
rebase. False by default.
|
||||
|
@ -114,28 +114,6 @@ receive.hideRefs::
|
||||
An attempt to update or delete a hidden ref by `git push` is
|
||||
rejected.
|
||||
|
||||
receive.procReceiveRefs::
|
||||
This is a multi-valued variable that defines reference prefixes
|
||||
to match the commands in `receive-pack`. Commands matching the
|
||||
prefixes will be executed by an external hook "proc-receive",
|
||||
instead of the internal `execute_commands` function. If this
|
||||
variable is not defined, the "proc-receive" hook will never be
|
||||
used, and all commands will be executed by the internal
|
||||
`execute_commands` function.
|
||||
+
|
||||
For example, if this variable is set to "refs/for", pushing to reference
|
||||
such as "refs/for/master" will not create or update a reference named
|
||||
"refs/for/master", but may create or update a pull request directly by
|
||||
running the hook "proc-receive".
|
||||
+
|
||||
Optional modifiers can be provided in the beginning of the value to filter
|
||||
commands for specific actions: create (a), modify (m), delete (d).
|
||||
A `!` can be included in the modifiers to negate the reference prefix entry.
|
||||
E.g.:
|
||||
+
|
||||
git config --system --add receive.procReceiveRefs ad:refs/heads
|
||||
git config --system --add receive.procReceiveRefs !:refs/heads
|
||||
|
||||
receive.updateServerInfo::
|
||||
If set to true, git-receive-pack will run git-update-server-info
|
||||
after receiving data from git-push and updating refs.
|
||||
|
@ -61,8 +61,3 @@ sendemail.smtpBatchSize::
|
||||
sendemail.smtpReloginDelay::
|
||||
Seconds wait before reconnecting to smtp server.
|
||||
See also the `--relogin-delay` option of linkgit:git-send-email[1].
|
||||
|
||||
sendemail.forbidSendmailVariables::
|
||||
To avoid common misconfiguration mistakes, linkgit:git-send-email[1]
|
||||
will abort with a warning if any configuration options for "sendmail"
|
||||
exist. Set this variable to bypass the check.
|
||||
|
@ -1,9 +1,17 @@
|
||||
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.
|
||||
Set to `false` to use the legacy shell script implementation of
|
||||
linkgit:git-stash[1]. Is `true` by default, which means use
|
||||
the built-in rewrite of it in C.
|
||||
+
|
||||
The C rewrite is first included with Git version 2.22 (and Git for Windows
|
||||
version 2.19). This option serves as an escape hatch to re-enable the
|
||||
legacy version in case any bugs are found in the rewrite. This option and
|
||||
the shell script version of linkgit:git-stash[1] will be removed in some
|
||||
future release.
|
||||
+
|
||||
If you find some reason to set this option to `false`, other than
|
||||
one-off testing, you should report the behavior difference as a bug in
|
||||
Git (see https://git-scm.com/community for details).
|
||||
|
||||
stash.showPatch::
|
||||
If this is set to true, the `git stash show` command without an
|
||||
|
@ -59,17 +59,9 @@ submodule.active::
|
||||
|
||||
submodule.recurse::
|
||||
Specifies if commands recurse into submodules by default. This
|
||||
applies to all commands that have a `--recurse-submodules` option
|
||||
(`checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`, `reset`,
|
||||
`restore` and `switch`) except `clone` and `ls-files`.
|
||||
applies to all commands that have a `--recurse-submodules` option,
|
||||
except `clone`.
|
||||
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::
|
||||
Specifies how many submodules are fetched/cloned at the same time.
|
||||
|
@ -15,3 +15,10 @@ tag.gpgSign::
|
||||
convenient to use an agent to avoid typing your gpg passphrase
|
||||
several times. Note that this option doesn't affect tag signing
|
||||
behavior enabled by "-u <keyid>" or "--local-user=<keyid>" options.
|
||||
|
||||
tar.umask::
|
||||
This variable can be used to restrict the permission bits of
|
||||
tar archive entries. The default is 0002, which turns off the
|
||||
world write bit. The special value "user" indicates that the
|
||||
archiving user's umask will be used instead. See umask(2) and
|
||||
linkgit:git-archive[1].
|
||||
|
@ -1,6 +0,0 @@
|
||||
tar.umask::
|
||||
This variable can be used to restrict the permission bits of
|
||||
tar archive entries. The default is 0002, which turns off the
|
||||
world write bit. The special value "user" indicates that the
|
||||
archiving user's umask will be used instead. See umask(2) and
|
||||
linkgit:git-archive[1].
|
@ -48,15 +48,6 @@ trace2.configParams::
|
||||
May be overridden by the `GIT_TRACE2_CONFIG_PARAMS` environment
|
||||
variable. Unset by default.
|
||||
|
||||
trace2.envVars::
|
||||
A comma-separated list of "important" environment variables that should
|
||||
be recorded in the trace2 output. For example,
|
||||
`GIT_HTTP_USER_AGENT,GIT_CONFIG` would cause the trace2 output to
|
||||
contain events listing the overrides for HTTP user agent and the
|
||||
location of the Git configuration file (assuming any are set). May be
|
||||
overriden by the `GIT_TRACE2_ENV_VARS` environment variable. Unset by
|
||||
default.
|
||||
|
||||
trace2.destinationDebug::
|
||||
Boolean. When true Git will print error messages when a
|
||||
trace target destination cannot be opened for writing.
|
||||
|
@ -69,7 +69,3 @@ transfer.unpackLimit::
|
||||
When `fetch.unpackLimit` or `receive.unpackLimit` are
|
||||
not set, the value of this variable is used instead.
|
||||
The default value is 100.
|
||||
|
||||
transfer.advertiseSID::
|
||||
Boolean. When true, client and server processes will advertise their
|
||||
unique session IDs to their remote counterpart. Defaults to false.
|
||||
|
@ -57,24 +57,6 @@ uploadpack.allowFilter::
|
||||
If this option is set, `upload-pack` will support partial
|
||||
clone and partial fetch object filtering.
|
||||
|
||||
uploadpackfilter.allow::
|
||||
Provides a default value for unspecified object filters (see: the
|
||||
below configuration variable).
|
||||
Defaults to `true`.
|
||||
|
||||
uploadpackfilter.<filter>.allow::
|
||||
Explicitly allow or ban the object filter corresponding to
|
||||
`<filter>`, where `<filter>` may be one of: `blob:none`,
|
||||
`blob:limit`, `tree`, `sparse:oid`, or `combine`. If using
|
||||
combined filters, both `combine` and all of the nested filter
|
||||
kinds must be allowed. Defaults to `uploadpackfilter.allow`.
|
||||
|
||||
uploadpackfilter.tree.maxDepth::
|
||||
Only allow `--filter=tree:<n>` when `<n>` is no more than the value of
|
||||
`uploadpackfilter.tree.maxDepth`. If set, this also implies
|
||||
`uploadpackfilter.tree.allow=true`, unless this configuration
|
||||
variable had already been set. Has no effect if unset.
|
||||
|
||||
uploadpack.allowRefInWant::
|
||||
If this option is set, `upload-pack` will support the `ref-in-want`
|
||||
feature of the protocol version 2 `fetch` command. This feature
|
||||
|
@ -20,9 +20,7 @@ RFC 2822::
|
||||
ISO 8601::
|
||||
Time and date specified by the ISO 8601 standard, for example
|
||||
`2005-04-07T22:13:13`. The parser accepts a space instead of the
|
||||
`T` character as well. Fractional parts of a second will be ignored,
|
||||
for example `2005-04-07T22:13:13.019` will be treated as
|
||||
`2005-04-07T22:13:13`.
|
||||
`T` character as well.
|
||||
+
|
||||
NOTE: In addition, the date part is accepted in the following formats:
|
||||
`YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`.
|
||||
|
@ -10,8 +10,7 @@ linkgit:git-diff-tree[1], or
|
||||
linkgit:git-diff-files[1]
|
||||
with the `-p` option produces patch text.
|
||||
You can customize the creation of patch text via the
|
||||
`GIT_EXTERNAL_DIFF` and the `GIT_DIFF_OPTS` environment variables
|
||||
(see linkgit:git[1]).
|
||||
`GIT_EXTERNAL_DIFF` and the `GIT_DIFF_OPTS` environment variables.
|
||||
|
||||
What the -p option produces is slightly different from the traditional
|
||||
diff format:
|
||||
|
@ -36,9 +36,9 @@ endif::git-format-patch[]
|
||||
-U<n>::
|
||||
--unified=<n>::
|
||||
Generate diffs with <n> lines of context instead of
|
||||
the usual three.
|
||||
the usual three. Implies `--patch`.
|
||||
ifndef::git-format-patch[]
|
||||
Implies `--patch`.
|
||||
Implies `-p`.
|
||||
endif::git-format-patch[]
|
||||
|
||||
--output=<file>::
|
||||
@ -73,11 +73,6 @@ ifndef::git-format-patch[]
|
||||
Synonym for `-p --raw`.
|
||||
endif::git-format-patch[]
|
||||
|
||||
ifdef::git-log[]
|
||||
-t::
|
||||
Show the tree objects in the diff output.
|
||||
endif::git-log[]
|
||||
|
||||
--indent-heuristic::
|
||||
Enable the heuristic that shifts diff hunk boundaries to make patches
|
||||
easier to read. This is the default.
|
||||
@ -441,20 +436,15 @@ endif::git-format-patch[]
|
||||
|
||||
--binary::
|
||||
In addition to `--full-index`, output a binary diff that
|
||||
can be applied with `git-apply`.
|
||||
ifndef::git-format-patch[]
|
||||
Implies `--patch`.
|
||||
endif::git-format-patch[]
|
||||
can be applied with `git-apply`. Implies `--patch`.
|
||||
|
||||
--abbrev[=<n>]::
|
||||
Instead of showing the full 40-byte hexadecimal object
|
||||
name in diff-raw format output and diff-tree header
|
||||
lines, show the shortest prefix that is at least '<n>'
|
||||
hexdigits long that uniquely refers the object.
|
||||
In diff-patch output format, `--full-index` takes higher
|
||||
precedence, i.e. if `--full-index` is specified, full blob
|
||||
names will be shown regardless of `--abbrev`.
|
||||
Non default number of digits can be specified with `--abbrev=<n>`.
|
||||
lines, show only a partial prefix. This is
|
||||
independent of the `--full-index` option above, which controls
|
||||
the diff-patch output format. Non default number of
|
||||
digits can be specified with `--abbrev=<n>`.
|
||||
|
||||
-B[<n>][/<m>]::
|
||||
--break-rewrites[=[<n>][/<m>]]::
|
||||
@ -653,18 +643,15 @@ ifndef::git-format-patch[]
|
||||
-R::
|
||||
Swap two inputs; that is, show differences from index or
|
||||
on-disk file to tree contents.
|
||||
endif::git-format-patch[]
|
||||
|
||||
--relative[=<path>]::
|
||||
--no-relative::
|
||||
When run from a subdirectory of the project, it can be
|
||||
told to exclude changes outside the directory and show
|
||||
pathnames relative to it with this option. When you are
|
||||
not in a subdirectory (e.g. in a bare repository), you
|
||||
can name which subdirectory to make the output relative
|
||||
to by giving a <path> as an argument.
|
||||
`--no-relative` can be used to countermand both `diff.relative` config
|
||||
option and previous `--relative`.
|
||||
endif::git-format-patch[]
|
||||
|
||||
-a::
|
||||
--text::
|
||||
@ -691,11 +678,6 @@ endif::git-format-patch[]
|
||||
--ignore-blank-lines::
|
||||
Ignore changes whose lines are all blank.
|
||||
|
||||
-I<regex>::
|
||||
--ignore-matching-lines=<regex>::
|
||||
Ignore changes whose all lines match <regex>. This option may
|
||||
be specified more than once.
|
||||
|
||||
--inter-hunk-context=<lines>::
|
||||
Show the context between diff hunks, up to the specified number
|
||||
of lines, thereby fusing hunks that are close to each other.
|
||||
@ -704,10 +686,7 @@ endif::git-format-patch[]
|
||||
|
||||
-W::
|
||||
--function-context::
|
||||
Show whole function as context lines for each change.
|
||||
The function names are determined in the same way as
|
||||
`git diff` works out patch hunk headers (see 'Defining a
|
||||
custom hunk-header' in linkgit:gitattributes[5]).
|
||||
Show whole surrounding functions of changes.
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
ifndef::git-log[]
|
||||
|
@ -61,16 +61,9 @@ this option multiple times, one for each matching ref name.
|
||||
See also the `fetch.negotiationAlgorithm` configuration variable
|
||||
documented in linkgit:git-config[1].
|
||||
|
||||
ifndef::git-pull[]
|
||||
--dry-run::
|
||||
Show what would be done, without making any changes.
|
||||
|
||||
ifndef::git-pull[]
|
||||
--[no-]write-fetch-head::
|
||||
Write the list of remote refs fetched in the `FETCH_HEAD`
|
||||
file directly under `$GIT_DIR`. This is the default.
|
||||
Passing `--no-write-fetch-head` from the command line tells
|
||||
Git not to write the file. Under `--dry-run` option, the
|
||||
file is never written.
|
||||
endif::git-pull[]
|
||||
|
||||
-f::
|
||||
@ -95,16 +88,13 @@ ifndef::git-pull[]
|
||||
Allow several <repository> and <group> arguments to be
|
||||
specified. No <refspec>s may be specified.
|
||||
|
||||
--[no-]auto-maintenance::
|
||||
--[no-]auto-gc::
|
||||
Run `git maintenance run --auto` at the end to perform automatic
|
||||
repository maintenance if needed. (`--[no-]auto-gc` is a synonym.)
|
||||
This is enabled by default.
|
||||
Run `git gc --auto` at the end to perform garbage collection
|
||||
if needed. This is enabled by default.
|
||||
|
||||
--[no-]write-commit-graph::
|
||||
Write a commit-graph after fetching. This overrides the config
|
||||
setting `fetch.writeCommitGraph`.
|
||||
endif::git-pull[]
|
||||
|
||||
-p::
|
||||
--prune::
|
||||
@ -117,7 +107,6 @@ endif::git-pull[]
|
||||
was cloned with the --mirror option), then they are also
|
||||
subject to pruning. Supplying `--prune-tags` is a shorthand for
|
||||
providing the tag refspec.
|
||||
ifndef::git-pull[]
|
||||
+
|
||||
See the PRUNING section below for more details.
|
||||
|
||||
@ -144,6 +133,7 @@ endif::git-pull[]
|
||||
behavior for a remote may be specified with the remote.<name>.tagOpt
|
||||
setting. See linkgit:git-config[1].
|
||||
|
||||
ifndef::git-pull[]
|
||||
--refmap=<refspec>::
|
||||
When fetching refs listed on the command line, use the
|
||||
specified refspec (can be given more than once) to map the
|
||||
@ -164,7 +154,6 @@ endif::git-pull[]
|
||||
is used (though tags may be pruned anyway if they are also the
|
||||
destination of an explicit refspec; see `--prune`).
|
||||
|
||||
ifndef::git-pull[]
|
||||
--recurse-submodules[=yes|on-demand|no]::
|
||||
This option controls if and under what conditions new commits of
|
||||
populated submodules should be fetched too. It can be used as a
|
||||
@ -174,9 +163,7 @@ ifndef::git-pull[]
|
||||
value. Use 'on-demand' to only recurse into a populated submodule
|
||||
when the superproject retrieves a commit that updates the submodule's
|
||||
reference to a commit that isn't already in the local submodule
|
||||
clone. By default, 'on-demand' is used, unless
|
||||
`fetch.recurseSubmodules` is set (see linkgit:git-config[1]).
|
||||
endif::git-pull[]
|
||||
clone.
|
||||
|
||||
-j::
|
||||
--jobs=<n>::
|
||||
@ -190,20 +177,17 @@ parallel. To control them independently, use the config settings
|
||||
Typically, parallel recursive and multi-remote fetches will be faster. By
|
||||
default fetches are performed sequentially, not in parallel.
|
||||
|
||||
ifndef::git-pull[]
|
||||
--no-recurse-submodules::
|
||||
Disable recursive fetching of submodules (this has the same effect as
|
||||
using the `--recurse-submodules=no` option).
|
||||
endif::git-pull[]
|
||||
|
||||
--set-upstream::
|
||||
If the remote is fetched successfully, add upstream
|
||||
If the remote is fetched successfully, pull and add upstream
|
||||
(tracking) reference, used by argument-less
|
||||
linkgit:git-pull[1] and other commands. For more information,
|
||||
see `branch.<name>.merge` and `branch.<name>.remote` in
|
||||
linkgit:git-config[1].
|
||||
|
||||
ifndef::git-pull[]
|
||||
--submodule-prefix=<path>::
|
||||
Prepend <path> to paths printed in informative messages
|
||||
such as "Fetching submodule foo". This option is used
|
||||
@ -216,6 +200,7 @@ ifndef::git-pull[]
|
||||
recursion (such as settings in linkgit:gitmodules[5] and
|
||||
linkgit:git-config[1]) override this option, as does
|
||||
specifying --[no-]recurse-submodules directly.
|
||||
endif::git-pull[]
|
||||
|
||||
-u::
|
||||
--update-head-ok::
|
||||
@ -225,7 +210,6 @@ ifndef::git-pull[]
|
||||
to communicate with 'git fetch', and unless you are
|
||||
implementing your own Porcelain you are not supposed to
|
||||
use it.
|
||||
endif::git-pull[]
|
||||
|
||||
--upload-pack <upload-pack>::
|
||||
When given, and the repository to fetch from is handled
|
||||
|
@ -16,7 +16,7 @@ SYNOPSIS
|
||||
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
||||
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
|
||||
[(<mbox> | <Maildir>)...]
|
||||
'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)])
|
||||
'git am' (--continue | --skip | --abort | --quit | --show-current-patch)
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -33,7 +33,7 @@ OPTIONS
|
||||
|
||||
-s::
|
||||
--signoff::
|
||||
Add a `Signed-off-by` trailer to the commit message, using
|
||||
Add a `Signed-off-by:` line to the commit message, using
|
||||
the committer identity of yourself.
|
||||
See the signoff option in linkgit:git-commit[1] for more information.
|
||||
|
||||
@ -148,12 +148,9 @@ default. You can use `--no-utf8` to override this.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
--no-gpg-sign::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
defaults to the committer identity; if specified, it must be
|
||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
||||
countermand both `commit.gpgSign` configuration variable, and
|
||||
earlier `--gpg-sign`.
|
||||
stuck to the option without a space.
|
||||
|
||||
--continue::
|
||||
-r::
|
||||
@ -179,11 +176,9 @@ default. You can use `--no-utf8` to override this.
|
||||
Abort the patching operation but keep HEAD and the index
|
||||
untouched.
|
||||
|
||||
--show-current-patch[=(diff|raw)]::
|
||||
Show the message at which `git am` has stopped due to
|
||||
conflicts. If `raw` is specified, show the raw contents of
|
||||
the e-mail message; if `diff`, show the diff portion only.
|
||||
Defaults to `raw`.
|
||||
--show-current-patch::
|
||||
Show the entire e-mail message "git am" has stopped at, because
|
||||
of conflicts.
|
||||
|
||||
DISCUSSION
|
||||
----------
|
||||
|
@ -61,18 +61,18 @@ OPTIONS
|
||||
file and detects errors. Turns off "apply".
|
||||
|
||||
--index::
|
||||
Apply the patch to both the index and the working tree (or
|
||||
merely check that it would apply cleanly to both if `--check` is
|
||||
in effect). Note that `--index` expects index entries and
|
||||
working tree copies for relevant paths to be identical (their
|
||||
contents and metadata such as file mode must match), and will
|
||||
raise an error if they are not, even if the patch would apply
|
||||
cleanly to both the index and the working tree in isolation.
|
||||
When `--check` is in effect, or when applying the patch
|
||||
(which is the default when none of the options that
|
||||
disables it is in effect), make sure the patch is
|
||||
applicable to what the current index file records. If
|
||||
the file to be patched in the working tree is not
|
||||
up to date, it is flagged as an error. This flag also
|
||||
causes the index file to be updated.
|
||||
|
||||
--cached::
|
||||
Apply the patch to just the index, without touching the working
|
||||
tree. If `--check` is in effect, merely check that it would
|
||||
apply cleanly to the index entry.
|
||||
Apply a patch without touching the working tree. Instead take the
|
||||
cached data, apply the patch, and store the result in the index
|
||||
without using the working tree. This implies `--index`.
|
||||
|
||||
--intent-to-add::
|
||||
When applying the patch only to the working tree, mark new
|
||||
|
@ -55,12 +55,6 @@ OPTIONS
|
||||
--output=<file>::
|
||||
Write the archive to <file> instead of stdout.
|
||||
|
||||
--add-file=<file>::
|
||||
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 for `--prefix` (if any) and the
|
||||
basename of <file>.
|
||||
|
||||
--worktree-attributes::
|
||||
Look for attributes in .gitattributes files in the working tree
|
||||
as well (see <<ATTRIBUTES>>).
|
||||
|
@ -473,7 +473,7 @@ Z-Z
|
||||
-------------
|
||||
|
||||
2) starting from the "good" ends of the graph, associate to each
|
||||
commit the number of ancestors it has plus one
|
||||
commit the number of ancestors it has plus one
|
||||
|
||||
For example with the following graph where H is the "bad" commit and A
|
||||
and D are some parents of some "good" commits:
|
||||
@ -514,7 +514,7 @@ D---E
|
||||
-------------
|
||||
|
||||
4) the best bisection point is the commit with the highest associated
|
||||
number
|
||||
number
|
||||
|
||||
So in the above example the best bisection point is commit C.
|
||||
|
||||
@ -580,8 +580,8 @@ good or a bad commit does not give more or less information).
|
||||
|
||||
Let's also suppose that we have a cleaned up graph like one after step
|
||||
1) in the bisection algorithm above. This means that we can measure
|
||||
the information we get in terms of number of commit we can remove
|
||||
from the graph..
|
||||
the information we get in terms of number of commit we can remove from
|
||||
the graph..
|
||||
|
||||
And let's take a commit X in the graph.
|
||||
|
||||
@ -689,18 +689,18 @@ roughly the following steps:
|
||||
6) sort the commit by decreasing associated value
|
||||
|
||||
7) if the first commit has not been skipped, we can return it and stop
|
||||
here
|
||||
here
|
||||
|
||||
8) otherwise filter out all the skipped commits in the sorted list
|
||||
|
||||
9) use a pseudo random number generator (PRNG) to generate a random
|
||||
number between 0 and 1
|
||||
number between 0 and 1
|
||||
|
||||
10) multiply this random number with its square root to bias it toward
|
||||
0
|
||||
0
|
||||
|
||||
11) multiply the result by the number of commits in the filtered list
|
||||
to get an index into this list
|
||||
to get an index into this list
|
||||
|
||||
12) return the commit at the computed index
|
||||
|
||||
|
@ -16,8 +16,8 @@ DESCRIPTION
|
||||
The command takes various subcommands, and different options depending
|
||||
on the subcommand:
|
||||
|
||||
git bisect start [--term-{new,bad}=<term> --term-{old,good}=<term>]
|
||||
[--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<paths>...]
|
||||
git bisect start [--term-{old,good}=<term> --term-{new,bad}=<term>]
|
||||
[--no-checkout] [<bad> [<good>...]] [--] [<paths>...]
|
||||
git bisect (bad|new|<term-new>) [<rev>]
|
||||
git bisect (good|old|<term-old>) [<rev>...]
|
||||
git bisect terms [--term-good | --term-bad]
|
||||
@ -365,17 +365,6 @@ does not require a checked out tree.
|
||||
+
|
||||
If the repository is bare, `--no-checkout` is assumed.
|
||||
|
||||
--first-parent::
|
||||
+
|
||||
Follow only the first parent commit upon seeing a merge commit.
|
||||
+
|
||||
In detecting regressions introduced through the merging of a branch, the merge
|
||||
commit will be identified as introduction of the bug and its ancestors will be
|
||||
ignored.
|
||||
+
|
||||
This option is particularly useful in avoiding false positives when a merged
|
||||
branch contained broken or non-buildable commits, but the merge itself was OK.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
|
@ -87,9 +87,7 @@ include::blame-options.txt[]
|
||||
|
||||
--abbrev=<n>::
|
||||
Instead of using the default 7+1 hexadecimal digits as the
|
||||
abbreviated object name, use <m>+1 digits, where <m> is at
|
||||
least <n> but ensures the commit object names are unique.
|
||||
Note that 1 column
|
||||
abbreviated object name, use <n>+1 digits. Note that 1 column
|
||||
is used for a caret to mark the boundary commit.
|
||||
|
||||
|
||||
|
@ -9,10 +9,10 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git branch' [--color[=<when>] | --no-color] [--show-current]
|
||||
[-v [--abbrev=<n> | --no-abbrev]]
|
||||
[-v [--abbrev=<length> | --no-abbrev]]
|
||||
[--column[=<options>] | --no-column] [--sort=<key>]
|
||||
[--merged [<commit>]] [--no-merged [<commit>]]
|
||||
[--contains [<commit>]] [--no-contains [<commit>]]
|
||||
[(--merged | --no-merged) [<commit>]]
|
||||
[--contains [<commit]] [--no-contains [<commit>]]
|
||||
[--points-at <object>] [--format=<format>]
|
||||
[(-r | --remotes) | (-a | --all)]
|
||||
[--list] [<pattern>...]
|
||||
@ -194,10 +194,8 @@ This option is only applicable in non-verbose mode.
|
||||
Be more quiet when creating or deleting a branch, suppressing
|
||||
non-error messages.
|
||||
|
||||
--abbrev=<n>::
|
||||
In the verbose listing that show the commit object name,
|
||||
show the shortest prefix that is at least '<n>' hexdigits
|
||||
long that uniquely refers the object.
|
||||
--abbrev=<length>::
|
||||
Alter the sha1's minimum display length in the output listing.
|
||||
The default value is 7 and can be overridden by the `core.abbrev`
|
||||
config option.
|
||||
|
||||
@ -254,11 +252,13 @@ start-point is either a local or remote-tracking branch.
|
||||
|
||||
--merged [<commit>]::
|
||||
Only list branches whose tips are reachable from the
|
||||
specified commit (HEAD if not specified). Implies `--list`.
|
||||
specified commit (HEAD if not specified). Implies `--list`,
|
||||
incompatible with `--no-merged`.
|
||||
|
||||
--no-merged [<commit>]::
|
||||
Only list branches whose tips are not reachable from the
|
||||
specified commit (HEAD if not specified). Implies `--list`.
|
||||
specified commit (HEAD if not specified). Implies `--list`,
|
||||
incompatible with `--merged`.
|
||||
|
||||
<branchname>::
|
||||
The name of the branch to create or delete.
|
||||
@ -370,8 +370,6 @@ serve four related but different purposes:
|
||||
- `--no-merged` is used to find branches which are candidates for merging
|
||||
into HEAD, since those branches are not fully contained by HEAD.
|
||||
|
||||
include::ref-reachability-filters.txt[]
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-check-ref-format[1],
|
||||
|
@ -1,54 +0,0 @@
|
||||
git-bugreport(1)
|
||||
================
|
||||
|
||||
NAME
|
||||
----
|
||||
git-bugreport - Collect information for user to file a bug report
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git bugreport' [(-o | --output-directory) <path>] [(-s | --suffix) <format>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Captures information about the user's machine, Git client, and repository state,
|
||||
as well as a form requesting information about the behavior the user observed,
|
||||
into a single text file which the user can then share, for example to the Git
|
||||
mailing list, in order to report an observed bug.
|
||||
|
||||
The following information is requested from the user:
|
||||
|
||||
- Reproduction steps
|
||||
- Expected behavior
|
||||
- Actual behavior
|
||||
|
||||
The following information is captured automatically:
|
||||
|
||||
- 'git version --build-options'
|
||||
- uname sysname, release, version, and machine strings
|
||||
- Compiler-specific info string
|
||||
- A list of enabled hooks
|
||||
- $SHELL
|
||||
|
||||
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
|
||||
is unreadable. In this kind of scenario, it may be helpful to manually gather
|
||||
the kind of information listed above when manually asking for help.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-o <path>::
|
||||
--output-directory <path>::
|
||||
Place the resulting bug report file in `<path>` instead of the root of
|
||||
the Git repository.
|
||||
|
||||
-s <format>::
|
||||
--suffix <format>::
|
||||
Specify an alternate suffix for the bugreport name, to create a file
|
||||
named 'git-bugreport-<formatted suffix>'. This should take the form of a
|
||||
strftime(3) format string; the current local time will be used.
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the linkgit:git[1] suite
|
@ -9,8 +9,7 @@ git-bundle - Move objects and refs by archive
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git bundle' create [-q | --quiet | --progress | --all-progress] [--all-progress-implied]
|
||||
[--version=<version>] <file> <git-rev-list-args>
|
||||
'git bundle' create [-q | --quiet | --progress | --all-progress] [--all-progress-implied] <file> <git-rev-list-args>
|
||||
'git bundle' verify [-q | --quiet] <file>
|
||||
'git bundle' list-heads <file> [<refname>...]
|
||||
'git bundle' unbundle <file> [<refname>...]
|
||||
@ -103,12 +102,6 @@ unbundle <file>::
|
||||
is activated. Unlike --all-progress this flag doesn't actually
|
||||
force any progress display by itself.
|
||||
|
||||
--version=<version>::
|
||||
Specify the bundle version. Version 2 is the older format and can only be
|
||||
used with SHA-1 repositories; the newer version 3 contains capabilities that
|
||||
permit extensions. The default is the oldest supported format, based on the
|
||||
hash algorithm in use.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
This flag makes the command not to report its progress
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git cat-file' (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <type> | --textconv | --filters ) [--path=<path>] <object>
|
||||
'git cat-file' (--batch[=<format>] | --batch-check[=<format>]) [ --textconv | --filters ] [--follow-symlinks]
|
||||
'git cat-file' (--batch | --batch-check) [ --textconv | --filters ] [--follow-symlinks]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
@ -192,16 +192,12 @@ branches from there if `<branch>` is ambiguous but exists on the
|
||||
'origin' remote. See also `checkout.defaultRemote` in
|
||||
linkgit:git-config[1].
|
||||
+
|
||||
`--guess` is the default behavior. Use `--no-guess` to disable it.
|
||||
+
|
||||
The default behavior can be set via the `checkout.guess` configuration
|
||||
variable.
|
||||
Use `--no-guess` to disable this.
|
||||
|
||||
-l::
|
||||
Create the new branch's reflog; see linkgit:git-branch[1] for
|
||||
details.
|
||||
|
||||
-d::
|
||||
--detach::
|
||||
Rather than checking out a branch to work on it, check out a
|
||||
commit for inspection and discardable experiments.
|
||||
@ -296,11 +292,11 @@ Note that this option uses the no overlay mode by default (see also
|
||||
|
||||
--recurse-submodules::
|
||||
--no-recurse-submodules::
|
||||
Using `--recurse-submodules` will update the content of all active
|
||||
Using `--recurse-submodules` will update the content of all initialized
|
||||
submodules according to the commit recorded in the superproject. If
|
||||
local modifications in a submodule would be overwritten the checkout
|
||||
will fail unless `-f` is used. If nothing (or `--no-recurse-submodules`)
|
||||
is used, submodules working trees will not be updated.
|
||||
is used, the work trees of submodules will not be updated.
|
||||
Just like linkgit:git-submodule[1], this will detach `HEAD` of the
|
||||
submodule.
|
||||
|
||||
@ -354,10 +350,6 @@ leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
<tree-ish>::
|
||||
Tree to checkout from (when paths are given). If not specified,
|
||||
the index will be used.
|
||||
+
|
||||
As a special case, you may use `"A...B"` as a shortcut for the
|
||||
merge base of `A` and `B` if there is exactly one merge base. You can
|
||||
leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
|
||||
\--::
|
||||
Do not interpret any more arguments as options.
|
||||
|
@ -104,17 +104,14 @@ effect to your index in a row.
|
||||
|
||||
-s::
|
||||
--signoff::
|
||||
Add a `Signed-off-by` trailer at the end of the commit message.
|
||||
Add Signed-off-by line at the end of the commit message.
|
||||
See the signoff option in linkgit:git-commit[1] for more information.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
--no-gpg-sign::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
defaults to the committer identity; if specified, it must be
|
||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
||||
countermand both `commit.gpgSign` configuration variable, and
|
||||
earlier `--gpg-sign`.
|
||||
stuck to the option without a space.
|
||||
|
||||
--ff::
|
||||
If the current HEAD is the same as the parent of the
|
||||
|
@ -15,8 +15,7 @@ SYNOPSIS
|
||||
[--dissociate] [--separate-git-dir <git dir>]
|
||||
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
||||
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
||||
[--[no-]remote-submodules] [--jobs <n>] [--sparse]
|
||||
[--filter=<filter>] [--] <repository>
|
||||
[--[no-]remote-submodules] [--jobs <n>] [--sparse] [--] <repository>
|
||||
[<directory>]
|
||||
|
||||
DESCRIPTION
|
||||
@ -78,9 +77,9 @@ repository using this option and then delete branches (or use any
|
||||
other Git command that makes any existing commit unreferenced) in the
|
||||
source repository, some objects may become unreferenced (or dangling).
|
||||
These objects may be removed by normal Git operations (such as `git commit`)
|
||||
which automatically call `git maintenance run --auto`. (See
|
||||
linkgit:git-maintenance[1].) If these objects are removed and were referenced
|
||||
by the cloned repository, then the cloned repository will become corrupt.
|
||||
which automatically call `git gc --auto`. (See linkgit:git-gc[1].)
|
||||
If these objects are removed and were referenced by the cloned repository,
|
||||
then the cloned repository will become corrupt.
|
||||
+
|
||||
Note that running `git repack` without the `--local` option in a repository
|
||||
cloned with `--shared` will copy objects from the source repository into a pack
|
||||
@ -163,16 +162,6 @@ objects from the source repository into a pack in the cloned repository.
|
||||
of the repository. The sparse-checkout file can be
|
||||
modified to grow the working directory as needed.
|
||||
|
||||
--filter=<filter-spec>::
|
||||
Use the partial clone feature and request that the server sends
|
||||
a subset of reachable objects according to a given object filter.
|
||||
When using `--filter`, the supplied `<filter-spec>` is used for
|
||||
the partial clone filter. For example, `--filter=blob:none` will
|
||||
filter out all blobs (file contents) until needed by Git. Also,
|
||||
`--filter=blob:limit=<size>` will filter out all blobs of size
|
||||
at least `<size>`. For more details on filter specifications, see
|
||||
the `--filter` option in linkgit:git-rev-list[1].
|
||||
|
||||
--mirror::
|
||||
Set up a mirror of the source repository. This implies `--bare`.
|
||||
Compared to `--bare`, `--mirror` not only maps local branches of the
|
||||
@ -183,9 +172,8 @@ objects from the source repository into a pack in the cloned repository.
|
||||
|
||||
-o <name>::
|
||||
--origin <name>::
|
||||
Instead of using the remote name `origin` to keep track of the upstream
|
||||
repository, use `<name>`. Overrides `clone.defaultRemoteName` from the
|
||||
config.
|
||||
Instead of using the remote name `origin` to keep track
|
||||
of the upstream repository, use `<name>`.
|
||||
|
||||
-b <name>::
|
||||
--branch <name>::
|
||||
@ -260,7 +248,7 @@ maintain a branch with no references other than a single cloned
|
||||
branch. This is useful e.g. to maintain minimal clones of the default
|
||||
branch of some repository for search indexing.
|
||||
|
||||
--recurse-submodules[=<pathspec>]::
|
||||
--recurse-submodules[=<pathspec]::
|
||||
After the clone is created, initialize and clone submodules
|
||||
within based on the provided pathspec. If no pathspec is
|
||||
provided, all submodules are initialized and cloned.
|
||||
|
@ -26,10 +26,7 @@ OPTIONS
|
||||
file. This parameter exists to specify the location of an alternate
|
||||
that only has the objects directory, not a full `.git` directory. The
|
||||
commit-graph file is expected to be in the `<dir>/info` directory and
|
||||
the packfiles are expected to be in `<dir>/pack`. If the directory
|
||||
could not be made into an absolute path, or does not match any known
|
||||
object directory, `git commit-graph ...` will exit with non-zero
|
||||
status.
|
||||
the packfiles are expected to be in `<dir>/pack`.
|
||||
|
||||
--[no-]progress::
|
||||
Turn progress on/off explicitly. If neither is specified, progress is
|
||||
@ -39,9 +36,7 @@ COMMANDS
|
||||
--------
|
||||
'write'::
|
||||
|
||||
Write a commit-graph file based on the commits found in packfiles. If
|
||||
the config option `core.commitGraph` is disabled, then this command will
|
||||
output a warning, then return success without writing a commit-graph file.
|
||||
Write a commit-graph file based on the commits found in packfiles.
|
||||
+
|
||||
With the `--stdin-packs` option, generate the new commit graph by
|
||||
walking objects only in the specified pack-indexes. (Cannot be combined
|
||||
@ -49,10 +44,8 @@ with `--stdin-commits` or `--reachable`.)
|
||||
+
|
||||
With the `--stdin-commits` option, generate the new commit graph by
|
||||
walking commits starting at the commits specified in stdin as a list
|
||||
of OIDs in hex, one OID per line. OIDs that resolve to non-commits
|
||||
(either directly, or by peeling tags) are silently ignored. OIDs that
|
||||
are malformed, or do not exist generate an error. (Cannot be combined
|
||||
with `--stdin-packs` or `--reachable`.)
|
||||
of OIDs in hex, one OID per line. (Cannot be combined with
|
||||
`--stdin-packs` or `--reachable`.)
|
||||
+
|
||||
With the `--reachable` option, generate the new commit graph by walking
|
||||
commits starting at all refs. (Cannot be combined with `--stdin-commits`
|
||||
@ -61,34 +54,11 @@ or `--stdin-packs`.)
|
||||
With the `--append` option, include all commits that are present in the
|
||||
existing commit-graph file.
|
||||
+
|
||||
With the `--changed-paths` option, compute and write information about the
|
||||
paths changed between a commit and its first parent. This operation can
|
||||
take a while on large repositories. It provides significant performance gains
|
||||
for getting history of a directory or a file with `git log -- <path>`. If
|
||||
this option is given, future commit-graph writes will automatically assume
|
||||
that this option was intended. Use `--no-changed-paths` to stop storing this
|
||||
data.
|
||||
+
|
||||
With the `--max-new-filters=<n>` option, generate at most `n` new Bloom
|
||||
filters (if `--changed-paths` is specified). If `n` is `-1`, no limit is
|
||||
enforced. Only commits present in the new layer count against this
|
||||
limit. To retroactively compute Bloom filters over earlier layers, it is
|
||||
advised to use `--split=replace`. Overrides the `commitGraph.maxNewFilters`
|
||||
configuration.
|
||||
+
|
||||
With the `--split[=<strategy>]` option, write the commit-graph as a
|
||||
chain of multiple commit-graph files stored in
|
||||
`<dir>/info/commit-graphs`. Commit-graph layers are merged based on the
|
||||
strategy and other splitting options. The new commits not already in the
|
||||
commit-graph are added in a new "tip" file. This file is merged with the
|
||||
existing file if the following merge conditions are met:
|
||||
+
|
||||
* If `--split=no-merge` is specified, a merge is never performed, and
|
||||
the remaining options are ignored. `--split=replace` overwrites the
|
||||
existing chain with a new one. A bare `--split` defers to the remaining
|
||||
options. (Note that merging a chain of commit graphs replaces the
|
||||
existing chain with a length-1 chain where the first and only
|
||||
incremental holds the entire graph).
|
||||
With the `--split` option, write the commit-graph as a chain of multiple
|
||||
commit-graph files stored in `<dir>/info/commit-graphs`. The new commits
|
||||
not already in the commit-graph are added in a new "tip" file. This file
|
||||
is merged with the existing file if the following merge conditions are
|
||||
met:
|
||||
+
|
||||
* If `--size-multiple=<X>` is not specified, let `X` equal 2. If the new
|
||||
tip file would have `N` commits and the previous tip has `M` commits and
|
||||
|
@ -61,11 +61,13 @@ OPTIONS
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
--no-gpg-sign::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
defaults to the committer identity; if specified, it must be
|
||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
||||
countermand a `--gpg-sign` option given earlier on the command line.
|
||||
stuck to the option without a space.
|
||||
|
||||
--no-gpg-sign::
|
||||
Do not GPG-sign commit, to countermand a `--gpg-sign` option
|
||||
given earlier on the command line.
|
||||
|
||||
Commit Information
|
||||
------------------
|
||||
|
@ -59,7 +59,6 @@ commit by giving the same set of parameters (options and paths).
|
||||
If you make a commit and then find a mistake immediately after
|
||||
that, you can recover from it with 'git reset'.
|
||||
|
||||
:git-commit: 1
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -164,7 +163,14 @@ The `-m` option is mutually exclusive with `-c`, `-C`, and `-F`.
|
||||
message, the commit is aborted. This has no effect when a message
|
||||
is given by other means, e.g. with the `-m` or `-F` options.
|
||||
|
||||
include::signoff-option.txt[]
|
||||
-s::
|
||||
--signoff::
|
||||
Add Signed-off-by line by the committer at the end of the commit
|
||||
log message. The meaning of a signoff depends on the project,
|
||||
but it typically certifies that committer has
|
||||
the rights to submit this work under the same license and
|
||||
agrees to a Developer Certificate of Origin
|
||||
(see http://developercertificate.org/ for more information).
|
||||
|
||||
-n::
|
||||
--no-verify::
|
||||
@ -342,12 +348,13 @@ changes to tracked files.
|
||||
|
||||
-S[<keyid>]::
|
||||
--gpg-sign[=<keyid>]::
|
||||
--no-gpg-sign::
|
||||
GPG-sign commits. The `keyid` argument is optional and
|
||||
defaults to the committer identity; if specified, it must be
|
||||
stuck to the option without a space. `--no-gpg-sign` is useful to
|
||||
countermand both `commit.gpgSign` configuration variable, and
|
||||
earlier `--gpg-sign`.
|
||||
stuck to the option without a space.
|
||||
|
||||
--no-gpg-sign::
|
||||
Countermand `commit.gpgSign` configuration variable that is
|
||||
set to force each and every commit to be signed.
|
||||
|
||||
\--::
|
||||
Do not interpret any more arguments as options.
|
||||
|
@ -9,18 +9,18 @@ git-config - Get and set repository or global options
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git config' [<file-option>] [--type=<type>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] name [value [value-pattern]]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] name [value [value_regex]]
|
||||
'git config' [<file-option>] [--type=<type>] --add name value
|
||||
'git config' [<file-option>] [--type=<type>] [--fixed-value] --replace-all name value [value-pattern]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get name [value-pattern]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get-all name [value-pattern]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] [--name-only] --get-regexp name_regex [value-pattern]
|
||||
'git config' [<file-option>] [--type=<type>] --replace-all name value [value_regex]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get name [value_regex]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get-all name [value_regex]
|
||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
|
||||
'git config' [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
|
||||
'git config' [<file-option>] [--fixed-value] --unset name [value-pattern]
|
||||
'git config' [<file-option>] [--fixed-value] --unset-all name [value-pattern]
|
||||
'git config' [<file-option>] --unset name [value_regex]
|
||||
'git config' [<file-option>] --unset-all name [value_regex]
|
||||
'git config' [<file-option>] --rename-section old_name new_name
|
||||
'git config' [<file-option>] --remove-section name
|
||||
'git config' [<file-option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list
|
||||
'git config' [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
|
||||
'git config' [<file-option>] --get-color name [default]
|
||||
'git config' [<file-option>] --get-colorbool name [stdout-is-tty]
|
||||
'git config' [<file-option>] -e | --edit
|
||||
@ -33,13 +33,10 @@ escaped.
|
||||
|
||||
Multiple lines can be added to an option by using the `--add` option.
|
||||
If you want to update or unset an option which can occur on multiple
|
||||
lines, a `value-pattern` (which is an extended regular expression,
|
||||
unless the `--fixed-value` option is given) needs to be given. Only the
|
||||
existing values that match the pattern are updated or unset. If
|
||||
you want to handle the lines that do *not* match the pattern, just
|
||||
prepend a single exclamation mark in front (see also <<EXAMPLES>>),
|
||||
but note that this only works when the `--fixed-value` option is not
|
||||
in use.
|
||||
lines, a POSIX regexp `value_regex` needs to be given. Only the
|
||||
existing values that match the regexp are updated or unset. If
|
||||
you want to handle the lines that do *not* match the regex, just
|
||||
prepend a single exclamation mark in front (see also <<EXAMPLES>>).
|
||||
|
||||
The `--type=<type>` option instructs 'git config' to ensure that incoming and
|
||||
outgoing values are canonicalize-able under the given <type>. If no
|
||||
@ -76,11 +73,11 @@ OPTIONS
|
||||
|
||||
--replace-all::
|
||||
Default behavior is to replace at most one line. This replaces
|
||||
all lines matching the key (and optionally the `value-pattern`).
|
||||
all lines matching the key (and optionally the value_regex).
|
||||
|
||||
--add::
|
||||
Adds a new line to the option without altering any existing
|
||||
values. This is the same as providing '^$' as the `value-pattern`
|
||||
values. This is the same as providing '^$' as the value_regex
|
||||
in `--replace-all`.
|
||||
|
||||
--get::
|
||||
@ -168,12 +165,6 @@ See also <<FILES>>.
|
||||
--list::
|
||||
List all variables set in config file, along with their values.
|
||||
|
||||
--fixed-value::
|
||||
When used with the `value-pattern` argument, treat `value-pattern` as
|
||||
an exact string instead of a regular expression. This will restrict
|
||||
the name/value pairs that are matched to only those where the value
|
||||
is exactly equal to the `value-pattern`.
|
||||
|
||||
--type <type>::
|
||||
'git config' will ensure that any input or output is valid under the given
|
||||
type constraint(s), and will canonicalize outgoing values in `<type>`'s
|
||||
@ -231,11 +222,6 @@ Valid `<type>`'s include:
|
||||
the actual origin (config file path, ref, or blob id if
|
||||
applicable).
|
||||
|
||||
--show-scope::
|
||||
Similar to `--show-origin` in that it augments the output of
|
||||
all queried config options with the scope of that value
|
||||
(local, global, system, command).
|
||||
|
||||
--get-colorbool name [stdout-is-tty]::
|
||||
|
||||
Find the color setting for `name` (e.g. `color.diff`) and output
|
||||
|
@ -94,10 +94,6 @@ stored on its own line as a URL like:
|
||||
https://user:pass@example.com
|
||||
------------------------------
|
||||
|
||||
No other kinds of lines (e.g. empty lines or comment lines) are
|
||||
allowed in the file, even though some may be silently ignored. Do
|
||||
not view or edit the file with editors.
|
||||
|
||||
When Git needs authentication for a particular URL context,
|
||||
credential-store will consider that context a pattern to match against
|
||||
each entry in the credentials file. If the protocol, hostname, and
|
||||
|
@ -103,20 +103,17 @@ INPUT/OUTPUT FORMAT
|
||||
`git credential` reads and/or writes (depending on the action used)
|
||||
credential information in its standard input/output. This information
|
||||
can correspond either to keys for which `git credential` will obtain
|
||||
the login information (e.g. host, protocol, path), or to the actual
|
||||
credential data to be obtained (username/password).
|
||||
the login/password information (e.g. host, protocol, path), or to the
|
||||
actual credential data to be obtained (login/password).
|
||||
|
||||
The credential is split into a set of named attributes, with one
|
||||
attribute per line. Each attribute is specified by a key-value pair,
|
||||
separated by an `=` (equals) sign, followed by a newline.
|
||||
|
||||
The key may contain any bytes except `=`, newline, or NUL. The value may
|
||||
contain any bytes except newline or NUL.
|
||||
|
||||
attribute per line. Each attribute is
|
||||
specified by a key-value pair, separated by an `=` (equals) sign,
|
||||
followed by a newline. The key may contain any bytes except `=`,
|
||||
newline, or NUL. The value may contain any bytes except newline or NUL.
|
||||
In both cases, all bytes are treated as-is (i.e., there is no quoting,
|
||||
and one cannot transmit a value with newline or NUL in it). The list of
|
||||
attributes is terminated by a blank line or end-of-file.
|
||||
|
||||
Git understands the following attributes:
|
||||
|
||||
`protocol`::
|
||||
@ -126,8 +123,7 @@ Git understands the following attributes:
|
||||
|
||||
`host`::
|
||||
|
||||
The remote hostname for a network credential. This includes
|
||||
the port number if one was specified (e.g., "example.com:8088").
|
||||
The remote hostname for a network credential.
|
||||
|
||||
`path`::
|
||||
|
||||
@ -138,7 +134,7 @@ Git understands the following attributes:
|
||||
`username`::
|
||||
|
||||
The credential's username, if we already have one (e.g., from a
|
||||
URL, the configuration, the user, or from a previously run helper).
|
||||
URL, from the user, or from a previously run helper).
|
||||
|
||||
`password`::
|
||||
|
||||
@ -150,12 +146,8 @@ Git understands the following attributes:
|
||||
value is parsed as a URL and treated as if its constituent parts
|
||||
were read (e.g., `url=https://example.com` would behave as if
|
||||
`protocol=https` and `host=example.com` had been provided). This
|
||||
can help callers avoid parsing URLs themselves.
|
||||
+
|
||||
Note that specifying a protocol is mandatory and if the URL
|
||||
doesn't specify a hostname (e.g., "cert:///path/to/file") the
|
||||
credential will contain a hostname attribute whose value is an
|
||||
empty string.
|
||||
+
|
||||
Components which are missing from the URL (e.g., there is no
|
||||
username in the example above) will be left unset.
|
||||
can help callers avoid parsing URLs themselves. Note that any
|
||||
components which are missing from the URL (e.g., there is no
|
||||
username in the example above) will be set to empty; if you want
|
||||
to provide a URL and override some attributes, provide the URL
|
||||
attribute first, followed by any overrides.
|
||||
|
@ -9,7 +9,7 @@ git-diff-index - Compare a tree to the working tree or index
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git diff-index' [-m] [--cached] [--merge-base] [<common diff options>] <tree-ish> [<path>...]
|
||||
'git diff-index' [-m] [--cached] [<common diff options>] <tree-ish> [<path>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -27,12 +27,7 @@ include::diff-options.txt[]
|
||||
The id of a tree object to diff against.
|
||||
|
||||
--cached::
|
||||
Do not consider the on-disk file at all.
|
||||
|
||||
--merge-base::
|
||||
Instead of comparing <tree-ish> directly, use the merge base
|
||||
between <tree-ish> and HEAD instead. <tree-ish> must be a
|
||||
commit.
|
||||
do not consider the on-disk file at all
|
||||
|
||||
-m::
|
||||
By default, files recorded in the index but not checked
|
||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
|
||||
[-t] [-r] [-c | --cc] [--combined-all-paths] [--root] [--merge-base]
|
||||
[-t] [-r] [-c | --cc] [--combined-all-paths] [--root]
|
||||
[<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
|
||||
|
||||
DESCRIPTION
|
||||
@ -43,11 +43,6 @@ include::diff-options.txt[]
|
||||
When `--root` is specified the initial commit will be shown as a big
|
||||
creation event. This is equivalent to a diff against the NULL tree.
|
||||
|
||||
--merge-base::
|
||||
Instead of comparing the <tree-ish>s directly, use the merge
|
||||
base between the two <tree-ish>s as the "before" side. There
|
||||
must be two <tree-ish>s given and they must both be commits.
|
||||
|
||||
--stdin::
|
||||
When `--stdin` is specified, the command does not take
|
||||
<tree-ish> arguments from the command line. Instead, it
|
||||
|
@ -10,18 +10,16 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git diff' [<options>] [<commit>] [--] [<path>...]
|
||||
'git diff' [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]
|
||||
'git diff' [<options>] [--merge-base] <commit> [<commit>...] <commit> [--] [<path>...]
|
||||
'git diff' [<options>] <commit>...<commit> [--] [<path>...]
|
||||
'git diff' [<options>] --cached [<commit>] [--] [<path>...]
|
||||
'git diff' [<options>] <commit> <commit> [--] [<path>...]
|
||||
'git diff' [<options>] <blob> <blob>
|
||||
'git diff' [<options>] --no-index [--] <path> <path>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Show changes between the working tree and the index or a tree, changes
|
||||
between the index and a tree, changes between two trees, changes resulting
|
||||
from a merge, changes between two blob objects, or changes between two
|
||||
files on disk.
|
||||
between the index and a tree, changes between two trees, changes between
|
||||
two blob objects, or changes between two files on disk.
|
||||
|
||||
'git diff' [<options>] [--] [<path>...]::
|
||||
|
||||
@ -40,7 +38,7 @@ files on disk.
|
||||
or when running the command outside a working tree
|
||||
controlled by Git. This form implies `--exit-code`.
|
||||
|
||||
'git diff' [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]::
|
||||
'git diff' [<options>] --cached [<commit>] [--] [<path>...]::
|
||||
|
||||
This form is to view the changes you staged for the next
|
||||
commit relative to the named <commit>. Typically you
|
||||
@ -49,10 +47,6 @@ files on disk.
|
||||
If HEAD does not exist (e.g. unborn branches) and
|
||||
<commit> is not given, it shows all staged changes.
|
||||
--staged is a synonym of --cached.
|
||||
+
|
||||
If --merge-base is given, instead of using <commit>, use the merge base
|
||||
of <commit> and HEAD. `git diff --merge-base A` is equivalent to
|
||||
`git diff $(git merge-base A HEAD)`.
|
||||
|
||||
'git diff' [<options>] <commit> [--] [<path>...]::
|
||||
|
||||
@ -62,28 +56,14 @@ of <commit> and HEAD. `git diff --merge-base A` is equivalent to
|
||||
branch name to compare with the tip of a different
|
||||
branch.
|
||||
|
||||
'git diff' [<options>] [--merge-base] <commit> <commit> [--] [<path>...]::
|
||||
'git diff' [<options>] <commit> <commit> [--] [<path>...]::
|
||||
|
||||
This is to view the changes between two arbitrary
|
||||
<commit>.
|
||||
+
|
||||
If --merge-base is given, use the merge base of the two commits for the
|
||||
"before" side. `git diff --merge-base A B` is equivalent to
|
||||
`git diff $(git merge-base A B) B`.
|
||||
|
||||
'git diff' [<options>] <commit> <commit>... <commit> [--] [<path>...]::
|
||||
|
||||
This form is to view the results of a merge commit. The first
|
||||
listed <commit> must be the merge itself; the remaining two or
|
||||
more commits should be its parents. A convenient way to produce
|
||||
the desired set of revisions is to use the `^@` suffix.
|
||||
For instance, if `master` names a merge commit, `git diff master
|
||||
master^@` gives the same combined diff as `git show master`.
|
||||
|
||||
'git diff' [<options>] <commit>..<commit> [--] [<path>...]::
|
||||
|
||||
This is synonymous to the earlier form (without the `..`) for
|
||||
viewing the changes between two arbitrary <commit>. If <commit> on
|
||||
This is synonymous to the previous form. If <commit> on
|
||||
one side is omitted, it will have the same effect as
|
||||
using HEAD instead.
|
||||
|
||||
@ -91,20 +71,20 @@ If --merge-base is given, use the merge base of the two commits for the
|
||||
|
||||
This form is to view the changes on the branch containing
|
||||
and up to the second <commit>, starting at a common ancestor
|
||||
of both <commit>. `git diff A...B` is equivalent to
|
||||
`git diff $(git merge-base A B) B`. You can omit any one
|
||||
of both <commit>. "git diff A\...B" is equivalent to
|
||||
"git diff $(git merge-base A B) B". You can omit any one
|
||||
of <commit>, which has the same effect as using HEAD instead.
|
||||
|
||||
Just in case you are doing something exotic, it should be
|
||||
noted that all of the <commit> in the above description, except
|
||||
in the `--merge-base` case and in the last two forms that use `..`
|
||||
notations, can be any <tree>.
|
||||
in the last two forms that use ".." notations, can be any
|
||||
<tree>.
|
||||
|
||||
For a more complete list of ways to spell <commit>, see
|
||||
"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
|
||||
However, "diff" is about comparing two _endpoints_, not ranges,
|
||||
and the range notations (`<commit>..<commit>` and
|
||||
`<commit>...<commit>`) do not mean a range as defined in the
|
||||
and the range notations ("<commit>..<commit>" and
|
||||
"<commit>\...<commit>") do not mean a range as defined in the
|
||||
"SPECIFYING RANGES" section in linkgit:gitrevisions[7].
|
||||
|
||||
'git diff' [<options>] <blob> <blob>::
|
||||
@ -152,9 +132,9 @@ $ git diff HEAD <3>
|
||||
+
|
||||
<1> Changes in the working tree not yet staged for the next commit.
|
||||
<2> Changes between the index and your last commit; what you
|
||||
would be committing if you run `git commit` without `-a` option.
|
||||
would be committing if you run "git commit" without "-a" option.
|
||||
<3> Changes in the working tree since your last commit; what you
|
||||
would be committing if you run `git commit -a`
|
||||
would be committing if you run "git commit -a"
|
||||
|
||||
Comparing with arbitrary commits::
|
||||
+
|
||||
@ -216,8 +196,7 @@ linkgit:git-difftool[1],
|
||||
linkgit:git-log[1],
|
||||
linkgit:gitdiffcore[7],
|
||||
linkgit:git-format-patch[1],
|
||||
linkgit:git-apply[1],
|
||||
linkgit:git-show[1]
|
||||
linkgit:git-apply[1]
|
||||
|
||||
GIT
|
||||
---
|
||||
|
@ -119,11 +119,6 @@ by keeping the marks the same across runs.
|
||||
the shape of the history and stored tree. See the section on
|
||||
`ANONYMIZING` below.
|
||||
|
||||
--anonymize-map=<from>[:<to>]::
|
||||
Convert token `<from>` to `<to>` in the anonymized output. If
|
||||
`<to>` is omitted, map `<from>` to itself (i.e., do not
|
||||
anonymize it). See the section on `ANONYMIZING` below.
|
||||
|
||||
--reference-excluded-parents::
|
||||
By default, running a command such as `git fast-export
|
||||
master~5..master` will not include the commit master{tilde}5
|
||||
@ -243,30 +238,6 @@ collapse "User 0", "User 1", etc into "User X"). This produces a much
|
||||
smaller output, and it is usually easy to quickly confirm that there is
|
||||
no private data in the stream.
|
||||
|
||||
Reproducing some bugs may require referencing particular commits or
|
||||
paths, which becomes challenging after refnames and paths have been
|
||||
anonymized. You can ask for a particular token to be left as-is or
|
||||
mapped to a new value. For example, if you have a bug which reproduces
|
||||
with `git rev-list sensitive -- secret.c`, you can run:
|
||||
|
||||
---------------------------------------------------
|
||||
$ git fast-export --anonymize --all \
|
||||
--anonymize-map=sensitive:foo \
|
||||
--anonymize-map=secret.c:bar.c \
|
||||
>stream
|
||||
---------------------------------------------------
|
||||
|
||||
After importing the stream, you can then run `git rev-list foo -- bar.c`
|
||||
in the anonymized repository.
|
||||
|
||||
Note that paths and refnames are split into tokens at slash boundaries.
|
||||
The command above would anonymize `subdir/secret.c` as something like
|
||||
`path123/bar.c`; you could then search for `bar.c` in the anonymized
|
||||
repository to determine the final pathname.
|
||||
|
||||
To make referencing the final pathname simpler, you can map each path
|
||||
component; so if you also anonymize `subdir` to `publicdir`, then the
|
||||
final pathname would be `publicdir/bar.c`.
|
||||
|
||||
LIMITATIONS
|
||||
-----------
|
||||
|
@ -122,26 +122,6 @@ Locations of Marks Files
|
||||
Relative and non-relative marks may be combined by interweaving
|
||||
--(no-)-relative-marks with the --(import|export)-marks= options.
|
||||
|
||||
Submodule Rewriting
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
--rewrite-submodules-from=<name>:<file>::
|
||||
--rewrite-submodules-to=<name>:<file>::
|
||||
Rewrite the object IDs for the submodule specified by <name> from the values
|
||||
used in the from <file> to those used in the to <file>. The from marks should
|
||||
have been created by `git fast-export`, and the to marks should have been
|
||||
created by `git fast-import` when importing that same submodule.
|
||||
+
|
||||
<name> may be any arbitrary string not containing a colon character, but the
|
||||
same value must be used with both options when specifying corresponding marks.
|
||||
Multiple submodules may be specified with different values for <name>. It is an
|
||||
error not to use these options in corresponding pairs.
|
||||
+
|
||||
These options are primarily useful when converting a repository from one hash
|
||||
algorithm to another; without them, fast-import will fail if it encounters a
|
||||
submodule because it has no way of writing the object ID into the new hash
|
||||
algorithm.
|
||||
|
||||
Performance and Compression Tuning
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -293,14 +273,7 @@ by users who are located in the same location and time zone. In this
|
||||
case a reasonable offset from UTC could be assumed.
|
||||
+
|
||||
Unlike the `rfc2822` format, this format is very strict. Any
|
||||
variation in formatting will cause fast-import to reject the value,
|
||||
and some sanity checks on the numeric values may also be performed.
|
||||
|
||||
`raw-permissive`::
|
||||
This is the same as `raw` except that no sanity checks on
|
||||
the numeric epoch and local offset are performed. This can
|
||||
be useful when trying to filter or import an existing history
|
||||
with e.g. bogus timezone values.
|
||||
variation in formatting will cause fast-import to reject the value.
|
||||
|
||||
`rfc2822`::
|
||||
This is the standard email format as described by RFC 2822.
|
||||
@ -814,7 +787,7 @@ may have uses for this information
|
||||
'original-oid' SP <object-identifier> LF
|
||||
....
|
||||
|
||||
where `<object-identifier>` is any string not containing LF.
|
||||
where `<object-identifer>` is any string not containing LF.
|
||||
|
||||
`tag`
|
||||
~~~~~
|
||||
|
@ -48,10 +48,6 @@ include::fetch-options.txt[]
|
||||
|
||||
include::pull-fetch-param.txt[]
|
||||
|
||||
--stdin::
|
||||
Read refspecs, one per line, from stdin in addition to those provided
|
||||
as arguments. The "tag <name>" format is not supported.
|
||||
|
||||
include::urls-remotes.txt[]
|
||||
|
||||
|
||||
@ -259,14 +255,14 @@ refspec.
|
||||
* Using refspecs explicitly:
|
||||
+
|
||||
------------------------------------------------
|
||||
$ git fetch origin +seen:seen maint:tmp
|
||||
$ git fetch origin +pu:pu maint:tmp
|
||||
------------------------------------------------
|
||||
+
|
||||
This updates (or creates, as necessary) branches `seen` and `tmp` in
|
||||
This updates (or creates, as necessary) branches `pu` and `tmp` in
|
||||
the local repository by fetching from the branches (respectively)
|
||||
`seen` and `maint` from the remote repository.
|
||||
`pu` and `maint` from the remote repository.
|
||||
+
|
||||
The `seen` branch will be updated even if it does not fast-forward,
|
||||
The `pu` branch will be updated even if it does not fast-forward,
|
||||
because it is prefixed with a plus sign; `tmp` will not be.
|
||||
|
||||
* Peek at a remote's branch, without configuring the remote in your local
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user