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.49.1" 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
|
||||
|
||||
9
.gitattributes
vendored
9
.gitattributes
vendored
@ -1,19 +1,18 @@
|
||||
* 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
|
||||
/t/oid-info/* text eol=lf
|
||||
/Documentation/git-merge.adoc conflict-marker-size=32
|
||||
/Documentation/git-merge-file.adoc conflict-marker-size=32
|
||||
/Documentation/gitk.adoc conflict-marker-size=32
|
||||
/Documentation/user-manual.adoc conflict-marker-size=32
|
||||
/t/t????-*.sh conflict-marker-size=32
|
||||
|
||||
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
|
||||
|
||||
|
||||
10
.github/workflows/coverity.yml
vendored
10
.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
|
||||
@ -147,13 +147,9 @@ jobs:
|
||||
key: cov-build-${{ env.COVERITY_LANGUAGE }}-${{ env.COVERITY_PLATFORM }}-${{ steps.lookup.outputs.hash }}
|
||||
- name: build with cov-build
|
||||
run: |
|
||||
export PATH="$PATH:$RUNNER_TEMP/cov-analysis/bin" &&
|
||||
export PATH="$RUNNER_TEMP/cov-analysis/bin:$PATH" &&
|
||||
cov-configure --gcc &&
|
||||
if ! cov-build --dir cov-int make
|
||||
then
|
||||
cat cov-int/build-log.txt
|
||||
exit 1
|
||||
fi
|
||||
cov-build --dir cov-int make
|
||||
- name: package the build
|
||||
run: tar -czvf cov-int.tgz cov-int
|
||||
- name: submit the build to Coverity Scan
|
||||
|
||||
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
|
||||
|
||||
110
.github/workflows/main.yml
vendored
110
.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,19 +258,19 @@ 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
|
||||
- name: Setup
|
||||
shell: pwsh
|
||||
run: meson setup build --vsenv -Dbuildtype=release -Dperl=disabled -Dcredential_helpers=wincred
|
||||
run: meson setup build -Dperl=disabled -Dcredential_helpers=wincred
|
||||
- name: Compile
|
||||
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}}
|
||||
@ -359,10 +349,9 @@ jobs:
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
CC: clang
|
||||
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 +378,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 +395,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
|
||||
@ -418,38 +407,23 @@ jobs:
|
||||
jobname: ${{matrix.vector.jobname}}
|
||||
CC: ${{matrix.vector.cc}}
|
||||
CI_JOB_IMAGE: ${{matrix.vector.image}}
|
||||
CUSTOM_PATH: /custom
|
||||
runs-on: ubuntu-latest
|
||||
container: ${{matrix.vector.image}}
|
||||
steps:
|
||||
- name: prepare libc6 for actions
|
||||
if: matrix.vector.jobname == 'linux32'
|
||||
run: apt -q update && apt -q -y install libc6-amd64 lib64stdc++6
|
||||
- name: install git in container
|
||||
run: |
|
||||
if command -v git
|
||||
then
|
||||
: # nothing to do
|
||||
elif command -v apk
|
||||
then
|
||||
apk add --update git
|
||||
elif command -v dnf
|
||||
then
|
||||
dnf -yq update && dnf -yq install git
|
||||
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}}
|
||||
@ -458,43 +432,26 @@ jobs:
|
||||
if: needs.ci-config.outputs.enabled == 'yes'
|
||||
env:
|
||||
jobname: StaticAnalysis
|
||||
CI_JOB_IMAGE: ubuntu-22.04
|
||||
runs-on: ubuntu-22.04
|
||||
concurrency:
|
||||
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'
|
||||
env:
|
||||
jobname: sparse
|
||||
CI_JOB_IMAGE: ubuntu-22.04
|
||||
runs-on: ubuntu-22.04
|
||||
concurrency:
|
||||
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
|
||||
@ -507,9 +464,8 @@ jobs:
|
||||
cancel-in-progress: ${{ needs.ci-config.outputs.skip_concurrent == 'yes' }}
|
||||
env:
|
||||
jobname: Documentation
|
||||
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
|
||||
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,6 +1,4 @@
|
||||
/fuzz_corpora
|
||||
/target/
|
||||
/Cargo.lock
|
||||
/GIT-BUILD-DIR
|
||||
/GIT-BUILD-OPTIONS
|
||||
/GIT-CFLAGS
|
||||
@ -57,7 +55,6 @@
|
||||
/git-diff
|
||||
/git-diff-files
|
||||
/git-diff-index
|
||||
/git-diff-pairs
|
||||
/git-diff-tree
|
||||
/git-difftool
|
||||
/git-difftool--helper
|
||||
@ -89,7 +86,6 @@
|
||||
/git-init-db
|
||||
/git-interpret-trailers
|
||||
/git-instaweb
|
||||
/git-last-modified
|
||||
/git-log
|
||||
/git-ls-files
|
||||
/git-ls-remote
|
||||
@ -142,7 +138,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,16 +148,23 @@ 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
|
||||
stage: build
|
||||
script:
|
||||
- meson setup build --vsenv -Dperl=disabled -Dbackend_max_links=1 -Dcredential_helpers=wincred
|
||||
- meson setup build -Dperl=disabled -Dbackend_max_links=1 -Dcredential_helpers=wincred
|
||||
- meson compile -C build
|
||||
artifacts:
|
||||
paths:
|
||||
@ -178,16 +173,14 @@ build:msvc-meson:
|
||||
test:msvc-meson:
|
||||
extends: .msvc-meson
|
||||
stage: test
|
||||
when: manual
|
||||
timeout: 6h
|
||||
needs:
|
||||
- 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 +205,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).
|
||||
@ -276,45 +178,6 @@ references.
|
||||
+
|
||||
These features will be removed.
|
||||
|
||||
* Support for "--stdin" option in the "name-rev" command was
|
||||
deprecated (and hidden from the documentation) in the Git 2.40
|
||||
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
|
||||
|
||||
Some features have gained newer replacements that aim to improve the design in
|
||||
|
||||
@ -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.
|
||||
@ -882,9 +861,6 @@ Markup:
|
||||
_<git-dir>_
|
||||
_<key-id>_
|
||||
|
||||
Characters are also surrounded by underscores:
|
||||
_LF_, _CR_, _CR_/_LF_, _NUL_, _EOF_
|
||||
|
||||
Git's Asciidoc processor has been tailored to treat backticked text
|
||||
as complex synopsis. When literal and placeholders are mixed, you can
|
||||
use the backtick notation which will take care of correctly typesetting
|
||||
@ -898,17 +874,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
|
||||
@ -111,7 +109,6 @@ SP_ARTICLES += howto/coordinate-embargoed-releases
|
||||
API_DOCS = $(patsubst %.adoc,%,$(filter-out technical/api-index-skel.adoc technical/api-index.adoc, $(wildcard technical/api-*.adoc)))
|
||||
SP_ARTICLES += $(API_DOCS)
|
||||
|
||||
TECH_DOCS += BreakingChanges
|
||||
TECH_DOCS += DecisionMaking
|
||||
TECH_DOCS += ReviewingGuidelines
|
||||
TECH_DOCS += MyFirstContribution
|
||||
@ -121,29 +118,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
|
||||
@ -329,8 +316,8 @@ cmds_txt = cmds-ancillaryinterrogators.adoc \
|
||||
|
||||
$(cmds_txt): cmd-list.made
|
||||
|
||||
cmd-list.made: cmd-list.sh ../command-list.txt $(MAN1_TXT)
|
||||
$(QUIET_GEN)$(SHELL_PATH) ./cmd-list.sh .. . $(cmds_txt) && \
|
||||
cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
|
||||
$(QUIET_GEN)$(PERL_PATH) ./cmd-list.perl .. . $(cmds_txt) && \
|
||||
date >$@
|
||||
|
||||
mergetools-%.adoc: generate-mergetool-list.sh ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
||||
@ -410,9 +397,9 @@ user-manual.html: user-manual.xml $(XSLT)
|
||||
git.info: user-manual.texi
|
||||
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
|
||||
|
||||
user-manual.texi: user-manual.xml fix-texi.sh
|
||||
user-manual.texi: user-manual.xml
|
||||
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@+ && \
|
||||
$(SHELL_PATH) fix-texi.sh <$@+ >$@ && \
|
||||
$(PERL_PATH) fix-texi.perl <$@+ >$@ && \
|
||||
$(RM) $@+
|
||||
|
||||
user-manual.pdf: user-manual.xml
|
||||
@ -509,26 +496,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 +509,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-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 +522,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
|
||||
|
||||
|
||||
@ -40,6 +40,14 @@ the list by sending an email to <git+subscribe@vger.kernel.org>
|
||||
The https://lore.kernel.org/git[archive] of this mailing list is
|
||||
available to view in a browser.
|
||||
|
||||
==== https://groups.google.com/forum/#!forum/git-mentoring[git-mentoring@googlegroups.com]
|
||||
|
||||
This mailing list is targeted to new contributors and was created as a place to
|
||||
post questions and receive answers outside of the public eye of the main list.
|
||||
Veteran contributors who are especially interested in helping mentor newcomers
|
||||
are present on the list. In order to avoid search indexers, group membership is
|
||||
required to view messages; anyone can join and no approval is required.
|
||||
|
||||
==== https://web.libera.chat/#git-devel[#git-devel] on Libera Chat
|
||||
|
||||
This IRC channel is for conversations between Git contributors. If someone is
|
||||
@ -52,15 +60,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
|
||||
|
||||
@ -151,31 +150,15 @@ command in `builtin/psuh.c`. Create that file, and within it, write the entry
|
||||
point for your command in a function matching the style and signature:
|
||||
|
||||
----
|
||||
int cmd_psuh(int argc UNUSED, const char **argv UNUSED,
|
||||
const char *prefix UNUSED, struct repository *repo UNUSED)
|
||||
int cmd_psuh(int argc, const char **argv, const char *prefix)
|
||||
----
|
||||
|
||||
A few things to note:
|
||||
|
||||
* A subcommand implementation takes its command line arguments
|
||||
in `int argc` + `const char **argv`, like `main()` would.
|
||||
|
||||
* It also takes two extra parameters, `prefix` and `repo`. What
|
||||
they mean will not be discussed until much later.
|
||||
|
||||
* Because this first example will not use any of the parameters,
|
||||
your compiler will give warnings on unused parameters. As the
|
||||
list of these four parameters is mandated by the API to add
|
||||
new built-in commands, you cannot omit them. Instead, you add
|
||||
`UNUSED` to each of them to tell the compiler that you *know*
|
||||
you are not (yet) using it.
|
||||
|
||||
We'll also need to add the declaration of psuh; open up `builtin.h`, find the
|
||||
declaration for `cmd_pull`, and add a new line for `psuh` immediately before it,
|
||||
in order to keep the declarations alphabetically sorted:
|
||||
|
||||
----
|
||||
int cmd_psuh(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
int cmd_psuh(int argc, const char **argv, const char *prefix);
|
||||
----
|
||||
|
||||
Be sure to `#include "builtin.h"` in your `psuh.c`. You'll also need to
|
||||
@ -191,8 +174,7 @@ Throughout the tutorial, we will mark strings for translation as necessary; you
|
||||
should also do so when writing your user-facing commands in the future.
|
||||
|
||||
----
|
||||
int cmd_psuh(int argc UNUSED, const char **argv UNUSED,
|
||||
const char *prefix UNUSED, struct repository *repo UNUSED)
|
||||
int cmd_psuh(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
printf(_("Pony saying hello goes here.\n"));
|
||||
return 0;
|
||||
@ -305,9 +287,8 @@ on the reference implementation linked at the top of this document.
|
||||
It's probably useful to do at least something besides printing out a string.
|
||||
Let's start by having a look at everything we get.
|
||||
|
||||
Modify your `cmd_psuh` implementation to dump the args you're passed,
|
||||
keeping existing `printf()` calls in place; because the args are now
|
||||
used, remove the `UNUSED` macro from them:
|
||||
Modify your `cmd_psuh` implementation to dump the args you're passed, keeping
|
||||
existing `printf()` calls in place:
|
||||
|
||||
----
|
||||
int i;
|
||||
@ -331,8 +312,7 @@ on the command line, including the name of our command. (If `prefix` is empty
|
||||
for you, try `cd Documentation/ && ../bin-wrappers/git psuh`). That's not so
|
||||
helpful. So what other context can we get?
|
||||
|
||||
Add a line to `#include "config.h"` and `#include "repository.h"`.
|
||||
Then, add the following bits to the function body:
|
||||
Add a line to `#include "config.h"`. Then, add the following bits to the
|
||||
function body:
|
||||
|
||||
----
|
||||
@ -340,18 +320,18 @@ function body:
|
||||
|
||||
...
|
||||
|
||||
repo_config(repo, git_default_config, NULL);
|
||||
if (repo_config_get_string_tmp(repo, "user.name", &cfg_name))
|
||||
git_config(git_default_config, NULL);
|
||||
if (git_config_get_string_tmp("user.name", &cfg_name) > 0)
|
||||
printf(_("No name is found in config\n"));
|
||||
else
|
||||
printf(_("Your name: %s\n"), cfg_name);
|
||||
----
|
||||
|
||||
`repo_config()` will grab the configuration from config files known to Git and
|
||||
apply standard precedence rules. `repo_config_get_string_tmp()` will look up
|
||||
`git_config()` will grab the configuration from config files known to Git and
|
||||
apply standard precedence rules. `git_config_get_string_tmp()` will look up
|
||||
a specific key ("user.name") and give you the value. There are a number of
|
||||
single-key lookup functions like this one; you can see them all (and more info
|
||||
about how to use `repo_config()`) in `Documentation/technical/api-config.adoc`.
|
||||
about how to use `git_config()`) in `Documentation/technical/api-config.adoc`.
|
||||
|
||||
You should see that the name printed matches the one you see when you run:
|
||||
|
||||
@ -384,10 +364,9 @@ status_init_config(&s, git_status_config);
|
||||
----
|
||||
|
||||
But as we drill down, we can find that `status_init_config()` wraps a call
|
||||
to `repo_config()`. Let's modify the code we wrote in the previous commit.
|
||||
to `git_config()`. Let's modify the code we wrote in the previous commit.
|
||||
|
||||
Be sure to include the header to allow you to use `struct wt_status`:
|
||||
|
||||
----
|
||||
#include "wt-status.h"
|
||||
----
|
||||
@ -400,8 +379,8 @@ prepare it, and print its contents:
|
||||
|
||||
...
|
||||
|
||||
wt_status_prepare(repo, &status);
|
||||
repo_config(repo, git_default_config, &status);
|
||||
wt_status_prepare(the_repository, &status);
|
||||
git_config(git_default_config, &status);
|
||||
|
||||
...
|
||||
|
||||
@ -917,13 +896,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 +1129,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);
|
||||
|
||||
...
|
||||
}
|
||||
@ -300,7 +287,6 @@ static void final_rev_info_setup(struct rev_info *rev)
|
||||
====
|
||||
Instead of using the shorthand `add_head_to_pending()`, you could do
|
||||
something like this:
|
||||
|
||||
----
|
||||
struct setup_revision_opt opt;
|
||||
|
||||
@ -309,7 +295,6 @@ something like this:
|
||||
opt.revarg_opt = REVARG_COMMITTISH;
|
||||
setup_revisions(argc, argv, rev, &opt);
|
||||
----
|
||||
|
||||
Using a `setup_revision_opt` gives you finer control over your walk's starting
|
||||
point.
|
||||
====
|
||||
@ -318,7 +303,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,441 +0,0 @@
|
||||
Git v2.50 Release Notes
|
||||
=======================
|
||||
|
||||
UI, Workflows & Features
|
||||
------------------------
|
||||
|
||||
* A post-processing filter for "diff --raw" output has been
|
||||
introduced.
|
||||
|
||||
* "git repack" learned "--combine-cruft-below-size" option that
|
||||
controls how cruft-packs are combined.
|
||||
|
||||
* TCP keepalive behaviour on http transports can now be configured by
|
||||
calling cURL library.
|
||||
|
||||
* Incrementally updating multi-pack index files.
|
||||
|
||||
* "git reflog" learns "drop" subcommand, that discards the entire
|
||||
reflog data for a ref.
|
||||
|
||||
* A new userdiff driver for ".ini" format configuration files has
|
||||
been added.
|
||||
|
||||
* The job to coalesce loose objects into packfiles in "git
|
||||
maintenance" now has configurable batch size.
|
||||
|
||||
* "git clone" still gave the message about the default branch name;
|
||||
this message has been turned into an advice message that can be
|
||||
turned off.
|
||||
|
||||
* "git rev-list" learns machine-parsable output format that delimits
|
||||
each field with NUL.
|
||||
|
||||
* "git maintenance" learns a new task to expire reflog entries.
|
||||
|
||||
* Auth-related (and unrelated) error handling in send-email has been
|
||||
made more robust.
|
||||
|
||||
* Updating multiple references have only been possible in an all-or-nothing
|
||||
fashion with transactions, but it can be more efficient to batch
|
||||
multiple updates even when some of them are allowed to fail in a
|
||||
best-effort manner. A new "best effort batches of updates" mode
|
||||
has been introduced.
|
||||
|
||||
* "git help --build-options" reports SHA-1 and SHA-256 backends used
|
||||
in the build.
|
||||
|
||||
* "git cat-file --batch" and friends learned to allow "--filter=" to
|
||||
omit certain objects, just like the transport layer does.
|
||||
|
||||
* "git blame --porcelain" mode now talks about unblamable lines and
|
||||
lines that are blamed to an ignored commit.
|
||||
|
||||
* The build procedure installs bash (but not zsh) completion script.
|
||||
|
||||
* send-email has been updated to work better with Outlook's SMTP server.
|
||||
|
||||
* "git diff --minimal" used to give non-minimal output when its
|
||||
optimization kicked in, which has been disabled.
|
||||
|
||||
* "git index-pack --fix-thin" used to abort to prevent a cycle in
|
||||
delta chains from forming in a corner case even when there is no
|
||||
such cycle.
|
||||
|
||||
* Make repository clean-up tasks that "gc" can do available to "git
|
||||
maintenance" front-end.
|
||||
|
||||
* Bundle-URI feature did not use refs recorded in the bundle other
|
||||
than normal branches as anchoring points to optimize the follow-up
|
||||
fetch during "git clone"; now it is told to utilize all.
|
||||
|
||||
* The `send-email` documentation has been updated with OAuth2.0
|
||||
related examples.
|
||||
|
||||
* Two of the "scalar" subcommands that add a repository that hasn't
|
||||
been under "scalar"'s control are taught an option not to enable the
|
||||
scheduled maintenance on it.
|
||||
|
||||
* The userdiff pattern for shell scripts has been updated to cope
|
||||
with more bash-isms.
|
||||
|
||||
* "git merge-tree" learned an option to see if it resolves cleanly
|
||||
without actually creating a result.
|
||||
|
||||
* The commit title in the "rebase -i" todo file are now prefixed with
|
||||
'#', just like a merge commit being replayed.
|
||||
|
||||
* "git receive-pack" optionally learns not to care about connectivity
|
||||
check, which can be useful when the repository arranges to ensure
|
||||
connectivity by some other means.
|
||||
|
||||
* "git notes --help" documentation updates.
|
||||
|
||||
|
||||
Performance, Internal Implementation, Development Support etc.
|
||||
--------------------------------------------------------------
|
||||
|
||||
* A handful of built-in command implementations have been rewritten
|
||||
to use the repository instance supplied by git.c:run_builtin(), its
|
||||
caller.
|
||||
|
||||
* "git fsck" becomes more careful when checking the refs.
|
||||
|
||||
* "git fast-export | git fast-import" learns to deal with commit and
|
||||
tag objects with embedded signatures a bit better. This is highly
|
||||
experimental and the format of the data stream may change in the
|
||||
future without compatibility guarantees.
|
||||
|
||||
* The code paths to check whether a refname X is available (by seeing
|
||||
if another ref X/Y exists, etc.) have been optimized.
|
||||
|
||||
* First step of deprecating and removing merge-recursive.
|
||||
|
||||
* In protocol v2 where the refs advertisement is constrained, we try
|
||||
to tell the server side not to limit the advertisement when there
|
||||
is no specific need to, which has been the source of confusion and
|
||||
recent bugs. Revamp the logic to simplify.
|
||||
|
||||
* Update meson based build procedure for breaking changes support.
|
||||
|
||||
* Enable -Wunreachable-code for developer builds.
|
||||
|
||||
* Ensure what we write in assert() does not have side effects,
|
||||
and introduce ASSERT() macro to mark those that cannot be
|
||||
mechanically checked for lack of side effects.
|
||||
|
||||
* Give more meaningful error return values from block writer layer of
|
||||
the reftable ref-API backend.
|
||||
|
||||
* Make the code in reftable library less reliant on the service
|
||||
routines it used to borrow from Git proper, to make it easier to
|
||||
use by external users of the library.
|
||||
|
||||
* CI update.
|
||||
|
||||
* The object layer has been updated to take an explicit repository
|
||||
instance as a parameter in more code paths.
|
||||
|
||||
* Some warnings from "-Wsign-compare" for builtin/rm.c have been
|
||||
squelched.
|
||||
|
||||
* A few traditional unit tests have been rewritten to use the clar
|
||||
framework.
|
||||
|
||||
* Some warnings from "-Wsign-compare" for pathspec.c have been
|
||||
squelched.
|
||||
|
||||
* "make test" used to have a hard dependency on (basic) Perl; tests
|
||||
have been rewritten help environment with NO_PERL test the build as
|
||||
much as possible.
|
||||
|
||||
* Remove remnants of the recursive merge strategy backend, which was
|
||||
superseded by the ort merge strategy.
|
||||
|
||||
* Optimize the code to dedup references recorded in a bundle file.
|
||||
|
||||
* Update parse-options API to catch mistakes to pass address of an
|
||||
integral variable of a wrong type/size.
|
||||
|
||||
* Since a call to repo_config() can be called with repo set to NULL
|
||||
these days, a command that is marked as RUN_SETUP in the builtin
|
||||
command table does not have to check repo with NULL before making
|
||||
the call.
|
||||
|
||||
* Overhaul of the reftable API.
|
||||
|
||||
* Reduce requirement for Perl in our documentation build and a few
|
||||
scripts.
|
||||
|
||||
* The build procedure based on Meson learned to drive the
|
||||
benchmarking tests.
|
||||
|
||||
* Code clean-up for meson-based build infrastructure.
|
||||
|
||||
* Add an equivalent to "make hdr-check" target to meson based builds.
|
||||
|
||||
* Further code clean-up in the object-store layer.
|
||||
|
||||
* Build performance fix.
|
||||
|
||||
* Teach "git send-email" to also consult `hostname -f` for mail
|
||||
domain to compute the identity given to SMTP servers.
|
||||
|
||||
* The dependency on the_repository variable has been reduced from the
|
||||
code paths in "git replay".
|
||||
|
||||
* Support to create a loose object file with unknown object type has
|
||||
been dropped.
|
||||
|
||||
* The code path to access the "packed-refs" file while "fsck" is
|
||||
taught to mmap the file, instead of reading the whole file into
|
||||
memory.
|
||||
|
||||
* Assorted fixes for issues found with CodeQL.
|
||||
|
||||
* Remove the leftover hints to the test framework to mark tests that
|
||||
do not pass the leak checker tests, as they should no longer be
|
||||
needed.
|
||||
|
||||
* When a stale .midx file refers to .pack files that no longer exist,
|
||||
we ended up checking for these non-existent files repeatedly, which
|
||||
has been optimized by memoizing the non-existence.
|
||||
|
||||
* Build settings have been improved for BSD based systems.
|
||||
|
||||
* Newer version of libcURL detected curl_easy_setopt() calls we made
|
||||
with platform-natural "int" when we should have used "long", which
|
||||
all have been corrected.
|
||||
|
||||
* Tests that compare $HOME and $(pwd), which should be the same
|
||||
directory unless the tests chdir's around, would fail when the user
|
||||
enters the test directory via symbolic links, which has been
|
||||
corrected.
|
||||
|
||||
|
||||
Fixes since v2.49
|
||||
-----------------
|
||||
|
||||
* The refname exclusion logic in the packed-ref backend has been
|
||||
broken for some time, which confused upload-pack to advertise
|
||||
different set of refs. This has been corrected.
|
||||
(merge 10e8a9352b tb/refs-exclude-fixes later to maint).
|
||||
|
||||
* The merge-recursive and merge-ort machinery crashed in corner cases
|
||||
when certain renames are involved.
|
||||
(merge 3adba40858 en/merge-process-renames-crash-fix later to maint).
|
||||
|
||||
* Certain "cruft" objects would have never been refreshed when there
|
||||
are multiple cruft packs in the repository, which has been
|
||||
corrected.
|
||||
(merge 08f612ba70 tb/multi-cruft-pack-refresh-fix later to maint).
|
||||
|
||||
* The xdiff code on 32-bit platform misbehaved when an insanely large
|
||||
context size is given, which has been corrected.
|
||||
(merge d39e28e68c rs/xdiff-context-length-fix later to maint).
|
||||
|
||||
* GitHub Actions CI switched on a CI/CD variable that does not exist
|
||||
when choosing what packages to install etc., which has been
|
||||
corrected.
|
||||
(merge ee89f7c79d kn/ci-meson-check-build-docs-fix later to maint).
|
||||
|
||||
* Using "git name-rev --stdin" as an example, improve the framework to
|
||||
prepare tests to pretend to be in the future where the breaking
|
||||
changes have already happened.
|
||||
(merge de3dec1187 jc/name-rev-stdin later to maint).
|
||||
|
||||
* An earlier code refactoring of the hash machinery missed a few
|
||||
required calls to init_fn.
|
||||
(merge d39f04b638 jh/hash-init-fixes later to maint).
|
||||
|
||||
* A documentation page was left out from formatting and installation,
|
||||
which has been corrected.
|
||||
(merge ae85116f18 pw/build-breaking-changes-doc later to maint).
|
||||
|
||||
* The bash command line completion script (in contrib/) has been
|
||||
updated to cope with remote repository nicknames with slashes in
|
||||
them.
|
||||
(merge 778d2f1760 dm/completion-remote-names-fix later to maint).
|
||||
|
||||
* "Dubious ownership" checks on Windows has been tightened up.
|
||||
(merge 5bb88e89ef js/mingw-admins-are-special later to maint).
|
||||
|
||||
* Layout configuration in vimdiff backend didn't work as advertised,
|
||||
which has been corrected.
|
||||
(merge 93bab2d04b fr/vimdiff-layout-fixes later to maint).
|
||||
|
||||
* Fix our use of zlib corner cases.
|
||||
(merge 1cb2f293f5 jk/zlib-inflate-fixes later to maint).
|
||||
|
||||
* Fix lockfile contention in reftable code on Windows.
|
||||
(merge 0a3dceabf1 ps/mingw-creat-excl-fix later to maint).
|
||||
|
||||
* "git-merge-file" documentation source, which has lines that look
|
||||
like conflict markers, lacked custom conflict marker size defined,
|
||||
which has been corrected..
|
||||
(merge d3b5832381 pw/custom-conflict-marker-size-for-merge-related-docs later to maint).
|
||||
|
||||
* Squelch false-positive from sparse.
|
||||
(merge da87b58014 dd/sparse-glibc-workaround later to maint).
|
||||
|
||||
* Adjust to the deprecation of use of Ubuntu 20.04 GitHub Actions CI.
|
||||
(merge 832d9f6d0b js/ci-github-update-ubuntu later to maint).
|
||||
|
||||
* Work around CI breakage due to fedora base image getting updated.
|
||||
(merge 8a471a663b js/ci-fedora-gawk later to maint).
|
||||
|
||||
* A ref transaction corner case fix.
|
||||
(merge b9fadeead7 jt/ref-transaction-abort-fix later to maint).
|
||||
|
||||
* Random build fixes.
|
||||
(merge 85e1d6819f ps/misc-build-fixes later to maint).
|
||||
|
||||
* "git fetch [<remote>]" with only the configured fetch refspec
|
||||
should be the only thing to update refs/remotes/<remote>/HEAD,
|
||||
but the code was overly eager to do so in other cases.
|
||||
|
||||
* Incorrect sorting of refs with bytes with high-bit set on platforms
|
||||
with signed char led to a BUG, which has been corrected.
|
||||
|
||||
* "make perf" fixes.
|
||||
(merge 1665f12fa0 pb/perf-test-fixes later to maint).
|
||||
|
||||
* Doc mark-up updates.
|
||||
(merge 5a5565ec44 ja/doc-reset-mv-rm-markup-updates later to maint).
|
||||
|
||||
* Work around false positive from CodeQL checker.
|
||||
(merge 0f558141ed js/range-check-codeql-workaround later to maint).
|
||||
|
||||
* "git log --{left,right}-only A...B", when A and B does not share
|
||||
any common ancestor, now behaves as expected.
|
||||
(merge e7ef4be7c2 mh/left-right-limited later to maint).
|
||||
|
||||
* Document the convention to disable hooks altogether by setting the
|
||||
hooksPath configuration variable to /dev/null.
|
||||
(merge 1b2eee94f1 ds/doc-disable-hooks later to maint).
|
||||
|
||||
* Make sure outage of third-party sites that supply P4, Git-LFS, and
|
||||
JGit we use for testing would not prevent our CI jobs from running
|
||||
at all.
|
||||
|
||||
* Various build tweaks, including CSPRNG selection on some platforms.
|
||||
(merge cdda67de03 rj/build-tweaks later to maint).
|
||||
|
||||
* Developer support fix..
|
||||
(merge 32b74b9809 js/git-perf-env-override later to maint).
|
||||
|
||||
* Fix for scheduled maintenance tasks on platforms using launchctl.
|
||||
(merge eb2d7beb0e jh/gc-launchctl-schedule-fix later to maint).
|
||||
|
||||
* Update to arm64 Windows port (part of which had been reverted as it
|
||||
broke builds for existing platforms, which may need to be redone in
|
||||
future releases).
|
||||
|
||||
* hashmap API clean-up to ensure hashmap_clear() leaves a cleared map
|
||||
in a reusable state.
|
||||
(merge 9481877de3 en/hashmap-clear-fix later to maint).
|
||||
|
||||
* "git mv a a/b dst" would ask to move the directory 'a' itself, as
|
||||
well as its contents, in a single destination directory, which is
|
||||
a contradicting request that is impossible to satisfy. This case is
|
||||
now detected and the command errors out.
|
||||
(merge 974f0d4664 ps/mv-contradiction-fix later to maint).
|
||||
|
||||
* Further refinement on CI messages when an optional external
|
||||
software is unavailable (e.g. due to third-party service outage).
|
||||
(merge 956acbefbd jc/ci-skip-unavailable-external-software later to maint).
|
||||
|
||||
* Test result aggregation did not work in Meson based CI jobs.
|
||||
(merge bd38ed5be1 ps/ci-test-aggreg-fix-for-meson later to maint).
|
||||
|
||||
* Code clean-up around stale CI elements and building with Visual Studio.
|
||||
(merge a7b060f67f js/ci-buildsystems-cleanup later to maint).
|
||||
|
||||
* "git add 'f?o'" did not add 'foo' if 'f?o', an unusual pathname,
|
||||
also existed on the working tree, which has been corrected.
|
||||
(merge ec727e189c kj/glob-path-with-special-char later to maint).
|
||||
|
||||
* The fallback implementation of open_nofollow() depended on
|
||||
open("symlink", O_NOFOLLOW) to set errno to ELOOP, but a few BSD
|
||||
derived systems use different errno, which has been worked around.
|
||||
(merge f47bcc3413 cf/wrapper-bsd-eloop later to maint).
|
||||
|
||||
* Use-after-free fix in the sequencer.
|
||||
(merge 5dbaec628d pw/sequencer-reflog-use-after-free later to maint).
|
||||
|
||||
* win+Meson CI pipeline, unlike other pipelines for Windows,
|
||||
used to build artifacts in developer mode, which has been changed to
|
||||
build them in release mode for consistency.
|
||||
(merge 184abdcf05 js/ci-build-win-in-release-mode later to maint).
|
||||
|
||||
* CI settings at GitLab has been updated to run MSVC based Meson job
|
||||
automatically (as opposed to be done only upon manual request).
|
||||
(merge 6389579b2f ps/ci-gitlab-enable-msvc-meson-job later to maint).
|
||||
|
||||
* "git apply" and "git add -i/-p" code paths no longer unnecessarily
|
||||
expand sparse-index while working.
|
||||
(merge ecf9ba20e3 ds/sparse-apply-add-p later to maint).
|
||||
|
||||
* Avoid adding directory path to a sparse-index tree entries to the
|
||||
name-hash, since they would bloat the hashtable without anybody
|
||||
querying for them. This was done already for a single threaded
|
||||
part of the code, but now the multi-threaded code also does the
|
||||
same.
|
||||
(merge 2e60aabc75 am/sparse-index-name-hash-fix later to maint).
|
||||
|
||||
* Recent versions of Perl started warning against "! A =~ /pattern/"
|
||||
which does not negate the result of the matching. As it turns out
|
||||
that the problematic function is not even called, it was removed.
|
||||
(merge 67cae845d2 op/cvsserver-perl-warning later to maint).
|
||||
|
||||
* "git apply --index/--cached" when applying a deletion patch in
|
||||
reverse failed to give the mode bits of the path "removed" by the
|
||||
patch to the file it creates, which has been corrected.
|
||||
|
||||
* "git verify-refs" errored out in a repository in which
|
||||
linked worktrees were prepared with Git 2.43 or lower.
|
||||
(merge d5b3c38b8a sj/ref-contents-check-fix later to maint).
|
||||
|
||||
* Update total_ram() function on BSD variants.
|
||||
|
||||
* Update online_cpus() function on BSD variants.
|
||||
|
||||
* Revert a botched bswap.h change that broke ntohll() functions on
|
||||
big-endian systems with __builtin_bswap32/64().
|
||||
|
||||
* Fixes for GitHub Actions Coverity job.
|
||||
(merge 3cc4fc1ebd js/github-ci-win-coverity-fix later to maint).
|
||||
|
||||
* Other code cleanup, docfix, build fix, etc.
|
||||
(merge 227c4f33a0 ja/doc-block-delimiter-markup-fix later to maint).
|
||||
(merge 2bfd3b3685 ab/decorate-code-cleanup later to maint).
|
||||
(merge 5337daddc7 am/dir-dedup-decl-of-repository later to maint).
|
||||
(merge 554051d691 en/diff-rename-follow-fix later to maint).
|
||||
(merge a18c18b470 en/random-cleanups later to maint).
|
||||
(merge 5af21c9acb hj/doc-rev-list-ancestry-fix later to maint).
|
||||
(merge 26d76ca284 aj/doc-restore-p-update later to maint).
|
||||
(merge 2c0dcb9754 cc/lop-remote later to maint).
|
||||
(merge 7b399322a2 ja/doc-branch-markup later to maint).
|
||||
(merge ee434e1807 pw/doc-pack-refs-markup-fix later to maint).
|
||||
(merge c000918eb7 tb/bitamp-typofix later to maint).
|
||||
(merge fa8cd29676 js/imap-send-peer-cert-verify later to maint).
|
||||
(merge 98b423bc1c rs/clear-commit-marks-simplify later to maint).
|
||||
(merge 133d065dd6 ta/bulk-checkin-signed-compare-false-warning-fix later to maint).
|
||||
(merge d2827dc31e es/meson-build-skip-coccinelle later to maint).
|
||||
(merge ee8edb7156 dk/vimdiff-doc-fix later to maint).
|
||||
(merge 107d889303 md/t1403-path-is-file later to maint).
|
||||
(merge abd4192b07 js/comma-semicolon-confusion later to maint).
|
||||
(merge 27b7264206 ab/environment-clean-header later to maint).
|
||||
(merge ff4a749354 as/typofix-in-env-h-header later to maint).
|
||||
(merge 86eef3541e az/tighten-string-array-constness later to maint).
|
||||
(merge 25292c301d lo/remove-log-reencode-from-rev-info later to maint).
|
||||
(merge 1aa50636fd jk/p5332-testfix later to maint).
|
||||
(merge 42cf4ac552 ps/ci-resurrect-p4-on-github later to maint).
|
||||
(merge 104add8368 js/diff-codeql-false-positive-workaround later to maint).
|
||||
(merge f62977b93c en/get-tree-entry-doc later to maint).
|
||||
(merge e5dd0a05ed ly/am-split-stgit-leakfix later to maint).
|
||||
(merge bac220e154 rc/t1001-test-path-is-file later to maint).
|
||||
(merge 91db6c735d ly/reftable-writer-leakfix later to maint).
|
||||
(merge 20e4e9ad0b jc/doc-synopsis-option-markup later to maint).
|
||||
(merge cddcee7f64 es/meson-configure-build-options-fix later to maint).
|
||||
(merge cea9f55f00 wk/sparse-checkout-doc-fix later to maint).
|
||||
@ -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.
|
||||
|
||||
@ -34,7 +34,6 @@ This is adapted from Linux's suggestion in its CodingStyle document:
|
||||
|
||||
- To follow the rules in CodingGuidelines, it's useful to put the following in
|
||||
GIT_CHECKOUT/.dir-locals.el, assuming you use cperl-mode:
|
||||
|
||||
----
|
||||
;; note the first part is useful for C editing, too
|
||||
((nil . ((indent-tabs-mode . t)
|
||||
|
||||
@ -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[]
|
||||
|
||||
@ -75,18 +75,18 @@ git-relative-html-prefix=
|
||||
<a href="{git-relative-html-prefix}{target}.html">{target}{0?({0})}</a>
|
||||
|
||||
[literal-inlinemacro]
|
||||
{eval:re.sub(r'(<[-a-zA-Z0-9.]+>)', r'<em>\1</em>', re.sub(r'([\[\s|()>]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@,\\\*\/_^\$]+\.?)+)',r'\1<code>\2</code>', re.sub(r'(\.\.\.?)([^\]$.])', r'<code>\1</code>\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'<em>\1</em>', re.sub(r'([\[\s|()>]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@,\/_^\$]+\.?)+)',r'\1<code>\2</code>', re.sub(r'(\.\.\.?)([^\]$.])', r'<code>\1</code>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}
|
||||
|
||||
endif::backend-xhtml11[]
|
||||
|
||||
ifdef::backend-docbook[]
|
||||
ifdef::doctype-manpage[]
|
||||
[paradef-default]
|
||||
synopsis-style=template="verseparagraph",filter="sed 's!…\\(\\]\\|$\\)!<phrase>\\0</phrase>!g;s!\\([\\[ |()]\\|^\\|\\]\\|>\\)\\([-=a-zA-Z0-9:+@,\\/_^\\$.\\\\\\*]\\+\\|…\\)!\\1<literal>\\2</literal>!g;s!<[-a-zA-Z0-9.]\\+>!<emphasis>\\0</emphasis>!g'"
|
||||
synopsis-style=template="verseparagraph",filter="sed 's!…\\(\\]\\|$\\)!<phrase>\\0</phrase>!g;s!\\([\\[ |()]\\|^\\|\\]\\|>\\)\\([-=a-zA-Z0-9:+@,\\/_^\\$.]\\+\\|…\\)!\\1<literal>\\2</literal>!g;s!<[-a-zA-Z0-9.]\\+>!<emphasis>\\0</emphasis>!g'"
|
||||
endif::doctype-manpage[]
|
||||
endif::backend-docbook[]
|
||||
|
||||
ifdef::backend-xhtml11[]
|
||||
[paradef-default]
|
||||
synopsis-style=template="verseparagraph",filter="sed 's!…\\(\\]\\|$\\)!<span>\\0</span>!g;s!\\([\\[ |()]\\|^\\|\\]\\|>\\)\\([-=a-zA-Z0-9:+@,\\/_^\\$.\\\\\\*]\\+\\|…\\)!\\1<code>\\2</code>!g;s!<[-a-zA-Z0-9.]\\+>!<em>\\0</em>!g'"
|
||||
synopsis-style=template="verseparagraph",filter="sed 's!…\\(\\]\\|$\\)!<span>\\0</span>!g;s!\\([\\[ |()]\\|^\\|\\]\\|>\\)\\([-=a-zA-Z0-9:+@,\\/_^\\$.]\\+\\|…\\)!\\1<code>\\2</code>!g;s!<[-a-zA-Z0-9.]\\+>!<em>\\0</em>!g'"
|
||||
endif::backend-xhtml11[]
|
||||
|
||||
@ -49,8 +49,8 @@ module Git
|
||||
|
||||
def process parent, reader, attrs
|
||||
outlines = reader.lines.map do |l|
|
||||
l.gsub(/(\.\.\.?)([^\]$\. ])/, '{empty}`\1`{empty}\2')
|
||||
.gsub(%r{([\[\] |()>]|^)([-a-zA-Z0-9:+=~@,/_^\$\\\*]+)}, '\1{empty}`\2`{empty}')
|
||||
l.gsub(/(\.\.\.?)([^\]$.])/, '`\1`\2')
|
||||
.gsub(%r{([\[\] |()>]|^)([-a-zA-Z0-9:+=~@,/_^\$]+)}, '\1{empty}`\2`{empty}')
|
||||
.gsub(/(<[-a-zA-Z0-9.]+>)/, '__\\1__')
|
||||
.gsub(']', ']{empty}')
|
||||
end
|
||||
@ -71,9 +71,8 @@ module Git
|
||||
# unhandled math; pass source to alt and required mathphrase element; dblatex will process alt as LaTeX math
|
||||
%(<inlineequation><alt><![CDATA[#{equation = node.text}]]></alt><mathphrase><![CDATA[#{equation}]]></mathphrase></inlineequation>)
|
||||
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>')
|
||||
node.text.gsub(/(\.\.\.?)([^\]$.])/, '<literal>\1</literal>\2')
|
||||
.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]
|
||||
@ -101,8 +100,7 @@ module Git
|
||||
def convert_inline_quoted node
|
||||
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
|
||||
@ -126,8 +125,7 @@ take effect.
|
||||
another commit will be marked with a `?` in the blame output. If the
|
||||
`blame.markUnblamableLines` config option is set, then those lines touched
|
||||
by an ignored commit that we could not attribute to another revision are
|
||||
marked with a '*'. In the porcelain modes, we print 'ignored' and
|
||||
'unblamable' on a newline respectively.
|
||||
marked with a '*'.
|
||||
|
||||
--ignore-revs-file <file>::
|
||||
Ignore revisions listed in `file`, which must be in the same format as an
|
||||
|
||||
80
Documentation/cmd-list.perl
Executable file
80
Documentation/cmd-list.perl
Executable file
@ -0,0 +1,80 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use File::Compare qw(compare);
|
||||
|
||||
sub format_one {
|
||||
my ($source_dir, $out, $nameattr) = @_;
|
||||
my ($name, $attr) = @$nameattr;
|
||||
my ($path) = "$source_dir/Documentation/$name.adoc";
|
||||
my ($state, $description);
|
||||
my $mansection;
|
||||
$state = 0;
|
||||
open I, '<', "$path" or die "No such file $path.adoc";
|
||||
while (<I>) {
|
||||
if (/^(?:git|scalar)[a-z0-9-]*\(([0-9])\)$/) {
|
||||
$mansection = $1;
|
||||
next;
|
||||
}
|
||||
if (/^NAME$/) {
|
||||
$state = 1;
|
||||
next;
|
||||
}
|
||||
if ($state == 1 && /^----$/) {
|
||||
$state = 2;
|
||||
next;
|
||||
}
|
||||
next if ($state != 2);
|
||||
chomp;
|
||||
$description = $_;
|
||||
last;
|
||||
}
|
||||
close I;
|
||||
if (!defined $description) {
|
||||
die "No description found in $path.adoc";
|
||||
}
|
||||
if (my ($verify_name, $text) = ($description =~ /^($name) - (.*)/)) {
|
||||
print $out "linkgit:$name\[$mansection\]::\n\t";
|
||||
if ($attr =~ / deprecated /) {
|
||||
print $out "(deprecated) ";
|
||||
}
|
||||
print $out "$text.\n\n";
|
||||
}
|
||||
else {
|
||||
die "Description does not match $name: $description";
|
||||
}
|
||||
}
|
||||
|
||||
my ($source_dir, $build_dir, @categories) = @ARGV;
|
||||
|
||||
open IN, "<$source_dir/command-list.txt";
|
||||
while (<IN>) {
|
||||
last if /^### command list/;
|
||||
}
|
||||
|
||||
my %cmds = ();
|
||||
for (sort <IN>) {
|
||||
next if /^#/;
|
||||
|
||||
chomp;
|
||||
my ($name, $cat, $attr) = /^(\S+)\s+(.*?)(?:\s+(.*))?$/;
|
||||
$attr = '' unless defined $attr;
|
||||
push @{$cmds{$cat}}, [$name, " $attr "];
|
||||
}
|
||||
close IN;
|
||||
|
||||
for my $out (@categories) {
|
||||
my ($cat) = $out =~ /^cmds-(.*)\.adoc$/;
|
||||
my ($path) = "$build_dir/$out";
|
||||
open O, '>', "$path+" or die "Cannot open output file $out+";
|
||||
for (@{$cmds{$cat}}) {
|
||||
format_one($source_dir, \*O, $_);
|
||||
}
|
||||
close O;
|
||||
|
||||
if (-f "$path" && compare("$path", "$path+") == 0) {
|
||||
unlink "$path+";
|
||||
}
|
||||
else {
|
||||
rename "$path+", "$path";
|
||||
}
|
||||
}
|
||||
@ -1,104 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
format_one () {
|
||||
source_dir="$1"
|
||||
command="$2"
|
||||
attributes="$3"
|
||||
|
||||
path="$source_dir/Documentation/$command.adoc"
|
||||
if ! test -f "$path"
|
||||
then
|
||||
echo >&2 "No such file $path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
state=0
|
||||
while read line
|
||||
do
|
||||
case "$state" in
|
||||
0)
|
||||
case "$line" in
|
||||
git*\(*\)|scalar*\(*\))
|
||||
mansection="${line##*\(}"
|
||||
mansection="${mansection%\)}"
|
||||
;;
|
||||
NAME)
|
||||
state=1;;
|
||||
esac
|
||||
;;
|
||||
1)
|
||||
if test "$line" = "----"
|
||||
then
|
||||
state=2
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
description="$line"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done <"$path"
|
||||
|
||||
if test -z "$mansection"
|
||||
then
|
||||
echo "No man section found in $path" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$description"
|
||||
then
|
||||
echo >&2 "No description found in $path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$description" in
|
||||
"$command - "*)
|
||||
text="${description#$command - }"
|
||||
|
||||
printf "linkgit:%s[%s]::\n\t" "$command" "$mansection"
|
||||
case "$attributes" in
|
||||
*" deprecated "*)
|
||||
printf "(deprecated) "
|
||||
;;
|
||||
esac
|
||||
printf "$text.\n\n"
|
||||
;;
|
||||
*)
|
||||
echo >&2 "Description does not match $command: $description"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
source_dir="$1"
|
||||
build_dir="$2"
|
||||
shift 2
|
||||
|
||||
for out
|
||||
do
|
||||
category="${out#cmds-}"
|
||||
category="${category%.adoc}"
|
||||
path="$build_dir/$out"
|
||||
|
||||
while read command command_category attributes
|
||||
do
|
||||
case "$command" in
|
||||
"#"*)
|
||||
continue;;
|
||||
esac
|
||||
|
||||
case "$command_category" in
|
||||
"$category")
|
||||
format_one "$source_dir" "$command" " $attributes ";;
|
||||
esac
|
||||
done <"$source_dir/command-list.txt" >"$build_dir/$out+"
|
||||
|
||||
if cmp "$build_dir/$out+" "$build_dir/$out" >/dev/null 2>&1
|
||||
then
|
||||
rm "$build_dir/$out+"
|
||||
else
|
||||
mv "$build_dir/$out+" "$build_dir/$out"
|
||||
fi
|
||||
done
|
||||
@ -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.
|
||||
|
||||
@ -1,42 +1,41 @@
|
||||
`branch.autoSetupMerge`::
|
||||
Tells `git branch`, `git switch` and `git checkout` to set up new branches
|
||||
branch.autoSetupMerge::
|
||||
Tells 'git branch', 'git switch' and 'git checkout' to set up new branches
|
||||
so that linkgit:git-pull[1] will appropriately merge from the
|
||||
starting point branch. Note that even if this option is not set,
|
||||
this behavior can be chosen per-branch using the `--track`
|
||||
and `--no-track` options. This option defaults to `true`. The valid settings
|
||||
are:
|
||||
`false`;; no automatic setup is done
|
||||
`true`;; automatic setup is done when the starting point is a remote-tracking branch
|
||||
`always`;; automatic setup is done when the starting point is either a
|
||||
local branch or remote-tracking branch
|
||||
`inherit`;; if the starting point has a tracking configuration, it is copied to the new
|
||||
branch
|
||||
`simple`;; automatic setup is done only when the starting point
|
||||
and `--no-track` options. The valid settings are: `false` -- no
|
||||
automatic setup is done; `true` -- automatic setup is done when the
|
||||
starting point is a remote-tracking branch; `always` --
|
||||
automatic setup is done when the starting point is either a
|
||||
local branch or remote-tracking branch; `inherit` -- if the starting point
|
||||
has a tracking configuration, it is copied to the new
|
||||
branch; `simple` -- automatic setup is done only when the starting point
|
||||
is a remote-tracking branch and the new branch has the same name as the
|
||||
remote branch.
|
||||
remote branch. This option defaults to true.
|
||||
|
||||
`branch.autoSetupRebase`::
|
||||
When a new branch is created with `git branch`, `git switch` or `git checkout`
|
||||
branch.autoSetupRebase::
|
||||
When a new branch is created with 'git branch', 'git switch' or 'git checkout'
|
||||
that tracks another branch, this variable tells Git to set
|
||||
up pull to rebase instead of merge (see `branch.<name>.rebase`).
|
||||
The valid settings are:
|
||||
`never`;; rebase is never automatically set to true.
|
||||
`local`;; rebase is set to true for tracked branches of other local branches.
|
||||
`remote`;; rebase is set to true for tracked branches of remote-tracking branches.
|
||||
`always`;; rebase will be set to true for all tracking branches.
|
||||
up pull to rebase instead of merge (see "branch.<name>.rebase").
|
||||
When `never`, rebase is never automatically set to true.
|
||||
When `local`, rebase is set to true for tracked branches of
|
||||
other local branches.
|
||||
When `remote`, rebase is set to true for tracked branches of
|
||||
remote-tracking branches.
|
||||
When `always`, rebase will be set to true for all tracking
|
||||
branches.
|
||||
See "branch.autoSetupMerge" for details on how to set up a
|
||||
branch to track another branch.
|
||||
This option defaults to never.
|
||||
|
||||
+
|
||||
See `branch.autoSetupMerge` for details on how to set up a branch to track another branch.
|
||||
This option defaults to `never`.
|
||||
|
||||
`branch.sort`::
|
||||
branch.sort::
|
||||
This variable controls the sort ordering of branches when displayed by
|
||||
linkgit:git-branch[1]. Without the `--sort=<value>` option provided, the
|
||||
linkgit:git-branch[1]. Without the "--sort=<value>" option provided, the
|
||||
value of this variable will be used as the default.
|
||||
See linkgit:git-for-each-ref[1] field names for valid values.
|
||||
|
||||
`branch.<name>.remote`::
|
||||
When on branch _<name>_, it tells `git fetch` and `git push`
|
||||
branch.<name>.remote::
|
||||
When on branch <name>, it tells 'git fetch' and 'git push'
|
||||
which remote to fetch from or push to. The remote to push to
|
||||
may be overridden with `remote.pushDefault` (for all branches).
|
||||
The remote to push to, for the current branch, may be further
|
||||
@ -47,58 +46,58 @@ This option defaults to `never`.
|
||||
Additionally, `.` (a period) is the current local repository
|
||||
(a dot-repository), see `branch.<name>.merge`'s final note below.
|
||||
|
||||
`branch.<name>.pushRemote`::
|
||||
When on branch _<name>_, it overrides `branch.<name>.remote` for
|
||||
branch.<name>.pushRemote::
|
||||
When on branch <name>, it overrides `branch.<name>.remote` for
|
||||
pushing. It also overrides `remote.pushDefault` for pushing
|
||||
from branch _<name>_. When you pull from one place (e.g. your
|
||||
from branch <name>. When you pull from one place (e.g. your
|
||||
upstream) and push to another place (e.g. your own publishing
|
||||
repository), you would want to set `remote.pushDefault` to
|
||||
specify the remote to push to for all branches, and use this
|
||||
option to override it for a specific branch.
|
||||
|
||||
`branch.<name>.merge`::
|
||||
Defines, together with `branch.<name>.remote`, the upstream branch
|
||||
for the given branch. It tells `git fetch`/`git pull`/`git rebase` which
|
||||
branch to merge and can also affect `git push` (see `push.default`).
|
||||
When in branch _<name>_, it tells `git fetch` the default
|
||||
refspec to be marked for merging in `FETCH_HEAD`. The value is
|
||||
branch.<name>.merge::
|
||||
Defines, together with branch.<name>.remote, the upstream branch
|
||||
for the given branch. It tells 'git fetch'/'git pull'/'git rebase' which
|
||||
branch to merge and can also affect 'git push' (see push.default).
|
||||
When in branch <name>, it tells 'git fetch' the default
|
||||
refspec to be marked for merging in FETCH_HEAD. The value is
|
||||
handled like the remote part of a refspec, and must match a
|
||||
ref which is fetched from the remote given by
|
||||
`branch.<name>.remote`.
|
||||
The merge information is used by `git pull` (which first calls
|
||||
`git fetch`) to lookup the default branch for merging. Without
|
||||
this option, `git pull` defaults to merge the first refspec fetched.
|
||||
"branch.<name>.remote".
|
||||
The merge information is used by 'git pull' (which first calls
|
||||
'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
|
||||
setting `.` (a period) for `branch.<name>.remote`.
|
||||
branch.<name>.merge to the desired branch, and use the relative path
|
||||
setting `.` (a period) for branch.<name>.remote.
|
||||
|
||||
`branch.<name>.mergeOptions`::
|
||||
Sets default options for merging into branch _<name>_. The syntax and
|
||||
branch.<name>.mergeOptions::
|
||||
Sets default options for merging into branch <name>. The syntax and
|
||||
supported options are the same as those of linkgit:git-merge[1], but
|
||||
option values containing whitespace characters are currently not
|
||||
supported.
|
||||
|
||||
`branch.<name>.rebase`::
|
||||
When true, rebase the branch _<name>_ on top of the fetched branch,
|
||||
branch.<name>.rebase::
|
||||
When true, rebase the branch <name> on top of the fetched branch,
|
||||
instead of merging the default branch from the default remote when
|
||||
`git pull` is run. See `pull.rebase` for doing this in a non
|
||||
"git pull" is run. See "pull.rebase" for doing this in a non
|
||||
branch-specific manner.
|
||||
+
|
||||
When `merges` (or just `m`), pass the `--rebase-merges` option to `git rebase`
|
||||
When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
|
||||
so that the local merge commits are included in the rebase (see
|
||||
linkgit:git-rebase[1] for details).
|
||||
+
|
||||
When the value is `interactive` (or just `i`), the rebase is run in interactive
|
||||
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
||||
mode.
|
||||
+
|
||||
*NOTE*: this is a possibly dangerous operation; do *not* use
|
||||
it unless you understand the implications (see linkgit:git-rebase[1]
|
||||
for details).
|
||||
|
||||
`branch.<name>.description`::
|
||||
branch.<name>.description::
|
||||
Branch description, can be edited with
|
||||
`git branch --edit-description`. Branch description is
|
||||
automatically added to the `format-patch` cover letter or
|
||||
`request-pull` summary.
|
||||
automatically added to the format-patch cover letter or
|
||||
request-pull summary.
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
`checkout.defaultRemote`::
|
||||
checkout.defaultRemote::
|
||||
When you run `git checkout <something>`
|
||||
or `git switch <something>` and only have one
|
||||
remote, it may implicitly fall back on checking out and
|
||||
tracking e.g. `origin/<something>`. This stops working as soon
|
||||
as you have more than one remote with a _<something>_
|
||||
as you have more than one remote with a `<something>`
|
||||
reference. This setting allows for setting the name of a
|
||||
preferred remote that should always win when it comes to
|
||||
disambiguation. The typical use-case is to set this to
|
||||
@ -12,17 +12,17 @@
|
||||
Currently this is used by linkgit:git-switch[1] and
|
||||
linkgit:git-checkout[1] when `git checkout <something>`
|
||||
or `git switch <something>`
|
||||
will checkout the _<something>_ branch on another remote,
|
||||
will checkout the `<something>` branch on another remote,
|
||||
and by linkgit:git-worktree[1] when `git worktree add` refers to a
|
||||
remote branch. This setting might be used for other checkout-like
|
||||
commands or functionality in the future.
|
||||
|
||||
`checkout.guess`::
|
||||
checkout.guess::
|
||||
Provides the default value for the `--guess` or `--no-guess`
|
||||
option in `git checkout` and `git switch`. See
|
||||
linkgit:git-switch[1] and linkgit:git-checkout[1].
|
||||
|
||||
`checkout.workers`::
|
||||
checkout.workers::
|
||||
The number of parallel workers to use when updating the working tree.
|
||||
The default is one, i.e. sequential execution. If set to a value less
|
||||
than one, Git will use as many workers as the number of logical cores
|
||||
@ -30,13 +30,13 @@ commands or functionality in the future.
|
||||
all commands that perform checkout. E.g. checkout, clone, reset,
|
||||
sparse-checkout, etc.
|
||||
+
|
||||
NOTE: Parallel checkout usually delivers better performance for repositories
|
||||
Note: Parallel checkout usually delivers better performance for repositories
|
||||
located on SSDs or over NFS. For repositories on spinning disks and/or machines
|
||||
with a small number of cores, the default sequential checkout often performs
|
||||
better. The size and compression level of a repository might also influence how
|
||||
well the parallel version performs.
|
||||
|
||||
`checkout.thresholdForParallelism`::
|
||||
checkout.thresholdForParallelism::
|
||||
When running parallel checkout with a small number of files, the cost
|
||||
of subprocess spawning and inter-process communication might outweigh
|
||||
the parallelization gains. This setting allows you to define the minimum
|
||||
|
||||
@ -8,11 +8,10 @@ endif::git-commit[]
|
||||
This setting overrides the default of the `--cleanup` option in
|
||||
`git commit`. {see-git-commit} Changing the default can be useful
|
||||
when you always want to keep lines that begin
|
||||
with the comment character (`core.commentChar`, default `#`)
|
||||
in your log message, in which case you
|
||||
with the comment character `#` in your log message, in which case you
|
||||
would do `git config commit.cleanup whitespace` (note that you will
|
||||
have to remove the help lines that begin with the comment character
|
||||
in the commit log template yourself, if you do this).
|
||||
have to remove the help lines that begin with `#` in the commit log
|
||||
template yourself, if you do this).
|
||||
|
||||
`commit.gpgSign`::
|
||||
A boolean to specify whether all commits should be GPG signed.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -514,11 +512,6 @@ centrally configure your Git hooks instead of configuring them on a
|
||||
per-repository basis, or as a more flexible and centralized
|
||||
alternative to having an `init.templateDir` where you've changed
|
||||
default hooks.
|
||||
+
|
||||
You can also disable all hooks entirely by setting `core.hooksPath`
|
||||
to `/dev/null`. This is usually only advisable for expert users and
|
||||
on a per-command basis using configuration parameters of the form
|
||||
`git -c core.hooksPath=/dev/null ...`.
|
||||
|
||||
core.editor::
|
||||
Commands such as `commit` and `tag` that let you edit
|
||||
@ -533,25 +526,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 +605,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 +691,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
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
`merge.branchdesc`::
|
||||
merge.branchdesc::
|
||||
In addition to branch names, populate the log message with
|
||||
the branch description text associated with them. Defaults
|
||||
to false.
|
||||
|
||||
`merge.log`::
|
||||
merge.log::
|
||||
In addition to branch names, populate the log message with at
|
||||
most the specified number of one-line descriptions from the
|
||||
actual commits that are being merged. Defaults to false, and
|
||||
true is a synonym for 20.
|
||||
|
||||
`merge.suppressDest`::
|
||||
merge.suppressDest::
|
||||
By adding a glob that matches the names of integration
|
||||
branches to this multi-valued configuration variable, the
|
||||
default merge message computed for merges into these
|
||||
integration branches will omit "into _<branch-name>_" from
|
||||
integration branches will omit "into <branch name>" from
|
||||
its title.
|
||||
+
|
||||
An element with an empty value can be used to clear the list
|
||||
|
||||
@ -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
|
||||
|
||||
@ -47,8 +47,7 @@ gitcvs.dbDriver::
|
||||
May not contain double colons (`:`). Default: 'SQLite'.
|
||||
See linkgit:git-cvsserver[1].
|
||||
|
||||
gitcvs.dbUser::
|
||||
gitcvs.dbPass::
|
||||
gitcvs.dbUser, gitcvs.dbPass::
|
||||
Database user and password. Only useful if setting `gitcvs.dbDriver`,
|
||||
since SQLite has no concept of database users and/or passwords.
|
||||
'gitcvs.dbUser' supports variable substitution (see
|
||||
|
||||
@ -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".
|
||||
|
||||
@ -289,32 +289,13 @@ for most push problems, but can increase memory consumption
|
||||
significantly since the entire buffer is allocated even for small
|
||||
pushes.
|
||||
|
||||
http.lowSpeedLimit::
|
||||
http.lowSpeedTime::
|
||||
http.lowSpeedLimit, http.lowSpeedTime::
|
||||
If the HTTP transfer speed, in bytes per second, is less than
|
||||
'http.lowSpeedLimit' for longer than 'http.lowSpeedTime' seconds,
|
||||
the transfer is aborted.
|
||||
Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and
|
||||
`GIT_HTTP_LOW_SPEED_TIME` environment variables.
|
||||
|
||||
http.keepAliveIdle::
|
||||
Specifies how long in seconds to wait on an idle connection
|
||||
before sending TCP keepalive probes (if supported by the OS). If
|
||||
unset, curl's default value is used. Can be overridden by the
|
||||
`GIT_HTTP_KEEPALIVE_IDLE` environment variable.
|
||||
|
||||
http.keepAliveInterval::
|
||||
Specifies how long in seconds to wait between TCP keepalive
|
||||
probes (if supported by the OS). If unset, curl's default value
|
||||
is used. Can be overridden by the `GIT_HTTP_KEEPALIVE_INTERVAL`
|
||||
environment variable.
|
||||
|
||||
http.keepAliveCount::
|
||||
Specifies how many TCP keepalive probes to send before giving up
|
||||
and terminating the connection (if supported by the OS). If
|
||||
unset, curl's default value is used. Can be overridden by the
|
||||
`GIT_HTTP_KEEPALIVE_COUNT` environment variable.
|
||||
|
||||
http.noEPSV::
|
||||
A boolean which disables using of EPSV ftp command by curl.
|
||||
This can be helpful with some "poor" ftp servers which don't
|
||||
|
||||
@ -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
|
||||
@ -78,11 +61,6 @@ maintenance.loose-objects.auto::
|
||||
loose objects is at least the value of `maintenance.loose-objects.auto`.
|
||||
The default value is 100.
|
||||
|
||||
maintenance.loose-objects.batchSize::
|
||||
This integer config option controls the maximum number of loose objects
|
||||
written into a packfile during the `loose-objects` task. The default is
|
||||
fifty thousand. Use value `0` to indicate no limit.
|
||||
|
||||
maintenance.incremental-repack.auto::
|
||||
This integer config option controls how often the `incremental-repack`
|
||||
task should be run as part of `git maintenance run --auto`. If zero,
|
||||
@ -91,45 +69,3 @@ maintenance.incremental-repack.auto::
|
||||
Otherwise, a positive value implies the command should run when the
|
||||
number of pack-files not in the multi-pack-index is at least the value
|
||||
of `maintenance.incremental-repack.auto`. The default value is 10.
|
||||
|
||||
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
|
||||
the `reflog-expire` task will not run with the `--auto` option. A
|
||||
negative value will force the task to run every time. Otherwise, a
|
||||
positive value implies the command should run when the number of
|
||||
expired reflog entries in the "HEAD" reflog is at least the value of
|
||||
`maintenance.loose-objects.auto`. The default value is 100.
|
||||
|
||||
maintenance.rerere-gc.auto::
|
||||
This integer config option controls how often the `rerere-gc` task
|
||||
should be run as part of `git maintenance run --auto`. If zero, then
|
||||
the `rerere-gc` task will not run with the `--auto` option. A negative
|
||||
value will force the task to run every time. Otherwise, any positive
|
||||
value implies the command will run when the "rr-cache" directory exists
|
||||
and has at least one entry, regardless of whether it is stale or not.
|
||||
This heuristic may be refined in the future. The default value is 1.
|
||||
|
||||
maintenance.worktree-prune.auto::
|
||||
This integer config option controls how often the `worktree-prune` task
|
||||
should be run as part of `git maintenance run --auto`. If zero, then
|
||||
the `worktree-prune` task will not run with the `--auto` option. A
|
||||
negative value will force the task to run every time. Otherwise, a
|
||||
positive value implies the command should run when the number of
|
||||
prunable worktrees exceeds the value. The default value is 1.
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
`merge.conflictStyle`::
|
||||
merge.conflictStyle::
|
||||
Specify the style in which conflicted hunks are written out to
|
||||
working tree files upon merge. The default is "merge", which
|
||||
shows a +<<<<<<<+ conflict marker, changes made by one side,
|
||||
shows a `<<<<<<<` conflict marker, changes made by one side,
|
||||
a `=======` marker, changes made by the other side, and then
|
||||
a +>>>>>>>+ marker. An alternate style, "diff3", adds a +|||||||+
|
||||
a `>>>>>>>` marker. An alternate style, "diff3", adds a `|||||||`
|
||||
marker and the original text before the `=======` marker. The
|
||||
"merge" style tends to produce smaller conflict regions than diff3,
|
||||
both because of the exclusion of the original text, and because
|
||||
@ -13,17 +13,17 @@
|
||||
the conflict region when those matching lines appear near either
|
||||
the beginning or end of a conflict region.
|
||||
|
||||
`merge.defaultToUpstream`::
|
||||
merge.defaultToUpstream::
|
||||
If merge is called without any commit argument, merge the upstream
|
||||
branches configured for the current branch by using their last
|
||||
observed values stored in their remote-tracking branches.
|
||||
The values of the `branch.<current branch>.merge` that name the
|
||||
branches at the remote named by `branch.<current-branch>.remote`
|
||||
branches at the remote named by `branch.<current branch>.remote`
|
||||
are consulted, and then they are mapped via `remote.<remote>.fetch`
|
||||
to their corresponding remote-tracking branches, and the tips of
|
||||
these tracking branches are merged. Defaults to true.
|
||||
|
||||
`merge.ff`::
|
||||
merge.ff::
|
||||
By default, Git does not create an extra merge commit when merging
|
||||
a commit that is a descendant of the current commit. Instead, the
|
||||
tip of the current branch is fast-forwarded. When set to `false`,
|
||||
@ -33,46 +33,42 @@
|
||||
allowed (equivalent to giving the `--ff-only` option from the
|
||||
command line).
|
||||
|
||||
`merge.verifySignatures`::
|
||||
If true, this is equivalent to the `--verify-signatures` command
|
||||
merge.verifySignatures::
|
||||
If true, this is equivalent to the --verify-signatures command
|
||||
line option. See linkgit:git-merge[1] for details.
|
||||
|
||||
include::fmt-merge-msg.adoc[]
|
||||
|
||||
`merge.renameLimit`::
|
||||
merge.renameLimit::
|
||||
The number of files to consider in the exhaustive portion of
|
||||
rename detection during a merge. If not specified, defaults
|
||||
to the value of `diff.renameLimit`. If neither
|
||||
`merge.renameLimit` nor `diff.renameLimit` are specified,
|
||||
to the value of diff.renameLimit. If neither
|
||||
merge.renameLimit nor diff.renameLimit are specified,
|
||||
currently defaults to 7000. This setting has no effect if
|
||||
rename detection is turned off.
|
||||
|
||||
`merge.renames`::
|
||||
Whether Git detects renames. If set to `false`, rename detection
|
||||
is disabled. If set to `true`, basic rename detection is enabled.
|
||||
merge.renames::
|
||||
Whether Git detects renames. If set to "false", rename detection
|
||||
is disabled. If set to "true", basic rename detection is enabled.
|
||||
Defaults to the value of diff.renames.
|
||||
|
||||
`merge.directoryRenames`::
|
||||
merge.directoryRenames::
|
||||
Whether Git detects directory renames, affecting what happens at
|
||||
merge time to new files added to a directory on one side of
|
||||
history when that directory was renamed on the other side of
|
||||
history. Possible values are:
|
||||
+
|
||||
--
|
||||
`false`;; Directory rename detection is disabled, meaning that such new files will be
|
||||
left behind in the old directory.
|
||||
`true`;; Directory rename detection is enabled, meaning that such new files will be
|
||||
moved into the new directory.
|
||||
`conflict`;; A conflict will be reported for such paths.
|
||||
--
|
||||
+
|
||||
If `merge.renames` is `false`, `merge.directoryRenames` is ignored and treated
|
||||
as `false`. Defaults to `conflict`.
|
||||
history. If merge.directoryRenames is set to "false", directory
|
||||
rename detection is disabled, meaning that such new files will be
|
||||
left behind in the old directory. If set to "true", directory
|
||||
rename detection is enabled, meaning that such new files will be
|
||||
moved into the new directory. If set to "conflict", a conflict
|
||||
will be reported for such paths. If merge.renames is false,
|
||||
merge.directoryRenames is ignored and treated as false. Defaults
|
||||
to "conflict".
|
||||
|
||||
`merge.renormalize`::
|
||||
merge.renormalize::
|
||||
Tell Git that canonical representation of files in the
|
||||
repository has changed over time (e.g. earlier commits record
|
||||
text files with _CRLF_ line endings, but recent ones use _LF_ line
|
||||
text files with CRLF line endings, but recent ones use LF line
|
||||
endings). In such a repository, for each file where a
|
||||
three-way content merge is needed, Git can convert the data
|
||||
recorded in commits to a canonical form before performing a
|
||||
@ -80,45 +76,35 @@ as `false`. Defaults to `conflict`.
|
||||
see section "Merging branches with differing checkin/checkout
|
||||
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`.
|
||||
merge.stat::
|
||||
Whether to print the diffstat between ORIG_HEAD and the merge result
|
||||
at the end of the merge. True by default.
|
||||
|
||||
`merge.autoStash`::
|
||||
When set to `true`, automatically create a temporary stash entry
|
||||
merge.autoStash::
|
||||
When set to true, automatically create a temporary stash entry
|
||||
before the operation begins, and apply it after the operation
|
||||
ends. This means that you can run merge on a dirty worktree.
|
||||
However, use with care: the final stash application after a
|
||||
successful merge might result in non-trivial conflicts.
|
||||
This option can be overridden by the `--no-autostash` and
|
||||
`--autostash` options of linkgit:git-merge[1].
|
||||
Defaults to `false`.
|
||||
Defaults to false.
|
||||
|
||||
`merge.tool`::
|
||||
merge.tool::
|
||||
Controls which merge tool is used by linkgit:git-mergetool[1].
|
||||
The list below shows the valid built-in values.
|
||||
Any other value is treated as a custom merge tool and requires
|
||||
that a corresponding `mergetool.<tool>.cmd` variable is defined.
|
||||
that a corresponding mergetool.<tool>.cmd variable is defined.
|
||||
|
||||
`merge.guitool`::
|
||||
merge.guitool::
|
||||
Controls which merge tool is used by linkgit:git-mergetool[1] when the
|
||||
`-g`/`--gui` flag is specified. The list below shows the valid built-in values.
|
||||
-g/--gui flag is specified. The list below shows the valid built-in values.
|
||||
Any other value is treated as a custom merge tool and requires that a
|
||||
corresponding `mergetool.<guitool>.cmd` variable is defined.
|
||||
corresponding mergetool.<guitool>.cmd variable is defined.
|
||||
|
||||
include::{build_dir}/mergetools-merge.adoc[]
|
||||
|
||||
`merge.verbosity`::
|
||||
merge.verbosity::
|
||||
Controls the amount of output shown by the recursive merge
|
||||
strategy. Level 0 outputs nothing except a final error
|
||||
message if conflicts were detected. Level 1 outputs only
|
||||
@ -126,15 +112,15 @@ include::{build_dir}/mergetools-merge.adoc[]
|
||||
above outputs debugging information. The default is level 2.
|
||||
Can be overridden by the `GIT_MERGE_VERBOSITY` environment variable.
|
||||
|
||||
`merge.<driver>.name`::
|
||||
merge.<driver>.name::
|
||||
Defines a human-readable name for a custom low-level
|
||||
merge driver. See linkgit:gitattributes[5] for details.
|
||||
|
||||
`merge.<driver>.driver`::
|
||||
merge.<driver>.driver::
|
||||
Defines the command that implements a custom low-level
|
||||
merge driver. See linkgit:gitattributes[5] for details.
|
||||
|
||||
`merge.<driver>.recursive`::
|
||||
merge.<driver>.recursive::
|
||||
Names a low-level merge driver to be used when
|
||||
performing an internal merge between common ancestors.
|
||||
See linkgit:gitattributes[5] for details.
|
||||
|
||||
@ -1,24 +1,24 @@
|
||||
`mergetool.<tool>.path`::
|
||||
mergetool.<tool>.path::
|
||||
Override the path for the given tool. This is useful in case
|
||||
your tool is not in the `$PATH`.
|
||||
your tool is not in the PATH.
|
||||
|
||||
`mergetool.<tool>.cmd`::
|
||||
mergetool.<tool>.cmd::
|
||||
Specify the command to invoke the specified merge tool. The
|
||||
specified command is evaluated in shell with the following
|
||||
variables available: `BASE` is the name of a temporary file
|
||||
variables available: 'BASE' is the name of a temporary file
|
||||
containing the common base of the files to be merged, if available;
|
||||
`LOCAL` is the name of a temporary file containing the contents of
|
||||
the file on the current branch; `REMOTE` is the name of a temporary
|
||||
'LOCAL' is the name of a temporary file containing the contents of
|
||||
the file on the current branch; 'REMOTE' is the name of a temporary
|
||||
file containing the contents of the file from the branch being
|
||||
merged; `MERGED` contains the name of the file to which the merge
|
||||
merged; 'MERGED' contains the name of the file to which the merge
|
||||
tool should write the results of a successful merge.
|
||||
|
||||
`mergetool.<tool>.hideResolved`::
|
||||
mergetool.<tool>.hideResolved::
|
||||
Allows the user to override the global `mergetool.hideResolved` value
|
||||
for a specific tool. See `mergetool.hideResolved` for the full
|
||||
description.
|
||||
|
||||
`mergetool.<tool>.trustExitCode`::
|
||||
mergetool.<tool>.trustExitCode::
|
||||
For a custom merge command, specify whether the exit code of
|
||||
the merge command can be used to determine whether the merge was
|
||||
successful. If this is not set to true then the merge target file
|
||||
@ -26,7 +26,7 @@
|
||||
if the file has been updated; otherwise, the user is prompted to
|
||||
indicate the success of the merge.
|
||||
|
||||
`mergetool.meld.hasOutput`::
|
||||
mergetool.meld.hasOutput::
|
||||
Older versions of `meld` do not support the `--output` option.
|
||||
Git will attempt to detect whether `meld` supports `--output`
|
||||
by inspecting the output of `meld --help`. Configuring
|
||||
@ -35,7 +35,7 @@
|
||||
to `true` tells Git to unconditionally use the `--output` option,
|
||||
and `false` avoids using `--output`.
|
||||
|
||||
`mergetool.meld.useAutoMerge`::
|
||||
mergetool.meld.useAutoMerge::
|
||||
When the `--auto-merge` is given, meld will merge all non-conflicting
|
||||
parts automatically, highlight the conflicting parts, and wait for
|
||||
user decision. Setting `mergetool.meld.useAutoMerge` to `true` tells
|
||||
@ -45,15 +45,15 @@
|
||||
value of `false` avoids using `--auto-merge` altogether, and is the
|
||||
default value.
|
||||
|
||||
`mergetool.<variant>.layout`::
|
||||
Configure the split window layout for vimdiff's _<variant>_, which is any of `vimdiff`,
|
||||
mergetool.<vimdiff variant>.layout::
|
||||
Configure the split window layout for vimdiff's `<variant>`, which is any of `vimdiff`,
|
||||
`nvimdiff`, `gvimdiff`.
|
||||
Upon launching `git mergetool` with `--tool=<variant>` (or without `--tool`
|
||||
if `merge.tool` is configured as _<variant>_), Git will consult
|
||||
if `merge.tool` is configured as `<variant>`), Git will consult
|
||||
`mergetool.<variant>.layout` to determine the tool's layout. If the
|
||||
variant-specific configuration is not available, `vimdiff` ' s is used as
|
||||
variant-specific configuration is not available, `vimdiff`'s is used as
|
||||
fallback. If that too is not available, a default layout with 4 windows
|
||||
will be used. To configure the layout, see the 'BACKEND SPECIFIC HINTS'
|
||||
will be used. To configure the layout, see the `BACKEND SPECIFIC HINTS`
|
||||
ifdef::git-mergetool[]
|
||||
section.
|
||||
endif::[]
|
||||
@ -61,39 +61,39 @@ ifndef::git-mergetool[]
|
||||
section in linkgit:git-mergetool[1].
|
||||
endif::[]
|
||||
|
||||
`mergetool.hideResolved`::
|
||||
mergetool.hideResolved::
|
||||
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
|
||||
resolution. This flag causes `$LOCAL` and `$REMOTE` to be overwritten so
|
||||
possible and write the 'MERGED' file containing conflict markers around
|
||||
any conflicts that it cannot resolve; 'LOCAL' and 'REMOTE' normally
|
||||
represent 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`
|
||||
configuration variable. Defaults to `false`.
|
||||
|
||||
`mergetool.keepBackup`::
|
||||
mergetool.keepBackup::
|
||||
After performing a merge, the original file with conflict markers
|
||||
can be saved as a file with a `.orig` extension. If this variable
|
||||
is set to `false` then this file is not preserved. Defaults to
|
||||
`true` (i.e. keep the backup files).
|
||||
|
||||
`mergetool.keepTemporaries`::
|
||||
mergetool.keepTemporaries::
|
||||
When invoking a custom merge tool, Git uses a set of temporary
|
||||
files to pass to the tool. If the tool returns an error and this
|
||||
variable is set to `true`, then these temporary files will be
|
||||
preserved; otherwise, they will be removed after the tool has
|
||||
exited. Defaults to `false`.
|
||||
|
||||
`mergetool.writeToTemp`::
|
||||
Git writes temporary `BASE`, `LOCAL`, and `REMOTE` versions of
|
||||
mergetool.writeToTemp::
|
||||
Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of
|
||||
conflicting files in the worktree by default. Git will attempt
|
||||
to use a temporary directory for these files when set `true`.
|
||||
Defaults to `false`.
|
||||
|
||||
`mergetool.prompt`::
|
||||
mergetool.prompt::
|
||||
Prompt before each invocation of the merge resolution program.
|
||||
|
||||
`mergetool.guiDefault`::
|
||||
mergetool.guiDefault::
|
||||
Set `true` to use the `merge.guitool` by default (equivalent to
|
||||
specifying the `--gui` argument), or `auto` to select `merge.guitool`
|
||||
or `merge.tool` depending on the presence of a `DISPLAY` environment
|
||||
|
||||
@ -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"
|
||||
@ -48,44 +26,5 @@ promisor.acceptFromServer::
|
||||
server will be accepted. By accepting a promisor remote, the
|
||||
client agrees that the server might omit objects that are
|
||||
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].
|
||||
to "fetch" and "clone" requests from the client. 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.
|
||||
|
||||
@ -108,8 +108,7 @@ the values inherited from a lower priority configuration files (e.g.
|
||||
`$HOME/.gitconfig`).
|
||||
|
||||
remote.<name>.followRemoteHEAD::
|
||||
How linkgit:git-fetch[1] should handle updates to `remotes/<name>/HEAD`
|
||||
when fetching using the configured refspecs of a remote.
|
||||
How linkgit:git-fetch[1] should handle updates to `remotes/<name>/HEAD`.
|
||||
The default value is "create", which will create `remotes/<name>/HEAD`
|
||||
if it exists on the remote, but not locally; this will not touch an
|
||||
already existing local reference. Setting it to "warn" will print
|
||||
|
||||
@ -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.
|
||||
|
||||
15
Documentation/fix-texi.perl
Executable file
15
Documentation/fix-texi.perl
Executable file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
while (<>) {
|
||||
if (/^\@setfilename/) {
|
||||
$_ = "\@setfilename git.info\n";
|
||||
} elsif (/^\@direntry/) {
|
||||
print '@dircategory Development
|
||||
@direntry
|
||||
* Git: (git). A fast distributed revision control system
|
||||
@end direntry
|
||||
'; }
|
||||
unless (/^\@direntry/../^\@end direntry/) {
|
||||
print;
|
||||
}
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
awk '
|
||||
/^@setfilename/{
|
||||
print "@setfilename git.info"
|
||||
next
|
||||
}
|
||||
/^@direntry/{
|
||||
direntry=1
|
||||
print "@dircategory Development"
|
||||
print "@direntry"
|
||||
print "* Git: (git). A fast distributed revision control system"
|
||||
print "@end direntry"
|
||||
next
|
||||
}
|
||||
/^@end direntry/{
|
||||
direntry=0
|
||||
next
|
||||
}
|
||||
!direntry
|
||||
'
|
||||
@ -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,25 +10,12 @@
|
||||
`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.
|
||||
|
||||
`badObjectSha1`::
|
||||
(ERROR) An object has a bad sha1.
|
||||
|
||||
`badPackedRefEntry`::
|
||||
(ERROR) The "packed-refs" file contains an invalid entry.
|
||||
|
||||
`badPackedRefHeader`::
|
||||
(ERROR) The "packed-refs" file contains an invalid
|
||||
header.
|
||||
|
||||
`badParentSha1`::
|
||||
(ERROR) A commit object has a bad parent sha1.
|
||||
|
||||
@ -44,9 +31,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.
|
||||
|
||||
@ -68,12 +52,6 @@
|
||||
`emptyName`::
|
||||
(WARN) A path contains an empty name.
|
||||
|
||||
`emptyPackedRefsFile`::
|
||||
(INFO) "packed-refs" file is empty. Report to the
|
||||
git@vger.kernel.org mailing list if you see this error. As only
|
||||
very early versions of Git would create such an empty
|
||||
"packed_refs" file, we might tighten this rule in the future.
|
||||
|
||||
`extraHeaderEntry`::
|
||||
(IGNORE) Extra headers found after `tagger`.
|
||||
|
||||
@ -113,6 +91,9 @@
|
||||
`gitmodulesParse`::
|
||||
(INFO) Could not parse `.gitmodules` blob.
|
||||
|
||||
`gitmodulesLarge`;
|
||||
(ERROR) `.gitmodules` blob is too large to parse.
|
||||
|
||||
`gitmodulesPath`::
|
||||
(ERROR) `.gitmodules` path is invalid.
|
||||
|
||||
@ -195,13 +176,6 @@
|
||||
`nullSha1`::
|
||||
(WARN) Tree contains entries pointing to a null sha1.
|
||||
|
||||
`packedRefEntryNotTerminated`::
|
||||
(ERROR) The "packed-refs" file contains an entry that is
|
||||
not terminated by a newline.
|
||||
|
||||
`packedRefUnsorted`::
|
||||
(ERROR) The "packed-refs" file is not sorted.
|
||||
|
||||
`refMissingNewline`::
|
||||
(INFO) A loose ref that does not end with newline(LF). As
|
||||
valid implementations of Git never created such a loose ref
|
||||
|
||||
@ -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
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -504,7 +495,6 @@ $ git bisect old HEAD~10 # the tenth commit from now is marked as old
|
||||
------------
|
||||
+
|
||||
or:
|
||||
+
|
||||
------------
|
||||
$ git bisect start --term-old broken --term-new fixed
|
||||
$ git bisect fixed
|
||||
|
||||
@ -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
|
||||
@ -137,11 +135,10 @@ header elements later.
|
||||
The porcelain format generally suppresses commit information that has
|
||||
already been seen. For example, two lines that are blamed to the same
|
||||
commit will both be shown, but the details for that commit will be shown
|
||||
only once. Information which is specific to individual lines will not be
|
||||
grouped together, like revs to be marked 'ignored' or 'unblamable'. This
|
||||
is more efficient, but may require more state be kept by the reader. The
|
||||
`--line-porcelain` option can be used to output full commit information
|
||||
for each line, allowing simpler (but less efficient) usage like:
|
||||
only once. This is more efficient, but may require more state be kept by
|
||||
the reader. The `--line-porcelain` option can be used to output full
|
||||
commit information for each line, allowing simpler (but less efficient)
|
||||
usage like:
|
||||
|
||||
# count the number of lines attributed to each author
|
||||
git blame --line-porcelain file |
|
||||
|
||||
@ -7,23 +7,23 @@ git-branch - List, create, or delete branches
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[synopsis]
|
||||
git branch [--color[=<when>] | --no-color] [--show-current]
|
||||
[-v [--abbrev=<n> | --no-abbrev]]
|
||||
[--column[=<options>] | --no-column] [--sort=<key>]
|
||||
[--merged [<commit>]] [--no-merged [<commit>]]
|
||||
[--contains [<commit>]] [--no-contains [<commit>]]
|
||||
[--points-at <object>] [--format=<format>]
|
||||
[(-r|--remotes) | (-a|--all)]
|
||||
[--list] [<pattern>...]
|
||||
git branch [--track[=(direct|inherit)] | --no-track] [-f]
|
||||
[--recurse-submodules] <branch-name> [<start-point>]
|
||||
git branch (--set-upstream-to=<upstream>|-u <upstream>) [<branch-name>]
|
||||
git branch --unset-upstream [<branch-name>]
|
||||
git branch (-m|-M) [<old-branch>] <new-branch>
|
||||
git branch (-c|-C) [<old-branch>] <new-branch>
|
||||
git branch (-d|-D) [-r] <branch-name>...
|
||||
git branch --edit-description [<branch-name>]
|
||||
[verse]
|
||||
'git branch' [--color[=<when>] | --no-color] [--show-current]
|
||||
[-v [--abbrev=<n> | --no-abbrev]]
|
||||
[--column[=<options>] | --no-column] [--sort=<key>]
|
||||
[--merged [<commit>]] [--no-merged [<commit>]]
|
||||
[--contains [<commit>]] [--no-contains [<commit>]]
|
||||
[--points-at <object>] [--format=<format>]
|
||||
[(-r | --remotes) | (-a | --all)]
|
||||
[--list] [<pattern>...]
|
||||
'git branch' [--track[=(direct|inherit)] | --no-track] [-f]
|
||||
[--recurse-submodules] <branchname> [<start-point>]
|
||||
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
||||
'git branch' --unset-upstream [<branchname>]
|
||||
'git branch' (-m | -M) [<oldbranch>] <newbranch>
|
||||
'git branch' (-c | -C) [<oldbranch>] <newbranch>
|
||||
'git branch' (-d | -D) [-r] <branchname>...
|
||||
'git branch' --edit-description [<branchname>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -49,184 +49,173 @@ With `--contains`, shows only the branches that contain the named commit
|
||||
named commit), `--no-contains` inverts it. With `--merged`, only branches
|
||||
merged into the named commit (i.e. the branches whose tip commits are
|
||||
reachable from the named commit) will be listed. With `--no-merged` only
|
||||
branches not merged into the named commit will be listed. If the _<commit>_
|
||||
branches not merged into the named commit will be listed. If the <commit>
|
||||
argument is missing it defaults to `HEAD` (i.e. the tip of the current
|
||||
branch).
|
||||
|
||||
The command's second form creates a new branch head named _<branch-name>_
|
||||
which points to the current `HEAD`, or _<start-point>_ if given. As a
|
||||
special case, for _<start-point>_, you may use `<rev-A>...<rev-B>` as a
|
||||
shortcut for the merge base of _<rev-A>_ and _<rev-B>_ if there is exactly
|
||||
one merge base. You can leave out at most one of _<rev-A>_ and _<rev-B>_,
|
||||
in which case it defaults to `HEAD`.
|
||||
The command's second form creates a new branch head named <branchname>
|
||||
which points to the current `HEAD`, or <start-point> if given. As a
|
||||
special case, for <start-point>, you may use `"A...B"` as a shortcut for
|
||||
the merge base of `A` and `B` if there is exactly one merge base. You
|
||||
can leave out at most one of `A` and `B`, in which case it defaults to
|
||||
`HEAD`.
|
||||
|
||||
Note that this will create the new branch, but it will not switch the
|
||||
working tree to it; use `git switch <new-branch>` to switch to the
|
||||
working tree to it; use "git switch <newbranch>" to switch to the
|
||||
new branch.
|
||||
|
||||
When a local branch is started off a remote-tracking branch, Git sets up the
|
||||
branch (specifically the `branch.<name>.remote` and `branch.<name>.merge`
|
||||
configuration entries) so that `git pull` will appropriately merge from
|
||||
configuration entries) so that 'git pull' will appropriately merge from
|
||||
the remote-tracking branch. This behavior may be changed via the global
|
||||
`branch.autoSetupMerge` configuration flag. That setting can be
|
||||
overridden by using the `--track` and `--no-track` options, and
|
||||
changed later using `git branch --set-upstream-to`.
|
||||
|
||||
With a `-m` or `-M` option, _<old-branch>_ will be renamed to _<new-branch>_.
|
||||
If _<old-branch>_ had a corresponding reflog, it is renamed to match
|
||||
_<new-branch>_, and a reflog entry is created to remember the branch
|
||||
renaming. If _<new-branch>_ exists, `-M` must be used to force the rename
|
||||
With a `-m` or `-M` option, <oldbranch> will be renamed to <newbranch>.
|
||||
If <oldbranch> had a corresponding reflog, it is renamed to match
|
||||
<newbranch>, and a reflog entry is created to remember the branch
|
||||
renaming. If <newbranch> exists, -M must be used to force the rename
|
||||
to happen.
|
||||
|
||||
The `-c` and `-C` options have the exact same semantics as `-m` and
|
||||
`-M`, except instead of the branch being renamed, it will be copied to a
|
||||
new name, along with its config and reflog.
|
||||
|
||||
With a `-d` or `-D` option, _<branch-name>_ will be deleted. You may
|
||||
With a `-d` or `-D` option, `<branchname>` will be deleted. You may
|
||||
specify more than one branch for deletion. If the branch currently
|
||||
has a reflog then the reflog will also be deleted.
|
||||
|
||||
Use `-r` together with `-d` to delete remote-tracking branches. Note, that it
|
||||
only makes sense to delete remote-tracking branches if they no longer exist
|
||||
in the remote repository or if `git fetch` was configured not to fetch
|
||||
them again. See also the `prune` subcommand of linkgit:git-remote[1] for a
|
||||
in the remote repository or if 'git fetch' was configured not to fetch
|
||||
them again. See also the 'prune' subcommand of linkgit:git-remote[1] for a
|
||||
way to clean up all obsolete remote-tracking branches.
|
||||
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
`-d`::
|
||||
`--delete`::
|
||||
-d::
|
||||
--delete::
|
||||
Delete a branch. The branch must be fully merged in its
|
||||
upstream branch, or in `HEAD` if no upstream was set with
|
||||
`--track` or `--set-upstream-to`.
|
||||
|
||||
`-D`::
|
||||
-D::
|
||||
Shortcut for `--delete --force`.
|
||||
|
||||
`--create-reflog`::
|
||||
--create-reflog::
|
||||
Create the branch's reflog. This activates recording of
|
||||
all changes made to the branch ref, enabling use of date
|
||||
based sha1 expressions such as `<branch-name>@{yesterday}`.
|
||||
based sha1 expressions such as "<branchname>@\{yesterday}".
|
||||
Note that in non-bare repositories, reflogs are usually
|
||||
enabled by default by the `core.logAllRefUpdates` config option.
|
||||
The negated form `--no-create-reflog` only overrides an earlier
|
||||
`--create-reflog`, but currently does not negate the setting of
|
||||
`core.logAllRefUpdates`.
|
||||
|
||||
`-f`::
|
||||
`--force`::
|
||||
Reset _<branch-name>_ to _<start-point>_, even if _<branch-name>_ exists
|
||||
already. Without `-f`, `git branch` refuses to change an existing branch.
|
||||
-f::
|
||||
--force::
|
||||
Reset <branchname> to <start-point>, even if <branchname> exists
|
||||
already. Without `-f`, 'git branch' refuses to change an existing branch.
|
||||
In combination with `-d` (or `--delete`), allow deleting the
|
||||
branch irrespective of its merged status, or whether it even
|
||||
points to a valid commit. In combination with
|
||||
`-m` (or `--move`), allow renaming the branch even if the new
|
||||
branch name already exists, the same applies for `-c` (or `--copy`).
|
||||
+
|
||||
Note that `git branch -f <branch-name> [<start-point>]`, even with `-f`,
|
||||
refuses to change an existing branch _<branch-name>_ that is checked out
|
||||
Note that 'git branch -f <branchname> [<start-point>]', even with '-f',
|
||||
refuses to change an existing branch `<branchname>` that is checked out
|
||||
in another worktree linked to the same repository.
|
||||
|
||||
`-m`::
|
||||
`--move`::
|
||||
-m::
|
||||
--move::
|
||||
Move/rename a branch, together with its config and reflog.
|
||||
|
||||
`-M`::
|
||||
-M::
|
||||
Shortcut for `--move --force`.
|
||||
|
||||
`-c`::
|
||||
`--copy`::
|
||||
-c::
|
||||
--copy::
|
||||
Copy a branch, together with its config and reflog.
|
||||
|
||||
`-C`::
|
||||
-C::
|
||||
Shortcut for `--copy --force`.
|
||||
|
||||
`--color[=<when>]`::
|
||||
--color[=<when>]::
|
||||
Color branches to highlight current, local, and
|
||||
remote-tracking branches.
|
||||
The value must be `always` (the default), `never`, or `auto`.
|
||||
The value must be always (the default), never, or auto.
|
||||
|
||||
`--no-color`::
|
||||
--no-color::
|
||||
Turn off branch colors, even when the configuration file gives the
|
||||
default to color output.
|
||||
Same as `--color=never`.
|
||||
|
||||
`-i`::
|
||||
`--ignore-case`::
|
||||
-i::
|
||||
--ignore-case::
|
||||
Sorting and filtering branches are case insensitive.
|
||||
|
||||
`--omit-empty`::
|
||||
--omit-empty::
|
||||
Do not print a newline after formatted refs where the format expands
|
||||
to the empty string.
|
||||
|
||||
`--column[=<options>]`::
|
||||
`--no-column`::
|
||||
--column[=<options>]::
|
||||
--no-column::
|
||||
Display branch listing in columns. See configuration variable
|
||||
`column.branch` for option syntax. `--column` and `--no-column`
|
||||
without options are equivalent to `always` and `never` respectively.
|
||||
without options are equivalent to 'always' and 'never' respectively.
|
||||
+
|
||||
This option is only applicable in non-verbose mode.
|
||||
|
||||
`--sort=<key>`::
|
||||
Sort based on _<key>_. Prefix `-` to sort in descending
|
||||
order of the value. You may use the `--sort=<key>` option
|
||||
multiple times, in which case the last key becomes the primary
|
||||
key. The keys supported are the same as those in linkgit:git-for-each-ref[1].
|
||||
Sort order defaults to the value configured for the
|
||||
`branch.sort` variable if it exists, or to sorting based on the
|
||||
full refname (including `refs/...` prefix). This lists
|
||||
detached `HEAD` (if present) first, then local branches and
|
||||
finally remote-tracking branches. See linkgit:git-config[1].
|
||||
|
||||
`-r`::
|
||||
`--remotes`::
|
||||
List or delete (if used with `-d`) the remote-tracking branches.
|
||||
-r::
|
||||
--remotes::
|
||||
List or delete (if used with -d) the remote-tracking branches.
|
||||
Combine with `--list` to match the optional pattern(s).
|
||||
|
||||
`-a`::
|
||||
`--all`::
|
||||
-a::
|
||||
--all::
|
||||
List both remote-tracking branches and local branches.
|
||||
Combine with `--list` to match optional pattern(s).
|
||||
|
||||
`-l`::
|
||||
`--list`::
|
||||
-l::
|
||||
--list::
|
||||
List branches. With optional `<pattern>...`, e.g. `git
|
||||
branch --list 'maint-*'`, list only the branches that match
|
||||
the pattern(s).
|
||||
|
||||
`--show-current`::
|
||||
Print the name of the current branch. In detached `HEAD` state,
|
||||
--show-current::
|
||||
Print the name of the current branch. In detached HEAD state,
|
||||
nothing is printed.
|
||||
|
||||
`-v`::
|
||||
`-vv`::
|
||||
`--verbose`::
|
||||
-v::
|
||||
-vv::
|
||||
--verbose::
|
||||
When in list mode,
|
||||
show sha1 and commit subject line for each head, along with
|
||||
relationship to upstream branch (if any). If given twice, print
|
||||
the path of the linked worktree (if any) and the name of the upstream
|
||||
branch, as well (see also `git remote show <remote>`). Note that the
|
||||
current worktree's `HEAD` will not have its path printed (it will always
|
||||
current worktree's HEAD will not have its path printed (it will always
|
||||
be your current directory).
|
||||
|
||||
`-q`::
|
||||
`--quiet`::
|
||||
-q::
|
||||
--quiet::
|
||||
Be more quiet when creating or deleting a branch, suppressing
|
||||
non-error messages.
|
||||
|
||||
`--abbrev=<n>`::
|
||||
--abbrev=<n>::
|
||||
In the verbose listing that show the commit object name,
|
||||
show the shortest prefix that is at least _<n>_ hexdigits
|
||||
show the shortest prefix that is at least '<n>' hexdigits
|
||||
long that uniquely refers the object.
|
||||
The default value is 7 and can be overridden by the `core.abbrev`
|
||||
config option.
|
||||
|
||||
`--no-abbrev`::
|
||||
--no-abbrev::
|
||||
Display the full sha1s in the output listing rather than abbreviating them.
|
||||
|
||||
`-t`::
|
||||
`--track[=(direct|inherit)]`::
|
||||
-t::
|
||||
--track[=(direct|inherit)]::
|
||||
When creating a new branch, set up `branch.<name>.remote` and
|
||||
`branch.<name>.merge` configuration entries to set "upstream" tracking
|
||||
configuration for the new branch. This
|
||||
@ -240,7 +229,7 @@ The exact upstream branch is chosen depending on the optional argument:
|
||||
itself as the upstream; `--track=inherit` means to copy the upstream
|
||||
configuration of the start-point branch.
|
||||
+
|
||||
The `branch.autoSetupMerge` configuration variable specifies how `git switch`,
|
||||
The branch.autoSetupMerge configuration variable specifies how `git switch`,
|
||||
`git checkout` and `git branch` should behave when neither `--track` nor
|
||||
`--no-track` are specified:
|
||||
+
|
||||
@ -249,94 +238,106 @@ were given whenever the start-point is a remote-tracking branch.
|
||||
`false` behaves as if `--no-track` were given. `always` behaves as though
|
||||
`--track=direct` were given. `inherit` behaves as though `--track=inherit`
|
||||
were given. `simple` behaves as though `--track=direct` were given only when
|
||||
the _<start-point>_ is a remote-tracking branch and the new branch has the same
|
||||
the start-point is a remote-tracking branch and the new branch has the same
|
||||
name as the remote branch.
|
||||
+
|
||||
See linkgit:git-pull[1] and linkgit:git-config[1] for additional discussion on
|
||||
how the `branch.<name>.remote` and `branch.<name>.merge` options are used.
|
||||
|
||||
`--no-track`::
|
||||
--no-track::
|
||||
Do not set up "upstream" configuration, even if the
|
||||
`branch.autoSetupMerge` configuration variable is set.
|
||||
branch.autoSetupMerge configuration variable is set.
|
||||
|
||||
`--recurse-submodules`::
|
||||
THIS OPTION IS EXPERIMENTAL! Cause the current command to
|
||||
--recurse-submodules::
|
||||
THIS OPTION IS EXPERIMENTAL! Causes the current command to
|
||||
recurse into submodules if `submodule.propagateBranches` is
|
||||
enabled. See `submodule.propagateBranches` in
|
||||
linkgit:git-config[1]. Currently, only branch creation is
|
||||
supported.
|
||||
+
|
||||
When used in branch creation, a new branch _<branch-name>_ will be created
|
||||
When used in branch creation, a new branch <branchname> will be created
|
||||
in the superproject and all of the submodules in the superproject's
|
||||
_<start-point>_. In submodules, the branch will point to the submodule
|
||||
commit in the superproject's _<start-point>_ but the branch's tracking
|
||||
<start-point>. In submodules, the branch will point to the submodule
|
||||
commit in the superproject's <start-point> but the branch's tracking
|
||||
information will be set up based on the submodule's branches and remotes
|
||||
e.g. `git branch --recurse-submodules topic origin/main` will create the
|
||||
submodule branch "topic" that points to the submodule commit in the
|
||||
superproject's "origin/main", but tracks the submodule's "origin/main".
|
||||
|
||||
`--set-upstream`::
|
||||
--set-upstream::
|
||||
As this option had confusing syntax, it is no longer supported.
|
||||
Please use `--track` or `--set-upstream-to` instead.
|
||||
|
||||
`-u <upstream>`::
|
||||
`--set-upstream-to=<upstream>`::
|
||||
Set up _<branch-name>_'s tracking information so _<upstream>_ is
|
||||
considered _<branch-name>_'s upstream branch. If no _<branch-name>_
|
||||
-u <upstream>::
|
||||
--set-upstream-to=<upstream>::
|
||||
Set up <branchname>'s tracking information so <upstream> is
|
||||
considered <branchname>'s upstream branch. If no <branchname>
|
||||
is specified, then it defaults to the current branch.
|
||||
|
||||
`--unset-upstream`::
|
||||
Remove the upstream information for _<branch-name>_. If no branch
|
||||
--unset-upstream::
|
||||
Remove the upstream information for <branchname>. If no branch
|
||||
is specified it defaults to the current branch.
|
||||
|
||||
`--edit-description`::
|
||||
--edit-description::
|
||||
Open an editor and edit the text to explain what the branch is
|
||||
for, to be used by various other commands (e.g. `format-patch`,
|
||||
`request-pull`, and `merge` (if enabled)). Multi-line explanations
|
||||
may be used.
|
||||
|
||||
`--contains [<commit>]`::
|
||||
Only list branches which contain _<commit>_ (`HEAD`
|
||||
--contains [<commit>]::
|
||||
Only list branches which contain the specified commit (HEAD
|
||||
if not specified). Implies `--list`.
|
||||
|
||||
`--no-contains [<commit>]`::
|
||||
Only list branches which don't contain _<commit>_
|
||||
(`HEAD` if not specified). Implies `--list`.
|
||||
--no-contains [<commit>]::
|
||||
Only list branches which don't contain the specified commit
|
||||
(HEAD if not specified). Implies `--list`.
|
||||
|
||||
`--merged [<commit>]`::
|
||||
Only list branches whose tips are reachable from
|
||||
_<commit>_ (`HEAD` if not specified). Implies `--list`.
|
||||
--merged [<commit>]::
|
||||
Only list branches whose tips are reachable from the
|
||||
specified commit (HEAD if not specified). Implies `--list`.
|
||||
|
||||
`--no-merged [<commit>]`::
|
||||
Only list branches whose tips are not reachable from
|
||||
_<commit>_ (`HEAD` if not specified). Implies `--list`.
|
||||
--no-merged [<commit>]::
|
||||
Only list branches whose tips are not reachable from the
|
||||
specified commit (HEAD if not specified). Implies `--list`.
|
||||
|
||||
`--points-at <object>`::
|
||||
Only list branches of _<object>_.
|
||||
|
||||
`--format <format>`::
|
||||
A string that interpolates `%(fieldname)` from a branch ref being shown
|
||||
and the object it points at. _<format>_ is the same as
|
||||
that of linkgit:git-for-each-ref[1].
|
||||
|
||||
_<branch-name>_::
|
||||
<branchname>::
|
||||
The name of the branch to create or delete.
|
||||
The new branch name must pass all checks defined by
|
||||
linkgit:git-check-ref-format[1]. Some of these checks
|
||||
may restrict the characters allowed in a branch name.
|
||||
|
||||
_<start-point>_::
|
||||
<start-point>::
|
||||
The new branch head will point to this commit. It may be
|
||||
given as a branch name, a commit-id, or a tag. If this
|
||||
option is omitted, the current `HEAD` will be used instead.
|
||||
option is omitted, the current HEAD will be used instead.
|
||||
|
||||
_<old-branch>_::
|
||||
<oldbranch>::
|
||||
The name of an existing branch. If this option is omitted,
|
||||
the name of the current branch will be used instead.
|
||||
|
||||
_<new-branch>_::
|
||||
<newbranch>::
|
||||
The new name for an existing branch. The same restrictions as for
|
||||
_<branch-name>_ apply.
|
||||
<branchname> apply.
|
||||
|
||||
--sort=<key>::
|
||||
Sort based on the key given. Prefix `-` to sort in descending
|
||||
order of the value. You may use the --sort=<key> option
|
||||
multiple times, in which case the last key becomes the primary
|
||||
key. The keys supported are the same as those in `git
|
||||
for-each-ref`. Sort order defaults to the value configured for the
|
||||
`branch.sort` variable if it exists, or to sorting based on the
|
||||
full refname (including `refs/...` prefix). This lists
|
||||
detached HEAD (if present) first, then local branches and
|
||||
finally remote-tracking branches. See linkgit:git-config[1].
|
||||
|
||||
|
||||
--points-at <object>::
|
||||
Only list branches of the given object.
|
||||
|
||||
--format <format>::
|
||||
A string that interpolates `%(fieldname)` from a branch ref being shown
|
||||
and the object it points at. The format is the same as
|
||||
that of linkgit:git-for-each-ref[1].
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
@ -373,7 +374,7 @@ $ git branch -D test <2>
|
||||
------------
|
||||
+
|
||||
<1> Delete the remote-tracking branches "todo", "html" and "man". The next
|
||||
`git fetch` or `git pull` will create them again unless you configure them not to.
|
||||
'fetch' or 'pull' will create them again unless you configure them not to.
|
||||
See linkgit:git-fetch[1].
|
||||
<2> Delete the "test" branch even if the "master" branch (or whichever branch
|
||||
is currently checked out) does not have all commits from the test branch.
|
||||
@ -385,8 +386,8 @@ $ git branch -r -l '<remote>/<pattern>' <1>
|
||||
$ git for-each-ref 'refs/remotes/<remote>/<pattern>' <2>
|
||||
------------
|
||||
+
|
||||
<1> Using `-a` would conflate _<remote>_ with any local branches you happen to
|
||||
have been prefixed with the same _<remote>_ pattern.
|
||||
<1> Using `-a` would conflate <remote> with any local branches you happen to
|
||||
have been prefixed with the same <remote> pattern.
|
||||
<2> `for-each-ref` can take a wide range of options. See linkgit:git-for-each-ref[1]
|
||||
|
||||
Patterns will normally need quoting.
|
||||
@ -395,24 +396,24 @@ NOTES
|
||||
-----
|
||||
|
||||
If you are creating a branch that you want to switch to immediately,
|
||||
it is easier to use the `git switch` command with its `-c` option to
|
||||
it is easier to use the "git switch" command with its `-c` option to
|
||||
do the same thing with a single command.
|
||||
|
||||
The options `--contains`, `--no-contains`, `--merged` and `--no-merged`
|
||||
serve four related but different purposes:
|
||||
|
||||
- `--contains <commit>` is used to find all branches which will need
|
||||
special attention if _<commit>_ were to be rebased or amended, since those
|
||||
branches contain the specified _<commit>_.
|
||||
special attention if <commit> were to be rebased or amended, since those
|
||||
branches contain the specified <commit>.
|
||||
|
||||
- `--no-contains <commit>` is the inverse of that, i.e. branches that don't
|
||||
contain the specified _<commit>_.
|
||||
contain the specified <commit>.
|
||||
|
||||
- `--merged` is used to find all branches which can be safely deleted,
|
||||
since those branches are fully contained by `HEAD`.
|
||||
since those branches are fully contained by HEAD.
|
||||
|
||||
- `--no-merged` is used to find branches which are candidates for merging
|
||||
into `HEAD`, since those branches are not fully contained by `HEAD`.
|
||||
into HEAD, since those branches are not fully contained by HEAD.
|
||||
|
||||
include::ref-reachability-filters.adoc[]
|
||||
|
||||
@ -421,8 +422,8 @@ SEE ALSO
|
||||
linkgit:git-check-ref-format[1],
|
||||
linkgit:git-fetch[1],
|
||||
linkgit:git-remote[1],
|
||||
link:user-manual.html#what-is-a-branch["Understanding history: What is
|
||||
a branch?"] in the Git User's Manual.
|
||||
link:user-manual.html#what-is-a-branch[``Understanding history: What is
|
||||
a branch?''] in the Git User's Manual.
|
||||
|
||||
GIT
|
||||
---
|
||||
|
||||
@ -9,7 +9,8 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git cat-file' <type> <object>
|
||||
'git cat-file' (-e | -p | -t | -s) <object>
|
||||
'git cat-file' (-e | -p) <object>
|
||||
'git cat-file' (-t | -s) [--allow-unknown-type] <object>
|
||||
'git cat-file' (--textconv | --filters)
|
||||
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
|
||||
'git cat-file' (--batch | --batch-check | --batch-command) [--batch-all-objects]
|
||||
@ -62,10 +63,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].
|
||||
@ -82,25 +81,6 @@ OPTIONS
|
||||
end-of-line conversion, etc). In this case, `<object>` has to be of
|
||||
the form `<tree-ish>:<path>`, or `:<path>`.
|
||||
|
||||
--filter=<filter-spec>::
|
||||
--no-filter::
|
||||
Omit objects from the list of printed objects. This can only be used in
|
||||
combination with one of the batched modes. Excluded objects that have
|
||||
been explicitly requested via any of the batch modes that read objects
|
||||
via standard input (`--batch`, `--batch-check`) will be reported as
|
||||
"filtered". Excluded objects in `--batch-all-objects` mode will not be
|
||||
printed at all. The '<filter-spec>' may be one of the following:
|
||||
+
|
||||
The form '--filter=blob:none' omits all blobs.
|
||||
+
|
||||
The form '--filter=blob:limit=<n>[kmg]' omits blobs of size at least n
|
||||
bytes or units. n may be zero. The suffixes k, m, and g can be used to name
|
||||
units in KiB, MiB, or GiB. For example, 'blob:limit=1k' is the same as
|
||||
'blob:limit=1024'.
|
||||
+
|
||||
The form '--filter=object:type=(tag|commit|tree|blob)' omits all objects which
|
||||
are not of the requested type.
|
||||
|
||||
--path=<path>::
|
||||
For use with `--textconv` or `--filters`, to allow specifying an object
|
||||
name and a path separately, e.g. when it is difficult to figure out
|
||||
@ -203,6 +183,9 @@ flush::
|
||||
only once, even if it is stored multiple times in the
|
||||
repository.
|
||||
|
||||
--allow-unknown-type::
|
||||
Allow `-s` or `-t` to query broken/corrupt objects of unknown type.
|
||||
|
||||
--follow-symlinks::
|
||||
With `--batch` or `--batch-check`, follow symlinks inside the
|
||||
repository when requesting objects with extended SHA-1
|
||||
@ -309,11 +292,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).
|
||||
@ -344,10 +322,10 @@ of `%(objectsize)` bytes), followed by a newline.
|
||||
|
||||
For example, `--batch` without a custom format would produce:
|
||||
|
||||
-----------
|
||||
------------
|
||||
<oid> SP <type> SP <size> LF
|
||||
<contents> LF
|
||||
-----------
|
||||
------------
|
||||
|
||||
Whereas `--batch-check='%(objectname) %(objecttype)'` would produce:
|
||||
|
||||
@ -362,27 +340,12 @@ the repository, then `cat-file` will ignore any custom format and print:
|
||||
<object> SP missing LF
|
||||
------------
|
||||
|
||||
If a name is specified on stdin that is filtered out via `--filter=`,
|
||||
then `cat-file` will ignore any custom format and print:
|
||||
|
||||
------------
|
||||
<object> SP excluded LF
|
||||
------------
|
||||
|
||||
If a name is specified that might refer to more than one object (an ambiguous short sha), then `cat-file` will ignore any custom format and print:
|
||||
|
||||
------------
|
||||
<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.
|
||||
@ -77,7 +76,6 @@ EXAMPLES
|
||||
--------
|
||||
|
||||
In the examples, the following '.gitattributes' file is used:
|
||||
|
||||
---------------
|
||||
*.java diff=java -crlf myAttr
|
||||
NoMyAttr.java !myAttr
|
||||
@ -85,14 +83,12 @@ README caveat=unspecified
|
||||
---------------
|
||||
|
||||
* Listing a single attribute:
|
||||
+
|
||||
---------------
|
||||
$ git check-attr diff org/example/MyClass.java
|
||||
org/example/MyClass.java: diff: java
|
||||
---------------
|
||||
|
||||
* Listing multiple attributes for a file:
|
||||
+
|
||||
---------------
|
||||
$ git check-attr crlf diff myAttr -- org/example/MyClass.java
|
||||
org/example/MyClass.java: crlf: unset
|
||||
@ -101,7 +97,6 @@ org/example/MyClass.java: myAttr: set
|
||||
---------------
|
||||
|
||||
* Listing all attributes for a file:
|
||||
+
|
||||
---------------
|
||||
$ git check-attr --all -- org/example/MyClass.java
|
||||
org/example/MyClass.java: diff: java
|
||||
@ -109,7 +104,6 @@ org/example/MyClass.java: myAttr: set
|
||||
---------------
|
||||
|
||||
* Listing an attribute for multiple files:
|
||||
+
|
||||
---------------
|
||||
$ git check-attr myAttr -- org/example/MyClass.java org/example/NoMyAttr.java
|
||||
org/example/MyClass.java: myAttr: set
|
||||
@ -117,7 +111,6 @@ org/example/NoMyAttr.java: myAttr: unspecified
|
||||
---------------
|
||||
|
||||
* Not all values are equally unambiguous:
|
||||
+
|
||||
---------------
|
||||
$ git check-attr caveat README
|
||||
README: caveat: unspecified
|
||||
|
||||
@ -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`.
|
||||
|
||||
@ -7,119 +7,120 @@ git-checkout - Switch branches or restore working tree files
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[synopsis]
|
||||
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|--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>...]
|
||||
[verse]
|
||||
'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' [-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
|
||||
-----------
|
||||
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` 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.
|
||||
|
||||
`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.
|
||||
'git checkout' [<branch>]::
|
||||
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
|
||||
If `<branch>` is not found but there does exist a tracking branch in
|
||||
exactly one remote (call it `<remote>`) with a matching name and
|
||||
`--no-guess` is not specified, treat as equivalent to
|
||||
+
|
||||
------------
|
||||
$ 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.
|
||||
|
||||
`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.
|
||||
If `-B` is given, `<new-branch>` is created if it doesn't exist; otherwise, it
|
||||
is reset. This is the transactional equivalent of
|
||||
+
|
||||
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]`::
|
||||
|
||||
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").
|
||||
------------
|
||||
$ git branch -f <branch> [<start-point>]
|
||||
$ git checkout <branch>
|
||||
------------
|
||||
+
|
||||
For example, `git checkout main file.txt` will replace `file.txt`
|
||||
with the version from `main`.
|
||||
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 [-f|--ours|--theirs|-m|--conflict=<style>] [--] <pathspec>...`::
|
||||
`git checkout [-f|--ours|--theirs|-m|--conflict=<style>] --pathspec-from-file=<file> [--pathspec-file-nul]`::
|
||||
'git checkout' --detach [<branch>]::
|
||||
'git checkout' [--detach] <commit>::
|
||||
|
||||
Replace the specified files and/or directories with the version from
|
||||
the index.
|
||||
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.
|
||||
+
|
||||
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`.
|
||||
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`).
|
||||
+
|
||||
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.
|
||||
Omitting `<branch>` detaches `HEAD` at the tip of the current branch.
|
||||
|
||||
`git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>...]`::
|
||||
This is similar to the previous two modes, but lets you use the
|
||||
'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]::
|
||||
|
||||
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>`.
|
||||
+
|
||||
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 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.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
`-q`::
|
||||
`--quiet`::
|
||||
-q::
|
||||
--quiet::
|
||||
Quiet, suppress feedback messages.
|
||||
|
||||
`--progress`::
|
||||
`--no-progress`::
|
||||
--progress::
|
||||
--no-progress::
|
||||
Progress status is reported on the standard error stream
|
||||
by default when it is attached to a terminal, unless `--quiet`
|
||||
is specified. This flag enables progress reporting even if not
|
||||
attached to a terminal, regardless of `--quiet`.
|
||||
|
||||
`-f`::
|
||||
`--force`::
|
||||
-f::
|
||||
--force::
|
||||
When switching branches, proceed even if the index or the
|
||||
working tree differs from `HEAD`, and even if there are untracked
|
||||
files in the way. This is used to throw away local changes and
|
||||
@ -128,13 +129,13 @@ OPTIONS
|
||||
When checking out paths from the index, do not fail upon unmerged
|
||||
entries; instead, unmerged entries are ignored.
|
||||
|
||||
`--ours`::
|
||||
`--theirs`::
|
||||
--ours::
|
||||
--theirs::
|
||||
When checking out paths from the index, check out stage #2
|
||||
(`ours`) or #3 (`theirs`) for unmerged paths.
|
||||
('ours') or #3 ('theirs') for unmerged paths.
|
||||
+
|
||||
Note that during `git rebase` and `git pull --rebase`, `ours` and
|
||||
`theirs` may appear swapped; `--ours` gives the version from the
|
||||
Note that during `git rebase` and `git pull --rebase`, 'ours' and
|
||||
'theirs' may appear swapped; `--ours` gives the version from the
|
||||
branch the changes are rebased onto, while `--theirs` gives the
|
||||
version from the branch that holds your work that is being rebased.
|
||||
+
|
||||
@ -148,20 +149,22 @@ as `ours` (i.e. "our shared canonical history"), while what you did
|
||||
on your side branch as `theirs` (i.e. "one contributor's work on top
|
||||
of it").
|
||||
|
||||
`-b <new-branch>`::
|
||||
Create a new branch named _<new-branch>_, start it at
|
||||
_<start-point>_, and check the resulting branch out;
|
||||
-b <new-branch>::
|
||||
Create a new branch named `<new-branch>`, start it at
|
||||
`<start-point>`, and check the resulting branch out;
|
||||
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.
|
||||
-B <new-branch>::
|
||||
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)]`::
|
||||
-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
|
||||
@ -173,14 +176,14 @@ off of `origin/hack` (or `remotes/origin/hack`, or even
|
||||
guessing results in an empty name, the guessing is aborted. You can
|
||||
explicitly give a name with `-b` in such a case.
|
||||
|
||||
`--no-track`::
|
||||
--no-track::
|
||||
Do not set up "upstream" configuration, even if the
|
||||
`branch.autoSetupMerge` configuration variable is true.
|
||||
|
||||
`--guess`::
|
||||
`--no-guess`::
|
||||
If _<branch>_ is not found but there does exist a tracking
|
||||
branch in exactly one remote (call it _<remote>_) with a
|
||||
--guess::
|
||||
--no-guess::
|
||||
If `<branch>` is not found but there does exist a tracking
|
||||
branch in exactly one remote (call it `<remote>`) with a
|
||||
matching name, treat as equivalent to
|
||||
+
|
||||
------------
|
||||
@ -189,10 +192,10 @@ $ git checkout -b <branch> --track <remote>/<branch>
|
||||
+
|
||||
If the branch exists in multiple remotes and one of them is named by
|
||||
the `checkout.defaultRemote` configuration variable, we'll use that
|
||||
one for the purposes of disambiguation, even if the _<branch>_ isn't
|
||||
one for the purposes of disambiguation, even if the `<branch>` isn't
|
||||
unique across all remotes. Set it to
|
||||
e.g. `checkout.defaultRemote=origin` to always checkout remote
|
||||
branches from there if _<branch>_ is ambiguous but exists on the
|
||||
branches from there if `<branch>` is ambiguous but exists on the
|
||||
'origin' remote. See also `checkout.defaultRemote` in
|
||||
linkgit:git-config[1].
|
||||
+
|
||||
@ -201,28 +204,28 @@ linkgit:git-config[1].
|
||||
The default behavior can be set via the `checkout.guess` configuration
|
||||
variable.
|
||||
|
||||
`-l`::
|
||||
-l::
|
||||
Create the new branch's reflog; see linkgit:git-branch[1] for
|
||||
details.
|
||||
|
||||
`-d`::
|
||||
`--detach`::
|
||||
-d::
|
||||
--detach::
|
||||
Rather than checking out a branch to work on it, check out a
|
||||
commit for inspection and discardable experiments.
|
||||
This is the default behavior of `git checkout <commit>` when
|
||||
_<commit>_ is not a branch name. See the "DETACHED HEAD" section
|
||||
`<commit>` is not a branch name. See the "DETACHED HEAD" section
|
||||
below for details.
|
||||
|
||||
`--orphan <new-branch>`::
|
||||
Create a new unborn branch, named _<new-branch>_, started from
|
||||
_<start-point>_ and switch to it. The first commit made on this
|
||||
--orphan <new-branch>::
|
||||
Create a new unborn branch, named `<new-branch>`, started from
|
||||
`<start-point>` and switch to it. The first commit made on this
|
||||
new branch will have no parents and it will be the root of a new
|
||||
history totally disconnected from all the other branches and
|
||||
commits.
|
||||
+
|
||||
The index and the working tree are adjusted as if you had previously run
|
||||
`git checkout <start-point>`. This allows you to start a new history
|
||||
that records a set of paths similar to _<start-point>_ by easily running
|
||||
that records a set of paths similar to `<start-point>` by easily running
|
||||
`git commit -a` to make the root commit.
|
||||
+
|
||||
This can be useful when you want to publish the tree from a commit
|
||||
@ -232,20 +235,20 @@ whose full history contains proprietary or otherwise encumbered bits of
|
||||
code.
|
||||
+
|
||||
If you want to start a disconnected history that records a set of paths
|
||||
that is totally different from the one of _<start-point>_, then you should
|
||||
that is totally different from the one of `<start-point>`, then you should
|
||||
clear the index and the working tree right after creating the orphan
|
||||
branch by running `git rm -rf .` from the top level of the working tree.
|
||||
Afterwards you will be ready to prepare your new files, repopulating the
|
||||
working tree, by copying them from elsewhere, extracting a tarball, etc.
|
||||
|
||||
`--ignore-skip-worktree-bits`::
|
||||
In sparse checkout mode, `git checkout -- <path>...` would
|
||||
update only entries matched by _<paths>_ and sparse patterns
|
||||
--ignore-skip-worktree-bits::
|
||||
In sparse checkout mode, `git checkout -- <paths>` would
|
||||
update only entries matched by `<paths>` and sparse patterns
|
||||
in `$GIT_DIR/info/sparse-checkout`. This option ignores
|
||||
the sparse patterns and adds back any files in `<path>...`.
|
||||
the sparse patterns and adds back any files in `<paths>`.
|
||||
|
||||
`-m`::
|
||||
`--merge`::
|
||||
-m::
|
||||
--merge::
|
||||
When switching branches,
|
||||
if you have local modifications to one or more files that
|
||||
are different between the current branch and the branch to
|
||||
@ -266,42 +269,40 @@ used when checking out paths from a tree-ish.
|
||||
+
|
||||
When switching branches with `--merge`, staged changes may be lost.
|
||||
|
||||
`--conflict=<style>`::
|
||||
--conflict=<style>::
|
||||
The same as `--merge` option above, but changes the way the
|
||||
conflicting hunks are presented, overriding the
|
||||
`merge.conflictStyle` configuration variable. Possible values are
|
||||
`merge` (default), `diff3`, and `zdiff3`.
|
||||
"merge" (default), "diff3", and "zdiff3".
|
||||
|
||||
`-p`::
|
||||
`--patch`::
|
||||
-p::
|
||||
--patch::
|
||||
Interactively select hunks in the difference between the
|
||||
_<tree-ish>_ (or the index, if unspecified) and the working
|
||||
`<tree-ish>` (or the index, if unspecified) and the working
|
||||
tree. The chosen hunks are then applied in reverse to the
|
||||
working tree (and if a _<tree-ish>_ was specified, the index).
|
||||
working tree (and if a `<tree-ish>` was specified, the index).
|
||||
+
|
||||
This means that you can use `git checkout -p` to selectively discard
|
||||
edits from your current working tree. See the "Interactive Mode"
|
||||
edits from your current working tree. See the ``Interactive Mode''
|
||||
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`::
|
||||
--ignore-other-worktrees::
|
||||
`git checkout` refuses when the wanted branch is already checked
|
||||
out or otherwise in use by another worktree. This option makes
|
||||
it check the branch out anyway. In other words, the branch can
|
||||
be in use by more than one worktree.
|
||||
|
||||
`--overwrite-ignore`::
|
||||
`--no-overwrite-ignore`::
|
||||
--overwrite-ignore::
|
||||
--no-overwrite-ignore::
|
||||
Silently overwrite ignored files when switching branches. This
|
||||
is the default behavior. Use `--no-overwrite-ignore` to abort
|
||||
the operation when the new branch contains ignored files.
|
||||
|
||||
`--recurse-submodules`::
|
||||
`--no-recurse-submodules`::
|
||||
--recurse-submodules::
|
||||
--no-recurse-submodules::
|
||||
Using `--recurse-submodules` will update the content of all active
|
||||
submodules according to the commit recorded in the superproject. If
|
||||
local modifications in a submodule would be overwritten the checkout
|
||||
@ -310,28 +311,28 @@ include::diff-context-options.adoc[]
|
||||
Just like linkgit:git-submodule[1], this will detach `HEAD` of the
|
||||
submodule.
|
||||
|
||||
`--overlay`::
|
||||
`--no-overlay`::
|
||||
--overlay::
|
||||
--no-overlay::
|
||||
In the default overlay mode, `git checkout` never
|
||||
removes files from the index or the working tree. When
|
||||
specifying `--no-overlay`, files that appear in the index and
|
||||
working tree, but not in _<tree-ish>_ are removed, to make them
|
||||
match _<tree-ish>_ exactly.
|
||||
working tree, but not in `<tree-ish>` are removed, to make them
|
||||
match `<tree-ish>` exactly.
|
||||
|
||||
`--pathspec-from-file=<file>`::
|
||||
Pathspec is passed in _<file>_ instead of commandline args. If
|
||||
_<file>_ is exactly `-` then standard input is used. Pathspec
|
||||
elements are separated by _LF_ or _CR_/_LF_. Pathspec elements can be
|
||||
--pathspec-from-file=<file>::
|
||||
Pathspec is passed in `<file>` instead of commandline args. If
|
||||
`<file>` is exactly `-` then standard input is used. Pathspec
|
||||
elements are separated by LF or CR/LF. Pathspec elements can be
|
||||
quoted as explained for the configuration variable `core.quotePath`
|
||||
(see linkgit:git-config[1]). See also `--pathspec-file-nul` and
|
||||
global `--literal-pathspecs`.
|
||||
|
||||
`--pathspec-file-nul`::
|
||||
--pathspec-file-nul::
|
||||
Only meaningful with `--pathspec-from-file`. Pathspec elements are
|
||||
separated with _NUL_ character and all other characters are taken
|
||||
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
|
||||
@ -342,33 +343,33 @@ You can use the `@{-N}` syntax to refer to the N-th last
|
||||
branch/commit checked out using "git checkout" operation. You may
|
||||
also specify `-` which is synonymous to `@{-1}`.
|
||||
+
|
||||
As a special case, you may use `<rev-a>...<rev-b>` as a shortcut for the
|
||||
merge base of _<rev-a>_ and _<rev-b>_ if there is exactly one merge base. You can
|
||||
leave out at most one of _<rev-a>_ and _<rev-b>_, in which case it defaults to `HEAD`.
|
||||
As a special case, you may use `A...B` as a shortcut for the
|
||||
merge base of `A` and `B` if there is exactly one merge base. You can
|
||||
leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
|
||||
_<new-branch>_::
|
||||
<new-branch>::
|
||||
Name for the new branch.
|
||||
|
||||
_<start-point>_::
|
||||
<start-point>::
|
||||
The name of a commit at which to start the new branch; see
|
||||
linkgit:git-branch[1] for details. Defaults to `HEAD`.
|
||||
+
|
||||
As a special case, you may use `<rev-a>...<rev-b>` as a shortcut for the
|
||||
merge base of _<rev-a>_ and _<rev-b>_ if there is exactly one merge base. You can
|
||||
leave out at most one of _<rev-a>_ and _<rev-b>_, in which case it defaults to `HEAD`.
|
||||
As a special case, you may use `"A...B"` as a shortcut for the
|
||||
merge base of `A` and `B` if there is exactly one merge base. You can
|
||||
leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
|
||||
_<tree-ish>_::
|
||||
<tree-ish>::
|
||||
Tree to checkout from (when paths are given). If not specified,
|
||||
the index will be used.
|
||||
+
|
||||
As a special case, you may use `<rev-a>...<rev-b>` as a shortcut for the
|
||||
merge base of _<rev-a>_ and _<rev-b>_ if there is exactly one merge base. You can
|
||||
leave out at most one of _<rev-a>_ and _<rev-b>_, in which case it defaults to `HEAD`.
|
||||
As a special case, you may use `"A...B"` as a shortcut for the
|
||||
merge base of `A` and `B` if there is exactly one merge base. You can
|
||||
leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
|
||||
|
||||
`--`::
|
||||
\--::
|
||||
Do not interpret any more arguments as options.
|
||||
|
||||
`<pathspec>...`::
|
||||
<pathspec>...::
|
||||
Limits the paths affected by the operation.
|
||||
+
|
||||
For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
|
||||
@ -390,7 +391,7 @@ a---b---c branch 'master' (refers to commit 'c')
|
||||
------------
|
||||
|
||||
When a commit is created in this state, the branch is updated to refer to
|
||||
the new commit. Specifically, `git commit` creates a new commit `d`, whose
|
||||
the new commit. Specifically, 'git commit' creates a new commit `d`, whose
|
||||
parent is commit `c`, and then updates branch `master` to refer to new
|
||||
commit `d`. `HEAD` still refers to branch `master` and so indirectly now refers
|
||||
to commit `d`:
|
||||
@ -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
|
||||
|
||||
@ -50,7 +50,6 @@ EXAMPLES
|
||||
--------
|
||||
|
||||
Format data by columns:
|
||||
|
||||
------------
|
||||
$ seq 1 24 | git column --mode=column --padding=5
|
||||
1 4 7 10 13 16 19 22
|
||||
@ -59,7 +58,6 @@ $ seq 1 24 | git column --mode=column --padding=5
|
||||
------------
|
||||
|
||||
Format data by rows:
|
||||
|
||||
------------
|
||||
$ seq 1 21 | git column --mode=row --padding=5
|
||||
1 2 3 4 5 6 7
|
||||
@ -68,7 +66,6 @@ $ seq 1 21 | git column --mode=row --padding=5
|
||||
------------
|
||||
|
||||
List some tags in a table with unequal column widths:
|
||||
|
||||
------------
|
||||
$ git tag --list 'v2.4.*' --column=row,dense
|
||||
v2.4.0 v2.4.0-rc0 v2.4.0-rc1 v2.4.0-rc2 v2.4.0-rc3
|
||||
|
||||
@ -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
|
||||
|
||||
@ -125,11 +125,9 @@ creation in your platform (e.g. mkpasswd in Linux, encrypt in OpenBSD or
|
||||
pwhash in NetBSD) and paste it in the right location.
|
||||
|
||||
Then provide your password via the pserver method, for example:
|
||||
|
||||
------
|
||||
cvs -d:pserver:someuser:somepassword@server:/path/repo.git co <HEAD_name>
|
||||
------
|
||||
|
||||
No special setup is needed for SSH access, other than having Git tools
|
||||
in the PATH. If you have clients that do not accept the CVS_SERVER
|
||||
environment variable, you can rename 'git-cvsserver' to `cvs`.
|
||||
@ -140,7 +138,6 @@ CVS_SERVER directly in CVSROOT like
|
||||
------
|
||||
cvs -d ":ext;CVS_SERVER=git cvsserver:user@server/path/repo.git" co <HEAD_name>
|
||||
------
|
||||
|
||||
This has the advantage that it will be saved in your 'CVS/Root' files and
|
||||
you don't need to worry about always setting the correct environment
|
||||
variable. SSH users restricted to 'git-shell' don't need to override the default
|
||||
@ -171,7 +168,6 @@ All configuration variables can also be overridden for a specific method of
|
||||
access. Valid method names are "ext" (for SSH access) and "pserver". The
|
||||
following example configuration would disable pserver access while still
|
||||
allowing access over SSH.
|
||||
|
||||
------
|
||||
[gitcvs]
|
||||
enabled=0
|
||||
|
||||
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