mirror of
https://github.com/git/git.git
synced 2026-01-12 13:53:11 +09:00
Compare commits
No commits in common. "master" and "v2.50.0" have entirely different histories.
@ -5,13 +5,11 @@ freebsd_task:
|
||||
env:
|
||||
GIT_PROVE_OPTS: "--timer --jobs 10"
|
||||
GIT_TEST_OPTS: "--no-chain-lint --no-bin-wrappers"
|
||||
GIT_SKIP_TESTS: t7815.12
|
||||
MAKEFLAGS: -j4
|
||||
MAKEFLAGS: "-j4"
|
||||
DEFAULT_TEST_TARGET: prove
|
||||
DEFAULT_UNIT_TEST_TARGET: unit-tests-prove
|
||||
DEVELOPER: 1
|
||||
freebsd_instance:
|
||||
image_family: freebsd-14-3
|
||||
image_family: freebsd-13-4
|
||||
memory: 2G
|
||||
install_script:
|
||||
pkg install -y gettext gmake perl5
|
||||
@ -21,4 +19,4 @@ freebsd_task:
|
||||
build_script:
|
||||
- su git -c gmake
|
||||
test_script:
|
||||
- su git -c 'gmake test unit-tests'
|
||||
- su git -c 'gmake DEFAULT_UNIT_TEST_TARGET=unit-tests-prove test unit-tests'
|
||||
|
||||
@ -12,15 +12,7 @@ UseTab: Always
|
||||
TabWidth: 8
|
||||
IndentWidth: 8
|
||||
ContinuationIndentWidth: 8
|
||||
|
||||
# While we do want to enforce a character limit of 80 characters, we often
|
||||
# allow lines to overflow that limit to prioritize readability. Setting a
|
||||
# character limit here with penalties has been finicky and creates too many
|
||||
# false positives.
|
||||
#
|
||||
# NEEDSWORK: It would be nice if we can find optimal settings to ensure we
|
||||
# can re-enable the limit here.
|
||||
ColumnLimit: 0
|
||||
ColumnLimit: 80
|
||||
|
||||
# C Language specifics
|
||||
Language: Cpp
|
||||
@ -149,7 +141,7 @@ SpaceBeforeCaseColon: false
|
||||
# f();
|
||||
# }
|
||||
# }
|
||||
SpaceBeforeParens: ControlStatementsExceptControlMacros
|
||||
SpaceBeforeParens: ControlStatements
|
||||
|
||||
# Don't insert spaces inside empty '()'
|
||||
SpaceInEmptyParentheses: false
|
||||
@ -218,11 +210,16 @@ MaxEmptyLinesToKeep: 1
|
||||
# No empty line at the start of a block.
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
|
||||
# Penalties
|
||||
# This decides what order things should be done if a line is too long
|
||||
PenaltyBreakAssignment: 5
|
||||
PenaltyBreakBeforeFirstCallParameter: 5
|
||||
PenaltyBreakComment: 5
|
||||
PenaltyBreakFirstLessLess: 0
|
||||
PenaltyBreakOpenParenthesis: 300
|
||||
PenaltyBreakString: 5
|
||||
PenaltyExcessCharacter: 10
|
||||
PenaltyReturnTypeOnItsOwnLine: 300
|
||||
|
||||
# Don't sort #include's
|
||||
SortIncludes: false
|
||||
|
||||
# Remove optional braces of control statements (if, else, for, and while)
|
||||
# according to the LLVM coding style. This avoids braces on simple
|
||||
# single-statement bodies of statements but keeps braces if one side of
|
||||
# if/else if/.../else cascade has multi-statement body.
|
||||
RemoveBracesLLVM: true
|
||||
|
||||
8
.gitattributes
vendored
8
.gitattributes
vendored
@ -1,13 +1,13 @@
|
||||
* whitespace=trail,space
|
||||
*.[ch] whitespace=indent,trail,space,incomplete diff=cpp
|
||||
*.sh whitespace=indent,trail,space,incomplete text eol=lf
|
||||
* whitespace=!indent,trail,space
|
||||
*.[ch] whitespace=indent,trail,space diff=cpp
|
||||
*.sh whitespace=indent,trail,space text eol=lf
|
||||
*.perl text eol=lf diff=perl
|
||||
*.pl text eof=lf diff=perl
|
||||
*.pm text eol=lf diff=perl
|
||||
*.py text eol=lf diff=python
|
||||
*.bat text eol=crlf
|
||||
CODE_OF_CONDUCT.md -whitespace
|
||||
/Documentation/**/*.adoc text eol=lf whitespace=trail,space,incomplete
|
||||
/Documentation/**/*.adoc text eol=lf
|
||||
/command-list.txt text eol=lf
|
||||
/GIT-VERSION-GEN text eol=lf
|
||||
/mergetools/* text eol=lf
|
||||
|
||||
2
.github/workflows/check-style.yml
vendored
2
.github/workflows/check-style.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
||||
jobname: ClangFormat
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
2
.github/workflows/check-whitespace.yml
vendored
2
.github/workflows/check-whitespace.yml
vendored
@ -19,7 +19,7 @@ jobs:
|
||||
check-whitespace:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
2
.github/workflows/coverity.yml
vendored
2
.github/workflows/coverity.yml
vendored
@ -38,7 +38,7 @@ jobs:
|
||||
COVERITY_LANGUAGE: cxx
|
||||
COVERITY_PLATFORM: overridden-below
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- name: install minimal Git for Windows SDK
|
||||
if: contains(matrix.os, 'windows')
|
||||
uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
|
||||
2
.github/workflows/l10n.yml
vendored
2
.github/workflows/l10n.yml
vendored
@ -63,7 +63,7 @@ jobs:
|
||||
origin \
|
||||
${{ github.ref }} \
|
||||
$args
|
||||
- uses: actions/setup-go@v6
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '>=1.16'
|
||||
cache: false
|
||||
|
||||
89
.github/workflows/main.yml
vendored
89
.github/workflows/main.yml
vendored
@ -63,7 +63,7 @@ jobs:
|
||||
echo "skip_concurrent=$skip_concurrent" >>$GITHUB_OUTPUT
|
||||
- name: skip if the commit or tree was already tested
|
||||
id: skip-if-redundant
|
||||
uses: actions/github-script@v8
|
||||
uses: actions/github-script@v7
|
||||
if: steps.check-ref.outputs.enabled == 'yes'
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
@ -112,7 +112,7 @@ jobs:
|
||||
group: windows-build-${{ github.ref }}
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: build
|
||||
shell: bash
|
||||
@ -123,7 +123,7 @@ jobs:
|
||||
- name: zip up tracked files
|
||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
||||
- name: upload tracked files and build artifacts
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-artifacts
|
||||
path: artifacts
|
||||
@ -140,7 +140,7 @@ jobs:
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- name: download tracked files and build artifacts
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: windows-artifacts
|
||||
path: ${{github.workspace}}
|
||||
@ -157,7 +157,7 @@ jobs:
|
||||
run: ci/print-test-failures.sh
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: failed-tests-windows-${{ matrix.nr }}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
@ -173,10 +173,10 @@ jobs:
|
||||
group: vs-build-${{ github.ref }}
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: initialize vcpkg
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'microsoft/vcpkg'
|
||||
path: 'compat/vcbuild/vcpkg'
|
||||
@ -208,7 +208,7 @@ jobs:
|
||||
- name: zip up tracked files
|
||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
||||
- name: upload tracked files and build artifacts
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: vs-artifacts
|
||||
path: artifacts
|
||||
@ -226,7 +226,7 @@ jobs:
|
||||
steps:
|
||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||
- name: download tracked files and build artifacts
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: vs-artifacts
|
||||
path: ${{github.workspace}}
|
||||
@ -244,7 +244,7 @@ jobs:
|
||||
run: ci/print-test-failures.sh
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: failed-tests-windows-vs-${{ matrix.nr }}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
@ -258,8 +258,8 @@ jobs:
|
||||
group: windows-meson-build-${{ github.ref }}
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-python@v6
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- name: Set up dependencies
|
||||
shell: pwsh
|
||||
run: pip install meson ninja
|
||||
@ -270,7 +270,7 @@ jobs:
|
||||
shell: pwsh
|
||||
run: meson compile -C build
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-meson-artifacts
|
||||
path: build
|
||||
@ -286,29 +286,19 @@ jobs:
|
||||
group: windows-meson-test-${{ matrix.nr }}-${{ github.ref }}
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-python@v6
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- name: Set up dependencies
|
||||
shell: pwsh
|
||||
run: pip install meson ninja
|
||||
- name: Download build artifacts
|
||||
uses: actions/download-artifact@v6
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: windows-meson-artifacts
|
||||
path: build
|
||||
- name: Test
|
||||
shell: pwsh
|
||||
run: ci/run-test-slice-meson.sh build ${{matrix.nr}} 10
|
||||
- name: print test failures
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
shell: bash
|
||||
run: ci/print-test-failures.sh
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: failed-tests-windows-meson-${{ matrix.nr }}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
run: meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % 10 } | Where-Object Name -EQ ${{ matrix.nr }} | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group }
|
||||
|
||||
regular:
|
||||
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
|
||||
@ -323,16 +313,16 @@ jobs:
|
||||
vector:
|
||||
- jobname: osx-clang
|
||||
cc: clang
|
||||
pool: macos-14
|
||||
pool: macos-13
|
||||
- jobname: osx-reftable
|
||||
cc: clang
|
||||
pool: macos-14
|
||||
pool: macos-13
|
||||
- jobname: osx-gcc
|
||||
cc: gcc-13
|
||||
pool: macos-14
|
||||
pool: macos-13
|
||||
- jobname: osx-meson
|
||||
cc: clang
|
||||
pool: macos-14
|
||||
pool: macos-13
|
||||
env:
|
||||
CC: ${{matrix.vector.cc}}
|
||||
CC_PACKAGE: ${{matrix.vector.cc_package}}
|
||||
@ -341,7 +331,7 @@ jobs:
|
||||
TEST_OUTPUT_DIRECTORY: ${{github.workspace}}/t
|
||||
runs-on: ${{matrix.vector.pool}}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/run-build-and-tests.sh
|
||||
- name: print test failures
|
||||
@ -349,7 +339,7 @@ jobs:
|
||||
run: ci/print-test-failures.sh
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: failed-tests-${{matrix.vector.jobname}}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
@ -362,7 +352,7 @@ jobs:
|
||||
CI_JOB_IMAGE: ubuntu-latest
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/run-build-and-minimal-fuzzers.sh
|
||||
dockerized:
|
||||
@ -389,8 +379,6 @@ jobs:
|
||||
- jobname: linux-breaking-changes
|
||||
cc: gcc
|
||||
image: ubuntu:rolling
|
||||
- jobname: fedora-breaking-changes-meson
|
||||
image: fedora:latest
|
||||
- jobname: linux-leaks
|
||||
image: ubuntu:rolling
|
||||
cc: gcc
|
||||
@ -408,6 +396,8 @@ jobs:
|
||||
# Supported until 2025-04-02.
|
||||
- jobname: linux32
|
||||
image: i386/ubuntu:focal
|
||||
- jobname: pedantic
|
||||
image: fedora:latest
|
||||
# A RHEL 8 compatible distro. Supported until 2029-05-31.
|
||||
- jobname: almalinux-8
|
||||
image: almalinux:8
|
||||
@ -439,17 +429,17 @@ jobs:
|
||||
else
|
||||
apt-get -q update && apt-get -q -y install git
|
||||
fi
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: useradd builder --create-home
|
||||
- run: chown -R builder .
|
||||
- run: chmod a+w $GITHUB_ENV && sudo --preserve-env --set-home --user=builder ci/run-build-and-tests.sh
|
||||
- run: sudo --preserve-env --set-home --user=builder ci/run-build-and-tests.sh
|
||||
- name: print test failures
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
run: sudo --preserve-env --set-home --user=builder ci/print-test-failures.sh
|
||||
- name: Upload failed tests' directories
|
||||
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: failed-tests-${{matrix.vector.jobname}}
|
||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||
@ -464,25 +454,10 @@ jobs:
|
||||
group: static-analysis-${{ github.ref }}
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/run-static-analysis.sh
|
||||
- run: ci/check-directional-formatting.bash
|
||||
rust-analysis:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: RustAnalysis
|
||||
CI_JOB_IMAGE: ubuntu:rolling
|
||||
runs-on: ubuntu-latest
|
||||
container: ubuntu:rolling
|
||||
concurrency:
|
||||
group: rust-analysis-${{ github.ref }}
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/run-rust-checks.sh
|
||||
sparse:
|
||||
needs: ci-config
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
@ -494,7 +469,7 @@ jobs:
|
||||
group: sparse-${{ github.ref }}
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install other dependencies
|
||||
run: ci/install-dependencies.sh
|
||||
- run: make sparse
|
||||
@ -510,6 +485,6 @@ jobs:
|
||||
CI_JOB_IMAGE: ubuntu-latest
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v4
|
||||
- run: ci/install-dependencies.sh
|
||||
- run: ci/test-documentation.sh
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,6 +1,4 @@
|
||||
/fuzz_corpora
|
||||
/target/
|
||||
/Cargo.lock
|
||||
/GIT-BUILD-DIR
|
||||
/GIT-BUILD-OPTIONS
|
||||
/GIT-CFLAGS
|
||||
@ -89,7 +87,6 @@
|
||||
/git-init-db
|
||||
/git-interpret-trailers
|
||||
/git-instaweb
|
||||
/git-last-modified
|
||||
/git-log
|
||||
/git-ls-files
|
||||
/git-ls-remote
|
||||
@ -142,7 +139,6 @@
|
||||
/git-repack
|
||||
/git-replace
|
||||
/git-replay
|
||||
/git-repo
|
||||
/git-request-pull
|
||||
/git-rerere
|
||||
/git-reset
|
||||
|
||||
@ -45,8 +45,6 @@ test:linux:
|
||||
- jobname: linux-breaking-changes
|
||||
image: ubuntu:20.04
|
||||
CC: gcc
|
||||
- jobname: fedora-breaking-changes-meson
|
||||
image: fedora:latest
|
||||
- jobname: linux-TEST-vars
|
||||
image: ubuntu:20.04
|
||||
CC: gcc
|
||||
@ -60,6 +58,8 @@ test:linux:
|
||||
- jobname: linux-asan-ubsan
|
||||
image: ubuntu:rolling
|
||||
CC: clang
|
||||
- jobname: pedantic
|
||||
image: fedora:latest
|
||||
- jobname: linux-musl-meson
|
||||
image: alpine:latest
|
||||
- jobname: linux32
|
||||
@ -70,8 +70,6 @@ test:linux:
|
||||
artifacts:
|
||||
paths:
|
||||
- t/failed-test-artifacts
|
||||
reports:
|
||||
junit: build/meson-logs/testlog.junit.xml
|
||||
when: on_failure
|
||||
|
||||
test:osx:
|
||||
@ -112,16 +110,8 @@ test:osx:
|
||||
artifacts:
|
||||
paths:
|
||||
- t/failed-test-artifacts
|
||||
reports:
|
||||
junit: build/meson-logs/testlog.junit.xml
|
||||
when: on_failure
|
||||
|
||||
.windows_before_script: &windows_before_script
|
||||
# Disabling realtime monitoring fails on some of the runners, but it
|
||||
# significantly speeds up test execution in the case where it works. We thus
|
||||
# try our luck, but ignore any failures.
|
||||
- Set-MpPreference -DisableRealtimeMonitoring $true; $true
|
||||
|
||||
build:mingw64:
|
||||
stage: build
|
||||
tags:
|
||||
@ -129,7 +119,6 @@ build:mingw64:
|
||||
variables:
|
||||
NO_PERL: 1
|
||||
before_script:
|
||||
- *windows_before_script
|
||||
- ./ci/install-sdk.ps1 -directory "git-sdk"
|
||||
script:
|
||||
- git-sdk/usr/bin/bash.exe -l -c 'ci/make-test-artifacts.sh artifacts'
|
||||
@ -146,7 +135,6 @@ test:mingw64:
|
||||
- job: "build:mingw64"
|
||||
artifacts: true
|
||||
before_script:
|
||||
- *windows_before_script
|
||||
- git-sdk/usr/bin/bash.exe -l -c 'tar xf artifacts/artifacts.tar.gz'
|
||||
- New-Item -Path .git/info -ItemType Directory
|
||||
- New-Item .git/info/exclude -ItemType File -Value "/git-sdk"
|
||||
@ -160,10 +148,17 @@ test:mingw64:
|
||||
tags:
|
||||
- saas-windows-medium-amd64
|
||||
before_script:
|
||||
- *windows_before_script
|
||||
- choco install -y git meson ninja rust-ms
|
||||
- choco install -y git meson ninja openssl
|
||||
- Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
|
||||
- refreshenv
|
||||
# The certificate store for Python on Windows is broken and fails to fetch
|
||||
# certificates, see https://bugs.python.org/issue36011. This seems to
|
||||
# mostly be an issue with how the GitLab image is set up as it is a
|
||||
# non-issue on GitHub Actions. Work around the issue by importing
|
||||
# cetrificates manually.
|
||||
- Invoke-WebRequest https://curl.haxx.se/ca/cacert.pem -OutFile cacert.pem
|
||||
- openssl pkcs12 -export -nokeys -in cacert.pem -out certs.pfx -passout "pass:"
|
||||
- Import-PfxCertificate -CertStoreLocation Cert:\LocalMachine\Root -FilePath certs.pfx
|
||||
|
||||
build:msvc-meson:
|
||||
extends: .msvc-meson
|
||||
@ -183,11 +178,8 @@ test:msvc-meson:
|
||||
- job: "build:msvc-meson"
|
||||
artifacts: true
|
||||
script:
|
||||
- meson test -C build --no-rebuild --print-errorlogs --slice $Env:CI_NODE_INDEX/$Env:CI_NODE_TOTAL
|
||||
- meson test -C build --list | Select-Object -Skip 1 | Select-String .* | Group-Object -Property { $_.LineNumber % $Env:CI_NODE_TOTAL + 1 } | Where-Object Name -EQ $Env:CI_NODE_INDEX | ForEach-Object { meson test -C build --no-rebuild --print-errorlogs $_.Group; if (!$?) { exit $LASTEXITCODE } }
|
||||
parallel: 10
|
||||
artifacts:
|
||||
reports:
|
||||
junit: build/meson-logs/testlog.junit.xml
|
||||
|
||||
test:fuzz-smoke-tests:
|
||||
image: ubuntu:latest
|
||||
@ -212,17 +204,6 @@ static-analysis:
|
||||
- ./ci/run-static-analysis.sh
|
||||
- ./ci/check-directional-formatting.bash
|
||||
|
||||
rust-analysis:
|
||||
image: ubuntu:rolling
|
||||
stage: analyze
|
||||
needs: [ ]
|
||||
variables:
|
||||
jobname: RustAnalysis
|
||||
before_script:
|
||||
- ./ci/install-dependencies.sh
|
||||
script:
|
||||
- ./ci/run-rust-checks.sh
|
||||
|
||||
check-whitespace:
|
||||
image: ubuntu:latest
|
||||
stage: analyze
|
||||
|
||||
3
.mailmap
3
.mailmap
@ -81,8 +81,6 @@ Fredrik Kuivinen <frekui@gmail.com> <freku045@student.liu.se>
|
||||
Frédéric Heitzmann <frederic.heitzmann@gmail.com>
|
||||
Garry Dolley <gdolley@ucla.edu> <gdolley@arpnetworks.com>
|
||||
Glen Choo <glencbz@gmail.com> <chooglen@google.com>
|
||||
Greg Hurrell <greg@hurrell.net> <greg.hurrell@datadoghq.com>
|
||||
Greg Hurrell <greg@hurrell.net> <win@wincent.com>
|
||||
Greg Price <price@mit.edu> <price@MIT.EDU>
|
||||
Greg Price <price@mit.edu> <price@ksplice.com>
|
||||
Heiko Voigt <hvoigt@hvoigt.net> <git-list@hvoigt.net>
|
||||
@ -126,7 +124,6 @@ Jon Loeliger <jdl@jdl.com> <jdl@freescale.org>
|
||||
Jon Seymour <jon.seymour@gmail.com> <jon@blackcubes.dyndns.org>
|
||||
Jonathan Nieder <jrnieder@gmail.com> <jrnieder@uchicago.edu>
|
||||
Jonathan del Strother <jon.delStrother@bestbefore.tv> <maillist@steelskies.com>
|
||||
Jonathan Tan <jonathantanmy@fastmail.com> <jonathantanmy@google.com>
|
||||
Josh Triplett <josh@joshtriplett.org> <josh@freedesktop.org>
|
||||
Josh Triplett <josh@joshtriplett.org> <josht@us.ibm.com>
|
||||
Julian Phillips <julian@quantumfyre.co.uk> <jp3@quantumfyre.co.uk>
|
||||
|
||||
10
Cargo.toml
10
Cargo.toml
@ -1,10 +0,0 @@
|
||||
[package]
|
||||
name = "gitcore"
|
||||
version = "0.1.0"
|
||||
edition = "2018"
|
||||
rust-version = "1.49.0"
|
||||
|
||||
[lib]
|
||||
crate-type = ["staticlib"]
|
||||
|
||||
[dependencies]
|
||||
@ -118,104 +118,6 @@ Cf. <2f5de416-04ba-c23d-1e0b-83bb655829a7@zombino.com>,
|
||||
<20170223155046.e7nxivfwqqoprsqj@LykOS.localdomain>,
|
||||
<CA+EOSBncr=4a4d8n9xS4FNehyebpmX8JiUwCsXD47EQDE+DiUQ@mail.gmail.com>.
|
||||
|
||||
* The default storage format for references in newly created repositories will
|
||||
be changed from "files" to "reftable". The "reftable" format provides
|
||||
multiple advantages over the "files" format:
|
||||
+
|
||||
** It is impossible to store two references that only differ in casing on
|
||||
case-insensitive filesystems with the "files" format. This issue is common
|
||||
on Windows and macOS platforms. As the "reftable" backend does not use
|
||||
filesystem paths to encode reference names this problem goes away.
|
||||
** Similarly, macOS normalizes path names that contain unicode characters,
|
||||
which has the consequence that you cannot store two names with unicode
|
||||
characters that are encoded differently with the "files" backend. Again,
|
||||
this is not an issue with the "reftable" backend.
|
||||
** Deleting references with the "files" backend requires Git to rewrite the
|
||||
complete "packed-refs" file. In large repositories with many references
|
||||
this file can easily be dozens of megabytes in size, in extreme cases it
|
||||
may be gigabytes. The "reftable" backend uses tombstone markers for
|
||||
deleted references and thus does not have to rewrite all of its data.
|
||||
** Repository housekeeping with the "files" backend typically performs
|
||||
all-into-one repacks of references. This can be quite expensive, and
|
||||
consequently housekeeping is a tradeoff between the number of loose
|
||||
references that accumulate and slow down operations that read references,
|
||||
and compressing those loose references into the "packed-refs" file. The
|
||||
"reftable" backend uses geometric compaction after every write, which
|
||||
amortizes costs and ensures that the backend is always in a
|
||||
well-maintained state.
|
||||
** Operations that write multiple references at once are not atomic with the
|
||||
"files" backend. Consequently, Git may see in-between states when it reads
|
||||
references while a reference transaction is in the process of being
|
||||
committed to disk.
|
||||
** Writing many references at once is slow with the "files" backend because
|
||||
every reference is created as a separate file. The "reftable" backend
|
||||
significantly outperforms the "files" backend by multiple orders of
|
||||
magnitude.
|
||||
** The reftable backend uses a binary format with prefix compression for
|
||||
reference names. As a result, the format uses less space compared to the
|
||||
"packed-refs" file.
|
||||
+
|
||||
Users that get immediate benefit from the "reftable" backend could continue to
|
||||
opt-in to the "reftable" format manually by setting the "init.defaultRefFormat"
|
||||
config. But defaults matter, and we think that overall users will have a better
|
||||
experience with less platform-specific quirks when they use the new backend by
|
||||
default.
|
||||
+
|
||||
A prerequisite for this change is that the ecosystem is ready to support the
|
||||
"reftable" format. Most importantly, alternative implementations of Git like
|
||||
JGit, libgit2 and Gitoxide need to support it.
|
||||
|
||||
* In new repositories, the default branch name will be `main`. We have been
|
||||
warning that the default name will change since 675704c74dd (init:
|
||||
provide useful advice about init.defaultBranch, 2020-12-11). The new name
|
||||
matches the default branch name used in new repositories by many of the
|
||||
big Git forges.
|
||||
|
||||
* Git will require Rust as a mandatory part of the build process. While Git
|
||||
already started to adopt Rust in Git 2.49, all parts written in Rust are
|
||||
optional for the time being. This includes:
|
||||
+
|
||||
** The Rust wrapper around libgit.a that is part of "contrib/" and which has
|
||||
been introduced in Git 2.49.
|
||||
** Subsystems that have an alternative implementation in Rust to test
|
||||
interoperability between our C and Rust codebase.
|
||||
** Newly written features that are not mission critical for a fully functional
|
||||
Git client.
|
||||
+
|
||||
These changes are meant as test balloons to allow distributors of Git to prepare
|
||||
for Rust becoming a mandatory part of the build process. There will be multiple
|
||||
milestones for the introduction of Rust:
|
||||
+
|
||||
--
|
||||
1. Initially, with Git 2.52, support for Rust will be auto-detected by Meson and
|
||||
disabled in our Makefile so that the project can sort out the initial
|
||||
infrastructure.
|
||||
2. In Git 2.53, both build systems will default-enable support for Rust.
|
||||
Consequently, builds will break by default if Rust is not available on the
|
||||
build host. The use of Rust can still be explicitly disabled via build
|
||||
flags.
|
||||
3. In Git 3.0, the build options will be removed and support for Rust is
|
||||
mandatory.
|
||||
--
|
||||
+
|
||||
You can explicitly ask both Meson and our Makefile-based system to enable Rust
|
||||
by saying `meson configure -Drust=enabled` and `make WITH_RUST=YesPlease`,
|
||||
respectively.
|
||||
+
|
||||
The Git project will declare the last version before Git 3.0 to be a long-term
|
||||
support release. This long-term release will receive important bug fixes for at
|
||||
least four release cycles and security fixes for six release cycles. The Git
|
||||
project will hand over maintainership of the long-term release to distributors
|
||||
in case they need to extend the life of that long-term release even further.
|
||||
Details of how this long-term release will be handed over to the community will
|
||||
be discussed once the Git project decides to stop officially supporting it.
|
||||
+
|
||||
We will evaluate the impact on downstream distributions before making Rust
|
||||
mandatory in Git 3.0. If we see that the impact on downstream distributions
|
||||
would be significant, we may decide to defer this change to a subsequent minor
|
||||
release. This evaluation will also take into account our own experience with
|
||||
how painful it is to keep Rust an optional component.
|
||||
|
||||
=== Removals
|
||||
|
||||
* Support for grafting commits has long been superseded by git-replace(1).
|
||||
@ -281,39 +183,6 @@ These features will be removed.
|
||||
timeframe, in preference to its synonym "--annotate-stdin". Git 3.0
|
||||
removes the support for "--stdin" altogether.
|
||||
|
||||
* The git-whatchanged(1) command has outlived its usefulness more than
|
||||
10 years ago, and takes more keystrokes to type than its rough
|
||||
equivalent `git log --raw`. We have nominated the command for
|
||||
removal, have changed the command to refuse to work unless the
|
||||
`--i-still-use-this` option is given, and asked the users to report
|
||||
when they do so.
|
||||
+
|
||||
The command will be removed.
|
||||
|
||||
* Support for `core.commentString=auto` has been deprecated and will
|
||||
be removed in Git 3.0.
|
||||
+
|
||||
cf. <xmqqa59i45wc.fsf@gitster.g>
|
||||
|
||||
* Support for `core.preferSymlinkRefs=true` has been deprecated and will be
|
||||
removed in Git 3.0. Writing symbolic refs as symbolic links will be phased
|
||||
out in favor of using plain files using the textual representation of
|
||||
symbolic refs.
|
||||
+
|
||||
Symbolic references were initially always stored as a symbolic link. This was
|
||||
changed in 9b143c6e15 (Teach update-ref about a symbolic ref stored in a
|
||||
textfile., 2005-09-25), where a new textual symref format was introduced to
|
||||
store those symbolic refs in a plain file. In 9f0bb90d16
|
||||
(core.prefersymlinkrefs: use symlinks for .git/HEAD, 2006-05-02), the Git
|
||||
project switched the default to use the textual symrefs in favor of symbolic
|
||||
links.
|
||||
+
|
||||
The migration away from symbolic links has happened almost 20 years ago by now,
|
||||
and there is no known reason why one should prefer them nowadays. Furthermore,
|
||||
symbolic links are not supported on some platforms.
|
||||
+
|
||||
Note that only the writing side for such symbolic links is deprecated. Reading
|
||||
such symbolic links is still supported for now.
|
||||
|
||||
== Superseded features that will not be deprecated
|
||||
|
||||
|
||||
@ -298,17 +298,6 @@ For C programs:
|
||||
. since late 2021 with 44ba10d6, we have had variables declared in
|
||||
the for loop "for (int i = 0; i < 10; i++)".
|
||||
|
||||
. since late 2023 with 8277dbe987 we have been using the bool type
|
||||
from <stdbool.h>.
|
||||
|
||||
C99 features we have test balloons for:
|
||||
|
||||
. since late 2024 with v2.48.0-rc0~20, we have test balloons for
|
||||
compound literal syntax, e.g., (struct foo){ .member = value };
|
||||
our hope is that no platforms we care about have trouble using
|
||||
them, and officially adopt its wider use in mid 2026. Do not add
|
||||
more use of the syntax until that happens.
|
||||
|
||||
New C99 features that we cannot use yet:
|
||||
|
||||
. %z and %zu as a printf() argument for a size_t (the %z being for
|
||||
@ -326,9 +315,6 @@ For C programs:
|
||||
encouraged to have a blank line between the end of the declarations
|
||||
and the first statement in the block.
|
||||
|
||||
- Do not explicitly initialize global variables to 0 or NULL;
|
||||
instead, let BSS take care of the zero initialization.
|
||||
|
||||
- NULL pointers shall be written as NULL, not as 0.
|
||||
|
||||
- When declaring pointers, the star sides with the variable
|
||||
@ -624,9 +610,8 @@ For C programs:
|
||||
- `S_init()` initializes a structure without allocating the
|
||||
structure itself.
|
||||
|
||||
- `S_release()` releases a structure's contents without reinitializing
|
||||
the structure for immediate reuse, and without freeing the structure
|
||||
itself.
|
||||
- `S_release()` releases a structure's contents without freeing the
|
||||
structure.
|
||||
|
||||
- `S_clear()` is equivalent to `S_release()` followed by `S_init()`
|
||||
such that the structure is directly usable after clearing it. When
|
||||
@ -650,12 +635,6 @@ For C programs:
|
||||
cases. However, it is recommended to find a more descriptive name wherever
|
||||
possible to improve the readability and maintainability of the code.
|
||||
|
||||
- Bit fields should be defined without a space around the colon. E.g.
|
||||
|
||||
unsigned my_field:1;
|
||||
unsigned other_field:1;
|
||||
unsigned field_with_longer_name:1;
|
||||
|
||||
For Perl programs:
|
||||
|
||||
- Most of the C guidelines above apply.
|
||||
@ -898,17 +877,6 @@ Characters are also surrounded by underscores:
|
||||
As a side effect, backquoted placeholders are correctly typeset, but
|
||||
this style is not recommended.
|
||||
|
||||
When documenting multiple related `git config` variables, place them on
|
||||
a separate line instead of separating them by commas. For example, do
|
||||
not write this:
|
||||
`core.var1`, `core.var2`::
|
||||
Description common to `core.var1` and `core.var2`.
|
||||
|
||||
Instead write this:
|
||||
`core.var1`::
|
||||
`core.var2`::
|
||||
Description common to `core.var1` and `core.var2`.
|
||||
|
||||
Synopsis Syntax
|
||||
|
||||
The synopsis (a paragraph with [synopsis] attribute) is automatically
|
||||
|
||||
@ -34,7 +34,6 @@ MAN5_TXT += gitformat-bundle.adoc
|
||||
MAN5_TXT += gitformat-chunk.adoc
|
||||
MAN5_TXT += gitformat-commit-graph.adoc
|
||||
MAN5_TXT += gitformat-index.adoc
|
||||
MAN5_TXT += gitformat-loose.adoc
|
||||
MAN5_TXT += gitformat-pack.adoc
|
||||
MAN5_TXT += gitformat-signature.adoc
|
||||
MAN5_TXT += githooks.adoc
|
||||
@ -53,7 +52,6 @@ MAN7_TXT += gitcli.adoc
|
||||
MAN7_TXT += gitcore-tutorial.adoc
|
||||
MAN7_TXT += gitcredentials.adoc
|
||||
MAN7_TXT += gitcvs-migration.adoc
|
||||
MAN7_TXT += gitdatamodel.adoc
|
||||
MAN7_TXT += gitdiffcore.adoc
|
||||
MAN7_TXT += giteveryday.adoc
|
||||
MAN7_TXT += gitfaq.adoc
|
||||
@ -121,29 +119,19 @@ TECH_DOCS += ToolsForGit
|
||||
TECH_DOCS += technical/bitmap-format
|
||||
TECH_DOCS += technical/build-systems
|
||||
TECH_DOCS += technical/bundle-uri
|
||||
TECH_DOCS += technical/commit-graph
|
||||
TECH_DOCS += technical/directory-rename-detection
|
||||
TECH_DOCS += technical/hash-function-transition
|
||||
TECH_DOCS += technical/large-object-promisors
|
||||
TECH_DOCS += technical/long-running-process-protocol
|
||||
TECH_DOCS += technical/multi-pack-index
|
||||
TECH_DOCS += technical/packfile-uri
|
||||
TECH_DOCS += technical/pack-heuristics
|
||||
TECH_DOCS += technical/parallel-checkout
|
||||
TECH_DOCS += technical/partial-clone
|
||||
TECH_DOCS += technical/platform-support
|
||||
TECH_DOCS += technical/racy-git
|
||||
TECH_DOCS += technical/reftable
|
||||
TECH_DOCS += technical/remembering-renames
|
||||
TECH_DOCS += technical/repository-version
|
||||
TECH_DOCS += technical/rerere
|
||||
TECH_DOCS += technical/scalar
|
||||
TECH_DOCS += technical/send-pack-pipeline
|
||||
TECH_DOCS += technical/shallow
|
||||
TECH_DOCS += technical/sparse-checkout
|
||||
TECH_DOCS += technical/sparse-index
|
||||
TECH_DOCS += technical/trivial-merge
|
||||
TECH_DOCS += technical/unambiguous-types
|
||||
TECH_DOCS += technical/unit-tests
|
||||
SP_ARTICLES += $(TECH_DOCS)
|
||||
SP_ARTICLES += technical/api-index
|
||||
@ -509,26 +497,9 @@ $(LINT_DOCS_FSCK_MSGIDS): ../fsck.h fsck-msgids.adoc
|
||||
$(call mkdir_p_parent_template)
|
||||
$(QUIET_GEN)$(PERL_PATH) lint-fsck-msgids.perl \
|
||||
../fsck.h fsck-msgids.adoc $@
|
||||
|
||||
lint-docs-fsck-msgids: $(LINT_DOCS_FSCK_MSGIDS)
|
||||
|
||||
## Lint: delimited sections
|
||||
LINT_DOCS_DELIMITED_SECTIONS = $(patsubst %.adoc,.build/lint-docs/delimited-sections/%.ok,$(MAN_TXT))
|
||||
$(LINT_DOCS_DELIMITED_SECTIONS): lint-delimited-sections.perl
|
||||
$(LINT_DOCS_DELIMITED_SECTIONS): .build/lint-docs/delimited-sections/%.ok: %.adoc
|
||||
$(call mkdir_p_parent_template)
|
||||
$(QUIET_LINT_DELIMSEC)$(PERL_PATH) lint-delimited-sections.perl $< >$@
|
||||
.PHONY: lint-docs-delimited-sections
|
||||
lint-docs-delimited-sections: $(LINT_DOCS_DELIMITED_SECTIONS)
|
||||
|
||||
## Lint: Documentation style
|
||||
LINT_DOCS_DOC_STYLE = $(patsubst %.adoc,.build/lint-docs/doc-style/%.ok,$(DOC_DEP_TXT))
|
||||
$(LINT_DOCS_DOC_STYLE): lint-documentation-style.perl
|
||||
$(LINT_DOCS_DOC_STYLE): .build/lint-docs/doc-style/%.ok: %.adoc
|
||||
$(call mkdir_p_parent_template)
|
||||
$(QUIET_LINT_DOCSTYLE)$(PERL_PATH) lint-documentation-style.perl $< >$@
|
||||
.PHONY: lint-docs-doc-style
|
||||
lint-docs-doc-style: $(LINT_DOCS_DOC_STYLE)
|
||||
|
||||
lint-docs-manpages:
|
||||
$(QUIET_GEN)./lint-manpages.sh
|
||||
|
||||
@ -539,12 +510,7 @@ lint-docs-meson:
|
||||
awk "/^manpages = {$$/ {flag=1 ; next } /^}$$/ { flag=0 } flag { gsub(/^ \047/, \"\"); gsub(/\047 : [157],\$$/, \"\"); print }" meson.build | \
|
||||
grep -v -e '#' -e '^$$' | \
|
||||
sort >tmp-meson-diff/meson.adoc && \
|
||||
ls git*.adoc scalar.adoc | \
|
||||
grep -v -e git-bisect-lk2009.adoc \
|
||||
-e git-pack-redundant.adoc \
|
||||
-e git-tools.adoc \
|
||||
-e git-whatchanged.adoc \
|
||||
>tmp-meson-diff/actual.adoc && \
|
||||
ls git*.adoc scalar.adoc | grep -v -e git-bisect-lk2009.adoc -e git-pack-redundant.adoc -e git-tools.adoc >tmp-meson-diff/actual.adoc && \
|
||||
if ! cmp tmp-meson-diff/meson.adoc tmp-meson-diff/actual.adoc; then \
|
||||
echo "Meson man pages differ from actual man pages:"; \
|
||||
diff -u tmp-meson-diff/meson.adoc tmp-meson-diff/actual.adoc; \
|
||||
@ -557,8 +523,6 @@ lint-docs: lint-docs-fsck-msgids
|
||||
lint-docs: lint-docs-gitlink
|
||||
lint-docs: lint-docs-man-end-blurb
|
||||
lint-docs: lint-docs-man-section-order
|
||||
lint-docs: lint-docs-delimited-sections
|
||||
lint-docs: lint-docs-doc-style
|
||||
lint-docs: lint-docs-manpages
|
||||
lint-docs: lint-docs-meson
|
||||
|
||||
|
||||
@ -52,15 +52,6 @@ respond to you. It's better to ask your questions in the channel so that you
|
||||
can be answered if you disconnect and so that others can learn from the
|
||||
conversation.
|
||||
|
||||
==== https://discord.gg/GRFVkzgxRd[#discord] on Discord
|
||||
This is an unofficial Git Discord server for everyone, from people just
|
||||
starting out with Git to those who develop it. It's a great place to ask
|
||||
questions, share tips, and connect with the broader Git community in real time.
|
||||
|
||||
The server has channels for general discussions and specific channels for those
|
||||
who use Git and those who develop it. The server's search functionality also
|
||||
allows you to find previous conversations and answers to common questions.
|
||||
|
||||
[[getting-started]]
|
||||
== Getting Started
|
||||
|
||||
@ -917,13 +908,10 @@ Now you should be able to go and check out your newly created branch on GitHub.
|
||||
=== Sending a PR to GitGitGadget
|
||||
|
||||
In order to have your code tested and formatted for review, you need to start by
|
||||
opening a Pull Request against either `gitgitgadget/git` or `git/git`. Head to
|
||||
https://github.com/gitgitgadget/git or https://github.com/git/git and open a PR
|
||||
either with the "New pull request" button or the convenient "Compare & pull
|
||||
request" button that may appear with the name of your newly pushed branch.
|
||||
|
||||
The differences between using `gitgitgadget/git` and `git/git` as your base can
|
||||
be found [here](https://gitgitgadget.github.io/#should-i-use-gitgitgadget-on-gitgitgadgets-git-fork-or-on-gits-github-mirror)
|
||||
opening a Pull Request against `gitgitgadget/git`. Head to
|
||||
https://github.com/gitgitgadget/git and open a PR either with the "New pull
|
||||
request" button or the convenient "Compare & pull request" button that may
|
||||
appear with the name of your newly pushed branch.
|
||||
|
||||
Review the PR's title and description, as they're used by GitGitGadget
|
||||
respectively as the subject and body of the cover letter for your change. Refer
|
||||
@ -1153,11 +1141,6 @@ NOTE: When you are sending a real patch, it will go to git@vger.kernel.org - but
|
||||
please don't send your patchset from the tutorial to the real mailing list! For
|
||||
now, you can send it to yourself, to make sure you understand how it will look.
|
||||
|
||||
NOTE: After sending your patches, you can confirm that they reached the mailing
|
||||
list by visiting https://lore.kernel.org/git/. Use the search bar to find your
|
||||
name or the subject of your patch. If it appears, your email was successfully
|
||||
delivered.
|
||||
|
||||
After you run the command above, you will be presented with an interactive
|
||||
prompt for each patch that's about to go out. This gives you one last chance to
|
||||
edit or quit sending something (but again, don't edit code this way). Once you
|
||||
|
||||
@ -43,7 +43,7 @@ Open up a new file `builtin/walken.c` and set up the command handler:
|
||||
#include "builtin.h"
|
||||
#include "trace.h"
|
||||
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
trace_printf(_("cmd_walken incoming...\n"));
|
||||
return 0;
|
||||
@ -83,36 +83,23 @@ int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
----
|
||||
|
||||
Also add the relevant line in `builtin.h` near `cmd_version()`:
|
||||
Also add the relevant line in `builtin.h` near `cmd_whatchanged()`:
|
||||
|
||||
----
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix);
|
||||
----
|
||||
|
||||
Include the command in `git.c` in `commands[]` near the entry for `version`,
|
||||
Include the command in `git.c` in `commands[]` near the entry for `whatchanged`,
|
||||
maintaining alphabetical ordering:
|
||||
|
||||
----
|
||||
{ "walken", cmd_walken, RUN_SETUP },
|
||||
----
|
||||
|
||||
Add an entry for the new command in the both the Make and Meson build system,
|
||||
before the entry for `worktree`:
|
||||
Add it to the `Makefile` near the line for `builtin/worktree.o`:
|
||||
|
||||
- In the `Makefile`:
|
||||
----
|
||||
...
|
||||
BUILTIN_OBJS += builtin/walken.o
|
||||
...
|
||||
----
|
||||
|
||||
- In the `meson.build` file:
|
||||
----
|
||||
builtin_sources = [
|
||||
...
|
||||
'builtin/walken.c',
|
||||
...
|
||||
]
|
||||
----
|
||||
|
||||
Build and test out your command, without forgetting to ensure the `DEVELOPER`
|
||||
@ -206,7 +193,7 @@ initialization functions.
|
||||
|
||||
Next, we should have a look at any relevant configuration settings (i.e.,
|
||||
settings readable and settable from `git config`). This is done by providing a
|
||||
callback to `repo_config()`; within that callback, you can also invoke methods
|
||||
callback to `git_config()`; within that callback, you can also invoke methods
|
||||
from other components you may need that need to intercept these options. Your
|
||||
callback will be invoked once per each configuration value which Git knows about
|
||||
(global, local, worktree, etc.).
|
||||
@ -234,14 +221,14 @@ static int git_walken_config(const char *var, const char *value,
|
||||
}
|
||||
----
|
||||
|
||||
Make sure to invoke `repo_config()` with it in your `cmd_walken()`:
|
||||
Make sure to invoke `git_config()` with it in your `cmd_walken()`:
|
||||
|
||||
----
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
...
|
||||
|
||||
repo_config(repo, git_walken_config, NULL);
|
||||
git_config(git_walken_config, NULL);
|
||||
|
||||
...
|
||||
}
|
||||
@ -263,14 +250,14 @@ We'll also need to include the `revision.h` header:
|
||||
|
||||
...
|
||||
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
/* This can go wherever you like in your declarations.*/
|
||||
struct rev_info rev;
|
||||
...
|
||||
|
||||
/* This should go after the repo_config() call. */
|
||||
repo_init_revisions(repo, &rev, prefix);
|
||||
/* This should go after the git_config() call. */
|
||||
repo_init_revisions(the_repository, &rev, prefix);
|
||||
|
||||
...
|
||||
}
|
||||
@ -318,7 +305,7 @@ Then let's invoke `final_rev_info_setup()` after the call to
|
||||
`repo_init_revisions()`:
|
||||
|
||||
----
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
...
|
||||
|
||||
|
||||
@ -37,4 +37,3 @@ exec >/var/tmp/1
|
||||
echo O=$(git describe maint)
|
||||
O=v1.6.2.3-38-g318b847
|
||||
git shortlog --no-merges $O..maint
|
||||
---
|
||||
|
||||
@ -1,73 +0,0 @@
|
||||
Git v2.43.7 Release Notes
|
||||
=========================
|
||||
|
||||
This release includes fixes for CVE-2025-27613, CVE-2025-27614,
|
||||
CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
|
||||
CVE-2025-48386.
|
||||
|
||||
Fixes since v2.43.6
|
||||
-------------------
|
||||
|
||||
* CVE-2025-27613, Gitk:
|
||||
|
||||
When a user clones an untrusted repository and runs Gitk without
|
||||
additional command arguments, any writable file can be created and
|
||||
truncated. The option "Support per-file encoding" must have been
|
||||
enabled. The operation "Show origin of this line" is affected as
|
||||
well, regardless of the option being enabled or not.
|
||||
|
||||
* CVE-2025-27614, Gitk:
|
||||
|
||||
A Git repository can be crafted in such a way that a user who has
|
||||
cloned the repository can be tricked into running any script
|
||||
supplied by the attacker by invoking `gitk filename`, where
|
||||
`filename` has a particular structure.
|
||||
|
||||
* CVE-2025-46334, Git GUI (Windows only):
|
||||
|
||||
A malicious repository can ship versions of sh.exe or typical
|
||||
textconv filter programs such as astextplain. On Windows, path
|
||||
lookup can find such executables in the worktree. These programs
|
||||
are invoked when the user selects "Git Bash" or "Browse Files" from
|
||||
the menu.
|
||||
|
||||
* CVE-2025-46835, Git GUI:
|
||||
|
||||
When a user clones an untrusted repository and is tricked into
|
||||
editing a file located in a maliciously named directory in the
|
||||
repository, then Git GUI can create and overwrite any writable
|
||||
file.
|
||||
|
||||
* CVE-2025-48384, Git:
|
||||
|
||||
When reading a config value, Git strips any trailing carriage
|
||||
return and line feed (CRLF). When writing a config entry, values
|
||||
with a trailing CR are not quoted, causing the CR to be lost when
|
||||
the config is later read. When initializing a submodule, if the
|
||||
submodule path contains a trailing CR, the altered path is read
|
||||
resulting in the submodule being checked out to an incorrect
|
||||
location. If a symlink exists that points the altered path to the
|
||||
submodule hooks directory, and the submodule contains an executable
|
||||
post-checkout hook, the script may be unintentionally executed
|
||||
after checkout.
|
||||
|
||||
* CVE-2025-48385, Git:
|
||||
|
||||
When cloning a repository Git knows to optionally fetch a bundle
|
||||
advertised by the remote server, which allows the server-side to
|
||||
offload parts of the clone to a CDN. The Git client does not
|
||||
perform sufficient validation of the advertised bundles, which
|
||||
allows the remote side to perform protocol injection.
|
||||
|
||||
This protocol injection can cause the client to write the fetched
|
||||
bundle to a location controlled by the adversary. The fetched
|
||||
content is fully controlled by the server, which can in the worst
|
||||
case lead to arbitrary code execution.
|
||||
|
||||
* CVE-2025-48386, Git:
|
||||
|
||||
The wincred credential helper uses a static buffer (`target`) as a
|
||||
unique key for storing and comparing against internal storage. This
|
||||
credential helper does not properly bounds check the available
|
||||
space remaining in the buffer before appending to it with
|
||||
`wcsncat()`, leading to potential buffer overflows.
|
||||
@ -1,7 +0,0 @@
|
||||
Git v2.44.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appears in v2.43.7 to address
|
||||
the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334,
|
||||
CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386.
|
||||
See the release notes for v2.43.7 for details.
|
||||
@ -1,7 +0,0 @@
|
||||
Git v2.45.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appears in v2.43.7, and v2.44.4
|
||||
to address the following CVEs: CVE-2025-27613, CVE-2025-27614,
|
||||
CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
|
||||
CVE-2025-48386. See the release notes for v2.43.7 for details.
|
||||
@ -1,7 +0,0 @@
|
||||
Git v2.46.4 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appears in v2.43.7, v2.44.4, and
|
||||
v2.45.4 to address the following CVEs: CVE-2025-27613, CVE-2025-27614,
|
||||
CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
|
||||
CVE-2025-48386. See the release notes for v2.43.7 for details.
|
||||
@ -1,8 +0,0 @@
|
||||
Git v2.47.3 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appears in v2.43.7, v2.44.4,
|
||||
v2.45.4, and v2.46.4 to address the following CVEs: CVE-2025-27613,
|
||||
CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384,
|
||||
CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7
|
||||
for details.
|
||||
@ -1,8 +0,0 @@
|
||||
Git v2.48.2 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appears in v2.43.7, v2.44.4,
|
||||
v2.45.4, v2.46.4, and v2.47.3 to address the following CVEs:
|
||||
CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835,
|
||||
CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release
|
||||
notes for v2.43.7 for details.
|
||||
@ -1,12 +0,0 @@
|
||||
Git v2.49.1 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.43.7, v2.44.4,
|
||||
v2.45.4, v2.46.4, v2.47.3, and v2.48.2 to address the following CVEs:
|
||||
CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835,
|
||||
CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release
|
||||
notes for v2.43.7 for details.
|
||||
|
||||
It also contains some updates to various CI bits to work around
|
||||
and/or to adjust to the deprecation of use of Ubuntu 20.04 GitHub
|
||||
Actions CI, updates to to Fedora base image.
|
||||
@ -1,8 +0,0 @@
|
||||
Git v2.50.1 Release Notes
|
||||
=========================
|
||||
|
||||
This release merges up the fixes that appear in v2.43.7, v2.44.4,
|
||||
v2.45.4, v2.46.4, v2.47.3, v2.48.2, and v2.49.1 to address the
|
||||
following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334,
|
||||
CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
|
||||
CVE-2025-48386. See the release notes for v2.43.7 for details.
|
||||
@ -1,341 +0,0 @@
|
||||
Git v2.51 Release Notes
|
||||
=======================
|
||||
|
||||
UI, Workflows & Features
|
||||
------------------------
|
||||
|
||||
* Userdiff patterns for the R language have been added.
|
||||
|
||||
* Documentation for "git send-email" has been updated with a bit more
|
||||
credential helper and OAuth information.
|
||||
|
||||
* "git cat-file --batch" learns to understand %(objectmode) atom to
|
||||
allow the caller to tell missing objects (due to repository
|
||||
corruption) and submodules (whose commit objects are OK to be
|
||||
missing) apart.
|
||||
|
||||
* "git diff --no-index dirA dirB" can limit the comparison with
|
||||
pathspec at the end of the command line, just like normal "git
|
||||
diff".
|
||||
|
||||
* "git subtree" (in contrib/) learned to grok GPG signing its commits.
|
||||
|
||||
* "git whatchanged" that is longer to type than "git log --raw"
|
||||
which is its modern rough equivalent has outlived its usefulness
|
||||
more than 10 years ago. Plan to deprecate and remove it.
|
||||
|
||||
* An interchange format for stash entries is defined, and subcommand
|
||||
of "git stash" to import/export has been added.
|
||||
|
||||
* "git merge/pull" has been taught the "--compact-summary" option to
|
||||
use the compact-summary format, intead of diffstat, when showing
|
||||
the summary of the incoming changes.
|
||||
|
||||
* "git imap-send" has been broken for a long time, which has been
|
||||
resurrected and then taught to talk OAuth2.0 etc.
|
||||
|
||||
* Some error messages from "git imap-send" has been updated.
|
||||
|
||||
* When "git daemon" sees a signal while attempting to accept() a new
|
||||
client, instead of retrying, it skipped it by mistake, which has
|
||||
been corrected.
|
||||
|
||||
* The reftable ref backend has matured enough; Git 3.0 will make it
|
||||
the default format in a newly created repositories by default.
|
||||
|
||||
* "netrc" credential helper has been improved to understand textual
|
||||
service names (like smtp) in addition to the numeric port numbers
|
||||
(like 25).
|
||||
|
||||
* Lift the limitation to use changed-path filter in "git log" so that
|
||||
it can be used for a pathspec with multiple literal paths.
|
||||
|
||||
* Clean up the way how signature on commit objects are exported to
|
||||
and imported from fast-import stream.
|
||||
|
||||
* Remove unsupported, unused, and unsupportable old option from "git
|
||||
log".
|
||||
|
||||
* Document recently added "git imap-send --list" with an example.
|
||||
|
||||
* "git pull" learned to pay attention to pull.autostash configuration
|
||||
variable, which overrides rebase/merge.autostash.
|
||||
|
||||
* "git for-each-ref" learns "--start-after" option to help
|
||||
applications that want to page its output.
|
||||
|
||||
* "git switch" and "git restore" are declared to be no longer
|
||||
experimental.
|
||||
|
||||
* "git -c alias.foo=bar foo -h baz" reported "'foo' is aliased to
|
||||
'bar'" and then went on to run "git foo -h baz", which was
|
||||
unexpected. Tighten the rule so that alias expansion is reported
|
||||
only when "-h" is the sole option.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
--------------------------------------------------------------
|
||||
|
||||
* "git pack-objects" learned to find delta bases from blobs at the
|
||||
same path, using the --path-walk API.
|
||||
|
||||
* CodingGuidelines update.
|
||||
|
||||
* Add settings for Solaris 10 & 11.
|
||||
|
||||
* Meson-based build/test framework now understands TAP output
|
||||
generated by our tests.
|
||||
|
||||
* "Do not explicitly initialize to zero" rule has been clarified in
|
||||
the CodingGuidelines document.
|
||||
|
||||
* A test helper "test_seq" function learned the "-f <fmt>" option,
|
||||
which allowed us to simplify a lot of test scripts.
|
||||
|
||||
* A lot of stale stuff has been removed from the contrib/ hierarchy.
|
||||
|
||||
* "git push" and "git fetch" are taught to update refs in batches to
|
||||
gain performance.
|
||||
|
||||
* Some code paths in "git prune" used to ignore the passed-in
|
||||
repository object and used the `the_repository` singleton instance
|
||||
instead, which has been corrected.
|
||||
|
||||
* Update ".clang-format" and ".editorconfig" to match our style guide
|
||||
a bit better.
|
||||
|
||||
* "make coccicheck" succeeds even when spatch made suggestions, which
|
||||
has been updated to fail in such a case.
|
||||
|
||||
* Code clean-up around object access API.
|
||||
|
||||
* Define .precision to more canned parse-options type to avoid bugs
|
||||
coming from using a variable with a wrong type to capture the
|
||||
parsed values.
|
||||
|
||||
* Flipping the default hash function to SHA-256 at Git 3.0 boundary
|
||||
is planned.
|
||||
|
||||
* Declare weather-balloon we raised for "bool" type 18 months ago a
|
||||
success and officially allow using the type in our codebase.
|
||||
|
||||
* GIT_TEST_INSTALLED was not honored in the recent topic related to
|
||||
SHA256 hashes, which has been corrected.
|
||||
|
||||
* The pop_most_recent_commit() function can have quite expensive
|
||||
worst case performance characteristics, which has been optimized by
|
||||
using prio-queue data structure.
|
||||
|
||||
* Move structure definition from unrelated header file to where it
|
||||
belongs.
|
||||
|
||||
* To help our developers, document what C99 language features are
|
||||
being considered for adoption, in addition to what past experiments
|
||||
have already decided.
|
||||
|
||||
* The reftable unit tests are now ported to the "clar" unit testing
|
||||
framework.
|
||||
|
||||
* Redefine where the multi-pack-index sits in the object subsystem,
|
||||
which recently was restructured to allow multiple backends that
|
||||
support a single object source that belongs to one repository. A
|
||||
MIDX does span multiple "object sources".
|
||||
|
||||
* Reduce implicit assumption and dependence on the_repository in the
|
||||
object-file subsystem.
|
||||
|
||||
|
||||
Fixes since v2.50
|
||||
-----------------
|
||||
|
||||
Unless otherwise noted, all the changes in 2.50.X maintenance track,
|
||||
including security updates, are included in this release.
|
||||
|
||||
* A memory-leak in an error code path has been plugged.
|
||||
(merge 7082da85cb ly/commit-graph-graph-write-leakfix later to maint).
|
||||
|
||||
* A memory-leak in an error code path has been plugged.
|
||||
(merge aedebdb6b9 ly/fetch-pack-leakfix later to maint).
|
||||
|
||||
* Some leftover references to documentation source files that no
|
||||
longer exist, due to recent ".txt" -> ".adoc" renaming, have been
|
||||
corrected.
|
||||
(merge 3717a5775a jw/doc-txt-to-adoc-refs later to maint).
|
||||
|
||||
* "git stash -p <pathspec>" improvements.
|
||||
(merge 468817bab2 pw/stash-p-pathspec-fixes later to maint).
|
||||
|
||||
* "git send-email" incremented its internal message counter when a
|
||||
message was edited, which made logic that treats the first message
|
||||
specially misbehave, which has been corrected.
|
||||
(merge 2cc27b3501 ag/send-email-edit-threading-fix later to maint).
|
||||
|
||||
* "git stash" recorded a wrong branch name when submodules are
|
||||
present in the current checkout, which has been corrected.
|
||||
(merge ffb36c64f2 kj/stash-onbranch-submodule-fix later to maint).
|
||||
|
||||
* When asking to apply mailmap to both author and committer field
|
||||
while showing a commit object, the field that appears later was not
|
||||
correctly parsed and replaced, which has been corrected.
|
||||
(merge abf94a283f sa/multi-mailmap-fix later to maint).
|
||||
|
||||
* "git maintenance" lacked the care "git gc" had to avoid holding
|
||||
onto the repository lock for too long during packing refs, which
|
||||
has been remedied.
|
||||
(merge 1b5074e614 ps/maintenance-ref-lock later to maint).
|
||||
|
||||
* Avoid regexp_constraint and instead use comparison_constraint when
|
||||
listing functions to exclude from application of coccinelle rules,
|
||||
as spatch can be built with different regexp engine X-<.
|
||||
(merge f2ad545813 jc/cocci-avoid-regexp-constraint later to maint).
|
||||
|
||||
* Updating submodules from the upstream did not work well when
|
||||
submodule's HEAD is detached, which has been improved.
|
||||
(merge ca62f524c1 jk/submodule-remote-lookup-cleanup later to maint).
|
||||
|
||||
* Remove unnecessary check from "git daemon" code.
|
||||
(merge 0c856224d2 cb/daemon-fd-check-fix later to maint).
|
||||
|
||||
* Use of sysctl() system call to learn the total RAM size used on
|
||||
BSDs has been corrected.
|
||||
(merge 781c1cf571 cb/total-ram-bsd-fix later to maint).
|
||||
|
||||
* Drop FreeBSD 4 support and declare that we support only FreeBSD 12
|
||||
or later, which has memmem() supported.
|
||||
(merge 0392f976a7 bs/config-mak-freebsd later to maint).
|
||||
|
||||
* A diff-filter with negative-only specification like "git log
|
||||
--diff-filter=d" did not trigger correctly, which has been fixed.
|
||||
(merge 375ac087c5 jk/all-negative-diff-filter-fix later to maint).
|
||||
|
||||
* A failure to open the index file for writing due to conflicting
|
||||
access did not state what went wrong, which has been corrected.
|
||||
(merge 9455397a5c hy/read-cache-lock-error-fix later to maint).
|
||||
|
||||
* Tempfile removal fix in the codepath to sign commits with SSH keys.
|
||||
(merge 4498127b04 re/ssh-sign-buffer-fix later to maint).
|
||||
|
||||
* Code and test clean-up around string-list API.
|
||||
(merge 6e5b26c3ff sj/string-list later to maint).
|
||||
|
||||
* "git apply -N" should start from the current index and register
|
||||
only new files, but it instead started from an empty index, which
|
||||
has been corrected.
|
||||
(merge 2b49d97fcb rp/apply-intent-to-add-fix later to maint).
|
||||
|
||||
* Leakfix with a new and a bit invasive test on pack-bitmap files.
|
||||
(merge bfd5522e98 ly/load-bitmap-leakfix later to maint).
|
||||
|
||||
* "git fetch --prune" used to be O(n^2) expensive when there are many
|
||||
refs, which has been corrected.
|
||||
(merge 87d8d8c5d0 ph/fetch-prune-optim later to maint).
|
||||
|
||||
* When a ref creation at refs/heads/foo/bar fails, the files backend
|
||||
now removes refs/heads/foo/ if the directory is otherwise not used.
|
||||
(merge a3a7f20516 ps/refs-files-remove-empty-parent later to maint).
|
||||
|
||||
* "pack-objects" has been taught to avoid pointing into objects in
|
||||
cruft packs from midx.
|
||||
|
||||
* "git remote" now detects remote names that overlap with each other
|
||||
(e.g., remote nickname "outer" and "outer/inner" are used at the
|
||||
same time), as it will lead to overlapping remote-tracking
|
||||
branches.
|
||||
(merge a5a727c448 jk/remote-avoid-overlapping-names later to maint).
|
||||
|
||||
* The gpg.program configuration variable, which names a pathname to
|
||||
the (custom) GPG compatible program, can now be spelled with ~tilde
|
||||
expansion.
|
||||
(merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint).
|
||||
|
||||
* Our <sane-ctype.h> header file relied on that the system-supplied
|
||||
<ctype.h> header is not later included, which would override our
|
||||
macro definitions, but "amazon linux" broke this assumption. Fix
|
||||
this by preemptively including <ctype.h> near the beginning of
|
||||
<sane-ctype.h> ourselves.
|
||||
(merge 9d3b33125f ps/sane-ctype-workaround later to maint).
|
||||
|
||||
* Clean-up compat/bswap.h mess.
|
||||
(merge f4ac32c03a ss/compat-bswap-revamp later to maint).
|
||||
|
||||
* Meson-based build did not handle libexecdir setting correctly,
|
||||
which has been corrected.
|
||||
(merge 056dbe8612 rj/meson-libexecdir-fix later to maint).
|
||||
|
||||
* Document that we do not require "real" name when signing your
|
||||
patches off.
|
||||
(merge 1f0fed312a bc/contribution-under-non-real-names later to maint).
|
||||
|
||||
* "git commit" that concludes a conflicted merge failed to notice and remove
|
||||
existing comment added automatically (like "# Conflicts:") when the
|
||||
core.commentstring is set to 'auto'.
|
||||
(merge 92b7c7c9f5 ac/auto-comment-char-fix later to maint).
|
||||
|
||||
* "git rebase -i" with bogus rebase.instructionFormat configuration
|
||||
failed to produce the todo file after recording the state files,
|
||||
leading to confused "git status"; this has been corrected.
|
||||
(merge ade14bffd7 ow/rebase-verify-insn-fmt-before-initializing-state later to maint).
|
||||
|
||||
* A few file descriptors left unclosed upon program completion in a
|
||||
few test helper programs are now closed.
|
||||
(merge 0f1b33815b hl/test-helper-fd-close later to maint).
|
||||
|
||||
* Interactive prompt code did not correctly strip CRLF from the end
|
||||
of line on Windows.
|
||||
(merge 711a20827b js/prompt-crlf-fix later to maint).
|
||||
|
||||
* The config API had a set of convenience wrapper functions that
|
||||
implicitly use the_repository instance; they have been removed and
|
||||
inlined at the calling sites.
|
||||
|
||||
* "git add/etc -p" now honor the diff.context configuration variable,
|
||||
and also they learn to honor the -U<n> command-line option.
|
||||
(merge 2b3ae04011 lm/add-p-context later to maint).
|
||||
|
||||
* The case where a new submodule takes a path where there used to be a
|
||||
completely different subproject is now dealt with a bit better than
|
||||
before.
|
||||
(merge 5ed8c5b465 kj/renamed-submodule later to maint).
|
||||
|
||||
* The deflate codepath in "git archive --format=zip" had a
|
||||
longstanding bug coming from misuse of zlib API, which has been
|
||||
corrected.
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge b257adb571 lo/my-first-ow-doc-update later to maint).
|
||||
(merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint).
|
||||
(merge 5dceb8bd05 ly/do-not-localize-bug-messages later to maint).
|
||||
(merge 61372dd613 ly/commit-buffer-reencode-leakfix later to maint).
|
||||
(merge 81cd1eef7d ly/pack-bitmap-root-leakfix later to maint).
|
||||
(merge bfc9f9cc64 ly/submodule-update-failure-leakfix later to maint).
|
||||
(merge 65dff89c6b ma/doc-diff-cc-headers later to maint).
|
||||
(merge efb61591ee jm/bundle-uri-debug-output-to-fp later to maint).
|
||||
(merge a3d278bb64 ly/prepare-show-merge-leakfix later to maint).
|
||||
(merge 1fde1c5daf ac/preload-index-wo-the-repository later to maint).
|
||||
(merge 855cfc65ae rm/t2400-modernize later to maint).
|
||||
(merge 2939494284 ly/run-builtin-use-passed-in-repo later to maint).
|
||||
(merge ff73f375bb jg/mailinfo-leakfix later to maint).
|
||||
(merge 996f14c02b jj/doc-branch-markup-fix later to maint).
|
||||
(merge 1e77de1864 cb/ci-freebsd-update-to-14.3 later to maint).
|
||||
(merge b0e9d25865 jk/fix-leak-send-pack later to maint).
|
||||
(merge f3a9558c8c bs/remote-helpers-doc-markup-fix later to maint).
|
||||
(merge c4e9775c60 kh/doc-config-subcommands later to maint).
|
||||
(merge de404249ab ps/perlless-test-fixes later to maint).
|
||||
(merge 953049eed8 ts/merge-orig-head-doc-fix later to maint).
|
||||
(merge 0c83bbc704 rj/freebsd-sysinfo-build-fix later to maint).
|
||||
(merge ad7780b38f ps/doc-pack-refs-auto-with-files-backend-fix later to maint).
|
||||
(merge f4fa8a3687 rh/doc-glob-pathspec-fix later to maint).
|
||||
(merge b27be108c8 ja/doc-git-log-markup later to maint).
|
||||
(merge 14d7583beb pw/config-kvi-remove-path later to maint).
|
||||
(merge f31abb421d jc/do-not-scan-argv-without-parsing later to maint).
|
||||
(merge 26552cb62a jk/unleak-reflog-expire-entry later to maint).
|
||||
(merge 339d95fda9 jc/ci-print-test-failures-fix later to maint).
|
||||
(merge 8c3add51a8 cb/meson-avoid-broken-macos-pcre2 later to maint).
|
||||
(merge 5247da07b8 ps/meson-clar-decls-fix later to maint).
|
||||
(merge f3ef347bb2 ch/t7450-recursive-clone-test-fix later to maint).
|
||||
(merge 4ac3302a1a jc/doc-release-vs-clear later to maint).
|
||||
(merge 3bdd897413 ms/meson-with-ancient-git-wo-ls-files-dedup later to maint).
|
||||
(merge cca758d324 kh/doc-fast-import-historical later to maint).
|
||||
(merge 9b0781196a jc/test-hashmap-is-still-here later to maint).
|
||||
(merge 1bad05bacc jk/revert-squelch-compiler-warning later to maint).
|
||||
(merge 3a7e783d9c dl/squelch-maybe-uninitialized later to maint).
|
||||
@ -1,99 +0,0 @@
|
||||
Git 2.51.1 Release Notes
|
||||
========================
|
||||
|
||||
There shouldn't be anything exciting to see here. This is primarily
|
||||
to flush the "do you still use it?" improvements that has landed on
|
||||
the master front, together with a handful of low-hanging, low-impact
|
||||
fixes that should be safe.
|
||||
|
||||
|
||||
Fixes since Git 2.51.0
|
||||
----------------------
|
||||
|
||||
* The "do you still use it?" message given by a command that is
|
||||
deeply deprecated and allow us to suggest alternatives has been
|
||||
updated.
|
||||
|
||||
* The compatObjectFormat extension is used to hide an incomplete
|
||||
feature that is not yet usable for any purpose other than
|
||||
developing the feature further. Document it as such to discourage
|
||||
its use by mere mortals.
|
||||
|
||||
* Manual page for "gitk" is updated with the current maintainer's
|
||||
name.
|
||||
|
||||
* Update the instructions for using GGG in the MyFirstContribution
|
||||
document to say that a GitHub PR could be made against `git/git`
|
||||
instead of `gitgitgadget/git`.
|
||||
|
||||
* Clang-format update to let our control macros be formatted the way we
|
||||
had them traditionally, e.g., "for_each_string_list_item()" without
|
||||
space before the parentheses.
|
||||
|
||||
* A few places where a size_t value was cast to curl_off_t without
|
||||
checking has been updated to use the existing helper function.
|
||||
|
||||
* The start_delayed_progress() function in the progress eye-candy API
|
||||
did not clear its internal state, making an initial delay value
|
||||
larger than 1 second ineffective, which has been corrected.
|
||||
|
||||
* Makefile tried to run multiple "cargo build" which would not work
|
||||
very well; serialize their execution to work around this problem.
|
||||
|
||||
* Adjust to the way newer versions of cURL selectively enable tracing
|
||||
options, so that our tests can continue to work.
|
||||
|
||||
* During interactive rebase, using 'drop' on a merge commit led to
|
||||
an error, which has been corrected.
|
||||
|
||||
* "git refs migrate" to migrate the reflog entries from a refs
|
||||
backend to another had a handful of bugs squashed.
|
||||
|
||||
* "git push" had a code path that led to BUG() but it should have
|
||||
been a die(), as it is a response to a usual but invalid end-user
|
||||
action to attempt pushing an object that does not exist.
|
||||
|
||||
* Various bugs about rename handling in "ort" merge strategy have
|
||||
been fixed.
|
||||
|
||||
* "git diff --no-index" run inside a subdirectory under control of a
|
||||
Git repository operated at the top of the working tree and stripped
|
||||
the prefix from the output, and oddballs like "-" (stdin) did not
|
||||
work correctly because of it. Correct the set-up by undoing what
|
||||
the set-up sequence did to cwd and prefix.
|
||||
|
||||
* Various options to "git diff" that make comparison ignore certain
|
||||
aspects of the differences (like "space changes are ignored",
|
||||
"differences in lines that match these regular expressions are
|
||||
ignored") did not work well with "--name-only" and friends.
|
||||
|
||||
* Under a race against another process that is repacking the
|
||||
repository, especially a partially cloned one, "git fetch" may
|
||||
mistakenly think some objects we do have are missing, which has
|
||||
been corrected.
|
||||
|
||||
* "git repack --path-walk" lost objects in some corner cases, which
|
||||
has been corrected.
|
||||
cf. <CABPp-BHFxxGrqKc0m==TjQNjDGdO=H5Rf6EFsf2nfE1=TuraOQ@mail.gmail.com>
|
||||
|
||||
* Fixes multiple crashes around midx write-out codepaths.
|
||||
|
||||
* A broken or malicious "git fetch" can say that it has the same
|
||||
object for many many times, and the upload-pack serving it can
|
||||
exhaust memory storing them redundantly, which has been corrected.
|
||||
|
||||
* A corner case bug in "git log -L..." has been corrected.
|
||||
|
||||
* Some among "git add -p" and friends ignored color.diff and/or
|
||||
color.ui configuration variables, which is an old regression, which
|
||||
has been corrected.
|
||||
|
||||
* "git rebase -i" failed to clean-up the commit log message when the
|
||||
command commits the final one in a chain of "fixup" commands, which
|
||||
has been corrected.
|
||||
|
||||
* Deal more gracefully with directory / file conflicts when the files
|
||||
backend is used for ref storage, by failing only the ones that are
|
||||
involved in the conflict while allowing others.
|
||||
|
||||
Also contains various documentation updates, code cleanups and minor fixups.
|
||||
@ -1,45 +0,0 @@
|
||||
Git 2.51.2 Release Notes
|
||||
========================
|
||||
|
||||
In addition to fixes for an unfortunate regression introduced in Git
|
||||
2.51.1 that caused "git diff --quiet -w" to be not so quiet when there
|
||||
are additions, deletions and conflicts, this maintenance release merges
|
||||
more fixes/improvements that have landed on the master front, primarily
|
||||
to make the CI part of the system a bit more robust.
|
||||
|
||||
|
||||
Fixes since Git 2.51.1
|
||||
----------------------
|
||||
|
||||
* Recently we attempted to improve "git diff -w --quiet" and friends
|
||||
to handle cases where patch output would be suppressed, but it
|
||||
introduced a bug that emits unnecessary output, which has been
|
||||
corrected.
|
||||
|
||||
* The code to squelch output from "git diff -w --name-status"
|
||||
etc. for paths that "git diff -w -p" would have stayed silent
|
||||
leaked output from dry-run patch generation, which has been
|
||||
corrected.
|
||||
|
||||
* Windows "real-time monitoring" interferes with the execution of
|
||||
tests and affects negatively in both correctness and performance,
|
||||
which has been disabled in Gitlab CI.
|
||||
|
||||
* An earlier addition to "git diff --no-index A B" to limit the
|
||||
output with pathspec after the two directories misbehaved when
|
||||
these directories were given with a trailing slash, which has been
|
||||
corrected.
|
||||
|
||||
* The "--short" option of "git status" that meant output for humans
|
||||
and "-z" option to show NUL delimited output format did not mix
|
||||
well, and colored some but not all things. The command has been
|
||||
updated to color all elements consistently in such a case.
|
||||
|
||||
* Unicode width table update.
|
||||
|
||||
* Recent OpenSSH creates the Unix domain socket to communicate with
|
||||
ssh-agent under $HOME instead of /tmp, which causes our test to
|
||||
fail doe to overly long pathname in our test environment, which has
|
||||
been worked around by using "ssh-agent -T".
|
||||
|
||||
Also contains various documentation updates, code cleanups and minor fixups.
|
||||
@ -1,454 +0,0 @@
|
||||
Git v2.52 Release Notes
|
||||
=======================
|
||||
|
||||
UI, Workflows & Features
|
||||
------------------------
|
||||
|
||||
* The "list" subcommand of "git refs" acts as a front-end for
|
||||
"git for-each-ref".
|
||||
|
||||
* "git cmd --help-all" now works outside repositories.
|
||||
|
||||
* "git diff-tree" learned "--max-depth" option.
|
||||
|
||||
* A new subcommand "git repo" gives users a way to grab various
|
||||
repository characteristics.
|
||||
|
||||
* A new command "git last-modified" has been added to show the closest
|
||||
ancestor commit that touched each path.
|
||||
|
||||
* The "git refs exists" command that works like "git show-ref --exists"
|
||||
has been added.
|
||||
|
||||
* "git repo info" learns the short-hand option "-z" that is the same as
|
||||
"--format=nul", and learns to report the objects format used in the
|
||||
repository.
|
||||
|
||||
* "core.commentChar=auto" that attempts to dynamically pick a
|
||||
suitable comment character is non-workable, as it is too much
|
||||
trouble to support for little benefit, and is marked as deprecated.
|
||||
|
||||
* "git send-email" learned to drive "git imap-send" to store already
|
||||
sent e-mails in an IMAP folder.
|
||||
|
||||
* The "promisor-remote" capability mechanism has been updated to
|
||||
allow the "partialCloneFilter" settings and the "token" value to be
|
||||
communicated from the server side.
|
||||
|
||||
* Declare that "git init" that is not otherwise configured uses
|
||||
'main' as the initial branch, not 'master', starting Git 3.0.
|
||||
|
||||
* Keep giving hint about the default initial branch name for users
|
||||
who may be surprised after Git 3.0 switch-over.
|
||||
|
||||
* The stash.index configuration variable can be set to make "git stash
|
||||
pop/apply" pretend that it was invoked with "--index".
|
||||
|
||||
* "git fast-import" learned that "--signed-commits=<how>" option that
|
||||
corresponds to that of "git fast-export".
|
||||
|
||||
* Marking a hunk 'selected' in "git add -p" and then splitting made
|
||||
all the split pieces 'selected'; this has been changed to make them
|
||||
all 'undecided', which gives better end-user experience.
|
||||
|
||||
* Configuration variables that take a pathname as a value
|
||||
(e.g. blame.ignorerevsfile) can be marked as optional by prefixing
|
||||
":(optional)" before its value.
|
||||
|
||||
* Show 'P'ipe command in "git add -p".
|
||||
|
||||
* "git sparse-checkout" subcommand learned a new "clean" action to
|
||||
prune otherwise unused working-tree files that are outside the
|
||||
areas of interest.
|
||||
|
||||
* "git fast-import" is taught to handle signed tags, just like it
|
||||
recently learned to handle signed commits, in different ways.
|
||||
|
||||
* A new configuration variable commitGraph.changedPaths allows to
|
||||
turn "--changed-paths" on by default for "git commit-graph".
|
||||
|
||||
* "Symlink symref" has been added to the list of things that will
|
||||
disappear at Git 3.0 boundary.
|
||||
|
||||
* "git maintenance" command learns the "geometric" strategy where it
|
||||
avoids doing maintenance tasks that rebuilds everything from
|
||||
scratch.
|
||||
|
||||
* "git repo structure", a new command.
|
||||
|
||||
* The help text and manual page of "git bisect" command have been
|
||||
made consistent with each other.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
--------------------------------------------------------------
|
||||
|
||||
* string_list_split*() family of functions have been extended to
|
||||
simplify common use cases.
|
||||
|
||||
* Arrays of strbuf is often a wrong data structure to use, and
|
||||
strbuf_split*() family of functions that create them often have
|
||||
better alternatives. Update several code paths and replace
|
||||
strbuf_split*().
|
||||
|
||||
* Revision traversal limited with pathspec, like "git log dir/*",
|
||||
used to ignore changed-paths Bloom filter when the pathspec
|
||||
contained wildcards; now they take advantage of the filter when
|
||||
they can.
|
||||
|
||||
* Doc lint updates to encourage the newer and easier-to-use
|
||||
`synopsis` format, with fixes to a handful of existing uses.
|
||||
|
||||
* Remove dependency on the_repository and other globals from the
|
||||
commit-graph code, and other changes unrelated to de-globaling.
|
||||
|
||||
* Discord has been added to the first contribution documentation as
|
||||
another way to ask for help.
|
||||
|
||||
* Inspired by Ezekiel's recent effort to showcase Rust interface, the
|
||||
hash function implementation used to hash lines have been updated
|
||||
to the one used for ELF symbol lookup by Glibc.
|
||||
|
||||
* Instead of scanning for the remaining items to see if there are
|
||||
still commits to be explored in the queue, use khash to remember
|
||||
which items are still on the queue (an unacceptable alternative is
|
||||
to reserve one object flag bits).
|
||||
|
||||
* The bulk-checkin code used to depend on a file-scope static
|
||||
singleton variable, which has been updated to pass an instance
|
||||
throughout the callchain.
|
||||
|
||||
* The work to build on the bulk-checkin infrastructure to create many
|
||||
objects at once in a transaction and to abstract it into the
|
||||
generic object layer continues.
|
||||
|
||||
* CodingGuidelines now spells out how bitfields are to be written.
|
||||
|
||||
* Adjust to the way newer versions of cURL selectively enable tracing
|
||||
options, so that our tests can continue to work.
|
||||
|
||||
* The clear_alloc_state() API function was not fully clearing the
|
||||
structure for reuse, but since nobody reuses it, replace it with a
|
||||
variant that frees the structure as well, making the callers simpler.
|
||||
|
||||
* "git range-diff" learned a way to limit the memory consumed by
|
||||
O(N*N) cost matrix.
|
||||
|
||||
* Some places in the code confused a variable that is *not* a boolean
|
||||
to enable color but is an enum that records what the user requested
|
||||
to do about color. A couple of bugs of this sort have been fixed,
|
||||
while the code has been cleaned up to prevent similar bugs in the
|
||||
future.
|
||||
|
||||
* The build procedure based on meson learned a target to only build
|
||||
documentation, similar to "make doc".
|
||||
(merge ff4ec8ded0 ps/meson-build-docs later to maint).
|
||||
|
||||
* Dip our toes a bit to (optionally) use Rust implemented helper
|
||||
called from our C code.
|
||||
|
||||
* Documentation for "git log --pretty" options has been updated
|
||||
to make it easier to translate.
|
||||
|
||||
* Instead of three library archives (one for git, one for reftable,
|
||||
and one for xdiff), roll everything into a single libgit.a archive.
|
||||
This would help later effort to FFI into Rust.
|
||||
|
||||
* The beginning of SHA1-SHA256 interoperability work.
|
||||
|
||||
* Build procedure for a few credential helpers (in contrib/) have
|
||||
been updated.
|
||||
|
||||
* CI improvements to handle the recent Rust integration better.
|
||||
|
||||
* The code in "git repack" machinery has been cleaned up to prepare
|
||||
for incremental update of midx files.
|
||||
|
||||
* Two slightly different ways to get at "all the packfiles" in API
|
||||
has been cleaned up.
|
||||
|
||||
* The code to walk revision graph to compute merge base has been
|
||||
optimized.
|
||||
|
||||
* AI guidelines has been added to our documentation set.
|
||||
|
||||
* Contributed credential helpers (obviously in contrib/) now have "cd
|
||||
$there && make install" target.
|
||||
|
||||
* The "MyFirstContribution" tutorial tells the reader how to send out
|
||||
their patches; the section gained a hint to verify the message
|
||||
reached the mailing list.
|
||||
|
||||
* The "debug" ref-backend was missing a method implementation, which
|
||||
has been corrected.
|
||||
|
||||
* Build procedure for Wincred credential helper has been updated.
|
||||
|
||||
* The build procedure based on meson learned to allow builders to
|
||||
specify the directory to install HTML documents.
|
||||
|
||||
* Building "git contacts" script (in contrib/) left the resulting
|
||||
file unexecutable, which has been corrected.
|
||||
|
||||
|
||||
Fixes since v2.51
|
||||
-----------------
|
||||
|
||||
Unless otherwise noted, all the changes in 2.51.X maintenance track,
|
||||
including security updates, are included in this release.
|
||||
|
||||
* During interactive rebase, using 'drop' on a merge commit lead to
|
||||
an error, which was incorrect.
|
||||
|
||||
* "git refs migrate" to migrate the reflog entries from a refs
|
||||
backend to another had a handful of bugs squashed.
|
||||
|
||||
* "git remote rename origin upstream" failed to move origin/HEAD to
|
||||
upstream/HEAD when origin/HEAD is unborn and performed other
|
||||
renames extremely inefficiently, which has been corrected.
|
||||
(merge 16c4fa26b9 ps/remote-rename-fix later to maint).
|
||||
|
||||
* "git describe" has been optimized by using better data structure.
|
||||
(merge 08bb69d70f rs/describe-with-prio-queue later to maint).
|
||||
|
||||
* "git push" had a code path that led to BUG() but it should have
|
||||
been a die(), as it is a response to a usual but invalid end-user
|
||||
action to attempt pushing an object that does not exist.
|
||||
|
||||
* Various bugs about rename handling in "ort" merge strategy have
|
||||
been fixed.
|
||||
|
||||
* "git jump" (in contrib/) fails to parse the diff header correctly
|
||||
when a file has a space in its name, which has been corrected.
|
||||
(merge 621ce9c1c6 gh/git-jump-pathname-with-sp later to maint).
|
||||
|
||||
* "git diff --no-index" run inside a subdirectory under control of a
|
||||
Git repository operated at the top of the working tree and stripped
|
||||
the prefix from the output, and oddballs like "-" (stdin) did not
|
||||
work correctly because of it. Correct the set-up by undoing what
|
||||
the set-up sequence did to cwd and prefix.
|
||||
|
||||
* Various options to "git diff" that makes comparison ignore certain
|
||||
aspects of the differences (like "space changes are ignored",
|
||||
"differences in lines that match these regular expressions are
|
||||
ignored") did not work well with "--name-only" and friends.
|
||||
(merge b55e6d36eb ly/diff-name-only-with-diff-from-content later to maint).
|
||||
|
||||
* The above caused regressions, which has been corrected.
|
||||
|
||||
* Documentation for "git rebase" has been updated.
|
||||
(merge 3f7f2b0359 je/doc-rebase later to maint).
|
||||
|
||||
* The start_delayed_progress() function in the progress eye-candy API
|
||||
did not clear its internal state, making an initial delay value
|
||||
larger than 1 second ineffective, which has been corrected.
|
||||
|
||||
* The compatObjectFormat extension is used to hide an incomplete
|
||||
feature that is not yet usable for any purpose other than
|
||||
developing the feature further. Document it as such to discourage
|
||||
its use by mere mortals.
|
||||
|
||||
* "git log -L..." compared trees of multiple parents with the tree of the
|
||||
merge result in an unnecessarily inefficient way.
|
||||
(merge 0a15bb634c sg/line-log-merge-optim later to maint).
|
||||
|
||||
* Under a race against another process that is repacking the
|
||||
repository, especially a partially cloned one, "git fetch" may
|
||||
mistakenly think some objects we do have are missing, which has
|
||||
been corrected.
|
||||
|
||||
* "git fetch" can clobber a symref that is dangling when the
|
||||
remote-tracking HEAD is set to auto update, which has been
|
||||
corrected.
|
||||
|
||||
* "git describe <blob>" misbehaves and/or crashes in some corner
|
||||
cases, which has been taught to exit with failure gracefully.
|
||||
(merge 7c10e48e81 jk/describe-blob later to maint).
|
||||
|
||||
* Manual page for "gitk" is updated with the current maintainer's
|
||||
name.
|
||||
|
||||
* Update the instructions for using GGG in the MyFirstContribution
|
||||
document to say that a GitHub PR could be made against `git/git`
|
||||
instead of `gitgitgadget/git`.
|
||||
|
||||
* Makefile tried to run multiple "cargo build" which would not work
|
||||
very well; serialize their execution to work around this problem.
|
||||
|
||||
* "git repack --path-walk" lost objects in some corner cases, which
|
||||
has been corrected.
|
||||
|
||||
* "git ls-files <pathspec>..." should not necessarily have to expand
|
||||
the index fully if a sparsified directory is excluded by the
|
||||
pathspec; the code is taught to expand the index on demand to avoid
|
||||
this.
|
||||
(merge 681f26bccc ds/ls-files-lazy-unsparse later to maint).
|
||||
|
||||
* Windows "real-time monitoring" interferes with the execution of
|
||||
tests and affects negatively in both correctness and performance,
|
||||
which has been disabled in Gitlab CI.
|
||||
|
||||
* A broken or malicious "git fetch" can say that it has the same
|
||||
object for many many times, and the upload-pack serving it can
|
||||
exhaust memory storing them redundantly, which has been corrected.
|
||||
|
||||
* A corner case bug in "git log -L..." has been corrected.
|
||||
|
||||
* "git rev-parse --short" and friends failed to disambiguate two
|
||||
objects with object names that share common prefix longer than 32
|
||||
characters, which has been fixed.
|
||||
(merge 8655908b9e jc/longer-disambiguation-fix later to maint).
|
||||
|
||||
* Some among "git add -p" and friends ignored color.diff and/or
|
||||
color.ui configuration variables, which is an old regression, which
|
||||
has been corrected.
|
||||
|
||||
* "git subtree" (in contrib/) did not work correctly when splitting
|
||||
squashed subtrees, which has been improved.
|
||||
|
||||
* Import a newer version of the clar unit testing framework.
|
||||
(merge 93dbb6b3c5 ps/clar-updates later to maint).
|
||||
|
||||
* "git send-email --compose --reply-to=<address>" used to add
|
||||
duplicated Reply-To: header, which made mailservers unhappy. This
|
||||
has been corrected.
|
||||
(merge f448f65719 nb/send-email-no-dup-reply-to later to maint).
|
||||
|
||||
* "git rebase -i" failed to clean-up the commit log message when the
|
||||
command commits the final one in a chain of "fixup" commands, which
|
||||
has been corrected.
|
||||
|
||||
* There are double frees and leaks around setup_revisions() API used
|
||||
in "git stash show", which has been fixed, and setup_revisions()
|
||||
API gained a wrapper to make it more ergonomic when using it with
|
||||
strvec-manged argc/argv pairs.
|
||||
(merge a04bc71725 jk/setup-revisions-freefix later to maint).
|
||||
|
||||
* Deal more gracefully with directory / file conflicts when the files
|
||||
backend is used for ref storage, by failing only the ones that are
|
||||
involved in the conflict while allowing others.
|
||||
|
||||
* "git last-modified" operating in non-recursive mode used to trigger
|
||||
a BUG(), which has been corrected.
|
||||
|
||||
* The use of "git config get" command to learn how ANSI color
|
||||
sequence is for a particular type, e.g., "git config get
|
||||
--type=color --default=reset no.such.thing", isn't very ergonomic.
|
||||
(merge e4dabf4fd6 ps/config-get-color-fixes later to maint).
|
||||
|
||||
* The "do you still use it?" message given by a command that is
|
||||
deeply deprecated and allow us to suggest alternatives has been
|
||||
updated.
|
||||
|
||||
* Clang-format update to let our control macros be formatted the way we
|
||||
had them traditionally, e.g., "for_each_string_list_item()" without
|
||||
space before the parentheses.
|
||||
|
||||
* A few places where a size_t value was cast to curl_off_t without
|
||||
checking has been updated to use the existing helper function.
|
||||
|
||||
* "git reflog write" did not honor the configured user.name/email
|
||||
which has been corrected.
|
||||
|
||||
* Handling of an empty subdirectory of .git/refs/ in the ref-files
|
||||
backend has been corrected.
|
||||
|
||||
* Our CI script requires "sudo" that can be told to preserve
|
||||
environment, but Ubuntu replaced with "sudo" with an implementation
|
||||
that lacks the feature. Work this around by reinstalling the
|
||||
original version.
|
||||
|
||||
* The reftable backend learned to sanity check its on-disk data more
|
||||
carefully.
|
||||
(merge 466a3a1afd kn/reftable-consistency-checks later to maint).
|
||||
|
||||
* A lot of code clean-up of xdiff.
|
||||
Split out of a larger topic.
|
||||
(merge 8b9c5d2e3a en/xdiff-cleanup later to maint).
|
||||
|
||||
* "git format-patch --range-diff=... --notes=..." did not drive the
|
||||
underlying range-diff with correct --notes parameter, ending up
|
||||
comparing with different set of notes from its main patch output
|
||||
you would get from "git format-patch --notes=..." for a singleton
|
||||
patch.
|
||||
|
||||
* The code in "git add -p" and friends to iterate over hunks was
|
||||
riddled with bugs, which has been corrected.
|
||||
|
||||
* A few more things that patch authors can do to help maintainer to
|
||||
keep track of their topics better.
|
||||
(merge 1a41698841 tb/doc-submitting-patches later to maint).
|
||||
|
||||
* An earlier addition to "git diff --no-index A B" to limit the
|
||||
output with pathspec after the two directories misbehaved when
|
||||
these directories were given with a trailing slash, which has been
|
||||
corrected.
|
||||
|
||||
* The "--short" option of "git status" that meant output for humans
|
||||
and "-z" option to show NUL delimited output format did not mix
|
||||
well, and colored some but not all things. The command has been
|
||||
updated to color all elements consistently in such a case.
|
||||
|
||||
* Unicode width table update.
|
||||
|
||||
* GPG signing test set-up has been broken for a year, which has been
|
||||
corrected.
|
||||
(merge 516bf45749 jc/t1016-setup-fix later to maint).
|
||||
|
||||
* Recent OpenSSH creates the Unix domain socket to communicate with
|
||||
ssh-agent under $HOME instead of /tmp, which causes our test to
|
||||
fail doe to overly long pathname in our test environment, which has
|
||||
been worked around by using "ssh-agent -T".
|
||||
|
||||
* strbuf_split*() to split a string into multiple strbufs is often a
|
||||
wrong API to use. A few uses of it have been removed by
|
||||
simplifying the code.
|
||||
(merge 2ab72a16d9 ob/gpg-interface-cleanup later to maint).
|
||||
|
||||
* "git shortlog" knows "--committer" and "--author" options, which
|
||||
the command line completion (in contrib/) did not handle well,
|
||||
which has been corrected.
|
||||
(merge c568fa8e1c kf/log-shortlog-completion-fix later to maint).
|
||||
|
||||
* "git bisect" command did not react correctly to "git bisect help"
|
||||
and "git bisect unknown", which has been corrected.
|
||||
(merge 2bb3a012f3 rz/bisect-help-unknown later to maint).
|
||||
|
||||
* The 'q'(uit) command in "git add -p" has been improved to quit
|
||||
without doing any meaningless work before leaving, and giving EOF
|
||||
(typically control-D) to the prompt is made to behave the same way.
|
||||
|
||||
* The wildmatch code had a corner case bug that mistakenly makes
|
||||
"foo**/bar" match with "foobar", which has been corrected.
|
||||
(merge 1940a02dc1 jk/match-pathname-fix later to maint).
|
||||
|
||||
* Tests did not set up GNUPGHOME correctly, which is fixed but some
|
||||
flaky tests are exposed in t1016, which needs to be addressed
|
||||
before this topic can move forward.
|
||||
(merge 6cd8369ef3 tz/test-prepare-gnupghome later to maint).
|
||||
|
||||
* The patterns used in the .gitignore files use backslash in the way
|
||||
documented for fnmatch(3); document as such to reduce confusion.
|
||||
(merge 8a6d158a1d jk/doc-backslash-in-exclude later to maint).
|
||||
|
||||
* The version of macos image used in GitHub CI has been updated to
|
||||
macos-14, as the macos-13 that we have been using got deprecated.
|
||||
Perforce binary used there has been changed to arm64 version to
|
||||
match.
|
||||
(merge 73b9cdb7c4 jc/ci-use-macos-14 later to maint).
|
||||
(merge ffff0bb0da jc/ci-use-arm64-p4-on-macos later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge 529a60a885 ua/t1517-short-help-tests later to maint).
|
||||
(merge 22d421fed9 ac/deglobal-fmt-merge-log-config later to maint).
|
||||
(merge a60203a015 dk/t7005-editor-updates later to maint).
|
||||
(merge 16684b6fae ps/reftable-libgit2-cleanup later to maint).
|
||||
(merge e5c27bd3d8 je/doc-add later to maint).
|
||||
(merge 13296ac909 ps/object-store-midx-dedup-info later to maint).
|
||||
(merge f9a6705d9a tc/t0450-harden later to maint).
|
||||
(merge a66fc22bf9 rs/get-oid-with-flags-cleanup later to maint).
|
||||
(merge 15b8abde07 js/mingw-includes-cleanup later to maint).
|
||||
(merge 2cebca0582 tb/cat-file-objectmode-update later to maint).
|
||||
(merge 8f487db07a kh/doc-patch-id-1 later to maint).
|
||||
(merge f711f37b05 eb/t1016-hash-transition-fix later to maint).
|
||||
(merge 85333aa1af jk/test-delete-gpgsig-leakfix later to maint).
|
||||
@ -1,265 +0,0 @@
|
||||
Git v2.53 Release Notes
|
||||
=======================
|
||||
|
||||
UI, Workflows & Features
|
||||
------------------------
|
||||
|
||||
* "git maintenance" command learned "is-needed" subcommand to tell if
|
||||
it is necessary to perform various maintenance tasks.
|
||||
|
||||
* "git replay" (experimental) learned to perform ref updates itself
|
||||
in a transaction by default, instead of emitting where each refs
|
||||
should point at and leaving the actual update to another command.
|
||||
|
||||
* "git blame" learns "--diff-algorithm=<algo>" option.
|
||||
|
||||
* "git repo info" learned "--all" option.
|
||||
|
||||
* Both "git apply" and "git diff" learn a new whitespace error class,
|
||||
"incomplete-line".
|
||||
|
||||
* Add a new manual that describes the data model.
|
||||
|
||||
* "git fast-import" learns "--strip-if-invalid" option to drop
|
||||
invalid cryptographic signature from objects.
|
||||
|
||||
* The use of "revision" (a connected set of commits) has been
|
||||
clarified in the "git replay" documentation.
|
||||
|
||||
* A help message from "git branch" now mentions "git help" instead of
|
||||
"man" when suggesting to read some documentation.
|
||||
|
||||
* "git repo struct" learned to take "-z" as a synonym to "--format=nul".
|
||||
|
||||
* More object database related information are shown in "git repo
|
||||
structure" output.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
--------------------------------------------------------------
|
||||
|
||||
* The list of packfiles used in a running Git process is moved from
|
||||
the packed_git structure into the packfile store.
|
||||
|
||||
* Some ref backend storage can hold not just the object name of an
|
||||
annotated tag, but the object name of the object the tag points at.
|
||||
The code to handle this information has been streamlined.
|
||||
|
||||
* As "git diff --quiet" only cares about the existence of any
|
||||
changes, disable rename/copy detection to skip more expensive
|
||||
processing whose result will be discarded anyway.
|
||||
|
||||
* A part of code paths that deals with loose objects has been cleaned
|
||||
up.
|
||||
|
||||
* "make strip" has been taught to strip "scalar" as well as "git".
|
||||
|
||||
* Dockerised jobs at the GitHub Actions CI have been taught to show
|
||||
more details of failed tests.
|
||||
|
||||
* Code refactoring around object database sources.
|
||||
|
||||
* Halve the memory consumed by artificial filepairs created during
|
||||
"git diff --find-copioes-harder", also making the operation run
|
||||
faster.
|
||||
|
||||
* The "git_istream" abstraction has been revamped to make it easier
|
||||
to interface with pluggable object database design.
|
||||
|
||||
* Rewrite the only use of "mktemp()" that is subject to TOCTOU race
|
||||
and Stop using the insecure "mktemp()" function.
|
||||
(merge 10bba537c4 rs/ban-mktemp later to maint).
|
||||
|
||||
* In-code comment update to clarify that single-letter options are
|
||||
outside of the scope of command line completion script.
|
||||
(merge dc8a00fafe jc/completion-no-single-letter-options later to maint).
|
||||
|
||||
* MEMZERO_ARRAY() helper is introduced to avoid clearing only the
|
||||
first N bytes of an N-element array whose elements are larger than
|
||||
a byte.
|
||||
|
||||
* "git diff-files -R --find-copies-harder" has been taught to use
|
||||
the potential copy sources from the index correctly.
|
||||
|
||||
* Require C99 style flexible array member support from all platforms.
|
||||
|
||||
* The code path that enumerates promisor objects have been optimized
|
||||
to skip pointlessly parsing blob objects.
|
||||
|
||||
* Prepare test suite for Git for Windows that supports symbolic
|
||||
links.
|
||||
|
||||
* Use hook API to replace ad-hoc invocation of hook scripts with the
|
||||
run_command() API.
|
||||
|
||||
|
||||
Fixes since v2.52
|
||||
-----------------
|
||||
|
||||
* Ever since we added whitespace rules for this project, we misspelt
|
||||
an entry, which has been corrected.
|
||||
(merge 358e94dc70 jc/gitattributes-whitespace-no-indent-fix later to maint).
|
||||
|
||||
* The code to expand attribute macros has been rewritten to avoid
|
||||
recursion to avoid running out of stack space in an uncontrolled
|
||||
way.
|
||||
(merge 42ed046866 jk/attr-macroexpand-wo-recursion later to maint).
|
||||
|
||||
* Adding a repository that uses a different hash function is a no-no,
|
||||
but "git submodule add" did nt prevent it, which has been corrected.
|
||||
(merge 6fe288bfbc bc/submodule-force-same-hash later to maint).
|
||||
|
||||
* An earlier check added to osx keychain credential helper to avoid
|
||||
storing the credential itself supplied was overeager and rejected
|
||||
credential material supplied by other helper backends that it would
|
||||
have wanted to store, which has been corrected.
|
||||
(merge 4580bcd235 kn/osxkeychain-idempotent-store-fix later to maint).
|
||||
|
||||
* The "git repo structure" subcommand tried to align its output but
|
||||
mixed up byte count and display column width, which has been
|
||||
corrected.
|
||||
(merge 7a03a10a3a jx/repo-struct-utf8width-fix later to maint).
|
||||
|
||||
* Yet another corner case fix around renames in the "ort" merge
|
||||
strategy.
|
||||
(merge a562d90a35 en/ort-rename-another-fix later to maint).
|
||||
|
||||
* Test leakfix.
|
||||
(merge 14b561e768 jk/test-mktemp-leakfix later to maint).
|
||||
|
||||
* Update a version of action used at the GitHub Actrions CI.
|
||||
(merge cd99203f86 js/ci-github-setup-go-update later to maint).
|
||||
|
||||
* The "return errno = EFOO, -1" construct, which is heavily used in
|
||||
compat/mingw.c and triggers warnings under "-Wcomma", has been
|
||||
rewritten to avoid the warnings.
|
||||
(merge af3919816f js/mingw-assign-comma-fix later to maint).
|
||||
|
||||
* Makefile based build have recently been updated to build a
|
||||
libgit.a that also has reftable and xdiff objects; CMake based
|
||||
build procedure has been updated to match.
|
||||
(merge b0d5c88cca js/cmake-libgit-fix later to maint).
|
||||
|
||||
* Under-allocation fix.
|
||||
(merge d22a488482 js/wincred-get-credential-alloc-fix later to maint).
|
||||
|
||||
* "git worktree list" attempts to show paths to worktrees while
|
||||
aligning them, but miscounted display columns for the paths when
|
||||
non-ASCII characters were involved, which has been corrected.
|
||||
(merge 08dfa59835 pw/worktree-list-display-width-fix later to maint).
|
||||
|
||||
* "Windows+meson" job at the GitHub Actions CI was hard to debug, as
|
||||
it did not show and save failed test artifacts, which has been
|
||||
corrected.
|
||||
(merge 17bd1108ea jk/ci-windows-meson-test-fix later to maint).
|
||||
|
||||
* Emulation code clean-up.
|
||||
(merge 2367c6bcd6 gf/win32-pthread-cond-wait-err later to maint).
|
||||
|
||||
* Various issues detected by Asan have been corrected.
|
||||
(merge a031b6181a jk/asan-bonanza later to maint).
|
||||
|
||||
* "git config get --path" segfaulted on an ":(optional)path" that
|
||||
does not exist, which has been corrected.
|
||||
(merge 0bd16856ff jc/optional-path later to maint).
|
||||
|
||||
* The "--committer-date-is-author-date" option of "git am/rebase" is
|
||||
a misguided one. The documentation is updated to discourage its
|
||||
use.
|
||||
(merge fbf3d0669f kh/doc-committer-date-is-author-date later to maint).
|
||||
|
||||
* The option help text given by "git config unset -h" described
|
||||
the "--all" option to "replace", not "unset", multiple variables,
|
||||
which has been corrected.
|
||||
(merge 18bf67b753 rs/config-unset-opthelp-fix later to maint).
|
||||
|
||||
* The error message given by "git config set", when the variable
|
||||
being updated has more than one values defined, used old style "git
|
||||
config" syntax with an incorrect option in its hint, both of which
|
||||
have been corrected.
|
||||
(merge df963f0df4 rs/config-set-multi-error-message-fix later to maint).
|
||||
|
||||
* "git replay" forgot to omit the "gpgsig-sha256" extended header
|
||||
from the resulting commit the same way it omits "gpgsig", which has
|
||||
been corrected.
|
||||
(merge 9f3a115087 pw/replay-exclude-gpgsig-fix later to maint).
|
||||
|
||||
* A few tests have been updated to work under the shell compatible
|
||||
mode of zsh.
|
||||
(merge a92f243a94 bc/zsh-testsuite later to maint).
|
||||
|
||||
* The way patience diff finds LCS has been optimized.
|
||||
(merge c7e3b8085b yc/xdiff-patience-optim later to maint).
|
||||
|
||||
* Recent optimization to "last-modified" command introduced use of
|
||||
uninitialized block of memory, which has been corrected.
|
||||
(merge fe4e60759b tc/last-modified-active-paths-optimization later to maint).
|
||||
|
||||
* "git last-modified" used to mishandle "--" to mark the beginning of
|
||||
pathspec, which has been corrected.
|
||||
(merge 05491b90ce js/last-modified-with-sparse-checkouts later to maint).
|
||||
|
||||
* Emulation code clean-up.
|
||||
(merge 42aa7603aa gf/win32-pthread-cond-init later to maint).
|
||||
|
||||
* "git submodule add" to add a submodule under <name> segfaulted,
|
||||
when a submodule.<name>.something is already in .gitmodules file
|
||||
without defining where its submodule.<name>.path is, which has been
|
||||
corrected.
|
||||
(merge dd8e8c786e jc/submodule-add later to maint).
|
||||
|
||||
* "git fetch" that involves fetching tags, when a tag being fetched
|
||||
needs to overwrite existing one, failed to fetch other tags, which
|
||||
has been corrected.
|
||||
(merge b7b17ec8a6 kn/fix-fetch-backfill-tag-with-batched-ref-updates later to maint).
|
||||
|
||||
* Document "rev-list --filter-provided-objects" better.
|
||||
(merge 6d8dc99478 jt/doc-rev-list-filter-provided-objects later to maint).
|
||||
|
||||
* Even when there is no changes in the packfile and no need to
|
||||
recompute bitmaps, "git repack" recomputed and updated the MIDX
|
||||
file, which has been corrected.
|
||||
(merge 6ce9d558ce ps/repack-avoid-noop-midx-rewrite later to maint).
|
||||
|
||||
* Update HTTP tests to adjust for changes in curl 8.18.0
|
||||
(merge 17f4b01da7 jk/test-curl-updates later to maint).
|
||||
|
||||
* Workaround the "iconv" shipped as part of macOS, which is broken
|
||||
handling stateful ISO/IEC 2022 encoded strings.
|
||||
(merge cee341e9dd rs/macos-iconv-workaround later to maint).
|
||||
|
||||
* Running "git diff" with "--name-only" and other options that allows
|
||||
us not to look at the blob contents, while objects that are lazily
|
||||
fetched from a promisor remote, caused use-after-free, which has
|
||||
been corrected.
|
||||
|
||||
* The ort merge machinery hit an assertion failure in a history with
|
||||
criss-cross merges renamed a directory and a non-directory, which
|
||||
has been corrected.
|
||||
(merge 979ee83e8a en/ort-recursive-d-f-conflict-fix later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge 46207a54cc qj/doc-http-bad-want-response later to maint).
|
||||
(merge df90eccd93 kh/doc-commit-extra-references later to maint).
|
||||
(merge f18aa68861 rs/xmkstemp-simplify later to maint).
|
||||
(merge fddba8f737 ja/doc-synopsis-style later to maint).
|
||||
(merge 22ce0cb639 en/xdiff-cleanup-2 later to maint).
|
||||
(merge 8ef7355a8f je/doc-pull later to maint).
|
||||
(merge 48176f953f jc/capability-leak later to maint).
|
||||
(merge 8cbbdc92f7 kh/doc-pre-commit-fix later to maint).
|
||||
(merge d4bc39a4d9 mh/doc-config-gui-gcwarning later to maint).
|
||||
(merge 41d425008a kh/doc-send-email-paragraph-fix later to maint).
|
||||
(merge d4b732899e jc/macports-darwinports later to maint).
|
||||
(merge bab391761d kj/pull-options-decl-cleanup later to maint).
|
||||
(merge 007b8994d4 rs/t4014-git-version-string-fix later to maint).
|
||||
(merge 4ce170c522 ds/doc-scalar-config later to maint).
|
||||
(merge a0c813951a jc/doc-commit-signoff-config later to maint).
|
||||
(merge 8ee262985a ja/doc-misc-fixes later to maint).
|
||||
(merge 1722c2244b mh/doc-core-attributesfile later to maint).
|
||||
(merge c469ca26c5 dk/ci-rust-fix later to maint).
|
||||
(merge 12f0be0857 gf/clear-path-cache-cleanup later to maint).
|
||||
(merge 949df6ed6b js/test-func-comment-fix later to maint).
|
||||
(merge 93f894c001 bc/checkout-error-message-fix later to maint).
|
||||
(merge abf05d856f rs/show-branch-prio-queue later to maint).
|
||||
(merge 06188ea5f3 rs/parse-config-expiry-simplify later to maint).
|
||||
(merge 861dbb1586 dd/t5403-modernise later to maint).
|
||||
@ -408,15 +408,8 @@ your patch differs from project to project, so it may be different
|
||||
from that of the project you are accustomed to.
|
||||
|
||||
[[real-name]]
|
||||
Please use a known identity in the `Signed-off-by` trailer, since we cannot
|
||||
accept anonymous contributions. It is common, but not required, to use some form
|
||||
of your real name. We realize that some contributors are not comfortable doing
|
||||
so or prefer to contribute under a pseudonym or preferred name and we can accept
|
||||
your patch either way, as long as the name and email you use are distinctive,
|
||||
identifying, and not misleading.
|
||||
|
||||
The goal of this policy is to allow us to have sufficient information to contact
|
||||
you if questions arise about your contribution.
|
||||
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 trailers at the end:
|
||||
@ -446,34 +439,6 @@ highlighted above.
|
||||
Only capitalize the very first letter of the trailer, i.e. favor
|
||||
"Signed-off-by" over "Signed-Off-By" and "Acked-by:" over "Acked-By".
|
||||
|
||||
[[ai]]
|
||||
=== Use of Artificial Intelligence (AI)
|
||||
|
||||
The Developer's Certificate of Origin requires contributors to certify
|
||||
that they know the origin of their contributions to the project and
|
||||
that they have the right to submit it under the project's license.
|
||||
It's not yet clear that this can be legally satisfied when submitting
|
||||
significant amount of content that has been generated by AI tools.
|
||||
|
||||
Another issue with AI generated content is that AIs still often
|
||||
hallucinate or just produce bad code, commit messages, documentation
|
||||
or output, even when you point out their mistakes.
|
||||
|
||||
To avoid these issues, we will reject anything that looks AI
|
||||
generated, that sounds overly formal or bloated, that looks like AI
|
||||
slop, that looks good on the surface but makes no sense, or that
|
||||
senders don’t understand or cannot explain.
|
||||
|
||||
We strongly recommend using AI tools carefully and responsibly.
|
||||
|
||||
Contributors would often benefit more from AI by using it to guide and
|
||||
help them step by step towards producing a solution by themselves
|
||||
rather than by asking for a full solution that they would then mostly
|
||||
copy-paste. They can also use AI to help with debugging, or with
|
||||
checking for obvious mistakes, things that can be improved, things
|
||||
that don’t match our style, guidelines or our feedback, before sending
|
||||
it to us.
|
||||
|
||||
[[git-tools]]
|
||||
=== Generate your patch using Git tools out of your commits.
|
||||
|
||||
@ -607,27 +572,14 @@ line via `git format-patch --notes`.
|
||||
[[the-topic-summary]]
|
||||
*This is EXPERIMENTAL*.
|
||||
|
||||
When sending a topic, you can optionally propose a topic name and/or a
|
||||
one-paragraph summary that should appear in the "What's cooking"
|
||||
report when it is picked up to explain the topic. If you choose to do
|
||||
so, please write a 2-5 line paragraph that will fit well in our
|
||||
release notes (see many bulleted entries in the
|
||||
Documentation/RelNotes/* files for examples), and make it the first
|
||||
(or second, if including a suggested topic name) paragraph of the
|
||||
cover letter. If suggesting a topic name, use the format
|
||||
"XX/your-topic-name", where "XX" is a stand-in for the primary
|
||||
author's initials, and "your-topic-name" is a brief, dash-delimited
|
||||
description of what your topic does. For a single-patch series, use
|
||||
the space between the three-dash line and the diffstat, as described
|
||||
earlier.
|
||||
|
||||
[[multi-series-efforts]]
|
||||
If your patch series is part of a larger effort spanning multiple
|
||||
patch series, briefly describe the broader goal, and state where the
|
||||
current series fits into that goal. If you are suggesting a topic
|
||||
name as in <<the-topic-summary, section above>>, consider
|
||||
"XX/the-broader-goal-part-one", "XX/the-broader-goal-part-two", and so
|
||||
on.
|
||||
When sending a topic, you can propose a one-paragraph summary that
|
||||
should appear in the "What's cooking" report when it is picked up to
|
||||
explain the topic. If you choose to do so, please write a 2-5 line
|
||||
paragraph that will fit well in our release notes (see many bulleted
|
||||
entries in the Documentation/RelNotes/* files for examples), and make
|
||||
it the first paragraph of the cover letter. For a single-patch
|
||||
series, use the space between the three-dash line and the diffstat, as
|
||||
described earlier.
|
||||
|
||||
[[attachment]]
|
||||
Do not attach the patch as a MIME attachment, compressed or not.
|
||||
|
||||
@ -43,7 +43,7 @@ ifdef::doctype-book[]
|
||||
endif::doctype-book[]
|
||||
|
||||
[literal-inlinemacro]
|
||||
{eval:re.sub(r'(<[-a-zA-Z0-9.]+>)', r'<emphasis>\1</emphasis>', re.sub(r'([\[\s|()>]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@\\\*\/_^\$%]+\.?)+|,)',r'\1<literal>\2</literal>', re.sub(r'(\.\.\.?)([^\]$.])', r'<literal>\1</literal>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}
|
||||
{eval:re.sub(r'(<[-a-zA-Z0-9.]+>)', r'<emphasis>\1</emphasis>', re.sub(r'([\[\s|()>]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@\\\*\/_^\$]+\.?)+|,)',r'\1<literal>\2</literal>', re.sub(r'(\.\.\.?)([^\]$.])', r'<literal>\1</literal>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}
|
||||
|
||||
endif::backend-docbook[]
|
||||
|
||||
|
||||
@ -73,7 +73,7 @@ module Git
|
||||
elsif type == :monospaced
|
||||
node.text.gsub(/(\.\.\.?)([^\]$\.])/, '<literal>\1</literal>\2')
|
||||
.gsub(/^\.\.\.?$/, '<literal>\0</literal>')
|
||||
.gsub(%r{([\[\s|()>.]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@/_^\$\\\*%]+\.{0,2})+|,)}, '\1<literal>\2</literal>')
|
||||
.gsub(%r{([\[\s|()>.]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@/_^\$\\\*]+\.{0,2})+|,)}, '\1<literal>\2</literal>')
|
||||
.gsub(/(<[-a-zA-Z0-9.]+>)/, '<emphasis>\1</emphasis>')
|
||||
else
|
||||
open, close, supports_phrase = QUOTE_TAGS[type]
|
||||
@ -102,7 +102,7 @@ module Git
|
||||
if node.type == :monospaced
|
||||
node.text.gsub(/(\.\.\.?)([^\]$.])/, '<code>\1</code>\2')
|
||||
.gsub(/^\.\.\.?$/, '<code>\0</code>')
|
||||
.gsub(%r{([\[\s|()>.]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@,/_^\$\\\*%]+\.{0,2})+)}, '\1<code>\2</code>')
|
||||
.gsub(%r{([\[\s|()>.]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@,/_^\$\\\*]+\.{0,2})+)}, '\1<code>\2</code>')
|
||||
.gsub(/(<[-a-zA-Z0-9.]+>)/, '<em>\1</em>')
|
||||
|
||||
else
|
||||
|
||||
@ -75,8 +75,7 @@ include::line-range-format.adoc[]
|
||||
iso format is used. For supported values, see the discussion
|
||||
of the --date option at linkgit:git-log[1].
|
||||
|
||||
--progress::
|
||||
--no-progress::
|
||||
--[no-]progress::
|
||||
Progress status is reported on the standard error stream
|
||||
by default when it is attached to a terminal. This flag
|
||||
enables progress reporting even if not attached to a
|
||||
|
||||
@ -114,7 +114,8 @@ whose format and meaning depends on the keyword. Supported keywords
|
||||
are:
|
||||
|
||||
`gitdir`::
|
||||
The data that follows the keyword `gitdir` and a colon is used as a glob
|
||||
|
||||
The data that follows the keyword `gitdir:` is used as a glob
|
||||
pattern. If the location of the .git directory matches the
|
||||
pattern, the include condition is met.
|
||||
+
|
||||
@ -147,7 +148,7 @@ refer to linkgit:gitignore[5] for details. For convenience:
|
||||
case-insensitively (e.g. on case-insensitive file systems)
|
||||
|
||||
`onbranch`::
|
||||
The data that follows the keyword `onbranch` and a colon is taken to be a
|
||||
The data that follows the keyword `onbranch:` is taken to be a
|
||||
pattern with standard globbing wildcards and two additional
|
||||
ones, `**/` and `/**`, that can match multiple path components.
|
||||
If we are in a worktree where the name of the branch that is
|
||||
@ -160,8 +161,8 @@ all branches that begin with `foo/`. This is useful if your branches are
|
||||
organized hierarchically and you would like to apply a configuration to
|
||||
all the branches in that hierarchy.
|
||||
|
||||
`hasconfig:remote.*.url`::
|
||||
The data that follows this keyword and a colon is taken to
|
||||
`hasconfig:remote.*.url:`::
|
||||
The data that follows this keyword is taken to
|
||||
be a pattern with standard globbing wildcards and two
|
||||
additional ones, `**/` and `/**`, that can match multiple
|
||||
components. The first time this keyword is seen, the rest of
|
||||
@ -357,9 +358,7 @@ compiled without runtime prefix support, the compiled-in prefix will be
|
||||
substituted instead. In the unlikely event that a literal path needs to
|
||||
be specified that should _not_ be expanded, it needs to be prefixed by
|
||||
`./`, like so: `./%(prefix)/bin`.
|
||||
+
|
||||
If prefixed with `:(optional)`, the configuration variable is treated
|
||||
as if it does not exist, if the named path does not exist.
|
||||
|
||||
|
||||
Variables
|
||||
~~~~~~~~~
|
||||
|
||||
@ -3,8 +3,7 @@ alias.*::
|
||||
after defining `alias.last = cat-file commit HEAD`, the invocation
|
||||
`git last` is equivalent to `git cat-file commit HEAD`. To avoid
|
||||
confusion and troubles with script usage, aliases that
|
||||
hide existing Git commands are ignored except for deprecated
|
||||
commands. Arguments are split by
|
||||
hide existing Git commands are ignored. Arguments are split by
|
||||
spaces, the usual shell quoting and escaping are supported.
|
||||
A quote pair or a backslash can be used to quote them.
|
||||
+
|
||||
@ -39,6 +38,6 @@ it will be treated as a shell command. For example, defining
|
||||
** A convenient way to deal with this is to write your script
|
||||
operations in an inline function that is then called with any
|
||||
arguments from the command-line. For example `alias.cmd = "!c() {
|
||||
echo $1 | grep $2 ; }; c"` will correctly execute the prior example.
|
||||
echo $1 | grep $2 ; }; c" will correctly execute the prior example.
|
||||
** Setting `GIT_TRACE=1` can help you debug the command being run for
|
||||
your alias.
|
||||
|
||||
@ -69,9 +69,9 @@ This option defaults to `never`.
|
||||
`git fetch`) to lookup the default branch for merging. Without
|
||||
this option, `git pull` defaults to merge the first refspec fetched.
|
||||
Specify multiple values to get an octopus merge.
|
||||
If you wish to setup `git pull` so that it merges into _<name>_ from
|
||||
If you wish to setup `git pull` so that it merges into <name> from
|
||||
another branch in the local repository, you can point
|
||||
`branch.<name>.merge` to the desired branch, and use the relative path
|
||||
branch.<name>.merge to the desired branch, and use the relative path
|
||||
setting `.` (a period) for `branch.<name>.remote`.
|
||||
|
||||
`branch.<name>.mergeOptions`::
|
||||
|
||||
@ -8,17 +8,6 @@ commitGraph.maxNewFilters::
|
||||
Specifies the default value for the `--max-new-filters` option of `git
|
||||
commit-graph write` (c.f., linkgit:git-commit-graph[1]).
|
||||
|
||||
commitGraph.changedPaths::
|
||||
If true, then `git commit-graph write` will compute and write
|
||||
changed-path Bloom filters by default, equivalent to passing
|
||||
`--changed-paths`. If false or unset, changed-paths Bloom filters will
|
||||
be written during `git commit-graph write` only if the filters already
|
||||
exist in the current commit-graph file. This matches the default
|
||||
behavior of `git commit-graph write` without any `--[no-]changed-paths`
|
||||
option. To rewrite a commit-graph file without any filters, use the
|
||||
`--no-changed-paths` option. Command-line option `--[no-]changed-paths`
|
||||
always takes precedence over this configuration. Defaults to unset.
|
||||
|
||||
commitGraph.readChangedPaths::
|
||||
Deprecated. Equivalent to commitGraph.changedPathsVersion=-1 if true, and
|
||||
commitGraph.changedPathsVersion=0 if false. (If commitGraph.changedPathVersion
|
||||
|
||||
@ -75,8 +75,8 @@ The built-in file system monitor is currently available only on a
|
||||
limited set of supported platforms. Currently, this includes Windows
|
||||
and MacOS.
|
||||
+
|
||||
Otherwise, this variable contains the pathname of the "fsmonitor"
|
||||
hook command.
|
||||
Otherwise, this variable contains the pathname of the "fsmonitor"
|
||||
hook command.
|
||||
+
|
||||
This hook command is used to identify all files that may have changed
|
||||
since the requested date/time. This information is used to speed up
|
||||
@ -290,9 +290,6 @@ core.preferSymlinkRefs::
|
||||
and other symbolic reference files, use symbolic links.
|
||||
This is sometimes needed to work with old scripts that
|
||||
expect HEAD to be a symbolic link.
|
||||
+
|
||||
This configuration is deprecated and will be removed in Git 3.0. Symbolic refs
|
||||
will always be written as textual symrefs.
|
||||
|
||||
core.alternateRefsCommand::
|
||||
When advertising tips of available history from an alternate, use the shell to
|
||||
@ -492,9 +489,10 @@ core.askPass::
|
||||
command-line argument and write the password on its STDOUT.
|
||||
|
||||
core.attributesFile::
|
||||
Specifies the pathname to the file that contains attributes (see
|
||||
linkgit:gitattributes[5]), in addition to `.gitattributes` (per-directory)
|
||||
and `.git/info/attributes`. Its default value is
|
||||
In addition to `.gitattributes` (per-directory) and
|
||||
`.git/info/attributes`, Git looks into this file for attributes
|
||||
(see linkgit:gitattributes[5]). Path expansions are made the same
|
||||
way as for `core.excludesFile`. Its default value is
|
||||
`$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not
|
||||
set or empty, `$HOME/.config/git/attributes` is used instead.
|
||||
|
||||
@ -533,25 +531,9 @@ core.commentString::
|
||||
commented, and removes them after the editor returns
|
||||
(default '#').
|
||||
+
|
||||
ifndef::with-breaking-changes[]
|
||||
If set to "auto", `git-commit` will select a character that is not
|
||||
If set to "auto", `git-commit` would select a character that is not
|
||||
the beginning character of any line in existing commit messages.
|
||||
Support for this value is deprecated and will be removed in Git 3.0
|
||||
due to the following limitations:
|
||||
+
|
||||
--
|
||||
* It is incompatible with adding comments in a commit message
|
||||
template. This includes the conflicts comments added to
|
||||
the commit message by `cherry-pick`, `merge`, `rebase` and
|
||||
`revert`.
|
||||
* It is incompatible with adding comments to the commit message
|
||||
in the `prepare-commit-msg` hook.
|
||||
* It is incompatible with the `fixup` and `squash` commands when
|
||||
rebasing,
|
||||
* It is not respected by `git notes`
|
||||
--
|
||||
+
|
||||
endif::with-breaking-changes[]
|
||||
Note that these two variables are aliases of each other, and in modern
|
||||
versions of Git you are free to use a string (e.g., `//` or `⁑⁕⁑`) with
|
||||
`commentChar`. Versions of Git prior to v2.45.0 will ignore
|
||||
@ -628,8 +610,6 @@ core.whitespace::
|
||||
part of the line terminator, i.e. with it, `trailing-space`
|
||||
does not trigger if the character before such a carriage-return
|
||||
is not a whitespace (not enabled by default).
|
||||
* `incomplete-line` treats the last line of a file that is missing the
|
||||
newline at the end as an error (not enabled by default).
|
||||
* `tabwidth=<n>` tells how many character positions a tab occupies; this
|
||||
is relevant for `indent-with-non-tab` and when Git fixes `tab-in-indent`
|
||||
errors. The default tab width is 8. Allowed values are 1 to 63.
|
||||
@ -716,6 +696,12 @@ core.unsetenvvars::
|
||||
Defaults to `PERL5LIB` to account for the fact that Git for
|
||||
Windows insists on using its own Perl interpreter.
|
||||
|
||||
core.restrictinheritedhandles::
|
||||
Windows-only: override whether spawned processes inherit only standard
|
||||
file handles (`stdin`, `stdout` and `stderr`) or all handles. Can be
|
||||
`auto`, `true` or `false`. Defaults to `auto`, which means `true` on
|
||||
Windows 7 and later, and `false` on older Windows versions.
|
||||
|
||||
core.createObject::
|
||||
You can set this to 'link', in which case a hardlink followed by
|
||||
a delete of the source are used to make sure that object creation
|
||||
|
||||
@ -3,7 +3,8 @@ extensions.*::
|
||||
`core.repositoryFormatVersion` is not `1`. See
|
||||
linkgit:gitrepository-layout[5].
|
||||
+
|
||||
compatObjectFormat:::
|
||||
--
|
||||
compatObjectFormat::
|
||||
Specify a compatibility hash algorithm to use. The acceptable values
|
||||
are `sha1` and `sha256`. The value specified must be different from the
|
||||
value of `extensions.objectFormat`. This allows client level
|
||||
@ -13,23 +14,19 @@ compatObjectFormat:::
|
||||
compatObjectFormat. As well as being able to use oids encoded in
|
||||
compatObjectFormat in addition to oids encoded with objectFormat to
|
||||
locally specify objects.
|
||||
+
|
||||
Note that the functionality enabled by this extension is incomplete and subject
|
||||
to change. It currently exists only to allow development and testing of
|
||||
the underlying feature and is not designed to be enabled by end users.
|
||||
|
||||
noop:::
|
||||
noop::
|
||||
This extension does not change git's behavior at all. It is useful only
|
||||
for testing format-1 compatibility.
|
||||
+
|
||||
For historical reasons, this extension is respected regardless of the
|
||||
`core.repositoryFormatVersion` setting.
|
||||
|
||||
noop-v1:::
|
||||
noop-v1::
|
||||
This extension does not change git's behavior at all. It is useful only
|
||||
for testing format-1 compatibility.
|
||||
|
||||
objectFormat:::
|
||||
objectFormat::
|
||||
Specify the hash algorithm to use. The acceptable values are `sha1` and
|
||||
`sha256`. If not specified, `sha1` is assumed.
|
||||
+
|
||||
@ -37,7 +34,7 @@ Note that this setting should only be set by linkgit:git-init[1] or
|
||||
linkgit:git-clone[1]. Trying to change it after initialization will not
|
||||
work and will produce hard-to-diagnose issues.
|
||||
|
||||
partialClone:::
|
||||
partialClone::
|
||||
When enabled, indicates that the repo was created with a partial clone
|
||||
(or later performed a partial fetch) and that the remote may have
|
||||
omitted sending certain unwanted objects. Such a remote is called a
|
||||
@ -49,31 +46,30 @@ The value of this key is the name of the promisor remote.
|
||||
For historical reasons, this extension is respected regardless of the
|
||||
`core.repositoryFormatVersion` setting.
|
||||
|
||||
preciousObjects:::
|
||||
preciousObjects::
|
||||
If enabled, indicates that objects in the repository MUST NOT be deleted
|
||||
(e.g., by `git-prune` or `git repack -d`).
|
||||
+
|
||||
For historical reasons, this extension is respected regardless of the
|
||||
`core.repositoryFormatVersion` setting.
|
||||
|
||||
refStorage:::
|
||||
refStorage::
|
||||
Specify the ref storage format to use. The acceptable values are:
|
||||
+
|
||||
--
|
||||
include::../ref-storage-format.adoc[]
|
||||
--
|
||||
|
||||
+
|
||||
Note that this setting should only be set by linkgit:git-init[1] or
|
||||
linkgit:git-clone[1]. Trying to change it after initialization will not
|
||||
work and will produce hard-to-diagnose issues.
|
||||
|
||||
relativeWorktrees:::
|
||||
relativeWorktrees::
|
||||
If enabled, indicates at least one worktree has been linked with
|
||||
relative paths. Automatically set if a worktree has been created or
|
||||
repaired with either the `--relative-paths` option or with the
|
||||
`worktree.useRelativePaths` config set to `true`.
|
||||
|
||||
worktreeConfig:::
|
||||
worktreeConfig::
|
||||
If enabled, then worktrees will load config settings from the
|
||||
`$GIT_DIR/config.worktree` file in addition to the
|
||||
`$GIT_COMMON_DIR/config` file. Note that `$GIT_COMMON_DIR` and
|
||||
@ -87,12 +83,11 @@ When enabling this extension, you must be careful to move
|
||||
certain values from the common config file to the main working tree's
|
||||
`config.worktree` file, if present:
|
||||
+
|
||||
--
|
||||
* `core.worktree` must be moved from `$GIT_COMMON_DIR/config` to
|
||||
`$GIT_COMMON_DIR/config.worktree`.
|
||||
* If `core.bare` is true, then it must be moved from `$GIT_COMMON_DIR/config`
|
||||
to `$GIT_COMMON_DIR/config.worktree`.
|
||||
--
|
||||
|
||||
+
|
||||
It may also be beneficial to adjust the locations of `core.sparseCheckout`
|
||||
and `core.sparseCheckoutCone` depending on your desire for customizable
|
||||
@ -105,3 +100,4 @@ details.
|
||||
+
|
||||
For historical reasons, this extension is respected regardless of the
|
||||
`core.repositoryFormatVersion` setting.
|
||||
--
|
||||
|
||||
@ -20,16 +20,6 @@ walking fewer objects.
|
||||
+
|
||||
* `pack.allowPackReuse=multi` may improve the time it takes to create a pack by
|
||||
reusing objects from multiple packs instead of just one.
|
||||
+
|
||||
* `pack.usePathWalk` may speed up packfile creation and make the packfiles be
|
||||
significantly smaller in the presence of certain filename collisions with Git's
|
||||
default name-hash.
|
||||
+
|
||||
* `init.defaultRefFormat=reftable` causes newly initialized repositories to use
|
||||
the reftable format for storing references. This new format solves issues with
|
||||
case-insensitive filesystems, compresses better and performs significantly
|
||||
better with many use cases. Refer to Documentation/technical/reftable.adoc for
|
||||
more information on this new storage format.
|
||||
|
||||
feature.manyFiles::
|
||||
Enable config options that optimize for repos with many files in the
|
||||
|
||||
@ -1,32 +1,32 @@
|
||||
`fetch.recurseSubmodules`::
|
||||
fetch.recurseSubmodules::
|
||||
This option controls whether `git fetch` (and the underlying fetch
|
||||
in `git pull`) will recursively fetch into populated submodules.
|
||||
This option can be set either to a boolean value or to `on-demand`.
|
||||
This option can be set either to a boolean value or to 'on-demand'.
|
||||
Setting it to a boolean changes the behavior of fetch and pull to
|
||||
recurse unconditionally into submodules when set to true or to not
|
||||
recurse at all when set to false. When set to `on-demand`, fetch and
|
||||
recurse at all when set to false. When set to 'on-demand', fetch and
|
||||
pull will only recurse into a populated submodule when its
|
||||
superproject retrieves a commit that updates the submodule's
|
||||
reference.
|
||||
Defaults to `on-demand`, or to the value of `submodule.recurse` if set.
|
||||
Defaults to 'on-demand', or to the value of 'submodule.recurse' if set.
|
||||
|
||||
`fetch.fsckObjects`::
|
||||
fetch.fsckObjects::
|
||||
If it is set to true, git-fetch-pack will check all fetched
|
||||
objects. See `transfer.fsckObjects` for what's
|
||||
checked. Defaults to `false`. If not set, the value of
|
||||
checked. Defaults to false. If not set, the value of
|
||||
`transfer.fsckObjects` is used instead.
|
||||
|
||||
`fetch.fsck.<msg-id>`::
|
||||
fetch.fsck.<msg-id>::
|
||||
Acts like `fsck.<msg-id>`, but is used by
|
||||
linkgit:git-fetch-pack[1] instead of linkgit:git-fsck[1]. See
|
||||
the `fsck.<msg-id>` documentation for details.
|
||||
|
||||
`fetch.fsck.skipList`::
|
||||
fetch.fsck.skipList::
|
||||
Acts like `fsck.skipList`, but is used by
|
||||
linkgit:git-fetch-pack[1] instead of linkgit:git-fsck[1]. See
|
||||
the `fsck.skipList` documentation for details.
|
||||
|
||||
`fetch.unpackLimit`::
|
||||
fetch.unpackLimit::
|
||||
If the number of objects fetched over the Git native
|
||||
transfer is below this
|
||||
limit, then the objects will be unpacked into loose object
|
||||
@ -37,12 +37,12 @@
|
||||
especially on slow filesystems. If not set, the value of
|
||||
`transfer.unpackLimit` is used instead.
|
||||
|
||||
`fetch.prune`::
|
||||
fetch.prune::
|
||||
If true, fetch will automatically behave as if the `--prune`
|
||||
option was given on the command line. See also `remote.<name>.prune`
|
||||
and the PRUNING section of linkgit:git-fetch[1].
|
||||
|
||||
`fetch.pruneTags`::
|
||||
fetch.pruneTags::
|
||||
If true, fetch will automatically behave as if the
|
||||
`refs/tags/*:refs/tags/*` refspec was provided when pruning,
|
||||
if not set already. This allows for setting both this option
|
||||
@ -50,41 +50,41 @@
|
||||
refs. See also `remote.<name>.pruneTags` and the PRUNING
|
||||
section of linkgit:git-fetch[1].
|
||||
|
||||
`fetch.all`::
|
||||
fetch.all::
|
||||
If true, fetch will attempt to update all available remotes.
|
||||
This behavior can be overridden by passing `--no-all` or by
|
||||
explicitly specifying one or more remote(s) to fetch from.
|
||||
Defaults to `false`.
|
||||
Defaults to false.
|
||||
|
||||
`fetch.output`::
|
||||
fetch.output::
|
||||
Control how ref update status is printed. Valid values are
|
||||
`full` and `compact`. Default value is `full`. See the
|
||||
OUTPUT section in linkgit:git-fetch[1] for details.
|
||||
|
||||
`fetch.negotiationAlgorithm`::
|
||||
fetch.negotiationAlgorithm::
|
||||
Control how information about the commits in the local repository
|
||||
is sent when negotiating the contents of the packfile to be sent by
|
||||
the server. Set to `consecutive` to use an algorithm that walks
|
||||
over consecutive commits checking each one. Set to `skipping` to
|
||||
the server. Set to "consecutive" to use an algorithm that walks
|
||||
over consecutive commits checking each one. Set to "skipping" to
|
||||
use an algorithm that skips commits in an effort to converge
|
||||
faster, but may result in a larger-than-necessary packfile; or set
|
||||
to `noop` to not send any information at all, which will almost
|
||||
to "noop" to not send any information at all, which will almost
|
||||
certainly result in a larger-than-necessary packfile, but will skip
|
||||
the negotiation step. Set to `default` to override settings made
|
||||
the negotiation step. Set to "default" to override settings made
|
||||
previously and use the default behaviour. The default is normally
|
||||
`consecutive`, but if `feature.experimental` is `true`, then the
|
||||
default is `skipping`. Unknown values will cause `git fetch` to
|
||||
"consecutive", but if `feature.experimental` is true, then the
|
||||
default is "skipping". Unknown values will cause 'git fetch' to
|
||||
error out.
|
||||
+
|
||||
See also the `--negotiate-only` and `--negotiation-tip` options to
|
||||
linkgit:git-fetch[1].
|
||||
|
||||
`fetch.showForcedUpdates`::
|
||||
Set to `false` to enable `--no-show-forced-updates` in
|
||||
fetch.showForcedUpdates::
|
||||
Set to false to enable `--no-show-forced-updates` in
|
||||
linkgit:git-fetch[1] and linkgit:git-pull[1] commands.
|
||||
Defaults to `true`.
|
||||
Defaults to true.
|
||||
|
||||
`fetch.parallel`::
|
||||
fetch.parallel::
|
||||
Specifies the maximal number of fetch operations to be run in parallel
|
||||
at a time (submodules, or remotes when the `--multiple` option of
|
||||
linkgit:git-fetch[1] is in effect).
|
||||
@ -94,16 +94,16 @@ A value of 0 will give some reasonable default. If unset, it defaults to 1.
|
||||
For submodules, this setting can be overridden using the `submodule.fetchJobs`
|
||||
config setting.
|
||||
|
||||
`fetch.writeCommitGraph`::
|
||||
fetch.writeCommitGraph::
|
||||
Set to true to write a commit-graph after every `git fetch` command
|
||||
that downloads a pack-file from a remote. Using the `--split` option,
|
||||
most executions will create a very small commit-graph file on top of
|
||||
the existing commit-graph file(s). Occasionally, these files will
|
||||
merge and the write may take longer. Having an updated commit-graph
|
||||
file helps performance of many Git commands, including `git merge-base`,
|
||||
`git push -f`, and `git log --graph`. Defaults to `false`.
|
||||
`git push -f`, and `git log --graph`. Defaults to false.
|
||||
|
||||
`fetch.bundleURI`::
|
||||
fetch.bundleURI::
|
||||
This value stores a URI for downloading Git object data from a bundle
|
||||
URI before performing an incremental fetch from the origin Git server.
|
||||
This is similar to how the `--bundle-uri` option behaves in
|
||||
@ -115,9 +115,9 @@ If you modify this value and your repository has a `fetch.bundleCreationToken`
|
||||
value, then remove that `fetch.bundleCreationToken` value before fetching from
|
||||
the new bundle URI.
|
||||
|
||||
`fetch.bundleCreationToken`::
|
||||
fetch.bundleCreationToken::
|
||||
When using `fetch.bundleURI` to fetch incrementally from a bundle
|
||||
list that uses the "`creationToken`" heuristic, this config value
|
||||
list that uses the "creationToken" heuristic, this config value
|
||||
stores the maximum `creationToken` value of the downloaded bundles.
|
||||
This value is used to prevent downloading bundles in the future
|
||||
if the advertised `creationToken` is not strictly larger than this
|
||||
|
||||
@ -68,15 +68,9 @@ format.encodeEmailHeaders::
|
||||
Defaults to true.
|
||||
|
||||
format.pretty::
|
||||
ifndef::with-breaking-changes[]
|
||||
The default pretty format for log/show/whatchanged command.
|
||||
See linkgit:git-log[1], linkgit:git-show[1],
|
||||
linkgit:git-whatchanged[1].
|
||||
endif::with-breaking-changes[]
|
||||
ifdef::with-breaking-changes[]
|
||||
The default pretty format for log/show command.
|
||||
See linkgit:git-log[1], linkgit:git-show[1].
|
||||
endif::with-breaking-changes[]
|
||||
|
||||
format.thread::
|
||||
The default threading style for 'git format-patch'. Can be
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
gpg.program::
|
||||
Pathname of the program to use instead of "`gpg`" when
|
||||
Use this custom program instead of "`gpg`" found on `$PATH` when
|
||||
making or verifying a PGP signature. The program must support the
|
||||
same command-line interface as GPG, namely, to verify a detached
|
||||
signature, "`gpg --verify $signature - <$file`" is run, and the
|
||||
|
||||
@ -55,8 +55,3 @@ gui.blamehistoryctx::
|
||||
linkgit:gitk[1] for the selected commit, when the `Show History
|
||||
Context` menu item is invoked from 'git gui blame'. If this
|
||||
variable is set to zero, the whole history is shown.
|
||||
|
||||
gui.GCWarning::
|
||||
Determines whether linkgit:git-gui[1] should prompt for garbage
|
||||
collection when git detects a large number of loose objects in
|
||||
the repository. The default value is "true".
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
imap.folder::
|
||||
The folder to drop the mails into, which is typically the Drafts
|
||||
folder. For example: `INBOX.Drafts`, `INBOX/Drafts` or
|
||||
`[Gmail]/Drafts`. The IMAP folder to interact with MUST be specified;
|
||||
the value of this configuration variable is used as the fallback
|
||||
default value when the `--folder` option is not given.
|
||||
folder. For example: "INBOX.Drafts", "INBOX/Drafts" or
|
||||
"[Gmail]/Drafts". Required.
|
||||
|
||||
imap.tunnel::
|
||||
Command used to set up a tunnel to the IMAP server through which
|
||||
@ -42,6 +40,5 @@ imap.authMethod::
|
||||
Specify the authentication method for authenticating with the IMAP server.
|
||||
If Git was built with the NO_CURL option, or if your curl version is older
|
||||
than 7.34.0, or if you're running git-imap-send with the `--no-curl`
|
||||
option, the only supported methods are `PLAIN`, `CRAM-MD5`, `OAUTHBEARER`
|
||||
and `XOAUTH2`. If this is not set then `git imap-send` uses the basic IMAP
|
||||
plaintext `LOGIN` command.
|
||||
option, the only supported method is 'CRAM-MD5'. If this is not set
|
||||
then 'git imap-send' uses the basic IMAP plaintext LOGIN command.
|
||||
|
||||
@ -1,76 +1,64 @@
|
||||
`log.abbrevCommit`::
|
||||
If `true`, make
|
||||
ifndef::with-breaking-changes[]
|
||||
linkgit:git-log[1], linkgit:git-show[1], and
|
||||
linkgit:git-whatchanged[1]
|
||||
endif::with-breaking-changes[]
|
||||
ifdef::with-breaking-changes[]
|
||||
linkgit:git-log[1] and linkgit:git-show[1]
|
||||
endif::with-breaking-changes[]
|
||||
assume `--abbrev-commit`. You may
|
||||
log.abbrevCommit::
|
||||
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
|
||||
linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may
|
||||
override this option with `--no-abbrev-commit`.
|
||||
|
||||
`log.date`::
|
||||
Set the default date-time mode for the `log` command.
|
||||
Setting a value for log.date is similar to using `git log`'s
|
||||
log.date::
|
||||
Set the default date-time mode for the 'log' command.
|
||||
Setting a value for log.date is similar to using 'git log''s
|
||||
`--date` option. See linkgit:git-log[1] for details.
|
||||
+
|
||||
If the format is set to "auto:foo" and the pager is in use, format
|
||||
"foo" will be used for the date format. Otherwise, "default" will
|
||||
be used.
|
||||
|
||||
`log.decorate`::
|
||||
log.decorate::
|
||||
Print out the ref names of any commits that are shown by the log
|
||||
command. Possible values are:
|
||||
+
|
||||
--
|
||||
`short`;; the ref name prefixes `refs/heads/`, `refs/tags/` and
|
||||
`refs/remotes/` are not printed.
|
||||
`full`;; the full ref name (including prefix) are printed.
|
||||
`auto`;; if the output is going to a terminal,
|
||||
the ref names are shown as if `short` were given, otherwise no ref
|
||||
names are shown.
|
||||
--
|
||||
+
|
||||
This is the same as the `--decorate` option of the `git log`.
|
||||
command. If 'short' is specified, the ref name prefixes 'refs/heads/',
|
||||
'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is
|
||||
specified, the full ref name (including prefix) will be printed.
|
||||
If 'auto' is 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 shown. This is the same as the `--decorate` option
|
||||
of the `git log`.
|
||||
|
||||
`log.initialDecorationSet`::
|
||||
log.initialDecorationSet::
|
||||
By default, `git log` only shows decorations for certain known ref
|
||||
namespaces. If 'all' is specified, then show all refs as
|
||||
decorations.
|
||||
|
||||
`log.excludeDecoration`::
|
||||
log.excludeDecoration::
|
||||
Exclude the specified patterns from the log decorations. This is
|
||||
similar to the `--decorate-refs-exclude` command-line option, but
|
||||
the config option can be overridden by the `--decorate-refs`
|
||||
option.
|
||||
|
||||
`log.diffMerges`::
|
||||
log.diffMerges::
|
||||
Set diff format to be used when `--diff-merges=on` is
|
||||
specified, 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
|
||||
a single <path> is given. This has the same limitations as `--follow`,
|
||||
i.e. it cannot be used to follow multiple files and does not work well
|
||||
on non-linear history.
|
||||
|
||||
`log.graphColors`::
|
||||
log.graphColors::
|
||||
A list of colors, separated by commas, that can be used to draw
|
||||
history lines in `git log --graph`.
|
||||
|
||||
`log.showRoot`::
|
||||
log.showRoot::
|
||||
If true, the initial commit will be shown as a big creation event.
|
||||
This is equivalent to a diff against an empty tree.
|
||||
Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which
|
||||
normally hide the root commit will now show it. True by default.
|
||||
|
||||
`log.showSignature`::
|
||||
log.showSignature::
|
||||
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
|
||||
linkgit:git-whatchanged[1] assume `--show-signature`.
|
||||
|
||||
`log.mailmap`::
|
||||
log.mailmap::
|
||||
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
|
||||
linkgit:git-whatchanged[1] assume `--use-mailmap`, otherwise
|
||||
assume `--no-use-mailmap`. True by default.
|
||||
|
||||
@ -16,36 +16,19 @@ detach.
|
||||
|
||||
maintenance.strategy::
|
||||
This string config option provides a way to specify one of a few
|
||||
recommended strategies for repository maintenance. This affects
|
||||
which tasks are run during `git maintenance run`, provided no
|
||||
`--task=<task>` arguments are provided. This setting impacts manual
|
||||
maintenance, auto-maintenance as well as scheduled maintenance. The
|
||||
tasks that run may be different depending on the maintenance type.
|
||||
recommended schedules for background maintenance. This only affects
|
||||
which tasks are run during `git maintenance run --schedule=X`
|
||||
commands, provided no `--task=<task>` arguments are provided.
|
||||
Further, if a `maintenance.<task>.schedule` config value is set,
|
||||
then that value is used instead of the one provided by
|
||||
`maintenance.strategy`. The possible strategy strings are:
|
||||
+
|
||||
The maintenance strategy can be further tweaked by setting
|
||||
`maintenance.<task>.enabled` and `maintenance.<task>.schedule`. If set, these
|
||||
values are used instead of the defaults provided by `maintenance.strategy`.
|
||||
+
|
||||
The possible strategies are:
|
||||
+
|
||||
* `none`: This strategy implies no tasks are run at all. This is the default
|
||||
strategy for scheduled maintenance.
|
||||
* `gc`: This strategy runs the `gc` task. This is the default strategy for
|
||||
manual maintenance.
|
||||
* `geometric`: This strategy performs geometric repacking of packfiles and
|
||||
keeps auxiliary data structures up-to-date. The strategy expires data in the
|
||||
reflog and removes worktrees that cannot be located anymore. When the
|
||||
geometric repacking strategy would decide to do an all-into-one repack, then
|
||||
the strategy generates a cruft pack for all unreachable objects. Objects that
|
||||
are already part of a cruft pack will be expired.
|
||||
+
|
||||
This repacking strategy is a full replacement for the `gc` strategy and is
|
||||
recommended for large repositories.
|
||||
* `none`: This default setting implies no tasks are run at any schedule.
|
||||
* `incremental`: This setting optimizes for performing small maintenance
|
||||
activities that do not delete any data. This does not schedule the `gc`
|
||||
task, but runs the `prefetch` and `commit-graph` tasks hourly, the
|
||||
`loose-objects` and `incremental-repack` tasks daily, and the `pack-refs`
|
||||
task weekly. Manual repository maintenance uses the `gc` task.
|
||||
task weekly.
|
||||
|
||||
maintenance.<task>.enabled::
|
||||
This boolean config option controls whether the maintenance task
|
||||
@ -92,22 +75,6 @@ maintenance.incremental-repack.auto::
|
||||
number of pack-files not in the multi-pack-index is at least the value
|
||||
of `maintenance.incremental-repack.auto`. The default value is 10.
|
||||
|
||||
maintenance.geometric-repack.auto::
|
||||
This integer config option controls how often the `geometric-repack`
|
||||
task should be run as part of `git maintenance run --auto`. If zero,
|
||||
then the `geometric-repack` task will not run with the `--auto`
|
||||
option. A negative value will force the task to run every time.
|
||||
Otherwise, a positive value implies the command should run either when
|
||||
there are packfiles that need to be merged together to retain the
|
||||
geometric progression, or when there are at least this many loose
|
||||
objects that would be written into a new packfile. The default value is
|
||||
100.
|
||||
|
||||
maintenance.geometric-repack.splitFactor::
|
||||
This integer config option controls the factor used for the geometric
|
||||
sequence. See the `--geometric=` option in linkgit:git-repack[1] for
|
||||
more details. Defaults to `2`.
|
||||
|
||||
maintenance.reflog-expire.auto::
|
||||
This integer config option controls how often the `reflog-expire` task
|
||||
should be run as part of `git maintenance run --auto`. If zero, then
|
||||
|
||||
@ -81,18 +81,8 @@ as `false`. Defaults to `conflict`.
|
||||
attributes" in linkgit:gitattributes[5].
|
||||
|
||||
`merge.stat`::
|
||||
What, if anything, to print between `ORIG_HEAD` and the merge result
|
||||
at the end of the merge. Possible values are:
|
||||
+
|
||||
--
|
||||
`false`;; Show nothing.
|
||||
`true`;; Show `git diff --diffstat --summary ORIG_HEAD`.
|
||||
`compact`;; Show `git diff --compact-summary ORIG_HEAD`.
|
||||
--
|
||||
+
|
||||
but any unrecognised value (e.g., a value added by a future version of
|
||||
Git) is taken as `true` instead of triggering an error. Defaults to
|
||||
`true`.
|
||||
Whether to print the diffstat between `ORIG_HEAD` and the merge result
|
||||
at the end of the merge. True by default.
|
||||
|
||||
`merge.autoStash`::
|
||||
When set to `true`, automatically create a temporary stash entry
|
||||
|
||||
@ -65,7 +65,7 @@ endif::[]
|
||||
During a merge, Git will automatically resolve as many conflicts as
|
||||
possible and write the `$MERGED` file containing conflict markers around
|
||||
any conflicts that it cannot resolve; `$LOCAL` and `$REMOTE` normally
|
||||
are the versions of the file from before Git's conflict
|
||||
are the versions of the file from before Git`s conflict
|
||||
resolution. This flag causes `$LOCAL` and `$REMOTE` to be overwritten so
|
||||
that only the unresolved conflicts are presented to the merge tool. Can
|
||||
be configured per-tool via the `mergetool.<tool>.hideResolved`
|
||||
|
||||
@ -155,10 +155,6 @@ pack.useSparse::
|
||||
commits contain certain types of direct renames. Default is
|
||||
`true`.
|
||||
|
||||
pack.usePathWalk::
|
||||
Enable the `--path-walk` option by default for `git pack-objects`
|
||||
processes. See linkgit:git-pack-objects[1] for full details.
|
||||
|
||||
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
|
||||
|
||||
@ -9,28 +9,6 @@ promisor.advertise::
|
||||
"false", which means the "promisor-remote" capability is not
|
||||
advertised.
|
||||
|
||||
promisor.sendFields::
|
||||
A comma or space separated list of additional remote related
|
||||
field names. A server sends these field names and the
|
||||
associated field values from its configuration when
|
||||
advertising its promisor remotes using the "promisor-remote"
|
||||
capability, see linkgit:gitprotocol-v2[5]. Currently, only the
|
||||
"partialCloneFilter" and "token" field names are supported.
|
||||
+
|
||||
`partialCloneFilter`:: contains the partial clone filter
|
||||
used for the remote.
|
||||
+
|
||||
`token`:: contains an authentication token for the remote.
|
||||
+
|
||||
When a field name is part of this list and a corresponding
|
||||
"remote.foo.<field-name>" config variable is set on the server to a
|
||||
non-empty value, then the field name and value are sent when
|
||||
advertising the promisor remote "foo".
|
||||
+
|
||||
This list has no effect unless the "promisor.advertise" config
|
||||
variable is set to "true", and the "name" and "url" fields are always
|
||||
advertised regardless of this setting.
|
||||
|
||||
promisor.acceptFromServer::
|
||||
If set to "all", a client will accept all the promisor remotes
|
||||
a server might advertise using the "promisor-remote"
|
||||
@ -50,42 +28,3 @@ promisor.acceptFromServer::
|
||||
lazily fetchable from this promisor remote from its responses
|
||||
to "fetch" and "clone" requests from the client. Name and URL
|
||||
comparisons are case sensitive. See linkgit:gitprotocol-v2[5].
|
||||
|
||||
promisor.checkFields::
|
||||
A comma or space separated list of additional remote related
|
||||
field names. A client checks if the values of these fields
|
||||
transmitted by a server correspond to the values of these
|
||||
fields in its own configuration before accepting a promisor
|
||||
remote. Currently, "partialCloneFilter" and "token" are the
|
||||
only supported field names.
|
||||
+
|
||||
If one of these field names (e.g., "token") is being checked for an
|
||||
advertised promisor remote (e.g., "foo"), three conditions must be met
|
||||
for the check of this specific field to pass:
|
||||
+
|
||||
1. The corresponding local configuration (e.g., `remote.foo.token`)
|
||||
must be set.
|
||||
2. The server must advertise the "token" field for remote "foo".
|
||||
3. The value of the locally configured `remote.foo.token` must exactly
|
||||
match the value advertised by the server for the "token" field.
|
||||
+
|
||||
If any of these conditions is not met for any field name listed in
|
||||
`promisor.checkFields`, the advertised remote "foo" is rejected.
|
||||
+
|
||||
For the "partialCloneFilter" field, this allows the client to ensure
|
||||
that the server's filter matches what it expects locally, preventing
|
||||
inconsistencies in filtering behavior. For the "token" field, this can
|
||||
be used to verify that authentication credentials match expected
|
||||
values.
|
||||
+
|
||||
Field values are compared case-sensitively.
|
||||
+
|
||||
The "name" and "url" fields are always checked according to the
|
||||
`promisor.acceptFromServer` policy, independently of this setting.
|
||||
+
|
||||
The field names and values should be passed by the server through the
|
||||
"promisor-remote" capability by using the `promisor.sendFields` config
|
||||
variable. The fields are checked only if the
|
||||
`promisor.acceptFromServer` config variable is not set to "None". If
|
||||
set to "None", this config variable has no effect. See
|
||||
linkgit:gitprotocol-v2[5].
|
||||
|
||||
@ -29,21 +29,5 @@ pull.octopus::
|
||||
The default merge strategy to use when pulling multiple branches
|
||||
at once.
|
||||
|
||||
pull.autoStash::
|
||||
When set to true, automatically create a temporary stash entry
|
||||
to record the local changes before the operation begins, and
|
||||
restore them after the operation completes. When your "git
|
||||
pull" rebases (instead of merges), this may be convenient, since
|
||||
unlike merging pull that tolerates local changes that do not
|
||||
interfere with the merge, rebasing pull refuses to work with any
|
||||
local changes.
|
||||
+
|
||||
If `pull.autostash` is set (either to true or false),
|
||||
`merge.autostash` and `rebase.autostash` are ignored. If
|
||||
`pull.autostash` is not set at all, depending on the value of
|
||||
`pull.rebase`, `merge.autostash` or `rebase.autostash` is used
|
||||
instead. Can be overridden by the `--[no-]autostash` command line
|
||||
option.
|
||||
|
||||
pull.twohead::
|
||||
The default merge strategy to use when pulling a single branch.
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
`push.autoSetupRemote`::
|
||||
If set to `true` assume `--set-upstream` on default push when no
|
||||
push.autoSetupRemote::
|
||||
If set to "true" assume `--set-upstream` on default push when no
|
||||
upstream tracking exists for the current branch; this option
|
||||
takes effect with `push.default` options `simple`, `upstream`,
|
||||
and `current`. It is useful if by default you want new branches
|
||||
takes effect with push.default options 'simple', 'upstream',
|
||||
and 'current'. It is useful if by default you want new branches
|
||||
to be pushed to the default remote (like the behavior of
|
||||
`push.default=current`) and you also want the upstream tracking
|
||||
'push.default=current') and you also want the upstream tracking
|
||||
to be set. Workflows most likely to benefit from this option are
|
||||
`simple` central workflows where all branches are expected to
|
||||
'simple' central workflows where all branches are expected to
|
||||
have the same name on the remote.
|
||||
|
||||
`push.default`::
|
||||
push.default::
|
||||
Defines the action `git push` should take if no refspec is
|
||||
given (whether from the command-line, config, or elsewhere).
|
||||
Different values are well-suited for
|
||||
@ -18,28 +18,24 @@
|
||||
`upstream` is probably what you want. Possible values are:
|
||||
+
|
||||
--
|
||||
`nothing`;;
|
||||
do not push anything (error out) unless a refspec is
|
||||
given. This is primarily meant for people who want to
|
||||
avoid mistakes by always being explicit.
|
||||
|
||||
`current`;;
|
||||
push the current branch to update a branch with the same
|
||||
name on the receiving end. Works in both central and non-central
|
||||
workflows.
|
||||
* `nothing` - do not push anything (error out) unless a refspec is
|
||||
given. This is primarily meant for people who want to
|
||||
avoid mistakes by always being explicit.
|
||||
|
||||
`upstream`;;
|
||||
push the current branch back to the branch whose
|
||||
changes are usually integrated into the current branch (which is
|
||||
called `@{upstream}`). This mode only makes sense if you are
|
||||
pushing to the same repository you would normally pull from
|
||||
(i.e. central workflow).
|
||||
* `current` - push the current branch to update a branch with the same
|
||||
name on the receiving end. Works in both central and non-central
|
||||
workflows.
|
||||
|
||||
`tracking`;;
|
||||
this is a deprecated synonym for `upstream`.
|
||||
* `upstream` - push the current branch back to the branch whose
|
||||
changes are usually integrated into the current branch (which is
|
||||
called `@{upstream}`). This mode only makes sense if you are
|
||||
pushing to the same repository you would normally pull from
|
||||
(i.e. central workflow).
|
||||
|
||||
`simple`;;
|
||||
push the current branch with the same name on the remote.
|
||||
* `tracking` - This is a deprecated synonym for `upstream`.
|
||||
|
||||
* `simple` - push the current branch with the same name on the remote.
|
||||
+
|
||||
If you are working on a centralized workflow (pushing to the same repository you
|
||||
pull from, which is typically `origin`), then you need to configure an upstream
|
||||
@ -48,17 +44,16 @@ branch with the same name.
|
||||
This mode is the default since Git 2.0, and is the safest option suited for
|
||||
beginners.
|
||||
|
||||
`matching`;;
|
||||
push all branches having the same name on both ends.
|
||||
This makes the repository you are pushing to remember the set of
|
||||
branches that will be pushed out (e.g. if you always push `maint`
|
||||
and `master` there and no other branches, the repository you push
|
||||
to will have these two branches, and your local `maint` and
|
||||
`master` will be pushed there).
|
||||
* `matching` - push all branches having the same name on both ends.
|
||||
This makes the repository you are pushing to remember the set of
|
||||
branches that will be pushed out (e.g. if you always push 'maint'
|
||||
and 'master' there and no other branches, the repository you push
|
||||
to will have these two branches, and your local 'maint' and
|
||||
'master' will be pushed there).
|
||||
+
|
||||
To use this mode effectively, you have to make sure _all_ the
|
||||
branches you would push out are ready to be pushed out before
|
||||
running `git push`, as the whole point of this mode is to allow you
|
||||
running 'git push', as the whole point of this mode is to allow you
|
||||
to push all of the branches in one go. If you usually finish work
|
||||
on only one branch and push out the result, while other branches are
|
||||
unfinished, this mode is not for you. Also this mode is not
|
||||
@ -71,24 +66,24 @@ new default).
|
||||
|
||||
--
|
||||
|
||||
`push.followTags`::
|
||||
push.followTags::
|
||||
If set to true, enable `--follow-tags` option by default. You
|
||||
may override this configuration at time of push by specifying
|
||||
`--no-follow-tags`.
|
||||
|
||||
`push.gpgSign`::
|
||||
May be set to a boolean value, or the string `if-asked`. A true
|
||||
push.gpgSign::
|
||||
May be set to a boolean value, or the string 'if-asked'. A true
|
||||
value causes all pushes to be GPG signed, as if `--signed` is
|
||||
passed to linkgit:git-push[1]. The string `if-asked` causes
|
||||
passed to linkgit:git-push[1]. The string 'if-asked' causes
|
||||
pushes to be signed if the server supports it, as if
|
||||
`--signed=if-asked` is passed to `git push`. A false value may
|
||||
`--signed=if-asked` is passed to 'git push'. A false value may
|
||||
override a value from a lower-priority config file. An explicit
|
||||
command-line flag always overrides this config option.
|
||||
|
||||
`push.pushOption`::
|
||||
push.pushOption::
|
||||
When no `--push-option=<option>` argument is given from the
|
||||
command line, `git push` behaves as if each _<option>_ of
|
||||
this variable is given as `--push-option=<option>`.
|
||||
command line, `git push` behaves as if each <value> of
|
||||
this variable is given as `--push-option=<value>`.
|
||||
+
|
||||
This is a multi-valued variable, and an empty value can be used in a
|
||||
higher priority configuration file (e.g. `.git/config` in a
|
||||
@ -114,26 +109,26 @@ This will result in only b (a and c are cleared).
|
||||
|
||||
----
|
||||
|
||||
`push.recurseSubmodules`::
|
||||
May be `check`, `on-demand`, `only`, or `no`, with the same behavior
|
||||
as that of `push --recurse-submodules`.
|
||||
If not set, `no` is used by default, unless `submodule.recurse` is
|
||||
set (in which case a `true` value means `on-demand`).
|
||||
push.recurseSubmodules::
|
||||
May be "check", "on-demand", "only", or "no", with the same behavior
|
||||
as that of "push --recurse-submodules".
|
||||
If not set, 'no' is used by default, unless 'submodule.recurse' is
|
||||
set (in which case a 'true' value means 'on-demand').
|
||||
|
||||
`push.useForceIfIncludes`::
|
||||
If set to `true`, it is equivalent to specifying
|
||||
push.useForceIfIncludes::
|
||||
If set to "true", it is equivalent to specifying
|
||||
`--force-if-includes` as an option to linkgit:git-push[1]
|
||||
in the command line. Adding `--no-force-if-includes` at the
|
||||
time of push overrides this configuration setting.
|
||||
|
||||
`push.negotiate`::
|
||||
If set to `true`, attempt to reduce the size of the packfile
|
||||
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
|
||||
server attempt to find commits in common. If "false", Git will
|
||||
rely solely on the server's ref advertisement to find commits
|
||||
in common.
|
||||
|
||||
`push.useBitmaps`::
|
||||
If set to `false`, disable use of bitmaps for `git push` even if
|
||||
`pack.useBitmaps` is `true`, without preventing other git operations
|
||||
from using bitmaps. Default is `true`.
|
||||
push.useBitmaps::
|
||||
If set to "false", disable use of bitmaps for "git push" even if
|
||||
`pack.useBitmaps` is "true", without preventing other git operations
|
||||
from using bitmaps. Default is true.
|
||||
|
||||
@ -39,10 +39,3 @@ repack.cruftThreads::
|
||||
a cruft pack and the respective parameters are not given over
|
||||
the command line. See similarly named `pack.*` configuration
|
||||
variables for defaults and meaning.
|
||||
|
||||
repack.midxMustContainCruft::
|
||||
When set to true, linkgit:git-repack[1] will unconditionally include
|
||||
cruft pack(s), if any, in the multi-pack index when invoked with
|
||||
`--write-midx`. When false, cruft packs are only included in the MIDX
|
||||
when necessary (e.g., because they might be required to form a
|
||||
reachability closure with MIDX bitmaps). Defaults to true.
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
replay.refAction::
|
||||
Specifies the default mode for handling reference updates in
|
||||
`git replay`. The value can be:
|
||||
+
|
||||
--
|
||||
* `update`: Update refs directly using an atomic transaction (default behavior).
|
||||
* `print`: Output update-ref commands for pipeline use.
|
||||
--
|
||||
+
|
||||
This setting can be overridden with the `--ref-action` command-line option.
|
||||
When not configured, `git replay` defaults to `update` mode.
|
||||
@ -1,38 +1,38 @@
|
||||
sendemail.identity::
|
||||
A configuration identity. When given, causes values in the
|
||||
`sendemail.<identity>` subsection to take precedence over
|
||||
values in the `sendemail` section. The default identity is
|
||||
'sendemail.<identity>' subsection to take precedence over
|
||||
values in the 'sendemail' section. The default identity is
|
||||
the value of `sendemail.identity`.
|
||||
|
||||
sendemail.smtpEncryption::
|
||||
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.smtpSSLCertPath::
|
||||
Path to ca-certificates (either a directory or a single file).
|
||||
Set it to an empty string to disable certificate verification.
|
||||
|
||||
sendemail.<identity>.*::
|
||||
Identity-specific versions of the `sendemail.*` parameters
|
||||
Identity-specific versions of the 'sendemail.*' parameters
|
||||
found below, taking precedence over those when this
|
||||
identity is selected, through either the command-line or
|
||||
`sendemail.identity`.
|
||||
|
||||
sendemail.multiEdit::
|
||||
If `true` (default), a single editor instance will be spawned to edit
|
||||
If true (default), a single editor instance will be spawned to edit
|
||||
files you have to edit (patches when `--annotate` is used, and the
|
||||
summary when `--compose` is used). If `false`, files will be edited one
|
||||
summary when `--compose` is used). If false, files will be edited one
|
||||
after the other, spawning a new editor each time.
|
||||
|
||||
sendemail.confirm::
|
||||
Sets the default for whether to confirm before sending. Must be
|
||||
one of `always`, `never`, `cc`, `compose`, or `auto`. See `--confirm`
|
||||
one of 'always', 'never', 'cc', 'compose', or 'auto'. See `--confirm`
|
||||
in the linkgit:git-send-email[1] documentation for the meaning of these
|
||||
values.
|
||||
|
||||
sendemail.mailmap::
|
||||
If `true`, makes linkgit:git-send-email[1] assume `--mailmap`,
|
||||
otherwise assume `--no-mailmap`. `False` by default.
|
||||
If true, makes linkgit:git-send-email[1] assume `--mailmap`,
|
||||
otherwise assume `--no-mailmap`. False by default.
|
||||
|
||||
sendemail.mailmap.file::
|
||||
The location of a linkgit:git-send-email[1] specific augmenting
|
||||
@ -51,7 +51,7 @@ sendemail.aliasesFile::
|
||||
|
||||
sendemail.aliasFileType::
|
||||
Format of the file(s) specified in sendemail.aliasesFile. Must be
|
||||
one of `mutt`, `mailrc`, `pine`, `elm`, `gnus`, or `sendmail`.
|
||||
one of 'mutt', 'mailrc', 'pine', 'elm', 'gnus', or 'sendmail'.
|
||||
+
|
||||
What an alias file in each format looks like can be found in
|
||||
the documentation of the email program of the same name. The
|
||||
@ -88,8 +88,6 @@ sendemail.smtpServer::
|
||||
sendemail.smtpServerPort::
|
||||
sendemail.smtpServerOption::
|
||||
sendemail.smtpUser::
|
||||
sendemail.imapSentFolder::
|
||||
sendemail.useImapOnly::
|
||||
sendemail.thread::
|
||||
sendemail.transferEncoding::
|
||||
sendemail.validate::
|
||||
@ -98,17 +96,12 @@ sendemail.xmailer::
|
||||
linkgit:git-send-email[1] command-line options. See its
|
||||
documentation for details.
|
||||
|
||||
sendemail.outlookidfix::
|
||||
If `true`, makes linkgit:git-send-email[1] assume `--outlook-id-fix`,
|
||||
and if `false` assume `--no-outlook-id-fix`. If not specified, it will
|
||||
behave the same way as if `--outlook-id-fix` is not specified.
|
||||
|
||||
sendemail.signedOffCc (deprecated)::
|
||||
Deprecated alias for `sendemail.signedOffByCc`.
|
||||
|
||||
sendemail.smtpBatchSize::
|
||||
Number of messages to be sent per connection, after that a relogin
|
||||
will happen. If the value is `0` or undefined, send all messages in
|
||||
will happen. If the value is 0 or undefined, send all messages in
|
||||
one connection.
|
||||
See also the `--batch-size` option of linkgit:git-send-email[1].
|
||||
|
||||
@ -118,5 +111,5 @@ sendemail.smtpReloginDelay::
|
||||
|
||||
sendemail.forbidSendmailVariables::
|
||||
To avoid common misconfiguration mistakes, linkgit:git-send-email[1]
|
||||
will abort with a warning if any configuration options for `sendmail`
|
||||
will abort with a warning if any configuration options for "sendmail"
|
||||
exist. Set this variable to bypass the check.
|
||||
|
||||
@ -1,32 +1,14 @@
|
||||
ifndef::git-stash[]
|
||||
:see-show: See the description of the 'show' command in linkgit:git-stash[1].
|
||||
endif::git-stash[]
|
||||
|
||||
ifdef::git-stash[]
|
||||
:see-show:
|
||||
endif::git-stash[]
|
||||
|
||||
`stash.index`::
|
||||
If this is set to true, `git stash apply` and `git stash pop` will
|
||||
behave as if `--index` was supplied. Defaults to false.
|
||||
ifndef::git-stash[]
|
||||
See the descriptions in linkgit:git-stash[1].
|
||||
+
|
||||
This also affects invocations of linkgit:git-stash[1] via `--autostash` from
|
||||
commands like linkgit:git-merge[1], linkgit:git-rebase[1], and
|
||||
linkgit:git-pull[1].
|
||||
endif::git-stash[]
|
||||
|
||||
`stash.showIncludeUntracked`::
|
||||
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-show}
|
||||
the untracked files of a stash entry. Defaults to false. See
|
||||
the description of the 'show' command in linkgit:git-stash[1].
|
||||
|
||||
`stash.showPatch`::
|
||||
stash.showPatch::
|
||||
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.
|
||||
{see-show}
|
||||
See the description of the 'show' command in linkgit:git-stash[1].
|
||||
|
||||
`stash.showStat`::
|
||||
stash.showStat::
|
||||
If this is set to true, the `git stash show` command without an
|
||||
option will show a diffstat of the stash entry. Defaults to true.
|
||||
{see-show}
|
||||
See the description of the 'show' command in linkgit:git-stash[1].
|
||||
|
||||
@ -1,23 +1,17 @@
|
||||
`tag.forceSignAnnotated`::
|
||||
tag.forceSignAnnotated::
|
||||
A boolean to specify whether annotated tags created should be GPG signed.
|
||||
If `--annotate` is specified on the command line, it takes
|
||||
precedence over this option.
|
||||
|
||||
`tag.sort`::
|
||||
ifdef::git-tag[]
|
||||
This variable controls the sort ordering of tags when displayed by `git-tag`.
|
||||
endif::git-tag[]
|
||||
ifndef::git-tag[]
|
||||
This variable controls the sort ordering of tags when displayed by
|
||||
linkgit:git-tag[1].
|
||||
endif::git-tag[]
|
||||
Without the `--sort=<value>` option provided, the value of this variable will
|
||||
be used as the default.
|
||||
tag.sort::
|
||||
This variable controls the sort ordering of tags when displayed by
|
||||
linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the
|
||||
value of this variable will be used as the default.
|
||||
|
||||
`tag.gpgSign`::
|
||||
tag.gpgSign::
|
||||
A boolean to specify whether all tags should be GPG signed.
|
||||
Use of this option when running in an automated script can
|
||||
result in a large number of tags being signed. It is therefore
|
||||
convenient to use an agent to avoid typing your GPG passphrase
|
||||
convenient to use an agent to avoid typing your gpg passphrase
|
||||
several times. Note that this option doesn't affect tag signing
|
||||
behavior enabled by `-u <keyid>` or `--local-user=<keyid>` options.
|
||||
behavior enabled by "-u <keyid>" or "--local-user=<keyid>" options.
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
`worktree.guessRemote`::
|
||||
worktree.guessRemote::
|
||||
If no branch is specified and neither `-b` nor `-B` nor
|
||||
`--detach` is used, then `git worktree add` defaults to
|
||||
creating a new branch from HEAD. If `worktree.guessRemote` is
|
||||
@ -6,14 +6,14 @@
|
||||
branch whose name uniquely matches the new branch name. If
|
||||
such a branch exists, it is checked out and set as "upstream"
|
||||
for the new branch. If no such match can be found, it falls
|
||||
back to creating a new branch from the current `HEAD`.
|
||||
back to creating a new branch from the current HEAD.
|
||||
|
||||
`worktree.useRelativePaths`::
|
||||
Link worktrees using relative paths (when "`true`") or absolute
|
||||
paths (when "`false`"). This is particularly useful for setups
|
||||
worktree.useRelativePaths::
|
||||
Link worktrees using relative paths (when "true") or absolute
|
||||
paths (when "false"). This is particularly useful for setups
|
||||
where the repository and worktrees may be moved between
|
||||
different locations or environments. Defaults to "`false`".
|
||||
different locations or environments. Defaults to "false".
|
||||
+
|
||||
Note that setting `worktree.useRelativePaths` to "`true`" implies enabling the
|
||||
`extensions.relativeWorktrees` config (see linkgit:git-config[1]),
|
||||
Note that setting `worktree.useRelativePaths` to "true" implies enabling the
|
||||
`extension.relativeWorktrees` config (see linkgit:git-config[1]),
|
||||
thus making it incompatible with older versions of Git.
|
||||
|
||||
@ -1,20 +0,0 @@
|
||||
`--diff-algorithm=(patience|minimal|histogram|myers)`::
|
||||
Choose a diff algorithm. The variants are as follows:
|
||||
+
|
||||
--
|
||||
`default`;;
|
||||
`myers`;;
|
||||
The basic greedy diff algorithm. Currently, this is the default.
|
||||
`minimal`;;
|
||||
Spend extra time to make sure the smallest possible diff is
|
||||
produced.
|
||||
`patience`;;
|
||||
Use "patience diff" algorithm when generating patches.
|
||||
`histogram`;;
|
||||
This algorithm extends the patience algorithm to "support
|
||||
low-occurrence common elements".
|
||||
--
|
||||
+
|
||||
For instance, if you configured the `diff.algorithm` variable to a
|
||||
non-default value and want to use the default one, then you
|
||||
have to use `--diff-algorithm=default` option.
|
||||
@ -1,10 +0,0 @@
|
||||
`-U<n>`::
|
||||
`--unified=<n>`::
|
||||
Generate diffs with _<n>_ lines of context. Defaults to `diff.context`
|
||||
or 3 if the config option is unset.
|
||||
|
||||
`--inter-hunk-context=<n>`::
|
||||
Show the context between diff hunks, up to the specified _<number>_
|
||||
of lines, thereby fusing hunks that are close to each other.
|
||||
Defaults to `diff.interHunkContext` or 0 if the config option
|
||||
is unset.
|
||||
@ -103,7 +103,6 @@ if the file was renamed on any side of history. With
|
||||
followed by the name of the path in the merge commit.
|
||||
|
||||
Examples for `-c` and `--cc` without `--combined-all-paths`:
|
||||
|
||||
------------------------------------------------
|
||||
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c
|
||||
::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM bar.sh
|
||||
|
||||
@ -138,7 +138,7 @@ or like this (when the `--cc` option is used):
|
||||
+
|
||||
[synopsis]
|
||||
index <hash>,<hash>..<hash>
|
||||
mode <mode>,<mode>..<mode>
|
||||
mode <mode>,<mode>`..`<mode>
|
||||
new file mode <mode>
|
||||
deleted file mode <mode>,<mode>
|
||||
+
|
||||
|
||||
@ -37,32 +37,32 @@ endif::git-diff[]
|
||||
endif::git-format-patch[]
|
||||
|
||||
ifdef::git-log[]
|
||||
`-m`::
|
||||
-m::
|
||||
Show diffs for merge commits in the default format. This is
|
||||
similar to `--diff-merges=on`, except `-m` will
|
||||
produce no output unless `-p` is given as well.
|
||||
|
||||
`-c`::
|
||||
-c::
|
||||
Produce combined diff output for merge commits.
|
||||
Shortcut for `--diff-merges=combined -p`.
|
||||
|
||||
`--cc`::
|
||||
--cc::
|
||||
Produce dense combined diff output for merge commits.
|
||||
Shortcut for `--diff-merges=dense-combined -p`.
|
||||
|
||||
`--dd`::
|
||||
--dd::
|
||||
Produce diff with respect to first parent for both merge and
|
||||
regular commits.
|
||||
Shortcut for `--diff-merges=first-parent -p`.
|
||||
|
||||
`--remerge-diff`::
|
||||
--remerge-diff::
|
||||
Produce remerge-diff output for merge commits.
|
||||
Shortcut for `--diff-merges=remerge -p`.
|
||||
|
||||
`--no-diff-merges`::
|
||||
--no-diff-merges::
|
||||
Synonym for `--diff-merges=off`.
|
||||
|
||||
`--diff-merges=<format>`::
|
||||
--diff-merges=<format>::
|
||||
Specify diff format to be used for merge commits. Default is
|
||||
{diff-merges-default} unless `--first-parent` is in use, in
|
||||
which case `first-parent` is the default.
|
||||
@ -70,54 +70,48 @@ ifdef::git-log[]
|
||||
The following formats are supported:
|
||||
+
|
||||
--
|
||||
`off`::
|
||||
`none`::
|
||||
off, none::
|
||||
Disable output of diffs for merge commits. Useful to override
|
||||
implied value.
|
||||
|
||||
`on`::
|
||||
`m`::
|
||||
on, m::
|
||||
Make diff output for merge commits to be shown in the default
|
||||
format. The default format can be changed using
|
||||
`log.diffMerges` configuration variable, whose default value
|
||||
is `separate`.
|
||||
|
||||
`first-parent`::
|
||||
`1`::
|
||||
first-parent, 1::
|
||||
Show full diff with respect to first parent. This is the same
|
||||
format as `--patch` produces for non-merge commits.
|
||||
|
||||
`separate`::
|
||||
separate::
|
||||
Show full diff with respect to each of parents.
|
||||
Separate log entry and diff is generated for each parent.
|
||||
|
||||
`combined`::
|
||||
`c`::
|
||||
combined, c::
|
||||
Show differences from each of the parents to the merge
|
||||
result simultaneously instead of showing pairwise diff between
|
||||
a parent and the result one at a time. Furthermore, it lists
|
||||
only files which were modified from all parents.
|
||||
|
||||
`dense-combined`::
|
||||
`cc`::
|
||||
dense-combined, cc::
|
||||
Further compress output produced by `--diff-merges=combined`
|
||||
by omitting uninteresting hunks whose contents in the parents
|
||||
have only two variants and the merge result picks one of them
|
||||
without modification.
|
||||
|
||||
`remerge`::
|
||||
`r`:: Remerge two-parent merge commits to create a temporary tree
|
||||
remerge, r::
|
||||
Remerge two-parent merge commits to create a temporary tree
|
||||
object--potentially containing files with conflict markers
|
||||
and such. A diff is then shown between that temporary tree
|
||||
and the actual merge commit.
|
||||
--
|
||||
+
|
||||
The output emitted when this option is used is subject to change, and
|
||||
so is its interaction with other options (unless explicitly
|
||||
documented).
|
||||
--
|
||||
|
||||
|
||||
`--combined-all-paths`::
|
||||
--combined-all-paths::
|
||||
Cause combined diffs (used for merge commits) to
|
||||
list the name of the file from all parents. It thus only has
|
||||
effect when `--diff-merges=[dense-]combined` is in use, and
|
||||
@ -197,7 +191,26 @@ and starts with _<text>_, this algorithm attempts to prevent it from
|
||||
appearing as a deletion or addition in the output. It uses the "patience
|
||||
diff" algorithm internally.
|
||||
|
||||
include::diff-algorithm-option.adoc[]
|
||||
`--diff-algorithm=(patience|minimal|histogram|myers)`::
|
||||
Choose a diff algorithm. The variants are as follows:
|
||||
+
|
||||
--
|
||||
`default`;;
|
||||
`myers`;;
|
||||
The basic greedy diff algorithm. Currently, this is the default.
|
||||
`minimal`;;
|
||||
Spend extra time to make sure the smallest possible diff is
|
||||
produced.
|
||||
`patience`;;
|
||||
Use "patience diff" algorithm when generating patches.
|
||||
`histogram`;;
|
||||
This algorithm extends the patience algorithm to "support
|
||||
low-occurrence common elements".
|
||||
--
|
||||
+
|
||||
For instance, if you configured the `diff.algorithm` variable to a
|
||||
non-default value and want to use the default one, then you
|
||||
have to use `--diff-algorithm=default` option.
|
||||
|
||||
`--stat[=<width>[,<name-width>[,<count>]]]`::
|
||||
Generate a diffstat. By default, as much space as necessary
|
||||
@ -486,8 +499,7 @@ endif::git-format-patch[]
|
||||
Turn off rename detection, even when the configuration
|
||||
file gives the default to do so.
|
||||
|
||||
`--rename-empty`::
|
||||
`--no-rename-empty`::
|
||||
`--[no-]rename-empty`::
|
||||
Whether to use empty blobs as rename source.
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
@ -875,33 +887,5 @@ endif::git-format-patch[]
|
||||
reverted with `--ita-visible-in-index`. Both options are
|
||||
experimental and could be removed in future.
|
||||
|
||||
--max-depth=<depth>::
|
||||
For each pathspec given on command line, descend at most `<depth>`
|
||||
levels of directories. A value of `-1` means no limit.
|
||||
Cannot be combined with wildcards in the pathspec.
|
||||
Given a tree containing `foo/bar/baz`, the following list shows the
|
||||
matches generated by each set of options:
|
||||
+
|
||||
--
|
||||
- `--max-depth=0 -- foo`: `foo`
|
||||
|
||||
- `--max-depth=1 -- foo`: `foo/bar`
|
||||
|
||||
- `--max-depth=1 -- foo/bar`: `foo/bar/baz`
|
||||
|
||||
- `--max-depth=1 -- foo foo/bar`: `foo/bar/baz`
|
||||
|
||||
- `--max-depth=2 -- foo`: `foo/bar/baz`
|
||||
--
|
||||
+
|
||||
If no pathspec is given, the depth is measured as if all
|
||||
top-level entries were specified. Note that this is different
|
||||
than measuring from the root, in that `--max-depth=0` would
|
||||
still return `foo`. This allows you to still limit depth while
|
||||
asking for a subset of the top-level entries.
|
||||
+
|
||||
Note that this option is only supported for diffs between tree objects,
|
||||
not against the index or working tree.
|
||||
|
||||
For more detailed explanation on these common options, see also
|
||||
linkgit:gitdiffcore[7].
|
||||
|
||||
@ -1,41 +1,40 @@
|
||||
`--all`::
|
||||
`--no-all`::
|
||||
--[no-]all::
|
||||
Fetch all remotes, except for the ones that has the
|
||||
`remote.<name>.skipFetchAll` configuration variable set.
|
||||
This overrides the configuration variable `fetch.all`.
|
||||
This overrides the configuration variable fetch.all`.
|
||||
|
||||
`-a`::
|
||||
`--append`::
|
||||
-a::
|
||||
--append::
|
||||
Append ref names and object names of fetched refs to the
|
||||
existing contents of `.git/FETCH_HEAD`. Without this
|
||||
option old data in `.git/FETCH_HEAD` will be overwritten.
|
||||
|
||||
`--atomic`::
|
||||
--atomic::
|
||||
Use an atomic transaction to update local refs. Either all refs are
|
||||
updated, or on error, no refs are updated.
|
||||
|
||||
`--depth=<depth>`::
|
||||
--depth=<depth>::
|
||||
Limit fetching to the specified number of commits from the tip of
|
||||
each remote branch history. If fetching to a 'shallow' repository
|
||||
created by `git clone` with `--depth=<depth>` option (see
|
||||
linkgit:git-clone[1]), deepen or shorten the history to the specified
|
||||
number of commits. Tags for the deepened commits are not fetched.
|
||||
|
||||
`--deepen=<depth>`::
|
||||
Similar to `--depth`, except it specifies the number of commits
|
||||
--deepen=<depth>::
|
||||
Similar to --depth, except it specifies the number of commits
|
||||
from the current shallow boundary instead of from the tip of
|
||||
each remote branch history.
|
||||
|
||||
`--shallow-since=<date>`::
|
||||
--shallow-since=<date>::
|
||||
Deepen or shorten the history of a shallow repository to
|
||||
include all reachable commits after _<date>_.
|
||||
include all reachable commits after <date>.
|
||||
|
||||
`--shallow-exclude=<ref>`::
|
||||
--shallow-exclude=<ref>::
|
||||
Deepen or shorten the history of a shallow repository to
|
||||
exclude commits reachable from a specified remote branch or tag.
|
||||
This option can be specified multiple times.
|
||||
|
||||
`--unshallow`::
|
||||
--unshallow::
|
||||
If the source repository is complete, convert a shallow
|
||||
repository to a complete one, removing all the limitations
|
||||
imposed by shallow repositories.
|
||||
@ -43,13 +42,13 @@
|
||||
If the source repository is shallow, fetch as much as possible so that
|
||||
the current repository has the same history as the source repository.
|
||||
|
||||
`--update-shallow`::
|
||||
--update-shallow::
|
||||
By default when fetching from a shallow repository,
|
||||
`git fetch` refuses refs that require updating
|
||||
`.git/shallow`. This option updates `.git/shallow` and accepts such
|
||||
.git/shallow. This option updates .git/shallow and accepts such
|
||||
refs.
|
||||
|
||||
`--negotiation-tip=(<commit>|<glob>)`::
|
||||
--negotiation-tip=<commit|glob>::
|
||||
By default, Git will report, to the server, commits reachable
|
||||
from all local refs to find common commits in an attempt to
|
||||
reduce the size of the to-be-received packfile. If specified,
|
||||
@ -69,28 +68,27 @@ See also the `fetch.negotiationAlgorithm` and `push.negotiate`
|
||||
configuration variables documented in linkgit:git-config[1], and the
|
||||
`--negotiate-only` option below.
|
||||
|
||||
`--negotiate-only`::
|
||||
--negotiate-only::
|
||||
Do not fetch anything from the server, and instead print the
|
||||
ancestors of the provided `--negotiation-tip=` arguments,
|
||||
ancestors of the provided `--negotiation-tip=*` arguments,
|
||||
which we have in common with the server.
|
||||
+
|
||||
This is incompatible with `--recurse-submodules=(yes|on-demand)`.
|
||||
This is incompatible with `--recurse-submodules=[yes|on-demand]`.
|
||||
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.
|
||||
|
||||
`--porcelain`::
|
||||
--porcelain::
|
||||
Print the output to standard output in an easy-to-parse format for
|
||||
scripts. See section OUTPUT in linkgit:git-fetch[1] for details.
|
||||
+
|
||||
This is incompatible with `--recurse-submodules=(yes|on-demand)` and takes
|
||||
This is incompatible with `--recurse-submodules=[yes|on-demand]` and takes
|
||||
precedence over the `fetch.output` config option.
|
||||
|
||||
ifndef::git-pull[]
|
||||
`--write-fetch-head`::
|
||||
`--no-write-fetch-head`::
|
||||
--[no-]write-fetch-head::
|
||||
Write the list of remote refs fetched in the `FETCH_HEAD`
|
||||
file directly under `$GIT_DIR`. This is the default.
|
||||
Passing `--no-write-fetch-head` from the command line tells
|
||||
@ -98,65 +96,61 @@ ifndef::git-pull[]
|
||||
file is never written.
|
||||
endif::git-pull[]
|
||||
|
||||
`-f`::
|
||||
`--force`::
|
||||
-f::
|
||||
--force::
|
||||
When 'git fetch' is used with `<src>:<dst>` refspec, it may
|
||||
refuse to update the local branch as discussed
|
||||
ifdef::git-pull[]
|
||||
When `git fetch` is used with `<src>:<dst>` refspec, it may
|
||||
refuse to update the local branch as discussed
|
||||
in the _<refspec>_ part of the linkgit:git-fetch[1]
|
||||
documentation.
|
||||
in the `<refspec>` part of the linkgit:git-fetch[1]
|
||||
documentation.
|
||||
endif::git-pull[]
|
||||
ifndef::git-pull[]
|
||||
When `git fetch` is used with `<src>:<dst>` refspec, it may
|
||||
refuse to update the local branch as discussed in the _<refspec>_ part below.
|
||||
in the `<refspec>` part below.
|
||||
endif::git-pull[]
|
||||
This option overrides that check.
|
||||
This option overrides that check.
|
||||
|
||||
`-k`::
|
||||
`--keep`::
|
||||
-k::
|
||||
--keep::
|
||||
Keep downloaded pack.
|
||||
|
||||
ifndef::git-pull[]
|
||||
`--multiple`::
|
||||
Allow several _<repository>_ and _<group>_ arguments to be
|
||||
specified. No __<refspec>__s may be specified.
|
||||
--multiple::
|
||||
Allow several <repository> and <group> arguments to be
|
||||
specified. No <refspec>s may be specified.
|
||||
|
||||
`--auto-maintenance`::
|
||||
`--no-auto-maintenance`::
|
||||
`--auto-gc`::
|
||||
`--no-auto-gc`::
|
||||
--[no-]auto-maintenance::
|
||||
--[no-]auto-gc::
|
||||
Run `git maintenance run --auto` at the end to perform automatic
|
||||
repository maintenance if needed.
|
||||
repository maintenance if needed. (`--[no-]auto-gc` is a synonym.)
|
||||
This is enabled by default.
|
||||
|
||||
`--write-commit-graph`::
|
||||
`--no-write-commit-graph`::
|
||||
--[no-]write-commit-graph::
|
||||
Write a commit-graph after fetching. This overrides the config
|
||||
setting `fetch.writeCommitGraph`.
|
||||
endif::git-pull[]
|
||||
|
||||
`--prefetch`::
|
||||
--prefetch::
|
||||
Modify the configured refspec to place all refs into the
|
||||
`refs/prefetch/` namespace. See the `prefetch` task in
|
||||
linkgit:git-maintenance[1].
|
||||
|
||||
`-p`::
|
||||
`--prune`::
|
||||
-p::
|
||||
--prune::
|
||||
Before fetching, remove any remote-tracking references that no
|
||||
longer exist on the remote. Tags are not subject to pruning
|
||||
if they are fetched only because of the default tag
|
||||
auto-following or due to a `--tags` option. However, if tags
|
||||
auto-following or due to a --tags option. However, if tags
|
||||
are fetched due to an explicit refspec (either on the command
|
||||
line or in the remote configuration, for example if the remote
|
||||
was cloned with the `--mirror` option), then they are also
|
||||
was cloned with the --mirror option), then they are also
|
||||
subject to pruning. Supplying `--prune-tags` is a shorthand for
|
||||
providing the tag refspec.
|
||||
ifndef::git-pull[]
|
||||
+
|
||||
See the PRUNING section below for more details.
|
||||
|
||||
`-P`::
|
||||
`--prune-tags`::
|
||||
-P::
|
||||
--prune-tags::
|
||||
Before fetching, remove any local tags that no longer exist on
|
||||
the remote if `--prune` is enabled. This option should be used
|
||||
more carefully, unlike `--prune` it will remove any local
|
||||
@ -169,17 +163,17 @@ See the PRUNING section below for more details.
|
||||
endif::git-pull[]
|
||||
|
||||
ifndef::git-pull[]
|
||||
`-n`::
|
||||
-n::
|
||||
endif::git-pull[]
|
||||
`--no-tags`::
|
||||
--no-tags::
|
||||
By default, tags that point at objects that are downloaded
|
||||
from the remote repository are fetched and stored locally.
|
||||
This option disables this automatic tag following. The default
|
||||
behavior for a remote may be specified with the `remote.<name>.tagOpt`
|
||||
behavior for a remote may be specified with the remote.<name>.tagOpt
|
||||
setting. See linkgit:git-config[1].
|
||||
|
||||
ifndef::git-pull[]
|
||||
`--refetch`::
|
||||
--refetch::
|
||||
Instead of negotiating with the server to avoid transferring commits and
|
||||
associated objects that are already present locally, this option fetches
|
||||
all objects as a fresh clone would. Use this to reapply a partial clone
|
||||
@ -188,29 +182,29 @@ ifndef::git-pull[]
|
||||
object database pack consolidation to remove any duplicate objects.
|
||||
endif::git-pull[]
|
||||
|
||||
`--refmap=<refspec>`::
|
||||
--refmap=<refspec>::
|
||||
When fetching refs listed on the command line, use the
|
||||
specified refspec (can be given more than once) to map the
|
||||
refs to remote-tracking branches, instead of the values of
|
||||
`remote.<name>.fetch` configuration variables for the remote
|
||||
repository. Providing an empty _<refspec>_ to the
|
||||
`remote.*.fetch` configuration variables for the remote
|
||||
repository. Providing an empty `<refspec>` to the
|
||||
`--refmap` option causes Git to ignore the configured
|
||||
refspecs and rely entirely on the refspecs supplied as
|
||||
command-line arguments. See section on "Configured Remote-tracking
|
||||
Branches" for details.
|
||||
|
||||
`-t`::
|
||||
`--tags`::
|
||||
-t::
|
||||
--tags::
|
||||
Fetch all tags from the remote (i.e., fetch remote tags
|
||||
`refs/tags/*` into local tags with the same name), in addition
|
||||
to whatever else would otherwise be fetched. Using this
|
||||
option alone does not subject tags to pruning, even if `--prune`
|
||||
option alone does not subject tags to pruning, even if --prune
|
||||
is used (though tags may be pruned anyway if they are also the
|
||||
destination of an explicit refspec; see `--prune`).
|
||||
|
||||
ifndef::git-pull[]
|
||||
`--recurse-submodules[=(yes|on-demand|no)]`::
|
||||
Control if and under what conditions new commits of
|
||||
--recurse-submodules[=(yes|on-demand|no)]::
|
||||
This option controls if and under what conditions new commits of
|
||||
submodules should be fetched too. When recursing through submodules,
|
||||
`git fetch` always attempts to fetch "changed" submodules, that is, a
|
||||
submodule that has commits that are referenced by a newly fetched
|
||||
@ -220,19 +214,19 @@ ifndef::git-pull[]
|
||||
adds a new submodule, that submodule cannot be fetched until it is
|
||||
cloned e.g. by `git submodule update`.
|
||||
+
|
||||
When set to `on-demand`, only changed submodules are fetched. When set
|
||||
to `yes`, all populated submodules are fetched and submodules that are
|
||||
both unpopulated and changed are fetched. When set to `no`, submodules
|
||||
When set to 'on-demand', only changed submodules are fetched. When set
|
||||
to 'yes', all populated submodules are fetched and submodules that are
|
||||
both unpopulated and changed are fetched. When set to 'no', submodules
|
||||
are never fetched.
|
||||
+
|
||||
When unspecified, this uses the value of `fetch.recurseSubmodules` if it
|
||||
is set (see linkgit:git-config[1]), defaulting to `on-demand` if unset.
|
||||
When this option is used without any value, it defaults to `yes`.
|
||||
is set (see linkgit:git-config[1]), defaulting to 'on-demand' if unset.
|
||||
When this option is used without any value, it defaults to 'yes'.
|
||||
endif::git-pull[]
|
||||
|
||||
`-j <n>`::
|
||||
`--jobs=<n>`::
|
||||
Parallelize all forms of fetching up to _<n>_ jobs at a time.
|
||||
-j::
|
||||
--jobs=<n>::
|
||||
Number of parallel children to be used for all forms of fetching.
|
||||
+
|
||||
If the `--multiple` option was specified, the different remotes will be fetched
|
||||
in parallel. If multiple submodules are fetched, they will be fetched in
|
||||
@ -243,12 +237,12 @@ Typically, parallel recursive and multi-remote fetches will be faster. By
|
||||
default fetches are performed sequentially, not in parallel.
|
||||
|
||||
ifndef::git-pull[]
|
||||
`--no-recurse-submodules`::
|
||||
--no-recurse-submodules::
|
||||
Disable recursive fetching of submodules (this has the same effect as
|
||||
using the `--recurse-submodules=no` option).
|
||||
endif::git-pull[]
|
||||
|
||||
`--set-upstream`::
|
||||
--set-upstream::
|
||||
If the remote is fetched successfully, add upstream
|
||||
(tracking) reference, used by argument-less
|
||||
linkgit:git-pull[1] and other commands. For more information,
|
||||
@ -256,57 +250,57 @@ endif::git-pull[]
|
||||
linkgit:git-config[1].
|
||||
|
||||
ifndef::git-pull[]
|
||||
`--submodule-prefix=<path>`::
|
||||
Prepend _<path>_ to paths printed in informative messages
|
||||
--submodule-prefix=<path>::
|
||||
Prepend <path> to paths printed in informative messages
|
||||
such as "Fetching submodule foo". This option is used
|
||||
internally when recursing over submodules.
|
||||
|
||||
`--recurse-submodules-default=(yes|on-demand)`::
|
||||
--recurse-submodules-default=[yes|on-demand]::
|
||||
This option is used internally to temporarily provide a
|
||||
non-negative default value for the `--recurse-submodules`
|
||||
non-negative default value for the --recurse-submodules
|
||||
option. All other methods of configuring fetch's submodule
|
||||
recursion (such as settings in linkgit:gitmodules[5] and
|
||||
linkgit:git-config[1]) override this option, as does
|
||||
specifying `--[no-]recurse-submodules` directly.
|
||||
specifying --[no-]recurse-submodules directly.
|
||||
|
||||
`-u`::
|
||||
`--update-head-ok`::
|
||||
By default `git fetch` refuses to update the head which
|
||||
-u::
|
||||
--update-head-ok::
|
||||
By default 'git fetch' refuses to update the head which
|
||||
corresponds to the current branch. This flag disables the
|
||||
check. This is purely for the internal use for `git pull`
|
||||
to communicate with `git fetch`, and unless you are
|
||||
check. This is purely for the internal use for 'git pull'
|
||||
to communicate with 'git fetch', and unless you are
|
||||
implementing your own Porcelain you are not supposed to
|
||||
use it.
|
||||
endif::git-pull[]
|
||||
|
||||
`--upload-pack <upload-pack>`::
|
||||
--upload-pack <upload-pack>::
|
||||
When given, and the repository to fetch from is handled
|
||||
by `git fetch-pack`, `--exec=<upload-pack>` is passed to
|
||||
by 'git fetch-pack', `--exec=<upload-pack>` is passed to
|
||||
the command to specify non-default path for the command
|
||||
run on the other end.
|
||||
|
||||
ifndef::git-pull[]
|
||||
`-q`::
|
||||
`--quiet`::
|
||||
Pass `--quiet` to `git-fetch-pack` and silence any other internally
|
||||
-q::
|
||||
--quiet::
|
||||
Pass --quiet to git-fetch-pack and silence any other internally
|
||||
used git commands. Progress is not reported to the standard error
|
||||
stream.
|
||||
|
||||
`-v`::
|
||||
`--verbose`::
|
||||
-v::
|
||||
--verbose::
|
||||
Be verbose.
|
||||
endif::git-pull[]
|
||||
|
||||
`--progress`::
|
||||
--progress::
|
||||
Progress status is reported on the standard error stream
|
||||
by default when it is attached to a terminal, unless `-q`
|
||||
by default when it is attached to a terminal, unless -q
|
||||
is specified. This flag forces progress status even if the
|
||||
standard error stream is not directed to a terminal.
|
||||
|
||||
`-o <option>`::
|
||||
`--server-option=<option>`::
|
||||
-o <option>::
|
||||
--server-option=<option>::
|
||||
Transmit the given string to the server when communicating using
|
||||
protocol version 2. The given string must not contain a _NUL_ or _LF_
|
||||
protocol version 2. The given string must not contain a NUL or LF
|
||||
character. The server's handling of server options, including
|
||||
unknown ones, is server-specific.
|
||||
When multiple `--server-option=<option>` are given, they are all
|
||||
@ -315,23 +309,23 @@ endif::git-pull[]
|
||||
the values of configuration variable `remote.<name>.serverOption`
|
||||
are used instead.
|
||||
|
||||
`--show-forced-updates`::
|
||||
--show-forced-updates::
|
||||
By default, git checks if a branch is force-updated during
|
||||
fetch. This can be disabled through `fetch.showForcedUpdates`, but
|
||||
the `--show-forced-updates` option guarantees this check occurs.
|
||||
fetch. This can be disabled through fetch.showForcedUpdates, but
|
||||
the --show-forced-updates option guarantees this check occurs.
|
||||
See linkgit:git-config[1].
|
||||
|
||||
`--no-show-forced-updates`::
|
||||
--no-show-forced-updates::
|
||||
By default, git checks if a branch is force-updated during
|
||||
fetch. Pass `--no-show-forced-updates` or set `fetch.showForcedUpdates`
|
||||
fetch. Pass --no-show-forced-updates or set fetch.showForcedUpdates
|
||||
to false to skip this check for performance reasons. If used during
|
||||
`git-pull` the `--ff-only` option will still check for forced updates
|
||||
'git-pull' the --ff-only option will still check for forced updates
|
||||
before attempting a fast-forward update. See linkgit:git-config[1].
|
||||
|
||||
`-4`::
|
||||
`--ipv4`::
|
||||
-4::
|
||||
--ipv4::
|
||||
Use IPv4 addresses only, ignoring IPv6 addresses.
|
||||
|
||||
`-6`::
|
||||
`--ipv6`::
|
||||
-6::
|
||||
--ipv6::
|
||||
Use IPv6 addresses only, ignoring IPv4 addresses.
|
||||
|
||||
@ -1,85 +0,0 @@
|
||||
`<pattern>...`::
|
||||
If one or more _<pattern>_ parameters are given, only refs are shown that
|
||||
match against at least one pattern, either using `fnmatch`(3) or
|
||||
literally, in the latter case matching completely or from the
|
||||
beginning up to a slash.
|
||||
|
||||
`--stdin`::
|
||||
The list of patterns is read from standard input instead of from
|
||||
the argument list.
|
||||
|
||||
`--count=<count>`::
|
||||
Stop after showing _<count>_ refs.
|
||||
|
||||
`--sort=<key>`::
|
||||
Sort on the field name _<key>_. Prefix `-` to sort in
|
||||
descending order of the value. When unspecified,
|
||||
`refname` is used. You may use the `--sort=<key>` option
|
||||
multiple times, in which case the last key becomes the primary
|
||||
key.
|
||||
|
||||
`--format[=<format>]`::
|
||||
A string that interpolates `%(fieldname)` from a ref being shown and
|
||||
the object it points at. In addition, the string literal `%%`
|
||||
renders as `%` and `%xx` - where `xx` are hex digits - renders as
|
||||
the character with hex code `xx`. For example, `%00` interpolates to
|
||||
`\0` (_NUL_), `%09` to `\t` (_TAB_), and `%0a` to `\n` (_LF_).
|
||||
|
||||
When unspecified, _<format>_ defaults to `%(objectname) SPC %(objecttype)
|
||||
TAB %(refname)`.
|
||||
|
||||
`--color[=<when>]`::
|
||||
Respect any colors specified in the `--format` option. The
|
||||
_<when__ field must be one of `always`, `never`, or `auto` (if
|
||||
`<when>` is absent, behave as if `always` was given).
|
||||
|
||||
`--shell`::
|
||||
`--perl`::
|
||||
`--python`::
|
||||
`--tcl`::
|
||||
If given, strings that substitute `%(fieldname)`
|
||||
placeholders are quoted as string literals suitable for
|
||||
the specified host language. This is meant to produce
|
||||
a scriptlet that can directly be "eval"ed.
|
||||
|
||||
`--points-at=<object>`::
|
||||
Only list refs which points at the given object.
|
||||
|
||||
`--merged[=<object>]`::
|
||||
Only list refs whose tips are reachable from the
|
||||
specified commit (`HEAD` if not specified).
|
||||
|
||||
`--no-merged[=<object>]`::
|
||||
Only list refs whose tips are not reachable from _<object>_(`HEAD` if not
|
||||
specified).
|
||||
|
||||
`--contains[=<object>]`::
|
||||
Only list refs which contain _<object>_(`HEAD` if not specified).
|
||||
|
||||
`--no-contains[=<object>]`::
|
||||
Only list refs which don't contain _<object>_ (`HEAD`
|
||||
if not specified).
|
||||
|
||||
`--ignore-case`::
|
||||
Sorting and filtering refs are case insensitive.
|
||||
|
||||
`--omit-empty`::
|
||||
Do not print a newline after formatted refs where the format expands
|
||||
to the empty string.
|
||||
|
||||
`--exclude=<excluded-pattern>`::
|
||||
If one or more `--exclude` options are given, only refs which do not
|
||||
match any _<excluded-pattern>_ parameters are shown. Matching is done
|
||||
using the same rules as _<pattern>_ above.
|
||||
|
||||
`--include-root-refs`::
|
||||
List root refs (`HEAD` and pseudorefs) apart from regular refs.
|
||||
|
||||
`--start-after=<marker>`::
|
||||
Allows paginating the output by skipping references up to and including the
|
||||
specified marker. When paging, it should be noted that references may be
|
||||
deleted, modified or added between invocations. Output will only yield those
|
||||
references which follow the marker lexicographically. Output begins from the
|
||||
first reference that would come after the marker alphabetically. Cannot be
|
||||
used with `--sort=<key>` or `--stdin` options, or the _<pattern>_ argument(s)
|
||||
to limit the refs.
|
||||
@ -10,12 +10,6 @@
|
||||
`badFilemode`::
|
||||
(INFO) A tree contains a bad filemode entry.
|
||||
|
||||
`badGpgsig`::
|
||||
(ERROR) A tag contains a bad (truncated) signature (e.g., `gpgsig`) header.
|
||||
|
||||
`badHeaderContinuation`::
|
||||
(ERROR) A continuation header (such as for `gpgsig`) is unexpectedly truncated.
|
||||
|
||||
`badName`::
|
||||
(ERROR) An author/committer name is empty.
|
||||
|
||||
@ -44,9 +38,6 @@
|
||||
`badReferentName`::
|
||||
(ERROR) The referent name of a symref is invalid.
|
||||
|
||||
`badReftableTableName`::
|
||||
(WARN) A reftable table has an invalid name.
|
||||
|
||||
`badTagName`::
|
||||
(INFO) A tag has an invalid format.
|
||||
|
||||
@ -113,6 +104,9 @@
|
||||
`gitmodulesParse`::
|
||||
(INFO) Could not parse `.gitmodules` blob.
|
||||
|
||||
`gitmodulesLarge`;
|
||||
(ERROR) `.gitmodules` blob is too large to parse.
|
||||
|
||||
`gitmodulesPath`::
|
||||
(ERROR) `.gitmodules` path is invalid.
|
||||
|
||||
|
||||
@ -16,18 +16,18 @@ git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [-
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Add contents of new or changed files to the index. The "index" (also
|
||||
known as the "staging area") is what you use to prepare the contents of
|
||||
the next commit.
|
||||
This command updates the index using the current content found in
|
||||
the working tree, to prepare the content staged for the next commit.
|
||||
It typically adds the current content of existing paths as a whole,
|
||||
but with some options it can also be used to add content with
|
||||
only part of the changes made to the working tree files applied, or
|
||||
remove paths that do not exist in the working tree anymore.
|
||||
|
||||
When you run `git commit` without any other arguments, it will only
|
||||
commit staged changes. For example, if you've edited `file.c` and want
|
||||
to commit your changes to that file, you can run:
|
||||
|
||||
git add file.c
|
||||
git commit
|
||||
|
||||
You can also add only part of your changes to a file with `git add -p`.
|
||||
The "index" holds a snapshot of the content of the working tree, and it
|
||||
is this snapshot that is taken as the contents of the next commit. Thus
|
||||
after making any changes to the working tree, and before running
|
||||
the commit command, you must use the `add` command to add any new or
|
||||
modified files to the index.
|
||||
|
||||
This command can be performed multiple times before a commit. It only
|
||||
adds the content of the specified file(s) at the time the add command is
|
||||
@ -37,10 +37,12 @@ you must run `git add` again to add the new content to the index.
|
||||
The `git status` command can be used to obtain a summary of which
|
||||
files have changes that are staged for the next commit.
|
||||
|
||||
The `git add` command will not add ignored files by default. You can
|
||||
use the `--force` option to add ignored files. If you specify the exact
|
||||
filename of an ignored file, `git add` will fail with a list of ignored
|
||||
files. Otherwise it will silently ignore the file.
|
||||
The `git add` command will not add ignored files by default. If any
|
||||
ignored files were explicitly specified on the command line, `git add`
|
||||
will fail with a list of ignored files. Ignored files reached by
|
||||
directory recursion or filename globbing performed by Git (quote your
|
||||
globs before the shell) will be silently ignored. The `git add` command can
|
||||
be used to add ignored files with the `-f` (force) option.
|
||||
|
||||
Please see linkgit:git-commit[1] for alternative ways to add content to a
|
||||
commit.
|
||||
@ -102,8 +104,6 @@ This effectively runs `add --interactive`, but bypasses the
|
||||
initial command menu and directly jumps to the `patch` subcommand.
|
||||
See ``Interactive mode'' for details.
|
||||
|
||||
include::diff-context-options.adoc[]
|
||||
|
||||
`-e`::
|
||||
`--edit`::
|
||||
Open the diff vs. the index in an editor and let the user
|
||||
@ -342,14 +342,13 @@ patch::
|
||||
d - do not stage this hunk or any of the later hunks in the file
|
||||
g - select a hunk to go to
|
||||
/ - search for a hunk matching the given regex
|
||||
j - go to the next undecided hunk, roll over at the bottom
|
||||
J - go to the next hunk, roll over at the bottom
|
||||
k - go to the previous undecided hunk, roll over at the top
|
||||
K - go to the previous hunk, roll over at the top
|
||||
j - leave this hunk undecided, see next undecided hunk
|
||||
J - leave this hunk undecided, see next hunk
|
||||
k - leave this hunk undecided, see previous undecided hunk
|
||||
K - leave this hunk undecided, see previous hunk
|
||||
s - split the current hunk into smaller hunks
|
||||
e - manually edit the current hunk
|
||||
p - print the current hunk
|
||||
P - print the current hunk using the pager
|
||||
? - print help
|
||||
+
|
||||
After deciding the fate for all hunks, if there is any hunk
|
||||
|
||||
@ -48,8 +48,7 @@ OPTIONS
|
||||
--keep-non-patch::
|
||||
Pass `-b` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
|
||||
|
||||
--keep-cr::
|
||||
--no-keep-cr::
|
||||
--[no-]keep-cr::
|
||||
With `--keep-cr`, call 'git mailsplit' (see linkgit:git-mailsplit[1])
|
||||
with the same option, to prevent it from stripping CR at the end of
|
||||
lines. `am.keepcr` configuration variable can be used to specify the
|
||||
@ -162,13 +161,6 @@ Valid <action> for the `--whitespace` option are:
|
||||
commit creation as the committer date. This allows the
|
||||
user to lie about the committer date by using the same
|
||||
value as the author date.
|
||||
+
|
||||
WARNING: The history walking machinery assumes that commits have
|
||||
non-decreasing commit timestamps. You should consider if you really need
|
||||
to use this option. Then you should only use this option to override the
|
||||
committer date when applying commits on top of a base which commit is
|
||||
older (in terms of the commit date) than the oldest patch you are
|
||||
applying.
|
||||
|
||||
--ignore-date::
|
||||
By default the command records the date from the e-mail
|
||||
|
||||
@ -75,14 +75,13 @@ OPTIONS
|
||||
tree. If `--check` is in effect, merely check that it would
|
||||
apply cleanly to the index entry.
|
||||
|
||||
-N::
|
||||
--intent-to-add::
|
||||
When applying the patch only to the working tree, mark new
|
||||
files to be added to the index later (see `--intent-to-add`
|
||||
option in linkgit:git-add[1]). This option is ignored if
|
||||
`--index` or `--cached` are used, and has no effect outside a Git
|
||||
repository. Note that `--index` could be implied by other options
|
||||
such as `--3way`.
|
||||
option in linkgit:git-add[1]). This option is ignored unless
|
||||
running in a Git repository and `--index` is not specified.
|
||||
Note that `--index` could be implied by other options such
|
||||
as `--cached` or `--3way`.
|
||||
|
||||
-3::
|
||||
--3way::
|
||||
|
||||
@ -57,8 +57,7 @@ OPTIONS
|
||||
blobs seen at a given path. The default minimum batch size is
|
||||
50,000.
|
||||
|
||||
`--sparse`::
|
||||
`--no-sparse`::
|
||||
`--[no-]sparse`::
|
||||
Only download objects if they appear at a path that matches the
|
||||
current sparse-checkout. If the sparse-checkout feature is enabled,
|
||||
then `--sparse` is assumed and can be disabled with `--no-sparse`.
|
||||
|
||||
@ -9,22 +9,26 @@ git-bisect - Use binary search to find the commit that introduced a bug
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git bisect' start [--term-(bad|new)=<term-new> --term-(good|old)=<term-old>]
|
||||
[--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]
|
||||
'git bisect' (bad|new|<term-new>) [<rev>]
|
||||
'git bisect' (good|old|<term-old>) [<rev>...]
|
||||
'git bisect' terms [--term-(good|old) | --term-(bad|new)]
|
||||
'git bisect' skip [(<rev>|<range>)...]
|
||||
'git bisect' next
|
||||
'git bisect' reset [<commit>]
|
||||
'git bisect' (visualize|view)
|
||||
'git bisect' replay <logfile>
|
||||
'git bisect' log
|
||||
'git bisect' run <cmd> [<arg>...]
|
||||
'git bisect' help
|
||||
'git bisect' <subcommand> <options>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
The command takes various subcommands, and different options depending
|
||||
on the subcommand:
|
||||
|
||||
git bisect start [--term-(bad|new)=<term-new> --term-(good|old)=<term-old>]
|
||||
[--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]
|
||||
git bisect (bad|new|<term-new>) [<rev>]
|
||||
git bisect (good|old|<term-old>) [<rev>...]
|
||||
git bisect terms [--term-(good|old) | --term-(bad|new)]
|
||||
git bisect skip [(<rev>|<range>)...]
|
||||
git bisect reset [<commit>]
|
||||
git bisect (visualize|view)
|
||||
git bisect replay <logfile>
|
||||
git bisect log
|
||||
git bisect run <cmd> [<arg>...]
|
||||
git bisect help
|
||||
|
||||
This command uses a binary search algorithm to find which commit in
|
||||
your project's history introduced a bug. You use it by first telling
|
||||
it a "bad" commit that is known to contain the bug, and a "good"
|
||||
@ -291,19 +295,6 @@ $ git bisect skip v2.5 v2.5..v2.6
|
||||
This tells the bisect process that the commits between `v2.5` and
|
||||
`v2.6` (inclusive) should be skipped.
|
||||
|
||||
Bisect next
|
||||
~~~~~~~~~~~
|
||||
|
||||
Normally, after marking a revision as good or bad, Git automatically
|
||||
computes and checks out the next revision to test. However, if you need to
|
||||
explicitly request the next bisection step, you can use:
|
||||
|
||||
------------
|
||||
$ git bisect next
|
||||
------------
|
||||
|
||||
You might use this to resume the bisection process after interrupting it
|
||||
by checking out a different revision.
|
||||
|
||||
Cutting down bisection by giving more parameters to bisect start
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -85,8 +85,6 @@ include::blame-options.adoc[]
|
||||
Ignore whitespace when comparing the parent's version and
|
||||
the child's to find where the lines came from.
|
||||
|
||||
include::diff-algorithm-option.adoc[]
|
||||
|
||||
--abbrev=<n>::
|
||||
Instead of using the default 7+1 hexadecimal digits as the
|
||||
abbreviated object name, use <m>+1 digits, where <m> is at
|
||||
|
||||
@ -62,10 +62,8 @@ OPTIONS
|
||||
or to ask for a "blob" with `<object>` being a tag object that
|
||||
points at it.
|
||||
|
||||
--mailmap::
|
||||
--no-mailmap::
|
||||
--use-mailmap::
|
||||
--no-use-mailmap::
|
||||
--[no-]mailmap::
|
||||
--[no-]use-mailmap::
|
||||
Use mailmap file to map author, committer and tagger names
|
||||
and email addresses to canonical real names and email addresses.
|
||||
See linkgit:git-shortlog[1].
|
||||
@ -309,11 +307,6 @@ newline. The available atoms are:
|
||||
`objecttype`::
|
||||
The type of the object (the same as `cat-file -t` reports).
|
||||
|
||||
`objectmode`::
|
||||
If the specified object has mode information (such as a tree or
|
||||
index entry), the mode expressed as an octal integer. Otherwise,
|
||||
empty string.
|
||||
|
||||
`objectsize`::
|
||||
The size, in bytes, of the object (the same as `cat-file -s`
|
||||
reports).
|
||||
@ -375,14 +368,6 @@ If a name is specified that might refer to more than one object (an ambiguous sh
|
||||
<object> SP ambiguous LF
|
||||
------------
|
||||
|
||||
If a name is specified that refers to a submodule entry in a tree and the
|
||||
target object does not exist in the repository, then `cat-file` will ignore
|
||||
any custom format and print (with the object ID of the submodule):
|
||||
|
||||
------------
|
||||
<oid> SP submodule LF
|
||||
------------
|
||||
|
||||
If `--follow-symlinks` is used, and a symlink in the repository points
|
||||
outside the repository, then `cat-file` will ignore any custom format
|
||||
and print:
|
||||
|
||||
@ -19,8 +19,7 @@ For every pathname, this command will list if each attribute is 'unspecified',
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-a::
|
||||
--all::
|
||||
-a, --all::
|
||||
List all attributes that are associated with the specified
|
||||
paths. If this option is used, then 'unspecified' attributes
|
||||
will not be included in the output.
|
||||
|
||||
@ -25,13 +25,11 @@ subject to exclude rules; but see `--no-index'.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-q::
|
||||
--quiet::
|
||||
-q, --quiet::
|
||||
Don't output anything, just set exit status. This is only
|
||||
valid with a single pathname.
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
-v, --verbose::
|
||||
Instead of printing the paths that are excluded, for each path
|
||||
that matches an exclude pattern, print the exclude pattern
|
||||
together with the path. (Matching an exclude pattern usually
|
||||
@ -51,8 +49,7 @@ linkgit:gitignore[5].
|
||||
below). If `--stdin` is also given, input paths are separated
|
||||
with a NUL character instead of a linefeed character.
|
||||
|
||||
-n::
|
||||
--non-matching::
|
||||
-n, --non-matching::
|
||||
Show given paths which don't match any pattern. This only
|
||||
makes sense when `--verbose` is enabled, otherwise it would
|
||||
not be possible to distinguish between paths which match a
|
||||
|
||||
@ -98,8 +98,7 @@ a branch.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
--allow-onelevel::
|
||||
--no-allow-onelevel::
|
||||
--[no-]allow-onelevel::
|
||||
Controls whether one-level refnames are accepted (i.e.,
|
||||
refnames that do not contain multiple `/`-separated
|
||||
components). The default is `--no-allow-onelevel`.
|
||||
|
||||
@ -12,29 +12,25 @@ git checkout [-q] [-f] [-m] [<branch>]
|
||||
git checkout [-q] [-f] [-m] --detach [<branch>]
|
||||
git checkout [-q] [-f] [-m] [--detach] <commit>
|
||||
git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new-branch>] [<start-point>]
|
||||
git checkout <tree-ish> [--] <pathspec>...
|
||||
git checkout <tree-ish> --pathspec-from-file=<file> [--pathspec-file-nul]
|
||||
git checkout [-f] <tree-ish> [--] <pathspec>...
|
||||
git checkout [-f] <tree-ish> --pathspec-from-file=<file> [--pathspec-file-nul]
|
||||
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [--] <pathspec>...
|
||||
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] --pathspec-from-file=<file> [--pathspec-file-nul]
|
||||
git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
`git checkout` has two main modes:
|
||||
|
||||
1. **Switch branches**, with `git checkout <branch>`
|
||||
2. **Restore a different version of a file**, for example with
|
||||
`git checkout <commit> <filename>` or `git checkout <filename>`
|
||||
|
||||
See ARGUMENT DISAMBIGUATION below for how Git decides which one to do.
|
||||
Updates files in the working tree to match the version in the index
|
||||
or the specified tree. If no pathspec was given, `git checkout` will
|
||||
also update `HEAD` to set the specified branch as the current
|
||||
branch.
|
||||
|
||||
`git checkout [<branch>]`::
|
||||
Switch to _<branch>_. This sets the current branch to _<branch>_ and
|
||||
updates the files in your working directory. The checkout will fail
|
||||
if there are uncommitted changes to any files where _<branch>_ and
|
||||
your current commit have different content. Uncommitted changes will
|
||||
otherwise be kept.
|
||||
To prepare for working on _<branch>_, switch to it by updating
|
||||
the index and the files in the working tree, and by pointing
|
||||
`HEAD` at the branch. Local modifications to the files in the
|
||||
working tree are kept, so that they can be committed to the
|
||||
_<branch>_.
|
||||
+
|
||||
If _<branch>_ is not found but there does exist a tracking branch in
|
||||
exactly one remote (call it _<remote>_) with a matching name and
|
||||
@ -44,63 +40,68 @@ exactly one remote (call it _<remote>_) with a matching name and
|
||||
$ git checkout -b <branch> --track <remote>/<branch>
|
||||
------------
|
||||
+
|
||||
Running `git checkout` without specifying a branch has no effect except
|
||||
to print out the tracking information for the current branch.
|
||||
You could omit _<branch>_, in which case the command degenerates to
|
||||
"check out the current branch", which is a glorified no-op with
|
||||
rather expensive side-effects to show only the tracking information,
|
||||
if it exists, for the current branch.
|
||||
|
||||
`git checkout -b <new-branch> [<start-point>]`::
|
||||
`git checkout (-b|-B) <new-branch> [<start-point>]`::
|
||||
|
||||
Create a new branch named _<new-branch>_, start it at _<start-point>_
|
||||
(defaults to the current commit), and check out the new branch.
|
||||
You can use the `--track` or `--no-track` options to set the branch's
|
||||
upstream tracking information.
|
||||
Specifying `-b` causes a new branch to be created as if
|
||||
linkgit:git-branch[1] were called and then checked out. In
|
||||
this case you can use the `--track` or `--no-track` options,
|
||||
which will be passed to `git branch`. As a convenience,
|
||||
`--track` without `-b` implies branch creation; see the
|
||||
description of `--track` below.
|
||||
+
|
||||
This will fail if there's an error checking out _<new-branch>_, for
|
||||
example if checking out the `<start-point>` commit would overwrite your
|
||||
uncommitted changes.
|
||||
|
||||
`git checkout -B <branch> [<start-point>]`::
|
||||
|
||||
The same as `-b`, except that if the branch already exists it
|
||||
resets _<branch>_ to the start point instead of failing.
|
||||
If `-B` is given, _<new-branch>_ is created if it doesn't exist; otherwise, it
|
||||
is reset. This is the transactional equivalent of
|
||||
+
|
||||
------------
|
||||
$ git branch -f <branch> [<start-point>]
|
||||
$ git checkout <branch>
|
||||
------------
|
||||
+
|
||||
that is to say, the branch is not reset/created unless "git checkout" is
|
||||
successful (e.g., when the branch is in use in another worktree, not
|
||||
just the current branch stays the same, but the branch is not reset to
|
||||
the start-point, either).
|
||||
|
||||
`git checkout --detach [<branch>]`::
|
||||
`git checkout [--detach] <commit>`::
|
||||
|
||||
The same as `git checkout <branch>`, except that instead of pointing
|
||||
`HEAD` at the branch, it points `HEAD` at the commit ID.
|
||||
See the "DETACHED HEAD" section below for more.
|
||||
Prepare to work on top of _<commit>_, by detaching `HEAD` at it
|
||||
(see "DETACHED HEAD" section), and updating the index and the
|
||||
files in the working tree. Local modifications to the files
|
||||
in the working tree are kept, so that the resulting working
|
||||
tree will be the state recorded in the commit plus the local
|
||||
modifications.
|
||||
+
|
||||
When the _<commit>_ argument is a branch name, the `--detach` option can
|
||||
be used to detach `HEAD` at the tip of the branch (`git checkout
|
||||
<branch>` would check out that branch without detaching `HEAD`).
|
||||
+
|
||||
Omitting _<branch>_ detaches `HEAD` at the tip of the current branch.
|
||||
|
||||
`git checkout <tree-ish> [--] <pathspec>...`::
|
||||
`git checkout <tree-ish> --pathspec-from-file=<file> [--pathspec-file-nul]`::
|
||||
`git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>...`::
|
||||
`git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]`::
|
||||
|
||||
Replace the specified files and/or directories with the version from
|
||||
the given commit or tree and add them to the index
|
||||
(also known as "staging area").
|
||||
Overwrite the contents of the files that match the pathspec.
|
||||
When the _<tree-ish>_ (most often a commit) is not given,
|
||||
overwrite working tree with the contents in the index.
|
||||
When the _<tree-ish>_ is given, overwrite both the index and
|
||||
the working tree with the contents at the _<tree-ish>_.
|
||||
+
|
||||
For example, `git checkout main file.txt` will replace `file.txt`
|
||||
with the version from `main`.
|
||||
|
||||
`git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [--] <pathspec>...`::
|
||||
`git checkout [-f|--ours|--theirs|-m|--conflict=<style>] --pathspec-from-file=<file> [--pathspec-file-nul]`::
|
||||
|
||||
Replace the specified files and/or directories with the version from
|
||||
the index.
|
||||
+
|
||||
For example, if you check out a commit, edit `file.txt`, and then
|
||||
decide those changes were a mistake, `git checkout file.txt` will
|
||||
discard any unstaged changes to `file.txt`.
|
||||
+
|
||||
This will fail if the file has a merge conflict and you haven't yet run
|
||||
`git add file.txt` (or something equivalent) to mark it as resolved.
|
||||
You can use `-f` to ignore the unmerged files instead of failing, use
|
||||
`--ours` or `--theirs` to replace them with the version from a specific
|
||||
side of the merge, or use `-m` to replace them with the original
|
||||
conflicted merge result.
|
||||
The index may contain unmerged entries because of a previous failed merge.
|
||||
By default, if you try to check out such an entry from the index, the
|
||||
checkout operation will fail and nothing will be checked out.
|
||||
Using `-f` will ignore these unmerged entries. The contents from a
|
||||
specific side of the merge can be checked out of the index by
|
||||
using `--ours` or `--theirs`. With `-m`, changes made to the working tree
|
||||
file can be discarded to re-create the original conflicted merge result.
|
||||
|
||||
`git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>...]`::
|
||||
This is similar to the previous two modes, but lets you use the
|
||||
This is similar to the previous mode, but lets you use the
|
||||
interactive interface to show the "diff" output and choose which
|
||||
hunks to use in the result. See below for the description of
|
||||
`--patch` option.
|
||||
@ -154,14 +155,16 @@ of it").
|
||||
see linkgit:git-branch[1] for details.
|
||||
|
||||
`-B <new-branch>`::
|
||||
The same as `-b`, except that if the branch already exists it
|
||||
resets _<branch>_ to the start point instead of failing.
|
||||
Creates the branch _<new-branch>_, start it at _<start-point>_;
|
||||
if it already exists, then reset it to _<start-point>_. And then
|
||||
check the resulting branch out. This is equivalent to running
|
||||
`git branch` with `-f` followed by `git checkout` of that branch;
|
||||
see linkgit:git-branch[1] for details.
|
||||
|
||||
`-t`::
|
||||
`--track[=(direct|inherit)]`::
|
||||
When creating a new branch, set up "upstream" configuration. See
|
||||
`--track` in linkgit:git-branch[1] for details. As a convenience,
|
||||
--track without -b implies branch creation.
|
||||
`--track` in linkgit:git-branch[1] for details.
|
||||
+
|
||||
If no `-b` option is given, the name of the new branch will be
|
||||
derived from the remote-tracking branch, by looking at the local part of
|
||||
@ -286,8 +289,6 @@ section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
|
||||
Note that this option uses the no overlay mode by default (see also
|
||||
`--overlay`), and currently doesn't support overlay mode.
|
||||
|
||||
include::diff-context-options.adoc[]
|
||||
|
||||
`--ignore-other-worktrees`::
|
||||
`git checkout` refuses when the wanted branch is already checked
|
||||
out or otherwise in use by another worktree. This option makes
|
||||
@ -331,7 +332,7 @@ include::diff-context-options.adoc[]
|
||||
separated with _NUL_ character and all other characters are taken
|
||||
literally (including newlines and quotes).
|
||||
|
||||
`<branch>`::
|
||||
<branch>::
|
||||
Branch to checkout; if it refers to a branch (i.e., a name that,
|
||||
when prepended with "refs/heads/", is a valid ref), then that
|
||||
branch is checked out. Otherwise, if it refers to a valid
|
||||
@ -508,18 +509,14 @@ $ git log -g -2 HEAD
|
||||
ARGUMENT DISAMBIGUATION
|
||||
-----------------------
|
||||
|
||||
When you run `git checkout <something>`, Git tries to guess whether
|
||||
_<something>_ is intended to be a branch, a commit, or a set of file(s),
|
||||
and then either switches to that branch or commit, or restores the
|
||||
specified files.
|
||||
|
||||
If there's any ambiguity, Git will treat `<something>` as a branch or
|
||||
commit, but you can use the double dash `--` to force Git to treat the
|
||||
parameter as a list of files and/or directories, like this:
|
||||
|
||||
----------
|
||||
git checkout -- file.txt
|
||||
----------
|
||||
When there is only one argument given and it is not `--` (e.g. `git
|
||||
checkout abc`), and when the argument is both a valid _<tree-ish>_
|
||||
(e.g. a branch `abc` exists) and a valid _<pathspec>_ (e.g. a file
|
||||
or a directory whose name is "abc" exists), Git would usually ask
|
||||
you to disambiguate. Because checking out a branch is so common an
|
||||
operation, however, `git checkout abc` takes "abc" as a _<tree-ish>_
|
||||
in such a situation. Use `git checkout -- <pathspec>` if you want
|
||||
to checkout these paths out of the index.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
@ -16,7 +16,7 @@ git clone [--template=<template-directory>]
|
||||
[--depth <depth>] [--[no-]single-branch] [--[no-]tags]
|
||||
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
||||
[--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
|
||||
[--filter=<filter-spec> [--also-filter-submodules]] [--] <repository>
|
||||
[--filter=<filter-spec>] [--also-filter-submodules]] [--] <repository>
|
||||
[<directory>]
|
||||
|
||||
DESCRIPTION
|
||||
@ -272,8 +272,7 @@ corresponding `--mirror` and `--no-tags` options instead.
|
||||
reachable from a specified remote branch or tag. This option
|
||||
can be specified multiple times.
|
||||
|
||||
`--single-branch`::
|
||||
`--no-single-branch`::
|
||||
`--[no-]single-branch`::
|
||||
Clone only the history leading to the tip of a single branch,
|
||||
either specified by the `--branch` option or the primary
|
||||
branch remote's `HEAD` points at.
|
||||
@ -283,8 +282,7 @@ corresponding `--mirror` and `--no-tags` options instead.
|
||||
branch when `--single-branch` clone was made, no remote-tracking
|
||||
branch is created.
|
||||
|
||||
`--tags`::
|
||||
`--no-tags`::
|
||||
`--[no-]tags`::
|
||||
Control whether or not tags will be cloned. When `--no-tags` is
|
||||
given, the option will be become permanent by setting the
|
||||
`remote.<remote>.tagOpt=--no-tags` configuration. This ensures that
|
||||
@ -315,12 +313,10 @@ the clone is finished. This option is ignored if the cloned repository does
|
||||
not have a worktree/checkout (i.e. if any of `--no-checkout`/`-n`, `--bare`,
|
||||
or `--mirror` is given)
|
||||
|
||||
`--shallow-submodules`::
|
||||
`--no-shallow-submodules`::
|
||||
`--[no-]shallow-submodules`::
|
||||
All submodules which are cloned will be shallow with a depth of 1.
|
||||
|
||||
`--remote-submodules`::
|
||||
`--no-remote-submodules`::
|
||||
`--[no-]remote-submodules`::
|
||||
All submodules which are cloned will use the status of the submodule's
|
||||
remote-tracking branch to update the submodule, rather than the
|
||||
superproject's recorded SHA-1. Equivalent to passing `--remote` to
|
||||
|
||||
@ -34,8 +34,7 @@ OPTIONS
|
||||
object directory, `git commit-graph ...` will exit with non-zero
|
||||
status.
|
||||
|
||||
--progress::
|
||||
--no-progress::
|
||||
--[no-]progress::
|
||||
Turn progress on/off explicitly. If neither is specified, progress is
|
||||
shown if standard error is connected to a terminal.
|
||||
|
||||
@ -71,7 +70,7 @@ take a while on large repositories. It provides significant performance gains
|
||||
for getting history of a directory or a file with `git log -- <path>`. If
|
||||
this option is given, future commit-graph writes will automatically assume
|
||||
that this option was intended. Use `--no-changed-paths` to stop storing this
|
||||
data. `--changed-paths` is implied by config `commitGraph.changedPaths=true`.
|
||||
data.
|
||||
+
|
||||
With the `--max-new-filters=<n>` option, generate at most `n` new Bloom
|
||||
filters (if `--changed-paths` is specified). If `n` is `-1`, no limit is
|
||||
|
||||
@ -76,8 +76,6 @@ OPTIONS
|
||||
which changes to commit. See linkgit:git-add[1] for
|
||||
details.
|
||||
|
||||
include::diff-context-options.adoc[]
|
||||
|
||||
`-C <commit>`::
|
||||
`--reuse-message=<commit>`::
|
||||
Take an existing _<commit>_ object, and reuse the log message
|
||||
@ -146,8 +144,7 @@ See linkgit:git-rebase[1] for details.
|
||||
linkgit:git-status[1] for details. Implies `--dry-run`.
|
||||
|
||||
`--branch`::
|
||||
Show the branch and tracking info even in short-format. See
|
||||
linkgit:git-status[1] for details.
|
||||
Show the branch and tracking info even in short-format.
|
||||
|
||||
`--porcelain`::
|
||||
When doing a dry-run, give the output in a porcelain-ready
|
||||
@ -155,13 +152,12 @@ See linkgit:git-rebase[1] for details.
|
||||
`--dry-run`.
|
||||
|
||||
`--long`::
|
||||
When doing a dry-run, give the output in the long-format. This
|
||||
is the default output of linkgit:git-status[1]. Implies
|
||||
`--dry-run`.
|
||||
When doing a dry-run, give the output in the long-format.
|
||||
Implies `--dry-run`.
|
||||
|
||||
`-z`::
|
||||
`--null`::
|
||||
When showing `short` or `porcelain` linkgit:git-status[1] output, print the
|
||||
When showing `short` or `porcelain` status output, print the
|
||||
filename verbatim and terminate the entries with _NUL_, instead of _LF_.
|
||||
If no format is given, implies the `--porcelain` output format.
|
||||
Without the `-z` option, filenames with "unusual" characters are
|
||||
@ -216,8 +212,7 @@ include::signoff-option.adoc[]
|
||||
each trailer would appear, and other details.
|
||||
|
||||
`-n`::
|
||||
`--verify`::
|
||||
`--no-verify`::
|
||||
`--[no-]verify`::
|
||||
Bypass the `pre-commit` and `commit-msg` hooks.
|
||||
See also linkgit:githooks[5].
|
||||
|
||||
@ -284,7 +279,6 @@ variable (see linkgit:git-config[1]).
|
||||
+
|
||||
--
|
||||
It is a rough equivalent for:
|
||||
|
||||
------
|
||||
$ git reset --soft HEAD^
|
||||
$ ... do something else to come up with the right tree ...
|
||||
|
||||
@ -10,9 +10,9 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git config list' [<file-option>] [<display-option>] [--includes]
|
||||
'git config get' [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<pattern>] [--fixed-value] [--default=<default>] [--url=<url>] <name>
|
||||
'git config set' [<file-option>] [--type=<type>] [--all] [--value=<pattern>] [--fixed-value] <name> <value>
|
||||
'git config unset' [<file-option>] [--all] [--value=<pattern>] [--fixed-value] <name>
|
||||
'git config get' [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>
|
||||
'git config set' [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>
|
||||
'git config unset' [<file-option>] [--all] [--value=<value>] [--fixed-value] <name>
|
||||
'git config rename-section' [<file-option>] <old-name> <new-name>
|
||||
'git config remove-section' [<file-option>] <name>
|
||||
'git config edit' [<file-option>]
|
||||
@ -26,7 +26,7 @@ escaped.
|
||||
|
||||
Multiple lines can be added to an option by using the `--append` option.
|
||||
If you want to update or unset an option which can occur on multiple
|
||||
lines, `--value=<pattern>` (which is an extended regular expression,
|
||||
lines, a `value-pattern` (which is an extended regular expression,
|
||||
unless the `--fixed-value` option is given) needs to be given. Only the
|
||||
existing values that match the pattern are updated or unset. If
|
||||
you want to handle the lines that do *not* match the pattern, just
|
||||
@ -109,7 +109,7 @@ OPTIONS
|
||||
|
||||
--replace-all::
|
||||
Default behavior is to replace at most one line. This replaces
|
||||
all lines matching the key (and optionally `--value=<pattern>`).
|
||||
all lines matching the key (and optionally the `value-pattern`).
|
||||
|
||||
--append::
|
||||
Adds a new line to the option without altering any existing
|
||||
@ -117,15 +117,15 @@ OPTIONS
|
||||
|
||||
--comment <message>::
|
||||
Append a comment at the end of new or modified lines.
|
||||
+
|
||||
If _<message>_ begins with one or more whitespaces followed
|
||||
by "#", it is used as-is. If it begins with "#", a space is
|
||||
prepended before it is used. Otherwise, a string " # " (a
|
||||
space followed by a hash followed by a space) is prepended
|
||||
to it. And the resulting string is placed immediately after
|
||||
the value defined for the variable. The _<message>_ must
|
||||
not contain linefeed characters (no multi-line comments are
|
||||
permitted).
|
||||
|
||||
If _<message>_ begins with one or more whitespaces followed
|
||||
by "#", it is used as-is. If it begins with "#", a space is
|
||||
prepended before it is used. Otherwise, a string " # " (a
|
||||
space followed by a hash followed by a space) is prepended
|
||||
to it. And the resulting string is placed immediately after
|
||||
the value defined for the variable. The _<message>_ must
|
||||
not contain linefeed characters (no multi-line comments are
|
||||
permitted).
|
||||
|
||||
--all::
|
||||
With `get`, return all values for a multi-valued key.
|
||||
@ -200,19 +200,11 @@ See also <<FILES>>.
|
||||
section in linkgit:gitrevisions[7] for a more complete list of
|
||||
ways to spell blob names.
|
||||
|
||||
`--value=<pattern>`::
|
||||
`--no-value`::
|
||||
With `get`, `set`, and `unset`, match only against
|
||||
_<pattern>_. The pattern is an extended regular expression unless
|
||||
`--fixed-value` is given.
|
||||
+
|
||||
Use `--no-value` to unset _<pattern>_.
|
||||
|
||||
--fixed-value::
|
||||
When used with `--value=<pattern>`, treat _<pattern>_ as
|
||||
When used with the `value-pattern` argument, treat `value-pattern` as
|
||||
an exact string instead of a regular expression. This will restrict
|
||||
the name/value pairs that are matched to only those where the value
|
||||
is exactly equal to _<pattern>_.
|
||||
is exactly equal to the `value-pattern`.
|
||||
|
||||
--type <type>::
|
||||
'git config' will ensure that any input or output is valid under the given
|
||||
@ -267,12 +259,6 @@ Valid `<type>`'s include:
|
||||
Output only the names of config variables for `list` or
|
||||
`get`.
|
||||
|
||||
`--show-names`::
|
||||
`--no-show-names`::
|
||||
With `get`, show config keys in addition to their values. The
|
||||
default is `--no-show-names` unless `--url` is given and there
|
||||
are no subsections in _<name>_.
|
||||
|
||||
--show-origin::
|
||||
Augment the output of all queried config options with the
|
||||
origin type (file, standard input, blob, command line) and
|
||||
@ -295,8 +281,7 @@ Valid `<type>`'s include:
|
||||
When the color setting for `name` is undefined, the command uses
|
||||
`color.ui` as fallback.
|
||||
|
||||
--includes::
|
||||
--no-includes::
|
||||
--[no-]includes::
|
||||
Respect `include.*` directives in config files when looking up
|
||||
values. Defaults to `off` when a specific file is given (e.g.,
|
||||
using `--file`, `--global`, etc) and `on` when searching all
|
||||
|
||||
@ -28,8 +28,6 @@ size: disk space consumed by loose objects, in KiB (unless -H is specified)
|
||||
+
|
||||
in-pack: the number of in-pack objects
|
||||
+
|
||||
packs: the number of pack files
|
||||
+
|
||||
size-pack: disk space consumed by the packs, in KiB (unless -H is specified)
|
||||
+
|
||||
prune-packable: the number of loose objects that are also present in
|
||||
|
||||
@ -14,7 +14,7 @@ git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]
|
||||
git diff [<options>] [--merge-base] <commit> [<commit>...] <commit> [--] [<path>...]
|
||||
git diff [<options>] <commit>...<commit> [--] [<path>...]
|
||||
git diff [<options>] <blob> <blob>
|
||||
git diff [<options>] --no-index [--] <path> <path> [<pathspec>...]
|
||||
git diff [<options>] --no-index [--] <path> <path>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -31,18 +31,14 @@ files on disk.
|
||||
further add to the index but you still haven't. You can
|
||||
stage these changes by using linkgit:git-add[1].
|
||||
|
||||
`git diff [<options>] --no-index [--] <path> <path> [<pathspec>...]`::
|
||||
`git diff [<options>] --no-index [--] <path> <path>`::
|
||||
|
||||
This form is to compare the given two paths on the
|
||||
filesystem. You can omit the `--no-index` option when
|
||||
running the command in a working tree controlled by Git and
|
||||
at least one of the paths points outside the working tree,
|
||||
or when running the command outside a working tree
|
||||
controlled by Git. This form implies `--exit-code`. If both
|
||||
paths point to directories, additional pathspecs may be
|
||||
provided. These will limit the files included in the
|
||||
difference. All such pathspecs must be relative as they
|
||||
apply to both sides of the diff.
|
||||
controlled by Git. This form implies `--exit-code`.
|
||||
|
||||
`git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]`::
|
||||
|
||||
|
||||
@ -77,8 +77,7 @@ with custom merge tool commands and has the same value as `$MERGED`.
|
||||
--tool-help::
|
||||
Print a list of diff tools that may be used with `--tool`.
|
||||
|
||||
--symlinks::
|
||||
--no-symlinks::
|
||||
--[no-]symlinks::
|
||||
'git difftool''s default behavior is to create symlinks to the
|
||||
working tree when run in `--dir-diff` mode and the right-hand
|
||||
side of the comparison yields the same content as the file in
|
||||
@ -95,8 +94,7 @@ instead. `--no-symlinks` is the default on Windows.
|
||||
Additionally, `$BASE` is set in the environment.
|
||||
|
||||
-g::
|
||||
--gui::
|
||||
--no-gui::
|
||||
--[no-]gui::
|
||||
When 'git-difftool' is invoked with the `-g` or `--gui` option
|
||||
the default diff tool will be read from the configured
|
||||
`diff.guitool` variable instead of `diff.tool`. This may be
|
||||
@ -106,8 +104,7 @@ instead. `--no-symlinks` is the default on Windows.
|
||||
fallback in the order of `merge.guitool`, `diff.tool`,
|
||||
`merge.tool` until a tool is found.
|
||||
|
||||
--trust-exit-code::
|
||||
--no-trust-exit-code::
|
||||
--[no-]trust-exit-code::
|
||||
Errors reported by the diff tool are ignored by default.
|
||||
Use `--trust-exit-code` to make 'git-difftool' exit when an
|
||||
invoked diff tool returns a non-zero exit code.
|
||||
|
||||
@ -50,23 +50,6 @@ resulting tag will have an invalid signature.
|
||||
is the same as how earlier versions of this command without
|
||||
this option behaved.
|
||||
+
|
||||
When exported, a signature starts with:
|
||||
+
|
||||
gpgsig <git-hash-algo> <signature-format>
|
||||
+
|
||||
where <git-hash-algo> is the Git object hash so either "sha1" or
|
||||
"sha256", and <signature-format> is the signature type, so "openpgp",
|
||||
"x509", "ssh" or "unknown".
|
||||
+
|
||||
For example, an OpenPGP signature on a SHA-1 commit starts with
|
||||
`gpgsig sha1 openpgp`, while an SSH signature on a SHA-256 commit
|
||||
starts with `gpgsig sha256 ssh`.
|
||||
+
|
||||
While all the signatures of a commit are exported, an importer may
|
||||
choose to accept only some of them. For example
|
||||
linkgit:git-fast-import[1] currently stores at most one signature per
|
||||
Git hash algorithm in each commit.
|
||||
+
|
||||
NOTE: This is highly experimental and the format of the data stream may
|
||||
change in the future without compatibility guarantees.
|
||||
|
||||
|
||||
@ -61,31 +61,10 @@ OPTIONS
|
||||
currently impacts only the `export-marks`, `import-marks`, and
|
||||
`import-marks-if-exists` feature commands.
|
||||
+
|
||||
Only enable this option if you trust the program generating the
|
||||
fast-import stream! This option is enabled automatically for
|
||||
remote-helpers that use the `import` capability, as they are
|
||||
already trusted to run their own code.
|
||||
|
||||
`--signed-tags=(verbatim|warn-verbatim|warn-strip|strip|abort)`::
|
||||
Specify how to handle signed tags. Behaves in the same way as
|
||||
the `--signed-commits=<mode>` below, except that the
|
||||
`strip-if-invalid` mode is not yet supported. Like for signed
|
||||
commits, the default mode is `verbatim`.
|
||||
|
||||
`--signed-commits=<mode>`::
|
||||
Specify how to handle signed commits. The following <mode>s
|
||||
are supported:
|
||||
+
|
||||
* `verbatim`, which is the default, will silently import commit
|
||||
signatures.
|
||||
* `warn-verbatim` will import them, but will display a warning.
|
||||
* `abort` will make this program die when encountering a signed
|
||||
commit.
|
||||
* `strip` will silently make the commits unsigned.
|
||||
* `warn-strip` will make them unsigned, but will display a warning.
|
||||
* `strip-if-invalid` will check signatures and, if they are invalid,
|
||||
will strip them and display a warning. The validation is performed
|
||||
in the same way as linkgit:git-verify-commit[1] does it.
|
||||
Only enable this option if you trust the program generating the
|
||||
fast-import stream! This option is enabled automatically for
|
||||
remote-helpers that use the `import` capability, as they are
|
||||
already trusted to run their own code.
|
||||
|
||||
Options for Frontends
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -132,8 +111,7 @@ Locations of Marks Files
|
||||
Like --import-marks but instead of erroring out, silently
|
||||
skips the file if it does not exist.
|
||||
|
||||
--relative-marks::
|
||||
--no-relative-marks::
|
||||
--[no-]relative-marks::
|
||||
After specifying --relative-marks the paths specified
|
||||
with --import-marks= and --export-marks= are relative
|
||||
to an internal directory in the current repository.
|
||||
@ -204,7 +182,7 @@ amount of memory usage and processing time. Assuming the frontend
|
||||
is able to keep up with fast-import and feed it a constant stream of data,
|
||||
import times for projects holding 10+ years of history and containing
|
||||
100,000+ individual commits are generally completed in just 1-2
|
||||
hours on quite modest hardware (~$2,000 USD in 2007).
|
||||
hours on quite modest (~$2,000 USD) hardware.
|
||||
|
||||
Most bottlenecks appear to be in foreign source data access (the
|
||||
source just cannot extract revisions fast enough) or disk IO (fast-import
|
||||
@ -467,7 +445,7 @@ one).
|
||||
original-oid?
|
||||
('author' (SP <name>)? SP LT <email> GT SP <when> LF)?
|
||||
'committer' (SP <name>)? SP LT <email> GT SP <when> LF
|
||||
('gpgsig' SP <algo> SP <format> LF data)?
|
||||
('gpgsig' SP <alg> LF data)?
|
||||
('encoding' SP <encoding> LF)?
|
||||
data
|
||||
('from' SP <commit-ish> LF)?
|
||||
@ -540,39 +518,13 @@ their syntax.
|
||||
^^^^^^^^
|
||||
|
||||
The optional `gpgsig` command is used to include a PGP/GPG signature
|
||||
or other cryptographic signature that signs the commit data.
|
||||
that signs the commit data.
|
||||
|
||||
....
|
||||
'gpgsig' SP <git-hash-algo> SP <signature-format> LF data
|
||||
....
|
||||
Here <alg> specifies which hashing algorithm is used for this
|
||||
signature, either `sha1` or `sha256`.
|
||||
|
||||
The `gpgsig` command takes two arguments:
|
||||
|
||||
* `<git-hash-algo>` specifies which Git object format this signature
|
||||
applies to, either `sha1` or `sha256`. This allows to know which
|
||||
representation of the commit was signed (the SHA-1 or the SHA-256
|
||||
version) which helps with both signature verification and
|
||||
interoperability between repos with different hash functions.
|
||||
|
||||
* `<signature-format>` specifies the type of signature, such as
|
||||
`openpgp`, `x509`, `ssh`, or `unknown`. This is a convenience for
|
||||
tools that process the stream, so they don't have to parse the ASCII
|
||||
armor to identify the signature type.
|
||||
|
||||
A commit may have at most one signature for the SHA-1 object format
|
||||
(stored in the "gpgsig" header) and one for the SHA-256 object format
|
||||
(stored in the "gpgsig-sha256" header).
|
||||
|
||||
See below for a detailed description of the `data` command which
|
||||
contains the raw signature data.
|
||||
|
||||
Signatures are not yet checked in the current implementation
|
||||
though. (Already setting the `extensions.compatObjectFormat`
|
||||
configuration option might help with verifying both SHA-1 and SHA-256
|
||||
object format signatures when it will be implemented.)
|
||||
|
||||
NOTE: This is highly experimental and the format of the `gpgsig`
|
||||
command may change in the future without compatibility guarantees.
|
||||
NOTE: This is highly experimental and the format of the data stream may
|
||||
change in the future without compatibility guarantees.
|
||||
|
||||
`encoding`
|
||||
^^^^^^^^^^
|
||||
@ -627,11 +579,9 @@ Marks must be declared (via `mark`) before they can be used.
|
||||
|
||||
The special case of restarting an incremental import from the
|
||||
current branch value should be written as:
|
||||
|
||||
----
|
||||
from refs/heads/branch^0
|
||||
----
|
||||
|
||||
The `^0` suffix is necessary as fast-import does not permit a branch to
|
||||
start from itself, and the branch is created in memory before the
|
||||
`from` command is even read from the input. Adding `^0` will force
|
||||
@ -668,7 +618,7 @@ External data format::
|
||||
+
|
||||
Here usually `<dataref>` must be either a mark reference (`:<idnum>`)
|
||||
set by a prior `blob` command, or a full 40-byte SHA-1 of an
|
||||
existing Git blob object. If `<mode>` is `040000` then
|
||||
existing Git blob object. If `<mode>` is `040000`` then
|
||||
`<dataref>` must be the full 40-byte SHA-1 of an existing
|
||||
Git tree object or a mark reference set with `--import-marks`.
|
||||
|
||||
|
||||
@ -8,11 +8,11 @@ git-fetch - Download objects and refs from another repository
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[synopsis]
|
||||
git fetch [<options>] [<repository> [<refspec>...]]
|
||||
git fetch [<options>] <group>
|
||||
git fetch --multiple [<options>] [(<repository>|<group>)...]
|
||||
git fetch --all [<options>]
|
||||
[verse]
|
||||
'git fetch' [<options>] [<repository> [<refspec>...]]
|
||||
'git fetch' [<options>] <group>
|
||||
'git fetch' --multiple [<options>] [(<repository> | <group>)...]
|
||||
'git fetch' --all [<options>]
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
@ -20,19 +20,19 @@ DESCRIPTION
|
||||
Fetch branches and/or tags (collectively, "refs") from one or more
|
||||
other repositories, along with the objects necessary to complete their
|
||||
histories. Remote-tracking branches are updated (see the description
|
||||
of _<refspec>_ below for ways to control this behavior).
|
||||
of <refspec> below for ways to control this behavior).
|
||||
|
||||
By default, any tag that points into the histories being fetched is
|
||||
also fetched; the effect is to fetch tags that
|
||||
point at branches that you are interested in. This default behavior
|
||||
can be changed by using the `--tags` or `--no-tags` options or by
|
||||
configuring `remote.<name>.tagOpt`. By using a refspec that fetches tags
|
||||
can be changed by using the --tags or --no-tags options or by
|
||||
configuring remote.<name>.tagOpt. By using a refspec that fetches tags
|
||||
explicitly, you can fetch tags that do not point into branches you
|
||||
are interested in as well.
|
||||
|
||||
`git fetch` can fetch from either a single named repository or URL,
|
||||
or from several repositories at once if _<group>_ is given and
|
||||
there is a `remotes.<group>` entry in the configuration file.
|
||||
'git fetch' can fetch from either a single named repository or URL,
|
||||
or from several repositories at once if <group> is given and
|
||||
there is a remotes.<group> entry in the configuration file.
|
||||
(See linkgit:git-config[1]).
|
||||
|
||||
When no remote is specified, by default the `origin` remote will be used,
|
||||
@ -48,15 +48,15 @@ include::fetch-options.adoc[]
|
||||
|
||||
include::pull-fetch-param.adoc[]
|
||||
|
||||
`--stdin`::
|
||||
--stdin::
|
||||
Read refspecs, one per line, from stdin in addition to those provided
|
||||
as arguments. The "tag _<name>_" format is not supported.
|
||||
as arguments. The "tag <name>" format is not supported.
|
||||
|
||||
include::urls-remotes.adoc[]
|
||||
|
||||
[[CRTB]]
|
||||
CONFIGURED REMOTE-TRACKING BRANCHES
|
||||
-----------------------------------
|
||||
|
||||
CONFIGURED REMOTE-TRACKING BRANCHES[[CRTB]]
|
||||
-------------------------------------------
|
||||
|
||||
You often interact with the same remote repository by
|
||||
regularly and repeatedly fetching from it. In order to keep track
|
||||
@ -84,13 +84,13 @@ This configuration is used in two ways:
|
||||
|
||||
* When `git fetch` is run with explicit branches and/or tags
|
||||
to fetch on the command line, e.g. `git fetch origin master`, the
|
||||
_<refspec>s_ given on the command line determine what are to be
|
||||
<refspec>s given on the command line determine what are to be
|
||||
fetched (e.g. `master` in the example,
|
||||
which is a short-hand for `master:`, which in turn means
|
||||
"fetch the `master` branch but I do not explicitly say what
|
||||
"fetch the 'master' branch but I do not explicitly say what
|
||||
remote-tracking branch to update with it from the command line"),
|
||||
and the example command will
|
||||
fetch _only_ the `master` branch. The `remote.<repository>.fetch`
|
||||
fetch _only_ the 'master' branch. The `remote.<repository>.fetch`
|
||||
values determine which
|
||||
remote-tracking branch, if any, is updated. When used in this
|
||||
way, the `remote.<repository>.fetch` values do not have any
|
||||
@ -144,9 +144,9 @@ tracking branches that are deleted, but any local tag that doesn't
|
||||
exist on the remote.
|
||||
|
||||
This might not be what you expect, i.e. you want to prune remote
|
||||
_<name>_, but also explicitly fetch tags from it, so when you fetch
|
||||
`<name>`, but also explicitly fetch tags from it, so when you fetch
|
||||
from it you delete all your local tags, most of which may not have
|
||||
come from the _<name>_ remote in the first place.
|
||||
come from the `<name>` remote in the first place.
|
||||
|
||||
So be careful when using this with a refspec like
|
||||
`refs/tags/*:refs/tags/*`, or any other refspec which might map
|
||||
@ -213,11 +213,11 @@ of the form:
|
||||
<flag> <old-object-id> <new-object-id> <local-reference>
|
||||
-------------------------------
|
||||
|
||||
The status of up-to-date refs is shown only if the `--verbose` option is
|
||||
The status of up-to-date refs is shown only if the --verbose option is
|
||||
used.
|
||||
|
||||
In compact output mode, specified with configuration variable
|
||||
fetch.output, if either entire _<from>_ or _<to>_ is found in the
|
||||
fetch.output, if either entire `<from>` or `<to>` is found in the
|
||||
other string, it will be substituted with `*` in the other string. For
|
||||
example, `master -> origin/master` becomes `master -> origin/*`.
|
||||
|
||||
@ -303,7 +303,7 @@ include::config/fetch.adoc[]
|
||||
|
||||
BUGS
|
||||
----
|
||||
Using `--recurse-submodules` can only fetch new commits in submodules that are
|
||||
Using --recurse-submodules can only fetch new commits in submodules that are
|
||||
present locally e.g. in `$GIT_DIR/modules/`. If the upstream adds a new
|
||||
submodule, that submodule cannot be fetched until it is cloned e.g. by `git
|
||||
submodule update`. This is expected to be fixed in a future Git version.
|
||||
|
||||
@ -35,8 +35,7 @@ OPTIONS
|
||||
Do not list one-line descriptions from the actual commits being
|
||||
merged.
|
||||
|
||||
--summary::
|
||||
--no-summary::
|
||||
--[no-]summary::
|
||||
Synonyms to --log and --no-log; these are deprecated and will be
|
||||
removed in the future.
|
||||
|
||||
|
||||
@ -7,28 +7,106 @@ git-for-each-ref - Output information on each ref
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[synopsis]
|
||||
git for-each-ref [--count=<count>] [--shell|--perl|--python|--tcl]
|
||||
[verse]
|
||||
'git for-each-ref' [--count=<count>] [--shell|--perl|--python|--tcl]
|
||||
[(--sort=<key>)...] [--format=<format>]
|
||||
[--include-root-refs] [--points-at=<object>]
|
||||
[--include-root-refs] [ --stdin | <pattern>... ]
|
||||
[--points-at=<object>]
|
||||
[--merged[=<object>]] [--no-merged[=<object>]]
|
||||
[--contains[=<object>]] [--no-contains[=<object>]]
|
||||
[(--exclude=<pattern>)...] [--start-after=<marker>]
|
||||
[ --stdin | (<pattern>...)]
|
||||
[--exclude=<pattern> ...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
Iterate over all refs that match _<pattern>_ and show them
|
||||
according to the given _<format>_, after sorting them according
|
||||
to the given set of _<key>_. If _<count>_ is given, stop after
|
||||
showing that many refs. The interpolated values in _<format>_
|
||||
Iterate over all refs that match `<pattern>` and show them
|
||||
according to the given `<format>`, after sorting them according
|
||||
to the given set of `<key>`. If `<count>` is given, stop after
|
||||
showing that many refs. The interpolated values in `<format>`
|
||||
can optionally be quoted as string literals in the specified
|
||||
host language allowing their direct evaluation in that language.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
include::for-each-ref-options.adoc[]
|
||||
<pattern>...::
|
||||
If one or more patterns are given, only refs are shown that
|
||||
match against at least one pattern, either using fnmatch(3) or
|
||||
literally, in the latter case matching completely or from the
|
||||
beginning up to a slash.
|
||||
|
||||
--stdin::
|
||||
If `--stdin` is supplied, then the list of patterns is read from
|
||||
standard input instead of from the argument list.
|
||||
|
||||
--count=<count>::
|
||||
By default the command shows all refs that match
|
||||
`<pattern>`. This option makes it stop after showing
|
||||
that many refs.
|
||||
|
||||
--sort=<key>::
|
||||
A field name to sort on. Prefix `-` to sort in
|
||||
descending order of the value. When unspecified,
|
||||
`refname` is used. You may use the --sort=<key> option
|
||||
multiple times, in which case the last key becomes the primary
|
||||
key.
|
||||
|
||||
--format=<format>::
|
||||
A string that interpolates `%(fieldname)` from a ref being shown and
|
||||
the object it points at. In addition, the string literal `%%`
|
||||
renders as `%` and `%xx` - where `xx` are hex digits - renders as
|
||||
the character with hex code `xx`. For example, `%00` interpolates to
|
||||
`\0` (NUL), `%09` to `\t` (TAB), and `%0a` to `\n` (LF).
|
||||
+
|
||||
When unspecified, `<format>` defaults to `%(objectname) SPC %(objecttype)
|
||||
TAB %(refname)`.
|
||||
|
||||
--color[=<when>]::
|
||||
Respect any colors specified in the `--format` option. The
|
||||
`<when>` field must be one of `always`, `never`, or `auto` (if
|
||||
`<when>` is absent, behave as if `always` was given).
|
||||
|
||||
--shell::
|
||||
--perl::
|
||||
--python::
|
||||
--tcl::
|
||||
If given, strings that substitute `%(fieldname)`
|
||||
placeholders are quoted as string literals suitable for
|
||||
the specified host language. This is meant to produce
|
||||
a scriptlet that can directly be `eval`ed.
|
||||
|
||||
--points-at=<object>::
|
||||
Only list refs which points at the given object.
|
||||
|
||||
--merged[=<object>]::
|
||||
Only list refs whose tips are reachable from the
|
||||
specified commit (HEAD if not specified).
|
||||
|
||||
--no-merged[=<object>]::
|
||||
Only list refs whose tips are not reachable from the
|
||||
specified commit (HEAD if not specified).
|
||||
|
||||
--contains[=<object>]::
|
||||
Only list refs which contain the specified commit (HEAD if not
|
||||
specified).
|
||||
|
||||
--no-contains[=<object>]::
|
||||
Only list refs which don't contain the specified commit (HEAD
|
||||
if not specified).
|
||||
|
||||
--ignore-case::
|
||||
Sorting and filtering refs are case insensitive.
|
||||
|
||||
--omit-empty::
|
||||
Do not print a newline after formatted refs where the format expands
|
||||
to the empty string.
|
||||
|
||||
--exclude=<pattern>::
|
||||
If one or more patterns are given, only refs which do not match
|
||||
any excluded pattern(s) are shown. Matching is done using the
|
||||
same rules as `<pattern>` above.
|
||||
|
||||
--include-root-refs::
|
||||
List root refs (HEAD and pseudorefs) apart from regular refs.
|
||||
|
||||
FIELD NAMES
|
||||
-----------
|
||||
@ -39,44 +117,44 @@ keys.
|
||||
|
||||
For all objects, the following names can be used:
|
||||
|
||||
`refname`::
|
||||
The name of the ref (the part after `$GIT_DIR/`).
|
||||
refname::
|
||||
The name of the ref (the part after $GIT_DIR/).
|
||||
For a non-ambiguous short name of the ref append `:short`.
|
||||
The option `core.warnAmbiguousRefs` is used to select the strict
|
||||
abbreviation mode. If `lstrip=<n>` (`rstrip=<n>`) is appended, strip _<n>_
|
||||
The option core.warnAmbiguousRefs is used to select the strict
|
||||
abbreviation mode. If `lstrip=<N>` (`rstrip=<N>`) is appended, strips `<N>`
|
||||
slash-separated path components from the front (back) of the refname
|
||||
(e.g. `%(refname:lstrip=2)` turns `refs/tags/foo` into `foo` and
|
||||
`%(refname:rstrip=2)` turns `refs/tags/foo` into `refs`).
|
||||
If _<n>_ is a negative number, strip as many path components as
|
||||
necessary from the specified end to leave `-<n>` path components
|
||||
If `<N>` is a negative number, strip as many path components as
|
||||
necessary from the specified end to leave `-<N>` path components
|
||||
(e.g. `%(refname:lstrip=-2)` turns
|
||||
`refs/tags/foo` into `tags/foo` and `%(refname:rstrip=-1)`
|
||||
turns `refs/tags/foo` into `refs`). When the ref does not have
|
||||
enough components, the result becomes an empty string if
|
||||
stripping with positive _<n>_, or it becomes the full refname if
|
||||
stripping with negative _<N>_. Neither is an error.
|
||||
stripping with positive <N>, or it becomes the full refname if
|
||||
stripping with negative <N>. Neither is an error.
|
||||
+
|
||||
`strip` can be used as a synonym to `lstrip`.
|
||||
|
||||
`objecttype`::
|
||||
objecttype::
|
||||
The type of the object (`blob`, `tree`, `commit`, `tag`).
|
||||
|
||||
`objectsize`::
|
||||
objectsize::
|
||||
The size of the object (the same as 'git cat-file -s' reports).
|
||||
Append `:disk` to get the size, in bytes, that the object takes up on
|
||||
disk. See the note about on-disk sizes in the 'CAVEATS' section below.
|
||||
`objectname`::
|
||||
disk. See the note about on-disk sizes in the `CAVEATS` section below.
|
||||
objectname::
|
||||
The object name (aka SHA-1).
|
||||
For a non-ambiguous abbreviation of the object name append `:short`.
|
||||
For an abbreviation of the object name with desired length append
|
||||
`:short=<length>`, where the minimum length is `MINIMUM_ABBREV`. The
|
||||
`:short=<length>`, where the minimum length is MINIMUM_ABBREV. The
|
||||
length may be exceeded to ensure unique object names.
|
||||
`deltabase`::
|
||||
deltabase::
|
||||
This expands to the object name of the delta base for the
|
||||
given object, if it is stored as a delta. Otherwise it
|
||||
expands to the null object name (all zeroes).
|
||||
|
||||
`upstream`::
|
||||
upstream::
|
||||
The name of a local ref which can be considered ``upstream''
|
||||
from the displayed ref. Respects `:short`, `:lstrip` and
|
||||
`:rstrip` in the same way as `refname` above. Additionally
|
||||
@ -98,103 +176,100 @@ Has no effect if the ref does not have tracking information associated
|
||||
with it. All the options apart from `nobracket` are mutually exclusive,
|
||||
but if used together the last option is selected.
|
||||
|
||||
`push`::
|
||||
push::
|
||||
The name of a local ref which represents the `@{push}`
|
||||
location for the displayed ref. Respects `:short`, `:lstrip`,
|
||||
`:rstrip`, `:track`, `:trackshort`, `:remotename`, and `:remoteref`
|
||||
options as `upstream` does. Produces an empty string if no `@{push}`
|
||||
ref is configured.
|
||||
|
||||
`HEAD`::
|
||||
`*` if `HEAD` matches current ref (the checked out branch), ' '
|
||||
HEAD::
|
||||
'*' if HEAD matches current ref (the checked out branch), ' '
|
||||
otherwise.
|
||||
|
||||
`color`::
|
||||
color::
|
||||
Change output color. Followed by `:<colorname>`, where color
|
||||
names are described under Values in the "CONFIGURATION FILE"
|
||||
section of linkgit:git-config[1]. For example,
|
||||
`%(color:bold red)`.
|
||||
|
||||
`align`::
|
||||
align::
|
||||
Left-, middle-, or right-align the content between
|
||||
`%(align:...)` and `%(end)`. The "`align:`" is followed by
|
||||
%(align:...) and %(end). The "align:" is followed by
|
||||
`width=<width>` and `position=<position>` in any order
|
||||
separated by a comma, where the _<position>_ is either `left`,
|
||||
`right` or `middle`, default being `left` and _<width>_ is the total
|
||||
separated by a comma, where the `<position>` is either left,
|
||||
right or middle, default being left and `<width>` is the total
|
||||
length of the content with alignment. For brevity, the
|
||||
"width=" and/or "position=" prefixes may be omitted, and bare
|
||||
_<width>_ and _<position>_ used instead. For instance,
|
||||
<width> and <position> used instead. For instance,
|
||||
`%(align:<width>,<position>)`. If the contents length is more
|
||||
than the width then no alignment is performed. If used with
|
||||
`--quote` everything in between `%(align:...)` and `%(end)` is
|
||||
`--quote` everything in between %(align:...) and %(end) is
|
||||
quoted, but if nested then only the topmost level performs
|
||||
quoting.
|
||||
|
||||
`if`::
|
||||
Used as `%(if)...%(then)...%(end)` or
|
||||
`%(if)...%(then)...%(else)...%(end)`. If there is an atom with
|
||||
value or string literal after the `%(if)` then everything after
|
||||
the `%(then)` is printed, else if the `%(else)` atom is used, then
|
||||
if::
|
||||
Used as %(if)...%(then)...%(end) or
|
||||
%(if)...%(then)...%(else)...%(end). If there is an atom with
|
||||
value or string literal after the %(if) then everything after
|
||||
the %(then) is printed, else if the %(else) atom is used, then
|
||||
everything after %(else) is printed. We ignore space when
|
||||
evaluating the string before `%(then)`, this is useful when we
|
||||
use the `%(HEAD)` atom which prints either "`*`" or " " and we
|
||||
want to apply the 'if' condition only on the `HEAD` ref.
|
||||
Append "`:equals=<string>`" or "`:notequals=<string>`" to compare
|
||||
the value between the `%(if:...)` and `%(then)` atoms with the
|
||||
evaluating the string before %(then), this is useful when we
|
||||
use the %(HEAD) atom which prints either "*" or " " and we
|
||||
want to apply the 'if' condition only on the 'HEAD' ref.
|
||||
Append ":equals=<string>" or ":notequals=<string>" to compare
|
||||
the value between the %(if:...) and %(then) atoms with the
|
||||
given string.
|
||||
|
||||
`symref`::
|
||||
symref::
|
||||
The ref which the given symbolic ref refers to. If not a
|
||||
symbolic ref, nothing is printed. Respects the `:short`,
|
||||
`:lstrip` and `:rstrip` options in the same way as `refname`
|
||||
above.
|
||||
|
||||
`signature`::
|
||||
signature::
|
||||
The GPG signature of a commit.
|
||||
|
||||
`signature:grade`::
|
||||
Show
|
||||
`G`;; for a good (valid) signature
|
||||
`B`;; for a bad signature
|
||||
`U`;; for a good signature with unknown validity
|
||||
`X`;; for a good signature that has expired
|
||||
`Y`;; for a good signature made by an expired key
|
||||
`R`;; for a good signature made by a revoked key
|
||||
`E`;; if the signature cannot be checked (e.g. missing key)
|
||||
`N`;; for no signature.
|
||||
signature:grade::
|
||||
Show "G" for a good (valid) signature, "B" for a bad
|
||||
signature, "U" for a good signature with unknown validity, "X"
|
||||
for a good signature that has expired, "Y" for a good
|
||||
signature made by an expired key, "R" for a good signature
|
||||
made by a revoked key, "E" if the signature cannot be
|
||||
checked (e.g. missing key) and "N" for no signature.
|
||||
|
||||
`signature:signer`::
|
||||
signature:signer::
|
||||
The signer of the GPG signature of a commit.
|
||||
|
||||
`signature:key`::
|
||||
signature:key::
|
||||
The key of the GPG signature of a commit.
|
||||
|
||||
`signature:fingerprint`::
|
||||
signature:fingerprint::
|
||||
The fingerprint of the GPG signature of a commit.
|
||||
|
||||
`signature:primarykeyfingerprint`::
|
||||
signature:primarykeyfingerprint::
|
||||
The primary key fingerprint of the GPG signature of a commit.
|
||||
|
||||
`signature:trustlevel`::
|
||||
signature:trustlevel::
|
||||
The trust level of the GPG signature of a commit. Possible
|
||||
outputs are `ultimate`, `fully`, `marginal`, `never` and `undefined`.
|
||||
|
||||
`worktreepath`::
|
||||
worktreepath::
|
||||
The absolute path to the worktree in which the ref is checked
|
||||
out, if it is checked out in any linked worktree. Empty string
|
||||
otherwise.
|
||||
|
||||
`ahead-behind:<commit-ish>`::
|
||||
ahead-behind:<committish>::
|
||||
Two integers, separated by a space, demonstrating the number of
|
||||
commits ahead and behind, respectively, when comparing the output
|
||||
ref to the _<committish>_ specified in the format.
|
||||
ref to the `<committish>` specified in the format.
|
||||
|
||||
`is-base:<commit-ish>`::
|
||||
In at most one row, `(<commit-ish>)` will appear to indicate the ref
|
||||
is-base:<committish>::
|
||||
In at most one row, `(<committish>)` will appear to indicate the ref
|
||||
that is most likely the ref used as a starting point for the branch
|
||||
that produced _<commit-ish>_. This choice is made using a heuristic:
|
||||
that produced `<committish>`. This choice is made using a heuristic:
|
||||
choose the ref that minimizes the number of commits in the
|
||||
first-parent history of _<commit-ish>_ and not in the first-parent
|
||||
first-parent history of `<committish>` and not in the first-parent
|
||||
history of the ref.
|
||||
+
|
||||
For example, consider the following figure of first-parent histories of
|
||||
@ -228,29 +303,29 @@ common first-parent ancestor of `B` and `C` and ties are broken by the
|
||||
earliest ref in the sorted order.
|
||||
+
|
||||
Note that this token will not appear if the first-parent history of
|
||||
_<commit-ish>_ does not intersect the first-parent histories of the
|
||||
`<committish>` does not intersect the first-parent histories of the
|
||||
filtered refs.
|
||||
|
||||
`describe[:<option>,...]`::
|
||||
describe[:options]::
|
||||
A human-readable name, like linkgit:git-describe[1];
|
||||
empty string for undescribable commits. The `describe` string may
|
||||
be followed by a colon and one or more comma-separated options.
|
||||
+
|
||||
--
|
||||
`tags=<bool-value>`;;
|
||||
tags=<bool-value>;;
|
||||
Instead of only considering annotated tags, consider
|
||||
lightweight tags as well; see the corresponding option in
|
||||
linkgit:git-describe[1] for details.
|
||||
`abbrev=<number>`;;
|
||||
Use at least _<number>_ hexadecimal digits; see the corresponding
|
||||
abbrev=<number>;;
|
||||
Use at least <number> hexadecimal digits; see the corresponding
|
||||
option in linkgit:git-describe[1] for details.
|
||||
`match=<pattern>`;;
|
||||
Only consider tags matching the `glob`(7) _<pattern>_,
|
||||
excluding the `refs/tags/` prefix; see the corresponding option
|
||||
match=<pattern>;;
|
||||
Only consider tags matching the given `glob(7)` pattern,
|
||||
excluding the "refs/tags/" prefix; see the corresponding option
|
||||
in linkgit:git-describe[1] for details.
|
||||
`exclude=<pattern>`;;
|
||||
Do not consider tags matching the `glob`(7) _<pattern>_,
|
||||
excluding the `refs/tags/` prefix; see the corresponding option
|
||||
exclude=<pattern>;;
|
||||
Do not consider tags matching the given `glob(7)` pattern,
|
||||
excluding the "refs/tags/" prefix; see the corresponding option
|
||||
in linkgit:git-describe[1] for details.
|
||||
--
|
||||
|
||||
@ -282,7 +357,7 @@ variable (see linkgit:gitmailmap[5]).
|
||||
|
||||
The raw data in an object is `raw`.
|
||||
|
||||
`raw:size`::
|
||||
raw:size::
|
||||
The raw data size of the object.
|
||||
|
||||
Note that `--format=%(raw)` can not be used with `--python`, `--shell`, `--tcl`,
|
||||
@ -292,10 +367,10 @@ variable type.
|
||||
The message in a commit or a tag object is `contents`, from which
|
||||
`contents:<part>` can be used to extract various parts out of:
|
||||
|
||||
`contents:size`::
|
||||
contents:size::
|
||||
The size in bytes of the commit or tag message.
|
||||
|
||||
`contents:subject`::
|
||||
contents:subject::
|
||||
The first paragraph of the message, which typically is a
|
||||
single line, is taken as the "subject" of the commit or the
|
||||
tag message.
|
||||
@ -303,19 +378,19 @@ The message in a commit or a tag object is `contents`, from which
|
||||
obtain same results. `:sanitize` can be appended to `subject` for
|
||||
subject line suitable for filename.
|
||||
|
||||
`contents:body`::
|
||||
contents:body::
|
||||
The remainder of the commit or the tag message that follows
|
||||
the "subject".
|
||||
|
||||
`contents:signature`::
|
||||
contents:signature::
|
||||
The optional GPG signature of the tag.
|
||||
|
||||
`contents:lines=<n>`::
|
||||
The first _<n>_ lines of the message.
|
||||
contents:lines=N::
|
||||
The first `N` lines of the message.
|
||||
|
||||
Additionally, the trailers as interpreted by linkgit:git-interpret-trailers[1]
|
||||
are obtained as `trailers[:<option>,...]` (or by using the historical alias
|
||||
`contents:trailers[:<option>,...]`). For valid _<option>_ values see `trailers`
|
||||
are obtained as `trailers[:options]` (or by using the historical alias
|
||||
`contents:trailers[:options]`). For valid [:option] values see `trailers`
|
||||
section of linkgit:git-log[1].
|
||||
|
||||
For sorting purposes, fields with numeric values sort in numeric order
|
||||
@ -335,8 +410,8 @@ option to linkgit:git-rev-list[1] takes). If this formatting is provided in
|
||||
a `--sort` key, references will be sorted according to the byte-value of the
|
||||
formatted string rather than the numeric value of the underlying timestamp.
|
||||
|
||||
Some atoms like `%(align)` and `%(if)` always require a matching `%(end)`.
|
||||
We call them "opening atoms" and sometimes denote them as `%($open)`.
|
||||
Some atoms like %(align) and %(if) always require a matching %(end).
|
||||
We call them "opening atoms" and sometimes denote them as %($open).
|
||||
|
||||
When a scripting language specific quoting is in effect, everything
|
||||
between a top-level opening atom and its matching %(end) is evaluated
|
||||
@ -354,7 +429,7 @@ An example directly producing formatted text. Show the most recent
|
||||
#!/bin/sh
|
||||
|
||||
git for-each-ref --count=3 --sort='-*authordate' \
|
||||
`--format='From: %(*authorname) %(*authoremail)
|
||||
--format='From: %(*authorname) %(*authoremail)
|
||||
Subject: %(*subject)
|
||||
Date: %(*authordate)
|
||||
Ref: %(*refname)
|
||||
@ -365,7 +440,7 @@ Ref: %(*refname)
|
||||
|
||||
|
||||
A simple example showing the use of shell eval on the output,
|
||||
demonstrating the use of `--shell`. List the prefixes of all heads:
|
||||
demonstrating the use of --shell. List the prefixes of all heads:
|
||||
|
||||
------------
|
||||
#!/bin/sh
|
||||
@ -433,7 +508,7 @@ eval "$eval"
|
||||
------------
|
||||
|
||||
|
||||
An example to show the usage of `%(if)...%(then)...%(else)...%(end)`.
|
||||
An example to show the usage of %(if)...%(then)...%(else)...%(end).
|
||||
This prefixes the current branch with a star.
|
||||
|
||||
------------
|
||||
@ -441,7 +516,7 @@ git for-each-ref --format="%(if)%(HEAD)%(then)* %(else) %(end)%(refname:short)"
|
||||
------------
|
||||
|
||||
|
||||
An example to show the usage of `%(if)...%(then)...%(end)`.
|
||||
An example to show the usage of %(if)...%(then)...%(end).
|
||||
This prints the authorname, if present.
|
||||
|
||||
------------
|
||||
|
||||
@ -295,8 +295,7 @@ header). Note also that `git send-email` already handles this
|
||||
transformation for you, and this option should not be used if you are
|
||||
feeding the result to `git send-email`.
|
||||
|
||||
--force-in-body-from::
|
||||
--no-force-in-body-from::
|
||||
--[no-]force-in-body-from::
|
||||
With the e-mail sender specified via the `--from` option, by
|
||||
default, an in-body "From:" to identify the real author of
|
||||
the commit is added at the top of the commit log message if
|
||||
@ -315,8 +314,7 @@ feeding the result to `git send-email`.
|
||||
`Cc:`, and custom) headers added so far from config or command
|
||||
line.
|
||||
|
||||
--cover-letter::
|
||||
--no-cover-letter::
|
||||
--[no-]cover-letter::
|
||||
In addition to the patches, generate a cover letter file
|
||||
containing the branch description, shortlog and the overall diffstat. You can
|
||||
fill in a description in the file before sending it out.
|
||||
@ -381,8 +379,7 @@ configuration options in linkgit:git-notes[1] to use this workflow).
|
||||
The default is `--no-notes`, unless the `format.notes` configuration is
|
||||
set.
|
||||
|
||||
--signature=<signature>::
|
||||
--no-signature::
|
||||
--[no-]signature=<signature>::
|
||||
Add a signature to each message produced. Per RFC 3676 the signature
|
||||
is separated from the body by a line with '-- ' on it. If the
|
||||
signature option is omitted the signature defaults to the Git version
|
||||
@ -414,8 +411,7 @@ you can use `--suffix=-patch` to get `0001-description-of-my-change-patch`.
|
||||
Output an all-zero hash in each patch's From header instead
|
||||
of the hash of the commit.
|
||||
|
||||
--no-base::
|
||||
--base[=<commit>]::
|
||||
--[no-]base[=<commit>]::
|
||||
Record the base tree information to identify the state the
|
||||
patch series applies to. See the BASE TREE INFORMATION section
|
||||
below for details. If <commit> is "auto", a base commit is
|
||||
@ -591,19 +587,13 @@ an external editor to keep Thunderbird from mangling the patches.
|
||||
Approach #1 (add-on)
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Install the Toggle Line Wrap add-on that is available from
|
||||
https://addons.thunderbird.net/thunderbird/addon/toggle-line-wrap
|
||||
It adds a button "Line Wrap" to the composer's toolbar
|
||||
Install the Toggle Word Wrap add-on that is available from
|
||||
https://addons.mozilla.org/thunderbird/addon/toggle-word-wrap/
|
||||
It adds a menu entry "Enable Word Wrap" in the composer's "Options" menu
|
||||
that you can tick off. Now you can compose the message as you otherwise do
|
||||
(cut + paste, 'git format-patch' | 'git imap-send', etc), but you have to
|
||||
insert line breaks manually in any text that you type.
|
||||
|
||||
As a bonus feature, the add-on can detect patch text in the composer
|
||||
and warns when line wrapping has not yet been turned off.
|
||||
|
||||
The add-on requires a few tweaks of the advanced configuration
|
||||
(about:config). These are listed on the download page.
|
||||
|
||||
Approach #2 (configuration)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Three steps:
|
||||
|
||||
@ -31,8 +31,7 @@ index file, all SHA-1 references in the `refs` namespace, and all reflogs
|
||||
Print out objects that exist but that aren't reachable from any
|
||||
of the reference nodes.
|
||||
|
||||
--dangling::
|
||||
--no-dangling::
|
||||
--[no-]dangling::
|
||||
Print objects that exist but that are never 'directly' used (default).
|
||||
`--no-dangling` can be used to omit this information from the output.
|
||||
|
||||
@ -98,16 +97,14 @@ care about this output and want to speed it up further.
|
||||
compatible with linkgit:git-rev-parse[1], e.g.
|
||||
`HEAD@{1234567890}~25^2:src/`.
|
||||
|
||||
--progress::
|
||||
--no-progress::
|
||||
--[no-]progress::
|
||||
Progress status is reported on the standard error stream by
|
||||
default when it is attached to a terminal, unless
|
||||
--no-progress or --verbose is specified. --progress forces
|
||||
progress status even if the standard error stream is not
|
||||
directed to a terminal.
|
||||
|
||||
--references::
|
||||
--no-references::
|
||||
--[no-]references::
|
||||
Control whether to check the references database consistency
|
||||
via 'git refs verify'. See linkgit:git-refs[1] for details.
|
||||
The default is to check the references database.
|
||||
|
||||
@ -53,13 +53,11 @@ configuration options such as `gc.auto` and `gc.autoPackLimit`, all
|
||||
other housekeeping tasks (e.g. rerere, working trees, reflog...) will
|
||||
be performed as well.
|
||||
|
||||
--detach::
|
||||
--no-detach::
|
||||
--[no-]detach::
|
||||
Run in the background if the system supports it. This option overrides
|
||||
the `gc.autoDetach` config.
|
||||
|
||||
--cruft::
|
||||
--no-cruft::
|
||||
--[no-]cruft::
|
||||
When expiring unreachable objects, pack them separately into a
|
||||
cruft pack instead of storing them as loose objects. `--cruft`
|
||||
is on by default.
|
||||
|
||||
@ -25,11 +25,8 @@ commit-id::
|
||||
Either the hash or the filename under [URL]/refs/ to
|
||||
pull.
|
||||
|
||||
-a::
|
||||
-c::
|
||||
-t::
|
||||
-a, -c, -t::
|
||||
These options are ignored for historical reasons.
|
||||
|
||||
-v::
|
||||
Report what is downloaded.
|
||||
|
||||
|
||||
@ -9,24 +9,21 @@ git-imap-send - Send a collection of patches from stdin to an IMAP folder
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git imap-send' [-v] [-q] [--[no-]curl] [(--folder|-f) <folder>]
|
||||
'git imap-send' --list
|
||||
'git imap-send' [-v] [-q] [--[no-]curl]
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
This command uploads a mailbox generated with `git format-patch`
|
||||
This command uploads a mailbox generated with 'git format-patch'
|
||||
into an IMAP drafts folder. This allows patches to be sent as
|
||||
other email is when using mail clients that cannot read mailbox
|
||||
files directly. The command also works with any general mailbox
|
||||
in which emails have the fields `From`, `Date`, and `Subject` in
|
||||
in which emails have the fields "From", "Date", and "Subject" in
|
||||
that order.
|
||||
|
||||
Typical usage is something like:
|
||||
|
||||
------
|
||||
$ git format-patch --signoff --stdout --attach origin | git imap-send
|
||||
------
|
||||
git format-patch --signoff --stdout --attach origin | git imap-send
|
||||
|
||||
|
||||
OPTIONS
|
||||
@ -40,11 +37,6 @@ OPTIONS
|
||||
--quiet::
|
||||
Be quiet.
|
||||
|
||||
-f <folder>::
|
||||
--folder=<folder>::
|
||||
Specify the folder in which the emails have to saved.
|
||||
For example: `--folder=[Gmail]/Drafts` or `-f INBOX/Drafts`.
|
||||
|
||||
--curl::
|
||||
Use libcurl to communicate with the IMAP server, unless tunneling
|
||||
into it. Ignored if Git was built without the USE_CURL_FOR_IMAP_SEND
|
||||
@ -55,8 +47,6 @@ OPTIONS
|
||||
using libcurl. Ignored if Git was built with the NO_OPENSSL option
|
||||
set.
|
||||
|
||||
--list::
|
||||
Run the IMAP LIST command to output a list of all the folders present.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
@ -68,34 +58,6 @@ include::includes/cmd-config-section-rest.adoc[]
|
||||
|
||||
include::config/imap.adoc[]
|
||||
|
||||
GETTING A LIST OF AVAILABLE FOLDERS
|
||||
-----------------------------------
|
||||
|
||||
In order to send an email to a specific folder, you need to know the correct name of
|
||||
intended folder in your mailbox. The names like "Junk", "Trash" etc. displayed by
|
||||
various email clients need not be the actual names of the folders stored in the mail
|
||||
server of your email provider.
|
||||
|
||||
In order to get the correct folder name to be used with `git imap-send`, you can run
|
||||
`git imap-send --list`. This will display a list of valid folder names. An example
|
||||
of such an output when run on a Gmail account is:
|
||||
|
||||
.........................
|
||||
* LIST (\HasNoChildren) "/" "INBOX"
|
||||
* LIST (\HasChildren \Noselect) "/" "[Gmail]"
|
||||
* LIST (\All \HasNoChildren) "/" "[Gmail]/All Mail"
|
||||
* LIST (\Drafts \HasNoChildren) "/" "[Gmail]/Drafts"
|
||||
* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important"
|
||||
* LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail"
|
||||
* LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
|
||||
* LIST (\Flagged \HasNoChildren) "/" "[Gmail]/Starred"
|
||||
* LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash"
|
||||
.........................
|
||||
|
||||
Here, you can observe that the correct name for the "Junk" folder is `[Gmail]/Spam`
|
||||
and for the "Trash" folder is `[Gmail]/Trash`. Similar logic can be used to determine
|
||||
other folders as well.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
Using tunnel mode:
|
||||
@ -140,56 +102,20 @@ Using Gmail's IMAP interface:
|
||||
|
||||
---------
|
||||
[imap]
|
||||
folder = "[Gmail]/Drafts"
|
||||
host = imaps://imap.gmail.com
|
||||
user = user@gmail.com
|
||||
port = 993
|
||||
folder = "[Gmail]/Drafts"
|
||||
host = imaps://imap.gmail.com
|
||||
user = user@gmail.com
|
||||
port = 993
|
||||
---------
|
||||
|
||||
Gmail does not allow using your regular password for `git imap-send`.
|
||||
If you have multi-factor authentication set up on your Gmail account, you
|
||||
can generate an app-specific password for use with `git imap-send`.
|
||||
Visit https://security.google.com/settings/security/apppasswords to create
|
||||
it. Alternatively, use OAuth2.0 authentication as described below.
|
||||
|
||||
[NOTE]
|
||||
You might need to instead use: `folder = "[Google Mail]/Drafts"` if you get an error
|
||||
that the "Folder doesn't exist". You can also run `git imap-send --list` to get a
|
||||
list of available folders.
|
||||
that the "Folder doesn't exist".
|
||||
|
||||
[NOTE]
|
||||
If your Gmail account is set to another language than English, the name of the "Drafts"
|
||||
folder will be localized.
|
||||
|
||||
If you want to use OAuth2.0 based authentication, you can specify
|
||||
`OAUTHBEARER` or `XOAUTH2` mechanism in your config. It is more secure
|
||||
than using app-specific passwords, and also does not enforce the need of
|
||||
having multi-factor authentication. You will have to use an OAuth2.0
|
||||
access token in place of your password when using this authentication.
|
||||
|
||||
---------
|
||||
[imap]
|
||||
folder = "[Gmail]/Drafts"
|
||||
host = imaps://imap.gmail.com
|
||||
user = user@gmail.com
|
||||
port = 993
|
||||
authmethod = OAUTHBEARER
|
||||
---------
|
||||
|
||||
Using Outlook's IMAP interface:
|
||||
|
||||
Unlike Gmail, Outlook only supports OAuth2.0 based authentication. Also, it
|
||||
supports only `XOAUTH2` as the mechanism.
|
||||
|
||||
---------
|
||||
[imap]
|
||||
folder = "Drafts"
|
||||
host = imaps://outlook.office365.com
|
||||
user = user@outlook.com
|
||||
port = 993
|
||||
authmethod = XOAUTH2
|
||||
---------
|
||||
|
||||
Once the commits are ready to be sent, run the following command:
|
||||
|
||||
$ git format-patch --cover-letter -M --stdout origin/master | git imap-send
|
||||
@ -198,10 +124,6 @@ Just make sure to disable line wrapping in the email client (Gmail's web
|
||||
interface will wrap lines no matter what, so you need to use a real
|
||||
IMAP client).
|
||||
|
||||
In case you are using OAuth2.0 authentication, it is easier to use credential
|
||||
helpers to generate tokens. Credential helpers suggested in
|
||||
linkgit:git-send-email[1] can be used for `git imap-send` as well.
|
||||
|
||||
CAUTION
|
||||
-------
|
||||
It is still your responsibility to make sure that the email message
|
||||
|
||||
@ -36,8 +36,7 @@ OPTIONS
|
||||
fails if the name of packed archive does not end
|
||||
with .pack).
|
||||
|
||||
--rev-index::
|
||||
--no-rev-index::
|
||||
--[no-]rev-index::
|
||||
When this flag is provided, generate a reverse index
|
||||
(a `.rev` file) corresponding to the given pack. If
|
||||
`--verify` is given, ensure that the existing
|
||||
|
||||
@ -77,15 +77,9 @@ If this is a reinitialization, the repository will be moved to the specified pat
|
||||
`-b <branch-name>`::
|
||||
`--initial-branch=<branch-name>`::
|
||||
Use _<branch-name>_ for the initial branch in the newly created
|
||||
repository. If not specified, fall back to the default name
|
||||
ifndef::with-breaking-changes[]
|
||||
(currently `master`, but this will change to `main` when Git 3.0 is released).
|
||||
endif::with-breaking-changes[]
|
||||
ifdef::with-breaking-changes[]
|
||||
`main`.
|
||||
endif::with-breaking-changes[]
|
||||
The default name can be customized via the `init.defaultBranch` configuration
|
||||
variable.
|
||||
repository. If not specified, fall back to the default name (currently
|
||||
`master`, but this is subject to change in the future; the name can be
|
||||
customized via the `init.defaultBranch` configuration variable).
|
||||
|
||||
`--shared[=(false|true|umask|group|all|world|everybody|<perm>)]`::
|
||||
|
||||
|
||||
@ -142,8 +142,8 @@ OPTIONS
|
||||
provided with '--if-exists' overrides the `trailer.ifExists` and any
|
||||
applicable `trailer.<keyAlias>.ifExists` configuration variables
|
||||
and applies to all '--trailer' options until the next occurrence of
|
||||
'--if-exists' or '--no-if-exists'. Upon encountering '--no-if-exists', clear the
|
||||
effect of any previous use of '--if-exists', such that the relevant configuration
|
||||
'--if-exists' or '--no-if-exists'. Upon encountering '--no-if-exists, clear the
|
||||
effect of any previous use of '--if-exists, such that the relevant configuration
|
||||
variables are no longer overridden. Possible actions are `addIfDifferent`,
|
||||
`addIfDifferentNeighbor`, `add`, `replace` and `doNothing`.
|
||||
|
||||
@ -154,8 +154,8 @@ OPTIONS
|
||||
provided with '--if-missing' overrides the `trailer.ifMissing` and any
|
||||
applicable `trailer.<keyAlias>.ifMissing` configuration variables
|
||||
and applies to all '--trailer' options until the next occurrence of
|
||||
'--if-missing' or '--no-if-missing'. Upon encountering '--no-if-missing',
|
||||
clear the effect of any previous use of '--if-missing', such that the relevant
|
||||
'--if-missing' or '--no-if-missing'. Upon encountering '--no-if-missing,
|
||||
clear the effect of any previous use of '--if-missing, such that the relevant
|
||||
configuration variables are no longer overridden. Possible actions are `doNothing`
|
||||
or `add`.
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user