Compare commits
53 Commits
Author | SHA1 | Date | |
---|---|---|---|
82689d5e5d | |||
16128765d7 | |||
b7b37a3371 | |||
6662a836eb | |||
3305300f4c | |||
304a50adff | |||
f930a23943 | |||
81c2d4c3a5 | |||
937b71cc8b | |||
17d23e8a38 | |||
522cc87fdc | |||
48050c42c7 | |||
1de69c0cdd | |||
f6e0b9f389 | |||
b49f309aa1 | |||
81dc898df9 | |||
a244dc5b0a | |||
3c50032ff5 | |||
dfa6b32b5e | |||
d74b1fd54f | |||
a60a66e409 | |||
e1e12e97ac | |||
447ac906e1 | |||
34ace8bad0 | |||
2455720950 | |||
8d0d48cf21 | |||
eb22e7dfa2 | |||
ecf9b4a443 | |||
122512967e | |||
abd4d67ab0 | |||
0ca6ead81e | |||
71ad7fe1bc | |||
32696a4cbe | |||
a1d4f67c12 | |||
f4a32a550f | |||
0d3beb71da | |||
0f21b8f468 | |||
225d2d50cc | |||
ac7e57fa28 | |||
f8d510ed0b | |||
99f4abb8da | |||
8a96dbcb33 | |||
7de0c306f7 | |||
6f054f9fb3 | |||
5b1c746c35 | |||
2f8809f9a1 | |||
88b7be68a4 | |||
3b0bf27049 | |||
b779214eaf | |||
6b11e3d52e | |||
b9063afda1 | |||
ae9abbb63e | |||
5f1a3fec8c |
@ -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() }}
|
||||||
|
182
.github/workflows/main.yml
vendored
182
.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: 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: 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,17 +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
|
||||||
- name: initialize vcpkg
|
shell: bash
|
||||||
uses: actions/checkout@v2
|
run: |
|
||||||
with:
|
## Get artifact
|
||||||
repository: 'microsoft/vcpkg'
|
urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds
|
||||||
path: 'compat/vcbuild/vcpkg'
|
id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" |
|
||||||
|
jq -r ".value[] | .id")
|
||||||
|
download_url="$(curl "$urlbase/$id/artifacts" |
|
||||||
|
jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')"
|
||||||
|
curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \
|
||||||
|
-o artifacts.zip "$download_url"
|
||||||
|
|
||||||
|
## Unzip and remove the artifact
|
||||||
|
unzip artifacts.zip
|
||||||
|
rm artifacts.zip
|
||||||
- name: download vcpkg artifacts
|
- name: download vcpkg artifacts
|
||||||
shell: powershell
|
shell: powershell
|
||||||
run: |
|
run: |
|
||||||
@ -153,60 +198,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: |
|
||||||
mkdir -p artifacts &&
|
& git-sdk-64-minimal\usr\bin\bash.exe -lc @"
|
||||||
eval "$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts NO_GETTEXT=YesPlease 2>&1 | grep ^tar)"
|
mkdir -p artifacts &&
|
||||||
- name: zip up tracked files
|
eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)\"
|
||||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
"@
|
||||||
- name: upload tracked files and build artifacts
|
- name: upload build artifacts
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v1
|
||||||
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
|
||||||
GIT_TEST_SKIP_REBASE_P: 1
|
GIT_TEST_SKIP_REBASE_P: 1
|
||||||
run: ci/run-test-slice.sh ${{matrix.nr}} 10
|
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}}
|
||||||
@ -237,14 +297,14 @@ jobs:
|
|||||||
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}}
|
||||||
@ -259,8 +319,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
|
||||||
@ -284,29 +342,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'
|
||||||
@ -314,6 +352,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
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -33,7 +33,6 @@
|
|||||||
/git-check-mailmap
|
/git-check-mailmap
|
||||||
/git-check-ref-format
|
/git-check-ref-format
|
||||||
/git-checkout
|
/git-checkout
|
||||||
/git-checkout--worker
|
|
||||||
/git-checkout-index
|
/git-checkout-index
|
||||||
/git-cherry
|
/git-cherry
|
||||||
/git-cherry-pick
|
/git-cherry-pick
|
||||||
@ -163,7 +162,6 @@
|
|||||||
/git-stripspace
|
/git-stripspace
|
||||||
/git-submodule
|
/git-submodule
|
||||||
/git-submodule--helper
|
/git-submodule--helper
|
||||||
/git-subtree
|
|
||||||
/git-svn
|
/git-svn
|
||||||
/git-switch
|
/git-switch
|
||||||
/git-symbolic-ref
|
/git-symbolic-ref
|
||||||
|
1
.mailmap
1
.mailmap
@ -220,7 +220,6 @@ Philipp A. Hartmann <pah@qo.cx> <ph@sorgh.de>
|
|||||||
Philippe Bruhat <book@cpan.org>
|
Philippe Bruhat <book@cpan.org>
|
||||||
Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
|
Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
|
||||||
Ramsay Jones <ramsay@ramsayjones.plus.com> <ramsay@ramsay1.demon.co.uk>
|
Ramsay Jones <ramsay@ramsayjones.plus.com> <ramsay@ramsay1.demon.co.uk>
|
||||||
Ramkumar Ramachandra <r@artagnon.com> <artagnon@gmail.com>
|
|
||||||
Randall S. Becker <randall.becker@nexbridge.ca> <rsbecker@nexbridge.com>
|
Randall S. Becker <randall.becker@nexbridge.ca> <rsbecker@nexbridge.com>
|
||||||
René Scharfe <l.s.r@web.de> <rene.scharfe@lsrfire.ath.cx>
|
René Scharfe <l.s.r@web.de> <rene.scharfe@lsrfire.ath.cx>
|
||||||
René Scharfe <l.s.r@web.de> Rene Scharfe
|
René Scharfe <l.s.r@web.de> Rene Scharfe
|
||||||
|
@ -175,11 +175,6 @@ For shell scripts specifically (not exhaustive):
|
|||||||
|
|
||||||
does not have such a problem.
|
does not have such a problem.
|
||||||
|
|
||||||
- Even though "local" is not part of POSIX, we make heavy use of it
|
|
||||||
in our test suite. We do not use it in scripted Porcelains, and
|
|
||||||
hopefully nobody starts using "local" before they are reimplemented
|
|
||||||
in C ;-)
|
|
||||||
|
|
||||||
|
|
||||||
For C programs:
|
For C programs:
|
||||||
|
|
||||||
@ -503,12 +498,7 @@ Error Messages
|
|||||||
|
|
||||||
- Do not end error messages with a full stop.
|
- Do not end error messages with a full stop.
|
||||||
|
|
||||||
- Do not capitalize the first word, only because it is the first word
|
- Do not capitalize ("unable to open %s", not "Unable to open %s")
|
||||||
in the message ("unable to open %s", not "Unable to open %s"). But
|
|
||||||
"SHA-3 not supported" is fine, because the reason the first word is
|
|
||||||
capitalized is not because it is at the beginning of the sentence,
|
|
||||||
but because the word would be spelled in capital letters even when
|
|
||||||
it appeared in the middle of the sentence.
|
|
||||||
|
|
||||||
- Say what the error is first ("cannot open %s", not "%s: cannot open")
|
- Say what the error is first ("cannot open %s", not "%s: cannot open")
|
||||||
|
|
||||||
@ -551,51 +541,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.
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
MAN1_TXT =
|
MAN1_TXT =
|
||||||
MAN5_TXT =
|
MAN5_TXT =
|
||||||
MAN7_TXT =
|
MAN7_TXT =
|
||||||
HOWTO_TXT =
|
|
||||||
DOC_DEP_TXT =
|
|
||||||
TECH_DOCS =
|
TECH_DOCS =
|
||||||
ARTICLES =
|
ARTICLES =
|
||||||
SP_ARTICLES =
|
SP_ARTICLES =
|
||||||
@ -44,11 +42,6 @@ MAN7_TXT += gittutorial-2.txt
|
|||||||
MAN7_TXT += gittutorial.txt
|
MAN7_TXT += gittutorial.txt
|
||||||
MAN7_TXT += gitworkflows.txt
|
MAN7_TXT += gitworkflows.txt
|
||||||
|
|
||||||
HOWTO_TXT += $(wildcard howto/*.txt)
|
|
||||||
|
|
||||||
DOC_DEP_TXT += $(wildcard *.txt)
|
|
||||||
DOC_DEP_TXT += $(wildcard config/*.txt)
|
|
||||||
|
|
||||||
ifdef MAN_FILTER
|
ifdef MAN_FILTER
|
||||||
MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT))
|
MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT))
|
||||||
else
|
else
|
||||||
@ -83,7 +76,6 @@ SP_ARTICLES += howto/rebuild-from-update-hook
|
|||||||
SP_ARTICLES += howto/rebase-from-internal-branch
|
SP_ARTICLES += howto/rebase-from-internal-branch
|
||||||
SP_ARTICLES += howto/keep-canonical-history-correct
|
SP_ARTICLES += howto/keep-canonical-history-correct
|
||||||
SP_ARTICLES += howto/maintain-git
|
SP_ARTICLES += howto/maintain-git
|
||||||
SP_ARTICLES += howto/coordinate-embargoed-releases
|
|
||||||
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
||||||
SP_ARTICLES += $(API_DOCS)
|
SP_ARTICLES += $(API_DOCS)
|
||||||
|
|
||||||
@ -98,7 +90,6 @@ TECH_DOCS += technical/multi-pack-index
|
|||||||
TECH_DOCS += technical/pack-format
|
TECH_DOCS += technical/pack-format
|
||||||
TECH_DOCS += technical/pack-heuristics
|
TECH_DOCS += technical/pack-heuristics
|
||||||
TECH_DOCS += technical/pack-protocol
|
TECH_DOCS += technical/pack-protocol
|
||||||
TECH_DOCS += technical/parallel-checkout
|
|
||||||
TECH_DOCS += technical/partial-clone
|
TECH_DOCS += technical/partial-clone
|
||||||
TECH_DOCS += technical/protocol-capabilities
|
TECH_DOCS += technical/protocol-capabilities
|
||||||
TECH_DOCS += technical/protocol-common
|
TECH_DOCS += technical/protocol-common
|
||||||
@ -139,7 +130,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
|
||||||
@ -194,7 +184,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
|
||||||
@ -295,8 +284,10 @@ docdep_prereqs = \
|
|||||||
mergetools-list.made $(mergetools_txt) \
|
mergetools-list.made $(mergetools_txt) \
|
||||||
cmd-list.made $(cmds_txt)
|
cmd-list.made $(cmds_txt)
|
||||||
|
|
||||||
doc.dep : $(docdep_prereqs) $(DOC_DEP_TXT) build-docdep.perl
|
doc.dep : $(docdep_prereqs) $(wildcard *.txt) $(wildcard config/*.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
|
||||||
@ -316,7 +307,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
|
||||||
@ -324,7 +316,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 && \
|
||||||
@ -353,23 +345,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))
|
||||||
@ -390,35 +391,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 $(wildcard howto/*.txt)
|
||||||
$(QUIET_GEN)'$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(HOWTO_TXT)) >$@
|
$(QUIET_GEN)$(RM) $@+ $@ && \
|
||||||
|
'$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(wildcard 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
|
||||||
@ -426,10 +438,11 @@ $(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
|||||||
WEBDOC_DEST = /pub/software/scm/git/docs
|
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,$(wildcard 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)
|
||||||
@ -457,20 +470,11 @@ print-man1:
|
|||||||
@for i in $(MAN1_TXT); do echo $$i; done
|
@for i in $(MAN1_TXT); do echo $$i; done
|
||||||
|
|
||||||
lint-docs::
|
lint-docs::
|
||||||
$(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl \
|
$(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl
|
||||||
$(HOWTO_TXT) $(DOC_DEP_TXT) \
|
|
||||||
--section=1 $(MAN1_TXT) \
|
|
||||||
--section=5 $(MAN5_TXT) \
|
|
||||||
--section=7 $(MAN7_TXT); \
|
|
||||||
$(PERL_PATH) lint-man-end-blurb.perl $(MAN_TXT); \
|
|
||||||
$(PERL_PATH) lint-man-section-order.perl $(MAN_TXT);
|
|
||||||
|
|
||||||
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
|
||||||
|
@ -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"
|
||||||
|
12
Documentation/RelNotes/2.30.5.txt
Normal file
12
Documentation/RelNotes/2.30.5.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Git v2.30.5 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release contains minor fix-ups for the changes that went into
|
||||||
|
Git 2.30.3 and 2.30.4, addressing CVE-2022-29187.
|
||||||
|
|
||||||
|
* The safety check that verifies a safe ownership of the Git
|
||||||
|
worktree is now extended to also cover the ownership of the Git
|
||||||
|
directory (and the `.git` file, if there is any).
|
||||||
|
|
||||||
|
Carlo Marcelo Arenas Belón (1):
|
||||||
|
setup: tighten ownership checks post CVE-2022-24765
|
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
|
||||||
|
|
6
Documentation/RelNotes/2.31.4.txt
Normal file
6
Documentation/RelNotes/2.31.4.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.31.4 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.5 to address
|
||||||
|
the security issue CVE-2022-29187; see the release notes for that
|
||||||
|
version for details.
|
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.
|
@ -1,416 +0,0 @@
|
|||||||
Git 2.32 Release Notes
|
|
||||||
======================
|
|
||||||
|
|
||||||
Backward compatibility notes
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
* ".gitattributes", ".gitignore", and ".mailmap" files that are
|
|
||||||
symbolic links are ignored.
|
|
||||||
|
|
||||||
* "git apply --3way" used to first attempt a straight application,
|
|
||||||
and only fell back to the 3-way merge algorithm when the stright
|
|
||||||
application failed. Starting with this version, the command will
|
|
||||||
first try the 3-way merge algorithm and only when it fails (either
|
|
||||||
resulting with conflict or the base versions of blobs are missing),
|
|
||||||
falls back to the usual patch application.
|
|
||||||
|
|
||||||
|
|
||||||
Updates since v2.31
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* It does not make sense to make ".gitattributes", ".gitignore" and
|
|
||||||
".mailmap" symlinks, as they are supposed to be usable from the
|
|
||||||
object store (think: bare repositories where HEAD:.mailmap etc. are
|
|
||||||
used). When these files are symbolic links, we used to read the
|
|
||||||
contents of the files pointed by them by mistake, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* "git stash show" learned to optionally show untracked part of the
|
|
||||||
stash.
|
|
||||||
|
|
||||||
* "git log --format='...'" learned "%(describe)" placeholder.
|
|
||||||
|
|
||||||
* "git repack" so far has been only capable of repacking everything
|
|
||||||
under the sun into a single pack (or split by size). A cleverer
|
|
||||||
strategy to reduce the cost of repacking a repository has been
|
|
||||||
introduced.
|
|
||||||
|
|
||||||
* The http codepath learned to let the credential layer to cache the
|
|
||||||
password used to unlock a certificate that has successfully been
|
|
||||||
used.
|
|
||||||
|
|
||||||
* "git commit --fixup=<commit>", which was to tweak the changes made
|
|
||||||
to the contents while keeping the original log message intact,
|
|
||||||
learned "--fixup=(amend|reword):<commit>", that can be used to
|
|
||||||
tweak both the message and the contents, and only the message,
|
|
||||||
respectively.
|
|
||||||
|
|
||||||
* "git send-email" learned to honor the core.hooksPath configuration.
|
|
||||||
|
|
||||||
* "git format-patch -v<n>" learned to allow a reroll count that is
|
|
||||||
not an integer.
|
|
||||||
|
|
||||||
* "git commit" learned "--trailer <key>[=<value>]" option; together
|
|
||||||
with the interpret-trailers command, this will make it easier to
|
|
||||||
support custom trailers.
|
|
||||||
|
|
||||||
* "git clone --reject-shallow" option fails the clone as soon as we
|
|
||||||
notice that we are cloning from a shallow repository.
|
|
||||||
|
|
||||||
* A configuration variable has been added to force tips of certain
|
|
||||||
refs to be given a reachability bitmap.
|
|
||||||
|
|
||||||
* "gitweb" learned "e-mail privacy" feature to redact strings that
|
|
||||||
look like e-mail addresses on various pages.
|
|
||||||
|
|
||||||
* "git apply --3way" has always been "to fall back to 3-way merge
|
|
||||||
only when straight application fails". Swap the order of falling
|
|
||||||
back so that 3-way is always attempted first (only when the option
|
|
||||||
is given, of course) and then straight patch application is used as
|
|
||||||
a fallback when it fails.
|
|
||||||
|
|
||||||
* "git apply" now takes "--3way" and "--cached" at the same time, and
|
|
||||||
work and record results only in the index.
|
|
||||||
|
|
||||||
* The command line completion (in contrib/) has learned that
|
|
||||||
CHERRY_PICK_HEAD is a possible pseudo-ref.
|
|
||||||
|
|
||||||
* Userdiff patterns for "Scheme" has been added.
|
|
||||||
|
|
||||||
* "git log" learned "--diff-merges=<style>" option, with an
|
|
||||||
associated configuration variable log.diffMerges.
|
|
||||||
|
|
||||||
* "git log --format=..." placeholders learned %ah/%ch placeholders to
|
|
||||||
request the --date=human output.
|
|
||||||
|
|
||||||
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
|
|
||||||
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
|
|
||||||
users specify from which file to read the system-wide configuration
|
|
||||||
(setting it to an empty file would essentially be the same as
|
|
||||||
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
|
|
||||||
per-user configuration in $HOME/.gitconfig.
|
|
||||||
|
|
||||||
* "git add" and "git rm" learned not to touch those paths that are
|
|
||||||
outside of sparse checkout.
|
|
||||||
|
|
||||||
* "git rev-list" learns the "--filter=object:type=<type>" option,
|
|
||||||
which can be used to exclude objects of the given kind from the
|
|
||||||
packfile generated by pack-objects.
|
|
||||||
|
|
||||||
* The command line completion (in contrib/) for "git stash" has been
|
|
||||||
updated.
|
|
||||||
|
|
||||||
* "git subtree" updates.
|
|
||||||
|
|
||||||
* It is now documented that "format-patch" skips merges.
|
|
||||||
|
|
||||||
* Options to "git pack-objects" that take numeric values like
|
|
||||||
--window and --depth should not accept negative values; the input
|
|
||||||
validation has been tightened.
|
|
||||||
|
|
||||||
* The way the command line specified by the trailer.<token>.command
|
|
||||||
configuration variable receives the end-user supplied value was
|
|
||||||
both error prone and misleading. An alternative to achieve the
|
|
||||||
same goal in a safer and more intuitive way has been added, as
|
|
||||||
the trailer.<token>.cmd configuration variable, to replace it.
|
|
||||||
|
|
||||||
* "git add -i --dry-run" does not dry-run, which was surprising. The
|
|
||||||
combination of options has taught to error out.
|
|
||||||
|
|
||||||
* "git push" learns to discover common ancestor with the receiving
|
|
||||||
end over protocol v2. This will hopefully make "git push" as
|
|
||||||
efficient as "git fetch" in avoiding objects from getting
|
|
||||||
transferred unnecessarily.
|
|
||||||
|
|
||||||
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
|
|
||||||
control how lines ending with CRLF wrapped in base64 or qp are
|
|
||||||
handled.
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* Rename detection rework continues.
|
|
||||||
|
|
||||||
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
|
|
||||||
prerequisites to catch broken tests that depend on the side effects
|
|
||||||
of optional pieces, but did not work at all when negative
|
|
||||||
prerequisites were involved.
|
|
||||||
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
|
|
||||||
|
|
||||||
* "git diff-index" codepath has been taught to trust fsmonitor status
|
|
||||||
to reduce number of lstat() calls.
|
|
||||||
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
|
|
||||||
|
|
||||||
* Reorganize Makefile to allow building git.o and other essential
|
|
||||||
objects without extra stuff needed only for testing.
|
|
||||||
|
|
||||||
* Preparatory API changes for parallel checkout.
|
|
||||||
|
|
||||||
* A simple IPC interface gets introduced to build services like
|
|
||||||
fsmonitor on top.
|
|
||||||
|
|
||||||
* Fsck API clean-up.
|
|
||||||
|
|
||||||
* SECURITY.md that is facing individual contributors and end users
|
|
||||||
has been introduced. Also a procedure to follow when preparing
|
|
||||||
embargoed releases has been spelled out.
|
|
||||||
(merge 09420b7648 js/security-md later to maint).
|
|
||||||
|
|
||||||
* Optimize "rev-list --use-bitmap-index --objects" corner case that
|
|
||||||
uses negative tags as the stopping points.
|
|
||||||
|
|
||||||
* CMake update for vsbuild.
|
|
||||||
|
|
||||||
* An on-disk reverse-index to map the in-pack location of an object
|
|
||||||
back to its object name across multiple packfiles is introduced.
|
|
||||||
|
|
||||||
* Generate [ec]tags under $(QUIET_GEN).
|
|
||||||
|
|
||||||
* Clean-up codepaths that implements "git send-email --validate"
|
|
||||||
option and improves the message from it.
|
|
||||||
|
|
||||||
* The last remnant of gettext-poison has been removed.
|
|
||||||
|
|
||||||
* The test framework has been taught to optionally turn the default
|
|
||||||
merge strategy to "ort" throughout the system where we use
|
|
||||||
three-way merges internally, like cherry-pick, rebase etc.,
|
|
||||||
primarily to enhance its test coverage (the strategy has been
|
|
||||||
available as an explicit "-s ort" choice).
|
|
||||||
|
|
||||||
* A bit of code clean-up and a lot of test clean-up around userdiff
|
|
||||||
area.
|
|
||||||
|
|
||||||
* Handling of "promisor packs" that allows certain objects to be
|
|
||||||
missing and lazily retrievable has been optimized (a bit).
|
|
||||||
|
|
||||||
* When packet_write() fails, we gave an extra error message
|
|
||||||
unnecessarily, which has been corrected.
|
|
||||||
|
|
||||||
* The checkout machinery has been taught to perform the actual
|
|
||||||
write-out of the files in parallel when able.
|
|
||||||
|
|
||||||
* Show errno in the trace output in the error codepath that calls
|
|
||||||
read_raw_ref method.
|
|
||||||
|
|
||||||
* Effort to make the command line completion (in contrib/) safe with
|
|
||||||
"set -u" continues.
|
|
||||||
|
|
||||||
* Tweak a few tests for "log --format=..." that show timestamps in
|
|
||||||
various formats.
|
|
||||||
|
|
||||||
* The reflog expiry machinery has been taught to emit trace events.
|
|
||||||
|
|
||||||
* Over-the-wire protocol learns a new request type to ask for object
|
|
||||||
sizes given a list of object names.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.31
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* The fsmonitor interface read from its input without making sure
|
|
||||||
there is something to read from. This bug is new in 2.31
|
|
||||||
timeframe.
|
|
||||||
|
|
||||||
* The data structure used by fsmonitor interface was not properly
|
|
||||||
duplicated during an in-core merge, leading to use-after-free etc.
|
|
||||||
|
|
||||||
* "git bisect" reimplemented more in C during 2.30 timeframe did not
|
|
||||||
take an annotated tag as a good/bad endpoint well. This regression
|
|
||||||
has been corrected.
|
|
||||||
|
|
||||||
* Fix macros that can silently inject unintended null-statements.
|
|
||||||
|
|
||||||
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
|
|
||||||
|
|
||||||
* Update insn in Makefile comments to run fuzz-all target.
|
|
||||||
|
|
||||||
* Fix a corner case bug in "git mv" on case insensitive systems,
|
|
||||||
which was introduced in 2.29 timeframe.
|
|
||||||
|
|
||||||
* We had a code to diagnose and die cleanly when a required
|
|
||||||
clean/smudge filter is missing, but an assert before that
|
|
||||||
unnecessarily fired, hiding the end-user facing die() message.
|
|
||||||
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
|
|
||||||
|
|
||||||
* Update C code that sets a few configuration variables when a remote
|
|
||||||
is configured so that it spells configuration variable names in the
|
|
||||||
canonical camelCase.
|
|
||||||
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
|
|
||||||
|
|
||||||
* A new configuration variable has been introduced to allow choosing
|
|
||||||
which version of the generation number gets used in the
|
|
||||||
commit-graph file.
|
|
||||||
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
|
|
||||||
|
|
||||||
* Perf test update to work better in secondary worktrees.
|
|
||||||
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
|
|
||||||
|
|
||||||
* Updates to memory allocation code around the use of pcre2 library.
|
|
||||||
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
|
|
||||||
|
|
||||||
* "git -c core.bare=false clone --bare ..." would have segfaulted,
|
|
||||||
which has been corrected.
|
|
||||||
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
|
|
||||||
|
|
||||||
* When "git checkout" removes a path that does not exist in the
|
|
||||||
commit it is checking out, it wasn't careful enough not to follow
|
|
||||||
symbolic links, which has been corrected.
|
|
||||||
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
|
|
||||||
|
|
||||||
* A few option description strings started with capital letters,
|
|
||||||
which were corrected.
|
|
||||||
(merge 5ee90326dc cc/downcase-opt-help later to maint).
|
|
||||||
|
|
||||||
* Plug or annotate remaining leaks that trigger while running the
|
|
||||||
very basic set of tests.
|
|
||||||
(merge 68ffe095a2 ah/plugleaks later to maint).
|
|
||||||
|
|
||||||
* The hashwrite() API uses a buffering mechanism to avoid calling
|
|
||||||
write(2) too frequently. This logic has been refactored to be
|
|
||||||
easier to understand.
|
|
||||||
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
|
|
||||||
|
|
||||||
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
|
|
||||||
the editor as expected (e.g. "revert --no-edit" after a conflict
|
|
||||||
still asked to edit the message), which has been corrected.
|
|
||||||
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
|
|
||||||
|
|
||||||
* "git daemon" has been tightened against systems that take backslash
|
|
||||||
as directory separator.
|
|
||||||
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
|
|
||||||
|
|
||||||
* A NULL-dereference bug has been corrected in an error codepath in
|
|
||||||
"git for-each-ref", "git branch --list" etc.
|
|
||||||
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
|
|
||||||
|
|
||||||
* Streamline the codepath to fix the UTF-8 encoding issues in the
|
|
||||||
argv[] and the prefix on macOS.
|
|
||||||
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
|
|
||||||
|
|
||||||
* The command-line completion script (in contrib/) had a couple of
|
|
||||||
references that would have given a warning under the "-u" (nounset)
|
|
||||||
option.
|
|
||||||
(merge c5c0548d79 vs/completion-with-set-u later to maint).
|
|
||||||
|
|
||||||
* When "git pack-objects" makes a literal copy of a part of existing
|
|
||||||
packfile using the reachability bitmaps, its update to the progress
|
|
||||||
meter was broken.
|
|
||||||
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
|
|
||||||
|
|
||||||
* The dependencies for config-list.h and command-list.h were broken
|
|
||||||
when the former was split out of the latter, which has been
|
|
||||||
corrected.
|
|
||||||
(merge 56550ea718 sg/bugreport-fixes later to maint).
|
|
||||||
|
|
||||||
* "git push --quiet --set-upstream" was not quiet when setting the
|
|
||||||
upstream branch configuration, which has been corrected.
|
|
||||||
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
|
|
||||||
|
|
||||||
* The prefetch task in "git maintenance" assumed that "git fetch"
|
|
||||||
from any remote would fetch all its local branches, which would
|
|
||||||
fetch too much if the user is interested in only a subset of
|
|
||||||
branches there.
|
|
||||||
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
|
|
||||||
|
|
||||||
* Clarify that pathnames recorded in Git trees are most often (but
|
|
||||||
not necessarily) encoded in UTF-8.
|
|
||||||
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
|
|
||||||
|
|
||||||
* "git --config-env var=val cmd" weren't accepted (only
|
|
||||||
--config-env=var=val was).
|
|
||||||
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
|
|
||||||
|
|
||||||
* When the reachability bitmap is in effect, the "do not lose
|
|
||||||
recently created objects and those that are reachable from them"
|
|
||||||
safety to protect us from races were disabled by mistake, which has
|
|
||||||
been corrected.
|
|
||||||
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
|
|
||||||
|
|
||||||
* Cygwin pathname handling fix.
|
|
||||||
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
|
|
||||||
|
|
||||||
* "git rebase --[no-]reschedule-failed-exec" did not work well with
|
|
||||||
its configuration variable, which has been corrected.
|
|
||||||
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
|
|
||||||
|
|
||||||
* Portability fix for command line completion script (in contrib/).
|
|
||||||
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
|
|
||||||
|
|
||||||
* "git repack -A -d" in a partial clone unnecessarily loosened
|
|
||||||
objects in promisor pack.
|
|
||||||
|
|
||||||
* "git bisect skip" when custom words are used for new/old did not
|
|
||||||
work, which has been corrected.
|
|
||||||
|
|
||||||
* A few variants of informational message "Already up-to-date" has
|
|
||||||
been rephrased.
|
|
||||||
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
|
|
||||||
|
|
||||||
* "git submodule update --quiet" did not propagate the quiet option
|
|
||||||
down to underlying "git fetch", which has been corrected.
|
|
||||||
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
|
|
||||||
|
|
||||||
* Document that our test can use "local" keyword.
|
|
||||||
(merge a84fd3bcc6 jc/test-allows-local later to maint).
|
|
||||||
|
|
||||||
* The word-diff mode has been taught to work better with a word
|
|
||||||
regexp that can match an empty string.
|
|
||||||
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
|
|
||||||
|
|
||||||
* "git p4" learned to find branch points more efficiently.
|
|
||||||
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
|
|
||||||
|
|
||||||
* When "git update-ref -d" removes a ref that is packed, it left
|
|
||||||
empty directories under $GIT_DIR/refs/ for
|
|
||||||
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
|
|
||||||
|
|
||||||
* "git clean" and "git ls-files -i" had confusion around working on
|
|
||||||
or showing ignored paths inside an ignored directory, which has
|
|
||||||
been corrected.
|
|
||||||
(merge b548f0f156 en/dir-traversal later to maint).
|
|
||||||
|
|
||||||
* The handling of "%(push)" formatting element of "for-each-ref" and
|
|
||||||
friends was broken when the same codepath started handling
|
|
||||||
"%(push:<what>)", which has been corrected.
|
|
||||||
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
|
|
||||||
|
|
||||||
* The bash prompt script (in contrib/) did not work under "set -u".
|
|
||||||
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
|
|
||||||
|
|
||||||
* The "chainlint" feature in the test framework is a handy way to
|
|
||||||
catch common mistakes in writing new tests, but tends to get
|
|
||||||
expensive. An knob to selectively disable it has been introduced
|
|
||||||
to help running tests that the developer has not modified.
|
|
||||||
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
|
|
||||||
|
|
||||||
* The "rev-parse" command did not diagnose the lack of argument to
|
|
||||||
"--path-format" option, which was introduced in v2.31 era, which
|
|
||||||
has been corrected.
|
|
||||||
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
|
|
||||||
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
|
|
||||||
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
|
|
||||||
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
|
|
||||||
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
|
|
||||||
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
|
|
||||||
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
|
|
||||||
(merge 47957485b3 ab/read-tree later to maint).
|
|
||||||
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
|
|
||||||
(merge 76593c09bb ab/detox-gettext-tests later to maint).
|
|
||||||
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
|
|
||||||
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
|
|
||||||
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
|
|
||||||
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
|
|
||||||
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
|
|
||||||
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
|
|
||||||
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
|
|
||||||
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
|
|
||||||
(merge f91371b948 pw/patience-diff-clean-up later to maint).
|
|
||||||
(merge 3a7f0908b6 mt/clean-clean later to maint).
|
|
||||||
(merge d4e2d15a8b ab/streaming-simplify later to maint).
|
|
||||||
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
|
|
||||||
(merge e6f68f62e0 ls/typofix later to maint).
|
|
@ -1,6 +0,0 @@
|
|||||||
Git v2.32.1 Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This release merges up the fixes that appear in v2.30.3 and
|
|
||||||
v2.31.2 to address the security issue CVE-2022-24765; see the
|
|
||||||
release notes for these versions for details.
|
|
@ -1,4 +0,0 @@
|
|||||||
Git Documentation/RelNotes/2.32.2.txt Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This release merges up the fixes that appear in v2.32.2.
|
|
@ -1,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.
|
|
@ -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
|
||||||
@ -116,13 +117,10 @@ If in doubt which identifier to use, run `git log --no-merges` on the
|
|||||||
files you are modifying to see the current conventions.
|
files you are modifying to see the current conventions.
|
||||||
|
|
||||||
[[summary-section]]
|
[[summary-section]]
|
||||||
The title sentence after the "area:" prefix omits the full stop at the
|
It's customary to start the remainder of the first line after "area: "
|
||||||
end, and its first word is not capitalized unless there is a reason to
|
with a lower-case letter. E.g. "doc: clarify...", not "doc:
|
||||||
capitalize it other than because it is the first word in the sentence.
|
Clarify...", or "githooks.txt: improve...", not "githooks.txt:
|
||||||
E.g. "doc: clarify...", not "doc: Clarify...", or "githooks.txt:
|
Improve...".
|
||||||
improve...", not "githooks.txt: Improve...". But "refs: HEAD is also
|
|
||||||
treated as a ref" is correct, as we spell `HEAD` in all caps even when
|
|
||||||
it appears in the middle of a sentence.
|
|
||||||
|
|
||||||
[[meaningful-message]]
|
[[meaningful-message]]
|
||||||
The body should provide a meaningful commit message, which:
|
The body should provide a meaningful commit message, which:
|
||||||
@ -166,85 +164,6 @@ or, on an older version of Git without support for --pretty=reference:
|
|||||||
git show -s --date=short --pretty='format:%h (%s, %ad)' <commit>
|
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 +299,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 +447,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 +461,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
|
||||||
|
@ -119,8 +119,4 @@ advice.*::
|
|||||||
addEmptyPathspec::
|
addEmptyPathspec::
|
||||||
Advice shown if a user runs the add command without providing
|
Advice shown if a user runs the add command without providing
|
||||||
the pathspec parameter.
|
the pathspec parameter.
|
||||||
updateSparsePath::
|
|
||||||
Advice shown when either linkgit:git-add[1] or linkgit:git-rm[1]
|
|
||||||
is asked to update index entries outside the current sparse
|
|
||||||
checkout.
|
|
||||||
--
|
--
|
||||||
|
@ -27,7 +27,7 @@ blame.ignoreRevsFile::
|
|||||||
file names will reset the list of ignored revisions. This option will
|
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].
|
||||||
|
@ -21,24 +21,3 @@ checkout.guess::
|
|||||||
Provides the default value for the `--guess` or `--no-guess`
|
Provides the default value for the `--guess` or `--no-guess`
|
||||||
option in `git checkout` and `git switch`. See
|
option in `git checkout` and `git switch`. See
|
||||||
linkgit:git-switch[1] and linkgit:git-checkout[1].
|
linkgit:git-switch[1] and linkgit:git-checkout[1].
|
||||||
|
|
||||||
checkout.workers::
|
|
||||||
The number of parallel workers to use when updating the working tree.
|
|
||||||
The default is one, i.e. sequential execution. If set to a value less
|
|
||||||
than one, Git will use as many workers as the number of logical cores
|
|
||||||
available. This setting and `checkout.thresholdForParallelism` affect
|
|
||||||
all commands that perform checkout. E.g. checkout, clone, reset,
|
|
||||||
sparse-checkout, etc.
|
|
||||||
+
|
|
||||||
Note: parallel checkout usually delivers better performance for repositories
|
|
||||||
located on SSDs or over NFS. For repositories on spinning disks and/or machines
|
|
||||||
with a small number of cores, the default sequential checkout often performs
|
|
||||||
better. The size and compression level of a repository might also influence how
|
|
||||||
well the parallel version performs.
|
|
||||||
|
|
||||||
checkout.thresholdForParallelism::
|
|
||||||
When running parallel checkout with a small number of files, the cost
|
|
||||||
of subprocess spawning and inter-process communication might outweigh
|
|
||||||
the parallelization gains. This setting allows to define the minimum
|
|
||||||
number of files for which parallel checkout should be attempted. The
|
|
||||||
default is 100.
|
|
||||||
|
@ -2,7 +2,3 @@ clone.defaultRemoteName::
|
|||||||
The name of the remote to create when cloning a repository. Defaults to
|
The name of the remote to create when cloning a repository. Defaults to
|
||||||
`origin`, and can be overridden by passing the `--origin` command-line
|
`origin`, and can be overridden by passing the `--origin` command-line
|
||||||
option to linkgit:git-clone[1].
|
option to linkgit:git-clone[1].
|
||||||
|
|
||||||
clone.rejectShallow::
|
|
||||||
Reject to clone a repository if it is a shallow one, can be overridden by
|
|
||||||
passing option `--reject-shallow` in command line. See linkgit:git-clone[1]
|
|
||||||
|
@ -127,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
|
||||||
|
@ -1,9 +1,3 @@
|
|||||||
commitGraph.generationVersion::
|
|
||||||
Specifies the type of generation number version to use when writing
|
|
||||||
or reading the commit-graph file. If version 1 is specified, then
|
|
||||||
the corrected commit dates will not be written or read. Defaults to
|
|
||||||
2.
|
|
||||||
|
|
||||||
commitGraph.maxNewFilters::
|
commitGraph.maxNewFilters::
|
||||||
Specifies the default value for the `--max-new-filters` option of `git
|
Specifies the default value for the `--max-new-filters` option of `git
|
||||||
commit-graph write` (c.f., linkgit:git-commit-graph[1]).
|
commit-graph write` (c.f., linkgit:git-commit-graph[1]).
|
||||||
|
@ -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,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]).
|
||||||
|
@ -14,11 +14,6 @@ index.recordOffsetTable::
|
|||||||
Defaults to 'true' if index.threads has been explicitly enabled,
|
Defaults to 'true' if index.threads has been explicitly enabled,
|
||||||
'false' otherwise.
|
'false' otherwise.
|
||||||
|
|
||||||
index.sparse::
|
|
||||||
When enabled, write the index using sparse-directory entries. This
|
|
||||||
has no effect unless `core.sparseCheckout` and
|
|
||||||
`core.sparseCheckoutCone` are both enabled. Defaults to 'false'.
|
|
||||||
|
|
||||||
index.threads::
|
index.threads::
|
||||||
Specifies the number of threads to spawn when loading the index.
|
Specifies the number of threads to spawn when loading the index.
|
||||||
This is meant to reduce index load time on multiprocessor machines.
|
This is meant to reduce index load time on multiprocessor machines.
|
||||||
|
@ -24,11 +24,6 @@ log.excludeDecoration::
|
|||||||
the config option can be overridden by the `--decorate-refs`
|
the config option can be overridden by the `--decorate-refs`
|
||||||
option.
|
option.
|
||||||
|
|
||||||
log.diffMerges::
|
|
||||||
Set default diff format to be used for merge commits. See
|
|
||||||
`--diff-merges` in linkgit:git-log[1] for details.
|
|
||||||
Defaults to `separate`.
|
|
||||||
|
|
||||||
log.follow::
|
log.follow::
|
||||||
If `true`, `git log` will act as if the `--follow` option was used when
|
If `true`, `git log` will act as if the `--follow` option was used when
|
||||||
a single <path> is given. This has the same limitations as `--follow`,
|
a single <path> is given. This has the same limitations as `--follow`,
|
||||||
|
@ -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
|
||||||
@ -133,21 +122,6 @@ pack.useSparse::
|
|||||||
commits contain certain types of direct renames. Default is
|
commits contain certain types of direct renames. Default is
|
||||||
`true`.
|
`true`.
|
||||||
|
|
||||||
pack.preferBitmapTips::
|
|
||||||
When selecting which commits will receive bitmaps, prefer a
|
|
||||||
commit at the tip of any reference that is a suffix of any value
|
|
||||||
of this configuration over any other commits in the "selection
|
|
||||||
window".
|
|
||||||
+
|
|
||||||
Note that setting this configuration to `refs/foo` does not mean that
|
|
||||||
the commits at the tips of `refs/foo/bar` and `refs/foo/baz` will
|
|
||||||
necessarily be selected. This is because commits are selected for
|
|
||||||
bitmaps from within a series of windows of variable length.
|
|
||||||
+
|
|
||||||
If a commit at the tip of any reference which is a suffix of any value
|
|
||||||
of this configuration is seen in a window, it is immediately given
|
|
||||||
preference over any other commit in that window.
|
|
||||||
|
|
||||||
pack.writeBitmaps (deprecated)::
|
pack.writeBitmaps (deprecated)::
|
||||||
This is a deprecated synonym for `repack.writeBitmaps`.
|
This is a deprecated synonym for `repack.writeBitmaps`.
|
||||||
|
|
||||||
|
@ -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:
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -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
|
||||||
@ -119,10 +120,3 @@ push.useForceIfIncludes::
|
|||||||
`--force-if-includes` as an option to linkgit:git-push[1]
|
`--force-if-includes` as an option to linkgit:git-push[1]
|
||||||
in the command line. Adding `--no-force-if-includes` at the
|
in the command line. Adding `--no-force-if-includes` at the
|
||||||
time of push overrides this configuration setting.
|
time of push overrides this configuration setting.
|
||||||
|
|
||||||
push.negotiate::
|
|
||||||
If set to "true", attempt to reduce the size of the packfile
|
|
||||||
sent by rounds of negotiation in which the client and the
|
|
||||||
server attempt to find commits in common. If "false", Git will
|
|
||||||
rely solely on the server's ref advertisement to find commits
|
|
||||||
in common.
|
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
rebase.useBuiltin::
|
||||||
|
Unused configuration variable. Used in Git versions 2.20 and
|
||||||
|
2.21 as an escape hatch to enable the legacy shellscript
|
||||||
|
implementation of rebase. Now the built-in rewrite of it in C
|
||||||
|
is always used. Setting this will emit a warning, to alert any
|
||||||
|
remaining users that setting this now does nothing.
|
||||||
|
|
||||||
rebase.backend::
|
rebase.backend::
|
||||||
Default backend to use for rebasing. Possible choices are
|
Default backend to use for rebasing. Possible choices are
|
||||||
'apply' or 'merge'. In the future, if the merge backend gains
|
'apply' or 'merge'. In the future, if the merge backend gains
|
||||||
|
@ -26,3 +26,17 @@ directory was listed in the `safe.directory` list. If `safe.directory=*`
|
|||||||
is set in system config and you want to re-enable this protection, then
|
is set in system config and you want to re-enable this protection, then
|
||||||
initialize your list with an empty value before listing the repositories
|
initialize your list with an empty value before listing the repositories
|
||||||
that you deem safe.
|
that you deem safe.
|
||||||
|
+
|
||||||
|
As explained, Git only allows you to access repositories owned by
|
||||||
|
yourself, i.e. the user who is running Git, by default. When Git
|
||||||
|
is running as 'root' in a non Windows platform that provides sudo,
|
||||||
|
however, git checks the SUDO_UID environment variable that sudo creates
|
||||||
|
and will allow access to the uid recorded as its value in addition to
|
||||||
|
the id from 'root'.
|
||||||
|
This is to make it easy to perform a common sequence during installation
|
||||||
|
"make && sudo make install". A git process running under 'sudo' runs as
|
||||||
|
'root' but the 'sudo' command exports the environment variable to record
|
||||||
|
which id the original user has.
|
||||||
|
If that is not what you would prefer and want git to only trust
|
||||||
|
repositories that are owned by root instead, then you can remove
|
||||||
|
the `SUDO_UID` variable from root's environment before invoking git.
|
||||||
|
@ -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.
|
||||||
|
@ -5,11 +5,6 @@ stash.useBuiltin::
|
|||||||
is always used. Setting this will emit a warning, to alert any
|
is always used. Setting this will emit a warning, to alert any
|
||||||
remaining users that setting this now does nothing.
|
remaining users that setting this now does nothing.
|
||||||
|
|
||||||
stash.showIncludeUntracked::
|
|
||||||
If this is set to true, the `git stash show` command will show
|
|
||||||
the untracked files of a stash entry. Defaults to false. See
|
|
||||||
description of 'show' command in linkgit:git-stash[1].
|
|
||||||
|
|
||||||
stash.showPatch::
|
stash.showPatch::
|
||||||
If this is set to true, the `git stash show` command without an
|
If this is set to true, the `git stash show` command without an
|
||||||
option will show the stash entry in patch form. Defaults to false.
|
option will show the stash entry in patch form. Defaults to false.
|
||||||
|
@ -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
|
||||||
|
@ -59,16 +59,15 @@ uploadpack.allowFilter::
|
|||||||
|
|
||||||
uploadpackfilter.allow::
|
uploadpackfilter.allow::
|
||||||
Provides a default value for unspecified object filters (see: the
|
Provides a default value for unspecified object filters (see: the
|
||||||
below configuration variable). If set to `true`, this will also
|
below configuration variable).
|
||||||
enable all filters which get added in the future.
|
|
||||||
Defaults to `true`.
|
Defaults to `true`.
|
||||||
|
|
||||||
uploadpackfilter.<filter>.allow::
|
uploadpackfilter.<filter>.allow::
|
||||||
Explicitly allow or ban the object filter corresponding to
|
Explicitly allow or ban the object filter corresponding to
|
||||||
`<filter>`, where `<filter>` may be one of: `blob:none`,
|
`<filter>`, where `<filter>` may be one of: `blob:none`,
|
||||||
`blob:limit`, `object:type`, `tree`, `sparse:oid`, or `combine`.
|
`blob:limit`, `tree`, `sparse:oid`, or `combine`. If using
|
||||||
If using combined filters, both `combine` and all of the nested
|
combined filters, both `combine` and all of the nested filter
|
||||||
filter kinds must be allowed. Defaults to `uploadpackfilter.allow`.
|
kinds must be allowed. Defaults to `uploadpackfilter.allow`.
|
||||||
|
|
||||||
uploadpackfilter.tree.maxDepth::
|
uploadpackfilter.tree.maxDepth::
|
||||||
Only allow `--filter=tree:<n>` when `<n>` is no more than the value of
|
Only allow `--filter=tree:<n>` when `<n>` is no more than the value of
|
||||||
|
@ -11,7 +11,7 @@ linkgit:git-diff-files[1]
|
|||||||
with the `-p` option produces patch text.
|
with the `-p` option produces patch text.
|
||||||
You can customize the creation of patch text via the
|
You can customize the creation of patch text via the
|
||||||
`GIT_EXTERNAL_DIFF` and the `GIT_DIFF_OPTS` environment variables
|
`GIT_EXTERNAL_DIFF` and the `GIT_DIFF_OPTS` environment variables
|
||||||
(see linkgit:git[1]), and the `diff` attribute (see linkgit:gitattributes[5]).
|
(see linkgit:git[1]).
|
||||||
|
|
||||||
What the -p option produces is slightly different from the traditional
|
What the -p option produces is slightly different from the traditional
|
||||||
diff format:
|
diff format:
|
||||||
@ -74,11 +74,6 @@ separate lines indicate the old and the new mode.
|
|||||||
rename from b
|
rename from b
|
||||||
rename to a
|
rename to a
|
||||||
|
|
||||||
5. Hunk headers mention the name of the function to which the hunk
|
|
||||||
applies. See "Defining a custom hunk-header" in
|
|
||||||
linkgit:gitattributes[5] for details of how to tailor to this to
|
|
||||||
specific languages.
|
|
||||||
|
|
||||||
|
|
||||||
Combined diff format
|
Combined diff format
|
||||||
--------------------
|
--------------------
|
||||||
|
@ -34,7 +34,7 @@ endif::git-diff[]
|
|||||||
endif::git-format-patch[]
|
endif::git-format-patch[]
|
||||||
|
|
||||||
ifdef::git-log[]
|
ifdef::git-log[]
|
||||||
--diff-merges=(off|none|on|first-parent|1|separate|m|combined|c|dense-combined|cc)::
|
--diff-merges=(off|none|first-parent|1|separate|m|combined|c|dense-combined|cc)::
|
||||||
--no-diff-merges::
|
--no-diff-merges::
|
||||||
Specify diff format to be used for merge commits. Default is
|
Specify diff format to be used for merge commits. Default is
|
||||||
{diff-merges-default} unless `--first-parent` is in use, in which case
|
{diff-merges-default} unless `--first-parent` is in use, in which case
|
||||||
@ -45,24 +45,17 @@ ifdef::git-log[]
|
|||||||
Disable output of diffs for merge commits. Useful to override
|
Disable output of diffs for merge commits. Useful to override
|
||||||
implied value.
|
implied value.
|
||||||
+
|
+
|
||||||
--diff-merges=on:::
|
|
||||||
--diff-merges=m:::
|
|
||||||
-m:::
|
|
||||||
This option makes diff output for merge commits to be shown in
|
|
||||||
the default format. `-m` will produce the output only if `-p`
|
|
||||||
is given as well. The default format could be changed using
|
|
||||||
`log.diffMerges` configuration parameter, which default value
|
|
||||||
is `separate`.
|
|
||||||
+
|
|
||||||
--diff-merges=first-parent:::
|
--diff-merges=first-parent:::
|
||||||
--diff-merges=1:::
|
--diff-merges=1:::
|
||||||
This option makes merge commits show the full diff with
|
This option makes merge commits show the full diff with
|
||||||
respect to the first parent only.
|
respect to the first parent only.
|
||||||
+
|
+
|
||||||
--diff-merges=separate:::
|
--diff-merges=separate:::
|
||||||
|
--diff-merges=m:::
|
||||||
|
-m:::
|
||||||
This makes merge commits show the full diff with respect to
|
This makes merge commits show the full diff with respect to
|
||||||
each of the parents. Separate log entry and diff is generated
|
each of the parents. Separate log entry and diff is generated
|
||||||
for each parent.
|
for each parent. `-m` doesn't produce any output without `-p`.
|
||||||
+
|
+
|
||||||
--diff-merges=combined:::
|
--diff-merges=combined:::
|
||||||
--diff-merges=c:::
|
--diff-merges=c:::
|
||||||
@ -300,14 +293,11 @@ explained for the configuration variable `core.quotePath` (see
|
|||||||
linkgit:git-config[1]).
|
linkgit:git-config[1]).
|
||||||
|
|
||||||
--name-only::
|
--name-only::
|
||||||
Show only names of changed files. The file names are often encoded in UTF-8.
|
Show only names of changed files.
|
||||||
For more information see the discussion about encoding in the linkgit:git-log[1]
|
|
||||||
manual page.
|
|
||||||
|
|
||||||
--name-status::
|
--name-status::
|
||||||
Show only names and status of changed files. See the description
|
Show only names and status of changed files. See the description
|
||||||
of the `--diff-filter` option on what the status letters mean.
|
of the `--diff-filter` option on what the status letters mean.
|
||||||
Just like `--name-only` the file names are often encoded in UTF-8.
|
|
||||||
|
|
||||||
--submodule[=<format>]::
|
--submodule[=<format>]::
|
||||||
Specify how differences in submodules are shown. When specifying
|
Specify how differences in submodules are shown. When specifying
|
||||||
@ -588,17 +578,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.
|
||||||
@ -119,11 +110,6 @@ ifndef::git-pull[]
|
|||||||
setting `fetch.writeCommitGraph`.
|
setting `fetch.writeCommitGraph`.
|
||||||
endif::git-pull[]
|
endif::git-pull[]
|
||||||
|
|
||||||
--prefetch::
|
|
||||||
Modify the configured refspec to place all refs into the
|
|
||||||
`refs/prefetch/` namespace. See the `prefetch` task in
|
|
||||||
linkgit:git-maintenance[1].
|
|
||||||
|
|
||||||
-p::
|
-p::
|
||||||
--prune::
|
--prune::
|
||||||
Before fetching, remove any remote-tracking references that no
|
Before fetching, remove any remote-tracking references that no
|
||||||
|
@ -15,7 +15,6 @@ SYNOPSIS
|
|||||||
[--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
|
[--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
|
||||||
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
||||||
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
|
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
|
||||||
[--quoted-cr=<action>]
|
|
||||||
[(<mbox> | <Maildir>)...]
|
[(<mbox> | <Maildir>)...]
|
||||||
'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)])
|
'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)])
|
||||||
|
|
||||||
@ -60,9 +59,6 @@ OPTIONS
|
|||||||
--no-scissors::
|
--no-scissors::
|
||||||
Ignore scissors lines (see linkgit:git-mailinfo[1]).
|
Ignore scissors lines (see linkgit:git-mailinfo[1]).
|
||||||
|
|
||||||
--quoted-cr=<action>::
|
|
||||||
This flag will be passed down to 'git mailinfo' (see linkgit:git-mailinfo[1]).
|
|
||||||
|
|
||||||
-m::
|
-m::
|
||||||
--message-id::
|
--message-id::
|
||||||
Pass the `-m` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]),
|
Pass the `-m` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]),
|
||||||
@ -178,8 +174,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
|
||||||
|
@ -84,13 +84,12 @@ OPTIONS
|
|||||||
|
|
||||||
-3::
|
-3::
|
||||||
--3way::
|
--3way::
|
||||||
Attempt 3-way merge if the patch records the identity of blobs it is supposed
|
When the patch does not apply cleanly, fall back on 3-way merge if
|
||||||
to apply to and we have those blobs available locally, possibly leaving the
|
the patch records the identity of blobs it is supposed to apply to,
|
||||||
|
and we have those blobs available locally, possibly leaving the
|
||||||
conflict markers in the files in the working tree for the user to
|
conflict markers in the files in the working tree for the user to
|
||||||
resolve. This option implies the `--index` option unless the
|
resolve. This option implies the `--index` option, and is incompatible
|
||||||
`--cached` option is used, and is incompatible with the `--reject` option.
|
with the `--reject` and the `--cached` options.
|
||||||
When used with the `--cached` option, any conflicts are left at higher stages
|
|
||||||
in the cache.
|
|
||||||
|
|
||||||
--build-fake-ancestor=<file>::
|
--build-fake-ancestor=<file>::
|
||||||
Newer 'git diff' output has embedded 'index information'
|
Newer 'git diff' output has embedded 'index information'
|
||||||
|
@ -118,8 +118,7 @@ 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`).
|
||||||
|
|
||||||
|
@ -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>::
|
||||||
|
@ -18,48 +18,21 @@ SYNOPSIS
|
|||||||
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, 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 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
|
||||||
|
@ -35,42 +35,42 @@ OPTIONS
|
|||||||
|
|
||||||
-t::
|
-t::
|
||||||
Instead of the content, show the object type identified by
|
Instead of the content, show the object type identified by
|
||||||
`<object>`.
|
<object>.
|
||||||
|
|
||||||
-s::
|
-s::
|
||||||
Instead of the content, show the object size identified by
|
Instead of the content, show the object size identified by
|
||||||
`<object>`.
|
<object>.
|
||||||
|
|
||||||
-e::
|
-e::
|
||||||
Exit with zero status if `<object>` exists and is a valid
|
Exit with zero status if <object> exists and is a valid
|
||||||
object. If `<object>` is of an invalid format exit with non-zero and
|
object. If <object> is of an invalid format exit with non-zero and
|
||||||
emits an error on stderr.
|
emits an error on stderr.
|
||||||
|
|
||||||
-p::
|
-p::
|
||||||
Pretty-print the contents of `<object>` based on its type.
|
Pretty-print the contents of <object> based on its type.
|
||||||
|
|
||||||
<type>::
|
<type>::
|
||||||
Typically this matches the real type of `<object>` but asking
|
Typically this matches the real type of <object> but asking
|
||||||
for a type that can trivially be dereferenced from the given
|
for a type that can trivially be dereferenced from the given
|
||||||
`<object>` is also permitted. An example is to ask for a
|
<object> is also permitted. An example is to ask for a
|
||||||
"tree" with `<object>` being a commit object that contains it,
|
"tree" with <object> being a commit object that contains it,
|
||||||
or to ask for a "blob" with `<object>` being a tag object that
|
or to ask for a "blob" with <object> being a tag object that
|
||||||
points at it.
|
points at it.
|
||||||
|
|
||||||
--textconv::
|
--textconv::
|
||||||
Show the content as transformed by a textconv filter. In this case,
|
Show the content as transformed by a textconv filter. In this case,
|
||||||
`<object>` has to be of the form `<tree-ish>:<path>`, or `:<path>` in
|
<object> has to be of the form <tree-ish>:<path>, or :<path> in
|
||||||
order to apply the filter to the content recorded in the index at
|
order to apply the filter to the content recorded in the index at
|
||||||
`<path>`.
|
<path>.
|
||||||
|
|
||||||
--filters::
|
--filters::
|
||||||
Show the content as converted by the filters configured in
|
Show the content as converted by the filters configured in
|
||||||
the current working tree for the given `<path>` (i.e. smudge filters,
|
the current working tree for the given <path> (i.e. smudge filters,
|
||||||
end-of-line conversion, etc). In this case, `<object>` has to be of
|
end-of-line conversion, etc). In this case, <object> has to be of
|
||||||
the form `<tree-ish>:<path>`, or `:<path>`.
|
the form <tree-ish>:<path>, or :<path>.
|
||||||
|
|
||||||
--path=<path>::
|
--path=<path>::
|
||||||
For use with `--textconv` or `--filters`, to allow specifying an object
|
For use with --textconv or --filters, to allow specifying an object
|
||||||
name and a path separately, e.g. when it is difficult to figure out
|
name and a path separately, e.g. when it is difficult to figure out
|
||||||
the revision from which the blob came.
|
the revision from which the blob came.
|
||||||
|
|
||||||
@ -115,15 +115,15 @@ OPTIONS
|
|||||||
repository.
|
repository.
|
||||||
|
|
||||||
--allow-unknown-type::
|
--allow-unknown-type::
|
||||||
Allow `-s` or `-t` to query broken/corrupt objects of unknown type.
|
Allow -s or -t to query broken/corrupt objects of unknown type.
|
||||||
|
|
||||||
--follow-symlinks::
|
--follow-symlinks::
|
||||||
With `--batch` or `--batch-check`, follow symlinks inside the
|
With --batch or --batch-check, follow symlinks inside the
|
||||||
repository when requesting objects with extended SHA-1
|
repository when requesting objects with extended SHA-1
|
||||||
expressions of the form tree-ish:path-in-tree. Instead of
|
expressions of the form tree-ish:path-in-tree. Instead of
|
||||||
providing output about the link itself, provide output about
|
providing output about the link itself, provide output about
|
||||||
the linked-to object. If a symlink points outside the
|
the linked-to object. If a symlink points outside the
|
||||||
tree-ish (e.g. a link to `/foo` or a root-level link to `../foo`),
|
tree-ish (e.g. a link to /foo or a root-level link to ../foo),
|
||||||
the portion of the link which is outside the tree will be
|
the portion of the link which is outside the tree will be
|
||||||
printed.
|
printed.
|
||||||
+
|
+
|
||||||
@ -175,15 +175,15 @@ respectively print:
|
|||||||
|
|
||||||
OUTPUT
|
OUTPUT
|
||||||
------
|
------
|
||||||
If `-t` is specified, one of the `<type>`.
|
If `-t` is specified, one of the <type>.
|
||||||
|
|
||||||
If `-s` is specified, the size of the `<object>` in bytes.
|
If `-s` is specified, the size of the <object> in bytes.
|
||||||
|
|
||||||
If `-e` is specified, no output, unless the `<object>` is malformed.
|
If `-e` is specified, no output, unless the <object> is malformed.
|
||||||
|
|
||||||
If `-p` is specified, the contents of `<object>` are pretty-printed.
|
If `-p` is specified, the contents of <object> are pretty-printed.
|
||||||
|
|
||||||
If `<type>` is specified, the raw (though uncompressed) contents of the `<object>`
|
If <type> is specified, the raw (though uncompressed) contents of the <object>
|
||||||
will be returned.
|
will be returned.
|
||||||
|
|
||||||
BATCH OUTPUT
|
BATCH OUTPUT
|
||||||
@ -200,7 +200,7 @@ object, with placeholders of the form `%(atom)` expanded, followed by a
|
|||||||
newline. The available atoms are:
|
newline. The available atoms are:
|
||||||
|
|
||||||
`objectname`::
|
`objectname`::
|
||||||
The full hex representation of the object name.
|
The 40-hex object name of the object.
|
||||||
|
|
||||||
`objecttype`::
|
`objecttype`::
|
||||||
The type of the object (the same as `cat-file -t` reports).
|
The type of the object (the same as `cat-file -t` reports).
|
||||||
@ -215,9 +215,8 @@ newline. The available atoms are:
|
|||||||
|
|
||||||
`deltabase`::
|
`deltabase`::
|
||||||
If the object is stored as a delta on-disk, this expands to the
|
If the object is stored as a delta on-disk, this expands to the
|
||||||
full hex representation of the delta base object name.
|
40-hex sha1 of the delta base object. Otherwise, expands to the
|
||||||
Otherwise, expands to the null OID (all zeroes). See `CAVEATS`
|
null sha1 (40 zeroes). See `CAVEATS` below.
|
||||||
below.
|
|
||||||
|
|
||||||
`rest`::
|
`rest`::
|
||||||
If this atom is used in the output string, input lines are split
|
If this atom is used in the output string, input lines are split
|
||||||
@ -236,14 +235,14 @@ newline.
|
|||||||
For example, `--batch` without a custom format would produce:
|
For example, `--batch` without a custom format would produce:
|
||||||
|
|
||||||
------------
|
------------
|
||||||
<oid> SP <type> SP <size> LF
|
<sha1> SP <type> SP <size> LF
|
||||||
<contents> LF
|
<contents> LF
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Whereas `--batch-check='%(objectname) %(objecttype)'` would produce:
|
Whereas `--batch-check='%(objectname) %(objecttype)'` would produce:
|
||||||
|
|
||||||
------------
|
------------
|
||||||
<oid> SP <type> LF
|
<sha1> SP <type> LF
|
||||||
------------
|
------------
|
||||||
|
|
||||||
If a name is specified on stdin that cannot be resolved to an object in
|
If a name is specified on stdin that cannot be resolved to an object in
|
||||||
@ -259,7 +258,7 @@ If a name is specified that might refer to more than one object (an ambiguous sh
|
|||||||
<object> SP ambiguous LF
|
<object> SP ambiguous LF
|
||||||
------------
|
------------
|
||||||
|
|
||||||
If `--follow-symlinks` is used, and a symlink in the repository points
|
If --follow-symlinks is used, and a symlink in the repository points
|
||||||
outside the repository, then `cat-file` will ignore any custom format
|
outside the repository, then `cat-file` will ignore any custom format
|
||||||
and print:
|
and print:
|
||||||
|
|
||||||
@ -268,11 +267,11 @@ symlink SP <size> LF
|
|||||||
<symlink> LF
|
<symlink> LF
|
||||||
------------
|
------------
|
||||||
|
|
||||||
The symlink will either be absolute (beginning with a `/`), or relative
|
The symlink will either be absolute (beginning with a /), or relative
|
||||||
to the tree root. For instance, if dir/link points to `../../foo`, then
|
to the tree root. For instance, if dir/link points to ../../foo, then
|
||||||
`<symlink>` will be `../foo`. `<size>` is the size of the symlink in bytes.
|
<symlink> will be ../foo. <size> is the size of the symlink in bytes.
|
||||||
|
|
||||||
If `--follow-symlinks` is used, the following error messages will be
|
If --follow-symlinks is used, the following error messages will be
|
||||||
displayed:
|
displayed:
|
||||||
|
|
||||||
------------
|
------------
|
||||||
|
@ -15,7 +15,7 @@ SYNOPSIS
|
|||||||
[--dissociate] [--separate-git-dir <git dir>]
|
[--dissociate] [--separate-git-dir <git dir>]
|
||||||
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
||||||
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
||||||
[--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
|
[--[no-]remote-submodules] [--jobs <n>] [--sparse]
|
||||||
[--filter=<filter>] [--] <repository>
|
[--filter=<filter>] [--] <repository>
|
||||||
[<directory>]
|
[<directory>]
|
||||||
|
|
||||||
@ -149,11 +149,6 @@ objects from the source repository into a pack in the cloned repository.
|
|||||||
--no-checkout::
|
--no-checkout::
|
||||||
No checkout of HEAD is performed after the clone is complete.
|
No checkout of HEAD is performed after the clone is complete.
|
||||||
|
|
||||||
--[no-]reject-shallow::
|
|
||||||
Fail if the source repository is a shallow repository.
|
|
||||||
The 'clone.rejectShallow' configuration variable can be used to
|
|
||||||
specify the default.
|
|
||||||
|
|
||||||
--bare::
|
--bare::
|
||||||
Make a 'bare' Git repository. That is, instead of
|
Make a 'bare' Git repository. That is, instead of
|
||||||
creating `<directory>` and placing the administrative
|
creating `<directory>` and placing the administrative
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -9,13 +9,12 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git commit' [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
|
'git commit' [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
|
||||||
[--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|reword):]<commit>)]
|
[--dry-run] [(-c | -C | --fixup | --squash) <commit>]
|
||||||
[-F <file> | -m <msg>] [--reset-author] [--allow-empty]
|
[-F <file> | -m <msg>] [--reset-author] [--allow-empty]
|
||||||
[--allow-empty-message] [--no-verify] [-e] [--author=<author>]
|
[--allow-empty-message] [--no-verify] [-e] [--author=<author>]
|
||||||
[--date=<date>] [--cleanup=<mode>] [--[no-]status]
|
[--date=<date>] [--cleanup=<mode>] [--[no-]status]
|
||||||
[-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]
|
[-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]
|
||||||
[(--trailer <token>[(=|:)<value>])...] [-S[<keyid>]]
|
[-S[<keyid>]] [--] [<pathspec>...]
|
||||||
[--] [<pathspec>...]
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -72,7 +71,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.
|
||||||
|
|
||||||
@ -87,44 +86,11 @@ OPTIONS
|
|||||||
Like '-C', but with `-c` the editor is invoked, so that
|
Like '-C', but with `-c` the editor is invoked, so that
|
||||||
the user can further edit the commit message.
|
the user can further edit the commit message.
|
||||||
|
|
||||||
--fixup=[(amend|reword):]<commit>::
|
--fixup=<commit>::
|
||||||
Create a new commit which "fixes up" `<commit>` when applied with
|
Construct a commit message for use with `rebase --autosquash`.
|
||||||
`git rebase --autosquash`. Plain `--fixup=<commit>` creates a
|
The commit message will be the subject line from the specified
|
||||||
"fixup!" commit which changes the content of `<commit>` but leaves
|
commit with a prefix of "fixup! ". See linkgit:git-rebase[1]
|
||||||
its log message untouched. `--fixup=amend:<commit>` is similar but
|
for details.
|
||||||
creates an "amend!" commit which also replaces the log message of
|
|
||||||
`<commit>` with the log message of the "amend!" commit.
|
|
||||||
`--fixup=reword:<commit>` creates an "amend!" commit which
|
|
||||||
replaces the log message of `<commit>` with its own log message
|
|
||||||
but makes no changes to the content of `<commit>`.
|
|
||||||
+
|
|
||||||
The commit created by plain `--fixup=<commit>` has a subject
|
|
||||||
composed of "fixup!" followed by the subject line from <commit>,
|
|
||||||
and is recognized specially by `git rebase --autosquash`. The `-m`
|
|
||||||
option may be used to supplement the log message of the created
|
|
||||||
commit, but the additional commentary will be thrown away once the
|
|
||||||
"fixup!" commit is squashed into `<commit>` by
|
|
||||||
`git rebase --autosquash`.
|
|
||||||
+
|
|
||||||
The commit created by `--fixup=amend:<commit>` is similar but its
|
|
||||||
subject is instead prefixed with "amend!". The log message of
|
|
||||||
<commit> is copied into the log message of the "amend!" commit and
|
|
||||||
opened in an editor so it can be refined. When `git rebase
|
|
||||||
--autosquash` squashes the "amend!" commit into `<commit>`, the
|
|
||||||
log message of `<commit>` is replaced by the refined log message
|
|
||||||
from the "amend!" commit. It is an error for the "amend!" commit's
|
|
||||||
log message to be empty unless `--allow-empty-message` is
|
|
||||||
specified.
|
|
||||||
+
|
|
||||||
`--fixup=reword:<commit>` is shorthand for `--fixup=amend:<commit>
|
|
||||||
--only`. It creates an "amend!" commit with only a log message
|
|
||||||
(ignoring any changes staged in the index). When squashed by `git
|
|
||||||
rebase --autosquash`, it replaces the log message of `<commit>`
|
|
||||||
without making any other changes.
|
|
||||||
+
|
|
||||||
Neither "fixup!" nor "amend!" commits change authorship of
|
|
||||||
`<commit>` when applied by `git rebase --autosquash`.
|
|
||||||
See linkgit:git-rebase[1] for details.
|
|
||||||
|
|
||||||
--squash=<commit>::
|
--squash=<commit>::
|
||||||
Construct a commit message for use with `rebase --autosquash`.
|
Construct a commit message for use with `rebase --autosquash`.
|
||||||
@ -200,17 +166,6 @@ The `-m` option is mutually exclusive with `-c`, `-C`, and `-F`.
|
|||||||
|
|
||||||
include::signoff-option.txt[]
|
include::signoff-option.txt[]
|
||||||
|
|
||||||
--trailer <token>[(=|:)<value>]::
|
|
||||||
Specify a (<token>, <value>) pair that should be applied as a
|
|
||||||
trailer. (e.g. `git commit --trailer "Signed-off-by:C O Mitter \
|
|
||||||
<committer@example.com>" --trailer "Helped-by:C O Mitter \
|
|
||||||
<committer@example.com>"` will add the "Signed-off-by" trailer
|
|
||||||
and the "Helped-by" trailer to the commit message.)
|
|
||||||
The `trailer.*` configuration variables
|
|
||||||
(linkgit:git-interpret-trailers[1]) can be used to define if
|
|
||||||
a duplicated trailer is omitted, where in the run of trailers
|
|
||||||
each trailer would appear, and other details.
|
|
||||||
|
|
||||||
-n::
|
-n::
|
||||||
--no-verify::
|
--no-verify::
|
||||||
This option bypasses the pre-commit and commit-msg hooks.
|
This option bypasses the pre-commit and commit-msg hooks.
|
||||||
|
@ -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,18 +325,20 @@ 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_GLOBAL::
|
GIT_CONFIG::
|
||||||
GIT_CONFIG_SYSTEM::
|
Take the configuration from the given file instead of .git/config.
|
||||||
Take the configuration from the given files instead from global or
|
Using the "--global" option forces this to ~/.gitconfig. Using the
|
||||||
system-level configuration. See linkgit:git[1] for details.
|
"--system" option forces this to $(prefix)/etc/gitconfig.
|
||||||
|
|
||||||
GIT_CONFIG_NOSYSTEM::
|
GIT_CONFIG_NOSYSTEM::
|
||||||
Whether to skip reading settings from the system-wide
|
Whether to skip reading settings from the system-wide
|
||||||
@ -370,12 +362,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
|
||||||
|
@ -159,7 +159,3 @@ empty string.
|
|||||||
+
|
+
|
||||||
Components which are missing from the URL (e.g., there is no
|
Components which are missing from the URL (e.g., there is no
|
||||||
username in the example above) will be left unset.
|
username in the example above) will be left unset.
|
||||||
|
|
||||||
GIT
|
|
||||||
---
|
|
||||||
Part of the linkgit:git[1] suite
|
|
||||||
|
@ -24,18 +24,6 @@ Usage:
|
|||||||
[verse]
|
[verse]
|
||||||
'git-cvsserver' [<options>] [pserver|server] [<directory> ...]
|
'git-cvsserver' [<options>] [pserver|server] [<directory> ...]
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This application is a CVS emulation layer for Git.
|
|
||||||
|
|
||||||
It is highly functional. However, not all methods are implemented,
|
|
||||||
and for those methods that are implemented,
|
|
||||||
not all switches are implemented.
|
|
||||||
|
|
||||||
Testing has been done using both the CLI CVS client, and the Eclipse CVS
|
|
||||||
plugin. Most functionality works fine with both of these clients.
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
|
|
||||||
@ -69,6 +57,18 @@ access still needs to be enabled by the `gitcvs.enabled` config option
|
|||||||
unless `--export-all` was given, too.
|
unless `--export-all` was given, too.
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
-----------
|
||||||
|
|
||||||
|
This application is a CVS emulation layer for Git.
|
||||||
|
|
||||||
|
It is highly functional. However, not all methods are implemented,
|
||||||
|
and for those methods that are implemented,
|
||||||
|
not all switches are implemented.
|
||||||
|
|
||||||
|
Testing has been done using both the CLI CVS client, and the Eclipse CVS
|
||||||
|
plugin. Most functionality works fine with both of these clients.
|
||||||
|
|
||||||
LIMITATIONS
|
LIMITATIONS
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
@ -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
|
||||||
@ -185,8 +186,8 @@ allowing access over SSH.
|
|||||||
+
|
+
|
||||||
--
|
--
|
||||||
------
|
------
|
||||||
export CVSROOT=:ext:user@server:/var/git/project.git
|
export CVSROOT=:ext:user@server:/var/git/project.git
|
||||||
export CVS_SERVER="git cvsserver"
|
export CVS_SERVER="git cvsserver"
|
||||||
------
|
------
|
||||||
--
|
--
|
||||||
4. For SSH clients that will make commits, make sure their server-side
|
4. For SSH clients that will make commits, make sure their server-side
|
||||||
@ -202,7 +203,7 @@ allowing access over SSH.
|
|||||||
`project-master` directory:
|
`project-master` directory:
|
||||||
+
|
+
|
||||||
------
|
------
|
||||||
cvs co -d project-master master
|
cvs co -d project-master master
|
||||||
------
|
------
|
||||||
|
|
||||||
[[dbbackend]]
|
[[dbbackend]]
|
||||||
|
@ -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).
|
||||||
|
|
||||||
|
@ -36,28 +36,11 @@ SYNOPSIS
|
|||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Prepare each non-merge commit with its "patch" in
|
Prepare each commit with its patch in
|
||||||
one "message" per commit, formatted to resemble a UNIX mailbox.
|
one file per commit, formatted to resemble UNIX mailbox format.
|
||||||
The output of this command is convenient for e-mail submission or
|
The output of this command is convenient for e-mail submission or
|
||||||
for use with 'git am'.
|
for use with 'git am'.
|
||||||
|
|
||||||
A "message" generated by the command consists of three parts:
|
|
||||||
|
|
||||||
* A brief metadata header that begins with `From <commit>`
|
|
||||||
with a fixed `Mon Sep 17 00:00:00 2001` datestamp to help programs
|
|
||||||
like "file(1)" to recognize that the file is an output from this
|
|
||||||
command, fields that record the author identity, the author date,
|
|
||||||
and the title of the change (taken from the first paragraph of the
|
|
||||||
commit log message).
|
|
||||||
|
|
||||||
* The second and subsequent paragraphs of the commit log message.
|
|
||||||
|
|
||||||
* The "patch", which is the "diff -p --stat" output (see
|
|
||||||
linkgit:git-diff[1]) between the commit and its parent.
|
|
||||||
|
|
||||||
The log message and the patch is separated by a line with a
|
|
||||||
three-dash line.
|
|
||||||
|
|
||||||
There are two ways to specify which commits to operate on.
|
There are two ways to specify which commits to operate on.
|
||||||
|
|
||||||
1. A single commit, <since>, specifies that the commits leading
|
1. A single commit, <since>, specifies that the commits leading
|
||||||
@ -238,11 +221,6 @@ populated with placeholder text.
|
|||||||
`--subject-prefix` option) has ` v<n>` appended to it. E.g.
|
`--subject-prefix` option) has ` v<n>` appended to it. E.g.
|
||||||
`--reroll-count=4` may produce `v4-0001-add-makefile.patch`
|
`--reroll-count=4` may produce `v4-0001-add-makefile.patch`
|
||||||
file that has "Subject: [PATCH v4 1/20] Add makefile" in it.
|
file that has "Subject: [PATCH v4 1/20] Add makefile" in it.
|
||||||
`<n>` does not have to be an integer (e.g. "--reroll-count=4.4",
|
|
||||||
or "--reroll-count=4rev2" are allowed), but the downside of
|
|
||||||
using such a reroll-count is that the range-diff/interdiff
|
|
||||||
with the previous version does not state exactly which
|
|
||||||
version the new interation is compared against.
|
|
||||||
|
|
||||||
--to=<email>::
|
--to=<email>::
|
||||||
Add a `To:` header to the email headers. This is in addition
|
Add a `To:` header to the email headers. This is in addition
|
||||||
@ -740,14 +718,6 @@ use it only when you know the recipient uses Git to apply your patch.
|
|||||||
$ git format-patch -3
|
$ git format-patch -3
|
||||||
------------
|
------------
|
||||||
|
|
||||||
CAVEATS
|
|
||||||
-------
|
|
||||||
|
|
||||||
Note that `format-patch` will omit merge commits from the output, even
|
|
||||||
if they are part of the requested range. A simple "patch" does not
|
|
||||||
include enough information for the receiving end to reproduce the same
|
|
||||||
merge commit.
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
linkgit:git-am[1], linkgit:git-send-email[1]
|
linkgit:git-am[1], linkgit:git-send-email[1]
|
||||||
|
@ -38,6 +38,38 @@ are lists of one or more search expressions separated by newline
|
|||||||
characters. An empty string as search expression matches all lines.
|
characters. An empty string as search expression matches all lines.
|
||||||
|
|
||||||
|
|
||||||
|
CONFIGURATION
|
||||||
|
-------------
|
||||||
|
|
||||||
|
grep.lineNumber::
|
||||||
|
If set to true, enable `-n` option by default.
|
||||||
|
|
||||||
|
grep.column::
|
||||||
|
If set to true, enable the `--column` option by default.
|
||||||
|
|
||||||
|
grep.patternType::
|
||||||
|
Set the default matching behavior. Using a value of 'basic', 'extended',
|
||||||
|
'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
|
||||||
|
`--fixed-strings`, or `--perl-regexp` option accordingly, while the
|
||||||
|
value 'default' will return to the default matching behavior.
|
||||||
|
|
||||||
|
grep.extendedRegexp::
|
||||||
|
If set to true, enable `--extended-regexp` option by default. This
|
||||||
|
option is ignored when the `grep.patternType` option is set to a value
|
||||||
|
other than 'default'.
|
||||||
|
|
||||||
|
grep.threads::
|
||||||
|
Number of grep worker threads to use. If unset (or set to 0), Git will
|
||||||
|
use as many threads as the number of logical cores available.
|
||||||
|
|
||||||
|
grep.fullName::
|
||||||
|
If set to true, enable `--full-name` option by default.
|
||||||
|
|
||||||
|
grep.fallbackToNoIndex::
|
||||||
|
If set to true, fall back to git grep --no-index if git grep
|
||||||
|
is executed outside of a git repository. Defaults to false.
|
||||||
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
--cached::
|
--cached::
|
||||||
@ -331,38 +363,6 @@ with multiple threads might perform slower than single threaded if `--textconv`
|
|||||||
is given and there're too many text conversions. So if you experience low
|
is given and there're too many text conversions. So if you experience low
|
||||||
performance in this case, it might be desirable to use `--threads=1`.
|
performance in this case, it might be desirable to use `--threads=1`.
|
||||||
|
|
||||||
CONFIGURATION
|
|
||||||
-------------
|
|
||||||
|
|
||||||
grep.lineNumber::
|
|
||||||
If set to true, enable `-n` option by default.
|
|
||||||
|
|
||||||
grep.column::
|
|
||||||
If set to true, enable the `--column` option by default.
|
|
||||||
|
|
||||||
grep.patternType::
|
|
||||||
Set the default matching behavior. Using a value of 'basic', 'extended',
|
|
||||||
'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
|
|
||||||
`--fixed-strings`, or `--perl-regexp` option accordingly, while the
|
|
||||||
value 'default' will return to the default matching behavior.
|
|
||||||
|
|
||||||
grep.extendedRegexp::
|
|
||||||
If set to true, enable `--extended-regexp` option by default. This
|
|
||||||
option is ignored when the `grep.patternType` option is set to a value
|
|
||||||
other than 'default'.
|
|
||||||
|
|
||||||
grep.threads::
|
|
||||||
Number of grep worker threads to use. If unset (or set to 0), Git will
|
|
||||||
use as many threads as the number of logical cores available.
|
|
||||||
|
|
||||||
grep.fullName::
|
|
||||||
If set to true, enable `--full-name` option by default.
|
|
||||||
|
|
||||||
grep.fallbackToNoIndex::
|
|
||||||
If set to true, fall back to git grep --no-index if git grep
|
|
||||||
is executed outside of a git repository. Defaults to false.
|
|
||||||
|
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
---
|
---
|
||||||
Part of the linkgit:git[1] suite
|
Part of the linkgit:git[1] suite
|
||||||
|
@ -232,38 +232,25 @@ trailer.<token>.ifmissing::
|
|||||||
that option for trailers with the specified <token>.
|
that option for trailers with the specified <token>.
|
||||||
|
|
||||||
trailer.<token>.command::
|
trailer.<token>.command::
|
||||||
This option behaves in the same way as 'trailer.<token>.cmd', except
|
This option can be used to specify a shell command that will
|
||||||
that it doesn't pass anything as argument to the specified command.
|
be called to automatically add or modify a trailer with the
|
||||||
Instead the first occurrence of substring $ARG is replaced by the
|
specified <token>.
|
||||||
value that would be passed as argument.
|
|
||||||
+
|
+
|
||||||
The 'trailer.<token>.command' option has been deprecated in favor of
|
When this option is specified, the behavior is as if a special
|
||||||
'trailer.<token>.cmd' due to the fact that $ARG in the user's command is
|
'<token>=<value>' argument were added at the beginning of the command
|
||||||
only replaced once and that the original way of replacing $ARG is not safe.
|
line, where <value> is taken to be the standard output of the
|
||||||
|
specified command with any leading and trailing whitespace trimmed
|
||||||
|
off.
|
||||||
+
|
+
|
||||||
When both 'trailer.<token>.cmd' and 'trailer.<token>.command' are given
|
If the command contains the `$ARG` string, this string will be
|
||||||
for the same <token>, 'trailer.<token>.cmd' is used and
|
replaced with the <value> part of an existing trailer with the same
|
||||||
'trailer.<token>.command' is ignored.
|
<token>, if any, before the command is launched.
|
||||||
|
|
||||||
trailer.<token>.cmd::
|
|
||||||
This option can be used to specify a shell command that will be called:
|
|
||||||
once to automatically add a trailer with the specified <token>, and then
|
|
||||||
each time a '--trailer <token>=<value>' argument to modify the <value> of
|
|
||||||
the trailer that this option would produce.
|
|
||||||
+
|
+
|
||||||
When the specified command is first called to add a trailer
|
If some '<token>=<value>' arguments are also passed on the command
|
||||||
with the specified <token>, the behavior is as if a special
|
line, when a 'trailer.<token>.command' is configured, the command will
|
||||||
'--trailer <token>=<value>' argument was added at the beginning
|
also be executed for each of these arguments. And the <value> part of
|
||||||
of the "git interpret-trailers" command, where <value>
|
these arguments, if any, will be used to replace the `$ARG` string in
|
||||||
is taken to be the standard output of the command with any
|
the command.
|
||||||
leading and trailing whitespace trimmed off.
|
|
||||||
+
|
|
||||||
If some '--trailer <token>=<value>' arguments are also passed
|
|
||||||
on the command line, the command is called again once for each
|
|
||||||
of these arguments with the same <token>. And the <value> part
|
|
||||||
of these arguments, if any, will be passed to the command as its
|
|
||||||
first argument. This way the command can produce a <value> computed
|
|
||||||
from the <value> passed in the '--trailer <token>=<value>' argument.
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
@ -346,55 +333,6 @@ subject
|
|||||||
Fix #42
|
Fix #42
|
||||||
------------
|
------------
|
||||||
|
|
||||||
* Configure a 'help' trailer with a cmd use a script `glog-find-author`
|
|
||||||
which search specified author identity from git log in git repository
|
|
||||||
and show how it works:
|
|
||||||
+
|
|
||||||
------------
|
|
||||||
$ cat ~/bin/glog-find-author
|
|
||||||
#!/bin/sh
|
|
||||||
test -n "$1" && git log --author="$1" --pretty="%an <%ae>" -1 || true
|
|
||||||
$ git config trailer.help.key "Helped-by: "
|
|
||||||
$ git config trailer.help.ifExists "addIfDifferentNeighbor"
|
|
||||||
$ git config trailer.help.cmd "~/bin/glog-find-author"
|
|
||||||
$ git interpret-trailers --trailer="help:Junio" --trailer="help:Couder" <<EOF
|
|
||||||
> subject
|
|
||||||
>
|
|
||||||
> message
|
|
||||||
>
|
|
||||||
> EOF
|
|
||||||
subject
|
|
||||||
|
|
||||||
message
|
|
||||||
|
|
||||||
Helped-by: Junio C Hamano <gitster@pobox.com>
|
|
||||||
Helped-by: Christian Couder <christian.couder@gmail.com>
|
|
||||||
------------
|
|
||||||
|
|
||||||
* Configure a 'ref' trailer with a cmd use a script `glog-grep`
|
|
||||||
to grep last relevant commit from git log in the git repository
|
|
||||||
and show how it works:
|
|
||||||
+
|
|
||||||
------------
|
|
||||||
$ cat ~/bin/glog-grep
|
|
||||||
#!/bin/sh
|
|
||||||
test -n "$1" && git log --grep "$1" --pretty=reference -1 || true
|
|
||||||
$ git config trailer.ref.key "Reference-to: "
|
|
||||||
$ git config trailer.ref.ifExists "replace"
|
|
||||||
$ git config trailer.ref.cmd "~/bin/glog-grep"
|
|
||||||
$ git interpret-trailers --trailer="ref:Add copyright notices." <<EOF
|
|
||||||
> subject
|
|
||||||
>
|
|
||||||
> message
|
|
||||||
>
|
|
||||||
> EOF
|
|
||||||
subject
|
|
||||||
|
|
||||||
message
|
|
||||||
|
|
||||||
Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)
|
|
||||||
------------
|
|
||||||
|
|
||||||
* Configure a 'see' trailer with a command to show the subject of a
|
* Configure a 'see' trailer with a command to show the subject of a
|
||||||
commit that is related, and show how it works:
|
commit that is related, and show how it works:
|
||||||
+
|
+
|
||||||
|
@ -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>::
|
||||||
|
@ -9,9 +9,7 @@ git-mailinfo - Extracts patch and authorship from a single e-mail message
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git mailinfo' [-k|-b] [-u | --encoding=<encoding> | -n]
|
'git mailinfo' [-k|-b] [-u | --encoding=<encoding> | -n] [--[no-]scissors] <msg> <patch>
|
||||||
[--[no-]scissors] [--quoted-cr=<action>]
|
|
||||||
<msg> <patch>
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -91,23 +89,6 @@ This can be enabled by default with the configuration option mailinfo.scissors.
|
|||||||
--no-scissors::
|
--no-scissors::
|
||||||
Ignore scissors lines. Useful for overriding mailinfo.scissors settings.
|
Ignore scissors lines. Useful for overriding mailinfo.scissors settings.
|
||||||
|
|
||||||
--quoted-cr=<action>::
|
|
||||||
Action when processes email messages sent with base64 or
|
|
||||||
quoted-printable encoding, and the decoded lines end with a CRLF
|
|
||||||
instead of a simple LF.
|
|
||||||
+
|
|
||||||
The valid actions are:
|
|
||||||
+
|
|
||||||
--
|
|
||||||
* `nowarn`: Git will do nothing when such a CRLF is found.
|
|
||||||
* `warn`: Git will issue a warning for each message if such a CRLF is
|
|
||||||
found.
|
|
||||||
* `strip`: Git will convert those CRLF to LF.
|
|
||||||
--
|
|
||||||
+
|
|
||||||
The default action could be set by configuration option `mailinfo.quotedCR`.
|
|
||||||
If no such configuration option has been set, `warn` will be used.
|
|
||||||
|
|
||||||
<msg>::
|
<msg>::
|
||||||
The commit log message extracted from e-mail, usually
|
The commit log message extracted from e-mail, usually
|
||||||
except the title line which comes from e-mail Subject.
|
except the title line which comes from e-mail Subject.
|
||||||
|
@ -92,8 +92,10 @@ commit-graph::
|
|||||||
prefetch::
|
prefetch::
|
||||||
The `prefetch` task updates the object directory with the latest
|
The `prefetch` task updates the object directory with the latest
|
||||||
objects from all registered remotes. For each remote, a `git fetch`
|
objects from all registered remotes. For each remote, a `git fetch`
|
||||||
command is run. The configured refspec is modified to place all
|
command is run. The refmap is custom to avoid updating local or remote
|
||||||
requested refs within `refs/prefetch/`. Also, tags are not updated.
|
branches (those in `refs/heads` or `refs/remotes`). Instead, the
|
||||||
|
remote refs are stored in `refs/prefetch/<remote>/`. Also, tags are
|
||||||
|
not updated.
|
||||||
+
|
+
|
||||||
This is done to avoid disrupting the remote-tracking branches. The end users
|
This is done to avoid disrupting the remote-tracking branches. The end users
|
||||||
expect these refs to stay unmoved unless they initiate a fetch. With prefetch
|
expect these refs to stay unmoved unless they initiate a fetch. With prefetch
|
||||||
|
@ -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>::
|
||||||
|
@ -11,6 +11,14 @@ SYNOPSIS
|
|||||||
[verse]
|
[verse]
|
||||||
'git mktag'
|
'git mktag'
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-------
|
||||||
|
|
||||||
|
--strict::
|
||||||
|
By default mktag turns on the equivalent of
|
||||||
|
linkgit:git-fsck[1] `--strict` mode. Use `--no-strict` to
|
||||||
|
disable it.
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
@ -37,14 +45,6 @@ the appropriate `fsck.<msg-id>` varible:
|
|||||||
|
|
||||||
git -c fsck.extraHeaderEntry=ignore mktag <my-tag-with-headers
|
git -c fsck.extraHeaderEntry=ignore mktag <my-tag-with-headers
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-------
|
|
||||||
|
|
||||||
--strict::
|
|
||||||
By default mktag turns on the equivalent of
|
|
||||||
linkgit:git-fsck[1] `--strict` mode. Use `--no-strict` to
|
|
||||||
disable it.
|
|
||||||
|
|
||||||
Tag Format
|
Tag Format
|
||||||
----------
|
----------
|
||||||
A tag signature file, to be fed to this command's standard input,
|
A tag signature file, to be fed to this command's standard input,
|
||||||
|
@ -9,8 +9,7 @@ git-multi-pack-index - Write and verify multi-pack-indexes
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git multi-pack-index' [--object-dir=<dir>] [--[no-]progress]
|
'git multi-pack-index' [--object-dir=<dir>] [--[no-]progress] <subcommand>
|
||||||
[--preferred-pack=<pack>] <subcommand>
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -31,16 +30,7 @@ OPTIONS
|
|||||||
The following subcommands are available:
|
The following subcommands are available:
|
||||||
|
|
||||||
write::
|
write::
|
||||||
Write a new MIDX file. The following options are available for
|
Write a new MIDX file.
|
||||||
the `write` sub-command:
|
|
||||||
+
|
|
||||||
--
|
|
||||||
--preferred-pack=<pack>::
|
|
||||||
Optionally specify the tie-breaking pack used when
|
|
||||||
multiple packs contain the same object. If not given,
|
|
||||||
ties are broken in favor of the pack with the lowest
|
|
||||||
mtime.
|
|
||||||
--
|
|
||||||
|
|
||||||
verify::
|
verify::
|
||||||
Verify the contents of the MIDX file.
|
Verify the contents of the MIDX file.
|
||||||
|
@ -762,7 +762,3 @@ IMPLEMENTATION DETAILS
|
|||||||
message indicating the p4 depot location and change number. This
|
message indicating the p4 depot location and change number. This
|
||||||
line is used by later 'git p4 sync' operations to know which p4
|
line is used by later 'git p4 sync' operations to know which p4
|
||||||
changes are new.
|
changes are new.
|
||||||
|
|
||||||
GIT
|
|
||||||
---
|
|
||||||
Part of the linkgit:git[1] suite
|
|
||||||
|
@ -85,16 +85,6 @@ base-name::
|
|||||||
reference was included in the resulting packfile. This
|
reference was included in the resulting packfile. This
|
||||||
can be useful to send new tags to native Git clients.
|
can be useful to send new tags to native Git clients.
|
||||||
|
|
||||||
--stdin-packs::
|
|
||||||
Read the basenames of packfiles (e.g., `pack-1234abcd.pack`)
|
|
||||||
from the standard input, instead of object names or revision
|
|
||||||
arguments. The resulting pack contains all objects listed in the
|
|
||||||
included packs (those not beginning with `^`), excluding any
|
|
||||||
objects listed in the excluded packs (beginning with `^`).
|
|
||||||
+
|
|
||||||
Incompatible with `--revs`, or options that imply `--revs` (such as
|
|
||||||
`--all`), with the exception of `--unpacked`, which is compatible.
|
|
||||||
|
|
||||||
--window=<n>::
|
--window=<n>::
|
||||||
--depth=<n>::
|
--depth=<n>::
|
||||||
These two options affect how the objects contained in
|
These two options affect how the objects contained in
|
||||||
@ -128,10 +118,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
|
||||||
@ -120,7 +117,7 @@ When set to `preserve` (deprecated in favor of `merges`), rebase with the
|
|||||||
`--preserve-merges` option passed to `git rebase` so that locally created
|
`--preserve-merges` option passed to `git rebase` so that locally created
|
||||||
merge commits will not be flattened.
|
merge commits will not be flattened.
|
||||||
+
|
+
|
||||||
When false, merge the upstream branch into the current branch.
|
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.
|
||||||
+
|
+
|
||||||
@ -135,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
|
||||||
@ -600,7 +600,7 @@ EXAMPLES
|
|||||||
|
|
||||||
`git push origin`::
|
`git push origin`::
|
||||||
Without additional configuration, pushes the current branch to
|
Without additional configuration, pushes the current branch to
|
||||||
the configured upstream (`branch.<name>.merge` configuration
|
the configured upstream (`remote.origin.merge` configuration
|
||||||
variable) if it has the same name as the current branch, and
|
variable) if it has the same name as the current branch, and
|
||||||
errors out without pushing otherwise.
|
errors out without pushing otherwise.
|
||||||
+
|
+
|
||||||
|
@ -200,6 +200,12 @@ Alternatively, you can undo the 'git rebase' with
|
|||||||
|
|
||||||
git rebase --abort
|
git rebase --abort
|
||||||
|
|
||||||
|
CONFIGURATION
|
||||||
|
-------------
|
||||||
|
|
||||||
|
include::config/rebase.txt[]
|
||||||
|
include::config/sequencer.txt[]
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
--onto <newbase>::
|
--onto <newbase>::
|
||||||
@ -340,7 +346,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
|
||||||
@ -352,8 +360,9 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
|
|
||||||
-s <strategy>::
|
-s <strategy>::
|
||||||
--strategy=<strategy>::
|
--strategy=<strategy>::
|
||||||
Use the given merge strategy, instead of the default
|
Use the given merge strategy.
|
||||||
`recursive`. 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
|
||||||
@ -527,7 +536,7 @@ The `--rebase-merges` mode is similar in spirit to the deprecated
|
|||||||
where commits can be reordered, inserted and dropped at will.
|
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
|
||||||
`recursive` 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.
|
||||||
@ -584,17 +593,16 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
|
|
||||||
--autosquash::
|
--autosquash::
|
||||||
--no-autosquash::
|
--no-autosquash::
|
||||||
When the commit log message begins with "squash! ..." or "fixup! ..."
|
When the commit log message begins with "squash! ..." (or
|
||||||
or "amend! ...", and there is already a commit in the todo list that
|
"fixup! ..."), and there is already a commit in the todo list that
|
||||||
matches the same `...`, automatically modify the todo list of
|
matches the same `...`, automatically modify the todo list of rebase
|
||||||
`rebase -i`, so that the commit marked for squashing comes right after
|
-i so that the commit marked for squashing comes right after the
|
||||||
the commit to be modified, and change the action of the moved commit
|
commit to be modified, and change the action of the moved commit
|
||||||
from `pick` to `squash` or `fixup` or `fixup -C` respectively. A commit
|
from `pick` to `squash` (or `fixup`). A commit matches the `...` if
|
||||||
matches the `...` if the commit subject matches, or if the `...` refers
|
the commit subject matches, or if the `...` refers to the commit's
|
||||||
to the commit's hash. As a fall-back, partial matches of the commit
|
hash. As a fall-back, partial matches of the commit subject work,
|
||||||
subject work, too. The recommended way to create fixup/amend/squash
|
too. The recommended way to create fixup/squash commits is by using
|
||||||
commits is by using the `--fixup`, `--fixup=amend:` or `--fixup=reword:`
|
the `--fixup`/`--squash` options of linkgit:git-commit[1].
|
||||||
and `--squash` options respectively of linkgit:git-commit[1].
|
|
||||||
+
|
+
|
||||||
If the `--autosquash` option is enabled by default using the
|
If the `--autosquash` option is enabled by default using the
|
||||||
configuration variable `rebase.autoSquash`, this option can be
|
configuration variable `rebase.autoSquash`, this option can be
|
||||||
@ -614,14 +622,6 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
--no-reschedule-failed-exec::
|
--no-reschedule-failed-exec::
|
||||||
Automatically reschedule `exec` commands that failed. This only makes
|
Automatically reschedule `exec` commands that failed. This only makes
|
||||||
sense in interactive mode (or when an `--exec` option was provided).
|
sense in interactive mode (or when an `--exec` option was provided).
|
||||||
+
|
|
||||||
Even though this option applies once a rebase is started, it's set for
|
|
||||||
the whole rebase at the start based on either the
|
|
||||||
`rebase.rescheduleFailedExec` configuration (see linkgit:git-config[1]
|
|
||||||
or "CONFIGURATION" below) or whether this option is
|
|
||||||
provided. Otherwise an explicit `--no-reschedule-failed-exec` at the
|
|
||||||
start would be overridden by the presence of
|
|
||||||
`rebase.rescheduleFailedExec=true` configuration.
|
|
||||||
|
|
||||||
INCOMPATIBLE OPTIONS
|
INCOMPATIBLE OPTIONS
|
||||||
--------------------
|
--------------------
|
||||||
@ -887,17 +887,9 @@ If you want to fold two or more commits into one, replace the command
|
|||||||
"pick" for the second and subsequent commits with "squash" or "fixup".
|
"pick" for the second and subsequent commits with "squash" or "fixup".
|
||||||
If the commits had different authors, the folded commit will be
|
If the commits had different authors, the folded commit will be
|
||||||
attributed to the author of the first commit. The suggested commit
|
attributed to the author of the first commit. The suggested commit
|
||||||
message for the folded commit is the concatenation of the first
|
message for the folded commit is the concatenation of the commit
|
||||||
commit's message with those identified by "squash" commands, omitting the
|
messages of the first commit and of those with the "squash" command,
|
||||||
messages of commits identified by "fixup" commands, unless "fixup -c"
|
but omits the commit messages of commits with the "fixup" command.
|
||||||
is used. In that case the suggested commit message is only the message
|
|
||||||
of the "fixup -c" commit, and an editor is opened allowing you to edit
|
|
||||||
the message. The contents (patch) of the "fixup -c" commit are still
|
|
||||||
incorporated into the folded commit. If there is more than one "fixup -c"
|
|
||||||
commit, the message from the final one is used. You can also use
|
|
||||||
"fixup -C" to get the same behavior as "fixup -c" except without opening
|
|
||||||
an editor.
|
|
||||||
|
|
||||||
|
|
||||||
'git rebase' will stop when "pick" has been replaced with "edit" or
|
'git rebase' will stop when "pick" has been replaced with "edit" or
|
||||||
when a command fails due to merge errors. When you are done editing
|
when a command fails due to merge errors. When you are done editing
|
||||||
@ -1216,16 +1208,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 `recursive` merge
|
At this time, the `merge` command will *always* use the `recursive`
|
||||||
strategy for regular merges, and `octopus` for octopus merges. One
|
merge strategy for regular merges, and `octopus` for octopus merges,
|
||||||
can specify a default strategy for all merges using the `--strategy`
|
with no way to choose a different one. To work around
|
||||||
argument when invoking rebase, or can override specific merges in the
|
this, an `exec` command can be used to call `git merge` explicitly,
|
||||||
interactive list of commands by using an `exec` command to call `git
|
using the fact that the labels are worktree-local refs (the ref
|
||||||
merge` explicitly with a `--strategy` argument. Note that when
|
`refs/rewritten/onto` would correspond to the label `onto`, for example).
|
||||||
calling `git 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
|
||||||
@ -1269,12 +1257,6 @@ merge tlsv1.3
|
|||||||
merge cmake
|
merge cmake
|
||||||
------------
|
------------
|
||||||
|
|
||||||
CONFIGURATION
|
|
||||||
-------------
|
|
||||||
|
|
||||||
include::config/rebase.txt[]
|
|
||||||
include::config/sequencer.txt[]
|
|
||||||
|
|
||||||
BUGS
|
BUGS
|
||||||
----
|
----
|
||||||
The todo list presented by the deprecated `--preserve-merges --interactive`
|
The todo list presented by the deprecated `--preserve-merges --interactive`
|
||||||
|
@ -121,9 +121,7 @@ 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::
|
||||||
@ -167,29 +165,6 @@ depth is 4095.
|
|||||||
Pass the `--delta-islands` option to `git-pack-objects`, see
|
Pass the `--delta-islands` option to `git-pack-objects`, see
|
||||||
linkgit:git-pack-objects[1].
|
linkgit:git-pack-objects[1].
|
||||||
|
|
||||||
-g=<factor>::
|
|
||||||
--geometric=<factor>::
|
|
||||||
Arrange resulting pack structure so that each successive pack
|
|
||||||
contains at least `<factor>` times the number of objects as the
|
|
||||||
next-largest pack.
|
|
||||||
+
|
|
||||||
`git repack` ensures this by determining a "cut" of packfiles that need
|
|
||||||
to be repacked into one in order to ensure a geometric progression. It
|
|
||||||
picks the smallest set of packfiles such that as many of the larger
|
|
||||||
packfiles (by count of objects contained in that pack) may be left
|
|
||||||
intact.
|
|
||||||
+
|
|
||||||
Unlike other repack modes, the set of objects to pack is determined
|
|
||||||
uniquely by the set of packs being "rolled-up"; in other words, the
|
|
||||||
packs determined to need to be combined in order to restore a geometric
|
|
||||||
progression.
|
|
||||||
+
|
|
||||||
When `--unpacked` is specified, loose objects are implicitly included in
|
|
||||||
this "roll-up", without respect to their reachability. This is subject
|
|
||||||
to change in the future. This option (implying a drastically different
|
|
||||||
repack mode) is not guaranteed to work with all other combinations of
|
|
||||||
option to `git repack`.
|
|
||||||
|
|
||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
@ -23,9 +23,7 @@ branch, and no updates to their contents can be staged in the index,
|
|||||||
though that default behavior can be overridden with the `-f` option.
|
though that default behavior can be overridden with the `-f` option.
|
||||||
When `--cached` is given, the staged content has to
|
When `--cached` is given, the staged content has to
|
||||||
match either the tip of the branch or the file on disk,
|
match either the tip of the branch or the file on disk,
|
||||||
allowing the file to be removed from just the index. When
|
allowing the file to be removed from just the index.
|
||||||
sparse-checkouts are in use (see linkgit:git-sparse-checkout[1]),
|
|
||||||
`git rm` will only remove paths within the sparse-checkout patterns.
|
|
||||||
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
|
@ -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
|
||||||
|
@ -45,20 +45,6 @@ To avoid interfering with other worktrees, it first enables the
|
|||||||
When `--cone` is provided, the `core.sparseCheckoutCone` setting is
|
When `--cone` is provided, the `core.sparseCheckoutCone` setting is
|
||||||
also set, allowing for better performance with a limited set of
|
also set, allowing for better performance with a limited set of
|
||||||
patterns (see 'CONE PATTERN SET' below).
|
patterns (see 'CONE PATTERN SET' below).
|
||||||
+
|
|
||||||
Use the `--[no-]sparse-index` option to toggle the use of the sparse
|
|
||||||
index format. This reduces the size of the index to be more closely
|
|
||||||
aligned with your sparse-checkout definition. This can have significant
|
|
||||||
performance advantages for commands such as `git status` or `git add`.
|
|
||||||
This feature is still experimental. Some commands might be slower with
|
|
||||||
a sparse index until they are properly integrated with the feature.
|
|
||||||
+
|
|
||||||
**WARNING:** Using a sparse index requires modifying the index in a way
|
|
||||||
that is not completely understood by external tools. If you have trouble
|
|
||||||
with this compatibility, then run `git sparse-checkout init --no-sparse-index`
|
|
||||||
to rewrite your index to not be sparse. Older versions of Git will not
|
|
||||||
understand the sparse directory entries index extension and may fail to
|
|
||||||
interact with your repository until it is disabled.
|
|
||||||
|
|
||||||
'set'::
|
'set'::
|
||||||
Write a set of patterns to the sparse-checkout file, as given as
|
Write a set of patterns to the sparse-checkout file, as given as
|
||||||
|
@ -9,7 +9,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git stash' list [<log-options>]
|
'git stash' list [<log-options>]
|
||||||
'git stash' show [-u|--include-untracked|--only-untracked] [<diff-options>] [<stash>]
|
'git stash' show [<diff-options>] [<stash>]
|
||||||
'git stash' drop [-q|--quiet] [<stash>]
|
'git stash' drop [-q|--quiet] [<stash>]
|
||||||
'git stash' ( pop | apply ) [--index] [-q|--quiet] [<stash>]
|
'git stash' ( pop | apply ) [--index] [-q|--quiet] [<stash>]
|
||||||
'git stash' branch <branchname> [<stash>]
|
'git stash' branch <branchname> [<stash>]
|
||||||
@ -83,7 +83,7 @@ stash@{1}: On master: 9cc0589... Add git-stash
|
|||||||
The command takes options applicable to the 'git log'
|
The command takes options applicable to the 'git log'
|
||||||
command to control what is shown and how. See linkgit:git-log[1].
|
command to control what is shown and how. See linkgit:git-log[1].
|
||||||
|
|
||||||
show [-u|--include-untracked|--only-untracked] [<diff-options>] [<stash>]::
|
show [<diff-options>] [<stash>]::
|
||||||
|
|
||||||
Show the changes recorded in the stash entry as a diff between the
|
Show the changes recorded in the stash entry as a diff between the
|
||||||
stashed contents and the commit back when the stash entry was first
|
stashed contents and the commit back when the stash entry was first
|
||||||
@ -91,10 +91,8 @@ show [-u|--include-untracked|--only-untracked] [<diff-options>] [<stash>]::
|
|||||||
By default, the command shows the diffstat, but it will accept any
|
By default, the command shows the diffstat, but it will accept any
|
||||||
format known to 'git diff' (e.g., `git stash show -p stash@{1}`
|
format known to 'git diff' (e.g., `git stash show -p stash@{1}`
|
||||||
to view the second most recent entry in patch form).
|
to view the second most recent entry in patch form).
|
||||||
If no `<diff-option>` is provided, the default behavior will be given
|
You can use stash.showStat and/or stash.showPatch config variables
|
||||||
by the `stash.showStat`, and `stash.showPatch` config variables. You
|
to change the default behavior.
|
||||||
can also use `stash.showIncludeUntracked` to set whether
|
|
||||||
`--include-untracked` is enabled by default.
|
|
||||||
|
|
||||||
pop [--index] [-q|--quiet] [<stash>]::
|
pop [--index] [-q|--quiet] [<stash>]::
|
||||||
|
|
||||||
@ -162,18 +160,10 @@ up with `git clean`.
|
|||||||
|
|
||||||
-u::
|
-u::
|
||||||
--include-untracked::
|
--include-untracked::
|
||||||
--no-include-untracked::
|
This option is only valid for `push` and `save` commands.
|
||||||
When used with the `push` and `save` commands,
|
|
||||||
all untracked files are also stashed and then cleaned up with
|
|
||||||
`git clean`.
|
|
||||||
+
|
+
|
||||||
When used with the `show` command, show the untracked files in the stash
|
All untracked files are also stashed and then cleaned up with
|
||||||
entry as part of the diff.
|
`git clean`.
|
||||||
|
|
||||||
--only-untracked::
|
|
||||||
This option is only valid for the `show` command.
|
|
||||||
+
|
|
||||||
Show only the untracked files in the stash entry as part of the diff.
|
|
||||||
|
|
||||||
--index::
|
--index::
|
||||||
This option is only valid for `pop` and `apply` commands.
|
This option is only valid for `pop` and `apply` commands.
|
||||||
|
@ -1061,6 +1061,25 @@ with different name spaces. For example:
|
|||||||
branches = stable/*:refs/remotes/svn/stable/*
|
branches = stable/*:refs/remotes/svn/stable/*
|
||||||
branches = debug/*:refs/remotes/svn/debug/*
|
branches = debug/*:refs/remotes/svn/debug/*
|
||||||
|
|
||||||
|
BUGS
|
||||||
|
----
|
||||||
|
|
||||||
|
We ignore all SVN properties except svn:executable. Any unhandled
|
||||||
|
properties are logged to $GIT_DIR/svn/<refname>/unhandled.log
|
||||||
|
|
||||||
|
Renamed and copied directories are not detected by Git and hence not
|
||||||
|
tracked when committing to SVN. I do not plan on adding support for
|
||||||
|
this as it's quite difficult and time-consuming to get working for all
|
||||||
|
the possible corner cases (Git doesn't do it, either). Committing
|
||||||
|
renamed and copied files is fully supported if they're similar enough
|
||||||
|
for Git to detect them.
|
||||||
|
|
||||||
|
In SVN, it is possible (though discouraged) to commit changes to a tag
|
||||||
|
(because a tag is just a directory copy, thus technically the same as a
|
||||||
|
branch). When cloning an SVN repository, 'git svn' cannot know if such a
|
||||||
|
commit to a tag will happen in the future. Thus it acts conservatively
|
||||||
|
and imports all SVN tags as branches, prefixing the tag name with 'tags/'.
|
||||||
|
|
||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
@ -1147,25 +1166,6 @@ $GIT_DIR/svn/\**/.rev_map.*::
|
|||||||
if it is missing or not up to date. 'git svn reset' automatically
|
if it is missing or not up to date. 'git svn reset' automatically
|
||||||
rewinds it.
|
rewinds it.
|
||||||
|
|
||||||
BUGS
|
|
||||||
----
|
|
||||||
|
|
||||||
We ignore all SVN properties except svn:executable. Any unhandled
|
|
||||||
properties are logged to $GIT_DIR/svn/<refname>/unhandled.log
|
|
||||||
|
|
||||||
Renamed and copied directories are not detected by Git and hence not
|
|
||||||
tracked when committing to SVN. I do not plan on adding support for
|
|
||||||
this as it's quite difficult and time-consuming to get working for all
|
|
||||||
the possible corner cases (Git doesn't do it, either). Committing
|
|
||||||
renamed and copied files is fully supported if they're similar enough
|
|
||||||
for Git to detect them.
|
|
||||||
|
|
||||||
In SVN, it is possible (though discouraged) to commit changes to a tag
|
|
||||||
(because a tag is just a directory copy, thus technically the same as a
|
|
||||||
branch). When cloning an SVN repository, 'git svn' cannot know if such a
|
|
||||||
commit to a tag will happen in the future. Thus it acts conservatively
|
|
||||||
and imports all SVN tags as branches, prefixing the tag name with 'tags/'.
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
linkgit:git-rebase[1]
|
linkgit:git-rebase[1]
|
||||||
|
@ -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
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ SYNOPSIS
|
|||||||
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
|
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
|
||||||
[-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
|
[-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
|
||||||
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
|
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
|
||||||
[--super-prefix=<path>] [--config-env=<name>=<envvar>]
|
[--super-prefix=<path>] [--config-env <name>=<envvar>]
|
||||||
<command> [<args>]
|
<command> [<args>]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -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
|
||||||
@ -674,16 +670,6 @@ for further details.
|
|||||||
If this environment variable is set to `0`, git will not prompt
|
If this environment variable is set to `0`, git will not prompt
|
||||||
on the terminal (e.g., when asking for HTTP authentication).
|
on the terminal (e.g., when asking for HTTP authentication).
|
||||||
|
|
||||||
`GIT_CONFIG_GLOBAL`::
|
|
||||||
`GIT_CONFIG_SYSTEM`::
|
|
||||||
Take the configuration from the given files instead from global or
|
|
||||||
system-level configuration files. If `GIT_CONFIG_SYSTEM` is set, the
|
|
||||||
system config file defined at build time (usually `/etc/gitconfig`)
|
|
||||||
will not be read. Likewise, if `GIT_CONFIG_GLOBAL` is set, neither
|
|
||||||
`$HOME/.gitconfig` nor `$XDG_CONFIG_HOME/git/config` will be read. Can
|
|
||||||
be set to `/dev/null` to skip reading configuration files of the
|
|
||||||
respective level.
|
|
||||||
|
|
||||||
`GIT_CONFIG_NOSYSTEM`::
|
`GIT_CONFIG_NOSYSTEM`::
|
||||||
Whether to skip reading settings from the system-wide
|
Whether to skip reading settings from the system-wide
|
||||||
`$(prefix)/etc/gitconfig` file. This environment variable can
|
`$(prefix)/etc/gitconfig` file. This environment variable can
|
||||||
|
@ -845,8 +845,6 @@ patterns are available:
|
|||||||
|
|
||||||
- `rust` suitable for source code in the Rust language.
|
- `rust` suitable for source code in the Rust language.
|
||||||
|
|
||||||
- `scheme` suitable for source code in the Scheme language.
|
|
||||||
|
|
||||||
- `tex` suitable for source code for LaTeX documents.
|
- `tex` suitable for source code for LaTeX documents.
|
||||||
|
|
||||||
|
|
||||||
@ -1176,8 +1174,7 @@ tag then no replacement will be done. The placeholders are the same
|
|||||||
as those for the option `--pretty=format:` of linkgit:git-log[1],
|
as those for the option `--pretty=format:` of linkgit:git-log[1],
|
||||||
except that they need to be wrapped like this: `$Format:PLACEHOLDERS$`
|
except that they need to be wrapped like this: `$Format:PLACEHOLDERS$`
|
||||||
in the file. E.g. the string `$Format:%H$` will be replaced by the
|
in the file. E.g. the string `$Format:%H$` will be replaced by the
|
||||||
commit hash. However, only one `%(describe)` placeholder is expanded
|
commit hash.
|
||||||
per archive to avoid denial-of-service attacks.
|
|
||||||
|
|
||||||
|
|
||||||
Packing objects
|
Packing objects
|
||||||
@ -1247,12 +1244,6 @@ to:
|
|||||||
[attr]binary -diff -merge -text
|
[attr]binary -diff -merge -text
|
||||||
------------
|
------------
|
||||||
|
|
||||||
NOTES
|
|
||||||
-----
|
|
||||||
|
|
||||||
Git does not follow symbolic links when accessing a `.gitattributes`
|
|
||||||
file in the working tree. This keeps behavior consistent when the file
|
|
||||||
is accessed from the index or a tree versus from the filesystem.
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
@ -187,7 +187,7 @@ mark a file pair as a rename and stop considering other candidates for
|
|||||||
better matches. At most, one comparison is done per file in this
|
better matches. At most, one comparison is done per file in this
|
||||||
preliminary pass; so if there are several remaining ext.txt files
|
preliminary pass; so if there are several remaining ext.txt files
|
||||||
throughout the directory hierarchy after exact rename detection, this
|
throughout the directory hierarchy after exact rename detection, this
|
||||||
preliminary step may be skipped for those files.
|
preliminary step will be skipped for those files.
|
||||||
|
|
||||||
Note. When the "-C" option is used with `--find-copies-harder`
|
Note. When the "-C" option is used with `--find-copies-harder`
|
||||||
option, 'git diff-{asterisk}' commands feed unmodified filepairs to
|
option, 'git diff-{asterisk}' commands feed unmodified filepairs to
|
||||||
|
@ -138,7 +138,7 @@ given); `template` (if a `-t` option was given or the
|
|||||||
configuration option `commit.template` is set); `merge` (if the
|
configuration option `commit.template` is set); `merge` (if the
|
||||||
commit is a merge or a `.git/MERGE_MSG` file exists); `squash`
|
commit is a merge or a `.git/MERGE_MSG` file exists); `squash`
|
||||||
(if a `.git/SQUASH_MSG` file exists); or `commit`, followed by
|
(if a `.git/SQUASH_MSG` file exists); or `commit`, followed by
|
||||||
a commit object name (if a `-c`, `-C` or `--amend` option was given).
|
a commit SHA-1 (if a `-c`, `-C` or `--amend` option was given).
|
||||||
|
|
||||||
If the exit status is non-zero, `git commit` will abort.
|
If the exit status is non-zero, `git commit` will abort.
|
||||||
|
|
||||||
@ -231,19 +231,19 @@ named remote is not being used both values will be the same.
|
|||||||
Information about what is to be pushed is provided on the hook's standard
|
Information about what is to be pushed is provided on the hook's standard
|
||||||
input with lines of the form:
|
input with lines of the form:
|
||||||
|
|
||||||
<local ref> SP <local object name> SP <remote ref> SP <remote object name> LF
|
<local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF
|
||||||
|
|
||||||
For instance, if the command +git push origin master:foreign+ were run the
|
For instance, if the command +git push origin master:foreign+ were run the
|
||||||
hook would receive a line like the following:
|
hook would receive a line like the following:
|
||||||
|
|
||||||
refs/heads/master 67890 refs/heads/foreign 12345
|
refs/heads/master 67890 refs/heads/foreign 12345
|
||||||
|
|
||||||
although the full object name would be supplied. If the foreign ref does not
|
although the full, 40-character SHA-1s would be supplied. If the foreign ref
|
||||||
yet exist the `<remote object name>` will be the all-zeroes object name. If a
|
does not yet exist the `<remote SHA-1>` will be 40 `0`. If a ref is to be
|
||||||
ref is to be deleted, the `<local ref>` will be supplied as `(delete)` and the
|
deleted, the `<local ref>` will be supplied as `(delete)` and the `<local
|
||||||
`<local object name>` will be the all-zeroes object name. If the local commit
|
SHA-1>` will be 40 `0`. If the local commit was specified by something other
|
||||||
was specified by something other than a name which could be expanded (such as
|
than a name which could be expanded (such as `HEAD~`, or a SHA-1) it will be
|
||||||
`HEAD~`, or an object name) it will be supplied as it was originally given.
|
supplied as it was originally given.
|
||||||
|
|
||||||
If this hook exits with a non-zero status, `git push` will abort without
|
If this hook exits with a non-zero status, `git push` will abort without
|
||||||
pushing anything. Information about why the push is rejected may be sent
|
pushing anything. Information about why the push is rejected may be sent
|
||||||
@ -268,7 +268,7 @@ input a line of the format:
|
|||||||
where `<old-value>` is the old object name stored in the ref,
|
where `<old-value>` is the old object name stored in the ref,
|
||||||
`<new-value>` is the new object name to be stored in the ref and
|
`<new-value>` is the new object name to be stored in the ref and
|
||||||
`<ref-name>` is the full name of the ref.
|
`<ref-name>` is the full name of the ref.
|
||||||
When creating a new ref, `<old-value>` is the all-zeroes object name.
|
When creating a new ref, `<old-value>` is 40 `0`.
|
||||||
|
|
||||||
If the hook exits with non-zero status, none of the refs will be
|
If the hook exits with non-zero status, none of the refs will be
|
||||||
updated. If the hook exits with zero, updating of individual refs can
|
updated. If the hook exits with zero, updating of individual refs can
|
||||||
@ -473,8 +473,7 @@ reference-transaction
|
|||||||
|
|
||||||
This hook is invoked by any Git command that performs reference
|
This hook is invoked by any Git command that performs reference
|
||||||
updates. It executes whenever a reference transaction is prepared,
|
updates. It executes whenever a reference transaction is prepared,
|
||||||
committed or aborted and may thus get called multiple times. The hook
|
committed or aborted and may thus get called multiple times.
|
||||||
does not cover symbolic references (but that may change in the future).
|
|
||||||
|
|
||||||
The hook takes exactly one argument, which is the current state the
|
The hook takes exactly one argument, which is the current state the
|
||||||
given reference transaction is in:
|
given reference transaction is in:
|
||||||
@ -493,14 +492,6 @@ receives on standard input a line of the format:
|
|||||||
|
|
||||||
<old-value> SP <new-value> SP <ref-name> LF
|
<old-value> SP <new-value> SP <ref-name> LF
|
||||||
|
|
||||||
where `<old-value>` is the old object name passed into the reference
|
|
||||||
transaction, `<new-value>` is the new object name to be stored in the
|
|
||||||
ref and `<ref-name>` is the full name of the ref. When force updating
|
|
||||||
the reference regardless of its current value or when the reference is
|
|
||||||
to be created anew, `<old-value>` is the all-zeroes object name. To
|
|
||||||
distinguish these cases, you can inspect the current value of
|
|
||||||
`<ref-name>` via `git rev-parse`.
|
|
||||||
|
|
||||||
The exit status of the hook is ignored for any state except for the
|
The exit status of the hook is ignored for any state except for the
|
||||||
"prepared" state. In the "prepared" state, a non-zero exit status will
|
"prepared" state. In the "prepared" state, a non-zero exit status will
|
||||||
cause the transaction to be aborted. The hook will not be called with
|
cause the transaction to be aborted. The hook will not be called with
|
||||||
@ -559,7 +550,7 @@ command-dependent arguments may be passed in the future.
|
|||||||
The hook receives a list of the rewritten commits on stdin, in the
|
The hook receives a list of the rewritten commits on stdin, in the
|
||||||
format
|
format
|
||||||
|
|
||||||
<old-object-name> SP <new-object-name> [ SP <extra-info> ] LF
|
<old-sha1> SP <new-sha1> [ SP <extra-info> ] LF
|
||||||
|
|
||||||
The 'extra-info' is again command-dependent. If it is empty, the
|
The 'extra-info' is again command-dependent. If it is empty, the
|
||||||
preceding SP is also omitted. Currently, no commands pass any
|
preceding SP is also omitted. Currently, no commands pass any
|
||||||
@ -575,7 +566,7 @@ rebase::
|
|||||||
For the 'squash' and 'fixup' operation, all commits that were
|
For the 'squash' and 'fixup' operation, all commits that were
|
||||||
squashed are listed as being rewritten to the squashed commit.
|
squashed are listed as being rewritten to the squashed commit.
|
||||||
This means that there will be several lines sharing the same
|
This means that there will be several lines sharing the same
|
||||||
'new-object-name'.
|
'new-sha1'.
|
||||||
+
|
+
|
||||||
The commits are guaranteed to be listed in the order that they were
|
The commits are guaranteed to be listed in the order that they were
|
||||||
processed by rebase.
|
processed by rebase.
|
||||||
|
@ -27,11 +27,12 @@ precedence, the last matching pattern decides the outcome):
|
|||||||
them.
|
them.
|
||||||
|
|
||||||
* Patterns read from a `.gitignore` file in the same directory
|
* Patterns read from a `.gitignore` file in the same directory
|
||||||
as the path, or in any parent directory (up to the top-level of the working
|
as the path, or in any parent directory, with patterns in the
|
||||||
tree), with patterns in the higher level files being overridden by those in
|
higher level files (up to the toplevel of the work tree) being overridden
|
||||||
lower level files down to the directory containing the file. These patterns
|
by those in lower level files down to the directory containing the file.
|
||||||
match relative to the location of the `.gitignore` file. A project normally
|
These patterns match relative to the location of the
|
||||||
includes such `.gitignore` files in its repository, containing patterns for
|
`.gitignore` file. A project normally includes such
|
||||||
|
`.gitignore` files in its repository, containing patterns for
|
||||||
files generated as part of the project build.
|
files generated as part of the project build.
|
||||||
|
|
||||||
* Patterns read from `$GIT_DIR/info/exclude`.
|
* Patterns read from `$GIT_DIR/info/exclude`.
|
||||||
@ -148,15 +149,11 @@ not tracked by Git remain untracked.
|
|||||||
To stop tracking a file that is currently tracked, use
|
To stop tracking a file that is currently tracked, use
|
||||||
'git rm --cached'.
|
'git rm --cached'.
|
||||||
|
|
||||||
Git does not follow symbolic links when accessing a `.gitignore` file in
|
|
||||||
the working tree. This keeps behavior consistent when the file is
|
|
||||||
accessed from the index or a tree versus from the filesystem.
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
||||||
- The pattern `hello.*` matches any file or folder
|
- The pattern `hello.*` matches any file or folder
|
||||||
whose name begins with `hello.`. If one wants to restrict
|
whose name begins with `hello`. If one wants to restrict
|
||||||
this only to the directory and not in its subdirectories,
|
this only to the directory and not in its subdirectories,
|
||||||
one can prepend the pattern with a slash, i.e. `/hello.*`;
|
one can prepend the pattern with a slash, i.e. `/hello.*`;
|
||||||
the pattern now matches `hello.txt`, `hello.c` but not
|
the pattern now matches `hello.txt`, `hello.c` but not
|
||||||
|
@ -55,13 +55,6 @@ this would also match the 'Commit Name <commit@email.xx>' above:
|
|||||||
Proper Name <proper@email.xx> CoMmIt NaMe <CoMmIt@EmAiL.xX>
|
Proper Name <proper@email.xx> CoMmIt NaMe <CoMmIt@EmAiL.xX>
|
||||||
--
|
--
|
||||||
|
|
||||||
NOTES
|
|
||||||
-----
|
|
||||||
|
|
||||||
Git does not follow symbolic links when accessing a `.mailmap` file in
|
|
||||||
the working tree. This keeps behavior consistent when the file is
|
|
||||||
accessed from the index or a tree versus from the filesystem.
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -98,14 +98,6 @@ submodule.<name>.shallow::
|
|||||||
shallow clone (with a history depth of 1) unless the user explicitly
|
shallow clone (with a history depth of 1) unless the user explicitly
|
||||||
asks for a non-shallow clone.
|
asks for a non-shallow clone.
|
||||||
|
|
||||||
NOTES
|
|
||||||
-----
|
|
||||||
|
|
||||||
Git does not allow the `.gitmodules` file within a working tree to be a
|
|
||||||
symbolic link, and will refuse to check out such a tree entry. This
|
|
||||||
keeps behavior consistent when the file is accessed from the index or a
|
|
||||||
tree versus from the filesystem, and helps Git reliably enforce security
|
|
||||||
checks of the file contents.
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
@ -62,7 +62,3 @@ git clone ext::'git --namespace=foo %s /tmp/prefixed.git'
|
|||||||
----------
|
----------
|
||||||
|
|
||||||
include::transfer-data-leaks.txt[]
|
include::transfer-data-leaks.txt[]
|
||||||
|
|
||||||
GIT
|
|
||||||
---
|
|
||||||
Part of the linkgit:git[1] suite
|
|
||||||
|
@ -322,7 +322,7 @@ initiating this "pull". If Bob's work conflicts with what Alice did since
|
|||||||
their histories forked, Alice will use her working tree and the index to
|
their histories forked, Alice will use her working tree and the index to
|
||||||
resolve conflicts, and existing local changes will interfere with the
|
resolve conflicts, and existing local changes will interfere with the
|
||||||
conflict resolution process (Git will still perform the fetch but will
|
conflict resolution process (Git will still perform the fetch but will
|
||||||
refuse to merge -- Alice will have to get rid of her local changes in
|
refuse to merge --- Alice will have to get rid of her local changes in
|
||||||
some way and pull again when this happens).
|
some way and pull again when this happens).
|
||||||
|
|
||||||
Alice can peek at what Bob did without merging first, using the "fetch"
|
Alice can peek at what Bob did without merging first, using the "fetch"
|
||||||
|
@ -751,17 +751,6 @@ default font sizes or lineheights are changed (e.g. via adding extra
|
|||||||
CSS stylesheet in `@stylesheets`), it may be appropriate to change
|
CSS stylesheet in `@stylesheets`), it may be appropriate to change
|
||||||
these values.
|
these values.
|
||||||
|
|
||||||
email-privacy::
|
|
||||||
Redact e-mail addresses from the generated HTML, etc. content.
|
|
||||||
This obscures e-mail addresses retrieved from the author/committer
|
|
||||||
and comment sections of the Git log.
|
|
||||||
It is meant to hinder web crawlers that harvest and abuse addresses.
|
|
||||||
Such crawlers may not respect robots.txt.
|
|
||||||
Note that users and user tools also see the addresses as redacted.
|
|
||||||
If Gitweb is not the final step in a workflow then subsequent steps
|
|
||||||
may misbehave because of the redacted information they receive.
|
|
||||||
Disabled by default.
|
|
||||||
|
|
||||||
highlight::
|
highlight::
|
||||||
Server-side syntax highlight support in "blob" view. It requires
|
Server-side syntax highlight support in "blob" view. It requires
|
||||||
`$highlight_bin` program to be available (see the description of
|
`$highlight_bin` program to be available (see the description of
|
||||||
|
@ -146,8 +146,8 @@ current branch integrates with) obviously do not work, as there is no
|
|||||||
<<def_revision,revision>> and you are "merging" another
|
<<def_revision,revision>> and you are "merging" another
|
||||||
<<def_branch,branch>>'s changes that happen to be a descendant of what
|
<<def_branch,branch>>'s changes that happen to be a descendant of what
|
||||||
you have. In such a case, you do not make a new <<def_merge,merge>>
|
you have. In such a case, you do not make a new <<def_merge,merge>>
|
||||||
<<def_commit,commit>> but instead just update your branch to point at the same
|
<<def_commit,commit>> but instead just update to his
|
||||||
revision as the branch you are merging. This will happen frequently on a
|
revision. This will happen frequently on a
|
||||||
<<def_remote_tracking_branch,remote-tracking branch>> of a remote
|
<<def_remote_tracking_branch,remote-tracking branch>> of a remote
|
||||||
<<def_repository,repository>>.
|
<<def_repository,repository>>.
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user