Compare commits
124 Commits
Author | SHA1 | Date | |
---|---|---|---|
7166c9eae1 | |||
f22be25060 | |||
25996c092c | |||
e84603bd0c | |||
5209d08a4d | |||
3173f6490a | |||
1829cd5985 | |||
bd49832fae | |||
9517364e4a | |||
97ed3c6dfe | |||
b7bb32f95b | |||
e985254f0f | |||
73eba66823 | |||
328a7c363a | |||
c96ce9b3c5 | |||
f681aca876 | |||
851d5f5f71 | |||
5192301bd1 | |||
77a63421c4 | |||
a01c228dd0 | |||
dd5d19964c | |||
041b209d36 | |||
601a1d1565 | |||
70772f962d | |||
40ec023fde | |||
13442e4415 | |||
436358a081 | |||
9df16ae319 | |||
b01d650a93 | |||
314f988d9c | |||
e13bf44c75 | |||
dd64d6516f | |||
d71c431aac | |||
4c856b21ba | |||
5937f251c7 | |||
a1d1faf49f | |||
9c806fdd0b | |||
752dee3de8 | |||
6d95078d19 | |||
eced709fb6 | |||
a679904d4b | |||
bb31d4cff1 | |||
f780b85a39 | |||
9d30ffe822 | |||
6c5b2123af | |||
4e16ee7e97 | |||
b107a85d53 | |||
e75e1191dd | |||
ef9f78943e | |||
9023ba957e | |||
eef79641e9 | |||
38de3f83c2 | |||
5d4139d662 | |||
f053cd0117 | |||
c7861b1ee7 | |||
d331684eff | |||
7bff03216e | |||
c69b75b7d9 | |||
8794bb5159 | |||
d05c8e45f1 | |||
82f9fa0d74 | |||
27d7351d36 | |||
744d4961e6 | |||
ef713d4bea | |||
488ae8cf26 | |||
d83d1650bc | |||
bd74c1d6fd | |||
de726f5c78 | |||
7ea38d79b7 | |||
0f8ee20695 | |||
4ef19436cf | |||
265fd2dcfd | |||
37dce92306 | |||
a08eaa58f5 | |||
b77835a39f | |||
a3a0c5dbae | |||
91f984c2e6 | |||
7506484113 | |||
e26e8bfcdb | |||
92bca22fce | |||
a2371e3234 | |||
b77651be83 | |||
da15028a0a | |||
f361120fc2 | |||
8a358f4564 | |||
c45d469f22 | |||
212055a474 | |||
1859f4ee3e | |||
c345805a52 | |||
4fb554af49 | |||
1a4437675e | |||
9acb3a5de1 | |||
ee9800cd95 | |||
5b88a0b4d4 | |||
09b4d75c01 | |||
933f1b2e0c | |||
aa8bbb612b | |||
a351cc04e6 | |||
ca8daca434 | |||
3506fde774 | |||
5a50d44e64 | |||
2dd1150a0a | |||
fc2cadab10 | |||
64998a979c | |||
920514a8a2 | |||
5e4553bd38 | |||
1e58de8c07 | |||
c2fade60d2 | |||
54ebe59075 | |||
42811dbfea | |||
812a5889c6 | |||
011eca7cfd | |||
30c978d6b3 | |||
6b503aad29 | |||
10520dbf01 | |||
043dc35d71 | |||
0fd0dc136d | |||
f0bf948299 | |||
587c9facd3 | |||
05a69202bb | |||
9aadf776e3 | |||
ab664393da | |||
36b543b5c9 | |||
5efde212fc |
@ -2,15 +2,8 @@ env:
|
||||
CIRRUS_CLONE_DEPTH: 1
|
||||
|
||||
freebsd_12_task:
|
||||
env:
|
||||
GIT_PROVE_OPTS: "--timer --jobs 10"
|
||||
GIT_TEST_OPTS: "--no-chain-lint --no-bin-wrappers"
|
||||
MAKEFLAGS: "-j4"
|
||||
DEFAULT_TEST_TARGET: prove
|
||||
DEVELOPER: 1
|
||||
freebsd_instance:
|
||||
image_family: freebsd-12-2
|
||||
memory: 2G
|
||||
image: freebsd-12-1-release-amd64
|
||||
install_script:
|
||||
pkg install -y gettext gmake perl5
|
||||
create_user_script:
|
||||
|
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -6,7 +6,6 @@
|
||||
*.pm eol=lf diff=perl
|
||||
*.py eol=lf diff=python
|
||||
*.bat eol=crlf
|
||||
CODE_OF_CONDUCT.md -whitespace
|
||||
/Documentation/**/*.txt eol=lf
|
||||
/command-list.txt eol=lf
|
||||
/GIT-VERSION-GEN eol=lf
|
||||
|
50
.github/workflows/check-whitespace.yml
vendored
50
.github/workflows/check-whitespace.yml
vendored
@ -1,50 +0,0 @@
|
||||
name: check-whitespace
|
||||
|
||||
# Get the repository with all commits to ensure that we can analyze
|
||||
# all of the commits contributed via the Pull Request.
|
||||
# Process `git log --check` output to extract just the check errors.
|
||||
# Exit with failure upon white-space issues.
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
|
||||
jobs:
|
||||
check-whitespace:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- 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.base.sha}}..)
|
||||
|
||||
if test -n "${log}"
|
||||
then
|
||||
exit 2
|
||||
fi
|
105
.github/workflows/l10n.yml
vendored
105
.github/workflows/l10n.yml
vendored
@ -1,105 +0,0 @@
|
||||
name: git-l10n
|
||||
|
||||
on: [push, pull_request_target]
|
||||
|
||||
jobs:
|
||||
git-po-helper:
|
||||
if: >-
|
||||
endsWith(github.repository, '/git-po') ||
|
||||
contains(github.head_ref, 'l10n') ||
|
||||
contains(github.ref, 'l10n')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Setup base and head objects
|
||||
id: setup-tips
|
||||
run: |
|
||||
if test "${{ github.event_name }}" = "pull_request_target"
|
||||
then
|
||||
base=${{ github.event.pull_request.base.sha }}
|
||||
head=${{ github.event.pull_request.head.sha }}
|
||||
else
|
||||
base=${{ github.event.before }}
|
||||
head=${{ github.event.after }}
|
||||
fi
|
||||
echo "::set-output name=base::$base"
|
||||
echo "::set-output name=head::$head"
|
||||
- name: Run partial clone
|
||||
run: |
|
||||
git -c init.defaultBranch=master init --bare .
|
||||
git remote add \
|
||||
--mirror=fetch \
|
||||
origin \
|
||||
https://github.com/${{ github.repository }}
|
||||
# Fetch tips that may be unreachable from github.ref:
|
||||
# - For a forced push, "$base" may be unreachable.
|
||||
# - For a "pull_request_target" event, "$head" may be unreachable.
|
||||
args=
|
||||
for commit in \
|
||||
${{ steps.setup-tips.outputs.base }} \
|
||||
${{ steps.setup-tips.outputs.head }}
|
||||
do
|
||||
case $commit in
|
||||
*[^0]*)
|
||||
args="$args $commit"
|
||||
;;
|
||||
*)
|
||||
# Should not fetch ZERO-OID.
|
||||
;;
|
||||
esac
|
||||
done
|
||||
git -c protocol.version=2 fetch \
|
||||
--progress \
|
||||
--no-tags \
|
||||
--no-write-fetch-head \
|
||||
--filter=blob:none \
|
||||
origin \
|
||||
${{ github.ref }} \
|
||||
$args
|
||||
- uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: '>=1.16'
|
||||
- name: Install git-po-helper
|
||||
run: go install github.com/git-l10n/git-po-helper@main
|
||||
- name: Install other dependencies
|
||||
run: |
|
||||
sudo apt-get update -q &&
|
||||
sudo apt-get install -q -y gettext
|
||||
- name: Run git-po-helper
|
||||
id: check-commits
|
||||
run: |
|
||||
exit_code=0
|
||||
git-po-helper check-commits \
|
||||
--github-action-event="${{ github.event_name }}" -- \
|
||||
${{ steps.setup-tips.outputs.base }}..${{ steps.setup-tips.outputs.head }} \
|
||||
>git-po-helper.out 2>&1 || exit_code=$?
|
||||
if test $exit_code -ne 0 || grep -q WARNING git-po-helper.out
|
||||
then
|
||||
# Remove ANSI colors which are proper for console logs but not
|
||||
# proper for PR comment.
|
||||
echo "COMMENT_BODY<<EOF" >>$GITHUB_ENV
|
||||
perl -pe 's/\e\[[0-9;]*m//g; s/\bEOF$//g' git-po-helper.out >>$GITHUB_ENV
|
||||
echo "EOF" >>$GITHUB_ENV
|
||||
fi
|
||||
cat git-po-helper.out
|
||||
exit $exit_code
|
||||
- name: Create comment in pull request for report
|
||||
uses: mshick/add-pr-comment@v1
|
||||
if: >-
|
||||
always() &&
|
||||
github.event_name == 'pull_request_target' &&
|
||||
env.COMMENT_BODY != ''
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
repo-token-user-login: 'github-actions[bot]'
|
||||
message: >
|
||||
${{ steps.check-commits.outcome == 'failure' && 'Errors and warnings' || 'Warnings' }}
|
||||
found by [git-po-helper](https://github.com/git-l10n/git-po-helper#readme) in workflow
|
||||
[#${{ github.run_number }}](${{ env.GITHUB_SERVER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}):
|
||||
|
||||
```
|
||||
|
||||
${{ env.COMMENT_BODY }}
|
||||
|
||||
```
|
321
.github/workflows/main.yml
vendored
321
.github/workflows/main.yml
vendored
@ -1,4 +1,4 @@
|
||||
name: CI
|
||||
name: CI/PR
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
@ -7,144 +7,144 @@ env:
|
||||
|
||||
jobs:
|
||||
ci-config:
|
||||
name: 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);
|
||||
}
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
enabled: ${{ steps.check-ref.outputs.enabled }}
|
||||
steps:
|
||||
- name: try to clone ci-config branch
|
||||
continue-on-error: true
|
||||
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
|
||||
- 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"
|
||||
|
||||
windows-build:
|
||||
name: win build
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: build
|
||||
- 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: . /etc/profile && ci/make-test-artifacts.sh artifacts
|
||||
- name: zip up tracked files
|
||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
||||
- name: upload tracked files and build artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
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:
|
||||
name: win test
|
||||
runs-on: windows-latest
|
||||
needs: [windows-build]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
steps:
|
||||
- name: download tracked files and build artifacts
|
||||
uses: actions/download-artifact@v2
|
||||
- uses: actions/checkout@v1
|
||||
- name: download build artifacts
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
name: windows-artifacts
|
||||
path: ${{github.workspace}}
|
||||
- name: extract tracked files and build artifacts
|
||||
- name: extract build artifacts
|
||||
shell: bash
|
||||
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
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: bash
|
||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||
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: bash
|
||||
run: ci/print-test-failures.sh
|
||||
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@v2
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: failed-tests-windows
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
vs-build:
|
||||
name: win+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@v2
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: initialize vcpkg
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: 'microsoft/vcpkg'
|
||||
path: 'compat/vcbuild/vcpkg'
|
||||
- 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: |
|
||||
@ -155,135 +155,124 @@ jobs:
|
||||
Expand-Archive compat.zip -DestinationPath . -Force
|
||||
Remove-Item compat.zip
|
||||
- name: add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v1
|
||||
uses: microsoft/setup-msbuild@v1.0.0
|
||||
- name: copy dlls to root
|
||||
shell: cmd
|
||||
run: compat\vcbuild\vcpkg_copy_dlls.bat release
|
||||
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 \
|
||||
-DNO_GETTEXT=YesPlease -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
|
||||
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: bash
|
||||
shell: powershell
|
||||
env:
|
||||
MSVC: 1
|
||||
VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
|
||||
run: |
|
||||
mkdir -p artifacts &&
|
||||
eval "$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts NO_GETTEXT=YesPlease 2>&1 | grep ^tar)"
|
||||
- name: zip up tracked files
|
||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
||||
- name: upload tracked files and build artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
& 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:
|
||||
name: win+VS test
|
||||
runs-on: windows-latest
|
||||
needs: vs-build
|
||||
needs: [vs-build, windows-build]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
steps:
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: download tracked files and build artifacts
|
||||
uses: actions/download-artifact@v2
|
||||
- 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 tracked files and build artifacts
|
||||
- name: extract build artifacts
|
||||
shell: bash
|
||||
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
|
||||
run: tar xf artifacts.tar.gz
|
||||
- name: test
|
||||
shell: bash
|
||||
shell: powershell
|
||||
env:
|
||||
MSYSTEM: MINGW64
|
||||
NO_SVN_TESTS: 1
|
||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||
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: bash
|
||||
run: ci/print-test-failures.sh
|
||||
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@v2
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: failed-tests-windows
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
regular:
|
||||
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vector:
|
||||
- jobname: linux-clang
|
||||
cc: clang
|
||||
pool: ubuntu-latest
|
||||
- jobname: linux-sha256
|
||||
cc: clang
|
||||
os: ubuntu
|
||||
pool: ubuntu-latest
|
||||
- jobname: linux-gcc
|
||||
cc: gcc
|
||||
cc_package: gcc-8
|
||||
pool: ubuntu-latest
|
||||
- jobname: linux-TEST-vars
|
||||
cc: gcc
|
||||
os: ubuntu
|
||||
cc_package: gcc-8
|
||||
pool: ubuntu-latest
|
||||
- jobname: osx-clang
|
||||
cc: clang
|
||||
pool: macos-latest
|
||||
- jobname: osx-gcc
|
||||
cc: gcc
|
||||
cc_package: gcc-9
|
||||
pool: macos-latest
|
||||
- jobname: linux-gcc-default
|
||||
cc: gcc
|
||||
pool: ubuntu-latest
|
||||
- jobname: linux-leaks
|
||||
- jobname: GETTEXT_POISON
|
||||
cc: gcc
|
||||
pool: ubuntu-latest
|
||||
env:
|
||||
CC: ${{matrix.vector.cc}}
|
||||
CC_PACKAGE: ${{matrix.vector.cc_package}}
|
||||
jobname: ${{matrix.vector.jobname}}
|
||||
runs_on_pool: ${{matrix.vector.pool}}
|
||||
runs-on: ${{matrix.vector.pool}}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- 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@v2
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: failed-tests-${{matrix.vector.jobname}}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
dockerized:
|
||||
name: ${{matrix.vector.jobname}} (${{matrix.vector.image}})
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vector:
|
||||
- jobname: linux-musl
|
||||
image: alpine
|
||||
- jobname: linux32
|
||||
os: ubuntu32
|
||||
- jobname: Linux32
|
||||
image: daald/ubuntu32:xenial
|
||||
- jobname: pedantic
|
||||
image: fedora
|
||||
env:
|
||||
jobname: ${{matrix.vector.jobname}}
|
||||
runs-on: ubuntu-latest
|
||||
@ -305,40 +294,18 @@ jobs:
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: StaticAnalysis
|
||||
runs-on: ubuntu-18.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v1
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/run-static-analysis.sh
|
||||
- run: ci/check-directional-formatting.bash
|
||||
sparse:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: sparse
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Download a current `sparse` package
|
||||
# Ubuntu's `sparse` version is too old for us
|
||||
uses: git-for-windows/get-azure-pipelines-artifact@v0
|
||||
with:
|
||||
repository: git/git
|
||||
definitionId: 10
|
||||
artifact: sparse-20.04
|
||||
- name: Install the current `sparse` package
|
||||
run: sudo dpkg -i sparse-20.04/sparse_*.deb
|
||||
- uses: actions/checkout@v2
|
||||
- name: Install other dependencies
|
||||
run: ci/install-dependencies.sh
|
||||
- run: make sparse
|
||||
documentation:
|
||||
name: documentation
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: Documentation
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v1
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/test-documentation.sh
|
||||
|
16
.gitignore
vendored
16
.gitignore
vendored
@ -33,7 +33,6 @@
|
||||
/git-check-mailmap
|
||||
/git-check-ref-format
|
||||
/git-checkout
|
||||
/git-checkout--worker
|
||||
/git-checkout-index
|
||||
/git-cherry
|
||||
/git-cherry-pick
|
||||
@ -68,7 +67,6 @@
|
||||
/git-filter-branch
|
||||
/git-fmt-merge-msg
|
||||
/git-for-each-ref
|
||||
/git-for-each-repo
|
||||
/git-format-patch
|
||||
/git-fsck
|
||||
/git-fsck-objects
|
||||
@ -77,6 +75,7 @@
|
||||
/git-grep
|
||||
/git-hash-object
|
||||
/git-help
|
||||
/git-hook
|
||||
/git-http-backend
|
||||
/git-http-fetch
|
||||
/git-http-push
|
||||
@ -92,7 +91,6 @@
|
||||
/git-ls-tree
|
||||
/git-mailinfo
|
||||
/git-mailsplit
|
||||
/git-maintenance
|
||||
/git-merge
|
||||
/git-merge-base
|
||||
/git-merge-index
|
||||
@ -116,6 +114,7 @@
|
||||
/git-pack-redundant
|
||||
/git-pack-objects
|
||||
/git-pack-refs
|
||||
/git-parse-remote
|
||||
/git-patch-id
|
||||
/git-prune
|
||||
/git-prune-packed
|
||||
@ -125,6 +124,7 @@
|
||||
/git-range-diff
|
||||
/git-read-tree
|
||||
/git-rebase
|
||||
/git-rebase--preserve-merges
|
||||
/git-receive-pack
|
||||
/git-reflog
|
||||
/git-remote
|
||||
@ -134,6 +134,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 +148,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
|
||||
@ -162,7 +166,6 @@
|
||||
/git-stripspace
|
||||
/git-submodule
|
||||
/git-submodule--helper
|
||||
/git-subtree
|
||||
/git-svn
|
||||
/git-switch
|
||||
/git-symbolic-ref
|
||||
@ -189,14 +192,12 @@
|
||||
/gitweb/static/gitweb.min.*
|
||||
/config-list.h
|
||||
/command-list.h
|
||||
/hook-list.h
|
||||
*.tar.gz
|
||||
*.dsc
|
||||
*.deb
|
||||
/git.spec
|
||||
*.exe
|
||||
*.[aos]
|
||||
*.o.json
|
||||
*.py[co]
|
||||
.depend/
|
||||
*.gcda
|
||||
@ -218,13 +219,11 @@
|
||||
/tags
|
||||
/TAGS
|
||||
/cscope*
|
||||
/compile_commands.json
|
||||
*.hcc
|
||||
*.obj
|
||||
*.lib
|
||||
*.res
|
||||
*.sln
|
||||
*.sp
|
||||
*.suo
|
||||
*.ncb
|
||||
*.vcproj
|
||||
@ -242,4 +241,3 @@ Release/
|
||||
/git.VC.VC.opendb
|
||||
/git.VC.db
|
||||
*.dSYM
|
||||
/contrib/buildsystems/out
|
||||
|
1
.mailmap
1
.mailmap
@ -220,7 +220,6 @@ Philipp A. Hartmann <pah@qo.cx> <ph@sorgh.de>
|
||||
Philippe Bruhat <book@cpan.org>
|
||||
Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
|
||||
Ramsay Jones <ramsay@ramsayjones.plus.com> <ramsay@ramsay1.demon.co.uk>
|
||||
Ramkumar Ramachandra <r@artagnon.com> <artagnon@gmail.com>
|
||||
Randall S. Becker <randall.becker@nexbridge.ca> <rsbecker@nexbridge.com>
|
||||
René Scharfe <l.s.r@web.de> <rene.scharfe@lsrfire.ath.cx>
|
||||
René Scharfe <l.s.r@web.de> Rene Scharfe
|
||||
|
60
.travis.yml
Normal file
60
.travis.yml
Normal file
@ -0,0 +1,60 @@
|
||||
language: c
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/travis-cache
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
osx_image: xcode10.1
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- env: jobname=GETTEXT_POISON
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
before_install:
|
||||
- env: jobname=linux-gcc-4.8
|
||||
os: linux
|
||||
dist: trusty
|
||||
compiler:
|
||||
- env: jobname=Linux32
|
||||
os: linux
|
||||
compiler:
|
||||
addons:
|
||||
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
|
||||
- env: jobname=StaticAnalysis
|
||||
os: linux
|
||||
compiler:
|
||||
script: ci/run-static-analysis.sh
|
||||
after_failure:
|
||||
- env: jobname=Documentation
|
||||
os: linux
|
||||
compiler:
|
||||
script: ci/test-documentation.sh
|
||||
after_failure:
|
||||
|
||||
before_install: ci/install-dependencies.sh
|
||||
script: ci/run-build-and-tests.sh
|
||||
after_failure: ci/print-test-failures.sh
|
||||
|
||||
notifications:
|
||||
email: false
|
@ -8,64 +8,73 @@ this code of conduct may be banned from the community.
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to make participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age,
|
||||
body size, disability, ethnicity, sex characteristics, gender identity and
|
||||
expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
## Our Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
This Code of Conduct applies within all project spaces, and it also applies
|
||||
when an individual is representing the project or its community in public
|
||||
spaces. Examples of representing a project or community include using an
|
||||
official project e-mail address, posting via an official social media account,
|
||||
or acting as an appointed representative at an online or offline event.
|
||||
Representation of a project may be further defined and clarified by project
|
||||
maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
reported by contacting the project team at git@sfconservancy.org. All
|
||||
complaints will be reviewed and investigated and will result in a response
|
||||
that is deemed necessary and appropriate to the circumstances. The project
|
||||
team is obligated to maintain confidentiality with regard to the reporter of
|
||||
an incident. Further details of specific enforcement policies may be posted
|
||||
separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
The project leadership team can be contacted by email as a whole at
|
||||
git@sfconservancy.org, or individually:
|
||||
|
||||
- Ævar Arnfjörð Bjarmason <avarab@gmail.com>
|
||||
@ -73,73 +82,12 @@ git@sfconservancy.org, or individually:
|
||||
- Jeff King <peff@peff.net>
|
||||
- Junio C Hamano <gitster@pobox.com>
|
||||
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
|
||||
at [https://www.contributor-covenant.org/translations][translations].
|
||||
version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
||||
|
1
Documentation/.gitignore
vendored
1
Documentation/.gitignore
vendored
@ -14,5 +14,4 @@ manpage-base-url.xsl
|
||||
SubmittingPatches.txt
|
||||
tmp-doc-diff/
|
||||
GIT-ASCIIDOCFLAGS
|
||||
/.build/
|
||||
/GIT-EXCLUDED-PROGRAMS
|
||||
|
@ -175,11 +175,6 @@ For shell scripts specifically (not exhaustive):
|
||||
|
||||
does not have such a problem.
|
||||
|
||||
- Even though "local" is not part of POSIX, we make heavy use of it
|
||||
in our test suite. We do not use it in scripted Porcelains, and
|
||||
hopefully nobody starts using "local" before they are reimplemented
|
||||
in C ;-)
|
||||
|
||||
|
||||
For C programs:
|
||||
|
||||
@ -499,43 +494,11 @@ For Python scripts:
|
||||
- Where required libraries do not restrict us to Python 2, we try to
|
||||
also be compatible with Python 3.1 and later.
|
||||
|
||||
|
||||
Program Output
|
||||
|
||||
We make a distinction between a Git command's primary output and
|
||||
output which is merely chatty feedback (for instance, status
|
||||
messages, running transcript, or progress display), as well as error
|
||||
messages. Roughly speaking, a Git command's primary output is that
|
||||
which one might want to capture to a file or send down a pipe; its
|
||||
chatty output should not interfere with these use-cases.
|
||||
|
||||
As such, primary output should be sent to the standard output stream
|
||||
(stdout), and chatty output should be sent to the standard error
|
||||
stream (stderr). Examples of commands which produce primary output
|
||||
include `git log`, `git show`, and `git branch --list` which generate
|
||||
output on the stdout stream.
|
||||
|
||||
Not all Git commands have primary output; this is often true of
|
||||
commands whose main function is to perform an action. Some action
|
||||
commands are silent, whereas others are chatty. An example of a
|
||||
chatty action commands is `git clone` with its "Cloning into
|
||||
'<path>'..." and "Checking connectivity..." status messages which it
|
||||
sends to the stderr stream.
|
||||
|
||||
Error messages from Git commands should always be sent to the stderr
|
||||
stream.
|
||||
|
||||
|
||||
Error Messages
|
||||
|
||||
- Do not end error messages with a full stop.
|
||||
|
||||
- Do not capitalize the first word, only because it is the first word
|
||||
in the message ("unable to open %s", not "Unable to open %s"). But
|
||||
"SHA-3 not supported" is fine, because the reason the first word is
|
||||
capitalized is not because it is at the beginning of the sentence,
|
||||
but because the word would be spelled in capital letters even when
|
||||
it appeared in the middle of the sentence.
|
||||
- Do not capitalize ("unable to open %s", not "Unable to open %s")
|
||||
|
||||
- Say what the error is first ("cannot open %s", not "%s: cannot open")
|
||||
|
||||
@ -578,51 +541,6 @@ Writing Documentation:
|
||||
documentation, please see the documentation-related advice in the
|
||||
Documentation/SubmittingPatches file).
|
||||
|
||||
In order to ensure the documentation is inclusive, avoid assuming
|
||||
that an unspecified example person is male or female, and think
|
||||
twice before using "he", "him", "she", or "her". Here are some
|
||||
tips to avoid use of gendered pronouns:
|
||||
|
||||
- Prefer succinctness and matter-of-factly describing functionality
|
||||
in the abstract. E.g.
|
||||
|
||||
--short:: Emit output in the short-format.
|
||||
|
||||
and avoid something like these overly verbose alternatives:
|
||||
|
||||
--short:: Use this to emit output in the short-format.
|
||||
--short:: You can use this to get output in the short-format.
|
||||
--short:: A user who prefers shorter output could....
|
||||
--short:: Should a person and/or program want shorter output, he
|
||||
she/they/it can...
|
||||
|
||||
This practice often eliminates the need to involve human actors in
|
||||
your description, but it is a good practice regardless of the
|
||||
avoidance of gendered pronouns.
|
||||
|
||||
- When it becomes awkward to stick to this style, prefer "you" when
|
||||
addressing the the hypothetical user, and possibly "we" when
|
||||
discussing how the program might react to the user. E.g.
|
||||
|
||||
You can use this option instead of --xyz, but we might remove
|
||||
support for it in future versions.
|
||||
|
||||
while keeping in mind that you can probably be less verbose, e.g.
|
||||
|
||||
Use this instead of --xyz. This option might be removed in future
|
||||
versions.
|
||||
|
||||
- If you still need to refer to an example person that is
|
||||
third-person singular, you may resort to "singular they" to avoid
|
||||
"he/she/him/her", e.g.
|
||||
|
||||
A contributor asks their upstream to pull from them.
|
||||
|
||||
Note that this sounds ungrammatical and unnatural to those who
|
||||
learned that "they" is only used for third-person plural, e.g.
|
||||
those who learn English as a second language in some parts of the
|
||||
world.
|
||||
|
||||
Every user-visible change should be reflected in the documentation.
|
||||
The same general rule as for code applies -- imitate the existing
|
||||
conventions.
|
||||
|
@ -2,8 +2,6 @@
|
||||
MAN1_TXT =
|
||||
MAN5_TXT =
|
||||
MAN7_TXT =
|
||||
HOWTO_TXT =
|
||||
DOC_DEP_TXT =
|
||||
TECH_DOCS =
|
||||
ARTICLES =
|
||||
SP_ARTICLES =
|
||||
@ -19,11 +17,9 @@ 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
|
||||
MAN5_TXT += gitmailmap.txt
|
||||
MAN5_TXT += gitmodules.txt
|
||||
MAN5_TXT += gitrepository-layout.txt
|
||||
MAN5_TXT += gitweb.conf.txt
|
||||
@ -44,11 +40,6 @@ MAN7_TXT += gittutorial-2.txt
|
||||
MAN7_TXT += gittutorial.txt
|
||||
MAN7_TXT += gitworkflows.txt
|
||||
|
||||
HOWTO_TXT += $(wildcard howto/*.txt)
|
||||
|
||||
DOC_DEP_TXT += $(wildcard *.txt)
|
||||
DOC_DEP_TXT += $(wildcard config/*.txt)
|
||||
|
||||
ifdef MAN_FILTER
|
||||
MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT))
|
||||
else
|
||||
@ -83,14 +74,13 @@ SP_ARTICLES += howto/rebuild-from-update-hook
|
||||
SP_ARTICLES += howto/rebase-from-internal-branch
|
||||
SP_ARTICLES += howto/keep-canonical-history-correct
|
||||
SP_ARTICLES += howto/maintain-git
|
||||
SP_ARTICLES += howto/coordinate-embargoed-releases
|
||||
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
||||
SP_ARTICLES += $(API_DOCS)
|
||||
|
||||
TECH_DOCS += MyFirstContribution
|
||||
TECH_DOCS += MyFirstObjectWalk
|
||||
TECH_DOCS += SubmittingPatches
|
||||
TECH_DOCS += technical/bundle-format
|
||||
TECH_DOCS += technical/config-based-hooks
|
||||
TECH_DOCS += technical/hash-function-transition
|
||||
TECH_DOCS += technical/http-protocol
|
||||
TECH_DOCS += technical/index-format
|
||||
@ -99,7 +89,6 @@ TECH_DOCS += technical/multi-pack-index
|
||||
TECH_DOCS += technical/pack-format
|
||||
TECH_DOCS += technical/pack-heuristics
|
||||
TECH_DOCS += technical/pack-protocol
|
||||
TECH_DOCS += technical/parallel-checkout
|
||||
TECH_DOCS += technical/partial-clone
|
||||
TECH_DOCS += technical/protocol-capabilities
|
||||
TECH_DOCS += technical/protocol-common
|
||||
@ -140,7 +129,6 @@ ASCIIDOC_CONF = -f asciidoc.conf
|
||||
ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
|
||||
-amanversion=$(GIT_VERSION) \
|
||||
-amanmanual='Git Manual' -amansource='Git'
|
||||
ASCIIDOC_DEPS = asciidoc.conf GIT-ASCIIDOCFLAGS
|
||||
TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
|
||||
TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
|
||||
MANPAGE_XSL = manpage-normal.xsl
|
||||
@ -195,7 +183,6 @@ ASCIIDOC_DOCBOOK = docbook5
|
||||
ASCIIDOC_EXTRA += -acompat-mode -atabsize=8
|
||||
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
||||
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
|
||||
ASCIIDOC_DEPS = asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
DBLATEX_COMMON =
|
||||
XMLTO_EXTRA += --skip-validation
|
||||
XMLTO_EXTRA += -x manpage.xsl
|
||||
@ -226,7 +213,6 @@ endif
|
||||
|
||||
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
||||
ifndef V
|
||||
QUIET = @
|
||||
QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;
|
||||
QUIET_XMLTO = @echo ' ' XMLTO $@;
|
||||
QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;
|
||||
@ -234,15 +220,11 @@ ifndef V
|
||||
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
||||
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
||||
QUIET_GEN = @echo ' ' GEN $@;
|
||||
QUIET_LINT = @echo ' ' LINT $@;
|
||||
QUIET_STDERR = 2> /dev/null
|
||||
QUIET_SUBDIR0 = +@subdir=
|
||||
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
||||
$(MAKE) $(PRINT_DIR) -C $$subdir
|
||||
|
||||
QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<;
|
||||
QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<;
|
||||
QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<;
|
||||
|
||||
export V
|
||||
endif
|
||||
endif
|
||||
@ -290,9 +272,7 @@ install-html: html
|
||||
../GIT-VERSION-FILE: FORCE
|
||||
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
||||
|
||||
ifneq ($(filter-out lint-docs clean,$(MAKECMDGOALS)),)
|
||||
-include ../GIT-VERSION-FILE
|
||||
endif
|
||||
|
||||
#
|
||||
# Determine "include::" file references in asciidoc files.
|
||||
@ -301,12 +281,12 @@ docdep_prereqs = \
|
||||
mergetools-list.made $(mergetools_txt) \
|
||||
cmd-list.made $(cmds_txt)
|
||||
|
||||
doc.dep : $(docdep_prereqs) $(DOC_DEP_TXT) build-docdep.perl
|
||||
$(QUIET_GEN)$(PERL_PATH) ./build-docdep.perl >$@ $(QUIET_STDERR)
|
||||
doc.dep : $(docdep_prereqs) $(wildcard *.txt) $(wildcard config/*.txt) build-docdep.perl
|
||||
$(QUIET_GEN)$(RM) $@+ $@ && \
|
||||
$(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \
|
||||
mv $@+ $@
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
-include doc.dep
|
||||
endif
|
||||
|
||||
cmds_txt = cmds-ancillaryinterrogators.txt \
|
||||
cmds-ancillarymanipulators.txt \
|
||||
@ -315,14 +295,14 @@ cmds_txt = cmds-ancillaryinterrogators.txt \
|
||||
cmds-plumbingmanipulators.txt \
|
||||
cmds-synchingrepositories.txt \
|
||||
cmds-synchelpers.txt \
|
||||
cmds-guide.txt \
|
||||
cmds-purehelpers.txt \
|
||||
cmds-foreignscminterface.txt
|
||||
|
||||
$(cmds_txt): cmd-list.made
|
||||
|
||||
cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
|
||||
$(QUIET_GEN)$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(cmds_txt) $(QUIET_STDERR) && \
|
||||
$(QUIET_GEN)$(RM) $@ && \
|
||||
$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(QUIET_STDERR) && \
|
||||
date >$@
|
||||
|
||||
mergetools_txt = mergetools-diff.txt mergetools-merge.txt
|
||||
@ -330,7 +310,7 @@ mergetools_txt = mergetools-diff.txt mergetools-merge.txt
|
||||
$(mergetools_txt): mergetools-list.made
|
||||
|
||||
mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
||||
$(QUIET_GEN) \
|
||||
$(QUIET_GEN)$(RM) $@ && \
|
||||
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
|
||||
. ../git-mergetool--lib.sh && \
|
||||
show_tool_names can_diff "* " || :' >mergetools-diff.txt && \
|
||||
@ -349,7 +329,6 @@ GIT-ASCIIDOCFLAGS: FORCE
|
||||
fi
|
||||
|
||||
clean:
|
||||
$(RM) -rf .build/
|
||||
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
||||
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
||||
$(RM) *.pdf
|
||||
@ -360,23 +339,32 @@ clean:
|
||||
$(RM) manpage-base-url.xsl
|
||||
$(RM) GIT-ASCIIDOCFLAGS
|
||||
|
||||
$(MAN_HTML): %.html : %.txt $(ASCIIDOC_DEPS)
|
||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) -d manpage -o $@ $<
|
||||
$(MAN_HTML): %.html : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_HTML) -d manpage -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
$(OBSOLETE_HTML): %.html : %.txto $(ASCIIDOC_DEPS)
|
||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) -o $@ $<
|
||||
$(OBSOLETE_HTML): %.html : %.txto asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_HTML) -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
manpage-base-url.xsl: manpage-base-url.xsl.in
|
||||
$(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
|
||||
|
||||
%.1 %.5 %.7 : %.xml manpage-base-url.xsl $(wildcard manpage*.xsl)
|
||||
$(QUIET_XMLTO)$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
|
||||
$(QUIET_XMLTO)$(RM) $@ && \
|
||||
$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
|
||||
|
||||
%.xml : %.txt $(ASCIIDOC_DEPS)
|
||||
$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d manpage -o $@ $<
|
||||
%.xml : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_XML) -d manpage -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
user-manual.xml: user-manual.txt user-manual.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||
$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d book -o $@ $<
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(TXT_TO_XML) -d book -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
technical/api-index.txt: technical/api-index-skel.txt \
|
||||
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
|
||||
@ -391,41 +379,49 @@ 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)xsltproc $(XSLTOPTS) -o $@ $(XSLT) $<
|
||||
$(QUIET_XSLTPROC)$(RM) $@+ $@ && \
|
||||
xsltproc $(XSLTOPTS) -o $@+ $(XSLT) $< && \
|
||||
mv $@+ $@
|
||||
|
||||
git.info: user-manual.texi
|
||||
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
|
||||
|
||||
user-manual.texi: user-manual.xml
|
||||
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@+ && \
|
||||
$(PERL_PATH) fix-texi.perl <$@+ >$@ && \
|
||||
$(RM) $@+
|
||||
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||
$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@++ && \
|
||||
$(PERL_PATH) fix-texi.perl <$@++ >$@+ && \
|
||||
rm $@++ && \
|
||||
mv $@+ $@
|
||||
|
||||
user-manual.pdf: user-manual.xml
|
||||
$(QUIET_DBLATEX)$(DBLATEX) -o $@ $(DBLATEX_COMMON) $<
|
||||
$(QUIET_DBLATEX)$(RM) $@+ $@ && \
|
||||
$(DBLATEX) -o $@+ $(DBLATEX_COMMON) $< && \
|
||||
mv $@+ $@
|
||||
|
||||
gitman.texi: $(MAN_XML) cat-texi.perl texi.xsl
|
||||
$(QUIET_DB2TEXI) \
|
||||
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||
($(foreach xml,$(sort $(MAN_XML)),xsltproc -o $(xml)+ texi.xsl $(xml) && \
|
||||
$(DOCBOOK2X_TEXI) --encoding=UTF-8 --to-stdout $(xml)+ && \
|
||||
$(RM) $(xml)+ &&) true) > $@+ && \
|
||||
$(PERL_PATH) cat-texi.perl $@ <$@+ >$@ && \
|
||||
$(RM) $@+
|
||||
rm $(xml)+ &&) true) > $@++ && \
|
||||
$(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
|
||||
rm $@++ && \
|
||||
mv $@+ $@
|
||||
|
||||
gitman.info: gitman.texi
|
||||
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $*.texi
|
||||
|
||||
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
||||
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@
|
||||
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||
$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@+ && \
|
||||
mv $@+ $@
|
||||
|
||||
howto-index.txt: howto-index.sh $(HOWTO_TXT)
|
||||
$(QUIET_GEN)'$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(HOWTO_TXT)) >$@
|
||||
howto-index.txt: howto-index.sh $(wildcard howto/*.txt)
|
||||
$(QUIET_GEN)$(RM) $@+ $@ && \
|
||||
'$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(wildcard howto/*.txt)) >$@+ && \
|
||||
mv $@+ $@
|
||||
|
||||
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
||||
@ -433,10 +429,11 @@ $(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
||||
WEBDOC_DEST = /pub/software/scm/git/docs
|
||||
|
||||
howto/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
||||
$(patsubst %.txt,%.html,$(HOWTO_TXT)): %.html : %.txt GIT-ASCIIDOCFLAGS
|
||||
$(QUIET_ASCIIDOC) \
|
||||
$(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt GIT-ASCIIDOCFLAGS
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
sed -e '1,/^$$/d' $< | \
|
||||
$(TXT_TO_HTML) - >$@
|
||||
$(TXT_TO_HTML) - >$@+ && \
|
||||
mv $@+ $@
|
||||
|
||||
install-webdoc : html
|
||||
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
|
||||
@ -463,68 +460,12 @@ quick-install-html: require-htmlrepo
|
||||
print-man1:
|
||||
@for i in $(MAN1_TXT); do echo $$i; done
|
||||
|
||||
## Lint: Common
|
||||
.build:
|
||||
$(QUIET)mkdir $@
|
||||
.build/lint-docs: | .build
|
||||
$(QUIET)mkdir $@
|
||||
|
||||
## Lint: gitlink
|
||||
.build/lint-docs/gitlink: | .build/lint-docs
|
||||
$(QUIET)mkdir $@
|
||||
.build/lint-docs/gitlink/howto: | .build/lint-docs/gitlink
|
||||
$(QUIET)mkdir $@
|
||||
.build/lint-docs/gitlink/config: | .build/lint-docs/gitlink
|
||||
$(QUIET)mkdir $@
|
||||
LINT_DOCS_GITLINK = $(patsubst %.txt,.build/lint-docs/gitlink/%.ok,$(HOWTO_TXT) $(DOC_DEP_TXT))
|
||||
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink
|
||||
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/howto
|
||||
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/config
|
||||
$(LINT_DOCS_GITLINK): lint-gitlink.perl
|
||||
$(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt
|
||||
$(QUIET_LINT_GITLINK)$(PERL_PATH) lint-gitlink.perl \
|
||||
$< \
|
||||
$(HOWTO_TXT) $(DOC_DEP_TXT) \
|
||||
--section=1 $(MAN1_TXT) \
|
||||
--section=5 $(MAN5_TXT) \
|
||||
--section=7 $(MAN7_TXT) >$@
|
||||
.PHONY: lint-docs-gitlink
|
||||
lint-docs-gitlink: $(LINT_DOCS_GITLINK)
|
||||
|
||||
## Lint: man-end-blurb
|
||||
.build/lint-docs/man-end-blurb: | .build/lint-docs
|
||||
$(QUIET)mkdir $@
|
||||
LINT_DOCS_MAN_END_BLURB = $(patsubst %.txt,.build/lint-docs/man-end-blurb/%.ok,$(MAN_TXT))
|
||||
$(LINT_DOCS_MAN_END_BLURB): | .build/lint-docs/man-end-blurb
|
||||
$(LINT_DOCS_MAN_END_BLURB): lint-man-end-blurb.perl
|
||||
$(LINT_DOCS_MAN_END_BLURB): .build/lint-docs/man-end-blurb/%.ok: %.txt
|
||||
$(QUIET_LINT_MANEND)$(PERL_PATH) lint-man-end-blurb.perl $< >$@
|
||||
.PHONY: lint-docs-man-end-blurb
|
||||
lint-docs-man-end-blurb: $(LINT_DOCS_MAN_END_BLURB)
|
||||
|
||||
## Lint: man-section-order
|
||||
.build/lint-docs/man-section-order: | .build/lint-docs
|
||||
$(QUIET)mkdir $@
|
||||
LINT_DOCS_MAN_SECTION_ORDER = $(patsubst %.txt,.build/lint-docs/man-section-order/%.ok,$(MAN_TXT))
|
||||
$(LINT_DOCS_MAN_SECTION_ORDER): | .build/lint-docs/man-section-order
|
||||
$(LINT_DOCS_MAN_SECTION_ORDER): lint-man-section-order.perl
|
||||
$(LINT_DOCS_MAN_SECTION_ORDER): .build/lint-docs/man-section-order/%.ok: %.txt
|
||||
$(QUIET_LINT_MANSEC)$(PERL_PATH) lint-man-section-order.perl $< >$@
|
||||
.PHONY: lint-docs-man-section-order
|
||||
lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER)
|
||||
|
||||
## Lint: list of targets above
|
||||
.PHONY: lint-docs
|
||||
lint-docs: lint-docs-gitlink
|
||||
lint-docs: lint-docs-man-end-blurb
|
||||
lint-docs: lint-docs-man-section-order
|
||||
lint-docs::
|
||||
$(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl
|
||||
|
||||
ifeq ($(wildcard po/Makefile),po/Makefile)
|
||||
doc-l10n install-l10n::
|
||||
$(MAKE) -C po $@
|
||||
endif
|
||||
|
||||
# Delete the target file on error
|
||||
.DELETE_ON_ERROR:
|
||||
|
||||
.PHONY: FORCE
|
||||
|
@ -47,7 +47,7 @@ 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://web.libera.chat/#git-devel[#git-devel] on Libera Chat
|
||||
==== 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
|
||||
@ -249,7 +249,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 +319,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 +507,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 +522,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.
|
||||
|
||||
@ -664,7 +663,7 @@ mention the right animal somewhere:
|
||||
----
|
||||
test_expect_success 'runs correctly with no args and good output' '
|
||||
git psuh >actual &&
|
||||
grep Pony actual
|
||||
test_i18ngrep Pony actual
|
||||
'
|
||||
----
|
||||
|
||||
@ -827,7 +826,7 @@ either examining recent pull requests where someone has been granted `/allow`
|
||||
(https://github.com/gitgitgadget/git/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+%22%2Fallow%22[Search:
|
||||
is:pr is:open "/allow"]), in which case both the author and the person who
|
||||
granted the `/allow` can now `/allow` you, or by inquiring on the
|
||||
https://web.libera.chat/#git-devel[#git-devel] IRC channel on Libera Chat
|
||||
https://webchat.freenode.net/#git-devel[#git-devel] IRC channel on Freenode
|
||||
linking your pull request and asking for someone to `/allow` you.
|
||||
|
||||
If the CI fails, you can update your changes with `git rebase -i` and push your
|
||||
@ -905,34 +904,19 @@ Sending emails with Git is a two-part process; before you can prepare the emails
|
||||
themselves, you'll need to prepare the patches. Luckily, this is pretty simple:
|
||||
|
||||
----
|
||||
$ git format-patch --cover-letter -o psuh/ --base=auto psuh@{u}..psuh
|
||||
$ git format-patch --cover-letter -o psuh/ master..psuh
|
||||
----
|
||||
|
||||
. The `--cover-letter` option tells `format-patch` to create a
|
||||
cover letter template for you. You will need to fill in the
|
||||
template before you're ready to send - but for now, the template
|
||||
will be next to your other patches.
|
||||
The `--cover-letter` parameter tells `format-patch` to create a cover letter
|
||||
template for you. You will need to fill in the template before you're ready
|
||||
to send - but for now, the template will be next to your other patches.
|
||||
|
||||
. The `-o psuh/` option tells `format-patch` to place the patch
|
||||
files into a directory. This is useful because `git send-email`
|
||||
can take a directory and send out all the patches from there.
|
||||
The `-o psuh/` parameter tells `format-patch` to place the patch files into a
|
||||
directory. This is useful because `git send-email` can take a directory and
|
||||
send out all the patches from there.
|
||||
|
||||
. The `--base=auto` option tells the command to record the "base
|
||||
commit", on which the recipient is expected to apply the patch
|
||||
series. The `auto` value will cause `format-patch` to compute
|
||||
the base commit automatically, which is the merge base of tip
|
||||
commit of the remote-tracking branch and the specified revision
|
||||
range.
|
||||
|
||||
. The `psuh@{u}..psuh` option tells `format-patch` to generate
|
||||
patches for the commits you created on the `psuh` branch since it
|
||||
forked from its upstream (which is `origin/master` if you
|
||||
followed the example in the "Set up your workspace" section). If
|
||||
you are already on the `psuh` branch, you can just say `@{u}`,
|
||||
which means "commits on the current branch since it forked from
|
||||
its upstream", which is the same thing.
|
||||
|
||||
The command will make one patch file per commit. After you
|
||||
`master..psuh` tells `format-patch` to generate patches for the difference
|
||||
between `master` and `psuh`. It will make one patch file per commit. After you
|
||||
run, you can go have a look at each of the patches with your favorite text
|
||||
editor and make sure everything looks alright; however, it's not recommended to
|
||||
make code fixups via the patch file. It's a better idea to make the change the
|
||||
@ -1044,42 +1028,22 @@ kidding - be patient!)
|
||||
[[v2-git-send-email]]
|
||||
=== Sending v2
|
||||
|
||||
This section will focus on how to send a v2 of your patchset. To learn what
|
||||
should go into v2, skip ahead to <<reviewing,Responding to Reviews>> for
|
||||
information on how to handle comments from reviewers.
|
||||
Skip ahead to <<reviewing,Responding to Reviews>> for information on how to
|
||||
handle comments from reviewers. Continue this section when your topic branch is
|
||||
shaped the way you want it to look for your patchset v2.
|
||||
|
||||
We'll reuse our `psuh` topic branch for v2. Before we make any changes, we'll
|
||||
mark the tip of our v1 branch for easy reference:
|
||||
When you're ready with the next iteration of your patch, the process is fairly
|
||||
similar.
|
||||
|
||||
First, generate your v2 patches again:
|
||||
|
||||
----
|
||||
$ git checkout psuh
|
||||
$ git branch psuh-v1
|
||||
$ git format-patch -v2 --cover-letter -o psuh/ master..psuh
|
||||
----
|
||||
|
||||
Refine your patch series by using `git rebase -i` to adjust commits based upon
|
||||
reviewer comments. Once the patch series is ready for submission, generate your
|
||||
patches again, but with some new flags:
|
||||
|
||||
----
|
||||
$ git format-patch -v2 --cover-letter -o psuh/ --range-diff master..psuh-v1 master..
|
||||
----
|
||||
|
||||
The `--range-diff master..psuh-v1` parameter tells `format-patch` to include a
|
||||
range-diff between `psuh-v1` and `psuh` in the cover letter (see
|
||||
linkgit:git-range-diff[1]). This helps tell reviewers about the differences
|
||||
between your v1 and v2 patches.
|
||||
|
||||
The `-v2` parameter tells `format-patch` to output your patches
|
||||
as version "2". For instance, you may notice that your v2 patches are
|
||||
all named like `v2-000n-my-commit-subject.patch`. `-v2` will also format
|
||||
your patches by prefixing them with "[PATCH v2]" instead of "[PATCH]",
|
||||
and your range-diff will be prefaced with "Range-diff against v1".
|
||||
|
||||
Afer you run this command, `format-patch` will output the patches to the `psuh/`
|
||||
directory, alongside the v1 patches. Using a single directory makes it easy to
|
||||
refer to the old v1 patches while proofreading the v2 patches, but you will need
|
||||
to be careful to send out only the v2 patches. We will use a pattern like
|
||||
"psuh/v2-*.patch" (not "psuh/*.patch", which would match v1 and v2 patches).
|
||||
This will add your v2 patches, all named like `v2-000n-my-commit-subject.patch`,
|
||||
to the `psuh/` directory. You may notice that they are sitting alongside the v1
|
||||
patches; that's fine, but be careful when you are ready to send them.
|
||||
|
||||
Edit your cover letter again. Now is a good time to mention what's different
|
||||
between your last version and now, if it's something significant. You do not
|
||||
@ -1117,7 +1081,7 @@ to the command:
|
||||
----
|
||||
$ git send-email --to=target@example.com
|
||||
--in-reply-to="<foo.12345.author@example.com>"
|
||||
psuh/v2-*.patch
|
||||
psuh/v2*
|
||||
----
|
||||
|
||||
[[single-patch]]
|
||||
@ -1178,25 +1142,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
|
||||
@ -1229,8 +1179,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`,
|
||||
|
@ -58,19 +58,14 @@ running, enable trace output by setting the environment variable `GIT_TRACE`.
|
||||
|
||||
Add usage text and `-h` handling, like all subcommands should consistently do
|
||||
(our test suite will notice and complain if you fail to do so).
|
||||
We'll need to include the `parse-options.h` header.
|
||||
|
||||
----
|
||||
#include "parse-options.h"
|
||||
|
||||
...
|
||||
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
const char * const walken_usage[] = {
|
||||
N_("git walken"),
|
||||
NULL,
|
||||
};
|
||||
}
|
||||
struct option options[] = {
|
||||
OPT_END()
|
||||
};
|
||||
@ -187,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.,
|
||||
@ -200,14 +219,9 @@ Similarly to the default values, we don't have anything to do here yet
|
||||
ourselves; however, we should call `git_default_config()` if we aren't calling
|
||||
any other existing config callbacks.
|
||||
|
||||
Add a new function to `builtin/walken.c`.
|
||||
We'll also need to include the `config.h` header:
|
||||
Add a new function to `builtin/walken.c`:
|
||||
|
||||
----
|
||||
#include "config.h"
|
||||
|
||||
...
|
||||
|
||||
static int git_walken_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
/*
|
||||
@ -239,14 +253,8 @@ typically done by calling `repo_init_revisions()` with the repository you intend
|
||||
to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
|
||||
struct.
|
||||
|
||||
Add the `struct rev_info` and the `repo_init_revisions()` call.
|
||||
We'll also need to include the `revision.h` header:
|
||||
|
||||
Add the `struct rev_info` and the `repo_init_revisions()` call:
|
||||
----
|
||||
#include "revision.h"
|
||||
|
||||
...
|
||||
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
/* This can go wherever you like in your declarations.*/
|
||||
@ -380,9 +388,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);
|
||||
@ -640,14 +656,9 @@ static void walken_object_walk(struct rev_info *rev)
|
||||
----
|
||||
|
||||
Let's start by calling just the unfiltered walk and reporting our counts.
|
||||
Complete your implementation of `walken_object_walk()`.
|
||||
We'll also need to include the `list-objects.h` header.
|
||||
Complete your implementation of `walken_object_walk()`:
|
||||
|
||||
----
|
||||
#include "list-objects.h"
|
||||
|
||||
...
|
||||
|
||||
traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
|
||||
|
||||
printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,
|
||||
@ -712,13 +723,13 @@ help understand. In our case, that means we omit trees and blobs not directly
|
||||
referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only
|
||||
`HEAD` in the `pending` list.)
|
||||
|
||||
First, we'll need to `#include "list-objects-filter-options.h"` and set up the
|
||||
First, we'll need to `#include "list-objects-filter-options.h`" and set up the
|
||||
`struct list_objects_filter_options` at the top of the function.
|
||||
|
||||
----
|
||||
static void walken_object_walk(struct rev_info *rev)
|
||||
{
|
||||
struct list_objects_filter_options filter_options = { 0 };
|
||||
struct list_objects_filter_options filter_options = {};
|
||||
|
||||
...
|
||||
----
|
||||
@ -800,7 +811,7 @@ Count all the objects within and modify the print statement:
|
||||
while ((oid = oidset_iter_next(&oit)))
|
||||
omitted_count++;
|
||||
|
||||
printf("commits %d\nblobs %d\ntags %d\ntrees %d\nomitted %d\n",
|
||||
printf("commits %d\nblobs %d\ntags %d\ntrees%d\nomitted %d\n",
|
||||
commit_count, blob_count, tag_count, tree_count, omitted_count);
|
||||
----
|
||||
|
||||
|
@ -50,7 +50,7 @@ Fixes since v1.6.0.2
|
||||
if the working tree is currently dirty.
|
||||
|
||||
* "git for-each-ref --format=%(subject)" fixed for commits with no
|
||||
newline in the message body.
|
||||
no newline in the message body.
|
||||
|
||||
* "git remote" fixed to protect printf from user input.
|
||||
|
||||
|
@ -365,7 +365,7 @@ details).
|
||||
(merge 2fbd4f9 mh/maint-lockfile-overflow later to maint).
|
||||
|
||||
* Invocations of "git checkout" used internally by "git rebase" were
|
||||
counted as "checkout", and affected later "git checkout -", which took
|
||||
counted as "checkout", and affected later "git checkout -" to the
|
||||
the user to an unexpected place.
|
||||
(merge 3bed291 rr/rebase-checkout-reflog later to maint).
|
||||
|
||||
|
@ -1,16 +0,0 @@
|
||||
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.
|
@ -1,6 +0,0 @@
|
||||
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.
|
@ -1,6 +0,0 @@
|
||||
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.
|
@ -1,6 +0,0 @@
|
||||
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.
|
@ -1,6 +0,0 @@
|
||||
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.
|
@ -1,7 +0,0 @@
|
||||
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.
|
@ -1,7 +0,0 @@
|
||||
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.
|
@ -1,7 +0,0 @@
|
||||
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.
|
@ -1,7 +0,0 @@
|
||||
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,7 +0,0 @@
|
||||
Git v2.26.3 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, v2.24.4 and v2.25.5
|
||||
to address the security issue CVE-2021-21300; see the release
|
||||
notes for these versions for details.
|
@ -1,7 +0,0 @@
|
||||
Git v2.27.1 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, v2.24.4, v2.25.5
|
||||
and v2.26.3 to address the security issue CVE-2021-21300; see
|
||||
the release notes for these versions for details.
|
@ -6,8 +6,9 @@ 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.
|
||||
* "feature.experimental" configuration variable is to let volunteers
|
||||
easily opt into a set of newer features, which use of the v2
|
||||
transport protocol is now a part of.
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
@ -18,33 +19,6 @@ UI, Workflows & Features
|
||||
* 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.
|
||||
|
||||
@ -76,49 +50,6 @@ Performance, Internal Implementation, Development Support etc.
|
||||
* 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
|
||||
-----------------
|
||||
@ -168,69 +99,9 @@ Fixes since v2.27
|
||||
* 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,7 +0,0 @@
|
||||
Git v2.28.1 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, v2.24.4, v2.25.5,
|
||||
v2.26.3 and v2.27.1 to address the security issue CVE-2021-21300;
|
||||
see the release notes for these versions for details.
|
@ -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 a bunch of commands
|
||||
have been turned 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,8 +0,0 @@
|
||||
Git v2.29.3 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, v2.24.4,
|
||||
v2.25.5, v2.26.3, v2.27.1 and v2.28.1 to address the security
|
||||
issue CVE-2021-21300; see the release notes for these versions
|
||||
for details.
|
@ -1,401 +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 take value_regex
|
||||
learned 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 different from 'master'.
|
||||
|
||||
* Rewriting "git bisect" in C continues.
|
||||
|
||||
* More preliminary tests have been added to document desired outcomes
|
||||
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.
|
||||
|
||||
* "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 careful.
|
||||
(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 use 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 to 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).
|
||||
|
||||
* "git pack-redundant" when there is only one packfile used to crash,
|
||||
which has been corrected.
|
||||
(merge 0696232390 jx/pack-redundant-on-single-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).
|
||||
(merge 633eebe142 jb/midx-doc-update later to maint).
|
||||
(merge 5885367e8f jh/index-v2-doc-on-fsmn later to maint).
|
||||
(merge 14639a4779 jc/compat-util-setitimer-fix later to maint).
|
||||
(merge 56f56ac50b ab/unreachable-break later to maint).
|
||||
(merge 731d578b4f rb/nonstop-config-mak-uname-update later to maint).
|
||||
(merge f4698738f9 es/perf-export-fix later to maint).
|
||||
(merge 773c694142 nk/refspecs-negative-fix later to maint).
|
@ -1,55 +0,0 @@
|
||||
Git v2.30.1 Release Notes
|
||||
=========================
|
||||
|
||||
This release is primarily to merge fixes accumulated on the 'master'
|
||||
front to prepare for 2.31 release that are still relevant to 2.30.x
|
||||
maintenance track.
|
||||
|
||||
Fixes since v2.30
|
||||
-----------------
|
||||
|
||||
* "git fetch --recurse-submodules" failed to update a submodule
|
||||
when it has an uninitialized (hence of no interest to the user)
|
||||
sub-submodule, which has been corrected.
|
||||
|
||||
* Command line error of "git rebase" are diagnosed earlier.
|
||||
|
||||
* "git stash" did not work well in a sparsely checked out working
|
||||
tree.
|
||||
|
||||
* Some tests expect that "ls -l" output has either '-' or 'x' for
|
||||
group executable bit, but setgid bit can be inherited from parent
|
||||
directory and make these fields 'S' or 's' instead, causing test
|
||||
failures.
|
||||
|
||||
* "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
|
||||
any repository when the configuration variable <var> is not defined
|
||||
even once.
|
||||
|
||||
* "git mergetool --tool-help" was broken in 2.29 and failed to list
|
||||
all the available tools.
|
||||
|
||||
* Fix for procedure to building CI test environment for mac.
|
||||
|
||||
* Newline characters in the host and path part of git:// URL are
|
||||
now forbidden.
|
||||
|
||||
* When more than one commit with the same patch ID appears on one
|
||||
side, "git log --cherry-pick A...B" did not exclude them all when a
|
||||
commit with the same patch ID appears on the other side. Now it
|
||||
does.
|
||||
|
||||
* Documentation for "git fsck" lost stale bits that has become
|
||||
incorrect.
|
||||
|
||||
* Doc for packfile URI feature has been clarified.
|
||||
|
||||
* The implementation of "git branch --sort" wrt the detached HEAD
|
||||
display has always been hacky, which has been cleaned up.
|
||||
|
||||
* Our setting of GitHub CI test jobs were a bit too eager to give up
|
||||
once there is even one failure found. Tweak the knob to allow
|
||||
other jobs keep running even when we see a failure, so that we can
|
||||
find more failures in a single run.
|
||||
|
||||
Also contains minor documentation updates and code clean-ups.
|
@ -1,8 +0,0 @@
|
||||
Git v2.30.2 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, v2.24.4, v2.25.5,
|
||||
v2.26.3, v2.27.1, v2.28.1 and v2.29.3 to address the security
|
||||
issue CVE-2021-21300; see the release notes for these versions
|
||||
for details.
|
@ -1,24 +0,0 @@
|
||||
Git v2.30.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release addresses the security issue CVE-2022-24765.
|
||||
|
||||
Fixes since v2.30.2
|
||||
-------------------
|
||||
|
||||
* Build fix on Windows.
|
||||
|
||||
* Fix `GIT_CEILING_DIRECTORIES` with Windows-style root directories.
|
||||
|
||||
* CVE-2022-24765:
|
||||
On multi-user machines, Git users might find themselves
|
||||
unexpectedly in a Git worktree, e.g. when another user created a
|
||||
repository in `C:\.git`, in a mounted network drive or in a
|
||||
scratch space. Merely having a Git-aware prompt that runs `git
|
||||
status` (or `git diff`) and navigating to a directory which is
|
||||
supposedly not a Git worktree, or opening such a directory in an
|
||||
editor or IDE such as VS Code or Atom, will potentially run
|
||||
commands defined by that other user.
|
||||
|
||||
Credit for finding this vulnerability goes to 俞晨东; The fix was
|
||||
authored by Johannes Schindelin.
|
@ -1,21 +0,0 @@
|
||||
Git v2.30.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release contains minor fix-ups for the changes that went into
|
||||
Git 2.30.3, which was made to address CVE-2022-24765.
|
||||
|
||||
* The code that was meant to parse the new `safe.directory`
|
||||
configuration variable was not checking what configuration
|
||||
variable was being fed to it, which has been corrected.
|
||||
|
||||
* '*' can be used as the value for the `safe.directory` variable to
|
||||
signal that the user considers that any directory is safe.
|
||||
|
||||
|
||||
|
||||
Derrick Stolee (2):
|
||||
t0033: add tests for safe.directory
|
||||
setup: opt-out of check with safe.directory=*
|
||||
|
||||
Matheus Valadares (1):
|
||||
setup: fix safe.directory key not being checked
|
@ -1,12 +0,0 @@
|
||||
Git v2.30.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release contains minor fix-ups for the changes that went into
|
||||
Git 2.30.3 and 2.30.4, addressing CVE-2022-29187.
|
||||
|
||||
* The safety check that verifies a safe ownership of the Git
|
||||
worktree is now extended to also cover the ownership of the Git
|
||||
directory (and the `.git` file, if there is any).
|
||||
|
||||
Carlo Marcelo Arenas Belón (1):
|
||||
setup: tighten ownership checks post CVE-2022-24765
|
@ -1,60 +0,0 @@
|
||||
Git v2.30.6 Release Notes
|
||||
=========================
|
||||
|
||||
This release addresses the security issues CVE-2022-39253 and
|
||||
CVE-2022-39260.
|
||||
|
||||
Fixes since v2.30.5
|
||||
-------------------
|
||||
|
||||
* CVE-2022-39253:
|
||||
When relying on the `--local` clone optimization, Git dereferences
|
||||
symbolic links in the source repository before creating hardlinks
|
||||
(or copies) of the dereferenced link in the destination repository.
|
||||
This can lead to surprising behavior where arbitrary files are
|
||||
present in a repository's `$GIT_DIR` when cloning from a malicious
|
||||
repository.
|
||||
|
||||
Git will no longer dereference symbolic links via the `--local`
|
||||
clone mechanism, and will instead refuse to clone repositories that
|
||||
have symbolic links present in the `$GIT_DIR/objects` directory.
|
||||
|
||||
Additionally, the value of `protocol.file.allow` is changed to be
|
||||
"user" by default.
|
||||
|
||||
* CVE-2022-39260:
|
||||
An overly-long command string given to `git shell` can result in
|
||||
overflow in `split_cmdline()`, leading to arbitrary heap writes and
|
||||
remote code execution when `git shell` is exposed and the directory
|
||||
`$HOME/git-shell-commands` exists.
|
||||
|
||||
`git shell` is taught to refuse interactive commands that are
|
||||
longer than 4MiB in size. `split_cmdline()` is hardened to reject
|
||||
inputs larger than 2GiB.
|
||||
|
||||
Credit for finding CVE-2022-39253 goes to Cory Snider of Mirantis. The
|
||||
fix was authored by Taylor Blau, with help from Johannes Schindelin.
|
||||
|
||||
Credit for finding CVE-2022-39260 goes to Kevin Backhouse of GitHub.
|
||||
The fix was authored by Kevin Backhouse, Jeff King, and Taylor Blau.
|
||||
|
||||
|
||||
Jeff King (2):
|
||||
shell: add basic tests
|
||||
shell: limit size of interactive commands
|
||||
|
||||
Kevin Backhouse (1):
|
||||
alias.c: reject too-long cmdline strings in split_cmdline()
|
||||
|
||||
Taylor Blau (11):
|
||||
builtin/clone.c: disallow `--local` clones with symlinks
|
||||
t/lib-submodule-update.sh: allow local submodules
|
||||
t/t1NNN: allow local submodules
|
||||
t/2NNNN: allow local submodules
|
||||
t/t3NNN: allow local submodules
|
||||
t/t4NNN: allow local submodules
|
||||
t/t5NNN: allow local submodules
|
||||
t/t6NNN: allow local submodules
|
||||
t/t7NNN: allow local submodules
|
||||
t/t9NNN: allow local submodules
|
||||
transport: make `protocol.file.allow` be "user" by default
|
@ -1,365 +0,0 @@
|
||||
Git 2.31 Release Notes
|
||||
======================
|
||||
|
||||
Updates since v2.30
|
||||
-------------------
|
||||
|
||||
Backward incompatible and other important changes
|
||||
|
||||
* The "pack-redundant" command, which has been left stale with almost
|
||||
unusable performance issues, now warns loudly when it gets used, as
|
||||
we no longer want to recommend its use (instead just "repack -d"
|
||||
instead).
|
||||
|
||||
* The development community has adopted Contributor Covenant v2.0 to
|
||||
update from v1.4 that we have been using.
|
||||
|
||||
* The support for deprecated PCRE1 library has been dropped.
|
||||
|
||||
* Fixes for CVE-2021-21300 in Git 2.30.2 (and earlier) is included.
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* The "--format=%(trailers)" mechanism gets enhanced to make it
|
||||
easier to design output for machine consumption.
|
||||
|
||||
* When a user does not tell "git pull" to use rebase or merge, the
|
||||
command gives a loud message telling a user to choose between
|
||||
rebase or merge but creates a merge anyway, forcing users who would
|
||||
want to rebase to redo the operation. Fix an early part of this
|
||||
problem by tightening the condition to give the message---there is
|
||||
no reason to stop or force the user to choose between rebase or
|
||||
merge if the history fast-forwards.
|
||||
|
||||
* The configuration variable 'core.abbrev' can be set to 'no' to
|
||||
force no abbreviation regardless of the hash algorithm.
|
||||
|
||||
* "git rev-parse" can be explicitly told to give output as absolute
|
||||
or relative path with the `--path-format=(absolute|relative)` option.
|
||||
|
||||
* Bash completion (in contrib/) update to make it easier for
|
||||
end-users to add completion for their custom "git" subcommands.
|
||||
|
||||
* "git maintenance" learned to drive scheduled maintenance on
|
||||
platforms whose native scheduling methods are not 'cron'.
|
||||
|
||||
* After expiring a reflog and making a single commit, the reflog for
|
||||
the branch would record a single entry that knows both @{0} and
|
||||
@{1}, but we failed to answer "what commit were we on?", i.e. @{1}
|
||||
|
||||
* "git bundle" learns "--stdin" option to read its refs from the
|
||||
standard input. Also, it now does not lose refs whey they point
|
||||
at the same object.
|
||||
|
||||
* "git log" learned a new "--diff-merges=<how>" option.
|
||||
|
||||
* "git ls-files" can and does show multiple entries when the index is
|
||||
unmerged, which is a source for confusion unless -s/-u option is in
|
||||
use. A new option --deduplicate has been introduced.
|
||||
|
||||
* `git worktree list` now annotates worktrees as prunable, shows
|
||||
locked and prunable attributes in --porcelain mode, and gained
|
||||
a --verbose option.
|
||||
|
||||
* "git clone" tries to locally check out the branch pointed at by
|
||||
HEAD of the remote repository after it is done, but the protocol
|
||||
did not convey the information necessary to do so when copying an
|
||||
empty repository. The protocol v2 learned how to do so.
|
||||
|
||||
* There are other ways than ".." for a single token to denote a
|
||||
"commit range", namely "<rev>^!" and "<rev>^-<n>", but "git
|
||||
range-diff" did not understand them.
|
||||
|
||||
* The "git range-diff" command learned "--(left|right)-only" option
|
||||
to show only one side of the compared range.
|
||||
|
||||
* "git mergetool" feeds three versions (base, local and remote) of
|
||||
a conflicted path unmodified. The command learned to optionally
|
||||
prepare these files with unconflicted parts already resolved.
|
||||
|
||||
* The .mailmap is documented to be read only from the root level of a
|
||||
working tree, but a stray file in a bare repository also was read
|
||||
by accident, which has been corrected.
|
||||
|
||||
* "git maintenance" tool learned a new "pack-refs" maintenance task.
|
||||
|
||||
* The error message given when a configuration variable that is
|
||||
expected to have a boolean value has been improved.
|
||||
|
||||
* Signed commits and tags now allow verification of objects, whose
|
||||
two object names (one in SHA-1, the other in SHA-256) are both
|
||||
signed.
|
||||
|
||||
* "git rev-list" command learned "--disk-usage" option.
|
||||
|
||||
* "git {diff,log} --{skip,rotate}-to=<path>" allows the user to
|
||||
discard diff output for early paths or move them to the end of the
|
||||
output.
|
||||
|
||||
* "git difftool" learned "--skip-to=<path>" option to restart an
|
||||
interrupted session from an arbitrary path.
|
||||
|
||||
* "git grep" has been tweaked to be limited to the sparse checkout
|
||||
paths.
|
||||
|
||||
* "git rebase --[no-]fork-point" gained a configuration variable
|
||||
rebase.forkPoint so that users do not have to keep specifying a
|
||||
non-default setting.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* A 3-year old test that was not testing anything useful has been
|
||||
corrected.
|
||||
|
||||
* Retire more names with "sha1" in it.
|
||||
|
||||
* The topological walk codepath is covered by new trace2 stats.
|
||||
|
||||
* Update the Code-of-conduct to version 2.0 from the upstream (we've
|
||||
been using version 1.4).
|
||||
|
||||
* "git mktag" validates its input using its own rules before writing
|
||||
a tag object---it has been updated to share the logic with "git
|
||||
fsck".
|
||||
|
||||
* Two new ways to feed configuration variable-value pairs via
|
||||
environment variables have been introduced, and the way
|
||||
GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
|
||||
to make it more robust.
|
||||
|
||||
* Tests have been updated so that they do not to get affected by the
|
||||
name of the default branch "git init" creates.
|
||||
|
||||
* "git fetch" learns to treat ref updates atomically in all-or-none
|
||||
fashion, just like "git push" does, with the new "--atomic" option.
|
||||
|
||||
* The peel_ref() API has been replaced with peel_iterated_oid().
|
||||
|
||||
* The .use_shell flag in struct child_process that is passed to
|
||||
run_command() API has been clarified with a bit more documentation.
|
||||
|
||||
* Document, clean-up and optimize the code around the cache-tree
|
||||
extension in the index.
|
||||
|
||||
* The ls-refs protocol operation has been optimized to narrow the
|
||||
sub-hierarchy of refs/ it walks to produce response.
|
||||
|
||||
* When removing many branches and tags, the code used to do so one
|
||||
ref at a time. There is another API it can use to delete multiple
|
||||
refs, and it makes quite a lot of performance difference when the
|
||||
refs are packed.
|
||||
|
||||
* The "pack-objects" command needs to iterate over all the tags when
|
||||
automatic tag following is enabled, but it actually iterated over
|
||||
all refs and then discarded everything outside "refs/tags/"
|
||||
hierarchy, which was quite wasteful.
|
||||
|
||||
* A perf script was made more portable.
|
||||
|
||||
* Our setting of GitHub CI test jobs were a bit too eager to give up
|
||||
once there is even one failure found. Tweak the knob to allow
|
||||
other jobs keep running even when we see a failure, so that we can
|
||||
find more failures in a single run.
|
||||
|
||||
* We've carried compatibility codepaths for compilers without
|
||||
variadic macros for quite some time, but the world may be ready for
|
||||
them to be removed. Force compilation failure on exotic platforms
|
||||
where variadic macros are not available to find out who screams in
|
||||
such a way that we can easily revert if it turns out that the world
|
||||
is not yet ready.
|
||||
|
||||
* Code clean-up to ensure our use of hashtables using object names as
|
||||
keys use the "struct object_id" objects, not the raw hash values.
|
||||
|
||||
* Lose the debugging aid that may have been useful in the past, but
|
||||
no longer is, in the "grep" codepaths.
|
||||
|
||||
* Some pretty-format specifiers do not need the data in commit object
|
||||
(e.g. "%H"), but we were over-eager to load and parse it, which has
|
||||
been made even lazier.
|
||||
|
||||
* Get rid of "GETTEXT_POISON" support altogether, which may or may
|
||||
not be controversial.
|
||||
|
||||
* Introduce an on-disk file to record revindex for packdata, which
|
||||
traditionally was always created on the fly and only in-core.
|
||||
|
||||
* The commit-graph learned to use corrected commit dates instead of
|
||||
the generation number to help topological revision traversal.
|
||||
|
||||
* Piecemeal of rewrite of "git bisect" in C continues.
|
||||
|
||||
* When a pager spawned by us exited, the trace log did not record its
|
||||
exit status correctly, which has been corrected.
|
||||
|
||||
* Removal of GIT_TEST_GETTEXT_POISON continues.
|
||||
|
||||
* The code to implement "git merge-base --independent" was poorly
|
||||
done and was kept from the very beginning of the feature.
|
||||
|
||||
* Preliminary changes to fsmonitor integration.
|
||||
|
||||
* Performance improvements for rename detection.
|
||||
|
||||
* The common code to deal with "chunked file format" that is shared
|
||||
by the multi-pack-index and commit-graph files have been factored
|
||||
out, to help codepaths for both filetypes to become more robust.
|
||||
|
||||
* The approach to "fsck" the incoming objects in "index-pack" is
|
||||
attractive for performance reasons (we have them already in core,
|
||||
inflated and ready to be inspected), but fundamentally cannot be
|
||||
applied fully when we receive more than one pack stream, as a tree
|
||||
object in one pack may refer to a blob object in another pack as
|
||||
".gitmodules", when we want to inspect blobs that are used as
|
||||
".gitmodules" file, for example. Teach "index-pack" to emit
|
||||
objects that must be inspected later and check them in the calling
|
||||
"fetch-pack" process.
|
||||
|
||||
* The logic to handle "trailer" related placeholders in the
|
||||
"--format=" mechanisms in the "log" family and "for-each-ref"
|
||||
family is getting unified.
|
||||
|
||||
* Raise the buffer size used when writing the index file out from
|
||||
(obviously too small) 8kB to (clearly sufficiently large) 128kB.
|
||||
|
||||
* It is reported that open() on some platforms (e.g. macOS Big Sur)
|
||||
can return EINTR even though our timers are set up with SA_RESTART.
|
||||
A workaround has been implemented and enabled for macOS to rerun
|
||||
open() transparently from the caller when this happens.
|
||||
|
||||
|
||||
Fixes since v2.30
|
||||
-----------------
|
||||
|
||||
* Diagnose command line error of "git rebase" early.
|
||||
|
||||
* Clean up option descriptions in "git cmd --help".
|
||||
|
||||
* "git stash" did not work well in a sparsely checked out working
|
||||
tree.
|
||||
|
||||
* Some tests expect that "ls -l" output has either '-' or 'x' for
|
||||
group executable bit, but setgid bit can be inherited from parent
|
||||
directory and make these fields 'S' or 's' instead, causing test
|
||||
failures.
|
||||
|
||||
* "git for-each-repo --config=<var> <cmd>" should not run <cmd> for
|
||||
any repository when the configuration variable <var> is not defined
|
||||
even once.
|
||||
|
||||
* Fix 2.29 regression where "git mergetool --tool-help" fails to list
|
||||
all the available tools.
|
||||
|
||||
* Fix for procedure to building CI test environment for mac.
|
||||
|
||||
* The implementation of "git branch --sort" wrt the detached HEAD
|
||||
display has always been hacky, which has been cleaned up.
|
||||
|
||||
* Newline characters in the host and path part of git:// URL are
|
||||
now forbidden.
|
||||
|
||||
* "git diff" showed a submodule working tree with untracked cruft as
|
||||
"Submodule commit <objectname>-dirty", but a natural expectation is
|
||||
that the "-dirty" indicator would align with "git describe --dirty",
|
||||
which does not consider having untracked files in the working tree
|
||||
as source of dirtiness. The inconsistency has been fixed.
|
||||
|
||||
* When more than one commit with the same patch ID appears on one
|
||||
side, "git log --cherry-pick A...B" did not exclude them all when a
|
||||
commit with the same patch ID appears on the other side. Now it
|
||||
does.
|
||||
|
||||
* Documentation for "git fsck" lost stale bits that has become
|
||||
incorrect.
|
||||
|
||||
* Doc fix for packfile URI feature.
|
||||
|
||||
* When "git rebase -i" processes "fixup" insn, there is no reason to
|
||||
clean up the commit log message, but we did the usual stripspace
|
||||
processing. This has been corrected.
|
||||
(merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).
|
||||
|
||||
* Fix in passing custom args from "git clone" to "upload-pack" on the
|
||||
other side.
|
||||
(merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).
|
||||
|
||||
* The command line completion (in contrib/) completed "git branch -d"
|
||||
with branch names, but "git branch -D" offered tagnames in addition,
|
||||
which has been corrected. "git branch -M" had the same problem.
|
||||
(merge 27dc071b9a jk/complete-branch-force-delete later to maint).
|
||||
|
||||
* When commands are started from a subdirectory, they may have to
|
||||
compare the path to the subdirectory (called prefix and found out
|
||||
from $(pwd)) with the tracked paths. On macOS, $(pwd) and
|
||||
readdir() yield decomposed path, while the tracked paths are
|
||||
usually normalized to the precomposed form, causing mismatch. This
|
||||
has been fixed by taking the same approach used to normalize the
|
||||
command line arguments.
|
||||
(merge 5c327502db tb/precompose-prefix-too later to maint).
|
||||
|
||||
* Even though invocations of "die()" were logged to the trace2
|
||||
system, "BUG()"s were not, which has been corrected.
|
||||
(merge 0a9dde4a04 jt/trace2-BUG later to maint).
|
||||
|
||||
* "git grep --untracked" is meant to be "let's ALSO find in these
|
||||
files on the filesystem" when looking for matches in the working
|
||||
tree files, and does not make any sense if the primary search is
|
||||
done against the index, or the tree objects. The "--cached" and
|
||||
"--untracked" options have been marked as mutually incompatible.
|
||||
(merge 0c5d83b248 mt/grep-cached-untracked later to maint).
|
||||
|
||||
* Fix "git fsck --name-objects" which apparently has not been used by
|
||||
anybody who is motivated enough to report breakage.
|
||||
(merge e89f89361c js/fsck-name-objects-fix later to maint).
|
||||
|
||||
* Avoid individual tests in t5411 from getting affected by each other
|
||||
by forcing them to use separate output files during the test.
|
||||
(merge 822ee894f6 jx/t5411-unique-filenames later to maint).
|
||||
|
||||
* Test to make sure "git rev-parse one-thing one-thing" gives
|
||||
the same thing twice (when one-thing is --since=X).
|
||||
(merge a5cdca4520 ew/rev-parse-since-test later to maint).
|
||||
|
||||
* When certain features (e.g. grafts) used in the repository are
|
||||
incompatible with the use of the commit-graph, we used to silently
|
||||
turned commit-graph off; we now tell the user what we are doing.
|
||||
(merge c85eec7fc3 js/commit-graph-warning later to maint).
|
||||
|
||||
* Objects that lost references can be pruned away, even when they
|
||||
have notes attached to it (and these notes will become dangling,
|
||||
which in turn can be pruned with "git notes prune"). This has been
|
||||
clarified in the documentation.
|
||||
(merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).
|
||||
|
||||
* The error codepath around the "--temp/--prefix" feature of "git
|
||||
checkout-index" has been improved.
|
||||
(merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).
|
||||
|
||||
* The "git maintenance register" command had trouble registering bare
|
||||
repositories, which had been corrected.
|
||||
|
||||
* A handful of multi-word configuration variable names in
|
||||
documentation that are spelled in all lowercase have been corrected
|
||||
to use the more canonical camelCase.
|
||||
(merge 7dd0eaa39c dl/doc-config-camelcase later to maint).
|
||||
|
||||
* "git push $there --delete ''" should have been diagnosed as an
|
||||
error, but instead turned into a matching push, which has been
|
||||
corrected.
|
||||
(merge 20e416409f jc/push-delete-nothing later to maint).
|
||||
|
||||
* Test script modernization.
|
||||
(merge 488acf15df sv/t7001-modernize later to maint).
|
||||
|
||||
* An under-allocation for the untracked cache data has been corrected.
|
||||
(merge 6347d649bc jh/untracked-cache-fix later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
|
||||
(merge 9d336655ba js/doc-proto-v2-response-end later to maint).
|
||||
(merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
|
||||
(merge 3a837b58e3 cw/pack-config-doc later to maint).
|
||||
(merge 01168a9d89 ug/doc-commit-approxidate later to maint).
|
||||
(merge b865734760 js/params-vs-args later to maint).
|
@ -1,27 +0,0 @@
|
||||
Git 2.31.1 Release Notes
|
||||
========================
|
||||
|
||||
Fixes since v2.31
|
||||
-----------------
|
||||
|
||||
* The fsmonitor interface read from its input without making sure
|
||||
there is something to read from. This bug is new in 2.31
|
||||
timeframe.
|
||||
|
||||
* The data structure used by fsmonitor interface was not properly
|
||||
duplicated during an in-core merge, leading to use-after-free etc.
|
||||
|
||||
* "git bisect" reimplemented more in C during 2.30 timeframe did not
|
||||
take an annotated tag as a good/bad endpoint well. This regression
|
||||
has been corrected.
|
||||
|
||||
* Fix macros that can silently inject unintended null-statements.
|
||||
|
||||
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
|
||||
|
||||
* Update insn in Makefile comments to run fuzz-all target.
|
||||
|
||||
* Fix a corner case bug in "git mv" on case insensitive systems,
|
||||
which was introduced in 2.29 timeframe.
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
@ -1,6 +0,0 @@
|
||||
Git v2.31.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.3 to address
|
||||
the security issue CVE-2022-24765; see the release notes for that
|
||||
version for details.
|
@ -1,4 +0,0 @@
|
||||
Git Documentation/RelNotes/2.31.3.txt Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.31.3.
|
@ -1,6 +0,0 @@
|
||||
Git v2.31.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.5 to address
|
||||
the security issue CVE-2022-29187; see the release notes for that
|
||||
version for details.
|
@ -1,5 +0,0 @@
|
||||
Git v2.31.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.30.6; see
|
||||
the release notes for that version for details.
|
@ -1,416 +0,0 @@
|
||||
Git 2.32 Release Notes
|
||||
======================
|
||||
|
||||
Backward compatibility notes
|
||||
----------------------------
|
||||
|
||||
* ".gitattributes", ".gitignore", and ".mailmap" files that are
|
||||
symbolic links are ignored.
|
||||
|
||||
* "git apply --3way" used to first attempt a straight application,
|
||||
and only fell back to the 3-way merge algorithm when the stright
|
||||
application failed. Starting with this version, the command will
|
||||
first try the 3-way merge algorithm and only when it fails (either
|
||||
resulting with conflict or the base versions of blobs are missing),
|
||||
falls back to the usual patch application.
|
||||
|
||||
|
||||
Updates since v2.31
|
||||
-------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* It does not make sense to make ".gitattributes", ".gitignore" and
|
||||
".mailmap" symlinks, as they are supposed to be usable from the
|
||||
object store (think: bare repositories where HEAD:.mailmap etc. are
|
||||
used). When these files are symbolic links, we used to read the
|
||||
contents of the files pointed by them by mistake, which has been
|
||||
corrected.
|
||||
|
||||
* "git stash show" learned to optionally show untracked part of the
|
||||
stash.
|
||||
|
||||
* "git log --format='...'" learned "%(describe)" placeholder.
|
||||
|
||||
* "git repack" so far has been only capable of repacking everything
|
||||
under the sun into a single pack (or split by size). A cleverer
|
||||
strategy to reduce the cost of repacking a repository has been
|
||||
introduced.
|
||||
|
||||
* The http codepath learned to let the credential layer to cache the
|
||||
password used to unlock a certificate that has successfully been
|
||||
used.
|
||||
|
||||
* "git commit --fixup=<commit>", which was to tweak the changes made
|
||||
to the contents while keeping the original log message intact,
|
||||
learned "--fixup=(amend|reword):<commit>", that can be used to
|
||||
tweak both the message and the contents, and only the message,
|
||||
respectively.
|
||||
|
||||
* "git send-email" learned to honor the core.hooksPath configuration.
|
||||
|
||||
* "git format-patch -v<n>" learned to allow a reroll count that is
|
||||
not an integer.
|
||||
|
||||
* "git commit" learned "--trailer <key>[=<value>]" option; together
|
||||
with the interpret-trailers command, this will make it easier to
|
||||
support custom trailers.
|
||||
|
||||
* "git clone --reject-shallow" option fails the clone as soon as we
|
||||
notice that we are cloning from a shallow repository.
|
||||
|
||||
* A configuration variable has been added to force tips of certain
|
||||
refs to be given a reachability bitmap.
|
||||
|
||||
* "gitweb" learned "e-mail privacy" feature to redact strings that
|
||||
look like e-mail addresses on various pages.
|
||||
|
||||
* "git apply --3way" has always been "to fall back to 3-way merge
|
||||
only when straight application fails". Swap the order of falling
|
||||
back so that 3-way is always attempted first (only when the option
|
||||
is given, of course) and then straight patch application is used as
|
||||
a fallback when it fails.
|
||||
|
||||
* "git apply" now takes "--3way" and "--cached" at the same time, and
|
||||
work and record results only in the index.
|
||||
|
||||
* The command line completion (in contrib/) has learned that
|
||||
CHERRY_PICK_HEAD is a possible pseudo-ref.
|
||||
|
||||
* Userdiff patterns for "Scheme" has been added.
|
||||
|
||||
* "git log" learned "--diff-merges=<style>" option, with an
|
||||
associated configuration variable log.diffMerges.
|
||||
|
||||
* "git log --format=..." placeholders learned %ah/%ch placeholders to
|
||||
request the --date=human output.
|
||||
|
||||
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
|
||||
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
|
||||
users specify from which file to read the system-wide configuration
|
||||
(setting it to an empty file would essentially be the same as
|
||||
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
|
||||
per-user configuration in $HOME/.gitconfig.
|
||||
|
||||
* "git add" and "git rm" learned not to touch those paths that are
|
||||
outside of sparse checkout.
|
||||
|
||||
* "git rev-list" learns the "--filter=object:type=<type>" option,
|
||||
which can be used to exclude objects of the given kind from the
|
||||
packfile generated by pack-objects.
|
||||
|
||||
* The command line completion (in contrib/) for "git stash" has been
|
||||
updated.
|
||||
|
||||
* "git subtree" updates.
|
||||
|
||||
* It is now documented that "format-patch" skips merges.
|
||||
|
||||
* Options to "git pack-objects" that take numeric values like
|
||||
--window and --depth should not accept negative values; the input
|
||||
validation has been tightened.
|
||||
|
||||
* The way the command line specified by the trailer.<token>.command
|
||||
configuration variable receives the end-user supplied value was
|
||||
both error prone and misleading. An alternative to achieve the
|
||||
same goal in a safer and more intuitive way has been added, as
|
||||
the trailer.<token>.cmd configuration variable, to replace it.
|
||||
|
||||
* "git add -i --dry-run" does not dry-run, which was surprising. The
|
||||
combination of options has taught to error out.
|
||||
|
||||
* "git push" learns to discover common ancestor with the receiving
|
||||
end over protocol v2. This will hopefully make "git push" as
|
||||
efficient as "git fetch" in avoiding objects from getting
|
||||
transferred unnecessarily.
|
||||
|
||||
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
|
||||
control how lines ending with CRLF wrapped in base64 or qp are
|
||||
handled.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* Rename detection rework continues.
|
||||
|
||||
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
|
||||
prerequisites to catch broken tests that depend on the side effects
|
||||
of optional pieces, but did not work at all when negative
|
||||
prerequisites were involved.
|
||||
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
|
||||
|
||||
* "git diff-index" codepath has been taught to trust fsmonitor status
|
||||
to reduce number of lstat() calls.
|
||||
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
|
||||
|
||||
* Reorganize Makefile to allow building git.o and other essential
|
||||
objects without extra stuff needed only for testing.
|
||||
|
||||
* Preparatory API changes for parallel checkout.
|
||||
|
||||
* A simple IPC interface gets introduced to build services like
|
||||
fsmonitor on top.
|
||||
|
||||
* Fsck API clean-up.
|
||||
|
||||
* SECURITY.md that is facing individual contributors and end users
|
||||
has been introduced. Also a procedure to follow when preparing
|
||||
embargoed releases has been spelled out.
|
||||
(merge 09420b7648 js/security-md later to maint).
|
||||
|
||||
* Optimize "rev-list --use-bitmap-index --objects" corner case that
|
||||
uses negative tags as the stopping points.
|
||||
|
||||
* CMake update for vsbuild.
|
||||
|
||||
* An on-disk reverse-index to map the in-pack location of an object
|
||||
back to its object name across multiple packfiles is introduced.
|
||||
|
||||
* Generate [ec]tags under $(QUIET_GEN).
|
||||
|
||||
* Clean-up codepaths that implements "git send-email --validate"
|
||||
option and improves the message from it.
|
||||
|
||||
* The last remnant of gettext-poison has been removed.
|
||||
|
||||
* The test framework has been taught to optionally turn the default
|
||||
merge strategy to "ort" throughout the system where we use
|
||||
three-way merges internally, like cherry-pick, rebase etc.,
|
||||
primarily to enhance its test coverage (the strategy has been
|
||||
available as an explicit "-s ort" choice).
|
||||
|
||||
* A bit of code clean-up and a lot of test clean-up around userdiff
|
||||
area.
|
||||
|
||||
* Handling of "promisor packs" that allows certain objects to be
|
||||
missing and lazily retrievable has been optimized (a bit).
|
||||
|
||||
* When packet_write() fails, we gave an extra error message
|
||||
unnecessarily, which has been corrected.
|
||||
|
||||
* The checkout machinery has been taught to perform the actual
|
||||
write-out of the files in parallel when able.
|
||||
|
||||
* Show errno in the trace output in the error codepath that calls
|
||||
read_raw_ref method.
|
||||
|
||||
* Effort to make the command line completion (in contrib/) safe with
|
||||
"set -u" continues.
|
||||
|
||||
* Tweak a few tests for "log --format=..." that show timestamps in
|
||||
various formats.
|
||||
|
||||
* The reflog expiry machinery has been taught to emit trace events.
|
||||
|
||||
* Over-the-wire protocol learns a new request type to ask for object
|
||||
sizes given a list of object names.
|
||||
|
||||
|
||||
Fixes since v2.31
|
||||
-----------------
|
||||
|
||||
* The fsmonitor interface read from its input without making sure
|
||||
there is something to read from. This bug is new in 2.31
|
||||
timeframe.
|
||||
|
||||
* The data structure used by fsmonitor interface was not properly
|
||||
duplicated during an in-core merge, leading to use-after-free etc.
|
||||
|
||||
* "git bisect" reimplemented more in C during 2.30 timeframe did not
|
||||
take an annotated tag as a good/bad endpoint well. This regression
|
||||
has been corrected.
|
||||
|
||||
* Fix macros that can silently inject unintended null-statements.
|
||||
|
||||
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
|
||||
|
||||
* Update insn in Makefile comments to run fuzz-all target.
|
||||
|
||||
* Fix a corner case bug in "git mv" on case insensitive systems,
|
||||
which was introduced in 2.29 timeframe.
|
||||
|
||||
* We had a code to diagnose and die cleanly when a required
|
||||
clean/smudge filter is missing, but an assert before that
|
||||
unnecessarily fired, hiding the end-user facing die() message.
|
||||
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
|
||||
|
||||
* Update C code that sets a few configuration variables when a remote
|
||||
is configured so that it spells configuration variable names in the
|
||||
canonical camelCase.
|
||||
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
|
||||
|
||||
* A new configuration variable has been introduced to allow choosing
|
||||
which version of the generation number gets used in the
|
||||
commit-graph file.
|
||||
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
|
||||
|
||||
* Perf test update to work better in secondary worktrees.
|
||||
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
|
||||
|
||||
* Updates to memory allocation code around the use of pcre2 library.
|
||||
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
|
||||
|
||||
* "git -c core.bare=false clone --bare ..." would have segfaulted,
|
||||
which has been corrected.
|
||||
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
|
||||
|
||||
* When "git checkout" removes a path that does not exist in the
|
||||
commit it is checking out, it wasn't careful enough not to follow
|
||||
symbolic links, which has been corrected.
|
||||
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
|
||||
|
||||
* A few option description strings started with capital letters,
|
||||
which were corrected.
|
||||
(merge 5ee90326dc cc/downcase-opt-help later to maint).
|
||||
|
||||
* Plug or annotate remaining leaks that trigger while running the
|
||||
very basic set of tests.
|
||||
(merge 68ffe095a2 ah/plugleaks later to maint).
|
||||
|
||||
* The hashwrite() API uses a buffering mechanism to avoid calling
|
||||
write(2) too frequently. This logic has been refactored to be
|
||||
easier to understand.
|
||||
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
|
||||
|
||||
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
|
||||
the editor as expected (e.g. "revert --no-edit" after a conflict
|
||||
still asked to edit the message), which has been corrected.
|
||||
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
|
||||
|
||||
* "git daemon" has been tightened against systems that take backslash
|
||||
as directory separator.
|
||||
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
|
||||
|
||||
* A NULL-dereference bug has been corrected in an error codepath in
|
||||
"git for-each-ref", "git branch --list" etc.
|
||||
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
|
||||
|
||||
* Streamline the codepath to fix the UTF-8 encoding issues in the
|
||||
argv[] and the prefix on macOS.
|
||||
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
|
||||
|
||||
* The command-line completion script (in contrib/) had a couple of
|
||||
references that would have given a warning under the "-u" (nounset)
|
||||
option.
|
||||
(merge c5c0548d79 vs/completion-with-set-u later to maint).
|
||||
|
||||
* When "git pack-objects" makes a literal copy of a part of existing
|
||||
packfile using the reachability bitmaps, its update to the progress
|
||||
meter was broken.
|
||||
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
|
||||
|
||||
* The dependencies for config-list.h and command-list.h were broken
|
||||
when the former was split out of the latter, which has been
|
||||
corrected.
|
||||
(merge 56550ea718 sg/bugreport-fixes later to maint).
|
||||
|
||||
* "git push --quiet --set-upstream" was not quiet when setting the
|
||||
upstream branch configuration, which has been corrected.
|
||||
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
|
||||
|
||||
* The prefetch task in "git maintenance" assumed that "git fetch"
|
||||
from any remote would fetch all its local branches, which would
|
||||
fetch too much if the user is interested in only a subset of
|
||||
branches there.
|
||||
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
|
||||
|
||||
* Clarify that pathnames recorded in Git trees are most often (but
|
||||
not necessarily) encoded in UTF-8.
|
||||
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
|
||||
|
||||
* "git --config-env var=val cmd" weren't accepted (only
|
||||
--config-env=var=val was).
|
||||
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
|
||||
|
||||
* When the reachability bitmap is in effect, the "do not lose
|
||||
recently created objects and those that are reachable from them"
|
||||
safety to protect us from races were disabled by mistake, which has
|
||||
been corrected.
|
||||
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
|
||||
|
||||
* Cygwin pathname handling fix.
|
||||
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
|
||||
|
||||
* "git rebase --[no-]reschedule-failed-exec" did not work well with
|
||||
its configuration variable, which has been corrected.
|
||||
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
|
||||
|
||||
* Portability fix for command line completion script (in contrib/).
|
||||
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
|
||||
|
||||
* "git repack -A -d" in a partial clone unnecessarily loosened
|
||||
objects in promisor pack.
|
||||
|
||||
* "git bisect skip" when custom words are used for new/old did not
|
||||
work, which has been corrected.
|
||||
|
||||
* A few variants of informational message "Already up-to-date" has
|
||||
been rephrased.
|
||||
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
|
||||
|
||||
* "git submodule update --quiet" did not propagate the quiet option
|
||||
down to underlying "git fetch", which has been corrected.
|
||||
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
|
||||
|
||||
* Document that our test can use "local" keyword.
|
||||
(merge a84fd3bcc6 jc/test-allows-local later to maint).
|
||||
|
||||
* The word-diff mode has been taught to work better with a word
|
||||
regexp that can match an empty string.
|
||||
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
|
||||
|
||||
* "git p4" learned to find branch points more efficiently.
|
||||
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
|
||||
|
||||
* When "git update-ref -d" removes a ref that is packed, it left
|
||||
empty directories under $GIT_DIR/refs/ for
|
||||
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
|
||||
|
||||
* "git clean" and "git ls-files -i" had confusion around working on
|
||||
or showing ignored paths inside an ignored directory, which has
|
||||
been corrected.
|
||||
(merge b548f0f156 en/dir-traversal later to maint).
|
||||
|
||||
* The handling of "%(push)" formatting element of "for-each-ref" and
|
||||
friends was broken when the same codepath started handling
|
||||
"%(push:<what>)", which has been corrected.
|
||||
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
|
||||
|
||||
* The bash prompt script (in contrib/) did not work under "set -u".
|
||||
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
|
||||
|
||||
* The "chainlint" feature in the test framework is a handy way to
|
||||
catch common mistakes in writing new tests, but tends to get
|
||||
expensive. An knob to selectively disable it has been introduced
|
||||
to help running tests that the developer has not modified.
|
||||
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
|
||||
|
||||
* The "rev-parse" command did not diagnose the lack of argument to
|
||||
"--path-format" option, which was introduced in v2.31 era, which
|
||||
has been corrected.
|
||||
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
|
||||
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
|
||||
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
|
||||
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
|
||||
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
|
||||
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
|
||||
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
|
||||
(merge 47957485b3 ab/read-tree later to maint).
|
||||
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
|
||||
(merge 76593c09bb ab/detox-gettext-tests later to maint).
|
||||
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
|
||||
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
|
||||
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
|
||||
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
|
||||
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
|
||||
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
|
||||
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
|
||||
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
|
||||
(merge f91371b948 pw/patience-diff-clean-up later to maint).
|
||||
(merge 3a7f0908b6 mt/clean-clean later to maint).
|
||||
(merge d4e2d15a8b ab/streaming-simplify later to maint).
|
||||
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
|
||||
(merge e6f68f62e0 ls/typofix later to maint).
|
@ -1,6 +0,0 @@
|
||||
Git v2.32.1 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.3 and
|
||||
v2.31.2 to address the security issue CVE-2022-24765; see the
|
||||
release notes for these versions for details.
|
@ -1,4 +0,0 @@
|
||||
Git Documentation/RelNotes/2.32.2.txt Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.32.2.
|
@ -1,6 +0,0 @@
|
||||
Git v2.32.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.5 and
|
||||
v2.31.4 to address the security issue CVE-2022-29187; see the
|
||||
release notes for these versions for details.
|
@ -1,5 +0,0 @@
|
||||
Git v2.32.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.30.6; see
|
||||
the release notes for that version for details.
|
@ -1,279 +0,0 @@
|
||||
Git 2.33 Release Notes
|
||||
======================
|
||||
|
||||
Updates since Git 2.32
|
||||
----------------------
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* "git send-email" learned the "--sendmail-cmd" command line option
|
||||
and the "sendemail.sendmailCmd" configuration variable, which is a
|
||||
more sensible approach than the current way of repurposing the
|
||||
"smtp-server" that is meant to name the server to instead name the
|
||||
command to talk to the server.
|
||||
|
||||
* The userdiff pattern for C# learned the token "record".
|
||||
|
||||
* "git rev-list" learns to omit the "commit <object-name>" header
|
||||
lines from the output with the `--no-commit-header` option.
|
||||
|
||||
* "git worktree add --lock" learned to record why the worktree is
|
||||
locked with a custom message.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* The code to handle the "--format" option in "for-each-ref" and
|
||||
friends made too many string comparisons on %(atom)s used in the
|
||||
format string, which has been corrected by converting them into
|
||||
enum when the format string is parsed.
|
||||
|
||||
* Use the hashfile API in the codepath that writes the index file to
|
||||
reduce code duplication.
|
||||
|
||||
* Repeated rename detections in a sequence of mergy operations have
|
||||
been optimized out for the 'ort' merge strategy.
|
||||
|
||||
* Preliminary clean-up of tests before the main reftable changes
|
||||
hits the codebase.
|
||||
|
||||
* The backend for "diff -G/-S" has been updated to use pcre2 engine
|
||||
when available.
|
||||
|
||||
* Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.
|
||||
|
||||
* Code cleanup around struct_type_init() functions.
|
||||
|
||||
* "git send-email" optimization.
|
||||
|
||||
* GitHub Actions / CI update.
|
||||
(merge 0dc787a9f2 js/ci-windows-update later to maint).
|
||||
|
||||
* Object accesses in repositories with many alternate object store
|
||||
have been optimized.
|
||||
|
||||
* "git log" has been optimized not to waste cycles to load ref
|
||||
decoration data that may not be needed.
|
||||
|
||||
* Many "printf"-like helper functions we have have been annotated
|
||||
with __attribute__() to catch placeholder/parameter mismatches.
|
||||
|
||||
* Tests that cover protocol bits have been updated and helpers
|
||||
used there have been consolidated.
|
||||
|
||||
* The CI gained a new job to run "make sparse" check.
|
||||
|
||||
* "git status" codepath learned to work with sparsely populated index
|
||||
without hydrating it fully.
|
||||
|
||||
* A guideline for gender neutral documentation has been added.
|
||||
|
||||
* Documentation on "git diff -l<n>" and diff.renameLimit have been
|
||||
updated, and the defaults for these limits have been raised.
|
||||
|
||||
* The completion support used to offer alternate spelling of options
|
||||
that exist only for compatibility, which has been corrected.
|
||||
|
||||
* "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
|
||||
been corrected.
|
||||
|
||||
* "git bundle" gained more test coverage.
|
||||
|
||||
* "git read-tree" had a codepath where blobs are fetched one-by-one
|
||||
from the promisor remote, which has been corrected to fetch in bulk.
|
||||
|
||||
* Rewrite of "git submodule" in C continues.
|
||||
|
||||
* "git checkout" and "git commit" learn to work without unnecessarily
|
||||
expanding sparse indexes.
|
||||
|
||||
|
||||
Fixes since v2.32
|
||||
-----------------
|
||||
|
||||
* We historically rejected a very short string as an author name
|
||||
while accepting a patch e-mail, which has been loosened.
|
||||
(merge 72ee47ceeb ef/mailinfo-short-name later to maint).
|
||||
|
||||
* The parallel checkout codepath did not initialize object ID field
|
||||
used to talk to the worker processes in a futureproof way.
|
||||
|
||||
* Rewrite code that triggers undefined behaviour warning.
|
||||
(merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).
|
||||
|
||||
* The description of "fast-forward" in the glossary has been updated.
|
||||
(merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).
|
||||
|
||||
* Recent "git clone" left a temporary directory behind when the
|
||||
transport layer returned an failure.
|
||||
(merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).
|
||||
|
||||
* "git fetch" over protocol v2 left its side of the socket open after
|
||||
it finished speaking, which unnecessarily wasted the resource on
|
||||
the other side.
|
||||
(merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).
|
||||
|
||||
* The command line completion (in contrib/) learned that "git diff"
|
||||
takes the "--anchored" option.
|
||||
(merge d1e7c2cac9 tb/complete-diff-anchored later to maint).
|
||||
|
||||
* "git-svn" tests assumed that "locale -a", which is used to pick an
|
||||
available UTF-8 locale, is available everywhere. A knob has been
|
||||
introduced to allow testers to specify a suitable locale to use.
|
||||
(merge 482c962de4 dd/svn-test-wo-locale-a later to maint).
|
||||
|
||||
* Update "git subtree" to work better on Windows.
|
||||
(merge 77f37de39f js/subtree-on-windows-fix later to maint).
|
||||
|
||||
* Remove multimail from contrib/
|
||||
(merge f74d11471f js/no-more-multimail later to maint).
|
||||
|
||||
* Make the codebase MSAN clean.
|
||||
(merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).
|
||||
|
||||
* Work around inefficient glob substitution in older versions of bash
|
||||
by rewriting parts of a test.
|
||||
(merge eb87c6f559 jx/t6020-with-older-bash later to maint).
|
||||
|
||||
* Avoid duplicated work while building reachability bitmaps.
|
||||
(merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).
|
||||
|
||||
* We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
|
||||
update, which got fixed.
|
||||
|
||||
* The side-band demultiplexer that is used to display progress output
|
||||
from the remote end did not clear the line properly when the end of
|
||||
line hits at a packet boundary, which has been corrected.
|
||||
|
||||
* Some test scripts assumed that readlink(1) was universally
|
||||
installed and available, which is not the case.
|
||||
(merge 7c0afdf23c jk/test-without-readlink-1 later to maint).
|
||||
|
||||
* Recent update to completion script (in contrib/) broke those who
|
||||
use the __git_complete helper to define completion to their custom
|
||||
command.
|
||||
(merge cea232194d fw/complete-cmd-idx-fix later to maint).
|
||||
|
||||
* Output from some of our tests were affected by the width of the
|
||||
terminal that they were run in, which has been corrected by
|
||||
exporting a fixed value in the COLUMNS environment.
|
||||
(merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).
|
||||
|
||||
* On Windows, mergetool has been taught to find kdiff3.exe just like
|
||||
it finds winmerge.exe.
|
||||
(merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).
|
||||
|
||||
* When we cannot figure out how wide the terminal is, we use a
|
||||
fallback value of 80 ourselves (which cannot be avoided), but when
|
||||
we run the pager, we export it in COLUMNS, which forces the pager
|
||||
to use the hardcoded value, even when the pager is perfectly
|
||||
capable to figure it out itself. Stop exporting COLUMNS when we
|
||||
fall back on the hardcoded default value for our own use.
|
||||
(merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).
|
||||
|
||||
* "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
|
||||
use and did not ask for certain object traits.
|
||||
(merge ee02ac6164 zh/cat-file-batch-fix later to maint).
|
||||
|
||||
* Some code and doc clarification around "git push".
|
||||
|
||||
* The "union" conflict resultion variant misbehaved when used with
|
||||
binary merge driver.
|
||||
(merge 382b601acd jk/union-merge-binary later to maint).
|
||||
|
||||
* Prevent "git p4" from failing to submit changes to binary file.
|
||||
(merge 54662d5958 dc/p4-binary-submit-fix later to maint).
|
||||
|
||||
* "git grep --and -e foo" ought to have been diagnosed as an error
|
||||
but instead segfaulted, which has been corrected.
|
||||
(merge fe7fe62d8d rs/grep-parser-fix later to maint).
|
||||
|
||||
* The merge code had funny interactions between content based rename
|
||||
detection and directory rename detection.
|
||||
(merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).
|
||||
|
||||
* When rebuilding the multi-pack index file reusing an existing one,
|
||||
we used to blindly trust the existing file and ended up carrying
|
||||
corrupted data into the updated file, which has been corrected.
|
||||
(merge f89ecf7988 tb/midx-use-checksum later to maint).
|
||||
|
||||
* Update the location of system-side configuration file on Windows.
|
||||
(merge e355307692 js/gfw-system-config-loc-fix later to maint).
|
||||
|
||||
* Code recently added to support common ancestry negotiation during
|
||||
"git push" did not sanity check its arguments carefully enough.
|
||||
(merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).
|
||||
|
||||
* Update the documentation not to assume users are of certain gender
|
||||
and adds to guidelines to do so.
|
||||
(merge 46a237f42f ds/gender-neutral-doc later to maint).
|
||||
|
||||
* "git commit --allow-empty-message" won't abort the operation upon
|
||||
an empty message, but the hint shown in the editor said otherwise.
|
||||
(merge 6f70f00b4f hj/commit-allow-empty-message later to maint).
|
||||
|
||||
* The code that gives an error message in "git multi-pack-index" when
|
||||
no subcommand is given tried to print a NULL pointer as a strong,
|
||||
which has been corrected.
|
||||
(merge 88617d11f9 tb/reverse-midx later to maint).
|
||||
|
||||
* CI update.
|
||||
(merge a066a90db6 js/ci-check-whitespace-updates later to maint).
|
||||
|
||||
* Documentation fix for "git pull --rebase=no".
|
||||
(merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).
|
||||
|
||||
* A race between repacking and using pack bitmaps has been corrected.
|
||||
(merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).
|
||||
|
||||
* The local changes stashed by "git merge --autostash" were lost when
|
||||
the merge failed in certain ways, which has been corrected.
|
||||
|
||||
* Windows rmdir() equivalent behaves differently from POSIX ones in
|
||||
that when used on a symbolic link that points at a directory, the
|
||||
target directory gets removed, which has been corrected.
|
||||
(merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge bfe35a6165 ah/doc-describe later to maint).
|
||||
(merge f302c1e4aa jc/clarify-revision-range later to maint).
|
||||
(merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
|
||||
(merge a84216c684 jk/doc-color-pager later to maint).
|
||||
(merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
|
||||
(merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
|
||||
(merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
|
||||
(merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
|
||||
(merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
|
||||
(merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
|
||||
(merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
|
||||
(merge abcb66c614 ar/typofix later to maint).
|
||||
(merge 9853830787 ah/graph-typofix later to maint).
|
||||
(merge aac578492d ab/config-hooks-path-testfix later to maint).
|
||||
(merge 98c7656a18 ar/more-typofix later to maint).
|
||||
(merge 6fb9195f6c jk/doc-max-pack-size later to maint).
|
||||
(merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
|
||||
(merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
|
||||
(merge 338abb0f04 ab/cmd-foo-should-return later to maint).
|
||||
(merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
|
||||
(merge b7b793d1e7 ab/progress-cleanup later to maint).
|
||||
(merge d94f9b8e90 ba/object-info later to maint).
|
||||
(merge 52ff891c03 ar/test-code-cleanup later to maint).
|
||||
(merge a0538e5c8b dd/document-log-decorate-default later to maint).
|
||||
(merge ce24797d38 mr/cmake later to maint).
|
||||
(merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
|
||||
(merge 9fffc38583 bk/doc-commit-typofix later to maint).
|
||||
(merge 1cf823d8f0 ks/submodule-cleanup later to maint).
|
||||
(merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
|
||||
(merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
|
||||
(merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
|
||||
(merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
|
||||
(merge b1d87fbaf1 jk/typofix later to maint).
|
||||
(merge e04170697a ab/gitignore-discovery-doc later to maint).
|
||||
(merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
|
||||
(merge eb448631fb dl/diff-merge-base later to maint).
|
||||
(merge c510928a25 hn/refs-debug-empty-prefix later to maint).
|
||||
(merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
|
||||
(merge 878b399734 pb/submodule-recurse-doc later to maint).
|
||||
(merge 734283855f jk/config-env-doc later to maint).
|
||||
(merge 482e1488a9 ab/getcwd-test later to maint).
|
||||
(merge f0b922473e ar/doc-markup-fix later to maint).
|
@ -1,138 +0,0 @@
|
||||
Git 2.33.1 Release Notes
|
||||
========================
|
||||
|
||||
This primarily is to backport various fixes accumulated during the
|
||||
development towards Git 2.34, the next feature release.
|
||||
|
||||
|
||||
Fixes since v2.33
|
||||
-----------------
|
||||
|
||||
* The unicode character width table (used for output alignment) has
|
||||
been updated.
|
||||
|
||||
* Input validation of "git pack-objects --stdin-packs" has been
|
||||
corrected.
|
||||
|
||||
* Bugfix for common ancestor negotiation recently introduced in "git
|
||||
push" codepath.
|
||||
|
||||
* "git pull" had various corner cases that were not well thought out
|
||||
around its --rebase backend, e.g. "git pull --ff-only" did not stop
|
||||
but went ahead and rebased when the history on other side is not a
|
||||
descendant of our history. The series tries to fix them up.
|
||||
|
||||
* "git apply" miscounted the bytes and failed to read to the end of
|
||||
binary hunks.
|
||||
|
||||
* "git range-diff" code clean-up.
|
||||
|
||||
* "git commit --fixup" now works with "--edit" again, after it was
|
||||
broken in v2.32.
|
||||
|
||||
* Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
|
||||
new version has a blocker bug for that architecture.
|
||||
|
||||
* Checking out all the paths from HEAD during the last conflicted
|
||||
step in "git rebase" and continuing would cause the step to be
|
||||
skipped (which is expected), but leaves MERGE_MSG file behind in
|
||||
$GIT_DIR and confuses the next "git commit", which has been
|
||||
corrected.
|
||||
|
||||
* Various bugs in "git rebase -r" have been fixed.
|
||||
|
||||
* mmap() imitation used to call xmalloc() that dies upon malloc()
|
||||
failure, which has been corrected to just return an error to the
|
||||
caller to be handled.
|
||||
|
||||
* "git diff --relative" segfaulted and/or produced incorrect result
|
||||
when there are unmerged paths.
|
||||
|
||||
* The delayed checkout code path in "git checkout" etc. were chatty
|
||||
even when --quiet and/or --no-progress options were given.
|
||||
|
||||
* "git branch -D <branch>" used to refuse to remove a broken branch
|
||||
ref that points at a missing commit, which has been corrected.
|
||||
|
||||
* Build update for Apple clang.
|
||||
|
||||
* The parser for the "--nl" option of "git column" has been
|
||||
corrected.
|
||||
|
||||
* "git upload-pack" which runs on the other side of "git fetch"
|
||||
forgot to take the ref namespaces into account when handling
|
||||
want-ref requests.
|
||||
|
||||
* The sparse-index support can corrupt the index structure by storing
|
||||
a stale and/or uninitialized data, which has been corrected.
|
||||
|
||||
* Buggy tests could damage repositories outside the throw-away test
|
||||
area we created. We now by default export GIT_CEILING_DIRECTORIES
|
||||
to limit the damage from such a stray test.
|
||||
|
||||
* Even when running "git send-email" without its own threaded
|
||||
discussion support, a threading related header in one message is
|
||||
carried over to the subsequent message to result in an unwanted
|
||||
threading, which has been corrected.
|
||||
|
||||
* The output from "git fast-export", when its anonymization feature
|
||||
is in use, showed an annotated tag incorrectly.
|
||||
|
||||
* Recent "diff -m" changes broke "gitk", which has been corrected.
|
||||
|
||||
* "git maintenance" scheduler fix for macOS.
|
||||
|
||||
* A pathname in an advice message has been made cut-and-paste ready.
|
||||
|
||||
* The "git apply -3" code path learned not to bother the lower level
|
||||
merge machinery when the three-way merge can be trivially resolved
|
||||
without the content level merge.
|
||||
|
||||
* The code that optionally creates the *.rev reverse index file has
|
||||
been optimized to avoid needless computation when it is not writing
|
||||
the file out.
|
||||
|
||||
* "git range-diff -I... <range> <range>" segfaulted, which has been
|
||||
corrected.
|
||||
|
||||
* The order in which various files that make up a single (conceptual)
|
||||
packfile has been reevaluated and straightened up. This matters in
|
||||
correctness, as an incomplete set of files must not be shown to a
|
||||
running Git.
|
||||
|
||||
* The "mode" word is useless in a call to open(2) that does not
|
||||
create a new file. Such a call in the files backend of the ref
|
||||
subsystem has been cleaned up.
|
||||
|
||||
* "git update-ref --stdin" failed to flush its output as needed,
|
||||
which potentially led the conversation to a deadlock.
|
||||
|
||||
* When "git am --abort" fails to abort correctly, it still exited
|
||||
with exit status of 0, which has been corrected.
|
||||
|
||||
* Correct nr and alloc members of strvec struct to be of type size_t.
|
||||
|
||||
* "git stash", where the tentative change involves changing a
|
||||
directory to a file (or vice versa), was confused, which has been
|
||||
corrected.
|
||||
|
||||
* "git clone" from a repository whose HEAD is unborn into a bare
|
||||
repository didn't follow the branch name the other side used, which
|
||||
is corrected.
|
||||
|
||||
* "git cvsserver" had a long-standing bug in its authentication code,
|
||||
which has finally been corrected (it is unclear and is a separate
|
||||
question if anybody is seriously using it, though).
|
||||
|
||||
* "git difftool --dir-diff" mishandled symbolic links.
|
||||
|
||||
* Sensitive data in the HTTP trace were supposed to be redacted, but
|
||||
we failed to do so in HTTP/2 requests.
|
||||
|
||||
* "make clean" has been updated to remove leftover .depend/
|
||||
directories, even when it is not told to use them to compute header
|
||||
dependencies.
|
||||
|
||||
* Protocol v0 clients can get stuck parsing a malformed feature line.
|
||||
|
||||
Also contains various documentation updates and code clean-ups.
|
@ -1,15 +0,0 @@
|
||||
Git v2.33.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.3, v2.31.2
|
||||
and v2.32.1 to address the security issue CVE-2022-24765; see
|
||||
the release notes for these versions for details.
|
||||
|
||||
In addition, it contains the following fixes:
|
||||
|
||||
* Squelch over-eager warning message added during this cycle.
|
||||
|
||||
* A bug in "git rebase -r" has been fixed.
|
||||
|
||||
* One CI task based on Fedora image noticed a not-quite-kosher
|
||||
construct recently, which has been corrected.
|
@ -1,4 +0,0 @@
|
||||
Git Documentation/RelNotes/2.33.3.txt Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.33.3.
|
@ -1,6 +0,0 @@
|
||||
Git v2.33.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.5, v2.31.4
|
||||
and v2.32.3 to address the security issue CVE-2022-29187; see
|
||||
the release notes for these versions for details.
|
@ -1,5 +0,0 @@
|
||||
Git v2.33.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.30.6; see
|
||||
the release notes for that version for details.
|
@ -1,438 +0,0 @@
|
||||
Git 2.34 Release Notes
|
||||
======================
|
||||
|
||||
Updates since Git 2.33
|
||||
----------------------
|
||||
|
||||
Backward compatibility notes
|
||||
|
||||
* The "--preserve-merges" option of "git rebase" has been removed.
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* Pathname expansion (like "~username/") learned a way to specify a
|
||||
location relative to Git installation (e.g. its $sharedir which is
|
||||
$(prefix)/share), with "%(prefix)".
|
||||
|
||||
* The `ort` strategy is used instead of `recursive` as the default
|
||||
merge strategy.
|
||||
|
||||
* The userdiff pattern for "java" language has been updated.
|
||||
|
||||
* "git rebase" by default skips changes that are equivalent to
|
||||
commits that are already in the history the branch is rebased onto;
|
||||
give messages when this happens to let the users be aware of
|
||||
skipped commits, and also teach them how to tell "rebase" to keep
|
||||
duplicated changes.
|
||||
|
||||
* The advice message that "git cherry-pick" gives when it asks
|
||||
conflicted replay of a commit to be resolved by the end user has
|
||||
been updated.
|
||||
|
||||
* After "git clone --recurse-submodules", all submodules are cloned
|
||||
but they are not by default recursed into by other commands. With
|
||||
submodule.stickyRecursiveClone configuration set, submodule.recurse
|
||||
configuration is set to true in a repository created by "clone"
|
||||
with "--recurse-submodules" option.
|
||||
|
||||
* The logic for auto-correction of misspelt subcommands learned to go
|
||||
interactive when the help.autocorrect configuration variable is set
|
||||
to 'prompt'.
|
||||
|
||||
* "git maintenance" scheduler learned to use systemd timers as a
|
||||
possible backend.
|
||||
|
||||
* "git diff --submodule=diff" showed failure from run_command() when
|
||||
trying to run diff inside a submodule, when the user manually
|
||||
removes the submodule directory.
|
||||
|
||||
* "git bundle unbundle" learned to show progress display.
|
||||
|
||||
* In cone mode, the sparse-index code path learned to remove ignored
|
||||
files (like build artifacts) outside the sparse cone, allowing the
|
||||
entire directory outside the sparse cone to be removed, which is
|
||||
especially useful when the sparse patterns change.
|
||||
|
||||
* Taking advantage of the CGI interface, http-backend has been
|
||||
updated to enable protocol v2 automatically when the other side
|
||||
asks for it.
|
||||
|
||||
* The credential-cache helper has been adjusted to Windows.
|
||||
|
||||
* The error in "git help no-such-git-command" is handled better.
|
||||
|
||||
* The unicode character width table (used for output alignment) has
|
||||
been updated.
|
||||
|
||||
* The ref iteration code used to optionally allow dangling refs to be
|
||||
shown, which has been tightened up.
|
||||
|
||||
* "git add", "git mv", and "git rm" have been adjusted to avoid
|
||||
updating paths outside of the sparse-checkout definition unless
|
||||
the user specifies a "--sparse" option.
|
||||
|
||||
* "git repack" has been taught to generate multi-pack reachability
|
||||
bitmaps.
|
||||
|
||||
* "git fsck" has been taught to report mismatch between expected and
|
||||
actual types of an object better.
|
||||
|
||||
* In addition to GnuPG, ssh public crypto can be used for object and
|
||||
push-cert signing. Note that this feature cannot be used with
|
||||
ssh-keygen from OpenSSH 8.7, whose support for it is broken. Avoid
|
||||
using it unless you update to OpenSSH 8.8.
|
||||
|
||||
* "git log --grep=string --author=name" learns to highlight hits just
|
||||
like "git grep string" does.
|
||||
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* "git bisect" spawned "git show-branch" only to pretty-print the
|
||||
title of the commit after checking out the next version to be
|
||||
tested; this has been rewritten in C.
|
||||
|
||||
* "git add" can work better with the sparse index.
|
||||
|
||||
* Support for ancient versions of cURL library (pre 7.19.4) has been
|
||||
dropped.
|
||||
|
||||
* A handful of tests that assumed implementation details of files
|
||||
backend for refs have been cleaned up.
|
||||
|
||||
* trace2 logs learned to show parent process name to see in what
|
||||
context Git was invoked.
|
||||
|
||||
* Loading of ref tips to prepare for common ancestry negotiation in
|
||||
"git fetch-pack" has been optimized by taking advantage of the
|
||||
commit graph when available.
|
||||
|
||||
* Remind developers that the userdiff patterns should be kept simple
|
||||
and permissive, assuming that the contents they apply are always
|
||||
syntactically correct.
|
||||
|
||||
* The current implementation of GIT_TEST_FAIL_PREREQS is broken in
|
||||
that checking for the lack of a prerequisite would not work. Avoid
|
||||
the use of "if ! test_have_prereq X" in a test script.
|
||||
|
||||
* The revision traversal API has been optimized by taking advantage
|
||||
of the commit-graph, when available, to determine if a commit is
|
||||
reachable from any of the existing refs.
|
||||
|
||||
* "git fetch --quiet" optimization to avoid useless computation of
|
||||
info that will never be displayed.
|
||||
|
||||
* Callers from older advice_config[] based API has been updated to
|
||||
use the newer advice_if_enabled() and advice_enabled() API.
|
||||
|
||||
* Teach "test_pause" and "debug" helpers to allow using the HOME and
|
||||
TERM environment variables the user usually uses.
|
||||
|
||||
* "make INSTALL_STRIP=-s install" allows the installation step to use
|
||||
"install -s" to strip the binaries as they get installed.
|
||||
|
||||
* Code that handles large number of refs in the "git fetch" code
|
||||
path has been optimized.
|
||||
|
||||
* The reachability bitmap file used to be generated only for a single
|
||||
pack, but now we've learned to generate bitmaps for history that
|
||||
span across multiple packfiles.
|
||||
|
||||
* The code to make "git grep" recurse into submodules has been
|
||||
updated to migrate away from the "add submodule's object store as
|
||||
an alternate object store" mechanism (which is suboptimal).
|
||||
|
||||
* The tracing of process ancestry information has been enhanced.
|
||||
|
||||
* Reduce number of write(2) system calls while sending the
|
||||
ref advertisement.
|
||||
|
||||
* Update the build procedure to use the "-pedantic" build when
|
||||
DEVELOPER makefile macro is in effect.
|
||||
|
||||
* Large part of "git submodule add" gets rewritten in C.
|
||||
|
||||
* The run-command API has been updated so that the callers can easily
|
||||
ask the file descriptors open for packfiles to be closed immediately
|
||||
before spawning commands that may trigger auto-gc.
|
||||
|
||||
* An oddball OPTION_ARGUMENT feature has been removed from the
|
||||
parse-options API.
|
||||
|
||||
* The mergesort implementation used to sort linked list has been
|
||||
optimized.
|
||||
|
||||
* Remove external declaration of functions that no longer exist.
|
||||
|
||||
* "git multi-pack-index write --bitmap" learns to propagate the
|
||||
hashcache from original bitmap to resulting bitmap.
|
||||
|
||||
* CI learns to run the leak sanitizer builds.
|
||||
|
||||
* "git grep --recurse-submodules" takes trees and blobs from the
|
||||
submodule repository, but the textconv settings when processing a
|
||||
blob from the submodule is not taken from the submodule repository.
|
||||
A test is added to demonstrate the issue, without fixing it.
|
||||
|
||||
* Teach "git help -c" into helping the command line completion of
|
||||
configuration variables.
|
||||
|
||||
* When "git cmd -h" shows more than one line of usage text (e.g.
|
||||
the cmd subcommand may take sub-sub-command), parse-options API
|
||||
learned to align these lines, even across i18n/l10n.
|
||||
|
||||
* Prevent "make sparse" from running for the source files that
|
||||
haven't been modified.
|
||||
|
||||
* The code path to write a new version of .midx multi-pack index files
|
||||
has learned to release the mmaped memory holding the current
|
||||
version of .midx before removing them from the disk, as some
|
||||
platforms do not allow removal of a file that still has mapping.
|
||||
|
||||
* A new feature has been added to abort early in the test framework.
|
||||
|
||||
|
||||
Fixes since v2.33
|
||||
-----------------
|
||||
|
||||
* Input validation of "git pack-objects --stdin-packs" has been
|
||||
corrected.
|
||||
|
||||
* Bugfix for common ancestor negotiation recently introduced in "git
|
||||
push" code path.
|
||||
|
||||
* "git pull" had various corner cases that were not well thought out
|
||||
around its --rebase backend, e.g. "git pull --ff-only" did not stop
|
||||
but went ahead and rebased when the history on other side is not a
|
||||
descendant of our history. The series tries to fix them up.
|
||||
|
||||
* "git apply" miscounted the bytes and failed to read to the end of
|
||||
binary hunks.
|
||||
|
||||
* "git range-diff" code clean-up.
|
||||
|
||||
* "git commit --fixup" now works with "--edit" again, after it was
|
||||
broken in v2.32.
|
||||
|
||||
* Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
|
||||
new version has a blocker bug for that architecture.
|
||||
|
||||
* Checking out all the paths from HEAD during the last conflicted
|
||||
step in "git rebase" and continuing would cause the step to be
|
||||
skipped (which is expected), but leaves MERGE_MSG file behind in
|
||||
$GIT_DIR and confuses the next "git commit", which has been
|
||||
corrected.
|
||||
|
||||
* Various bugs in "git rebase -r" have been fixed.
|
||||
|
||||
* mmap() imitation used to call xmalloc() that dies upon malloc()
|
||||
failure, which has been corrected to just return an error to the
|
||||
caller to be handled.
|
||||
|
||||
* "git diff --relative" segfaulted and/or produced incorrect result
|
||||
when there are unmerged paths.
|
||||
|
||||
* The delayed checkout code path in "git checkout" etc. were chatty
|
||||
even when --quiet and/or --no-progress options were given.
|
||||
|
||||
* "git branch -D <branch>" used to refuse to remove a broken branch
|
||||
ref that points at a missing commit, which has been corrected.
|
||||
|
||||
* Build update for Apple clang.
|
||||
|
||||
* The parser for the "--nl" option of "git column" has been
|
||||
corrected.
|
||||
|
||||
* "git upload-pack" which runs on the other side of "git fetch"
|
||||
forgot to take the ref namespaces into account when handling
|
||||
want-ref requests.
|
||||
|
||||
* The sparse-index support can corrupt the index structure by storing
|
||||
a stale and/or uninitialized data, which has been corrected.
|
||||
|
||||
* Buggy tests could damage repositories outside the throw-away test
|
||||
area we created. We now by default export GIT_CEILING_DIRECTORIES
|
||||
to limit the damage from such a stray test.
|
||||
|
||||
* Even when running "git send-email" without its own threaded
|
||||
discussion support, a threading related header in one message is
|
||||
carried over to the subsequent message to result in an unwanted
|
||||
threading, which has been corrected.
|
||||
|
||||
* The output from "git fast-export", when its anonymization feature
|
||||
is in use, showed an annotated tag incorrectly.
|
||||
|
||||
* Recent "diff -m" changes broke "gitk", which has been corrected.
|
||||
|
||||
* The "git apply -3" code path learned not to bother the lower level
|
||||
merge machinery when the three-way merge can be trivially resolved
|
||||
without the content level merge. This fixes a regression caused by
|
||||
recent "-3way first and fall back to direct application" change.
|
||||
|
||||
* The code that optionally creates the *.rev reverse index file has
|
||||
been optimized to avoid needless computation when it is not writing
|
||||
the file out.
|
||||
|
||||
* "git range-diff -I... <range> <range>" segfaulted, which has been
|
||||
corrected.
|
||||
|
||||
* The order in which various files that make up a single (conceptual)
|
||||
packfile has been reevaluated and straightened up. This matters in
|
||||
correctness, as an incomplete set of files must not be shown to a
|
||||
running Git.
|
||||
|
||||
* The "mode" word is useless in a call to open(2) that does not
|
||||
create a new file. Such a call in the files backend of the ref
|
||||
subsystem has been cleaned up.
|
||||
|
||||
* "git update-ref --stdin" failed to flush its output as needed,
|
||||
which potentially led the conversation to a deadlock.
|
||||
|
||||
* When "git am --abort" fails to abort correctly, it still exited
|
||||
with exit status of 0, which has been corrected.
|
||||
|
||||
* Correct nr and alloc members of strvec struct to be of type size_t.
|
||||
|
||||
* "git stash", where the tentative change involves changing a
|
||||
directory to a file (or vice versa), was confused, which has been
|
||||
corrected.
|
||||
|
||||
* "git clone" from a repository whose HEAD is unborn into a bare
|
||||
repository didn't follow the branch name the other side used, which
|
||||
is corrected.
|
||||
|
||||
* "git cvsserver" had a long-standing bug in its authentication code,
|
||||
which has finally been corrected (it is unclear and is a separate
|
||||
question if anybody is seriously using it, though).
|
||||
|
||||
* "git difftool --dir-diff" mishandled symbolic links.
|
||||
|
||||
* Sensitive data in the HTTP trace were supposed to be redacted, but
|
||||
we failed to do so in HTTP/2 requests.
|
||||
|
||||
* "make clean" has been updated to remove leftover .depend/
|
||||
directories, even when it is not told to use them to compute header
|
||||
dependencies.
|
||||
|
||||
* Protocol v0 clients can get stuck parsing a malformed feature line.
|
||||
|
||||
* A few kinds of changes "git status" can show were not documented.
|
||||
(merge d2a534c515 ja/doc-status-types-and-copies later to maint).
|
||||
|
||||
* The mergesort implementation used to sort linked list has been
|
||||
optimized.
|
||||
(merge c90cfc225b rs/mergesort later to maint).
|
||||
|
||||
* An editor session launched during a Git operation (e.g. during 'git
|
||||
commit') can leave the terminal in a funny state. The code path
|
||||
has updated to save the terminal state before, and restore it
|
||||
after, it spawns an editor.
|
||||
(merge 3d411afabc cm/save-restore-terminal later to maint).
|
||||
|
||||
* "git cat-file --batch" with the "--batch-all-objects" option is
|
||||
supposed to iterate over all the objects found in a repository, but
|
||||
it used to translate these object names using the replace mechanism,
|
||||
which defeats the point of enumerating all objects in the repository.
|
||||
This has been corrected.
|
||||
(merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).
|
||||
|
||||
* Recent sparse-index work broke safety against attempts to add paths
|
||||
with trailing slashes to the index, which has been corrected.
|
||||
(merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).
|
||||
|
||||
* The "--color-lines" and "--color-by-age" options of "git blame"
|
||||
have been missing, which are now documented.
|
||||
(merge 8c32856133 bs/doc-blame-color-lines later to maint).
|
||||
|
||||
* The PATH used in CI job may be too wide and let incompatible dlls
|
||||
to be grabbed, which can cause the build&test to fail. Tighten it.
|
||||
(merge 7491ef6198 js/windows-ci-path-fix later to maint).
|
||||
|
||||
* Avoid performance measurements from getting ruined by gc and other
|
||||
housekeeping pauses interfering in the middle.
|
||||
(merge be79131a53 rs/disable-gc-during-perf-tests later to maint).
|
||||
|
||||
* Stop "git add --dry-run" from creating new blob and tree objects.
|
||||
(merge e578d0311d rs/add-dry-run-without-objects later to maint).
|
||||
|
||||
* "git commit" gave duplicated error message when the object store
|
||||
was unwritable, which has been corrected.
|
||||
(merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).
|
||||
|
||||
* Recent sparse-index addition, namely any use of index_name_pos(),
|
||||
can expand sparse index entries and breaks any code that walks
|
||||
cache-tree or existing index entries. One such instance of such a
|
||||
breakage has been corrected.
|
||||
|
||||
* The xxdiff difftool backend can exit with status 128, which the
|
||||
difftool-helper that launches the backend takes as a significant
|
||||
failure, when it is not significant at all. Work it around.
|
||||
(merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).
|
||||
|
||||
* Improve test framework around unwritable directories.
|
||||
(merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).
|
||||
|
||||
* "git push" client talking to an HTTP server did not diagnose the
|
||||
lack of the final status report from the other side correctly,
|
||||
which has been corrected.
|
||||
(merge c5c3486f38 jk/http-push-status-fix later to maint).
|
||||
|
||||
* Update "git archive" documentation and give explicit mention on the
|
||||
compression level for both zip and tar.gz format.
|
||||
(merge c4b208c309 bs/archive-doc-compression-level later to maint).
|
||||
|
||||
* Drop "git sparse-checkout" from the list of common commands.
|
||||
(merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).
|
||||
|
||||
* "git branch -c/-m new old" was not described to copy config, which
|
||||
has been corrected.
|
||||
(merge 8252ec300e jc/branch-copy-doc later to maint).
|
||||
|
||||
* Squelch over-eager warning message added during this cycle.
|
||||
|
||||
* Fix long-standing shell syntax error in the completion script.
|
||||
(merge 46b0585286 re/completion-fix-test-equality later to maint).
|
||||
|
||||
* Teach "git commit-graph" command not to allow using replace objects
|
||||
at all, as we do not use the commit-graph at runtime when we see
|
||||
object replacement.
|
||||
(merge 095d112f8c ab/ignore-replace-while-working-on-commit-graph later to maint).
|
||||
|
||||
* "git pull --no-verify" did not affect the underlying "git merge".
|
||||
(merge 47bfdfb3fd ar/fix-git-pull-no-verify later to maint).
|
||||
|
||||
* One CI task based on Fedora image noticed a not-quite-kosher
|
||||
construct recently, which has been corrected.
|
||||
|
||||
* "git pull --ff-only" and "git pull --rebase --ff-only" should make
|
||||
it a no-op to attempt pulling from a remote that is behind us, but
|
||||
instead the command errored out by saying it was impossible to
|
||||
fast-forward, which may technically be true, but not a useful thing
|
||||
to diagnose as an error. This has been corrected.
|
||||
(merge 361cb52383 jc/fix-pull-ff-only-when-already-up-to-date later to maint).
|
||||
|
||||
* The way Cygwin emulates a unix-domain socket, on top of which the
|
||||
simple-ipc mechanism is implemented, can race with the program on
|
||||
the other side that wants to use the socket, and briefly make it
|
||||
appear as a regular file before lstat(2) starts reporting it as a
|
||||
socket. We now have a workaround on the side that connects to a
|
||||
unix domain socket.
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge f188160be9 ab/bundle-remove-verbose-option later to maint).
|
||||
(merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
|
||||
(merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
|
||||
(merge dd20e4a6db ab/make-compdb-fix later to maint).
|
||||
(merge 6ffb990dc4 os/status-docfix later to maint).
|
||||
(merge 100c2da2d3 rs/p3400-lose-tac later to maint).
|
||||
(merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).
|
||||
(merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).
|
||||
(merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).
|
||||
(merge ec9a37d69b ab/pkt-line-cleanup later to maint).
|
||||
(merge 8650c6298c ab/fix-make-lint-docs later to maint).
|
||||
(merge 1c720357ce ab/test-lib-diff-cleanup later to maint).
|
||||
(merge 6b615dbece ks/submodule-add-message-fix later to maint).
|
||||
(merge 203eb8381a jc/doc-format-patch-clarify-auto-base later to maint).
|
||||
(merge 559664c792 ab/test-lib later to maint).
|
@ -1,23 +0,0 @@
|
||||
Git v2.34.1 Release Notes
|
||||
=========================
|
||||
|
||||
This release is primarily to fix a handful of regressions in Git 2.34.
|
||||
|
||||
Fixes since v2.34
|
||||
-----------------
|
||||
|
||||
* "git grep" looking in a blob that has non-UTF8 payload was
|
||||
completely broken when linked with certain versions of PCREv2
|
||||
library in the latest release.
|
||||
|
||||
* "git pull" with any strategy when the other side is behind us
|
||||
should succeed as it is a no-op, but doesn't.
|
||||
|
||||
* An earlier change in 2.34.0 caused JGit application (that abused
|
||||
GIT_EDITOR mechanism when invoking "git config") to get stuck with
|
||||
a SIGTTOU signal; it has been reverted.
|
||||
|
||||
* An earlier change that broke .gitignore matching has been reverted.
|
||||
|
||||
* SubmittingPatches document gained a syntactically incorrect mark-up,
|
||||
which has been corrected.
|
@ -1,6 +0,0 @@
|
||||
Git v2.34.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.3, v2.31.2,
|
||||
v2.32.1 and v2.33.2 to address the security issue CVE-2022-24765;
|
||||
see the release notes for these versions for details.
|
@ -1,4 +0,0 @@
|
||||
Git Documentation/RelNotes/2.34.3.txt Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.34.3.
|
@ -1,6 +0,0 @@
|
||||
Git v2.34.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.5, v2.31.4,
|
||||
v2.32.3 and v2.33.4 to address the security issue CVE-2022-29187;
|
||||
see the release notes for these versions for details.
|
@ -1,5 +0,0 @@
|
||||
Git v2.34.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.30.6; see
|
||||
the release notes for that version for details.
|
@ -1,412 +0,0 @@
|
||||
Git 2.35 Release Notes
|
||||
======================
|
||||
|
||||
Updates since Git 2.34
|
||||
----------------------
|
||||
|
||||
Backward compatibility warts
|
||||
|
||||
* "_" is now treated as any other URL-valid characters in an URL when
|
||||
matching the per-URL configuration variable names.
|
||||
|
||||
* The color palette used by "git grep" has been updated to match that
|
||||
of GNU grep.
|
||||
|
||||
|
||||
Note to those who build from the source
|
||||
|
||||
* You may need to define NO_UNCOMPRESS2 Makefile macro if you build
|
||||
with zlib older than 1.2.9.
|
||||
|
||||
* If your compiler cannot grok C99, the build will fail. See the
|
||||
instruction at the beginning of git-compat-util.h if this happens
|
||||
to you.
|
||||
|
||||
|
||||
UI, Workflows & Features
|
||||
|
||||
* "git status --porcelain=v2" now show the number of stash entries
|
||||
with --show-stash like the normal output does.
|
||||
|
||||
* "git stash" learned the "--staged" option to stash away what has
|
||||
been added to the index (and nothing else).
|
||||
|
||||
* "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
|
||||
the newly created branch if "git init" is run.
|
||||
|
||||
* Various operating modes of "git reset" have been made to work
|
||||
better with the sparse index.
|
||||
|
||||
* "git submodule deinit" for a submodule whose .git metadata
|
||||
directory is embedded in its working tree refused to work, until
|
||||
the submodule gets converted to use the "absorbed" form where the
|
||||
metadata directory is stored in superproject, and a gitfile at the
|
||||
top-level of the working tree of the submodule points at it. The
|
||||
command is taught to convert such submodules to the absorbed form
|
||||
as needed.
|
||||
|
||||
* The completion script (in contrib/) learns that the "--date"
|
||||
option of commands from the "git log" family takes "human" and
|
||||
"auto" as valid values.
|
||||
|
||||
* "Zealous diff3" style of merge conflict presentation has been added.
|
||||
|
||||
* The "git log --format=%(describe)" placeholder has been extended to
|
||||
allow passing selected command-line options to the underlying "git
|
||||
describe" command.
|
||||
|
||||
* "default" and "reset" have been added to our color palette.
|
||||
|
||||
* The cryptographic signing using ssh keys can specify literal keys
|
||||
for keytypes whose name do not begin with the "ssh-" prefix by
|
||||
using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").
|
||||
|
||||
* "git fetch" without the "--update-head-ok" option ought to protect
|
||||
a checked out branch from getting updated, to prevent the working
|
||||
tree that checks it out to go out of sync. The code was written
|
||||
before the use of "git worktree" got widespread, and only checked
|
||||
the branch that was checked out in the current worktree, which has
|
||||
been updated.
|
||||
|
||||
* "git name-rev" has been tweaked to give output that is shorter and
|
||||
easier to understand.
|
||||
|
||||
* "git apply" has been taught to ignore a message without a patch
|
||||
with the "--allow-empty" option. It also learned to honor the
|
||||
"--quiet" option given from the command line.
|
||||
|
||||
* The "init" and "set" subcommands in "git sparse-checkout" have been
|
||||
unified for a better user experience and performance.
|
||||
|
||||
* Many git commands that deal with working tree files try to remove a
|
||||
directory that becomes empty (i.e. "git switch" from a branch that
|
||||
has the directory to another branch that does not would attempt
|
||||
remove all files in the directory and the directory itself). This
|
||||
drops users into an unfamiliar situation if the command was run in
|
||||
a subdirectory that becomes subject to removal due to the command.
|
||||
The commands have been taught to keep an empty directory if it is
|
||||
the directory they were started in to avoid surprising users.
|
||||
|
||||
* "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
|
||||
done to a piece of e-mail without a patch in it.
|
||||
|
||||
* The default merge message prepared by "git merge" records the name
|
||||
of the current branch; the name can be overridden with a new option
|
||||
to allow users to pretend a merge is made on a different branch.
|
||||
|
||||
* The way "git p4" shows file sizes in its output has been updated to
|
||||
use human-readable units.
|
||||
|
||||
* "git -c branch.autosetupmerge=inherit branch new old" makes "new"
|
||||
to have the same upstream as the "old" branch, instead of marking
|
||||
"old" itself as its upstream.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
|
||||
* The use of errno as a means to carry the nature of error in the ref
|
||||
API implementation has been reworked and reduced.
|
||||
|
||||
* Teach and encourage first-time contributors to this project to
|
||||
state the base commit when they submit their topic.
|
||||
|
||||
* The command line completion for "git send-email" options have been
|
||||
tweaked to make it easier to keep it in sync with the command itself.
|
||||
|
||||
* Ensure that the sparseness of the in-core index matches the
|
||||
index.sparse configuration specified by the repository immediately
|
||||
after the on-disk index file is read.
|
||||
|
||||
* Code clean-up to eventually allow information on remotes defined
|
||||
for an arbitrary repository to be read.
|
||||
|
||||
* Build optimization.
|
||||
|
||||
* Tighten code for testing pack-bitmap.
|
||||
|
||||
* Weather balloon to break people with compilers that do not support
|
||||
C99.
|
||||
|
||||
* The "reftable" backend for the refs API, without integrating into
|
||||
the refs subsystem, has been added.
|
||||
|
||||
* More tests are marked as leak-free.
|
||||
|
||||
* The test framework learns to list unsatisfied test prerequisites,
|
||||
and optionally error out when prerequisites that are expected to be
|
||||
satisfied are not.
|
||||
|
||||
* The default setting for trace2 event nesting was too low to cause
|
||||
test failures, which is worked around by bumping it up in the test
|
||||
framework.
|
||||
|
||||
* Drop support for TravisCI and update test workflows at GitHub.
|
||||
|
||||
* Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
mechanism to force "git" to use 'master' as the default name for
|
||||
the initial branch no longer need it; the use of the mechanism from
|
||||
them have been removed.
|
||||
|
||||
* Allow running our tests while disabling fsync.
|
||||
|
||||
* Document the parameters given to the reflog entry iterator callback
|
||||
functions.
|
||||
(merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).
|
||||
|
||||
* The test helper for refs subsystem learned to write bogus and/or
|
||||
nonexistent object name to refs to simulate error situations we
|
||||
want to test Git in.
|
||||
|
||||
* "diff --histogram" optimization.
|
||||
|
||||
* Weather balloon to find compilers that do not grok variable
|
||||
declaration in the for() loop.
|
||||
|
||||
* diff and blame commands have been taught to work better with sparse
|
||||
index.
|
||||
|
||||
* The chainlint test script linter in the test suite has been updated.
|
||||
|
||||
* The DEVELOPER=yes build uses -std=gnu99 now.
|
||||
|
||||
* "git format-patch" uses a single rev_info instance and then exits.
|
||||
Mark the structure with UNLEAK() macro to squelch leak sanitizer.
|
||||
|
||||
* New interface into the tmp-objdir API to help in-core use of the
|
||||
quarantine feature.
|
||||
|
||||
* Broken &&-chains in the test scripts have been corrected.
|
||||
|
||||
* The RCS keyword substitution in "git p4" used to be done assuming
|
||||
that the contents are UTF-8 text, which can trigger decoding
|
||||
errors. We now treat the contents as a bytestring for robustness
|
||||
and correctness.
|
||||
|
||||
* The conditions to choose different definitions of the FLEX_ARRAY
|
||||
macro for vendor compilers has been simplified to make it easier to
|
||||
maintain.
|
||||
|
||||
* Correctness and performance update to "diff --color-moved" feature.
|
||||
|
||||
* "git upload-pack" (the other side of "git fetch") used a 8kB buffer
|
||||
but most of its payload came on 64kB "packets". The buffer size
|
||||
has been enlarged so that such a packet fits.
|
||||
|
||||
* "git fetch" and "git pull" are now declared sparse-index clean.
|
||||
Also "git ls-files" learns the "--sparse" option to help debugging.
|
||||
|
||||
* Similar message templates have been consolidated so that
|
||||
translators need to work on fewer number of messages.
|
||||
|
||||
|
||||
Fixes since v2.34
|
||||
-----------------
|
||||
|
||||
* "git grep" looking in a blob that has non-UTF8 payload was
|
||||
completely broken when linked with certain versions of PCREv2
|
||||
library in the latest release.
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
|
||||
* "git pull" with any strategy when the other side is behind us
|
||||
should succeed as it is a no-op, but doesn't.
|
||||
|
||||
* An earlier change in 2.34.0 caused JGit application (that abused
|
||||
GIT_EDITOR mechanism when invoking "git config") to get stuck with
|
||||
a SIGTTOU signal; it has been reverted.
|
||||
|
||||
* An earlier change that broke .gitignore matching has been reverted.
|
||||
|
||||
* Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
|
||||
operation modes of the "git branch" command that do not need the
|
||||
sort key information, no longer errors out by seeing a bogus sort
|
||||
key.
|
||||
(merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).
|
||||
|
||||
* The compatibility implementation for unsetenv(3) were written to
|
||||
mimic ancient, non-POSIX, variant seen in an old glibc; it has been
|
||||
changed to return an integer to match the more modern era.
|
||||
(merge a38989bd5b jc/unsetenv-returns-an-int later to maint).
|
||||
|
||||
* The clean/smudge conversion code path has been prepared to better
|
||||
work on platforms where ulong is narrower than size_t.
|
||||
(merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).
|
||||
|
||||
* Redact the path part of packfile URI that appears in the trace output.
|
||||
(merge 0ba558ffb1 if/redact-packfile-uri later to maint).
|
||||
|
||||
* CI has been taught to catch some Unicode directional formatting
|
||||
sequence that can be used in certain mischief.
|
||||
(merge 0e7696c64d js/ci-no-directional-formatting later to maint).
|
||||
|
||||
* The "--date=format:<strftime>" gained a workaround for the lack of
|
||||
system support for a non-local timezone to handle "%s" placeholder.
|
||||
(merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).
|
||||
|
||||
* The "merge" subcommand of "git jump" (in contrib/) silently ignored
|
||||
pathspec and other parameters.
|
||||
(merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).
|
||||
|
||||
* The code to decode the length of packed object size has been
|
||||
corrected.
|
||||
(merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).
|
||||
|
||||
* The advice message given by "git pull" when the user hasn't made a
|
||||
choice between merge and rebase still said that the merge is the
|
||||
default, which no longer is the case. This has been corrected.
|
||||
(merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).
|
||||
|
||||
* "git fetch", when received a bad packfile, can fail with SIGPIPE.
|
||||
This wasn't wrong per-se, but we now detect the situation and fail
|
||||
in a more predictable way.
|
||||
(merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).
|
||||
|
||||
* The function to cull a child process and determine the exit status
|
||||
had two separate code paths for normal callers and callers in a
|
||||
signal handler, and the latter did not yield correct value when the
|
||||
child has caught a signal. The handling of the exit status has
|
||||
been unified for these two code paths. An existing test with
|
||||
flakiness has also been corrected.
|
||||
(merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).
|
||||
|
||||
* When a non-existent program is given as the pager, we tried to
|
||||
reuse an uninitialized child_process structure and crashed, which
|
||||
has been fixed.
|
||||
(merge f917f57f40 em/missing-pager later to maint).
|
||||
|
||||
* The single-key-input mode in "git add -p" had some code to handle
|
||||
keys that generate a sequence of input via ReadKey(), which did not
|
||||
handle end-of-file correctly, which has been fixed.
|
||||
(merge fc8a8126df cb/add-p-single-key-fix later to maint).
|
||||
|
||||
* "git rebase -x" added an unnecessary 'exec' instructions before
|
||||
'noop', which has been corrected.
|
||||
(merge cc9dcdee61 en/rebase-x-fix later to maint).
|
||||
|
||||
* When the "git push" command is killed while the receiving end is
|
||||
trying to report what happened to the ref update proposals, the
|
||||
latter used to die, due to SIGPIPE. The code now ignores SIGPIPE
|
||||
to increase our chances to run the post-receive hook after it
|
||||
happens.
|
||||
(merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).
|
||||
|
||||
* "git worktree add" showed "Preparing worktree" message to the
|
||||
standard output stream, but when it failed, the message from die()
|
||||
went to the standard error stream. Depending on the order the
|
||||
stdio streams are flushed at the program end, this resulted in
|
||||
confusing output. It has been corrected by sending all the chatty
|
||||
messages to the standard error stream.
|
||||
(merge b50252484f es/worktree-chatty-to-stderr later to maint).
|
||||
|
||||
* Coding guideline document has been updated to clarify what goes to
|
||||
standard error in our system.
|
||||
(merge e258eb4800 es/doc-stdout-vs-stderr later to maint).
|
||||
|
||||
* The sparse-index/sparse-checkout feature had a bug in its use of
|
||||
the matching code to determine which path is in or outside the
|
||||
sparse checkout patterns.
|
||||
(merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).
|
||||
|
||||
* "git rebase -x" by mistake started exporting the GIT_DIR and
|
||||
GIT_WORK_TREE environment variables when the command was rewritten
|
||||
in C, which has been corrected.
|
||||
(merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).
|
||||
|
||||
* When "git log" implicitly enabled the "decoration" processing
|
||||
without being explicitly asked with "--decorate" option, it failed
|
||||
to read and honor the settings given by the "--decorate-refs"
|
||||
option.
|
||||
|
||||
* "git fetch --set-upstream" did not check if there is a current
|
||||
branch, leading to a segfault when it is run on a detached HEAD,
|
||||
which has been corrected.
|
||||
(merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).
|
||||
|
||||
* Among some code paths that ask an yes/no question, only one place
|
||||
gave a prompt that looked different from the others, which has been
|
||||
updated to match what the others create.
|
||||
(merge 0fc8ed154c km/help-prompt-fix later to maint).
|
||||
|
||||
* "git log --invert-grep --author=<name>" used to exclude commits
|
||||
written by the given author, but now "--invert-grep" only affects
|
||||
the matches made by the "--grep=<pattern>" option.
|
||||
(merge 794c000267 rs/log-invert-grep-with-headers later to maint).
|
||||
|
||||
* "git grep --perl-regexp" failed to match UTF-8 characters with
|
||||
wildcard when the pattern consists only of ASCII letters, which has
|
||||
been corrected.
|
||||
(merge 32e3e8bc55 rs/pcre2-utf later to maint).
|
||||
|
||||
* Certain sparse-checkout patterns that are valid in non-cone mode
|
||||
led to segfault in cone mode, which has been corrected.
|
||||
|
||||
* Use of certain "git rev-list" options with "git fast-export"
|
||||
created nonsense results (the worst two of which being "--reverse"
|
||||
and "--invert-grep --grep=<foo>"). The use of "--first-parent" is
|
||||
made to behave a bit more sensible than before.
|
||||
(merge 726a228dfb ws/fast-export-with-revision-options later to maint).
|
||||
|
||||
* Perf tests were run with end-user's shell, but it has been
|
||||
corrected to use the shell specified by $TEST_SHELL_PATH.
|
||||
(merge 9ccab75608 ja/perf-use-specified-shell later to maint).
|
||||
|
||||
* Fix dependency rules to generate hook-list.h header file.
|
||||
(merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).
|
||||
|
||||
* "git stash" by default triggers its "push" action, but its
|
||||
implementation also made "git stash -h" to show short help only for
|
||||
"git stash push", which has been corrected.
|
||||
(merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).
|
||||
|
||||
* "git apply --3way" bypasses the attempt to do a three-way
|
||||
application in more cases to address the regression caused by the
|
||||
recent change to use direct application as a fallback.
|
||||
(merge 34d607032c jz/apply-3-corner-cases later to maint).
|
||||
|
||||
* Fix performance-releated bug in "git subtree" (in contrib/).
|
||||
(merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).
|
||||
|
||||
* Extend the guidance to choose the base commit to build your work
|
||||
on, and hint/nudge contributors to read others' changes.
|
||||
(merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).
|
||||
|
||||
* A corner case bug in the ort merge strategy has been corrected.
|
||||
(merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).
|
||||
|
||||
* "git stash apply" forgot to attempt restoring untracked files when
|
||||
it failed to restore changes to tracked ones.
|
||||
(merge 71cade5a0b en/stash-df-fix later to maint).
|
||||
|
||||
* Calling dynamically loaded functions on Windows has been corrected.
|
||||
(merge 4a9b204920 ma/windows-dynload-fix later to maint).
|
||||
|
||||
* Some lockfile code called free() in signal-death code path, which
|
||||
has been corrected.
|
||||
(merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
|
||||
(merge f9b2b6684d ja/doc-cleanup later to maint).
|
||||
(merge 7d1b866778 jc/fix-first-object-walk later to maint).
|
||||
(merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
|
||||
(merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
|
||||
(merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
|
||||
(merge 42c456ff81 rs/mergesort later to maint).
|
||||
(merge ad506e6780 tl/midx-docfix later to maint).
|
||||
(merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
|
||||
(merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
|
||||
(merge 7d3fc7df70 jt/midx-doc-fix later to maint).
|
||||
(merge 7b089120d9 hn/create-reflog-simplify later to maint).
|
||||
(merge 9e12400da8 cb/mingw-gmtime-r later to maint).
|
||||
(merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
|
||||
(merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
|
||||
(merge eafd6e7e55 ab/die-with-bug later to maint).
|
||||
(merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
|
||||
(merge 47ca93d071 ds/repack-fixlets later to maint).
|
||||
(merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
|
||||
(merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
|
||||
(merge 999bba3e0b rs/daemon-plug-leak later to maint).
|
||||
(merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
|
||||
(merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
|
||||
(merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint).
|
||||
(merge 97d6fb5a1f ma/header-dup-cleanup later to maint).
|
@ -1,6 +0,0 @@
|
||||
Git v2.35.1 Release Notes
|
||||
=========================
|
||||
|
||||
Git 2.35 shipped with a regression that broke use of "rebase" and
|
||||
"stash" in a secondary worktree. This maintenance release ought to
|
||||
fix it.
|
@ -1,7 +0,0 @@
|
||||
Git v2.35.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.3,
|
||||
v2.31.2, v2.32.1, v2.33.2 and v2.34.2 to address the security
|
||||
issue CVE-2022-24765; see the release notes for these versions
|
||||
for details.
|
@ -1,4 +0,0 @@
|
||||
Git Documentation/RelNotes/2.35.3.txt Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.35.3.
|
@ -1,7 +0,0 @@
|
||||
Git v2.35.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.30.5,
|
||||
v2.31.4, v2.32.3, v2.33.4 and v2.34.4 to address the security
|
||||
issue CVE-2022-29187; see the release notes for these versions
|
||||
for details.
|
@ -1,5 +0,0 @@
|
||||
Git v2.35.5 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges the security fix that appears in v2.30.6; see
|
||||
the release notes for that version for details.
|
@ -377,7 +377,7 @@ notes for details).
|
||||
on that order.
|
||||
|
||||
* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
|
||||
rev, i.e. the object named by the pathname with wildcard
|
||||
rev, i.e. the object named by the the pathname with wildcard
|
||||
characters in a tree object.
|
||||
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
|
||||
|
||||
|
@ -19,10 +19,8 @@ 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 other topics that are in `next`, but not in
|
||||
`master`, fork a branch from the tip of `master`, merge these topics
|
||||
to the branch, and work on that branch. You can remind yourself of
|
||||
how you prepared the base with `git log --first-parent 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
|
||||
be based on the tip of that topic. If the topic has not been merged
|
||||
@ -30,17 +28,17 @@ 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 out patches only for discussion. Once your new feature starts
|
||||
to stabilize, you would have to rebase it (see the "depends on other
|
||||
topics" above).
|
||||
not in `master`, start working on `next` or `pu` privately and send
|
||||
out patches for discussion. Before the final merge, you may have to
|
||||
wait until some of the dependent topics graduate to `master`, and
|
||||
rebase your work.
|
||||
|
||||
* Some parts of the system have dedicated maintainers with their own
|
||||
repositories (see the section "Subsystems" below). Changes to
|
||||
these parts should be based on their trees.
|
||||
|
||||
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]]
|
||||
@ -73,17 +71,13 @@ Make sure that you have tests for the bug you are fixing. See
|
||||
[[tests]]
|
||||
When adding a new feature, make sure that you have new tests to show
|
||||
the feature triggers the new behavior when it should, and to show the
|
||||
feature does not trigger when it shouldn't. After any code change,
|
||||
make sure that the entire test suite passes. When fixing a bug, make
|
||||
sure you have new tests that break if somebody else breaks what you
|
||||
fixed by accident to avoid regression. Also, try merging your work to
|
||||
'next' and 'seen' and make sure the tests still pass; topics by others
|
||||
that are still in flight may have unexpected interactions with what
|
||||
you are trying to do in your topic.
|
||||
feature does not trigger when it shouldn't. After any code change, make
|
||||
sure that the entire test suite passes.
|
||||
|
||||
Pushing to a fork of https://github.com/git/git will use their CI
|
||||
integration to test your changes on Linux, Mac and Windows. See the
|
||||
<<GHCI,GitHub CI>> section for details.
|
||||
If you have an account at GitHub (and you can get one for free to work
|
||||
on open source projects), you can use their Travis CI integration to
|
||||
test your changes on Linux, Mac (and hopefully soon Windows). See
|
||||
GitHub-Travis CI hints section for details.
|
||||
|
||||
Do not forget to update the documentation to describe the updated
|
||||
behavior and make sure that the resulting documentation set formats
|
||||
@ -123,13 +117,10 @@ If in doubt which identifier to use, run `git log --no-merges` on the
|
||||
files you are modifying to see the current conventions.
|
||||
|
||||
[[summary-section]]
|
||||
The title sentence after the "area:" prefix omits the full stop at the
|
||||
end, and its first word is not capitalized unless there is a reason to
|
||||
capitalize it other than because it is the first word in the sentence.
|
||||
E.g. "doc: clarify...", not "doc: Clarify...", or "githooks.txt:
|
||||
improve...", not "githooks.txt: Improve...". But "refs: HEAD is also
|
||||
treated as a ref" is correct, as we spell `HEAD` in all caps even when
|
||||
it appears in the middle of a sentence.
|
||||
It's customary to start the remainder of the first line after "area: "
|
||||
with a lower-case letter. E.g. "doc: clarify...", not "doc:
|
||||
Clarify...", or "githooks.txt: improve...", not "githooks.txt:
|
||||
Improve...".
|
||||
|
||||
[[meaningful-message]]
|
||||
The body should provide a meaningful commit message, which:
|
||||
@ -151,21 +142,8 @@ without external resources. Instead of giving a URL to a mailing list
|
||||
archive, summarize the relevant points of the discussion.
|
||||
|
||||
[[commit-reference]]
|
||||
|
||||
There are a few reasons why you may want to refer to another commit in
|
||||
the "more stable" part of the history (i.e. on branches like `maint`,
|
||||
`master`, and `next`):
|
||||
|
||||
. A commit that introduced the root cause of a bug you are fixing.
|
||||
|
||||
. A commit that introduced a feature that you are enhancing.
|
||||
|
||||
. A commit that conflicts with your work when you made a trial merge
|
||||
of your work into `next` and `seen` for testing.
|
||||
|
||||
When you reference a commit on a more stable branch (like `master`,
|
||||
`maint` and `next`), use the format "abbreviated hash (subject,
|
||||
date)", like this:
|
||||
If you want to reference a previous commit in the history of a stable
|
||||
branch, use the format "abbreviated hash (subject, date)", like this:
|
||||
|
||||
....
|
||||
Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30)
|
||||
@ -186,85 +164,6 @@ or, on an older version of Git without support for --pretty=reference:
|
||||
git show -s --date=short --pretty='format:%h (%s, %ad)' <commit>
|
||||
....
|
||||
|
||||
[[sign-off]]
|
||||
=== Certify your work by adding your `Signed-off-by` trailer
|
||||
|
||||
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.
|
||||
|
||||
If (and only if) you certify the below D-C-O:
|
||||
|
||||
[[dco]]
|
||||
.Developer's Certificate of Origin 1.1
|
||||
____
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
a. The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
b. The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
c. The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
d. I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
____
|
||||
|
||||
you add a "Signed-off-by" trailer to your commit, that looks like
|
||||
this:
|
||||
|
||||
....
|
||||
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.
|
||||
|
||||
Notice that you can place your own `Signed-off-by` trailer 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
|
||||
don't hide your real name.
|
||||
|
||||
[[commit-trailers]]
|
||||
If you like, you can put extra tags at the end:
|
||||
|
||||
. `Reported-by:` is used to credit someone who found the bug that
|
||||
the patch attempts to fix.
|
||||
. `Acked-by:` says that the person who is more familiar with the area
|
||||
the patch attempts to modify liked the patch.
|
||||
. `Reviewed-by:`, unlike the other tags, can only be offered by the
|
||||
reviewers themselves when they are completely satisfied with the
|
||||
patch after a detailed analysis.
|
||||
. `Tested-by:` is used to indicate that the person applied the patch
|
||||
and found it to have the desired effect.
|
||||
|
||||
You can also create your own tag or use one that's in common usage
|
||||
such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:".
|
||||
|
||||
[[git-tools]]
|
||||
=== Generate your patch using Git tools out of your commits.
|
||||
|
||||
@ -279,11 +178,9 @@ Please make sure your patch does not add commented out debugging code,
|
||||
or include any extra files which do not relate to what your patch
|
||||
is trying to achieve. Make sure to review
|
||||
your patch after generating it, to ensure accuracy. Before
|
||||
sending out, please make sure it cleanly applies to the base you
|
||||
have chosen in the "Decide what to base your work on" section,
|
||||
and unless it targets the `master` branch (which is the default),
|
||||
mark your patches as such.
|
||||
|
||||
sending out, please make sure it cleanly applies to the `master`
|
||||
branch head. If you are preparing a work based on "next" branch,
|
||||
that is fine, but please mark it as such.
|
||||
|
||||
[[send-patches]]
|
||||
=== Sending your patches.
|
||||
@ -312,7 +209,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
|
||||
@ -332,7 +229,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
|
||||
@ -387,23 +284,95 @@ Security mailing list{security-ml-ref}.
|
||||
Send your patch with "To:" set to the mailing list, with "cc:" listing
|
||||
people who are involved in the area you are touching (the `git
|
||||
contacts` command in `contrib/contacts/` can help to
|
||||
identify them), to solicit comments and reviews. Also, when you made
|
||||
trial merges of your topic to `next` and `seen`, you may have noticed
|
||||
work by others conflicting with your changes. There is a good possibility
|
||||
that these people may know the area you are touching well.
|
||||
identify them), to solicit comments and reviews.
|
||||
|
||||
:current-maintainer: footnote:[The current maintainer: gitster@pobox.com]
|
||||
: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: " line
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
____
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
a. The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
b. The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
c. The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
d. I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
____
|
||||
|
||||
then you just add a line saying
|
||||
|
||||
....
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
....
|
||||
|
||||
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: 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).
|
||||
|
||||
[[real-name]]
|
||||
Also notice that a real name is used in the Signed-off-by: line. Please
|
||||
don't hide your real name.
|
||||
|
||||
[[commit-trailers]]
|
||||
If you like, you can put extra tags at the end:
|
||||
|
||||
. `Reported-by:` is used to credit someone who found the bug that
|
||||
the patch attempts to fix.
|
||||
. `Acked-by:` says that the person who is more familiar with the area
|
||||
the patch attempts to modify liked the patch.
|
||||
. `Reviewed-by:`, unlike the other tags, can only be offered by the
|
||||
reviewer and means that she is completely satisfied that the patch
|
||||
is ready for application. It is usually offered only after a
|
||||
detailed review.
|
||||
. `Tested-by:` is used to indicate that the person applied the patch
|
||||
and found it to have the desired effect.
|
||||
|
||||
You can also create your own tag or use one that's in common usage
|
||||
such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:".
|
||||
|
||||
== Subsystems with dedicated maintainers
|
||||
|
||||
@ -455,7 +424,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.
|
||||
|
||||
@ -466,19 +435,20 @@ 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
|
||||
entitled "What's cooking in git.git" and "What's in git.git" giving
|
||||
the status of various proposed changes.
|
||||
|
||||
== GitHub CI[[GHCI]]
|
||||
[[travis]]
|
||||
== GitHub-Travis CI hints
|
||||
|
||||
With an account at GitHub, you can use GitHub CI to test your changes
|
||||
on Linux, Mac and Windows. See
|
||||
https://github.com/git/git/actions/workflows/main.yml for examples of
|
||||
recent CI runs.
|
||||
With an account at GitHub (you can get one for free to work on open
|
||||
source projects), you can use Travis CI to test your changes on Linux,
|
||||
Mac (and hopefully soon Windows). You can find a successful example
|
||||
test build here: https://travis-ci.org/git/git/builds/120473209
|
||||
|
||||
Follow these steps for the initial setup:
|
||||
|
||||
@ -486,18 +456,31 @@ Follow these steps for the initial setup:
|
||||
You can find detailed instructions how to fork here:
|
||||
https://help.github.com/articles/fork-a-repo/
|
||||
|
||||
After the initial setup, CI will run whenever you push new changes
|
||||
. Open the Travis CI website: https://travis-ci.org
|
||||
|
||||
. Press the "Sign in with GitHub" button.
|
||||
|
||||
. Grant Travis CI permissions to access your GitHub account.
|
||||
You can find more information about the required permissions here:
|
||||
https://docs.travis-ci.com/user/github-oauth-scopes
|
||||
|
||||
. Open your Travis CI profile page: https://travis-ci.org/profile
|
||||
|
||||
. Enable Travis CI builds for your Git fork.
|
||||
|
||||
After the initial setup, Travis CI will run whenever you push new changes
|
||||
to your fork of Git on GitHub. You can monitor the test state of all your
|
||||
branches here: `https://github.com/<Your GitHub handle>/git/actions/workflows/main.yml`
|
||||
branches here: https://travis-ci.org/__<Your GitHub handle>__/git/branches
|
||||
|
||||
If a branch did not pass all test cases then it is marked with a red
|
||||
cross. In that case you can click on the failing job and navigate to
|
||||
"ci/run-build-and-tests.sh" and/or "ci/print-test-failures.sh". You
|
||||
can also download "Artifacts" which are tarred (or zipped) archives
|
||||
with test data relevant for debugging.
|
||||
cross. In that case you can click on the failing Travis CI job and
|
||||
scroll all the way down in the log. Find the line "<-- Click here to see
|
||||
detailed test output!" and click on the triangle next to the log line
|
||||
number to expand the detailed test output. Here is such a failing
|
||||
example: https://travis-ci.org/git/git/jobs/122676187
|
||||
|
||||
Then fix the problem and push your fix to your GitHub fork. This will
|
||||
trigger a new CI build to ensure all tests pass.
|
||||
Fix the problem and push your fix to your Git fork. This will trigger
|
||||
a new Travis CI build to ensure all tests pass.
|
||||
|
||||
[[mua]]
|
||||
== MUA specific hints
|
||||
|
@ -1,6 +1,6 @@
|
||||
-b::
|
||||
Show blank SHA-1 for boundary commits. This can also
|
||||
be controlled via the `blame.blankBoundary` config option.
|
||||
be controlled via the `blame.blankboundary` config option.
|
||||
|
||||
--root::
|
||||
Do not treat root commits as boundaries. This can also be
|
||||
@ -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.
|
||||
@ -136,16 +129,5 @@ take effect.
|
||||
option. An empty file name, `""`, will clear the list of revs from
|
||||
previously processed files.
|
||||
|
||||
--color-lines::
|
||||
Color line annotations in the default format differently if they come from
|
||||
the same commit as the preceding line. This makes it easier to distinguish
|
||||
code blocks introduced by different commits. The color defaults to cyan and
|
||||
can be adjusted using the `color.blame.repeatedLines` config option.
|
||||
|
||||
--color-by-age::
|
||||
Color line annotations depending on the age of the line in the default format.
|
||||
The `color.blame.highlightRecent` config option controls what color is used for
|
||||
each range of age.
|
||||
|
||||
-h::
|
||||
Show help message.
|
||||
|
@ -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, $_);
|
||||
|
@ -46,7 +46,7 @@ Subsection names are case sensitive and can contain any characters except
|
||||
newline and the null byte. Doublequote `"` and backslash can be included
|
||||
by escaping them as `\"` and `\\`, respectively. Backslashes preceding
|
||||
other characters are dropped when reading; for example, `\t` is read as
|
||||
`t` and `\0` is read as `0`. Section headers cannot span multiple lines.
|
||||
`t` and `\0` is read as `0` Section headers cannot span multiple lines.
|
||||
Variables may belong directly to a section or to a given subsection. You
|
||||
can have `[section]` if you have `[section "subsection"]`, but you don't
|
||||
need to.
|
||||
@ -64,7 +64,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
|
||||
@ -262,19 +262,11 @@ color::
|
||||
colors (at most two, one for foreground and one for background)
|
||||
and attributes (as many as you want), separated by spaces.
|
||||
+
|
||||
The basic colors accepted are `normal`, `black`, `red`, `green`,
|
||||
`yellow`, `blue`, `magenta`, `cyan`, `white` and `default`. The first
|
||||
color given is the foreground; the second is the background. All the
|
||||
basic colors except `normal` and `default` have a bright variant that can
|
||||
be specified by prefixing the color with `bright`, like `brightred`.
|
||||
+
|
||||
The color `normal` makes no change to the color. It is the same as an
|
||||
empty string, but can be used as the foreground color when specifying a
|
||||
background color alone (for example, "normal red").
|
||||
+
|
||||
The color `default` explicitly resets the color to the terminal default,
|
||||
for example to specify a cleared background. Although it varies between
|
||||
terminals, this is usually not the same as setting to "white black".
|
||||
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 speficied by prefixing the
|
||||
color with `bright`, like `brightred`.
|
||||
+
|
||||
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
|
||||
@ -288,11 +280,6 @@ The position of any attributes with respect to the colors
|
||||
be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`,
|
||||
`no-ul`, etc).
|
||||
+
|
||||
The pseudo-attribute `reset` resets all colors and attributes before
|
||||
applying the specified coloring. For example, `reset green` will result
|
||||
in a green foreground and default background without any active
|
||||
attributes.
|
||||
+
|
||||
An empty color string produces no color effect at all. This can be used
|
||||
to avoid coloring specific elements without disabling color entirely.
|
||||
+
|
||||
@ -311,15 +298,6 @@ pathname::
|
||||
tilde expansion happens to such a string: `~/`
|
||||
is expanded to the value of `$HOME`, and `~user/` to the
|
||||
specified user's home directory.
|
||||
+
|
||||
If a path starts with `%(prefix)/`, the remainder is interpreted as a
|
||||
path relative to Git's "runtime prefix", i.e. relative to the location
|
||||
where Git itself was installed. For example, `%(prefix)/bin/` refers to
|
||||
the directory in which the Git executable itself lives. If Git was
|
||||
compiled without runtime prefix support, the compiled-in prefix will be
|
||||
substituted instead. In the unlikely event that a literal path needs to
|
||||
be specified that should _not_ be expanded, it needs to be prefixed by
|
||||
`./`, like so: `./%(prefix)/bin`.
|
||||
|
||||
|
||||
Variables
|
||||
@ -356,16 +334,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[]
|
||||
@ -374,8 +348,6 @@ include::config/diff.txt[]
|
||||
|
||||
include::config/difftool.txt[]
|
||||
|
||||
include::config/extensions.txt[]
|
||||
|
||||
include::config/fastimport.txt[]
|
||||
|
||||
include::config/feature.txt[]
|
||||
@ -420,14 +392,10 @@ include::config/interactive.txt[]
|
||||
|
||||
include::config/log.txt[]
|
||||
|
||||
include::config/lsrefs.txt[]
|
||||
|
||||
include::config/mailinfo.txt[]
|
||||
|
||||
include::config/mailmap.txt[]
|
||||
|
||||
include::config/maintenance.txt[]
|
||||
|
||||
include::config/man.txt[]
|
||||
|
||||
include::config/merge.txt[]
|
||||
@ -462,14 +430,14 @@ include::config/rerere.txt[]
|
||||
|
||||
include::config/reset.txt[]
|
||||
|
||||
include::config/safe.txt[]
|
||||
|
||||
include::config/sendemail.txt[]
|
||||
|
||||
include::config/sequencer.txt[]
|
||||
|
||||
include::config/showbranch.txt[]
|
||||
|
||||
include::config/sparse.txt[]
|
||||
|
||||
include::config/splitindex.txt[]
|
||||
|
||||
include::config/ssh.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,13 +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.
|
||||
skippedCherryPicks::
|
||||
Shown when linkgit:git-rebase[1] skips a commit that has already
|
||||
been cherry-picked onto the upstream branch.
|
||||
statusAheadBehind::
|
||||
Shown when linkgit:git-status[1] computes the ahead/behind
|
||||
counts for a local ref compared to its remote tracking ref,
|
||||
@ -122,8 +116,4 @@ advice.*::
|
||||
addEmptyPathspec::
|
||||
Advice shown if a user runs the add command without providing
|
||||
the pathspec parameter.
|
||||
updateSparsePath::
|
||||
Advice shown when either linkgit:git-add[1] or linkgit:git-rm[1]
|
||||
is asked to update index entries outside the current sparse
|
||||
checkout.
|
||||
--
|
||||
|
@ -27,7 +27,7 @@ blame.ignoreRevsFile::
|
||||
file names will reset the list of ignored revisions. This option will
|
||||
be handled before the command line option `--ignore-revs-file`.
|
||||
|
||||
blame.markUnblamableLines::
|
||||
blame.markUnblamables::
|
||||
Mark lines that were changed by an ignored revision that we could not
|
||||
attribute to another commit with a '*' in the output of
|
||||
linkgit:git-blame[1].
|
||||
|
@ -7,8 +7,7 @@ branch.autoSetupMerge::
|
||||
automatic setup is done; `true` -- automatic setup is done when the
|
||||
starting point is a remote-tracking branch; `always` --
|
||||
automatic setup is done when the starting point is either a
|
||||
local branch or remote-tracking branch; `inherit` -- if the starting point
|
||||
has a tracking configuration, it is copied to the new
|
||||
local branch or remote-tracking
|
||||
branch. This option defaults to true.
|
||||
|
||||
branch.autoSetupRebase::
|
||||
@ -86,6 +85,10 @@ When `merges` (or just 'm'), 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
|
||||
`--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.
|
||||
+
|
||||
|
@ -1,44 +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].
|
||||
|
||||
checkout.workers::
|
||||
The number of parallel workers to use when updating the working tree.
|
||||
The default is one, i.e. sequential execution. If set to a value less
|
||||
than one, Git will use as many workers as the number of logical cores
|
||||
available. This setting and `checkout.thresholdForParallelism` affect
|
||||
all commands that perform checkout. E.g. checkout, clone, reset,
|
||||
sparse-checkout, etc.
|
||||
+
|
||||
Note: parallel checkout usually delivers better performance for repositories
|
||||
located on SSDs or over NFS. For repositories on spinning disks and/or machines
|
||||
with a small number of cores, the default sequential checkout often performs
|
||||
better. The size and compression level of a repository might also influence how
|
||||
well the parallel version performs.
|
||||
|
||||
checkout.thresholdForParallelism::
|
||||
When running parallel checkout with a small number of files, the cost
|
||||
of subprocess spawning and inter-process communication might outweigh
|
||||
the parallelization gains. This setting allows to define the minimum
|
||||
number of files for which parallel checkout should be attempted. The
|
||||
default is 100.
|
||||
|
@ -1,8 +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].
|
||||
|
||||
clone.rejectShallow::
|
||||
Reject to clone a repository if it is a shallow one, can be overridden by
|
||||
passing option `--reject-shallow` in command line. See linkgit:git-clone[1]
|
@ -9,27 +9,26 @@ color.advice.hint::
|
||||
Use customized color for hints.
|
||||
|
||||
color.blame.highlightRecent::
|
||||
Specify the line annotation color for `git blame --color-by-age`
|
||||
depending upon the age of the line.
|
||||
This can be used to color the metadata of a blame line depending
|
||||
on age of the line.
|
||||
+
|
||||
This setting should be set to a comma-separated list of color and
|
||||
date settings, starting and ending with a color, the dates should be
|
||||
set from oldest to newest. The metadata will be colored with the
|
||||
specified colors if the line was introduced before the given
|
||||
timestamp, overwriting older timestamped colors.
|
||||
This setting should be set to a comma-separated list of color and date settings,
|
||||
starting and ending with a color, the dates should be set from oldest to newest.
|
||||
The metadata will be colored given the colors if the line was introduced
|
||||
before the given timestamp, overwriting older timestamped colors.
|
||||
+
|
||||
Instead of an absolute timestamp relative timestamps work as well,
|
||||
e.g. `2.weeks.ago` is valid to address anything older than 2 weeks.
|
||||
Instead of an absolute timestamp relative timestamps work as well, e.g.
|
||||
2.weeks.ago is valid to address anything older than 2 weeks.
|
||||
+
|
||||
It defaults to `blue,12 month ago,white,1 month ago,red`, which
|
||||
colors everything older than one year blue, recent changes between
|
||||
one month and one year old are kept white, and lines introduced
|
||||
within the last month are colored red.
|
||||
It defaults to 'blue,12 month ago,white,1 month ago,red', which colors
|
||||
everything older than one year blue, recent changes between one month and
|
||||
one year old are kept white, and lines introduced within the last month are
|
||||
colored red.
|
||||
|
||||
color.blame.repeatedLines::
|
||||
Use the specified color to colorize line annotations for
|
||||
`git blame --color-lines`, if they come from the same commit as the
|
||||
preceding line. Defaults to cyan.
|
||||
Use the customized color for the part of git-blame output that
|
||||
is repeated meta information per line (such as commit id,
|
||||
author name, date and timezone). Defaults to cyan.
|
||||
|
||||
color.branch::
|
||||
A boolean to enable/disable color in the output of
|
||||
@ -105,12 +104,9 @@ color.grep.<slot>::
|
||||
`matchContext`;;
|
||||
matching text in context lines
|
||||
`matchSelected`;;
|
||||
matching text in selected lines. Also, used to customize the following
|
||||
linkgit:git-log[1] subcommands: `--grep`, `--author` and `--committer`.
|
||||
matching text in selected lines
|
||||
`selected`;;
|
||||
non-matching text in selected lines. Also, used to customize the
|
||||
following linkgit:git-log[1] subcommands: `--grep`, `--author` and
|
||||
`--committer`.
|
||||
non-matching text in selected lines
|
||||
`separator`;;
|
||||
separators between fields on a line (`:`, `-`, and `=`)
|
||||
and between hunks (`--`)
|
||||
@ -131,9 +127,8 @@ color.interactive.<slot>::
|
||||
interactive commands.
|
||||
|
||||
color.pager::
|
||||
A boolean to specify whether `auto` color modes should colorize
|
||||
output going to the pager. Defaults to true; set this to false
|
||||
if your pager does not understand ANSI color codes.
|
||||
A boolean to enable/disable colored output when the pager is in
|
||||
use (default is true).
|
||||
|
||||
color.push::
|
||||
A boolean to enable/disable color in push errors. May be set to
|
||||
|
@ -1,14 +0,0 @@
|
||||
commitGraph.generationVersion::
|
||||
Specifies the type of generation number version to use when writing
|
||||
or reading the commit-graph file. If version 1 is specified, then
|
||||
the corrected commit dates will not be written or read. Defaults to
|
||||
2.
|
||||
|
||||
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.
|
@ -399,7 +399,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 +606,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]
|
||||
@ -625,6 +625,8 @@ core.abbrev::
|
||||
computed based on the approximate number of packed objects
|
||||
in your repository, which hopefully is enough for
|
||||
abbreviated object names to stay unique for some time.
|
||||
If set to "no", no abbreviation is made and the object names
|
||||
are shown in their full length.
|
||||
The minimum length is 4.
|
||||
|
||||
core.defaultBranchName::
|
||||
Allows overriding the default branch name e.g. when initializing
|
||||
a new repository or when cloning an empty repository.
|
||||
|
@ -28,9 +28,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).
|
||||
|
@ -85,8 +85,6 @@ diff.ignoreSubmodules::
|
||||
and 'git status' when `status.submoduleSummary` is set unless it is
|
||||
overridden by using the --ignore-submodules command-line option.
|
||||
The 'git submodule' commands are not affected by this setting.
|
||||
By default this is set to untracked so that any untracked
|
||||
submodules are ignored.
|
||||
|
||||
diff.mnemonicPrefix::
|
||||
If set, 'git diff' uses a prefix pair that is different from the
|
||||
@ -118,10 +116,9 @@ diff.orderFile::
|
||||
relative to the top of the working tree.
|
||||
|
||||
diff.renameLimit::
|
||||
The number of files to consider in the exhaustive portion of
|
||||
copy/rename detection; equivalent to the 'git diff' option
|
||||
`-l`. If not set, the default value is currently 1000. This
|
||||
setting has no effect if rename detection is turned off.
|
||||
The number of files to consider when performing the copy/rename
|
||||
detection; equivalent to the 'git diff' option `-l`. This setting
|
||||
has no effect if rename detection is turned off.
|
||||
|
||||
diff.renames::
|
||||
Whether and how Git detects renames. If set to "false",
|
||||
|
@ -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.
|
@ -14,6 +14,18 @@ feature.experimental::
|
||||
+
|
||||
* `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`.
|
||||
+
|
||||
* `protocol.version=2` speeds up fetches from repositories with many refs by
|
||||
allowing the client to specify which refs to list before the server lists
|
||||
them.
|
||||
|
||||
feature.manyFiles::
|
||||
Enable config options that optimize for repos with many files in the
|
||||
|
@ -60,17 +60,13 @@ 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".
|
||||
Unknown values will cause 'git fetch' to error out.
|
||||
+
|
||||
See also the `--negotiate-only` and `--negotiation-tip` options to
|
||||
linkgit:git-fetch[1].
|
||||
See also the `--negotiation-tip` option for linkgit:git-fetch[1].
|
||||
|
||||
fetch.showForcedUpdates::
|
||||
Set to false to enable `--no-show-forced-updates` in
|
||||
@ -94,4 +90,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.
|
||||
|
@ -79,7 +79,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 +94,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
|
||||
|
@ -11,13 +11,13 @@ gpg.program::
|
||||
|
||||
gpg.format::
|
||||
Specifies which key format to use when signing with `--gpg-sign`.
|
||||
Default is "openpgp". Other possible values are "x509", "ssh".
|
||||
Default is "openpgp" and another possible value is "x509".
|
||||
|
||||
gpg.<format>.program::
|
||||
Use this to customize the program used for the signing format you
|
||||
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
||||
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
||||
value for `gpg.x509.program` is "gpgsm" and `gpg.ssh.program` is "ssh-keygen".
|
||||
value for `gpg.x509.program` is "gpgsm".
|
||||
|
||||
gpg.minTrustLevel::
|
||||
Specifies a minimum trust level for signature verification. If
|
||||
@ -33,47 +33,3 @@ gpg.minTrustLevel::
|
||||
* `marginal`
|
||||
* `fully`
|
||||
* `ultimate`
|
||||
|
||||
gpg.ssh.defaultKeyCommand::
|
||||
This command that will be run when user.signingkey is not set and a ssh
|
||||
signature is requested. On successful exit a valid ssh public key is
|
||||
expected in the first line of its output. To automatically use the first
|
||||
available key from your ssh-agent set this to "ssh-add -L".
|
||||
|
||||
gpg.ssh.allowedSignersFile::
|
||||
A file containing ssh public keys which you are willing to trust.
|
||||
The file consists of one or more lines of principals followed by an ssh
|
||||
public key.
|
||||
e.g.: `user1@example.com,user2@example.com ssh-rsa AAAAX1...`
|
||||
See ssh-keygen(1) "ALLOWED SIGNERS" for details.
|
||||
The principal is only used to identify the key and is available when
|
||||
verifying a signature.
|
||||
+
|
||||
SSH has no concept of trust levels like gpg does. To be able to differentiate
|
||||
between valid signatures and trusted signatures the trust level of a signature
|
||||
verification is set to `fully` when the public key is present in the allowedSignersFile.
|
||||
Otherwise the trust level is `undefined` and git verify-commit/tag will fail.
|
||||
+
|
||||
This file can be set to a location outside of the repository and every developer
|
||||
maintains their own trust store. A central repository server could generate this
|
||||
file automatically from ssh keys with push access to verify the code against.
|
||||
In a corporate setting this file is probably generated at a global location
|
||||
from automation that already handles developer ssh keys.
|
||||
+
|
||||
A repository that only allows signed commits can store the file
|
||||
in the repository itself using a path relative to the top-level of the working tree.
|
||||
This way only committers with an already valid key can add or change keys in the keyring.
|
||||
+
|
||||
Since OpensSSH 8.8 this file allows specifying a key lifetime using valid-after &
|
||||
valid-before options. Git will mark signatures as valid if the signing key was
|
||||
valid at the time of the signatures creation. This allows users to change a
|
||||
signing key without invalidating all previously made signatures.
|
||||
+
|
||||
Using a SSH CA key with the cert-authority option
|
||||
(see ssh-keygen(1) "CERTIFICATES") is also valid.
|
||||
|
||||
gpg.ssh.revocationFile::
|
||||
Either a SSH KRL or a list of revoked public keys (without the principal prefix).
|
||||
See ssh-keygen(1) for details.
|
||||
If a public key is found in this file then it will always be treated
|
||||
as having trust level "never" and signatures will show as invalid.
|
||||
|
@ -8,8 +8,7 @@ grep.patternType::
|
||||
Set the default matching behavior. Using a value of 'basic', 'extended',
|
||||
'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
|
||||
`--fixed-strings`, or `--perl-regexp` option accordingly, while the
|
||||
value 'default' will use the `grep.extendedRegexp` option to choose
|
||||
between 'basic' and 'extended'.
|
||||
value 'default' will return to the default matching behavior.
|
||||
|
||||
grep.extendedRegexp::
|
||||
If set to true, enable `--extended-regexp` option by default. This
|
||||
@ -17,9 +16,23 @@ grep.extendedRegexp::
|
||||
other than 'default'.
|
||||
|
||||
grep.threads::
|
||||
Number of grep worker threads to use.
|
||||
See `grep.threads` in linkgit:git-grep[1] for more information.
|
||||
Number of grep worker threads to use. See `--threads`
|
||||
ifndef::git-grep[]
|
||||
in linkgit:git-grep[1]
|
||||
endif::git-grep[]
|
||||
for more information.
|
||||
|
||||
grep.fullName::
|
||||
If set to true, enable `--full-name` option by default.
|
||||
|
||||
grep.fallbackToNoIndex::
|
||||
If set to true, fall back to git grep --no-index if git grep
|
||||
is executed outside of a git repository. Defaults to false.
|
||||
|
||||
ifdef::git-grep[]
|
||||
sparse.restrictCmds::
|
||||
See base definition in linkgit:git-config[1]. grep honors
|
||||
sparse.restrictCmds by limiting searches to the sparsity paths in three
|
||||
cases: when searching the working tree, when searching the index with
|
||||
--cached, and when searching a specified commit.
|
||||
endif::git-grep[]
|
||||
|
@ -11,7 +11,7 @@ gui.displayUntracked::
|
||||
in the file list. The default is "true".
|
||||
|
||||
gui.encoding::
|
||||
Specifies the default character encoding to use for displaying of
|
||||
Specifies the default encoding to use for displaying of
|
||||
file contents in linkgit:git-gui[1] and linkgit:gitk[1].
|
||||
It can be overridden by setting the 'encoding' attribute
|
||||
for relevant files (see linkgit:gitattributes[5]).
|
||||
|
@ -8,16 +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 try to suggest the correct command or even
|
||||
run the suggestion automatically. Possible config values are:
|
||||
- 0 (default): show the suggested command.
|
||||
- positive number: run the suggested command after specified
|
||||
deciseconds (0.1 sec).
|
||||
- "immediate": run the suggested command immediately.
|
||||
- "prompt": show the suggestion and prompt for confirmation to run
|
||||
the command.
|
||||
- "never": don't run or show any suggested command.
|
||||
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
|
||||
|
@ -42,12 +42,12 @@ http.proxySSLKey::
|
||||
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 overridden by the `GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED`
|
||||
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 overridden by the
|
||||
verify the proxy with when using an HTTPS proxy. Can be overriden by the
|
||||
`GIT_PROXY_SSL_CAINFO` environment variable.
|
||||
|
||||
http.emptyAuth::
|
||||
|
@ -14,11 +14,6 @@ index.recordOffsetTable::
|
||||
Defaults to 'true' if index.threads has been explicitly enabled,
|
||||
'false' otherwise.
|
||||
|
||||
index.sparse::
|
||||
When enabled, write the index using sparse-directory entries. This
|
||||
has no effect unless `core.sparseCheckout` and
|
||||
`core.sparseCheckoutCone` are both enabled. Defaults to 'false'.
|
||||
|
||||
index.threads::
|
||||
Specifies the number of threads to spawn when loading the index.
|
||||
This is meant to reduce index load time on multiprocessor machines.
|
||||
|
@ -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.
|
||||
|
@ -24,11 +24,6 @@ log.excludeDecoration::
|
||||
the config option can be overridden by the `--decorate-refs`
|
||||
option.
|
||||
|
||||
log.diffMerges::
|
||||
Set default diff format to be used for merge commits. See
|
||||
`--diff-merges` in linkgit:git-log[1] for details.
|
||||
Defaults to `separate`.
|
||||
|
||||
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,9 +0,0 @@
|
||||
lsrefs.unborn::
|
||||
May be "advertise" (the default), "allow", or "ignore". If "advertise",
|
||||
the server will respond to the client sending "unborn" (as described in
|
||||
protocol-v2.txt) and will advertise support for this feature during the
|
||||
protocol v2 capability advertisement. "allow" is the same as
|
||||
"advertise" except that the server will not advertise support for this
|
||||
feature; this is useful for load-balanced servers that cannot be
|
||||
updated atomically (for example), since the administrator could
|
||||
configure "allow", then after a delay, configure "advertise".
|
@ -1,60 +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, the
|
||||
`loose-objects` and `incremental-repack` tasks daily, and the `pack-refs`
|
||||
task weekly.
|
||||
|
||||
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.
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user