Compare commits
70 Commits
Author | SHA1 | Date | |
---|---|---|---|
2aedeff35f | |||
aeb93d7da2 | |||
0bbcf95194 | |||
e14d6b8408 | |||
394a759d2b | |||
a3033a68ac | |||
2c9a4c7310 | |||
fade728df1 | |||
bffc762f87 | |||
cf8f6ce02a | |||
58325b93c5 | |||
012e0d76dc | |||
f8bf6b8f3d | |||
0227130244 | |||
d96ea538e8 | |||
32e357b6df | |||
8a755eddf5 | |||
82689d5e5d | |||
16128765d7 | |||
b7b37a3371 | |||
27ab4784d5 | |||
f8587c31c9 | |||
a59a8c687f | |||
bb3a9265e5 | |||
e0bfc0b3b9 | |||
6662a836eb | |||
3305300f4c | |||
304a50adff | |||
f930a23943 | |||
81c2d4c3a5 | |||
937b71cc8b | |||
17d23e8a38 | |||
522cc87fdc | |||
48050c42c7 | |||
1de69c0cdd | |||
f6e0b9f389 | |||
b49f309aa1 | |||
81dc898df9 | |||
a244dc5b0a | |||
3c50032ff5 | |||
dfa6b32b5e | |||
d74b1fd54f | |||
a60a66e409 | |||
e1e12e97ac | |||
447ac906e1 | |||
34ace8bad0 | |||
2455720950 | |||
8d0d48cf21 | |||
eb22e7dfa2 | |||
af778cd9be | |||
9cbd2827c5 | |||
ecf9b4a443 | |||
122512967e | |||
abd4d67ab0 | |||
067aa8fb41 | |||
4a7dab5ce4 | |||
0ca6ead81e | |||
71ad7fe1bc | |||
32696a4cbe | |||
a1d4f67c12 | |||
f4a32a550f | |||
0d3beb71da | |||
0f21b8f468 | |||
225d2d50cc | |||
ac7e57fa28 | |||
f8d510ed0b | |||
99f4abb8da | |||
8a96dbcb33 | |||
7de0c306f7 | |||
6f054f9fb3 |
@ -2,15 +2,8 @@ env:
|
|||||||
CIRRUS_CLONE_DEPTH: 1
|
CIRRUS_CLONE_DEPTH: 1
|
||||||
|
|
||||||
freebsd_12_task:
|
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:
|
freebsd_instance:
|
||||||
image_family: freebsd-12-2
|
image: freebsd-12-1-release-amd64
|
||||||
memory: 2G
|
|
||||||
install_script:
|
install_script:
|
||||||
pkg install -y gettext gmake perl5
|
pkg install -y gettext gmake perl5
|
||||||
create_user_script:
|
create_user_script:
|
||||||
|
26
.github/workflows/check-whitespace.yml
vendored
26
.github/workflows/check-whitespace.yml
vendored
@ -12,9 +12,15 @@ jobs:
|
|||||||
check-whitespace:
|
check-whitespace:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
- name: Set commit count
|
||||||
|
shell: bash
|
||||||
|
run: echo "COMMIT_DEPTH=$((1+$COMMITS))" >>$GITHUB_ENV
|
||||||
|
env:
|
||||||
|
COMMITS: ${{ github.event.pull_request.commits }}
|
||||||
|
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: ${{ env.COMMIT_DEPTH }}
|
||||||
|
|
||||||
- name: git log --check
|
- name: git log --check
|
||||||
id: check_out
|
id: check_out
|
||||||
@ -41,9 +47,25 @@ jobs:
|
|||||||
echo "${dash} ${etc}"
|
echo "${dash} ${etc}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done <<< $(git log --check --pretty=format:"---% h% s" ${{github.event.pull_request.base.sha}}..)
|
done <<< $(git log --check --pretty=format:"---% h% s" -${{github.event.pull_request.commits}})
|
||||||
|
|
||||||
if test -n "${log}"
|
if test -n "${log}"
|
||||||
then
|
then
|
||||||
|
echo "::set-output name=checkout::"${log}""
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- name: Add Check Output as Comment
|
||||||
|
uses: actions/github-script@v3
|
||||||
|
id: add-comment
|
||||||
|
env:
|
||||||
|
log: ${{ steps.check_out.outputs.checkout }}
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
await github.issues.createComment({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: `Whitespace errors found in workflow ${{ github.workflow }}:\n\n\`\`\`\n${process.env.log.replace(/\\n/g, "\n")}\n\`\`\``
|
||||||
|
})
|
||||||
|
if: ${{ failure() }}
|
||||||
|
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 }}
|
|
||||||
|
|
||||||
```
|
|
179
.github/workflows/main.yml
vendored
179
.github/workflows/main.yml
vendored
@ -81,21 +81,44 @@ jobs:
|
|||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v1
|
||||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
- name: download git-sdk-64-minimal
|
||||||
- name: build
|
|
||||||
shell: bash
|
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:
|
env:
|
||||||
HOME: ${{runner.workspace}}
|
HOME: ${{runner.workspace}}
|
||||||
|
MSYSTEM: MINGW64
|
||||||
NO_PERL: 1
|
NO_PERL: 1
|
||||||
run: . /etc/profile && ci/make-test-artifacts.sh artifacts
|
run: |
|
||||||
- name: zip up tracked files
|
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude
|
||||||
- name: upload tracked files and build artifacts
|
|
||||||
uses: actions/upload-artifact@v2
|
ci/make-test-artifacts.sh artifacts
|
||||||
|
"@
|
||||||
|
- name: upload build artifacts
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: windows-artifacts
|
name: windows-artifacts
|
||||||
path: 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:
|
windows-test:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
needs: [windows-build]
|
needs: [windows-build]
|
||||||
@ -104,25 +127,37 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
steps:
|
steps:
|
||||||
- name: download tracked files and build artifacts
|
- uses: actions/checkout@v1
|
||||||
uses: actions/download-artifact@v2
|
- name: download build artifacts
|
||||||
|
uses: actions/download-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: windows-artifacts
|
name: windows-artifacts
|
||||||
path: ${{github.workspace}}
|
path: ${{github.workspace}}
|
||||||
- name: extract tracked files and build artifacts
|
- name: extract build artifacts
|
||||||
shell: bash
|
shell: bash
|
||||||
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
|
run: tar xf artifacts.tar.gz
|
||||||
- uses: git-for-windows/setup-git-for-windows-sdk@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: test
|
- name: test
|
||||||
shell: bash
|
shell: powershell
|
||||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
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
|
- name: ci/print-test-failures.sh
|
||||||
if: failure()
|
if: failure()
|
||||||
shell: bash
|
shell: powershell
|
||||||
run: ci/print-test-failures.sh
|
run: |
|
||||||
|
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh
|
||||||
- name: Upload failed tests' directories
|
- name: Upload failed tests' directories
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: failed-tests-windows
|
name: failed-tests-windows
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
@ -130,12 +165,27 @@ jobs:
|
|||||||
needs: ci-config
|
needs: ci-config
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
env:
|
env:
|
||||||
|
MSYSTEM: MINGW64
|
||||||
NO_PERL: 1
|
NO_PERL: 1
|
||||||
GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
|
GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'"
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v1
|
||||||
- uses: git-for-windows/setup-git-for-windows-sdk@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: initialize vcpkg
|
- name: initialize vcpkg
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
@ -153,59 +203,75 @@ jobs:
|
|||||||
- name: add msbuild to PATH
|
- name: add msbuild to PATH
|
||||||
uses: microsoft/setup-msbuild@v1
|
uses: microsoft/setup-msbuild@v1
|
||||||
- name: copy dlls to root
|
- name: copy dlls to root
|
||||||
shell: cmd
|
shell: powershell
|
||||||
run: compat\vcbuild\vcpkg_copy_dlls.bat release
|
run: |
|
||||||
|
& compat\vcbuild\vcpkg_copy_dlls.bat release
|
||||||
|
if (!$?) { exit(1) }
|
||||||
- name: generate Visual Studio solution
|
- name: generate Visual Studio solution
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows \
|
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
|
-DMSGFMT_EXE=`pwd`/git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
|
||||||
- name: MSBuild
|
- name: MSBuild
|
||||||
run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
|
run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
|
||||||
- name: bundle artifact tar
|
- name: bundle artifact tar
|
||||||
shell: bash
|
shell: powershell
|
||||||
env:
|
env:
|
||||||
MSVC: 1
|
MSVC: 1
|
||||||
VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
|
VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
|
||||||
run: |
|
run: |
|
||||||
|
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||||
mkdir -p artifacts &&
|
mkdir -p artifacts &&
|
||||||
eval "$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts NO_GETTEXT=YesPlease 2>&1 | grep ^tar)"
|
eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)\"
|
||||||
- name: zip up tracked files
|
"@
|
||||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
- name: upload build artifacts
|
||||||
- name: upload tracked files and build artifacts
|
uses: actions/upload-artifact@v1
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
with:
|
||||||
name: vs-artifacts
|
name: vs-artifacts
|
||||||
path: artifacts
|
path: artifacts
|
||||||
vs-test:
|
vs-test:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
needs: vs-build
|
needs: [vs-build, windows-build]
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
steps:
|
steps:
|
||||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
- uses: actions/checkout@v1
|
||||||
- name: download tracked files and build artifacts
|
- name: download git-sdk-64-minimal
|
||||||
uses: actions/download-artifact@v2
|
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:
|
with:
|
||||||
name: vs-artifacts
|
name: vs-artifacts
|
||||||
path: ${{github.workspace}}
|
path: ${{github.workspace}}
|
||||||
- name: extract tracked files and build artifacts
|
- name: extract build artifacts
|
||||||
shell: bash
|
shell: bash
|
||||||
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
|
run: tar xf artifacts.tar.gz
|
||||||
- name: test
|
- name: test
|
||||||
shell: bash
|
shell: powershell
|
||||||
env:
|
env:
|
||||||
|
MSYSTEM: MINGW64
|
||||||
NO_SVN_TESTS: 1
|
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
|
- name: ci/print-test-failures.sh
|
||||||
if: failure()
|
if: failure()
|
||||||
shell: bash
|
shell: powershell
|
||||||
run: ci/print-test-failures.sh
|
run: |
|
||||||
|
& .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh
|
||||||
- name: Upload failed tests' directories
|
- name: Upload failed tests' directories
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: failed-tests-windows
|
name: failed-tests-windows
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
@ -231,22 +297,19 @@ jobs:
|
|||||||
- jobname: linux-gcc-default
|
- jobname: linux-gcc-default
|
||||||
cc: gcc
|
cc: gcc
|
||||||
pool: ubuntu-latest
|
pool: ubuntu-latest
|
||||||
- jobname: linux-leaks
|
|
||||||
cc: gcc
|
|
||||||
pool: ubuntu-latest
|
|
||||||
env:
|
env:
|
||||||
CC: ${{matrix.vector.cc}}
|
CC: ${{matrix.vector.cc}}
|
||||||
jobname: ${{matrix.vector.jobname}}
|
jobname: ${{matrix.vector.jobname}}
|
||||||
runs-on: ${{matrix.vector.pool}}
|
runs-on: ${{matrix.vector.pool}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v1
|
||||||
- run: ci/install-dependencies.sh
|
- run: ci/install-dependencies.sh
|
||||||
- run: ci/run-build-and-tests.sh
|
- run: ci/run-build-and-tests.sh
|
||||||
- run: ci/print-test-failures.sh
|
- run: ci/print-test-failures.sh
|
||||||
if: failure()
|
if: failure()
|
||||||
- name: Upload failed tests' directories
|
- name: Upload failed tests' directories
|
||||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: failed-tests-${{matrix.vector.jobname}}
|
name: failed-tests-${{matrix.vector.jobname}}
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
@ -261,8 +324,6 @@ jobs:
|
|||||||
image: alpine
|
image: alpine
|
||||||
- jobname: Linux32
|
- jobname: Linux32
|
||||||
image: daald/ubuntu32:xenial
|
image: daald/ubuntu32:xenial
|
||||||
- jobname: pedantic
|
|
||||||
image: fedora
|
|
||||||
env:
|
env:
|
||||||
jobname: ${{matrix.vector.jobname}}
|
jobname: ${{matrix.vector.jobname}}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -286,29 +347,9 @@ jobs:
|
|||||||
jobname: StaticAnalysis
|
jobname: StaticAnalysis
|
||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-18.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v1
|
||||||
- run: ci/install-dependencies.sh
|
- run: ci/install-dependencies.sh
|
||||||
- run: ci/run-static-analysis.sh
|
- run: ci/run-static-analysis.sh
|
||||||
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:
|
documentation:
|
||||||
needs: ci-config
|
needs: ci-config
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
@ -316,6 +357,6 @@ jobs:
|
|||||||
jobname: Documentation
|
jobname: Documentation
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v1
|
||||||
- run: ci/install-dependencies.sh
|
- run: ci/install-dependencies.sh
|
||||||
- run: ci/test-documentation.sh
|
- run: ci/test-documentation.sh
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -125,6 +125,7 @@
|
|||||||
/git-range-diff
|
/git-range-diff
|
||||||
/git-read-tree
|
/git-read-tree
|
||||||
/git-rebase
|
/git-rebase
|
||||||
|
/git-rebase--preserve-merges
|
||||||
/git-receive-pack
|
/git-receive-pack
|
||||||
/git-reflog
|
/git-reflog
|
||||||
/git-remote
|
/git-remote
|
||||||
@ -189,7 +190,6 @@
|
|||||||
/gitweb/static/gitweb.min.*
|
/gitweb/static/gitweb.min.*
|
||||||
/config-list.h
|
/config-list.h
|
||||||
/command-list.h
|
/command-list.h
|
||||||
/hook-list.h
|
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
*.dsc
|
*.dsc
|
||||||
*.deb
|
*.deb
|
||||||
@ -224,7 +224,6 @@
|
|||||||
*.lib
|
*.lib
|
||||||
*.res
|
*.res
|
||||||
*.sln
|
*.sln
|
||||||
*.sp
|
|
||||||
*.suo
|
*.suo
|
||||||
*.ncb
|
*.ncb
|
||||||
*.vcproj
|
*.vcproj
|
||||||
|
1
Documentation/.gitignore
vendored
1
Documentation/.gitignore
vendored
@ -14,5 +14,4 @@ manpage-base-url.xsl
|
|||||||
SubmittingPatches.txt
|
SubmittingPatches.txt
|
||||||
tmp-doc-diff/
|
tmp-doc-diff/
|
||||||
GIT-ASCIIDOCFLAGS
|
GIT-ASCIIDOCFLAGS
|
||||||
/.build/
|
|
||||||
/GIT-EXCLUDED-PROGRAMS
|
/GIT-EXCLUDED-PROGRAMS
|
||||||
|
@ -551,51 +551,6 @@ Writing Documentation:
|
|||||||
documentation, please see the documentation-related advice in the
|
documentation, please see the documentation-related advice in the
|
||||||
Documentation/SubmittingPatches file).
|
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.
|
Every user-visible change should be reflected in the documentation.
|
||||||
The same general rule as for code applies -- imitate the existing
|
The same general rule as for code applies -- imitate the existing
|
||||||
conventions.
|
conventions.
|
||||||
|
@ -90,7 +90,6 @@ SP_ARTICLES += $(API_DOCS)
|
|||||||
TECH_DOCS += MyFirstContribution
|
TECH_DOCS += MyFirstContribution
|
||||||
TECH_DOCS += MyFirstObjectWalk
|
TECH_DOCS += MyFirstObjectWalk
|
||||||
TECH_DOCS += SubmittingPatches
|
TECH_DOCS += SubmittingPatches
|
||||||
TECH_DOCS += technical/bundle-format
|
|
||||||
TECH_DOCS += technical/hash-function-transition
|
TECH_DOCS += technical/hash-function-transition
|
||||||
TECH_DOCS += technical/http-protocol
|
TECH_DOCS += technical/http-protocol
|
||||||
TECH_DOCS += technical/index-format
|
TECH_DOCS += technical/index-format
|
||||||
@ -140,7 +139,6 @@ ASCIIDOC_CONF = -f asciidoc.conf
|
|||||||
ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
|
ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
|
||||||
-amanversion=$(GIT_VERSION) \
|
-amanversion=$(GIT_VERSION) \
|
||||||
-amanmanual='Git Manual' -amansource='Git'
|
-amanmanual='Git Manual' -amansource='Git'
|
||||||
ASCIIDOC_DEPS = asciidoc.conf GIT-ASCIIDOCFLAGS
|
|
||||||
TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
|
TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
|
||||||
TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
|
TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
|
||||||
MANPAGE_XSL = manpage-normal.xsl
|
MANPAGE_XSL = manpage-normal.xsl
|
||||||
@ -195,7 +193,6 @@ ASCIIDOC_DOCBOOK = docbook5
|
|||||||
ASCIIDOC_EXTRA += -acompat-mode -atabsize=8
|
ASCIIDOC_EXTRA += -acompat-mode -atabsize=8
|
||||||
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
||||||
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
|
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
|
||||||
ASCIIDOC_DEPS = asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
|
||||||
DBLATEX_COMMON =
|
DBLATEX_COMMON =
|
||||||
XMLTO_EXTRA += --skip-validation
|
XMLTO_EXTRA += --skip-validation
|
||||||
XMLTO_EXTRA += -x manpage.xsl
|
XMLTO_EXTRA += -x manpage.xsl
|
||||||
@ -226,7 +223,6 @@ endif
|
|||||||
|
|
||||||
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
||||||
ifndef V
|
ifndef V
|
||||||
QUIET = @
|
|
||||||
QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;
|
QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;
|
||||||
QUIET_XMLTO = @echo ' ' XMLTO $@;
|
QUIET_XMLTO = @echo ' ' XMLTO $@;
|
||||||
QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;
|
QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;
|
||||||
@ -234,15 +230,11 @@ ifndef V
|
|||||||
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
||||||
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
||||||
QUIET_GEN = @echo ' ' GEN $@;
|
QUIET_GEN = @echo ' ' GEN $@;
|
||||||
|
QUIET_LINT = @echo ' ' LINT $@;
|
||||||
QUIET_STDERR = 2> /dev/null
|
QUIET_STDERR = 2> /dev/null
|
||||||
QUIET_SUBDIR0 = +@subdir=
|
QUIET_SUBDIR0 = +@subdir=
|
||||||
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
||||||
$(MAKE) $(PRINT_DIR) -C $$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
|
export V
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -290,7 +282,7 @@ install-html: html
|
|||||||
../GIT-VERSION-FILE: FORCE
|
../GIT-VERSION-FILE: FORCE
|
||||||
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
||||||
|
|
||||||
ifneq ($(filter-out lint-docs clean,$(MAKECMDGOALS)),)
|
ifneq ($(MAKECMDGOALS),clean)
|
||||||
-include ../GIT-VERSION-FILE
|
-include ../GIT-VERSION-FILE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -302,7 +294,9 @@ docdep_prereqs = \
|
|||||||
cmd-list.made $(cmds_txt)
|
cmd-list.made $(cmds_txt)
|
||||||
|
|
||||||
doc.dep : $(docdep_prereqs) $(DOC_DEP_TXT) build-docdep.perl
|
doc.dep : $(docdep_prereqs) $(DOC_DEP_TXT) build-docdep.perl
|
||||||
$(QUIET_GEN)$(PERL_PATH) ./build-docdep.perl >$@ $(QUIET_STDERR)
|
$(QUIET_GEN)$(RM) $@+ $@ && \
|
||||||
|
$(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
ifneq ($(MAKECMDGOALS),clean)
|
ifneq ($(MAKECMDGOALS),clean)
|
||||||
-include doc.dep
|
-include doc.dep
|
||||||
@ -322,7 +316,8 @@ cmds_txt = cmds-ancillaryinterrogators.txt \
|
|||||||
$(cmds_txt): cmd-list.made
|
$(cmds_txt): cmd-list.made
|
||||||
|
|
||||||
cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
|
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 $(cmds_txt) $(QUIET_STDERR) && \
|
||||||
date >$@
|
date >$@
|
||||||
|
|
||||||
mergetools_txt = mergetools-diff.txt mergetools-merge.txt
|
mergetools_txt = mergetools-diff.txt mergetools-merge.txt
|
||||||
@ -330,7 +325,7 @@ mergetools_txt = mergetools-diff.txt mergetools-merge.txt
|
|||||||
$(mergetools_txt): mergetools-list.made
|
$(mergetools_txt): mergetools-list.made
|
||||||
|
|
||||||
mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
||||||
$(QUIET_GEN) \
|
$(QUIET_GEN)$(RM) $@ && \
|
||||||
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
|
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
|
||||||
. ../git-mergetool--lib.sh && \
|
. ../git-mergetool--lib.sh && \
|
||||||
show_tool_names can_diff "* " || :' >mergetools-diff.txt && \
|
show_tool_names can_diff "* " || :' >mergetools-diff.txt && \
|
||||||
@ -349,7 +344,6 @@ GIT-ASCIIDOCFLAGS: FORCE
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -rf .build/
|
|
||||||
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
||||||
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
||||||
$(RM) *.pdf
|
$(RM) *.pdf
|
||||||
@ -360,23 +354,32 @@ clean:
|
|||||||
$(RM) manpage-base-url.xsl
|
$(RM) manpage-base-url.xsl
|
||||||
$(RM) GIT-ASCIIDOCFLAGS
|
$(RM) GIT-ASCIIDOCFLAGS
|
||||||
|
|
||||||
$(MAN_HTML): %.html : %.txt $(ASCIIDOC_DEPS)
|
$(MAN_HTML): %.html : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) -d manpage -o $@ $<
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||||
|
$(TXT_TO_HTML) -d manpage -o $@+ $< && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
$(OBSOLETE_HTML): %.html : %.txto $(ASCIIDOC_DEPS)
|
$(OBSOLETE_HTML): %.html : %.txto asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) -o $@ $<
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||||
|
$(TXT_TO_HTML) -o $@+ $< && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
manpage-base-url.xsl: manpage-base-url.xsl.in
|
manpage-base-url.xsl: manpage-base-url.xsl.in
|
||||||
$(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
|
$(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
|
||||||
|
|
||||||
%.1 %.5 %.7 : %.xml manpage-base-url.xsl $(wildcard manpage*.xsl)
|
%.1 %.5 %.7 : %.xml manpage-base-url.xsl $(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)
|
%.xml : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
||||||
$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d manpage -o $@ $<
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||||
|
$(TXT_TO_XML) -d manpage -o $@+ $< && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
user-manual.xml: user-manual.txt user-manual.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
user-manual.xml: user-manual.txt user-manual.conf 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.txt: technical/api-index-skel.txt \
|
||||||
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
|
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
|
||||||
@ -397,35 +400,46 @@ XSLTOPTS += --stringparam html.stylesheet docbook-xsl.css
|
|||||||
XSLTOPTS += --param generate.consistent.ids 1
|
XSLTOPTS += --param generate.consistent.ids 1
|
||||||
|
|
||||||
user-manual.html: user-manual.xml $(XSLT)
|
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
|
git.info: user-manual.texi
|
||||||
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
|
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
|
||||||
|
|
||||||
user-manual.texi: user-manual.xml
|
user-manual.texi: user-manual.xml
|
||||||
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@+ && \
|
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||||
$(PERL_PATH) fix-texi.perl <$@+ >$@ && \
|
$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@++ && \
|
||||||
$(RM) $@+
|
$(PERL_PATH) fix-texi.perl <$@++ >$@+ && \
|
||||||
|
rm $@++ && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
user-manual.pdf: user-manual.xml
|
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
|
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) && \
|
($(foreach xml,$(sort $(MAN_XML)),xsltproc -o $(xml)+ texi.xsl $(xml) && \
|
||||||
$(DOCBOOK2X_TEXI) --encoding=UTF-8 --to-stdout $(xml)+ && \
|
$(DOCBOOK2X_TEXI) --encoding=UTF-8 --to-stdout $(xml)+ && \
|
||||||
$(RM) $(xml)+ &&) true) > $@+ && \
|
rm $(xml)+ &&) true) > $@++ && \
|
||||||
$(PERL_PATH) cat-texi.perl $@ <$@+ >$@ && \
|
$(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
|
||||||
$(RM) $@+
|
rm $@++ && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
gitman.info: gitman.texi
|
gitman.info: gitman.texi
|
||||||
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $*.texi
|
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $*.texi
|
||||||
|
|
||||||
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
||||||
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@
|
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||||
|
$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@+ && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
howto-index.txt: howto-index.sh $(HOWTO_TXT)
|
howto-index.txt: howto-index.sh $(HOWTO_TXT)
|
||||||
$(QUIET_GEN)'$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(HOWTO_TXT)) >$@
|
$(QUIET_GEN)$(RM) $@+ $@ && \
|
||||||
|
'$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(HOWTO_TXT)) >$@+ && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
||||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
||||||
@ -434,9 +448,10 @@ WEBDOC_DEST = /pub/software/scm/git/docs
|
|||||||
|
|
||||||
howto/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
howto/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
||||||
$(patsubst %.txt,%.html,$(HOWTO_TXT)): %.html : %.txt GIT-ASCIIDOCFLAGS
|
$(patsubst %.txt,%.html,$(HOWTO_TXT)): %.html : %.txt GIT-ASCIIDOCFLAGS
|
||||||
$(QUIET_ASCIIDOC) \
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||||
sed -e '1,/^$$/d' $< | \
|
sed -e '1,/^$$/d' $< | \
|
||||||
$(TXT_TO_HTML) - >$@
|
$(TXT_TO_HTML) - >$@+ && \
|
||||||
|
mv $@+ $@
|
||||||
|
|
||||||
install-webdoc : html
|
install-webdoc : html
|
||||||
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
|
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
|
||||||
@ -463,68 +478,18 @@ quick-install-html: require-htmlrepo
|
|||||||
print-man1:
|
print-man1:
|
||||||
@for i in $(MAN1_TXT); do echo $$i; done
|
@for i in $(MAN1_TXT); do echo $$i; done
|
||||||
|
|
||||||
## Lint: Common
|
lint-docs::
|
||||||
.build:
|
$(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl \
|
||||||
$(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) \
|
$(HOWTO_TXT) $(DOC_DEP_TXT) \
|
||||||
--section=1 $(MAN1_TXT) \
|
--section=1 $(MAN1_TXT) \
|
||||||
--section=5 $(MAN5_TXT) \
|
--section=5 $(MAN5_TXT) \
|
||||||
--section=7 $(MAN7_TXT) >$@
|
--section=7 $(MAN7_TXT); \
|
||||||
.PHONY: lint-docs-gitlink
|
$(PERL_PATH) lint-man-end-blurb.perl $(MAN_TXT); \
|
||||||
lint-docs-gitlink: $(LINT_DOCS_GITLINK)
|
$(PERL_PATH) lint-man-section-order.perl $(MAN_TXT);
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
ifeq ($(wildcard po/Makefile),po/Makefile)
|
ifeq ($(wildcard po/Makefile),po/Makefile)
|
||||||
doc-l10n install-l10n::
|
doc-l10n install-l10n::
|
||||||
$(MAKE) -C po $@
|
$(MAKE) -C po $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Delete the target file on error
|
|
||||||
.DELETE_ON_ERROR:
|
|
||||||
|
|
||||||
.PHONY: FORCE
|
.PHONY: FORCE
|
||||||
|
@ -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
|
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.
|
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
|
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
|
currently online and knows the answer to your question, you can receive help
|
||||||
@ -827,7 +827,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:
|
(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
|
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
|
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.
|
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
|
If the CI fails, you can update your changes with `git rebase -i` and push your
|
||||||
@ -1029,42 +1029,22 @@ kidding - be patient!)
|
|||||||
[[v2-git-send-email]]
|
[[v2-git-send-email]]
|
||||||
=== Sending v2
|
=== Sending v2
|
||||||
|
|
||||||
This section will focus on how to send a v2 of your patchset. To learn what
|
Skip ahead to <<reviewing,Responding to Reviews>> for information on how to
|
||||||
should go into v2, skip ahead to <<reviewing,Responding to Reviews>> for
|
handle comments from reviewers. Continue this section when your topic branch is
|
||||||
information on how to handle comments from reviewers.
|
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
|
When you're ready with the next iteration of your patch, the process is fairly
|
||||||
mark the tip of our v1 branch for easy reference:
|
similar.
|
||||||
|
|
||||||
|
First, generate your v2 patches again:
|
||||||
|
|
||||||
----
|
----
|
||||||
$ git checkout psuh
|
$ git format-patch -v2 --cover-letter -o psuh/ master..psuh
|
||||||
$ git branch psuh-v1
|
|
||||||
----
|
----
|
||||||
|
|
||||||
Refine your patch series by using `git rebase -i` to adjust commits based upon
|
This will add your v2 patches, all named like `v2-000n-my-commit-subject.patch`,
|
||||||
reviewer comments. Once the patch series is ready for submission, generate your
|
to the `psuh/` directory. You may notice that they are sitting alongside the v1
|
||||||
patches again, but with some new flags:
|
patches; that's fine, but be careful when you are ready to send them.
|
||||||
|
|
||||||
----
|
|
||||||
$ 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).
|
|
||||||
|
|
||||||
Edit your cover letter again. Now is a good time to mention what's different
|
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
|
between your last version and now, if it's something significant. You do not
|
||||||
@ -1102,7 +1082,7 @@ to the command:
|
|||||||
----
|
----
|
||||||
$ git send-email --to=target@example.com
|
$ git send-email --to=target@example.com
|
||||||
--in-reply-to="<foo.12345.author@example.com>"
|
--in-reply-to="<foo.12345.author@example.com>"
|
||||||
psuh/v2-*.patch
|
psuh/v2*
|
||||||
----
|
----
|
||||||
|
|
||||||
[[single-patch]]
|
[[single-patch]]
|
||||||
|
@ -691,7 +691,7 @@ help understand. In our case, that means we omit trees and blobs not directly
|
|||||||
referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only
|
referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only
|
||||||
`HEAD` in the `pending` list.)
|
`HEAD` in the `pending` list.)
|
||||||
|
|
||||||
First, we'll need to `#include "list-objects-filter-options.h"` and set up the
|
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.
|
`struct list_objects_filter_options` at the top of the function.
|
||||||
|
|
||||||
----
|
----
|
||||||
@ -779,7 +779,7 @@ Count all the objects within and modify the print statement:
|
|||||||
while ((oid = oidset_iter_next(&oit)))
|
while ((oid = oidset_iter_next(&oit)))
|
||||||
omitted_count++;
|
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);
|
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.
|
if the working tree is currently dirty.
|
||||||
|
|
||||||
* "git for-each-ref --format=%(subject)" fixed for commits with no
|
* "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.
|
* "git remote" fixed to protect printf from user input.
|
||||||
|
|
||||||
|
@ -365,7 +365,7 @@ details).
|
|||||||
(merge 2fbd4f9 mh/maint-lockfile-overflow later to maint).
|
(merge 2fbd4f9 mh/maint-lockfile-overflow later to maint).
|
||||||
|
|
||||||
* Invocations of "git checkout" used internally by "git rebase" were
|
* 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.
|
the user to an unexpected place.
|
||||||
(merge 3bed291 rr/rebase-checkout-reflog later to maint).
|
(merge 3bed291 rr/rebase-checkout-reflog later to maint).
|
||||||
|
|
||||||
|
@ -184,8 +184,8 @@ Performance, Internal Implementation, Development Support etc.
|
|||||||
the ref backend in use, as its format is much richer than the
|
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..
|
normal refs, and written directly by "git fetch" as a plain file..
|
||||||
|
|
||||||
* An unused binary has been discarded, and a bunch of commands
|
* An unused binary has been discarded, and and a bunch of commands
|
||||||
have been turned into built-in.
|
have been turned into into built-in.
|
||||||
|
|
||||||
* A handful of places in in-tree code still relied on being able to
|
* A handful of places in in-tree code still relied on being able to
|
||||||
execute the git subcommands, especially built-ins, in "git-foo"
|
execute the git subcommands, especially built-ins, in "git-foo"
|
||||||
|
60
Documentation/RelNotes/2.30.6.txt
Normal file
60
Documentation/RelNotes/2.30.6.txt
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
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
|
86
Documentation/RelNotes/2.30.7.txt
Normal file
86
Documentation/RelNotes/2.30.7.txt
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
Git v2.30.7 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release addresses the security issues CVE-2022-41903 and
|
||||||
|
CVE-2022-23521.
|
||||||
|
|
||||||
|
|
||||||
|
Fixes since v2.30.6
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* CVE-2022-41903:
|
||||||
|
|
||||||
|
git log has the ability to display commits using an arbitrary
|
||||||
|
format with its --format specifiers. This functionality is also
|
||||||
|
exposed to git archive via the export-subst gitattribute.
|
||||||
|
|
||||||
|
When processing the padding operators (e.g., %<(, %<|(, %>(,
|
||||||
|
%>>(, or %><( ), an integer overflow can occur in
|
||||||
|
pretty.c::format_and_pad_commit() where a size_t is improperly
|
||||||
|
stored as an int, and then added as an offset to a subsequent
|
||||||
|
memcpy() call.
|
||||||
|
|
||||||
|
This overflow can be triggered directly by a user running a
|
||||||
|
command which invokes the commit formatting machinery (e.g., git
|
||||||
|
log --format=...). It may also be triggered indirectly through
|
||||||
|
git archive via the export-subst mechanism, which expands format
|
||||||
|
specifiers inside of files within the repository during a git
|
||||||
|
archive.
|
||||||
|
|
||||||
|
This integer overflow can result in arbitrary heap writes, which
|
||||||
|
may result in remote code execution.
|
||||||
|
|
||||||
|
* CVE-2022-23521:
|
||||||
|
|
||||||
|
gitattributes are a mechanism to allow defining attributes for
|
||||||
|
paths. These attributes can be defined by adding a `.gitattributes`
|
||||||
|
file to the repository, which contains a set of file patterns and
|
||||||
|
the attributes that should be set for paths matching this pattern.
|
||||||
|
|
||||||
|
When parsing gitattributes, multiple integer overflows can occur
|
||||||
|
when there is a huge number of path patterns, a huge number of
|
||||||
|
attributes for a single pattern, or when the declared attribute
|
||||||
|
names are huge.
|
||||||
|
|
||||||
|
These overflows can be triggered via a crafted `.gitattributes` file
|
||||||
|
that may be part of the commit history. Git silently splits lines
|
||||||
|
longer than 2KB when parsing gitattributes from a file, but not when
|
||||||
|
parsing them from the index. Consequentially, the failure mode
|
||||||
|
depends on whether the file exists in the working tree, the index or
|
||||||
|
both.
|
||||||
|
|
||||||
|
This integer overflow can result in arbitrary heap reads and writes,
|
||||||
|
which may result in remote code execution.
|
||||||
|
|
||||||
|
Credit for finding CVE-2022-41903 goes to Joern Schneeweisz of GitLab.
|
||||||
|
An initial fix was authored by Markus Vervier of X41 D-Sec. Credit for
|
||||||
|
finding CVE-2022-23521 goes to Markus Vervier and Eric Sesterhenn of X41
|
||||||
|
D-Sec. This work was sponsored by OSTIF.
|
||||||
|
|
||||||
|
The proposed fixes have been polished and extended to cover additional
|
||||||
|
findings by Patrick Steinhardt of GitLab, with help from others on the
|
||||||
|
Git security mailing list.
|
||||||
|
|
||||||
|
Patrick Steinhardt (21):
|
||||||
|
attr: fix overflow when upserting attribute with overly long name
|
||||||
|
attr: fix out-of-bounds read with huge attribute names
|
||||||
|
attr: fix integer overflow when parsing huge attribute names
|
||||||
|
attr: fix out-of-bounds write when parsing huge number of attributes
|
||||||
|
attr: fix out-of-bounds read with unreasonable amount of patterns
|
||||||
|
attr: fix integer overflow with more than INT_MAX macros
|
||||||
|
attr: harden allocation against integer overflows
|
||||||
|
attr: fix silently splitting up lines longer than 2048 bytes
|
||||||
|
attr: ignore attribute lines exceeding 2048 bytes
|
||||||
|
attr: ignore overly large gitattributes files
|
||||||
|
pretty: fix out-of-bounds write caused by integer overflow
|
||||||
|
pretty: fix out-of-bounds read when left-flushing with stealing
|
||||||
|
pretty: fix out-of-bounds read when parsing invalid padding format
|
||||||
|
pretty: fix adding linefeed when placeholder is not expanded
|
||||||
|
pretty: fix integer overflow in wrapping format
|
||||||
|
utf8: fix truncated string lengths in `utf8_strnwidth()`
|
||||||
|
utf8: fix returning negative string width
|
||||||
|
utf8: fix overflow when returning string width
|
||||||
|
utf8: fix checking for glyph width in `strbuf_utf8_replace()`
|
||||||
|
utf8: refactor `strbuf_utf8_replace` to not rely on preallocated buffer
|
||||||
|
pretty: restrict input lengths for padding and wrapping formats
|
||||||
|
|
52
Documentation/RelNotes/2.30.8.txt
Normal file
52
Documentation/RelNotes/2.30.8.txt
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
Git v2.30.8 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release addresses the security issues CVE-2023-22490 and
|
||||||
|
CVE-2023-23946.
|
||||||
|
|
||||||
|
|
||||||
|
Fixes since v2.30.7
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* CVE-2023-22490:
|
||||||
|
|
||||||
|
Using a specially-crafted repository, Git can be tricked into using
|
||||||
|
its local clone optimization even when using a non-local transport.
|
||||||
|
Though Git will abort local clones whose source $GIT_DIR/objects
|
||||||
|
directory contains symbolic links (c.f., CVE-2022-39253), the objects
|
||||||
|
directory itself may still be a symbolic link.
|
||||||
|
|
||||||
|
These two may be combined to include arbitrary files based on known
|
||||||
|
paths on the victim's filesystem within the malicious repository's
|
||||||
|
working copy, allowing for data exfiltration in a similar manner as
|
||||||
|
CVE-2022-39253.
|
||||||
|
|
||||||
|
* CVE-2023-23946:
|
||||||
|
|
||||||
|
By feeding a crafted input to "git apply", a path outside the
|
||||||
|
working tree can be overwritten as the user who is running "git
|
||||||
|
apply".
|
||||||
|
|
||||||
|
* A mismatched type in `attr.c::read_attr_from_index()` which could
|
||||||
|
cause Git to errantly reject attributes on Windows and 32-bit Linux
|
||||||
|
has been corrected.
|
||||||
|
|
||||||
|
Credit for finding CVE-2023-22490 goes to yvvdwf, and the fix was
|
||||||
|
developed by Taylor Blau, with additional help from others on the
|
||||||
|
Git security mailing list.
|
||||||
|
|
||||||
|
Credit for finding CVE-2023-23946 goes to Joern Schneeweisz, and the
|
||||||
|
fix was developed by Patrick Steinhardt.
|
||||||
|
|
||||||
|
|
||||||
|
Johannes Schindelin (1):
|
||||||
|
attr: adjust a mismatched data type
|
||||||
|
|
||||||
|
Patrick Steinhardt (1):
|
||||||
|
apply: fix writing behind newly created symbolic links
|
||||||
|
|
||||||
|
Taylor Blau (3):
|
||||||
|
t5619: demonstrate clone_local() with ambiguous transport
|
||||||
|
clone: delay picking a transport until after get_repo_path()
|
||||||
|
dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS
|
||||||
|
|
5
Documentation/RelNotes/2.31.5.txt
Normal file
5
Documentation/RelNotes/2.31.5.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
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.
|
5
Documentation/RelNotes/2.31.6.txt
Normal file
5
Documentation/RelNotes/2.31.6.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Git v2.31.6 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.7; see
|
||||||
|
the release notes for that version for details.
|
6
Documentation/RelNotes/2.31.7.txt
Normal file
6
Documentation/RelNotes/2.31.7.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.31.7 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.8 to
|
||||||
|
address the security issues CVE-2023-22490 and CVE-2023-23946;
|
||||||
|
see the release notes for that version for details.
|
5
Documentation/RelNotes/2.32.4.txt
Normal file
5
Documentation/RelNotes/2.32.4.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
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.
|
8
Documentation/RelNotes/2.32.5.txt
Normal file
8
Documentation/RelNotes/2.32.5.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
Git v2.32.5 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.7; see
|
||||||
|
the release notes for that version for details.
|
||||||
|
|
||||||
|
In addition, included are additional code for "git fsck" to check
|
||||||
|
for questionable .gitattributes files.
|
6
Documentation/RelNotes/2.32.6.txt
Normal file
6
Documentation/RelNotes/2.32.6.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.32.6 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.8 and v2.31.7
|
||||||
|
to address the security issues CVE-2023-22490 and CVE-2023-23946;
|
||||||
|
see the release notes for these versions for details.
|
@ -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,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.
|
|
@ -377,7 +377,7 @@ notes for details).
|
|||||||
on that order.
|
on that order.
|
||||||
|
|
||||||
* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
|
* "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.
|
characters in a tree object.
|
||||||
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
|
(merge aac4fac nd/dwim-wildcards-as-pathspecs later to maint).
|
||||||
|
|
||||||
|
@ -74,9 +74,10 @@ 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
|
feature does not trigger when it shouldn't. After any code change, make
|
||||||
sure that the entire test suite passes.
|
sure that the entire test suite passes.
|
||||||
|
|
||||||
Pushing to a fork of https://github.com/git/git will use their CI
|
If you have an account at GitHub (and you can get one for free to work
|
||||||
integration to test your changes on Linux, Mac and Windows. See the
|
on open source projects), you can use their Travis CI integration to
|
||||||
<<GHCI,GitHub CI>> section for details.
|
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
|
Do not forget to update the documentation to describe the updated
|
||||||
behavior and make sure that the resulting documentation set formats
|
behavior and make sure that the resulting documentation set formats
|
||||||
@ -166,85 +167,6 @@ or, on an older version of Git without support for --pretty=reference:
|
|||||||
git show -s --date=short --pretty='format:%h (%s, %ad)' <commit>
|
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]]
|
[[git-tools]]
|
||||||
=== Generate your patch using Git tools out of your commits.
|
=== Generate your patch using Git tools out of your commits.
|
||||||
|
|
||||||
@ -380,6 +302,86 @@ Do not forget to add trailers such as `Acked-by:`, `Reviewed-by:` and
|
|||||||
`Tested-by:` lines as necessary to credit people who helped your
|
`Tested-by:` lines as necessary to credit people who helped your
|
||||||
patch, and "cc:" them when sending such a final version for inclusion.
|
patch, and "cc:" them when sending such a final version for inclusion.
|
||||||
|
|
||||||
|
[[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
|
||||||
|
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
|
== Subsystems with dedicated maintainers
|
||||||
|
|
||||||
Some parts of the system have dedicated maintainers with their own
|
Some parts of the system have dedicated maintainers with their own
|
||||||
@ -448,12 +450,13 @@ their trees themselves.
|
|||||||
entitled "What's cooking in git.git" and "What's in git.git" giving
|
entitled "What's cooking in git.git" and "What's in git.git" giving
|
||||||
the status of various proposed changes.
|
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
|
With an account at GitHub (you can get one for free to work on open
|
||||||
on Linux, Mac and Windows. See
|
source projects), you can use Travis CI to test your changes on Linux,
|
||||||
https://github.com/git/git/actions/workflows/main.yml for examples of
|
Mac (and hopefully soon Windows). You can find a successful example
|
||||||
recent CI runs.
|
test build here: https://travis-ci.org/git/git/builds/120473209
|
||||||
|
|
||||||
Follow these steps for the initial setup:
|
Follow these steps for the initial setup:
|
||||||
|
|
||||||
@ -461,18 +464,31 @@ Follow these steps for the initial setup:
|
|||||||
You can find detailed instructions how to fork here:
|
You can find detailed instructions how to fork here:
|
||||||
https://help.github.com/articles/fork-a-repo/
|
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
|
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
|
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
|
cross. In that case you can click on the failing Travis CI job and
|
||||||
"ci/run-build-and-tests.sh" and/or "ci/print-test-failures.sh". You
|
scroll all the way down in the log. Find the line "<-- Click here to see
|
||||||
can also download "Artifacts" which are tarred (or zipped) archives
|
detailed test output!" and click on the triangle next to the log line
|
||||||
with test data relevant for debugging.
|
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
|
Fix the problem and push your fix to your Git fork. This will trigger
|
||||||
trigger a new CI build to ensure all tests pass.
|
a new Travis CI build to ensure all tests pass.
|
||||||
|
|
||||||
[[mua]]
|
[[mua]]
|
||||||
== MUA specific hints
|
== MUA specific hints
|
||||||
|
@ -136,16 +136,5 @@ take effect.
|
|||||||
option. An empty file name, `""`, will clear the list of revs from
|
option. An empty file name, `""`, will clear the list of revs from
|
||||||
previously processed files.
|
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::
|
-h::
|
||||||
Show help message.
|
Show help message.
|
||||||
|
@ -298,15 +298,6 @@ pathname::
|
|||||||
tilde expansion happens to such a string: `~/`
|
tilde expansion happens to such a string: `~/`
|
||||||
is expanded to the value of `$HOME`, and `~user/` to the
|
is expanded to the value of `$HOME`, and `~user/` to the
|
||||||
specified user's home directory.
|
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
|
Variables
|
||||||
|
@ -44,9 +44,6 @@ advice.*::
|
|||||||
Shown when linkgit:git-push[1] rejects a forced update of
|
Shown when linkgit:git-push[1] rejects a forced update of
|
||||||
a branch when its remote-tracking ref has updates that we
|
a branch when its remote-tracking ref has updates that we
|
||||||
do not have locally.
|
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::
|
statusAheadBehind::
|
||||||
Shown when linkgit:git-status[1] computes the ahead/behind
|
Shown when linkgit:git-status[1] computes the ahead/behind
|
||||||
counts for a local ref compared to its remote tracking ref,
|
counts for a local ref compared to its remote tracking ref,
|
||||||
|
@ -27,7 +27,7 @@ blame.ignoreRevsFile::
|
|||||||
file names will reset the list of ignored revisions. This option will
|
file names will reset the list of ignored revisions. This option will
|
||||||
be handled before the command line option `--ignore-revs-file`.
|
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
|
Mark lines that were changed by an ignored revision that we could not
|
||||||
attribute to another commit with a '*' in the output of
|
attribute to another commit with a '*' in the output of
|
||||||
linkgit:git-blame[1].
|
linkgit:git-blame[1].
|
||||||
|
@ -85,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
|
so that the local merge commits are included in the rebase (see
|
||||||
linkgit:git-rebase[1] for details).
|
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
|
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
||||||
mode.
|
mode.
|
||||||
+
|
+
|
||||||
|
@ -9,27 +9,26 @@ color.advice.hint::
|
|||||||
Use customized color for hints.
|
Use customized color for hints.
|
||||||
|
|
||||||
color.blame.highlightRecent::
|
color.blame.highlightRecent::
|
||||||
Specify the line annotation color for `git blame --color-by-age`
|
This can be used to color the metadata of a blame line depending
|
||||||
depending upon the age of the line.
|
on age of the line.
|
||||||
+
|
+
|
||||||
This setting should be set to a comma-separated list of color and
|
This setting should be set to a comma-separated list of color and date settings,
|
||||||
date settings, starting and ending with a color, the dates should be
|
starting and ending with a color, the dates should be set from oldest to newest.
|
||||||
set from oldest to newest. The metadata will be colored with the
|
The metadata will be colored given the colors if the line was introduced
|
||||||
specified colors if the line was introduced before the given
|
before the given timestamp, overwriting older timestamped colors.
|
||||||
timestamp, overwriting older timestamped colors.
|
|
||||||
+
|
+
|
||||||
Instead of an absolute timestamp relative timestamps work as well,
|
Instead of an absolute timestamp relative timestamps work as well, e.g.
|
||||||
e.g. `2.weeks.ago` is valid to address anything older than 2 weeks.
|
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
|
It defaults to 'blue,12 month ago,white,1 month ago,red', which colors
|
||||||
colors everything older than one year blue, recent changes between
|
everything older than one year blue, recent changes between one month and
|
||||||
one month and one year old are kept white, and lines introduced
|
one year old are kept white, and lines introduced within the last month are
|
||||||
within the last month are colored red.
|
colored red.
|
||||||
|
|
||||||
color.blame.repeatedLines::
|
color.blame.repeatedLines::
|
||||||
Use the specified color to colorize line annotations for
|
Use the customized color for the part of git-blame output that
|
||||||
`git blame --color-lines`, if they come from the same commit as the
|
is repeated meta information per line (such as commit id,
|
||||||
preceding line. Defaults to cyan.
|
author name, date and timezone). Defaults to cyan.
|
||||||
|
|
||||||
color.branch::
|
color.branch::
|
||||||
A boolean to enable/disable color in the output of
|
A boolean to enable/disable color in the output of
|
||||||
@ -105,12 +104,9 @@ color.grep.<slot>::
|
|||||||
`matchContext`;;
|
`matchContext`;;
|
||||||
matching text in context lines
|
matching text in context lines
|
||||||
`matchSelected`;;
|
`matchSelected`;;
|
||||||
matching text in selected lines. Also, used to customize the following
|
matching text in selected lines
|
||||||
linkgit:git-log[1] subcommands: `--grep`, `--author` and `--committer`.
|
|
||||||
`selected`;;
|
`selected`;;
|
||||||
non-matching text in selected lines. Also, used to customize the
|
non-matching text in selected lines
|
||||||
following linkgit:git-log[1] subcommands: `--grep`, `--author` and
|
|
||||||
`--committer`.
|
|
||||||
`separator`;;
|
`separator`;;
|
||||||
separators between fields on a line (`:`, `-`, and `=`)
|
separators between fields on a line (`:`, `-`, and `=`)
|
||||||
and between hunks (`--`)
|
and between hunks (`--`)
|
||||||
@ -131,9 +127,8 @@ color.interactive.<slot>::
|
|||||||
interactive commands.
|
interactive commands.
|
||||||
|
|
||||||
color.pager::
|
color.pager::
|
||||||
A boolean to specify whether `auto` color modes should colorize
|
A boolean to enable/disable colored output when the pager is in
|
||||||
output going to the pager. Defaults to true; set this to false
|
use (default is true).
|
||||||
if your pager does not understand ANSI color codes.
|
|
||||||
|
|
||||||
color.push::
|
color.push::
|
||||||
A boolean to enable/disable color in push errors. May be set to
|
A boolean to enable/disable color in push errors. May be set to
|
||||||
|
@ -118,10 +118,9 @@ diff.orderFile::
|
|||||||
relative to the top of the working tree.
|
relative to the top of the working tree.
|
||||||
|
|
||||||
diff.renameLimit::
|
diff.renameLimit::
|
||||||
The number of files to consider in the exhaustive portion of
|
The number of files to consider when performing the copy/rename
|
||||||
copy/rename detection; equivalent to the 'git diff' option
|
detection; equivalent to the 'git diff' option `-l`. This setting
|
||||||
`-l`. If not set, the default value is currently 1000. This
|
has no effect if rename detection is turned off.
|
||||||
setting has no effect if rename detection is turned off.
|
|
||||||
|
|
||||||
diff.renames::
|
diff.renames::
|
||||||
Whether and how Git detects renames. If set to "false",
|
Whether and how Git detects renames. If set to "false",
|
||||||
|
@ -69,8 +69,7 @@ fetch.negotiationAlgorithm::
|
|||||||
setting defaults to "skipping".
|
setting defaults to "skipping".
|
||||||
Unknown values will cause 'git fetch' to error out.
|
Unknown values will cause 'git fetch' to error out.
|
||||||
+
|
+
|
||||||
See also the `--negotiate-only` and `--negotiation-tip` options to
|
See also the `--negotiation-tip` option for linkgit:git-fetch[1].
|
||||||
linkgit:git-fetch[1].
|
|
||||||
|
|
||||||
fetch.showForcedUpdates::
|
fetch.showForcedUpdates::
|
||||||
Set to false to enable `--no-show-forced-updates` in
|
Set to false to enable `--no-show-forced-updates` in
|
||||||
|
@ -11,13 +11,13 @@ gpg.program::
|
|||||||
|
|
||||||
gpg.format::
|
gpg.format::
|
||||||
Specifies which key format to use when signing with `--gpg-sign`.
|
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::
|
gpg.<format>.program::
|
||||||
Use this to customize the program used for the signing format you
|
Use this to customize the program used for the signing format you
|
||||||
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
||||||
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
||||||
value for `gpg.x509.program` is "gpgsm" and `gpg.ssh.program` is "ssh-keygen".
|
value for `gpg.x509.program` is "gpgsm".
|
||||||
|
|
||||||
gpg.minTrustLevel::
|
gpg.minTrustLevel::
|
||||||
Specifies a minimum trust level for signature verification. If
|
Specifies a minimum trust level for signature verification. If
|
||||||
@ -33,42 +33,3 @@ gpg.minTrustLevel::
|
|||||||
* `marginal`
|
* `marginal`
|
||||||
* `fully`
|
* `fully`
|
||||||
* `ultimate`
|
* `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.
|
|
||||||
+
|
|
||||||
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.
|
|
||||||
|
@ -11,7 +11,7 @@ gui.displayUntracked::
|
|||||||
in the file list. The default is "true".
|
in the file list. The default is "true".
|
||||||
|
|
||||||
gui.encoding::
|
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].
|
file contents in linkgit:git-gui[1] and linkgit:gitk[1].
|
||||||
It can be overridden by setting the 'encoding' attribute
|
It can be overridden by setting the 'encoding' attribute
|
||||||
for relevant files (see linkgit:gitattributes[5]).
|
for relevant files (see linkgit:gitattributes[5]).
|
||||||
|
@ -9,15 +9,13 @@ help.format::
|
|||||||
|
|
||||||
help.autoCorrect::
|
help.autoCorrect::
|
||||||
If git detects typos and can identify exactly one valid command similar
|
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
|
to the error, git will automatically run the intended command after
|
||||||
run the suggestion automatically. Possible config values are:
|
waiting a duration of time defined by this configuration value in
|
||||||
- 0 (default): show the suggested command.
|
deciseconds (0.1 sec). If this value is 0, the suggested corrections
|
||||||
- positive number: run the suggested command after specified
|
will be shown, but not executed. If it is a negative integer, or
|
||||||
deciseconds (0.1 sec).
|
"immediate", the suggested command
|
||||||
- "immediate": run the suggested command immediately.
|
is run immediately. If "never", suggestions are not shown at all. The
|
||||||
- "prompt": show the suggestion and prompt for confirmation to run
|
default value is zero.
|
||||||
the command.
|
|
||||||
- "never": don't run or show any suggested command.
|
|
||||||
|
|
||||||
help.htmlPath::
|
help.htmlPath::
|
||||||
Specify the path where the HTML documentation resides. File system paths
|
Specify the path where the HTML documentation resides. File system paths
|
||||||
|
@ -14,7 +14,7 @@ merge.defaultToUpstream::
|
|||||||
branches at the remote named by `branch.<current branch>.remote`
|
branches at the remote named by `branch.<current branch>.remote`
|
||||||
are consulted, and then they are mapped via `remote.<remote>.fetch`
|
are consulted, and then they are mapped via `remote.<remote>.fetch`
|
||||||
to their corresponding remote-tracking branches, and the tips of
|
to their corresponding remote-tracking branches, and the tips of
|
||||||
these tracking branches are merged. Defaults to true.
|
these tracking branches are merged.
|
||||||
|
|
||||||
merge.ff::
|
merge.ff::
|
||||||
By default, Git does not create an extra merge commit when merging
|
By default, Git does not create an extra merge commit when merging
|
||||||
@ -33,12 +33,10 @@ merge.verifySignatures::
|
|||||||
include::fmt-merge-msg.txt[]
|
include::fmt-merge-msg.txt[]
|
||||||
|
|
||||||
merge.renameLimit::
|
merge.renameLimit::
|
||||||
The number of files to consider in the exhaustive portion of
|
The number of files to consider when performing rename detection
|
||||||
rename detection during a merge. If not specified, defaults
|
during a merge; if not specified, defaults to the value of
|
||||||
to the value of diff.renameLimit. If neither
|
diff.renameLimit. This setting has no effect if rename detection
|
||||||
merge.renameLimit nor diff.renameLimit are specified,
|
is turned off.
|
||||||
currently defaults to 7000. This setting has no effect if
|
|
||||||
rename detection is turned off.
|
|
||||||
|
|
||||||
merge.renames::
|
merge.renames::
|
||||||
Whether Git detects renames. If set to "false", rename detection
|
Whether Git detects renames. If set to "false", rename detection
|
||||||
|
@ -99,23 +99,12 @@ pack.packSizeLimit::
|
|||||||
packing to a file when repacking, i.e. the git:// protocol
|
packing to a file when repacking, i.e. the git:// protocol
|
||||||
is unaffected. It can be overridden by the `--max-pack-size`
|
is unaffected. It can be overridden by the `--max-pack-size`
|
||||||
option of linkgit:git-repack[1]. Reaching this limit results
|
option of linkgit:git-repack[1]. Reaching this limit results
|
||||||
in the creation of multiple packfiles.
|
in the creation of multiple packfiles; which in turn prevents
|
||||||
+
|
bitmaps from being created.
|
||||||
Note that this option is rarely useful, and may result in a larger total
|
The minimum size allowed is limited to 1 MiB.
|
||||||
on-disk size (because Git will not store deltas between packs), as well
|
The default is unlimited.
|
||||||
as worse runtime performance (object lookup within multiple packs is
|
Common unit suffixes of 'k', 'm', or 'g' are
|
||||||
slower than a single pack, and optimizations like reachability bitmaps
|
supported.
|
||||||
cannot cope with multiple packs).
|
|
||||||
+
|
|
||||||
If you need to actively run Git using smaller packfiles (e.g., because your
|
|
||||||
filesystem does not support large files), this option may help. But if
|
|
||||||
your goal is to transmit a packfile over a medium that supports limited
|
|
||||||
sizes (e.g., removable media that cannot store the whole repository),
|
|
||||||
you are likely better off creating a single large packfile and splitting
|
|
||||||
it using a generic multi-volume archive tool (e.g., Unix `split`).
|
|
||||||
+
|
|
||||||
The minimum size allowed is limited to 1 MiB. The default is unlimited.
|
|
||||||
Common unit suffixes of 'k', 'm', or 'g' are supported.
|
|
||||||
|
|
||||||
pack.useBitmaps::
|
pack.useBitmaps::
|
||||||
When true, git will use pack bitmaps (if available) when packing
|
When true, git will use pack bitmaps (if available) when packing
|
||||||
@ -159,10 +148,6 @@ pack.writeBitmapHashCache::
|
|||||||
between an older, bitmapped pack and objects that have been
|
between an older, bitmapped pack and objects that have been
|
||||||
pushed since the last gc). The downside is that it consumes 4
|
pushed since the last gc). The downside is that it consumes 4
|
||||||
bytes per object of disk space. Defaults to true.
|
bytes per object of disk space. Defaults to true.
|
||||||
+
|
|
||||||
When writing a multi-pack reachability bitmap, no new namehashes are
|
|
||||||
computed; instead, any namehashes stored in an existing bitmap are
|
|
||||||
permuted into their appropriate location when writing a new bitmap.
|
|
||||||
|
|
||||||
pack.writeReverseIndex::
|
pack.writeReverseIndex::
|
||||||
When true, git will write a corresponding .rev file (see:
|
When true, git will write a corresponding .rev file (see:
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
protocol.allow::
|
protocol.allow::
|
||||||
If set, provide a user defined default policy for all protocols which
|
If set, provide a user defined default policy for all protocols which
|
||||||
don't explicitly have a policy (`protocol.<name>.allow`). By default,
|
don't explicitly have a policy (`protocol.<name>.allow`). By default,
|
||||||
if unset, known-safe protocols (http, https, git, ssh, file) have a
|
if unset, known-safe protocols (http, https, git, ssh) have a
|
||||||
default policy of `always`, known-dangerous protocols (ext) have a
|
default policy of `always`, known-dangerous protocols (ext) have a
|
||||||
default policy of `never`, and all other protocols have a default
|
default policy of `never`, and all other protocols (including file)
|
||||||
policy of `user`. Supported policies:
|
have a default policy of `user`. Supported policies:
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -18,6 +18,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
|
so that the local merge commits are included in the rebase (see
|
||||||
linkgit:git-rebase[1] for details).
|
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
|
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
||||||
mode.
|
mode.
|
||||||
+
|
+
|
||||||
|
@ -24,14 +24,15 @@ push.default::
|
|||||||
|
|
||||||
* `tracking` - This is a deprecated synonym for `upstream`.
|
* `tracking` - This is a deprecated synonym for `upstream`.
|
||||||
|
|
||||||
* `simple` - pushes the current branch with the same name on the remote.
|
* `simple` - in centralized workflow, work like `upstream` with an
|
||||||
|
added safety to refuse to push if the upstream branch's name is
|
||||||
|
different from the local one.
|
||||||
+
|
+
|
||||||
If you are working on a centralized workflow (pushing to the same repository you
|
When pushing to a remote that is different from the remote you normally
|
||||||
pull from, which is typically `origin`), then you need to configure an upstream
|
pull from, work as `current`. This is the safest option and is suited
|
||||||
branch with the same name.
|
for beginners.
|
||||||
+
|
+
|
||||||
This mode is the default since Git 2.0, and is the safest option suited for
|
This mode has become the default in Git 2.0.
|
||||||
beginners.
|
|
||||||
|
|
||||||
* `matching` - push all branches having the same name on both ends.
|
* `matching` - push all branches having the same name on both ends.
|
||||||
This makes the repository you are pushing to remember the set of
|
This makes the repository you are pushing to remember the set of
|
||||||
|
@ -8,6 +8,9 @@ sendemail.smtpEncryption::
|
|||||||
See linkgit:git-send-email[1] for description. Note that this
|
See linkgit:git-send-email[1] for description. Note that this
|
||||||
setting is not subject to the 'identity' mechanism.
|
setting is not subject to the 'identity' mechanism.
|
||||||
|
|
||||||
|
sendemail.smtpssl (deprecated)::
|
||||||
|
Deprecated alias for 'sendemail.smtpEncryption = ssl'.
|
||||||
|
|
||||||
sendemail.smtpsslcertpath::
|
sendemail.smtpsslcertpath::
|
||||||
Path to ca-certificates (either a directory or a single file).
|
Path to ca-certificates (either a directory or a single file).
|
||||||
Set it to an empty string to disable certificate verification.
|
Set it to an empty string to disable certificate verification.
|
||||||
|
@ -58,9 +58,8 @@ submodule.active::
|
|||||||
commands. See linkgit:gitsubmodules[7] for details.
|
commands. See linkgit:gitsubmodules[7] for details.
|
||||||
|
|
||||||
submodule.recurse::
|
submodule.recurse::
|
||||||
A boolean indicating if commands should enable the `--recurse-submodules`
|
Specifies if commands recurse into submodules by default. This
|
||||||
option by default.
|
applies to all commands that have a `--recurse-submodules` option
|
||||||
Applies to all commands that support this option
|
|
||||||
(`checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`, `reset`,
|
(`checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`, `reset`,
|
||||||
`restore` and `switch`) except `clone` and `ls-files`.
|
`restore` and `switch`) except `clone` and `ls-files`.
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
|
@ -52,17 +52,13 @@ If you have multiple hideRefs values, later entries override earlier ones
|
|||||||
(and entries in more-specific config files override less-specific ones).
|
(and entries in more-specific config files override less-specific ones).
|
||||||
+
|
+
|
||||||
If a namespace is in use, the namespace prefix is stripped from each
|
If a namespace is in use, the namespace prefix is stripped from each
|
||||||
reference before it is matched against `transfer.hiderefs` patterns. In
|
reference before it is matched against `transfer.hiderefs` patterns.
|
||||||
order to match refs before stripping, add a `^` in front of the ref name. If
|
|
||||||
you combine `!` and `^`, `!` must be specified first.
|
|
||||||
+
|
|
||||||
For example, if `refs/heads/master` is specified in `transfer.hideRefs` and
|
For example, if `refs/heads/master` is specified in `transfer.hideRefs` and
|
||||||
the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`
|
the current namespace is `foo`, then `refs/namespaces/foo/refs/heads/master`
|
||||||
is omitted from the advertisements. If `uploadpack.allowRefInWant` is set,
|
is omitted from the advertisements but `refs/heads/master` and
|
||||||
`upload-pack` will treat `want-ref refs/heads/master` in a protocol v2
|
`refs/namespaces/bar/refs/heads/master` are still advertised as so-called
|
||||||
`fetch` command as if `refs/namespaces/foo/refs/heads/master` did not exist.
|
"have" lines. In order to match refs before stripping, add a `^` in front of
|
||||||
`receive-pack`, on the other hand, will still advertise the object id the
|
the ref name. If you combine `!` and `^`, `!` must be specified first.
|
||||||
ref is pointing to without mentioning its name (a so-called ".have" line).
|
|
||||||
+
|
+
|
||||||
Even if you hide refs, a client may still be able to steal the target
|
Even if you hide refs, a client may still be able to steal the target
|
||||||
objects via the techniques described in the "SECURITY" section of the
|
objects via the techniques described in the "SECURITY" section of the
|
||||||
|
@ -36,10 +36,3 @@ user.signingKey::
|
|||||||
commit, you can override the default selection with this variable.
|
commit, you can override the default selection with this variable.
|
||||||
This option is passed unchanged to gpg's --local-user parameter,
|
This option is passed unchanged to gpg's --local-user parameter,
|
||||||
so you may specify a key using any method that gpg supports.
|
so you may specify a key using any method that gpg supports.
|
||||||
If gpg.format is set to "ssh" this can contain the literal ssh public
|
|
||||||
key (e.g.: "ssh-rsa XXXXXX identifier") or a file which contains it and
|
|
||||||
corresponds to the private key used for signing. The private key
|
|
||||||
needs to be available via ssh-agent. Alternatively it can be set to
|
|
||||||
a file containing a private key directly. If not set git will call
|
|
||||||
gpg.ssh.defaultKeyCommand (e.g.: "ssh-add -L") and try to use the first
|
|
||||||
key available.
|
|
||||||
|
@ -59,7 +59,7 @@ Possible status letters are:
|
|||||||
- D: deletion of a file
|
- D: deletion of a file
|
||||||
- M: modification of the contents or mode of a file
|
- M: modification of the contents or mode of a file
|
||||||
- R: renaming of a file
|
- R: renaming of a file
|
||||||
- T: change in the type of the file (regular file, symbolic link or submodule)
|
- T: change in the type of the file
|
||||||
- U: file is unmerged (you must complete the merge before it can
|
- U: file is unmerged (you must complete the merge before it can
|
||||||
be committed)
|
be committed)
|
||||||
- X: "unknown" change type (most probably a bug, please report it)
|
- X: "unknown" change type (most probably a bug, please report it)
|
||||||
|
@ -588,17 +588,11 @@ When used together with `-B`, omit also the preimage in the deletion part
|
|||||||
of a delete/create pair.
|
of a delete/create pair.
|
||||||
|
|
||||||
-l<num>::
|
-l<num>::
|
||||||
The `-M` and `-C` options involve some preliminary steps that
|
The `-M` and `-C` options require O(n^2) processing time where n
|
||||||
can detect subsets of renames/copies cheaply, followed by an
|
is the number of potential rename/copy targets. This
|
||||||
exhaustive fallback portion that compares all remaining
|
option prevents rename/copy detection from running if
|
||||||
unpaired destinations to all relevant sources. (For renames,
|
the number of rename/copy targets exceeds the specified
|
||||||
only remaining unpaired sources are relevant; for copies, all
|
number.
|
||||||
original sources are relevant.) For N sources and
|
|
||||||
destinations, this exhaustive check is O(N^2). This option
|
|
||||||
prevents the exhaustive portion of rename/copy detection from
|
|
||||||
running if the number of source/destination files involved
|
|
||||||
exceeds the specified number. Defaults to diff.renameLimit.
|
|
||||||
Note that a value of 0 is treated as unlimited.
|
|
||||||
|
|
||||||
ifndef::git-format-patch[]
|
ifndef::git-format-patch[]
|
||||||
--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]::
|
--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]::
|
||||||
|
@ -62,17 +62,8 @@ The argument to this option may be a glob on ref names, a ref, or the (possibly
|
|||||||
abbreviated) SHA-1 of a commit. Specifying a glob is equivalent to specifying
|
abbreviated) SHA-1 of a commit. Specifying a glob is equivalent to specifying
|
||||||
this option multiple times, one for each matching ref name.
|
this option multiple times, one for each matching ref name.
|
||||||
+
|
+
|
||||||
See also the `fetch.negotiationAlgorithm` and `push.negotiate`
|
See also the `fetch.negotiationAlgorithm` configuration variable
|
||||||
configuration variables documented in linkgit:git-config[1], and the
|
documented in linkgit:git-config[1].
|
||||||
`--negotiate-only` option below.
|
|
||||||
|
|
||||||
--negotiate-only::
|
|
||||||
Do not fetch anything from the server, and instead print the
|
|
||||||
ancestors of the provided `--negotiation-tip=*` arguments,
|
|
||||||
which we have in common with the server.
|
|
||||||
+
|
|
||||||
Internally this is used to implement the `push.negotiate` option, see
|
|
||||||
linkgit:git-config[1].
|
|
||||||
|
|
||||||
--dry-run::
|
--dry-run::
|
||||||
Show what would be done, without making any changes.
|
Show what would be done, without making any changes.
|
||||||
|
@ -9,7 +9,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
|
'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
|
||||||
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--sparse]
|
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
|
||||||
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
|
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
|
||||||
[--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]
|
[--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]
|
||||||
[--] [<pathspec>...]
|
[--] [<pathspec>...]
|
||||||
@ -79,13 +79,6 @@ in linkgit:gitglossary[7].
|
|||||||
--force::
|
--force::
|
||||||
Allow adding otherwise ignored files.
|
Allow adding otherwise ignored files.
|
||||||
|
|
||||||
--sparse::
|
|
||||||
Allow updating index entries outside of the sparse-checkout cone.
|
|
||||||
Normally, `git add` refuses to update index entries whose paths do
|
|
||||||
not fit within the sparse-checkout cone, since those files might
|
|
||||||
be removed from the working tree without warning. See
|
|
||||||
linkgit:git-sparse-checkout[1] for more details.
|
|
||||||
|
|
||||||
-i::
|
-i::
|
||||||
--interactive::
|
--interactive::
|
||||||
Add modified contents in the working tree interactively to
|
Add modified contents in the working tree interactively to
|
||||||
|
@ -178,8 +178,6 @@ default. You can use `--no-utf8` to override this.
|
|||||||
|
|
||||||
--abort::
|
--abort::
|
||||||
Restore the original branch and abort the patching operation.
|
Restore the original branch and abort the patching operation.
|
||||||
Revert contents of files involved in the am operation to their
|
|
||||||
pre-am state.
|
|
||||||
|
|
||||||
--quit::
|
--quit::
|
||||||
Abort the patching operation but keep HEAD and the index
|
Abort the patching operation but keep HEAD and the index
|
||||||
|
@ -93,19 +93,12 @@ BACKEND EXTRA OPTIONS
|
|||||||
|
|
||||||
zip
|
zip
|
||||||
~~~
|
~~~
|
||||||
-<digit>::
|
-0::
|
||||||
Specify compression level. Larger values allow the command
|
Store the files instead of deflating them.
|
||||||
to spend more time to compress to smaller size. Supported
|
-9::
|
||||||
values are from `-0` (store-only) to `-9` (best ratio).
|
Highest and slowest compression level. You can specify any
|
||||||
Default is `-6` if not given.
|
number from 1 to 9 to adjust compression speed and ratio.
|
||||||
|
|
||||||
tar
|
|
||||||
~~~
|
|
||||||
-<number>::
|
|
||||||
Specify compression level. The value will be passed to the
|
|
||||||
compression command configured in `tar.<format>.command`. See
|
|
||||||
manual page of the configured command for the list of supported
|
|
||||||
levels and the default level if this option isn't specified.
|
|
||||||
|
|
||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
|
@ -11,8 +11,8 @@ SYNOPSIS
|
|||||||
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
|
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
|
||||||
[-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
|
[-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
|
||||||
[--ignore-rev <rev>] [--ignore-revs-file <file>]
|
[--ignore-rev <rev>] [--ignore-revs-file <file>]
|
||||||
[--color-lines] [--color-by-age] [--progress] [--abbrev=<n>]
|
[--progress] [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>..<rev>]
|
||||||
[<rev> | --contents <file> | --reverse <rev>..<rev>] [--] <file>
|
[--] <file>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -93,19 +93,6 @@ include::blame-options.txt[]
|
|||||||
is used for a caret to mark the boundary commit.
|
is used for a caret to mark the boundary commit.
|
||||||
|
|
||||||
|
|
||||||
THE DEFAULT FORMAT
|
|
||||||
------------------
|
|
||||||
|
|
||||||
When neither `--porcelain` nor `--incremental` option is specified,
|
|
||||||
`git blame` will output annotation for each line with:
|
|
||||||
|
|
||||||
- abbreviated object name for the commit the line came from;
|
|
||||||
- author ident (by default author name and date, unless `-s` or `-e`
|
|
||||||
is specified); and
|
|
||||||
- line number
|
|
||||||
|
|
||||||
before the line contents.
|
|
||||||
|
|
||||||
THE PORCELAIN FORMAT
|
THE PORCELAIN FORMAT
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
@ -118,21 +118,20 @@ OPTIONS
|
|||||||
Reset <branchname> to <startpoint>, even if <branchname> exists
|
Reset <branchname> to <startpoint>, even if <branchname> exists
|
||||||
already. Without `-f`, 'git branch' refuses to change an existing branch.
|
already. Without `-f`, 'git branch' refuses to change an existing branch.
|
||||||
In combination with `-d` (or `--delete`), allow deleting the
|
In combination with `-d` (or `--delete`), allow deleting the
|
||||||
branch irrespective of its merged status, or whether it even
|
branch irrespective of its merged status. In combination with
|
||||||
points to a valid commit. In combination with
|
|
||||||
`-m` (or `--move`), allow renaming the branch even if the new
|
`-m` (or `--move`), allow renaming the branch even if the new
|
||||||
branch name already exists, the same applies for `-c` (or `--copy`).
|
branch name already exists, the same applies for `-c` (or `--copy`).
|
||||||
|
|
||||||
-m::
|
-m::
|
||||||
--move::
|
--move::
|
||||||
Move/rename a branch, together with its config and reflog.
|
Move/rename a branch and the corresponding reflog.
|
||||||
|
|
||||||
-M::
|
-M::
|
||||||
Shortcut for `--move --force`.
|
Shortcut for `--move --force`.
|
||||||
|
|
||||||
-c::
|
-c::
|
||||||
--copy::
|
--copy::
|
||||||
Copy a branch, together with its config and reflog.
|
Copy a branch and the corresponding reflog.
|
||||||
|
|
||||||
-C::
|
-C::
|
||||||
Shortcut for `--copy --force`.
|
Shortcut for `--copy --force`.
|
||||||
|
@ -40,8 +40,8 @@ OPTIONS
|
|||||||
-------
|
-------
|
||||||
-o <path>::
|
-o <path>::
|
||||||
--output-directory <path>::
|
--output-directory <path>::
|
||||||
Place the resulting bug report file in `<path>` instead of the current
|
Place the resulting bug report file in `<path>` instead of the root of
|
||||||
directory.
|
the Git repository.
|
||||||
|
|
||||||
-s <format>::
|
-s <format>::
|
||||||
--suffix <format>::
|
--suffix <format>::
|
||||||
|
@ -13,53 +13,26 @@ SYNOPSIS
|
|||||||
[--version=<version>] <file> <git-rev-list-args>
|
[--version=<version>] <file> <git-rev-list-args>
|
||||||
'git bundle' verify [-q | --quiet] <file>
|
'git bundle' verify [-q | --quiet] <file>
|
||||||
'git bundle' list-heads <file> [<refname>...]
|
'git bundle' list-heads <file> [<refname>...]
|
||||||
'git bundle' unbundle [--progress] <file> [<refname>...]
|
'git bundle' unbundle <file> [<refname>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Create, unpack, and manipulate "bundle" files. Bundles are used for
|
Some workflows require that one or more branches of development on one
|
||||||
the "offline" transfer of Git objects without an active "server"
|
machine be replicated on another machine, but the two machines cannot
|
||||||
sitting on the other side of the network connection.
|
be directly connected, and therefore the interactive Git protocols (git,
|
||||||
|
ssh, http) cannot be used.
|
||||||
|
|
||||||
They can be used to create both incremental and full backups of a
|
The 'git bundle' command packages objects and references in an archive
|
||||||
repository, and to relay the state of the references in one repository
|
at the originating machine, which can then be imported into another
|
||||||
to another.
|
repository using 'git fetch', 'git pull', or 'git clone',
|
||||||
|
after moving the archive by some means (e.g., by sneakernet).
|
||||||
|
|
||||||
Git commands that fetch or otherwise "read" via protocols such as
|
As no
|
||||||
`ssh://` and `https://` can also operate on bundle files. It is
|
direct connection between the repositories exists, the user must specify a
|
||||||
possible linkgit:git-clone[1] a new repository from a bundle, to use
|
basis for the bundle that is held by the destination repository: the
|
||||||
linkgit:git-fetch[1] to fetch from one, and to list the references
|
bundle assumes that all objects in the basis are already in the
|
||||||
contained within it with linkgit:git-ls-remote[1]. There's no
|
destination repository.
|
||||||
corresponding "write" support, i.e.a 'git push' into a bundle is not
|
|
||||||
supported.
|
|
||||||
|
|
||||||
See the "EXAMPLES" section below for examples of how to use bundles.
|
|
||||||
|
|
||||||
BUNDLE FORMAT
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Bundles are `.pack` files (see linkgit:git-pack-objects[1]) with a
|
|
||||||
header indicating what references are contained within the bundle.
|
|
||||||
|
|
||||||
Like the the packed archive format itself bundles can either be
|
|
||||||
self-contained, or be created using exclusions.
|
|
||||||
See the "OBJECT PREREQUISITES" section below.
|
|
||||||
|
|
||||||
Bundles created using revision exclusions are "thin packs" created
|
|
||||||
using the `--thin` option to linkgit:git-pack-objects[1], and
|
|
||||||
unbundled using the `--fix-thin` option to linkgit:git-index-pack[1].
|
|
||||||
|
|
||||||
There is no option to create a "thick pack" when using revision
|
|
||||||
exclusions, and users should not be concerned about the difference. By
|
|
||||||
using "thin packs", bundles created using exclusions are smaller in
|
|
||||||
size. That they're "thin" under the hood is merely noted here as a
|
|
||||||
curiosity, and as a reference to other documentation.
|
|
||||||
|
|
||||||
See link:technical/bundle-format.html[the `bundle-format`
|
|
||||||
documentation] for more details and the discussion of "thin pack" in
|
|
||||||
link:technical/pack-format.html[the pack format documentation] for
|
|
||||||
further details.
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
@ -144,88 +117,28 @@ unbundle <file>::
|
|||||||
SPECIFYING REFERENCES
|
SPECIFYING REFERENCES
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
Revisions must be accompanied by reference names to be packaged in a
|
'git bundle' will only package references that are shown by
|
||||||
bundle.
|
'git show-ref': this includes heads, tags, and remote heads. References
|
||||||
|
such as `master~1` cannot be packaged, but are perfectly suitable for
|
||||||
More than one reference may be packaged, and more than one set of prerequisite objects can
|
defining the basis. More than one reference may be packaged, and more
|
||||||
be specified. The objects packaged are those not contained in the
|
than one basis can be specified. The objects packaged are those not
|
||||||
union of the prerequisites.
|
contained in the union of the given bases. Each basis can be
|
||||||
|
specified explicitly (e.g. `^master~10`), or implicitly (e.g.
|
||||||
The 'git bundle create' command resolves the reference names for you
|
`master~10..master`, `--since=10.days.ago master`).
|
||||||
using the same rules as `git rev-parse --abbrev-ref=loose`. Each
|
|
||||||
prerequisite can be specified explicitly (e.g. `^master~10`), or implicitly
|
|
||||||
(e.g. `master~10..master`, `--since=10.days.ago master`).
|
|
||||||
|
|
||||||
All of these simple cases are OK (assuming we have a "master" and
|
|
||||||
"next" branch):
|
|
||||||
|
|
||||||
----------------
|
|
||||||
$ git bundle create master.bundle master
|
|
||||||
$ echo master | git bundle create master.bundle --stdin
|
|
||||||
$ git bundle create master-and-next.bundle master next
|
|
||||||
$ (echo master; echo next) | git bundle create master-and-next.bundle --stdin
|
|
||||||
----------------
|
|
||||||
|
|
||||||
And so are these (and the same but omitted `--stdin` examples):
|
|
||||||
|
|
||||||
----------------
|
|
||||||
$ git bundle create recent-master.bundle master~10..master
|
|
||||||
$ git bundle create recent-updates.bundle master~10..master next~5..next
|
|
||||||
----------------
|
|
||||||
|
|
||||||
A revision name or a range whose right-hand-side cannot be resolved to
|
|
||||||
a reference is not accepted:
|
|
||||||
|
|
||||||
----------------
|
|
||||||
$ git bundle create HEAD.bundle $(git rev-parse HEAD)
|
|
||||||
fatal: Refusing to create empty bundle.
|
|
||||||
$ git bundle create master-yesterday.bundle master~10..master~5
|
|
||||||
fatal: Refusing to create empty bundle.
|
|
||||||
----------------
|
|
||||||
|
|
||||||
OBJECT PREREQUISITES
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
When creating bundles it is possible to create a self-contained bundle
|
|
||||||
that can be unbundled in a repository with no common history, as well
|
|
||||||
as providing negative revisions to exclude objects needed in the
|
|
||||||
earlier parts of the history.
|
|
||||||
|
|
||||||
Feeding a revision such as `new` to `git bundle create` will create a
|
|
||||||
bundle file that contains all the objects reachable from the revision
|
|
||||||
`new`. That bundle can be unbundled in any repository to obtain a full
|
|
||||||
history that leads to the revision `new`:
|
|
||||||
|
|
||||||
----------------
|
|
||||||
$ git bundle create full.bundle new
|
|
||||||
----------------
|
|
||||||
|
|
||||||
A revision range such as `old..new` will produce a bundle file that
|
|
||||||
will require the revision `old` (and any objects reachable from it)
|
|
||||||
to exist for the bundle to be "unbundle"-able:
|
|
||||||
|
|
||||||
----------------
|
|
||||||
$ git bundle create full.bundle old..new
|
|
||||||
----------------
|
|
||||||
|
|
||||||
A self-contained bundle without any prerequisites can be extracted
|
|
||||||
into anywhere, even into an empty repository, or be cloned from
|
|
||||||
(i.e., `new`, but not `old..new`).
|
|
||||||
|
|
||||||
|
It is very important that the basis used be held by the destination.
|
||||||
It is okay to err on the side of caution, causing the bundle file
|
It is okay to err on the side of caution, causing the bundle file
|
||||||
to contain objects already in the destination, as these are ignored
|
to contain objects already in the destination, as these are ignored
|
||||||
when unpacking at the destination.
|
when unpacking at the destination.
|
||||||
|
|
||||||
|
`git clone` can use any bundle created without negative refspecs
|
||||||
|
(e.g., `new`, but not `old..new`).
|
||||||
If you want to match `git clone --mirror`, which would include your
|
If you want to match `git clone --mirror`, which would include your
|
||||||
refs such as `refs/remotes/*`, use `--all`.
|
refs such as `refs/remotes/*`, use `--all`.
|
||||||
If you want to provide the same set of refs that a clone directly
|
If you want to provide the same set of refs that a clone directly
|
||||||
from the source repository would get, use `--branches --tags` for
|
from the source repository would get, use `--branches --tags` for
|
||||||
the `<git-rev-list-args>`.
|
the `<git-rev-list-args>`.
|
||||||
|
|
||||||
The 'git bundle verify' command can be used to check whether your
|
|
||||||
recipient repository has the required prerequisite commits for a
|
|
||||||
bundle.
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
||||||
@ -236,7 +149,7 @@ but we can move data from A to B via some mechanism (CD, email, etc.).
|
|||||||
We want to update R2 with development made on the branch master in R1.
|
We want to update R2 with development made on the branch master in R1.
|
||||||
|
|
||||||
To bootstrap the process, you can first create a bundle that does not have
|
To bootstrap the process, you can first create a bundle that does not have
|
||||||
any prerequisites. You can use a tag to remember up to what commit you last
|
any basis. You can use a tag to remember up to what commit you last
|
||||||
processed, in order to make it easy to later update the other repository
|
processed, in order to make it easy to later update the other repository
|
||||||
with an incremental bundle:
|
with an incremental bundle:
|
||||||
|
|
||||||
@ -287,7 +200,7 @@ machineB$ git pull
|
|||||||
|
|
||||||
If you know up to what commit the intended recipient repository should
|
If you know up to what commit the intended recipient repository should
|
||||||
have the necessary objects, you can use that knowledge to specify the
|
have the necessary objects, you can use that knowledge to specify the
|
||||||
prerequisites, giving a cut-off point to limit the revisions and objects that go
|
basis, giving a cut-off point to limit the revisions and objects that go
|
||||||
in the resulting bundle. The previous example used the lastR2bundle tag
|
in the resulting bundle. The previous example used the lastR2bundle tag
|
||||||
for this purpose, but you can use any other options that you would give to
|
for this purpose, but you can use any other options that you would give to
|
||||||
the linkgit:git-log[1] command. Here are more examples:
|
the linkgit:git-log[1] command. Here are more examples:
|
||||||
@ -298,7 +211,7 @@ You can use a tag that is present in both:
|
|||||||
$ git bundle create mybundle v1.0.0..master
|
$ git bundle create mybundle v1.0.0..master
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
You can use a prerequisite based on time:
|
You can use a basis based on time:
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
$ git bundle create mybundle --since=10.days master
|
$ git bundle create mybundle --since=10.days master
|
||||||
@ -311,7 +224,7 @@ $ git bundle create mybundle -10 master
|
|||||||
----------------
|
----------------
|
||||||
|
|
||||||
You can run `git-bundle verify` to see if you can extract from a bundle
|
You can run `git-bundle verify` to see if you can extract from a bundle
|
||||||
that was created with a prerequisite:
|
that was created with a basis:
|
||||||
|
|
||||||
----------------
|
----------------
|
||||||
$ git bundle verify mybundle
|
$ git bundle verify mybundle
|
||||||
|
@ -94,10 +94,8 @@ OPTIONS
|
|||||||
Instead of reading a list of objects on stdin, perform the
|
Instead of reading a list of objects on stdin, perform the
|
||||||
requested batch operation on all objects in the repository and
|
requested batch operation on all objects in the repository and
|
||||||
any alternate object stores (not just reachable objects).
|
any alternate object stores (not just reachable objects).
|
||||||
Requires `--batch` or `--batch-check` be specified. By default,
|
Requires `--batch` or `--batch-check` be specified. Note that
|
||||||
the objects are visited in order sorted by their hashes; see
|
the objects are visited in order sorted by their hashes.
|
||||||
also `--unordered` below. Objects are presented as-is, without
|
|
||||||
respecting the "replace" mechanism of linkgit:git-replace[1].
|
|
||||||
|
|
||||||
--buffer::
|
--buffer::
|
||||||
Normally batch output is flushed after each object is output, so
|
Normally batch output is flushed after each object is output, so
|
||||||
|
@ -118,9 +118,8 @@ OPTIONS
|
|||||||
-f::
|
-f::
|
||||||
--force::
|
--force::
|
||||||
When switching branches, proceed even if the index or the
|
When switching branches, proceed even if the index or the
|
||||||
working tree differs from `HEAD`, and even if there are untracked
|
working tree differs from `HEAD`. This is used to throw away
|
||||||
files in the way. This is used to throw away local changes and
|
local changes.
|
||||||
any untracked files or directories that are in the way.
|
|
||||||
+
|
+
|
||||||
When checking out paths from the index, do not fail upon unmerged
|
When checking out paths from the index, do not fail upon unmerged
|
||||||
entries; instead, unmerged entries are ignored.
|
entries; instead, unmerged entries are ignored.
|
||||||
|
@ -39,7 +39,7 @@ OPTIONS
|
|||||||
--indent=<string>::
|
--indent=<string>::
|
||||||
String to be printed at the beginning of each line.
|
String to be printed at the beginning of each line.
|
||||||
|
|
||||||
--nl=<string>::
|
--nl=<N>::
|
||||||
String to be printed at the end of each line,
|
String to be printed at the end of each line,
|
||||||
including newline character.
|
including newline character.
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ OPTIONS
|
|||||||
|
|
||||||
-p::
|
-p::
|
||||||
--patch::
|
--patch::
|
||||||
Use the interactive patch selection interface to choose
|
Use the interactive patch selection interface to chose
|
||||||
which changes to commit. See linkgit:git-add[1] for
|
which changes to commit. See linkgit:git-add[1] for
|
||||||
details.
|
details.
|
||||||
|
|
||||||
@ -212,9 +212,8 @@ include::signoff-option.txt[]
|
|||||||
each trailer would appear, and other details.
|
each trailer would appear, and other details.
|
||||||
|
|
||||||
-n::
|
-n::
|
||||||
--[no-]verify::
|
--no-verify::
|
||||||
By default, the pre-commit and commit-msg hooks are run.
|
This option bypasses the pre-commit and commit-msg hooks.
|
||||||
When any of `--no-verify` or `-n` is given, these are bypassed.
|
|
||||||
See also linkgit:githooks[5].
|
See also linkgit:githooks[5].
|
||||||
|
|
||||||
--allow-empty::
|
--allow-empty::
|
||||||
|
@ -71,10 +71,6 @@ codes are:
|
|||||||
|
|
||||||
On success, the command returns the exit code 0.
|
On success, the command returns the exit code 0.
|
||||||
|
|
||||||
A list of all available configuration variables can be obtained using the
|
|
||||||
`git help --config` command.
|
|
||||||
|
|
||||||
[[OPTIONS]]
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
|
|
||||||
@ -147,13 +143,7 @@ See also <<FILES>>.
|
|||||||
|
|
||||||
-f config-file::
|
-f config-file::
|
||||||
--file config-file::
|
--file config-file::
|
||||||
For writing options: write to the specified file rather than the
|
Use the given config file instead of the one specified by GIT_CONFIG.
|
||||||
repository `.git/config`.
|
|
||||||
+
|
|
||||||
For reading options: read only from the specified file rather than from all
|
|
||||||
available files.
|
|
||||||
+
|
|
||||||
See also <<FILES>>.
|
|
||||||
|
|
||||||
--blob blob::
|
--blob blob::
|
||||||
Similar to `--file` but use the given blob instead of a file. E.g.
|
Similar to `--file` but use the given blob instead of a file. E.g.
|
||||||
@ -335,14 +325,21 @@ All writing options will per default write to the repository specific
|
|||||||
configuration file. Note that this also affects options like `--replace-all`
|
configuration file. Note that this also affects options like `--replace-all`
|
||||||
and `--unset`. *'git config' will only ever change one file at a time*.
|
and `--unset`. *'git config' will only ever change one file at a time*.
|
||||||
|
|
||||||
You can override these rules using the `--global`, `--system`,
|
You can override these rules either by command-line options or by environment
|
||||||
`--local`, `--worktree`, and `--file` command-line options; see
|
variables. The `--global`, `--system` and `--worktree` options will limit
|
||||||
<<OPTIONS>> above.
|
the file used to the global, system-wide or per-worktree file respectively.
|
||||||
|
The `GIT_CONFIG` environment variable has a similar effect, but you
|
||||||
|
can specify any filename you want.
|
||||||
|
|
||||||
|
|
||||||
ENVIRONMENT
|
ENVIRONMENT
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
GIT_CONFIG::
|
||||||
|
Take the configuration from the given file instead of .git/config.
|
||||||
|
Using the "--global" option forces this to ~/.gitconfig. Using the
|
||||||
|
"--system" option forces this to $(prefix)/etc/gitconfig.
|
||||||
|
|
||||||
GIT_CONFIG_GLOBAL::
|
GIT_CONFIG_GLOBAL::
|
||||||
GIT_CONFIG_SYSTEM::
|
GIT_CONFIG_SYSTEM::
|
||||||
Take the configuration from the given files instead from global or
|
Take the configuration from the given files instead from global or
|
||||||
@ -370,12 +367,6 @@ This is useful for cases where you want to spawn multiple git commands
|
|||||||
with a common configuration but cannot depend on a configuration file,
|
with a common configuration but cannot depend on a configuration file,
|
||||||
for example when writing scripts.
|
for example when writing scripts.
|
||||||
|
|
||||||
GIT_CONFIG::
|
|
||||||
If no `--file` option is provided to `git config`, use the file
|
|
||||||
given by `GIT_CONFIG` as if it were provided via `--file`. This
|
|
||||||
variable has no effect on other Git commands, and is mostly for
|
|
||||||
historical compatibility; there is generally no reason to use it
|
|
||||||
instead of the `--file` option.
|
|
||||||
|
|
||||||
[[EXAMPLES]]
|
[[EXAMPLES]]
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
@ -99,7 +99,7 @@ looks like
|
|||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
Only anonymous access is provided by pserver by default. To commit you
|
Only anonymous access is provided by pserve by default. To commit you
|
||||||
will have to create pserver accounts, simply add a gitcvs.authdb
|
will have to create pserver accounts, simply add a gitcvs.authdb
|
||||||
setting in the config file of the repositories you want the cvsserver
|
setting in the config file of the repositories you want the cvsserver
|
||||||
to allow writes to, for example:
|
to allow writes to, for example:
|
||||||
@ -114,20 +114,21 @@ The format of these files is username followed by the encrypted password,
|
|||||||
for example:
|
for example:
|
||||||
|
|
||||||
------
|
------
|
||||||
myuser:sqkNi8zPf01HI
|
myuser:$1Oyx5r9mdGZ2
|
||||||
myuser:$1$9K7FzU28$VfF6EoPYCJEYcVQwATgOP/
|
myuser:$1$BA)@$vbnMJMDym7tA32AamXrm./
|
||||||
myuser:$5$.NqmNH1vwfzGpV8B$znZIcumu1tNLATgV2l6e1/mY8RzhUDHMOaVOeL1cxV3
|
|
||||||
------
|
------
|
||||||
You can use the 'htpasswd' facility that comes with Apache to make these
|
You can use the 'htpasswd' facility that comes with Apache to make these
|
||||||
files, but only with the -d option (or -B if your system suports it).
|
files, but Apache's MD5 crypt method differs from the one used by most C
|
||||||
|
library's crypt() function, so don't use the -m option.
|
||||||
|
|
||||||
Preferably use the system specific utility that manages password hash
|
Alternatively you can produce the password with perl's crypt() operator:
|
||||||
creation in your platform (e.g. mkpasswd in Linux, encrypt in OpenBSD or
|
-----
|
||||||
pwhash in NetBSD) and paste it in the right location.
|
perl -e 'my ($user, $pass) = @ARGV; printf "%s:%s\n", $user, crypt($user, $pass)' $USER password
|
||||||
|
-----
|
||||||
|
|
||||||
Then provide your password via the pserver method, for example:
|
Then provide your password via the pserver method, for example:
|
||||||
------
|
------
|
||||||
cvs -d:pserver:someuser:somepassword@server:/path/repo.git co <HEAD_name>
|
cvs -d:pserver:someuser:somepassword <at> server/path/repo.git co <HEAD_name>
|
||||||
------
|
------
|
||||||
No special setup is needed for SSH access, other than having Git tools
|
No special setup is needed for SSH access, other than having Git tools
|
||||||
in the PATH. If you have clients that do not accept the CVS_SERVER
|
in the PATH. If you have clients that do not accept the CVS_SERVER
|
||||||
@ -137,7 +138,7 @@ Note: Newer CVS versions (>= 1.12.11) also support specifying
|
|||||||
CVS_SERVER directly in CVSROOT like
|
CVS_SERVER directly in CVSROOT like
|
||||||
|
|
||||||
------
|
------
|
||||||
cvs -d ":ext;CVS_SERVER=git cvsserver:user@server/path/repo.git" co <HEAD_name>
|
cvs -d ":ext;CVS_SERVER=git cvsserver:user@server/path/repo.git" co <HEAD_name>
|
||||||
------
|
------
|
||||||
This has the advantage that it will be saved in your 'CVS/Root' files and
|
This has the advantage that it will be saved in your 'CVS/Root' files and
|
||||||
you don't need to worry about always setting the correct environment
|
you don't need to worry about always setting the correct environment
|
||||||
|
@ -63,10 +63,9 @@ OPTIONS
|
|||||||
Automatically implies --tags.
|
Automatically implies --tags.
|
||||||
|
|
||||||
--abbrev=<n>::
|
--abbrev=<n>::
|
||||||
Instead of using the default number of hexadecimal digits (which
|
Instead of using the default 7 hexadecimal digits as the
|
||||||
will vary according to the number of objects in the repository with
|
abbreviated object name, use <n> digits, or as many digits
|
||||||
a default of 7) of the abbreviated object name, use <n> digits, or
|
as needed to form a unique object name. An <n> of 0
|
||||||
as many digits as needed to form a unique object name. An <n> of 0
|
|
||||||
will suppress long format, only showing the closest tag.
|
will suppress long format, only showing the closest tag.
|
||||||
|
|
||||||
--candidates=<n>::
|
--candidates=<n>::
|
||||||
@ -140,11 +139,8 @@ at the end.
|
|||||||
|
|
||||||
The number of additional commits is the number
|
The number of additional commits is the number
|
||||||
of commits which would be displayed by "git log v1.0.4..parent".
|
of commits which would be displayed by "git log v1.0.4..parent".
|
||||||
The hash suffix is "-g" + an unambigous abbreviation for the tip commit
|
The hash suffix is "-g" + unambiguous abbreviation for the tip commit
|
||||||
of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`). The
|
of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`).
|
||||||
length of the abbreviation scales as the repository grows, using the
|
|
||||||
approximate number of objects in the repository and a bit of math
|
|
||||||
around the birthday paradox, and defaults to a minimum of 7.
|
|
||||||
The "g" prefix stands for "git" and is used to allow describing the version of
|
The "g" prefix stands for "git" and is used to allow describing the version of
|
||||||
a software depending on the SCM the software is managed with. This is useful
|
a software depending on the SCM the software is managed with. This is useful
|
||||||
in an environment where people may use different SCMs.
|
in an environment where people may use different SCMs.
|
||||||
|
@ -51,20 +51,16 @@ files on disk.
|
|||||||
--staged is a synonym of --cached.
|
--staged is a synonym of --cached.
|
||||||
+
|
+
|
||||||
If --merge-base is given, instead of using <commit>, use the merge base
|
If --merge-base is given, instead of using <commit>, use the merge base
|
||||||
of <commit> and HEAD. `git diff --cached --merge-base A` is equivalent to
|
of <commit> and HEAD. `git diff --merge-base A` is equivalent to
|
||||||
`git diff --cached $(git merge-base A HEAD)`.
|
`git diff $(git merge-base A HEAD)`.
|
||||||
|
|
||||||
'git diff' [<options>] [--merge-base] <commit> [--] [<path>...]::
|
'git diff' [<options>] <commit> [--] [<path>...]::
|
||||||
|
|
||||||
This form is to view the changes you have in your
|
This form is to view the changes you have in your
|
||||||
working tree relative to the named <commit>. You can
|
working tree relative to the named <commit>. You can
|
||||||
use HEAD to compare it with the latest commit, or a
|
use HEAD to compare it with the latest commit, or a
|
||||||
branch name to compare with the tip of a different
|
branch name to compare with the tip of a different
|
||||||
branch.
|
branch.
|
||||||
+
|
|
||||||
If --merge-base is given, instead of using <commit>, use the merge base
|
|
||||||
of <commit> and HEAD. `git diff --merge-base A` is equivalent to
|
|
||||||
`git diff $(git merge-base A HEAD)`.
|
|
||||||
|
|
||||||
'git diff' [<options>] [--merge-base] <commit> <commit> [--] [<path>...]::
|
'git diff' [<options>] [--merge-base] <commit> <commit> [--] [<path>...]::
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ remember to run that, set `fetch.prune` globally, or
|
|||||||
linkgit:git-config[1].
|
linkgit:git-config[1].
|
||||||
|
|
||||||
Here's where things get tricky and more specific. The pruning feature
|
Here's where things get tricky and more specific. The pruning feature
|
||||||
doesn't actually care about branches, instead it'll prune local <-->
|
doesn't actually care about branches, instead it'll prune local <->
|
||||||
remote-references as a function of the refspec of the remote (see
|
remote-references as a function of the refspec of the remote (see
|
||||||
`<refspec>` and <<CRTB,CONFIGURED REMOTE-TRACKING BRANCHES>> above).
|
`<refspec>` and <<CRTB,CONFIGURED REMOTE-TRACKING BRANCHES>> above).
|
||||||
|
|
||||||
|
@ -235,15 +235,6 @@ and `date` to extract the named component. For email fields (`authoremail`,
|
|||||||
without angle brackets, and `:localpart` to get the part before the `@` symbol
|
without angle brackets, and `:localpart` to get the part before the `@` symbol
|
||||||
out of the trimmed email.
|
out of the trimmed email.
|
||||||
|
|
||||||
The raw data in an object is `raw`.
|
|
||||||
|
|
||||||
raw:size::
|
|
||||||
The raw data size of the object.
|
|
||||||
|
|
||||||
Note that `--format=%(raw)` can not be used with `--python`, `--shell`, `--tcl`,
|
|
||||||
because such language may not support arbitrary binary data in their string
|
|
||||||
variable type.
|
|
||||||
|
|
||||||
The message in a commit or a tag object is `contents`, from which
|
The message in a commit or a tag object is `contents`, from which
|
||||||
`contents:<part>` can be used to extract various parts out of:
|
`contents:<part>` can be used to extract various parts out of:
|
||||||
|
|
||||||
|
@ -689,10 +689,10 @@ You can also use `git format-patch --base=P -3 C` to generate patches
|
|||||||
for A, B and C, and the identifiers for P, X, Y, Z are appended at the
|
for A, B and C, and the identifiers for P, X, Y, Z are appended at the
|
||||||
end of the first message.
|
end of the first message.
|
||||||
|
|
||||||
If set `--base=auto` in cmdline, it will automatically compute
|
If set `--base=auto` in cmdline, it will track base commit automatically,
|
||||||
the base commit as the merge base of tip commit of the remote-tracking
|
the base commit will be the merge base of tip commit of the remote-tracking
|
||||||
branch and revision-range specified in cmdline.
|
branch and revision-range specified in cmdline.
|
||||||
For a local branch, you need to make it to track a remote branch by `git branch
|
For a local branch, you need to track a remote branch by `git branch
|
||||||
--set-upstream-to` before using this option.
|
--set-upstream-to` before using this option.
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
@ -8,10 +8,8 @@ git-help - Display help information about Git
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git help' [-a|--all [--[no-]verbose]]
|
'git help' [-a|--all [--[no-]verbose]] [-g|--guides]
|
||||||
[[-i|--info] [-m|--man] [-w|--web]] [COMMAND|GUIDE]
|
[-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE]
|
||||||
'git help' [-g|--guides]
|
|
||||||
'git help' [-c|--config]
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -60,7 +58,8 @@ OPTIONS
|
|||||||
|
|
||||||
-g::
|
-g::
|
||||||
--guides::
|
--guides::
|
||||||
Prints a list of the Git concept guides on the standard output.
|
Prints a list of the Git concept guides on the standard output. This
|
||||||
|
option overrides any given command or guide name.
|
||||||
|
|
||||||
-i::
|
-i::
|
||||||
--info::
|
--info::
|
||||||
|
@ -16,9 +16,7 @@ A simple CGI program to serve the contents of a Git repository to Git
|
|||||||
clients accessing the repository over http:// and https:// protocols.
|
clients accessing the repository over http:// and https:// protocols.
|
||||||
The program supports clients fetching using both the smart HTTP protocol
|
The program supports clients fetching using both the smart HTTP protocol
|
||||||
and the backwards-compatible dumb HTTP protocol, as well as clients
|
and the backwards-compatible dumb HTTP protocol, as well as clients
|
||||||
pushing using the smart HTTP protocol. It also supports Git's
|
pushing using the smart HTTP protocol.
|
||||||
more-efficient "v2" protocol if properly configured; see the
|
|
||||||
discussion of `GIT_PROTOCOL` in the ENVIRONMENT section below.
|
|
||||||
|
|
||||||
It verifies that the directory has the magic file
|
It verifies that the directory has the magic file
|
||||||
"git-daemon-export-ok", and it will refuse to export any Git directory
|
"git-daemon-export-ok", and it will refuse to export any Git directory
|
||||||
@ -79,18 +77,6 @@ Apache 2.x::
|
|||||||
SetEnv GIT_PROJECT_ROOT /var/www/git
|
SetEnv GIT_PROJECT_ROOT /var/www/git
|
||||||
SetEnv GIT_HTTP_EXPORT_ALL
|
SetEnv GIT_HTTP_EXPORT_ALL
|
||||||
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
|
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
|
||||||
|
|
||||||
# This is not strictly necessary using Apache and a modern version of
|
|
||||||
# git-http-backend, as the webserver will pass along the header in the
|
|
||||||
# environment as HTTP_GIT_PROTOCOL, and http-backend will copy that into
|
|
||||||
# GIT_PROTOCOL. But you may need this line (or something similar if you
|
|
||||||
# are using a different webserver), or if you want to support older Git
|
|
||||||
# versions that did not do that copying.
|
|
||||||
#
|
|
||||||
# Having the webserver set up GIT_PROTOCOL is perfectly fine even with
|
|
||||||
# modern versions (and will take precedence over HTTP_GIT_PROTOCOL,
|
|
||||||
# which means it can be used to override the client's request).
|
|
||||||
SetEnvIf Git-Protocol ".*" GIT_PROTOCOL=$0
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
+
|
+
|
||||||
To enable anonymous read access but authenticated write access,
|
To enable anonymous read access but authenticated write access,
|
||||||
@ -278,16 +264,6 @@ a repository with an extremely large number of refs. The value can be
|
|||||||
specified with a unit (e.g., `100M` for 100 megabytes). The default is
|
specified with a unit (e.g., `100M` for 100 megabytes). The default is
|
||||||
10 megabytes.
|
10 megabytes.
|
||||||
|
|
||||||
Clients may probe for optional protocol capabilities (like the v2
|
|
||||||
protocol) using the `Git-Protocol` HTTP header. In order to support
|
|
||||||
these, the contents of that header must appear in the `GIT_PROTOCOL`
|
|
||||||
environment variable. Most webservers will pass this header to the CGI
|
|
||||||
via the `HTTP_GIT_PROTOCOL` variable, and `git-http-backend` will
|
|
||||||
automatically copy that to `GIT_PROTOCOL`. However, some webservers may
|
|
||||||
be more selective about which headers they'll pass, in which case they
|
|
||||||
need to be configured explicitly (see the mention of `Git-Protocol` in
|
|
||||||
the Apache config from the earlier EXAMPLES section).
|
|
||||||
|
|
||||||
The backend process sets GIT_COMMITTER_NAME to '$REMOTE_USER' and
|
The backend process sets GIT_COMMITTER_NAME to '$REMOTE_USER' and
|
||||||
GIT_COMMITTER_EMAIL to '$\{REMOTE_USER}@http.$\{REMOTE_ADDR\}',
|
GIT_COMMITTER_EMAIL to '$\{REMOTE_USER}@http.$\{REMOTE_ADDR\}',
|
||||||
ensuring that any reflogs created by 'git-receive-pack' contain some
|
ensuring that any reflogs created by 'git-receive-pack' contain some
|
||||||
|
@ -82,12 +82,6 @@ OPTIONS
|
|||||||
--strict::
|
--strict::
|
||||||
Die, if the pack contains broken objects or links.
|
Die, if the pack contains broken objects or links.
|
||||||
|
|
||||||
--progress-title::
|
|
||||||
For internal use only.
|
|
||||||
+
|
|
||||||
Set the title of the progress bar. The title is "Receiving objects" by
|
|
||||||
default and "Indexing objects" when `--stdin` is specified.
|
|
||||||
|
|
||||||
--check-self-contained-and-connected::
|
--check-self-contained-and-connected::
|
||||||
Die if the pack contains broken links. For internal use only.
|
Die if the pack contains broken links. For internal use only.
|
||||||
|
|
||||||
|
@ -39,9 +39,7 @@ OPTIONS
|
|||||||
full ref name (including prefix) will be printed. If 'auto' is
|
full ref name (including prefix) will be printed. If 'auto' is
|
||||||
specified, then if the output is going to a terminal, the ref names
|
specified, then if the output is going to a terminal, the ref names
|
||||||
are shown as if 'short' were given, otherwise no ref names are
|
are shown as if 'short' were given, otherwise no ref names are
|
||||||
shown. The option `--decorate` is short-hand for `--decorate=short`.
|
shown. The default option is 'short'.
|
||||||
Default to configuration value of `log.decorate` if configured,
|
|
||||||
otherwise, `auto`.
|
|
||||||
|
|
||||||
--decorate-refs=<pattern>::
|
--decorate-refs=<pattern>::
|
||||||
--decorate-refs-exclude=<pattern>::
|
--decorate-refs-exclude=<pattern>::
|
||||||
|
@ -179,17 +179,6 @@ OPTIONS
|
|||||||
`maintenance.<task>.enabled` configured as `true` are considered.
|
`maintenance.<task>.enabled` configured as `true` are considered.
|
||||||
See the 'TASKS' section for the list of accepted `<task>` values.
|
See the 'TASKS' section for the list of accepted `<task>` values.
|
||||||
|
|
||||||
--scheduler=auto|crontab|systemd-timer|launchctl|schtasks::
|
|
||||||
When combined with the `start` subcommand, specify the scheduler
|
|
||||||
for running the hourly, daily and weekly executions of
|
|
||||||
`git maintenance run`.
|
|
||||||
Possible values for `<scheduler>` are `auto`, `crontab`
|
|
||||||
(POSIX), `systemd-timer` (Linux), `launchctl` (macOS), and
|
|
||||||
`schtasks` (Windows). When `auto` is specified, the
|
|
||||||
appropriate platform-specific scheduler is used; on Linux,
|
|
||||||
`systemd-timer` is used if available, otherwise
|
|
||||||
`crontab`. Default is `auto`.
|
|
||||||
|
|
||||||
|
|
||||||
TROUBLESHOOTING
|
TROUBLESHOOTING
|
||||||
---------------
|
---------------
|
||||||
@ -288,52 +277,6 @@ schedule to ensure you are executing the correct binaries in your
|
|||||||
schedule.
|
schedule.
|
||||||
|
|
||||||
|
|
||||||
BACKGROUND MAINTENANCE ON LINUX SYSTEMD SYSTEMS
|
|
||||||
-----------------------------------------------
|
|
||||||
|
|
||||||
While Linux supports `cron`, depending on the distribution, `cron` may
|
|
||||||
be an optional package not necessarily installed. On modern Linux
|
|
||||||
distributions, systemd timers are superseding it.
|
|
||||||
|
|
||||||
If user systemd timers are available, they will be used as a replacement
|
|
||||||
of `cron`.
|
|
||||||
|
|
||||||
In this case, `git maintenance start` will create user systemd timer units
|
|
||||||
and start the timers. The current list of user-scheduled tasks can be found
|
|
||||||
by running `systemctl --user list-timers`. The timers written by `git
|
|
||||||
maintenance start` are similar to this:
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
$ systemctl --user list-timers
|
|
||||||
NEXT LEFT LAST PASSED UNIT ACTIVATES
|
|
||||||
Thu 2021-04-29 19:00:00 CEST 42min left Thu 2021-04-29 18:00:11 CEST 17min ago git-maintenance@hourly.timer git-maintenance@hourly.service
|
|
||||||
Fri 2021-04-30 00:00:00 CEST 5h 42min left Thu 2021-04-29 00:00:11 CEST 18h ago git-maintenance@daily.timer git-maintenance@daily.service
|
|
||||||
Mon 2021-05-03 00:00:00 CEST 3 days left Mon 2021-04-26 00:00:11 CEST 3 days ago git-maintenance@weekly.timer git-maintenance@weekly.service
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
One timer is registered for each `--schedule=<frequency>` option.
|
|
||||||
|
|
||||||
The definition of the systemd units can be inspected in the following files:
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
~/.config/systemd/user/git-maintenance@.timer
|
|
||||||
~/.config/systemd/user/git-maintenance@.service
|
|
||||||
~/.config/systemd/user/timers.target.wants/git-maintenance@hourly.timer
|
|
||||||
~/.config/systemd/user/timers.target.wants/git-maintenance@daily.timer
|
|
||||||
~/.config/systemd/user/timers.target.wants/git-maintenance@weekly.timer
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
`git maintenance start` will overwrite these files and start the timer
|
|
||||||
again with `systemctl --user`, so any customization should be done by
|
|
||||||
creating a drop-in file, i.e. a `.conf` suffixed file in the
|
|
||||||
`~/.config/systemd/user/git-maintenance@.service.d` directory.
|
|
||||||
|
|
||||||
`git maintenance stop` will stop the user systemd timers and delete
|
|
||||||
the above mentioned files.
|
|
||||||
|
|
||||||
For more details, see `systemd.timer(5)`.
|
|
||||||
|
|
||||||
|
|
||||||
BACKGROUND MAINTENANCE ON MACOS SYSTEMS
|
BACKGROUND MAINTENANCE ON MACOS SYSTEMS
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
|
@ -61,8 +61,6 @@ merge has resulted in conflicts.
|
|||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
:git-merge: 1
|
|
||||||
|
|
||||||
include::merge-options.txt[]
|
include::merge-options.txt[]
|
||||||
|
|
||||||
-m <msg>::
|
-m <msg>::
|
||||||
|
@ -9,7 +9,8 @@ git-multi-pack-index - Write and verify multi-pack-indexes
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git multi-pack-index' [--object-dir=<dir>] [--[no-]bitmap] <sub-command>
|
'git multi-pack-index' [--object-dir=<dir>] [--[no-]progress]
|
||||||
|
[--preferred-pack=<pack>] <subcommand>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -22,13 +23,10 @@ OPTIONS
|
|||||||
Use given directory for the location of Git objects. We check
|
Use given directory for the location of Git objects. We check
|
||||||
`<dir>/packs/multi-pack-index` for the current MIDX file, and
|
`<dir>/packs/multi-pack-index` for the current MIDX file, and
|
||||||
`<dir>/packs` for the pack-files to index.
|
`<dir>/packs` for the pack-files to index.
|
||||||
+
|
|
||||||
`<dir>` must be an alternate of the current repository.
|
|
||||||
|
|
||||||
--[no-]progress::
|
--[no-]progress::
|
||||||
Turn progress on/off explicitly. If neither is specified, progress is
|
Turn progress on/off explicitly. If neither is specified, progress is
|
||||||
shown if standard error is connected to a terminal. Supported by
|
shown if standard error is connected to a terminal.
|
||||||
sub-commands `write`, `verify`, `expire`, and `repack.
|
|
||||||
|
|
||||||
The following subcommands are available:
|
The following subcommands are available:
|
||||||
|
|
||||||
@ -39,31 +37,9 @@ write::
|
|||||||
--
|
--
|
||||||
--preferred-pack=<pack>::
|
--preferred-pack=<pack>::
|
||||||
Optionally specify the tie-breaking pack used when
|
Optionally specify the tie-breaking pack used when
|
||||||
multiple packs contain the same object. `<pack>` must
|
multiple packs contain the same object. If not given,
|
||||||
contain at least one object. If not given, ties are
|
ties are broken in favor of the pack with the lowest
|
||||||
broken in favor of the pack with the lowest mtime.
|
mtime.
|
||||||
|
|
||||||
--[no-]bitmap::
|
|
||||||
Control whether or not a multi-pack bitmap is written.
|
|
||||||
|
|
||||||
--stdin-packs::
|
|
||||||
Write a multi-pack index containing only the set of
|
|
||||||
line-delimited pack index basenames provided over stdin.
|
|
||||||
|
|
||||||
--refs-snapshot=<path>::
|
|
||||||
With `--bitmap`, optionally specify a file which
|
|
||||||
contains a "refs snapshot" taken prior to repacking.
|
|
||||||
+
|
|
||||||
A reference snapshot is composed of line-delimited OIDs corresponding to
|
|
||||||
the reference tips, usually taken by `git repack` prior to generating a
|
|
||||||
new pack. A line may optionally start with a `+` character to indicate
|
|
||||||
that the reference which corresponds to that OID is "preferred" (see
|
|
||||||
linkgit:git-config[1]'s `pack.preferBitmapTips`.)
|
|
||||||
+
|
|
||||||
The file given at `<path>` is expected to be readable, and can contain
|
|
||||||
duplicates. (If a given OID is given more than once, it is marked as
|
|
||||||
preferred if at least one instance of it begins with the special `+`
|
|
||||||
marker).
|
|
||||||
--
|
--
|
||||||
|
|
||||||
verify::
|
verify::
|
||||||
@ -99,26 +75,19 @@ associated `.keep` file will not be selected for the batch to repack.
|
|||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* Write a MIDX file for the packfiles in the current `.git` directory.
|
* Write a MIDX file for the packfiles in the current .git folder.
|
||||||
+
|
+
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
$ git multi-pack-index write
|
$ git multi-pack-index write
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
* Write a MIDX file for the packfiles in the current `.git` directory with a
|
|
||||||
corresponding bitmap.
|
|
||||||
+
|
|
||||||
-------------------------------------------------------------
|
|
||||||
$ git multi-pack-index write --preferred-pack=<pack> --bitmap
|
|
||||||
-------------------------------------------------------------
|
|
||||||
|
|
||||||
* Write a MIDX file for the packfiles in an alternate object store.
|
* Write a MIDX file for the packfiles in an alternate object store.
|
||||||
+
|
+
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
$ git multi-pack-index --object-dir <alt> write
|
$ git multi-pack-index --object-dir <alt> write
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
* Verify the MIDX file for the packfiles in the current `.git` directory.
|
* Verify the MIDX file for the packfiles in the current .git folder.
|
||||||
+
|
+
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
$ git multi-pack-index verify
|
$ git multi-pack-index verify
|
||||||
|
@ -128,10 +128,10 @@ depth is 4095.
|
|||||||
into multiple independent packfiles, each not larger than the
|
into multiple independent packfiles, each not larger than the
|
||||||
given size. The size can be suffixed with
|
given size. The size can be suffixed with
|
||||||
"k", "m", or "g". The minimum size allowed is limited to 1 MiB.
|
"k", "m", or "g". The minimum size allowed is limited to 1 MiB.
|
||||||
|
This option
|
||||||
|
prevents the creation of a bitmap index.
|
||||||
The default is unlimited, unless the config variable
|
The default is unlimited, unless the config variable
|
||||||
`pack.packSizeLimit` is set. Note that this option may result in
|
`pack.packSizeLimit` is set.
|
||||||
a larger and slower repository; see the discussion in
|
|
||||||
`pack.packSizeLimit`.
|
|
||||||
|
|
||||||
--honor-pack-keep::
|
--honor-pack-keep::
|
||||||
This flag causes an object already in a local pack that
|
This flag causes an object already in a local pack that
|
||||||
|
@ -15,17 +15,14 @@ SYNOPSIS
|
|||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Incorporates changes from a remote repository into the current branch.
|
Incorporates changes from a remote repository into the current
|
||||||
If the current branch is behind the remote, then by default it will
|
branch. In its default mode, `git pull` is shorthand for
|
||||||
fast-forward the current branch to match the remote. If the current
|
`git fetch` followed by `git merge FETCH_HEAD`.
|
||||||
branch and the remote have diverged, the user needs to specify how to
|
|
||||||
reconcile the divergent branches with `--rebase` or `--no-rebase` (or
|
|
||||||
the corresponding configuration option in `pull.rebase`).
|
|
||||||
|
|
||||||
More precisely, `git pull` runs `git fetch` with the given parameters
|
More precisely, 'git pull' runs 'git fetch' with the given
|
||||||
and then depending on configuration options or command line flags,
|
parameters and calls 'git merge' to merge the retrieved branch
|
||||||
will call either `git rebase` or `git merge` to reconcile diverging
|
heads into the current branch.
|
||||||
branches.
|
With `--rebase`, it runs 'git rebase' instead of 'git merge'.
|
||||||
|
|
||||||
<repository> should be the name of a remote repository as
|
<repository> should be the name of a remote repository as
|
||||||
passed to linkgit:git-fetch[1]. <refspec> can name an
|
passed to linkgit:git-fetch[1]. <refspec> can name an
|
||||||
@ -105,7 +102,7 @@ Options related to merging
|
|||||||
include::merge-options.txt[]
|
include::merge-options.txt[]
|
||||||
|
|
||||||
-r::
|
-r::
|
||||||
--rebase[=false|true|merges|interactive]::
|
--rebase[=false|true|merges|preserve|interactive]::
|
||||||
When true, rebase the current branch on top of the upstream
|
When true, rebase the current branch on top of the upstream
|
||||||
branch after fetching. If there is a remote-tracking branch
|
branch after fetching. If there is a remote-tracking branch
|
||||||
corresponding to the upstream branch and the upstream branch
|
corresponding to the upstream branch and the upstream branch
|
||||||
@ -116,7 +113,11 @@ When set to `merges`, rebase using `git rebase --rebase-merges` so that
|
|||||||
the local merge commits are included in the rebase (see
|
the local merge commits are included in the rebase (see
|
||||||
linkgit:git-rebase[1] for details).
|
linkgit:git-rebase[1] for details).
|
||||||
+
|
+
|
||||||
When false, merge the upstream branch into the current branch.
|
When set to `preserve` (deprecated in favor of `merges`), rebase with the
|
||||||
|
`--preserve-merges` option passed to `git rebase` so that locally created
|
||||||
|
merge commits will not be flattened.
|
||||||
|
+
|
||||||
|
When false, merge the current branch into the upstream branch.
|
||||||
+
|
+
|
||||||
When `interactive`, enable the interactive mode of rebase.
|
When `interactive`, enable the interactive mode of rebase.
|
||||||
+
|
+
|
||||||
@ -131,7 +132,7 @@ published that history already. Do *not* use this option
|
|||||||
unless you have read linkgit:git-rebase[1] carefully.
|
unless you have read linkgit:git-rebase[1] carefully.
|
||||||
|
|
||||||
--no-rebase::
|
--no-rebase::
|
||||||
This is shorthand for --rebase=false.
|
Override earlier --rebase.
|
||||||
|
|
||||||
Options related to fetching
|
Options related to fetching
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -244,8 +244,8 @@ Imagine that you have to rebase what you have already published.
|
|||||||
You will have to bypass the "must fast-forward" rule in order to
|
You will have to bypass the "must fast-forward" rule in order to
|
||||||
replace the history you originally published with the rebased history.
|
replace the history you originally published with the rebased history.
|
||||||
If somebody else built on top of your original history while you are
|
If somebody else built on top of your original history while you are
|
||||||
rebasing, the tip of the branch at the remote may advance with their
|
rebasing, the tip of the branch at the remote may advance with her
|
||||||
commit, and blindly pushing with `--force` will lose their work.
|
commit, and blindly pushing with `--force` will lose her work.
|
||||||
+
|
+
|
||||||
This option allows you to say that you expect the history you are
|
This option allows you to say that you expect the history you are
|
||||||
updating is what you rebased and want to replace. If the remote ref
|
updating is what you rebased and want to replace. If the remote ref
|
||||||
|
@ -10,7 +10,8 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>]
|
'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>]
|
||||||
[-u | -i]] [--index-output=<file>] [--no-sparse-checkout]
|
[-u [--exclude-per-directory=<gitignore>] | -i]]
|
||||||
|
[--index-output=<file>] [--no-sparse-checkout]
|
||||||
(--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])
|
(--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])
|
||||||
|
|
||||||
|
|
||||||
@ -39,8 +40,7 @@ OPTIONS
|
|||||||
--reset::
|
--reset::
|
||||||
Same as -m, except that unmerged entries are discarded instead
|
Same as -m, except that unmerged entries are discarded instead
|
||||||
of failing. When used with `-u`, updates leading to loss of
|
of failing. When used with `-u`, updates leading to loss of
|
||||||
working tree changes or untracked files or directories will not
|
working tree changes will not abort the operation.
|
||||||
abort the operation.
|
|
||||||
|
|
||||||
-u::
|
-u::
|
||||||
After a successful merge, update the files in the work
|
After a successful merge, update the files in the work
|
||||||
@ -88,6 +88,21 @@ OPTIONS
|
|||||||
The command will refuse to overwrite entries that already
|
The command will refuse to overwrite entries that already
|
||||||
existed in the original index file.
|
existed in the original index file.
|
||||||
|
|
||||||
|
--exclude-per-directory=<gitignore>::
|
||||||
|
When running the command with `-u` and `-m` options, the
|
||||||
|
merge result may need to overwrite paths that are not
|
||||||
|
tracked in the current branch. The command usually
|
||||||
|
refuses to proceed with the merge to avoid losing such a
|
||||||
|
path. However this safety valve sometimes gets in the
|
||||||
|
way. For example, it often happens that the other
|
||||||
|
branch added a file that used to be a generated file in
|
||||||
|
your branch, and the safety valve triggers when you try
|
||||||
|
to switch to that branch after you ran `make` but before
|
||||||
|
running `make clean` to remove the generated file. This
|
||||||
|
option tells the command to read per-directory exclude
|
||||||
|
file (usually '.gitignore') and allows such an untracked
|
||||||
|
but explicitly ignored file to be overwritten.
|
||||||
|
|
||||||
--index-output=<file>::
|
--index-output=<file>::
|
||||||
Instead of writing the results out to `$GIT_INDEX_FILE`,
|
Instead of writing the results out to `$GIT_INDEX_FILE`,
|
||||||
write the resulting index in the named file. While the
|
write the resulting index in the named file. While the
|
||||||
|
@ -79,10 +79,9 @@ remain the checked-out branch.
|
|||||||
|
|
||||||
If the upstream branch already contains a change you have made (e.g.,
|
If the upstream branch already contains a change you have made (e.g.,
|
||||||
because you mailed a patch which was applied upstream), then that commit
|
because you mailed a patch which was applied upstream), then that commit
|
||||||
will be skipped and warnings will be issued (if the `merge` backend is
|
will be skipped. For example, running `git rebase master` on the
|
||||||
used). For example, running `git rebase master` on the following
|
following history (in which `A'` and `A` introduce the same set of changes,
|
||||||
history (in which `A'` and `A` introduce the same set of changes, but
|
but have different committer information):
|
||||||
have different committer information):
|
|
||||||
|
|
||||||
------------
|
------------
|
||||||
A---B---C topic
|
A---B---C topic
|
||||||
@ -313,10 +312,7 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
By default (or if `--no-reapply-cherry-picks` is given), these commits
|
By default (or if `--no-reapply-cherry-picks` is given), these commits
|
||||||
will be automatically dropped. Because this necessitates reading all
|
will be automatically dropped. Because this necessitates reading all
|
||||||
upstream commits, this can be expensive in repos with a large number
|
upstream commits, this can be expensive in repos with a large number
|
||||||
of upstream commits that need to be read. When using the `merge`
|
of upstream commits that need to be read.
|
||||||
backend, warnings will be issued for each dropped commit (unless
|
|
||||||
`--quiet` is given). Advice will also be issued unless
|
|
||||||
`advice.skippedCherryPicks` is set to false (see linkgit:git-config[1]).
|
|
||||||
+
|
+
|
||||||
`--reapply-cherry-picks` allows rebase to forgo reading all upstream
|
`--reapply-cherry-picks` allows rebase to forgo reading all upstream
|
||||||
commits, potentially improving performance.
|
commits, potentially improving performance.
|
||||||
@ -344,7 +340,9 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
|
|
||||||
-m::
|
-m::
|
||||||
--merge::
|
--merge::
|
||||||
Using merging strategies to rebase (default).
|
Use merging strategies to rebase. When the recursive (default) merge
|
||||||
|
strategy is used, this allows rebase to be aware of renames on the
|
||||||
|
upstream side. This is the default.
|
||||||
+
|
+
|
||||||
Note that a rebase merge works by replaying each commit from the working
|
Note that a rebase merge works by replaying each commit from the working
|
||||||
branch on top of the <upstream> branch. Because of this, when a merge
|
branch on top of the <upstream> branch. Because of this, when a merge
|
||||||
@ -356,8 +354,9 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
|
|
||||||
-s <strategy>::
|
-s <strategy>::
|
||||||
--strategy=<strategy>::
|
--strategy=<strategy>::
|
||||||
Use the given merge strategy, instead of the default `ort`.
|
Use the given merge strategy.
|
||||||
This implies `--merge`.
|
If there is no `-s` option 'git merge-recursive' is used
|
||||||
|
instead. This implies --merge.
|
||||||
+
|
+
|
||||||
Because 'git rebase' replays each commit from the working branch
|
Because 'git rebase' replays each commit from the working branch
|
||||||
on top of the <upstream> branch using the given strategy, using
|
on top of the <upstream> branch using the given strategy, using
|
||||||
@ -370,7 +369,7 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
--strategy-option=<strategy-option>::
|
--strategy-option=<strategy-option>::
|
||||||
Pass the <strategy-option> through to the merge strategy.
|
Pass the <strategy-option> through to the merge strategy.
|
||||||
This implies `--merge` and, if no strategy has been
|
This implies `--merge` and, if no strategy has been
|
||||||
specified, `-s ort`. Note the reversal of 'ours' and
|
specified, `-s recursive`. Note the reversal of 'ours' and
|
||||||
'theirs' as noted above for the `-m` option.
|
'theirs' as noted above for the `-m` option.
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
@ -446,8 +445,7 @@ When --fork-point is active, 'fork_point' will be used instead of
|
|||||||
ends up being empty, the <upstream> will be used as a fallback.
|
ends up being empty, the <upstream> will be used as a fallback.
|
||||||
+
|
+
|
||||||
If <upstream> is given on the command line, then the default is
|
If <upstream> is given on the command line, then the default is
|
||||||
`--no-fork-point`, otherwise the default is `--fork-point`. See also
|
`--no-fork-point`, otherwise the default is `--fork-point`.
|
||||||
`rebase.forkpoint` in linkgit:git-config[1].
|
|
||||||
+
|
+
|
||||||
If your branch was based on <upstream> but <upstream> was rewound and
|
If your branch was based on <upstream> but <upstream> was rewound and
|
||||||
your branch contains commits which were dropped, this option can be used
|
your branch contains commits which were dropped, this option can be used
|
||||||
@ -527,12 +525,29 @@ i.e. commits that would be excluded by linkgit:git-log[1]'s
|
|||||||
the `rebase-cousins` mode is turned on, such commits are instead rebased
|
the `rebase-cousins` mode is turned on, such commits are instead rebased
|
||||||
onto `<upstream>` (or `<onto>`, if specified).
|
onto `<upstream>` (or `<onto>`, if specified).
|
||||||
+
|
+
|
||||||
|
The `--rebase-merges` mode is similar in spirit to the deprecated
|
||||||
|
`--preserve-merges` but works with interactive rebases,
|
||||||
|
where commits can be reordered, inserted and dropped at will.
|
||||||
|
+
|
||||||
It is currently only possible to recreate the merge commits using the
|
It is currently only possible to recreate the merge commits using the
|
||||||
`ort` merge strategy; different merge strategies can be used only via
|
`recursive` merge strategy; Different merge strategies can be used only via
|
||||||
explicit `exec git merge -s <strategy> [...]` commands.
|
explicit `exec git merge -s <strategy> [...]` commands.
|
||||||
+
|
+
|
||||||
See also REBASING MERGES and INCOMPATIBLE OPTIONS below.
|
See also REBASING MERGES and INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
|
-p::
|
||||||
|
--preserve-merges::
|
||||||
|
[DEPRECATED: use `--rebase-merges` instead] Recreate merge commits
|
||||||
|
instead of flattening the history by replaying commits a merge commit
|
||||||
|
introduces. Merge conflict resolutions or manual amendments to merge
|
||||||
|
commits are not preserved.
|
||||||
|
+
|
||||||
|
This uses the `--interactive` machinery internally, but combining it
|
||||||
|
with the `--interactive` option explicitly is generally not a good
|
||||||
|
idea unless you know what you are doing (see BUGS below).
|
||||||
|
+
|
||||||
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
-x <cmd>::
|
-x <cmd>::
|
||||||
--exec <cmd>::
|
--exec <cmd>::
|
||||||
Append "exec <cmd>" after each line creating a commit in the
|
Append "exec <cmd>" after each line creating a commit in the
|
||||||
@ -564,6 +579,9 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
the root commit(s) on a branch. When used with --onto, it
|
the root commit(s) on a branch. When used with --onto, it
|
||||||
will skip changes already contained in <newbase> (instead of
|
will skip changes already contained in <newbase> (instead of
|
||||||
<upstream>) whereas without --onto it will operate on every change.
|
<upstream>) whereas without --onto it will operate on every change.
|
||||||
|
When used together with both --onto and --preserve-merges,
|
||||||
|
'all' root commits will be rewritten to have <newbase> as parent
|
||||||
|
instead.
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
@ -625,6 +643,7 @@ are incompatible with the following options:
|
|||||||
* --allow-empty-message
|
* --allow-empty-message
|
||||||
* --[no-]autosquash
|
* --[no-]autosquash
|
||||||
* --rebase-merges
|
* --rebase-merges
|
||||||
|
* --preserve-merges
|
||||||
* --interactive
|
* --interactive
|
||||||
* --exec
|
* --exec
|
||||||
* --no-keep-empty
|
* --no-keep-empty
|
||||||
@ -635,6 +654,13 @@ are incompatible with the following options:
|
|||||||
|
|
||||||
In addition, the following pairs of options are incompatible:
|
In addition, the following pairs of options are incompatible:
|
||||||
|
|
||||||
|
* --preserve-merges and --interactive
|
||||||
|
* --preserve-merges and --signoff
|
||||||
|
* --preserve-merges and --rebase-merges
|
||||||
|
* --preserve-merges and --empty=
|
||||||
|
* --preserve-merges and --ignore-whitespace
|
||||||
|
* --preserve-merges and --committer-date-is-author-date
|
||||||
|
* --preserve-merges and --ignore-date
|
||||||
* --keep-base and --onto
|
* --keep-base and --onto
|
||||||
* --keep-base and --root
|
* --keep-base and --root
|
||||||
* --fork-point and --root
|
* --fork-point and --root
|
||||||
@ -1193,16 +1219,12 @@ successful merge so that the user can edit the message.
|
|||||||
If a `merge` command fails for any reason other than merge conflicts (i.e.
|
If a `merge` command fails for any reason other than merge conflicts (i.e.
|
||||||
when the merge operation did not even start), it is rescheduled immediately.
|
when the merge operation did not even start), it is rescheduled immediately.
|
||||||
|
|
||||||
By default, the `merge` command will use the `ort` merge strategy for
|
At this time, the `merge` command will *always* use the `recursive`
|
||||||
regular merges, and `octopus` for octopus merges. One can specify a
|
merge strategy for regular merges, and `octopus` for octopus merges,
|
||||||
default strategy for all merges using the `--strategy` argument when
|
with no way to choose a different one. To work around
|
||||||
invoking rebase, or can override specific merges in the interactive
|
this, an `exec` command can be used to call `git merge` explicitly,
|
||||||
list of commands by using an `exec` command to call `git merge`
|
using the fact that the labels are worktree-local refs (the ref
|
||||||
explicitly with a `--strategy` argument. Note that when calling `git
|
`refs/rewritten/onto` would correspond to the label `onto`, for example).
|
||||||
merge` explicitly like this, you can make use of the fact that the
|
|
||||||
labels are worktree-local refs (the ref `refs/rewritten/onto` would
|
|
||||||
correspond to the label `onto`, for example) in order to refer to the
|
|
||||||
branches you want to merge.
|
|
||||||
|
|
||||||
Note: the first command (`label onto`) labels the revision onto which
|
Note: the first command (`label onto`) labels the revision onto which
|
||||||
the commits are rebased; The name `onto` is just a convention, as a nod
|
the commits are rebased; The name `onto` is just a convention, as a nod
|
||||||
@ -1252,6 +1274,29 @@ CONFIGURATION
|
|||||||
include::config/rebase.txt[]
|
include::config/rebase.txt[]
|
||||||
include::config/sequencer.txt[]
|
include::config/sequencer.txt[]
|
||||||
|
|
||||||
|
BUGS
|
||||||
|
----
|
||||||
|
The todo list presented by the deprecated `--preserve-merges --interactive`
|
||||||
|
does not represent the topology of the revision graph (use `--rebase-merges`
|
||||||
|
instead). Editing commits and rewording their commit messages should work
|
||||||
|
fine, but attempts to reorder commits tend to produce counterintuitive results.
|
||||||
|
Use `--rebase-merges` in such scenarios instead.
|
||||||
|
|
||||||
|
For example, an attempt to rearrange
|
||||||
|
------------
|
||||||
|
1 --- 2 --- 3 --- 4 --- 5
|
||||||
|
------------
|
||||||
|
to
|
||||||
|
------------
|
||||||
|
1 --- 2 --- 4 --- 3 --- 5
|
||||||
|
------------
|
||||||
|
by moving the "pick 4" line will result in the following history:
|
||||||
|
------------
|
||||||
|
3
|
||||||
|
/
|
||||||
|
1 --- 2 --- 4 --- 5
|
||||||
|
------------
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
---
|
---
|
||||||
Part of the linkgit:git[1] suite
|
Part of the linkgit:git[1] suite
|
||||||
|
@ -41,11 +41,6 @@ OPTIONS
|
|||||||
<directory>::
|
<directory>::
|
||||||
The repository to sync into.
|
The repository to sync into.
|
||||||
|
|
||||||
--http-backend-info-refs::
|
|
||||||
Used by linkgit:git-http-backend[1] to serve up
|
|
||||||
`$GIT_URL/info/refs?service=git-receive-pack` requests. See
|
|
||||||
`--http-backend-info-refs` in linkgit:git-upload-pack[1].
|
|
||||||
|
|
||||||
PRE-RECEIVE HOOK
|
PRE-RECEIVE HOOK
|
||||||
----------------
|
----------------
|
||||||
Before any ref is updated, if $GIT_DIR/hooks/pre-receive file exists
|
Before any ref is updated, if $GIT_DIR/hooks/pre-receive file exists
|
||||||
|
@ -9,7 +9,7 @@ git-repack - Pack unpacked objects in a repository
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>] [--write-midx]
|
'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -121,18 +121,15 @@ depth is 4095.
|
|||||||
If specified, multiple packfiles may be created, which also
|
If specified, multiple packfiles may be created, which also
|
||||||
prevents the creation of a bitmap index.
|
prevents the creation of a bitmap index.
|
||||||
The default is unlimited, unless the config variable
|
The default is unlimited, unless the config variable
|
||||||
`pack.packSizeLimit` is set. Note that this option may result in
|
`pack.packSizeLimit` is set.
|
||||||
a larger and slower repository; see the discussion in
|
|
||||||
`pack.packSizeLimit`.
|
|
||||||
|
|
||||||
-b::
|
-b::
|
||||||
--write-bitmap-index::
|
--write-bitmap-index::
|
||||||
Write a reachability bitmap index as part of the repack. This
|
Write a reachability bitmap index as part of the repack. This
|
||||||
only makes sense when used with `-a`, `-A` or `-m`, as the bitmaps
|
only makes sense when used with `-a` or `-A`, as the bitmaps
|
||||||
must be able to refer to all reachable objects. This option
|
must be able to refer to all reachable objects. This option
|
||||||
overrides the setting of `repack.writeBitmaps`. This option
|
overrides the setting of `repack.writeBitmaps`. This option
|
||||||
has no effect if multiple packfiles are created, unless writing a
|
has no effect if multiple packfiles are created.
|
||||||
MIDX (in which case a multi-pack bitmap is created).
|
|
||||||
|
|
||||||
--pack-kept-objects::
|
--pack-kept-objects::
|
||||||
Include objects in `.keep` files when repacking. Note that we
|
Include objects in `.keep` files when repacking. Note that we
|
||||||
@ -190,15 +187,6 @@ this "roll-up", without respect to their reachability. This is subject
|
|||||||
to change in the future. This option (implying a drastically different
|
to change in the future. This option (implying a drastically different
|
||||||
repack mode) is not guaranteed to work with all other combinations of
|
repack mode) is not guaranteed to work with all other combinations of
|
||||||
option to `git repack`.
|
option to `git repack`.
|
||||||
+
|
|
||||||
When writing a multi-pack bitmap, `git repack` selects the largest resulting
|
|
||||||
pack as the preferred pack for object selection by the MIDX (see
|
|
||||||
linkgit:git-multi-pack-index[1]).
|
|
||||||
|
|
||||||
-m::
|
|
||||||
--write-midx::
|
|
||||||
Write a multi-pack index (see linkgit:git-multi-pack-index[1])
|
|
||||||
containing the non-redundant packs.
|
|
||||||
|
|
||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
|
@ -69,8 +69,7 @@ linkgit:git-add[1]).
|
|||||||
|
|
||||||
--hard::
|
--hard::
|
||||||
Resets the index and working tree. Any changes to tracked files in the
|
Resets the index and working tree. Any changes to tracked files in the
|
||||||
working tree since `<commit>` are discarded. Any untracked files or
|
working tree since `<commit>` are discarded.
|
||||||
directories in the way of writing any tracked files are simply deleted.
|
|
||||||
|
|
||||||
--merge::
|
--merge::
|
||||||
Resets the index and updates the files in the working tree that are
|
Resets the index and updates the files in the working tree that are
|
||||||
|
@ -72,12 +72,6 @@ For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
|
|||||||
--ignore-unmatch::
|
--ignore-unmatch::
|
||||||
Exit with a zero status even if no files matched.
|
Exit with a zero status even if no files matched.
|
||||||
|
|
||||||
--sparse::
|
|
||||||
Allow updating index entries outside of the sparse-checkout cone.
|
|
||||||
Normally, `git rm` refuses to update index entries whose paths do
|
|
||||||
not fit within the sparse-checkout cone. See
|
|
||||||
linkgit:git-sparse-checkout[1] for more.
|
|
||||||
|
|
||||||
-q::
|
-q::
|
||||||
--quiet::
|
--quiet::
|
||||||
`git rm` normally outputs one line (in the form of an `rm` command)
|
`git rm` normally outputs one line (in the form of an `rm` command)
|
||||||
|
@ -167,14 +167,6 @@ Sending
|
|||||||
`sendemail.envelopeSender` configuration variable; if that is
|
`sendemail.envelopeSender` configuration variable; if that is
|
||||||
unspecified, choosing the envelope sender is left to your MTA.
|
unspecified, choosing the envelope sender is left to your MTA.
|
||||||
|
|
||||||
--sendmail-cmd=<command>::
|
|
||||||
Specify a command to run to send the email. The command should
|
|
||||||
be sendmail-like; specifically, it must support the `-i` option.
|
|
||||||
The command will be executed in the shell if necessary. Default
|
|
||||||
is the value of `sendemail.sendmailcmd`. If unspecified, and if
|
|
||||||
--smtp-server is also unspecified, git-send-email will search
|
|
||||||
for `sendmail` in `/usr/sbin`, `/usr/lib` and $PATH.
|
|
||||||
|
|
||||||
--smtp-encryption=<encryption>::
|
--smtp-encryption=<encryption>::
|
||||||
Specify the encryption to use, either 'ssl' or 'tls'. Any other
|
Specify the encryption to use, either 'ssl' or 'tls'. Any other
|
||||||
value reverts to plain SMTP. Default is the value of
|
value reverts to plain SMTP. Default is the value of
|
||||||
@ -219,16 +211,13 @@ a password is obtained using 'git-credential'.
|
|||||||
|
|
||||||
--smtp-server=<host>::
|
--smtp-server=<host>::
|
||||||
If set, specifies the outgoing SMTP server to use (e.g.
|
If set, specifies the outgoing SMTP server to use (e.g.
|
||||||
`smtp.example.com` or a raw IP address). If unspecified, and if
|
`smtp.example.com` or a raw IP address). Alternatively it can
|
||||||
`--sendmail-cmd` is also unspecified, the default is to search
|
specify a full pathname of a sendmail-like program instead;
|
||||||
for `sendmail` in `/usr/sbin`, `/usr/lib` and $PATH if such a
|
the program must support the `-i` option. Default value can
|
||||||
program is available, falling back to `localhost` otherwise.
|
be specified by the `sendemail.smtpServer` configuration
|
||||||
+
|
option; the built-in default is to search for `sendmail` in
|
||||||
For backward compatibility, this option can also specify a full pathname
|
`/usr/sbin`, `/usr/lib` and $PATH if such program is
|
||||||
of a sendmail-like program instead; the program must support the `-i`
|
available, falling back to `localhost` otherwise.
|
||||||
option. This method does not support passing arguments or using plain
|
|
||||||
command names. For those use cases, consider using `--sendmail-cmd`
|
|
||||||
instead.
|
|
||||||
|
|
||||||
--smtp-server-port=<port>::
|
--smtp-server-port=<port>::
|
||||||
Specifies a port different from the default port (SMTP
|
Specifies a port different from the default port (SMTP
|
||||||
|
@ -9,10 +9,10 @@ git-send-pack - Push objects over Git protocol to another repository
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git send-pack' [--dry-run] [--force] [--receive-pack=<git-receive-pack>]
|
'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>]
|
||||||
[--verbose] [--thin] [--atomic]
|
[--verbose] [--thin] [--atomic]
|
||||||
[--[no-]signed|--signed=(true|false|if-asked)]
|
[--[no-]signed|--signed=(true|false|if-asked)]
|
||||||
[<host>:]<directory> (--all | <ref>...)
|
[<host>:]<directory> [<ref>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -210,16 +210,6 @@ case-insensitive check. This corrects for case mismatched filenames in the
|
|||||||
'git sparse-checkout set' command to reflect the expected cone in the working
|
'git sparse-checkout set' command to reflect the expected cone in the working
|
||||||
directory.
|
directory.
|
||||||
|
|
||||||
When changing the sparse-checkout patterns in cone mode, Git will inspect each
|
|
||||||
tracked directory that is not within the sparse-checkout cone to see if it
|
|
||||||
contains any untracked files. If all of those files are ignored due to the
|
|
||||||
`.gitignore` patterns, then the directory will be deleted. If any of the
|
|
||||||
untracked files within that directory is not ignored, then no deletions will
|
|
||||||
occur within that directory and a warning message will appear. If these files
|
|
||||||
are important, then reset your sparse-checkout definition so they are included,
|
|
||||||
use `git add` and `git commit` to store them, then remove any remaining files
|
|
||||||
manually to ensure Git can behave optimally.
|
|
||||||
|
|
||||||
|
|
||||||
SUBMODULES
|
SUBMODULES
|
||||||
----------
|
----------
|
||||||
|
@ -207,29 +207,26 @@ show tracked paths:
|
|||||||
|
|
||||||
* ' ' = unmodified
|
* ' ' = unmodified
|
||||||
* 'M' = modified
|
* 'M' = modified
|
||||||
* 'T' = file type changed (regular file, symbolic link or submodule)
|
|
||||||
* 'A' = added
|
* 'A' = added
|
||||||
* 'D' = deleted
|
* 'D' = deleted
|
||||||
* 'R' = renamed
|
* 'R' = renamed
|
||||||
* 'C' = copied (if config option status.renames is set to "copies")
|
* 'C' = copied
|
||||||
* 'U' = updated but unmerged
|
* 'U' = updated but unmerged
|
||||||
|
|
||||||
....
|
....
|
||||||
X Y Meaning
|
X Y Meaning
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
[AMD] not updated
|
[AMD] not updated
|
||||||
M [ MTD] updated in index
|
M [ MD] updated in index
|
||||||
T [ MTD] type changed in index
|
A [ MD] added to index
|
||||||
A [ MTD] added to index
|
|
||||||
D deleted from index
|
D deleted from index
|
||||||
R [ MTD] renamed in index
|
R [ MD] renamed in index
|
||||||
C [ MTD] copied in index
|
C [ MD] copied in index
|
||||||
[MTARC] index and work tree matches
|
[MARC] index and work tree matches
|
||||||
[ MTARC] M work tree changed since index
|
[ MARC] M work tree changed since index
|
||||||
[ MTARC] T type changed in work tree since index
|
[ MARC] D deleted in work tree
|
||||||
[ MTARC] D deleted in work tree
|
[ D] R renamed in work tree
|
||||||
R renamed in work tree
|
[ D] C copied in work tree
|
||||||
C copied in work tree
|
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
D D unmerged, both deleted
|
D D unmerged, both deleted
|
||||||
A U unmerged, added by us
|
A U unmerged, added by us
|
||||||
@ -366,7 +363,7 @@ Field Meaning
|
|||||||
Unmerged entries have the following format; the first character is
|
Unmerged entries have the following format; the first character is
|
||||||
a "u" to distinguish from ordinary changed entries.
|
a "u" to distinguish from ordinary changed entries.
|
||||||
|
|
||||||
u <XY> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <path>
|
u <xy> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <path>
|
||||||
|
|
||||||
....
|
....
|
||||||
Field Meaning
|
Field Meaning
|
||||||
|
@ -678,6 +678,7 @@ config key: svn.authorsProg
|
|||||||
--strategy=<strategy>::
|
--strategy=<strategy>::
|
||||||
-p::
|
-p::
|
||||||
--rebase-merges::
|
--rebase-merges::
|
||||||
|
--preserve-merges (DEPRECATED)::
|
||||||
These are only used with the 'dcommit' and 'rebase' commands.
|
These are only used with the 'dcommit' and 'rebase' commands.
|
||||||
+
|
+
|
||||||
Passed directly to 'git rebase' when using 'dcommit' if a
|
Passed directly to 'git rebase' when using 'dcommit' if a
|
||||||
|
@ -36,26 +36,14 @@ OPTIONS
|
|||||||
This fits with the HTTP POST request processing model where
|
This fits with the HTTP POST request processing model where
|
||||||
a program may read the request, write a response, and must exit.
|
a program may read the request, write a response, and must exit.
|
||||||
|
|
||||||
--http-backend-info-refs::
|
--advertise-refs::
|
||||||
Used by linkgit:git-http-backend[1] to serve up
|
Only the initial ref advertisement is output, and the program exits
|
||||||
`$GIT_URL/info/refs?service=git-upload-pack` requests. See
|
immediately. This fits with the HTTP GET request model, where
|
||||||
"Smart Clients" in link:technical/http-protocol.html[the HTTP
|
no request content is received but a response must be produced.
|
||||||
transfer protocols] documentation and "HTTP Transport" in
|
|
||||||
link:technical/protocol-v2.html[the Git Wire Protocol, Version
|
|
||||||
2] documentation. Also understood by
|
|
||||||
linkgit:git-receive-pack[1].
|
|
||||||
|
|
||||||
<directory>::
|
<directory>::
|
||||||
The repository to sync from.
|
The repository to sync from.
|
||||||
|
|
||||||
ENVIRONMENT
|
|
||||||
-----------
|
|
||||||
|
|
||||||
`GIT_PROTOCOL`::
|
|
||||||
Internal variable used for handshaking the wire protocol. Server
|
|
||||||
admins may need to configure some transports to allow this
|
|
||||||
variable to be passed. See the discussion in linkgit:git[1].
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
linkgit:gitnamespaces[7]
|
linkgit:gitnamespaces[7]
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
git-version(1)
|
|
||||||
==============
|
|
||||||
|
|
||||||
NAME
|
|
||||||
----
|
|
||||||
git-version - Display version information about Git
|
|
||||||
|
|
||||||
SYNOPSIS
|
|
||||||
--------
|
|
||||||
[verse]
|
|
||||||
'git version' [--build-options]
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
-----------
|
|
||||||
With no options given, the version of 'git' is printed on the standard output.
|
|
||||||
|
|
||||||
Note that `git --version` is identical to `git version` because the
|
|
||||||
former is internally converted into the latter.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-------
|
|
||||||
--build-options::
|
|
||||||
Include additional information about how git was built for diagnostic
|
|
||||||
purposes.
|
|
||||||
|
|
||||||
GIT
|
|
||||||
---
|
|
||||||
Part of the linkgit:git[1] suite
|
|
@ -9,7 +9,7 @@ git-worktree - Manage multiple working trees
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git worktree add' [-f] [--detach] [--checkout] [--lock [--reason <string>]] [-b <new-branch>] <path> [<commit-ish>]
|
'git worktree add' [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<commit-ish>]
|
||||||
'git worktree list' [--porcelain]
|
'git worktree list' [--porcelain]
|
||||||
'git worktree lock' [--reason <string>] <worktree>
|
'git worktree lock' [--reason <string>] <worktree>
|
||||||
'git worktree move' <worktree> <new-path>
|
'git worktree move' <worktree> <new-path>
|
||||||
@ -242,7 +242,7 @@ With `list`, annotate missing working trees as prunable if they are
|
|||||||
older than `<time>`.
|
older than `<time>`.
|
||||||
|
|
||||||
--reason <string>::
|
--reason <string>::
|
||||||
With `lock` or with `add --lock`, an explanation why the working tree is locked.
|
With `lock`, an explanation why the working tree is locked.
|
||||||
|
|
||||||
<worktree>::
|
<worktree>::
|
||||||
Working trees can be identified by path, either relative or
|
Working trees can be identified by path, either relative or
|
||||||
@ -387,7 +387,7 @@ These annotations are:
|
|||||||
------------
|
------------
|
||||||
$ git worktree list
|
$ git worktree list
|
||||||
/path/to/linked-worktree abcd1234 [master]
|
/path/to/linked-worktree abcd1234 [master]
|
||||||
/path/to/locked-worktree acbd5678 (brancha) locked
|
/path/to/locked-worktreee acbd5678 (brancha) locked
|
||||||
/path/to/prunable-worktree 5678abc (detached HEAD) prunable
|
/path/to/prunable-worktree 5678abc (detached HEAD) prunable
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
@ -41,10 +41,6 @@ OPTIONS
|
|||||||
-------
|
-------
|
||||||
--version::
|
--version::
|
||||||
Prints the Git suite version that the 'git' program came from.
|
Prints the Git suite version that the 'git' program came from.
|
||||||
+
|
|
||||||
This option is internally converted to `git version ...` and accepts
|
|
||||||
the same options as the linkgit:git-version[1] command. If `--help` is
|
|
||||||
also given, it takes precedence over `--version`.
|
|
||||||
|
|
||||||
--help::
|
--help::
|
||||||
Prints the synopsis and a list of the most commonly used
|
Prints the synopsis and a list of the most commonly used
|
||||||
@ -867,16 +863,15 @@ for full details.
|
|||||||
end user, to be recorded in the body of the reflog.
|
end user, to be recorded in the body of the reflog.
|
||||||
|
|
||||||
`GIT_REF_PARANOIA`::
|
`GIT_REF_PARANOIA`::
|
||||||
If set to `0`, ignore broken or badly named refs when iterating
|
If set to `1`, include broken or badly named refs when iterating
|
||||||
over lists of refs. Normally Git will try to include any such
|
over lists of refs. In a normal, non-corrupted repository, this
|
||||||
refs, which may cause some operations to fail. This is usually
|
does nothing. However, enabling it may help git to detect and
|
||||||
preferable, as potentially destructive operations (e.g.,
|
abort some operations in the presence of broken refs. Git sets
|
||||||
linkgit:git-prune[1]) are better off aborting rather than
|
this variable automatically when performing destructive
|
||||||
ignoring broken refs (and thus considering the history they
|
operations like linkgit:git-prune[1]. You should not need to set
|
||||||
point to as not worth saving). The default value is `1` (i.e.,
|
it yourself unless you want to be paranoid about making sure
|
||||||
be paranoid about detecting and aborting all operations). You
|
an operation has touched every ref (e.g., because you are
|
||||||
should not normally need to set this to `0`, but it may be
|
cloning a repository to make a backup).
|
||||||
useful when trying to salvage data from a corrupted repository.
|
|
||||||
|
|
||||||
`GIT_ALLOW_PROTOCOL`::
|
`GIT_ALLOW_PROTOCOL`::
|
||||||
If set to a colon-separated list of protocols, behave as if
|
If set to a colon-separated list of protocols, behave as if
|
||||||
@ -899,21 +894,6 @@ for full details.
|
|||||||
Contains a colon ':' separated list of keys with optional values
|
Contains a colon ':' separated list of keys with optional values
|
||||||
'key[=value]'. Presence of unknown keys and values must be
|
'key[=value]'. Presence of unknown keys and values must be
|
||||||
ignored.
|
ignored.
|
||||||
+
|
|
||||||
Note that servers may need to be configured to allow this variable to
|
|
||||||
pass over some transports. It will be propagated automatically when
|
|
||||||
accessing local repositories (i.e., `file://` or a filesystem path), as
|
|
||||||
well as over the `git://` protocol. For git-over-http, it should work
|
|
||||||
automatically in most configurations, but see the discussion in
|
|
||||||
linkgit:git-http-backend[1]. For git-over-ssh, the ssh server may need
|
|
||||||
to be configured to allow clients to pass this variable (e.g., by using
|
|
||||||
`AcceptEnv GIT_PROTOCOL` with OpenSSH).
|
|
||||||
+
|
|
||||||
This configuration is optional. If the variable is not propagated, then
|
|
||||||
clients will fall back to the original "v0" protocol (but may miss out
|
|
||||||
on some performance improvements or features). This variable currently
|
|
||||||
only affects clones and fetches; it is not yet used for pushes (but may
|
|
||||||
be in the future).
|
|
||||||
|
|
||||||
`GIT_OPTIONAL_LOCKS`::
|
`GIT_OPTIONAL_LOCKS`::
|
||||||
If set to `0`, Git will complete any requested operation without
|
If set to `0`, Git will complete any requested operation without
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user