Compare commits
56 Commits
v2.35.0-rc
...
v2.33.5
Author | SHA1 | Date | |
---|---|---|---|
7800e1dccf | |||
3957f3c84e | |||
af778cd9be | |||
9cbd2827c5 | |||
ecf9b4a443 | |||
122512967e | |||
abd4d67ab0 | |||
067aa8fb41 | |||
4a7dab5ce4 | |||
0ca6ead81e | |||
71ad7fe1bc | |||
32696a4cbe | |||
a1d4f67c12 | |||
f4a32a550f | |||
0d3beb71da | |||
0f21b8f468 | |||
225d2d50cc | |||
ac7e57fa28 | |||
f8d510ed0b | |||
99f4abb8da | |||
8a96dbcb33 | |||
7de0c306f7 | |||
6f054f9fb3 | |||
80c525c4ac | |||
eebfde3f21 | |||
656d9a24f6 | |||
fc0c773028 | |||
5b1c746c35 | |||
2f8809f9a1 | |||
88b7be68a4 | |||
3b0bf27049 | |||
b779214eaf | |||
6b11e3d52e | |||
b9063afda1 | |||
ae9abbb63e | |||
5f1a3fec8c | |||
1f65dd6ae6 | |||
1530434434 | |||
09f66d65f8 | |||
17083c79ae | |||
0f85c4a30b | |||
bb50ec3cc3 | |||
e47363e5a8 | |||
87ed4fc046 | |||
303b876f76 | |||
9bcd7a8eca | |||
201b0c7af6 | |||
44de39c45c | |||
6a2381a3e5 | |||
cb95038137 | |||
fdcad5a53e | |||
8959555cee | |||
bdc77d1d68 | |||
2a9a5862e5 | |||
6e7ad1e4c2 | |||
898225ba04 |
5
.github/workflows/check-whitespace.yml
vendored
5
.github/workflows/check-whitespace.yml
vendored
@ -1,9 +1,8 @@
|
|||||||
name: check-whitespace
|
name: check-whitespace
|
||||||
|
|
||||||
# Get the repository with all commits to ensure that we can analyze
|
# Get the repo with the commits(+1) in the series.
|
||||||
# all of the commits contributed via the Pull Request.
|
|
||||||
# Process `git log --check` output to extract just the check errors.
|
# Process `git log --check` output to extract just the check errors.
|
||||||
# Exit with failure upon white-space issues.
|
# Add a comment to the pull request with the check errors.
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
|
105
.github/workflows/l10n.yml
vendored
105
.github/workflows/l10n.yml
vendored
@ -1,105 +0,0 @@
|
|||||||
name: git-l10n
|
|
||||||
|
|
||||||
on: [push, pull_request_target]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
git-po-helper:
|
|
||||||
if: >-
|
|
||||||
endsWith(github.repository, '/git-po') ||
|
|
||||||
contains(github.head_ref, 'l10n') ||
|
|
||||||
contains(github.ref, 'l10n')
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- name: Setup base and head objects
|
|
||||||
id: setup-tips
|
|
||||||
run: |
|
|
||||||
if test "${{ github.event_name }}" = "pull_request_target"
|
|
||||||
then
|
|
||||||
base=${{ github.event.pull_request.base.sha }}
|
|
||||||
head=${{ github.event.pull_request.head.sha }}
|
|
||||||
else
|
|
||||||
base=${{ github.event.before }}
|
|
||||||
head=${{ github.event.after }}
|
|
||||||
fi
|
|
||||||
echo "::set-output name=base::$base"
|
|
||||||
echo "::set-output name=head::$head"
|
|
||||||
- name: Run partial clone
|
|
||||||
run: |
|
|
||||||
git -c init.defaultBranch=master init --bare .
|
|
||||||
git remote add \
|
|
||||||
--mirror=fetch \
|
|
||||||
origin \
|
|
||||||
https://github.com/${{ github.repository }}
|
|
||||||
# Fetch tips that may be unreachable from github.ref:
|
|
||||||
# - For a forced push, "$base" may be unreachable.
|
|
||||||
# - For a "pull_request_target" event, "$head" may be unreachable.
|
|
||||||
args=
|
|
||||||
for commit in \
|
|
||||||
${{ steps.setup-tips.outputs.base }} \
|
|
||||||
${{ steps.setup-tips.outputs.head }}
|
|
||||||
do
|
|
||||||
case $commit in
|
|
||||||
*[^0]*)
|
|
||||||
args="$args $commit"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# Should not fetch ZERO-OID.
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
git -c protocol.version=2 fetch \
|
|
||||||
--progress \
|
|
||||||
--no-tags \
|
|
||||||
--no-write-fetch-head \
|
|
||||||
--filter=blob:none \
|
|
||||||
origin \
|
|
||||||
${{ github.ref }} \
|
|
||||||
$args
|
|
||||||
- uses: actions/setup-go@v2
|
|
||||||
with:
|
|
||||||
go-version: '>=1.16'
|
|
||||||
- name: Install git-po-helper
|
|
||||||
run: go install github.com/git-l10n/git-po-helper@main
|
|
||||||
- name: Install other dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -q &&
|
|
||||||
sudo apt-get install -q -y gettext
|
|
||||||
- name: Run git-po-helper
|
|
||||||
id: check-commits
|
|
||||||
run: |
|
|
||||||
exit_code=0
|
|
||||||
git-po-helper check-commits \
|
|
||||||
--github-action-event="${{ github.event_name }}" -- \
|
|
||||||
${{ steps.setup-tips.outputs.base }}..${{ steps.setup-tips.outputs.head }} \
|
|
||||||
>git-po-helper.out 2>&1 || exit_code=$?
|
|
||||||
if test $exit_code -ne 0 || grep -q WARNING git-po-helper.out
|
|
||||||
then
|
|
||||||
# Remove ANSI colors which are proper for console logs but not
|
|
||||||
# proper for PR comment.
|
|
||||||
echo "COMMENT_BODY<<EOF" >>$GITHUB_ENV
|
|
||||||
perl -pe 's/\e\[[0-9;]*m//g; s/\bEOF$//g' git-po-helper.out >>$GITHUB_ENV
|
|
||||||
echo "EOF" >>$GITHUB_ENV
|
|
||||||
fi
|
|
||||||
cat git-po-helper.out
|
|
||||||
exit $exit_code
|
|
||||||
- name: Create comment in pull request for report
|
|
||||||
uses: mshick/add-pr-comment@v1
|
|
||||||
if: >-
|
|
||||||
always() &&
|
|
||||||
github.event_name == 'pull_request_target' &&
|
|
||||||
env.COMMENT_BODY != ''
|
|
||||||
with:
|
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
repo-token-user-login: 'github-actions[bot]'
|
|
||||||
message: >
|
|
||||||
${{ steps.check-commits.outcome == 'failure' && 'Errors and warnings' || 'Warnings' }}
|
|
||||||
found by [git-po-helper](https://github.com/git-l10n/git-po-helper#readme) in workflow
|
|
||||||
[#${{ github.run_number }}](${{ env.GITHUB_SERVER_URL }}/${{ github.repository }}/actions/runs/${{ github.run_id }}):
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
${{ env.COMMENT_BODY }}
|
|
||||||
|
|
||||||
```
|
|
37
.github/workflows/main.yml
vendored
37
.github/workflows/main.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: CI
|
name: CI/PR
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
@ -7,7 +7,6 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ci-config:
|
ci-config:
|
||||||
name: config
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
|
enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }}
|
||||||
@ -78,7 +77,6 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
windows-build:
|
windows-build:
|
||||||
name: win build
|
|
||||||
needs: ci-config
|
needs: ci-config
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
@ -90,7 +88,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
HOME: ${{runner.workspace}}
|
HOME: ${{runner.workspace}}
|
||||||
NO_PERL: 1
|
NO_PERL: 1
|
||||||
run: . /etc/profile && ci/make-test-artifacts.sh artifacts
|
run: ci/make-test-artifacts.sh artifacts
|
||||||
- name: zip up tracked files
|
- name: zip up tracked files
|
||||||
run: git archive -o artifacts/tracked.tar.gz HEAD
|
run: git archive -o artifacts/tracked.tar.gz HEAD
|
||||||
- name: upload tracked files and build artifacts
|
- name: upload tracked files and build artifacts
|
||||||
@ -99,7 +97,6 @@ jobs:
|
|||||||
name: windows-artifacts
|
name: windows-artifacts
|
||||||
path: artifacts
|
path: artifacts
|
||||||
windows-test:
|
windows-test:
|
||||||
name: win test
|
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
needs: [windows-build]
|
needs: [windows-build]
|
||||||
strategy:
|
strategy:
|
||||||
@ -118,7 +115,7 @@ jobs:
|
|||||||
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
- uses: git-for-windows/setup-git-for-windows-sdk@v1
|
||||||
- name: test
|
- name: test
|
||||||
shell: bash
|
shell: bash
|
||||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
run: ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||||
- name: ci/print-test-failures.sh
|
- name: ci/print-test-failures.sh
|
||||||
if: failure()
|
if: failure()
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -130,7 +127,6 @@ jobs:
|
|||||||
name: failed-tests-windows
|
name: failed-tests-windows
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
vs-build:
|
vs-build:
|
||||||
name: win+VS build
|
|
||||||
needs: ci-config
|
needs: ci-config
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
env:
|
env:
|
||||||
@ -182,7 +178,6 @@ jobs:
|
|||||||
name: vs-artifacts
|
name: vs-artifacts
|
||||||
path: artifacts
|
path: artifacts
|
||||||
vs-test:
|
vs-test:
|
||||||
name: win+VS test
|
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
needs: vs-build
|
needs: vs-build
|
||||||
strategy:
|
strategy:
|
||||||
@ -203,7 +198,8 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
NO_SVN_TESTS: 1
|
NO_SVN_TESTS: 1
|
||||||
run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
|
GIT_TEST_SKIP_REBASE_P: 1
|
||||||
|
run: ci/run-test-slice.sh ${{matrix.nr}} 10
|
||||||
- name: ci/print-test-failures.sh
|
- name: ci/print-test-failures.sh
|
||||||
if: failure()
|
if: failure()
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -215,7 +211,6 @@ jobs:
|
|||||||
name: failed-tests-windows
|
name: failed-tests-windows
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
regular:
|
regular:
|
||||||
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})
|
|
||||||
needs: ci-config
|
needs: ci-config
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
strategy:
|
strategy:
|
||||||
@ -225,37 +220,21 @@ jobs:
|
|||||||
- jobname: linux-clang
|
- jobname: linux-clang
|
||||||
cc: clang
|
cc: clang
|
||||||
pool: ubuntu-latest
|
pool: ubuntu-latest
|
||||||
- jobname: linux-sha256
|
|
||||||
cc: clang
|
|
||||||
os: ubuntu
|
|
||||||
pool: ubuntu-latest
|
|
||||||
- jobname: linux-gcc
|
- jobname: linux-gcc
|
||||||
cc: gcc
|
cc: gcc
|
||||||
cc_package: gcc-8
|
|
||||||
pool: ubuntu-latest
|
|
||||||
- jobname: linux-TEST-vars
|
|
||||||
cc: gcc
|
|
||||||
os: ubuntu
|
|
||||||
cc_package: gcc-8
|
|
||||||
pool: ubuntu-latest
|
pool: ubuntu-latest
|
||||||
- jobname: osx-clang
|
- jobname: osx-clang
|
||||||
cc: clang
|
cc: clang
|
||||||
pool: macos-latest
|
pool: macos-latest
|
||||||
- jobname: osx-gcc
|
- jobname: osx-gcc
|
||||||
cc: gcc
|
cc: gcc
|
||||||
cc_package: gcc-9
|
|
||||||
pool: macos-latest
|
pool: macos-latest
|
||||||
- jobname: linux-gcc-default
|
- jobname: linux-gcc-default
|
||||||
cc: gcc
|
cc: gcc
|
||||||
pool: ubuntu-latest
|
pool: ubuntu-latest
|
||||||
- jobname: linux-leaks
|
|
||||||
cc: gcc
|
|
||||||
pool: ubuntu-latest
|
|
||||||
env:
|
env:
|
||||||
CC: ${{matrix.vector.cc}}
|
CC: ${{matrix.vector.cc}}
|
||||||
CC_PACKAGE: ${{matrix.vector.cc_package}}
|
|
||||||
jobname: ${{matrix.vector.jobname}}
|
jobname: ${{matrix.vector.jobname}}
|
||||||
runs_on_pool: ${{matrix.vector.pool}}
|
|
||||||
runs-on: ${{matrix.vector.pool}}
|
runs-on: ${{matrix.vector.pool}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@ -270,7 +249,6 @@ jobs:
|
|||||||
name: failed-tests-${{matrix.vector.jobname}}
|
name: failed-tests-${{matrix.vector.jobname}}
|
||||||
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
path: ${{env.FAILED_TEST_ARTIFACTS}}
|
||||||
dockerized:
|
dockerized:
|
||||||
name: ${{matrix.vector.jobname}} (${{matrix.vector.image}})
|
|
||||||
needs: ci-config
|
needs: ci-config
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
strategy:
|
strategy:
|
||||||
@ -279,8 +257,7 @@ jobs:
|
|||||||
vector:
|
vector:
|
||||||
- jobname: linux-musl
|
- jobname: linux-musl
|
||||||
image: alpine
|
image: alpine
|
||||||
- jobname: linux32
|
- jobname: Linux32
|
||||||
os: ubuntu32
|
|
||||||
image: daald/ubuntu32:xenial
|
image: daald/ubuntu32:xenial
|
||||||
- jobname: pedantic
|
- jobname: pedantic
|
||||||
image: fedora
|
image: fedora
|
||||||
@ -310,7 +287,6 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: ci/install-dependencies.sh
|
- run: ci/install-dependencies.sh
|
||||||
- run: ci/run-static-analysis.sh
|
- run: ci/run-static-analysis.sh
|
||||||
- run: ci/check-directional-formatting.bash
|
|
||||||
sparse:
|
sparse:
|
||||||
needs: ci-config
|
needs: ci-config
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
@ -332,7 +308,6 @@ jobs:
|
|||||||
run: ci/install-dependencies.sh
|
run: ci/install-dependencies.sh
|
||||||
- run: make sparse
|
- run: make sparse
|
||||||
documentation:
|
documentation:
|
||||||
name: documentation
|
|
||||||
needs: ci-config
|
needs: ci-config
|
||||||
if: needs.ci-config.outputs.enabled == 'yes'
|
if: needs.ci-config.outputs.enabled == 'yes'
|
||||||
env:
|
env:
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -125,6 +125,7 @@
|
|||||||
/git-range-diff
|
/git-range-diff
|
||||||
/git-read-tree
|
/git-read-tree
|
||||||
/git-rebase
|
/git-rebase
|
||||||
|
/git-rebase--preserve-merges
|
||||||
/git-receive-pack
|
/git-receive-pack
|
||||||
/git-reflog
|
/git-reflog
|
||||||
/git-remote
|
/git-remote
|
||||||
@ -189,7 +190,6 @@
|
|||||||
/gitweb/static/gitweb.min.*
|
/gitweb/static/gitweb.min.*
|
||||||
/config-list.h
|
/config-list.h
|
||||||
/command-list.h
|
/command-list.h
|
||||||
/hook-list.h
|
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
*.dsc
|
*.dsc
|
||||||
*.deb
|
*.deb
|
||||||
@ -224,7 +224,6 @@
|
|||||||
*.lib
|
*.lib
|
||||||
*.res
|
*.res
|
||||||
*.sln
|
*.sln
|
||||||
*.sp
|
|
||||||
*.suo
|
*.suo
|
||||||
*.ncb
|
*.ncb
|
||||||
*.vcproj
|
*.vcproj
|
||||||
|
60
.travis.yml
Normal file
60
.travis.yml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
language: c
|
||||||
|
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/travis-cache
|
||||||
|
|
||||||
|
os:
|
||||||
|
- linux
|
||||||
|
- osx
|
||||||
|
|
||||||
|
osx_image: xcode10.1
|
||||||
|
|
||||||
|
compiler:
|
||||||
|
- clang
|
||||||
|
- gcc
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- env: jobname=linux-gcc-default
|
||||||
|
os: linux
|
||||||
|
compiler:
|
||||||
|
addons:
|
||||||
|
before_install:
|
||||||
|
- env: jobname=linux-gcc-4.8
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler:
|
||||||
|
- env: jobname=Linux32
|
||||||
|
os: linux
|
||||||
|
compiler:
|
||||||
|
addons:
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
before_install:
|
||||||
|
script: ci/run-docker.sh
|
||||||
|
- env: jobname=linux-musl
|
||||||
|
os: linux
|
||||||
|
compiler:
|
||||||
|
addons:
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
before_install:
|
||||||
|
script: ci/run-docker.sh
|
||||||
|
- env: jobname=StaticAnalysis
|
||||||
|
os: linux
|
||||||
|
compiler:
|
||||||
|
script: ci/run-static-analysis.sh
|
||||||
|
after_failure:
|
||||||
|
- env: jobname=Documentation
|
||||||
|
os: linux
|
||||||
|
compiler:
|
||||||
|
script: ci/test-documentation.sh
|
||||||
|
after_failure:
|
||||||
|
|
||||||
|
before_install: ci/install-dependencies.sh
|
||||||
|
script: ci/run-build-and-tests.sh
|
||||||
|
after_failure: ci/print-test-failures.sh
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email: false
|
1
Documentation/.gitignore
vendored
1
Documentation/.gitignore
vendored
@ -14,5 +14,4 @@ manpage-base-url.xsl
|
|||||||
SubmittingPatches.txt
|
SubmittingPatches.txt
|
||||||
tmp-doc-diff/
|
tmp-doc-diff/
|
||||||
GIT-ASCIIDOCFLAGS
|
GIT-ASCIIDOCFLAGS
|
||||||
/.build/
|
|
||||||
/GIT-EXCLUDED-PROGRAMS
|
/GIT-EXCLUDED-PROGRAMS
|
||||||
|
@ -499,33 +499,6 @@ For Python scripts:
|
|||||||
- Where required libraries do not restrict us to Python 2, we try to
|
- Where required libraries do not restrict us to Python 2, we try to
|
||||||
also be compatible with Python 3.1 and later.
|
also be compatible with Python 3.1 and later.
|
||||||
|
|
||||||
|
|
||||||
Program Output
|
|
||||||
|
|
||||||
We make a distinction between a Git command's primary output and
|
|
||||||
output which is merely chatty feedback (for instance, status
|
|
||||||
messages, running transcript, or progress display), as well as error
|
|
||||||
messages. Roughly speaking, a Git command's primary output is that
|
|
||||||
which one might want to capture to a file or send down a pipe; its
|
|
||||||
chatty output should not interfere with these use-cases.
|
|
||||||
|
|
||||||
As such, primary output should be sent to the standard output stream
|
|
||||||
(stdout), and chatty output should be sent to the standard error
|
|
||||||
stream (stderr). Examples of commands which produce primary output
|
|
||||||
include `git log`, `git show`, and `git branch --list` which generate
|
|
||||||
output on the stdout stream.
|
|
||||||
|
|
||||||
Not all Git commands have primary output; this is often true of
|
|
||||||
commands whose main function is to perform an action. Some action
|
|
||||||
commands are silent, whereas others are chatty. An example of a
|
|
||||||
chatty action commands is `git clone` with its "Cloning into
|
|
||||||
'<path>'..." and "Checking connectivity..." status messages which it
|
|
||||||
sends to the stderr stream.
|
|
||||||
|
|
||||||
Error messages from Git commands should always be sent to the stderr
|
|
||||||
stream.
|
|
||||||
|
|
||||||
|
|
||||||
Error Messages
|
Error Messages
|
||||||
|
|
||||||
- Do not end error messages with a full stop.
|
- Do not end error messages with a full stop.
|
||||||
|
@ -90,7 +90,6 @@ SP_ARTICLES += $(API_DOCS)
|
|||||||
TECH_DOCS += MyFirstContribution
|
TECH_DOCS += MyFirstContribution
|
||||||
TECH_DOCS += MyFirstObjectWalk
|
TECH_DOCS += MyFirstObjectWalk
|
||||||
TECH_DOCS += SubmittingPatches
|
TECH_DOCS += SubmittingPatches
|
||||||
TECH_DOCS += technical/bundle-format
|
|
||||||
TECH_DOCS += technical/hash-function-transition
|
TECH_DOCS += technical/hash-function-transition
|
||||||
TECH_DOCS += technical/http-protocol
|
TECH_DOCS += technical/http-protocol
|
||||||
TECH_DOCS += technical/index-format
|
TECH_DOCS += technical/index-format
|
||||||
@ -226,7 +225,6 @@ endif
|
|||||||
|
|
||||||
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
||||||
ifndef V
|
ifndef V
|
||||||
QUIET = @
|
|
||||||
QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;
|
QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;
|
||||||
QUIET_XMLTO = @echo ' ' XMLTO $@;
|
QUIET_XMLTO = @echo ' ' XMLTO $@;
|
||||||
QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;
|
QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;
|
||||||
@ -234,15 +232,11 @@ ifndef V
|
|||||||
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
||||||
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
||||||
QUIET_GEN = @echo ' ' GEN $@;
|
QUIET_GEN = @echo ' ' GEN $@;
|
||||||
|
QUIET_LINT = @echo ' ' LINT $@;
|
||||||
QUIET_STDERR = 2> /dev/null
|
QUIET_STDERR = 2> /dev/null
|
||||||
QUIET_SUBDIR0 = +@subdir=
|
QUIET_SUBDIR0 = +@subdir=
|
||||||
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
||||||
$(MAKE) $(PRINT_DIR) -C $$subdir
|
$(MAKE) $(PRINT_DIR) -C $$subdir
|
||||||
|
|
||||||
QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<;
|
|
||||||
QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<;
|
|
||||||
QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<;
|
|
||||||
|
|
||||||
export V
|
export V
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -290,7 +284,7 @@ install-html: html
|
|||||||
../GIT-VERSION-FILE: FORCE
|
../GIT-VERSION-FILE: FORCE
|
||||||
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
||||||
|
|
||||||
ifneq ($(filter-out lint-docs clean,$(MAKECMDGOALS)),)
|
ifneq ($(MAKECMDGOALS),clean)
|
||||||
-include ../GIT-VERSION-FILE
|
-include ../GIT-VERSION-FILE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -349,7 +343,6 @@ GIT-ASCIIDOCFLAGS: FORCE
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -rf .build/
|
|
||||||
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
||||||
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
||||||
$(RM) *.pdf
|
$(RM) *.pdf
|
||||||
@ -463,61 +456,14 @@ quick-install-html: require-htmlrepo
|
|||||||
print-man1:
|
print-man1:
|
||||||
@for i in $(MAN1_TXT); do echo $$i; done
|
@for i in $(MAN1_TXT); do echo $$i; done
|
||||||
|
|
||||||
## Lint: Common
|
lint-docs::
|
||||||
.build:
|
$(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl \
|
||||||
$(QUIET)mkdir $@
|
|
||||||
.build/lint-docs: | .build
|
|
||||||
$(QUIET)mkdir $@
|
|
||||||
|
|
||||||
## Lint: gitlink
|
|
||||||
.build/lint-docs/gitlink: | .build/lint-docs
|
|
||||||
$(QUIET)mkdir $@
|
|
||||||
.build/lint-docs/gitlink/howto: | .build/lint-docs/gitlink
|
|
||||||
$(QUIET)mkdir $@
|
|
||||||
.build/lint-docs/gitlink/config: | .build/lint-docs/gitlink
|
|
||||||
$(QUIET)mkdir $@
|
|
||||||
LINT_DOCS_GITLINK = $(patsubst %.txt,.build/lint-docs/gitlink/%.ok,$(HOWTO_TXT) $(DOC_DEP_TXT))
|
|
||||||
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink
|
|
||||||
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/howto
|
|
||||||
$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/config
|
|
||||||
$(LINT_DOCS_GITLINK): lint-gitlink.perl
|
|
||||||
$(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt
|
|
||||||
$(QUIET_LINT_GITLINK)$(PERL_PATH) lint-gitlink.perl \
|
|
||||||
$< \
|
|
||||||
$(HOWTO_TXT) $(DOC_DEP_TXT) \
|
$(HOWTO_TXT) $(DOC_DEP_TXT) \
|
||||||
--section=1 $(MAN1_TXT) \
|
--section=1 $(MAN1_TXT) \
|
||||||
--section=5 $(MAN5_TXT) \
|
--section=5 $(MAN5_TXT) \
|
||||||
--section=7 $(MAN7_TXT) >$@
|
--section=7 $(MAN7_TXT); \
|
||||||
.PHONY: lint-docs-gitlink
|
$(PERL_PATH) lint-man-end-blurb.perl $(MAN_TXT); \
|
||||||
lint-docs-gitlink: $(LINT_DOCS_GITLINK)
|
$(PERL_PATH) lint-man-section-order.perl $(MAN_TXT);
|
||||||
|
|
||||||
## Lint: man-end-blurb
|
|
||||||
.build/lint-docs/man-end-blurb: | .build/lint-docs
|
|
||||||
$(QUIET)mkdir $@
|
|
||||||
LINT_DOCS_MAN_END_BLURB = $(patsubst %.txt,.build/lint-docs/man-end-blurb/%.ok,$(MAN_TXT))
|
|
||||||
$(LINT_DOCS_MAN_END_BLURB): | .build/lint-docs/man-end-blurb
|
|
||||||
$(LINT_DOCS_MAN_END_BLURB): lint-man-end-blurb.perl
|
|
||||||
$(LINT_DOCS_MAN_END_BLURB): .build/lint-docs/man-end-blurb/%.ok: %.txt
|
|
||||||
$(QUIET_LINT_MANEND)$(PERL_PATH) lint-man-end-blurb.perl $< >$@
|
|
||||||
.PHONY: lint-docs-man-end-blurb
|
|
||||||
lint-docs-man-end-blurb: $(LINT_DOCS_MAN_END_BLURB)
|
|
||||||
|
|
||||||
## Lint: man-section-order
|
|
||||||
.build/lint-docs/man-section-order: | .build/lint-docs
|
|
||||||
$(QUIET)mkdir $@
|
|
||||||
LINT_DOCS_MAN_SECTION_ORDER = $(patsubst %.txt,.build/lint-docs/man-section-order/%.ok,$(MAN_TXT))
|
|
||||||
$(LINT_DOCS_MAN_SECTION_ORDER): | .build/lint-docs/man-section-order
|
|
||||||
$(LINT_DOCS_MAN_SECTION_ORDER): lint-man-section-order.perl
|
|
||||||
$(LINT_DOCS_MAN_SECTION_ORDER): .build/lint-docs/man-section-order/%.ok: %.txt
|
|
||||||
$(QUIET_LINT_MANSEC)$(PERL_PATH) lint-man-section-order.perl $< >$@
|
|
||||||
.PHONY: lint-docs-man-section-order
|
|
||||||
lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER)
|
|
||||||
|
|
||||||
## Lint: list of targets above
|
|
||||||
.PHONY: lint-docs
|
|
||||||
lint-docs: lint-docs-gitlink
|
|
||||||
lint-docs: lint-docs-man-end-blurb
|
|
||||||
lint-docs: lint-docs-man-section-order
|
|
||||||
|
|
||||||
ifeq ($(wildcard po/Makefile),po/Makefile)
|
ifeq ($(wildcard po/Makefile),po/Makefile)
|
||||||
doc-l10n install-l10n::
|
doc-l10n install-l10n::
|
||||||
|
@ -905,34 +905,19 @@ Sending emails with Git is a two-part process; before you can prepare the emails
|
|||||||
themselves, you'll need to prepare the patches. Luckily, this is pretty simple:
|
themselves, you'll need to prepare the patches. Luckily, this is pretty simple:
|
||||||
|
|
||||||
----
|
----
|
||||||
$ git format-patch --cover-letter -o psuh/ --base=auto psuh@{u}..psuh
|
$ git format-patch --cover-letter -o psuh/ master..psuh
|
||||||
----
|
----
|
||||||
|
|
||||||
. The `--cover-letter` option tells `format-patch` to create a
|
The `--cover-letter` parameter tells `format-patch` to create a cover letter
|
||||||
cover letter template for you. You will need to fill in the
|
template for you. You will need to fill in the template before you're ready
|
||||||
template before you're ready to send - but for now, the template
|
to send - but for now, the template will be next to your other patches.
|
||||||
will be next to your other patches.
|
|
||||||
|
|
||||||
. The `-o psuh/` option tells `format-patch` to place the patch
|
The `-o psuh/` parameter tells `format-patch` to place the patch files into a
|
||||||
files into a directory. This is useful because `git send-email`
|
directory. This is useful because `git send-email` can take a directory and
|
||||||
can take a directory and send out all the patches from there.
|
send out all the patches from there.
|
||||||
|
|
||||||
. The `--base=auto` option tells the command to record the "base
|
`master..psuh` tells `format-patch` to generate patches for the difference
|
||||||
commit", on which the recipient is expected to apply the patch
|
between `master` and `psuh`. It will make one patch file per commit. After you
|
||||||
series. The `auto` value will cause `format-patch` to compute
|
|
||||||
the base commit automatically, which is the merge base of tip
|
|
||||||
commit of the remote-tracking branch and the specified revision
|
|
||||||
range.
|
|
||||||
|
|
||||||
. The `psuh@{u}..psuh` option tells `format-patch` to generate
|
|
||||||
patches for the commits you created on the `psuh` branch since it
|
|
||||||
forked from its upstream (which is `origin/master` if you
|
|
||||||
followed the example in the "Set up your workspace" section). If
|
|
||||||
you are already on the `psuh` branch, you can just say `@{u}`,
|
|
||||||
which means "commits on the current branch since it forked from
|
|
||||||
its upstream", which is the same thing.
|
|
||||||
|
|
||||||
The command will make one patch file per commit. After you
|
|
||||||
run, you can go have a look at each of the patches with your favorite text
|
run, you can go have a look at each of the patches with your favorite text
|
||||||
editor and make sure everything looks alright; however, it's not recommended to
|
editor and make sure everything looks alright; however, it's not recommended to
|
||||||
make code fixups via the patch file. It's a better idea to make the change the
|
make code fixups via the patch file. It's a better idea to make the change the
|
||||||
@ -1044,42 +1029,22 @@ kidding - be patient!)
|
|||||||
[[v2-git-send-email]]
|
[[v2-git-send-email]]
|
||||||
=== Sending v2
|
=== Sending v2
|
||||||
|
|
||||||
This section will focus on how to send a v2 of your patchset. To learn what
|
Skip ahead to <<reviewing,Responding to Reviews>> for information on how to
|
||||||
should go into v2, skip ahead to <<reviewing,Responding to Reviews>> for
|
handle comments from reviewers. Continue this section when your topic branch is
|
||||||
information on how to handle comments from reviewers.
|
shaped the way you want it to look for your patchset v2.
|
||||||
|
|
||||||
We'll reuse our `psuh` topic branch for v2. Before we make any changes, we'll
|
When you're ready with the next iteration of your patch, the process is fairly
|
||||||
mark the tip of our v1 branch for easy reference:
|
similar.
|
||||||
|
|
||||||
|
First, generate your v2 patches again:
|
||||||
|
|
||||||
----
|
----
|
||||||
$ git checkout psuh
|
$ git format-patch -v2 --cover-letter -o psuh/ master..psuh
|
||||||
$ git branch psuh-v1
|
|
||||||
----
|
----
|
||||||
|
|
||||||
Refine your patch series by using `git rebase -i` to adjust commits based upon
|
This will add your v2 patches, all named like `v2-000n-my-commit-subject.patch`,
|
||||||
reviewer comments. Once the patch series is ready for submission, generate your
|
to the `psuh/` directory. You may notice that they are sitting alongside the v1
|
||||||
patches again, but with some new flags:
|
patches; that's fine, but be careful when you are ready to send them.
|
||||||
|
|
||||||
----
|
|
||||||
$ git format-patch -v2 --cover-letter -o psuh/ --range-diff master..psuh-v1 master..
|
|
||||||
----
|
|
||||||
|
|
||||||
The `--range-diff master..psuh-v1` parameter tells `format-patch` to include a
|
|
||||||
range-diff between `psuh-v1` and `psuh` in the cover letter (see
|
|
||||||
linkgit:git-range-diff[1]). This helps tell reviewers about the differences
|
|
||||||
between your v1 and v2 patches.
|
|
||||||
|
|
||||||
The `-v2` parameter tells `format-patch` to output your patches
|
|
||||||
as version "2". For instance, you may notice that your v2 patches are
|
|
||||||
all named like `v2-000n-my-commit-subject.patch`. `-v2` will also format
|
|
||||||
your patches by prefixing them with "[PATCH v2]" instead of "[PATCH]",
|
|
||||||
and your range-diff will be prefaced with "Range-diff against v1".
|
|
||||||
|
|
||||||
Afer you run this command, `format-patch` will output the patches to the `psuh/`
|
|
||||||
directory, alongside the v1 patches. Using a single directory makes it easy to
|
|
||||||
refer to the old v1 patches while proofreading the v2 patches, but you will need
|
|
||||||
to be careful to send out only the v2 patches. We will use a pattern like
|
|
||||||
"psuh/v2-*.patch" (not "psuh/*.patch", which would match v1 and v2 patches).
|
|
||||||
|
|
||||||
Edit your cover letter again. Now is a good time to mention what's different
|
Edit your cover letter again. Now is a good time to mention what's different
|
||||||
between your last version and now, if it's something significant. You do not
|
between your last version and now, if it's something significant. You do not
|
||||||
@ -1117,7 +1082,7 @@ to the command:
|
|||||||
----
|
----
|
||||||
$ git send-email --to=target@example.com
|
$ git send-email --to=target@example.com
|
||||||
--in-reply-to="<foo.12345.author@example.com>"
|
--in-reply-to="<foo.12345.author@example.com>"
|
||||||
psuh/v2-*.patch
|
psuh/v2*
|
||||||
----
|
----
|
||||||
|
|
||||||
[[single-patch]]
|
[[single-patch]]
|
||||||
|
@ -58,19 +58,14 @@ running, enable trace output by setting the environment variable `GIT_TRACE`.
|
|||||||
|
|
||||||
Add usage text and `-h` handling, like all subcommands should consistently do
|
Add usage text and `-h` handling, like all subcommands should consistently do
|
||||||
(our test suite will notice and complain if you fail to do so).
|
(our test suite will notice and complain if you fail to do so).
|
||||||
We'll need to include the `parse-options.h` header.
|
|
||||||
|
|
||||||
----
|
----
|
||||||
#include "parse-options.h"
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
const char * const walken_usage[] = {
|
const char * const walken_usage[] = {
|
||||||
N_("git walken"),
|
N_("git walken"),
|
||||||
NULL,
|
NULL,
|
||||||
};
|
}
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
@ -200,14 +195,9 @@ Similarly to the default values, we don't have anything to do here yet
|
|||||||
ourselves; however, we should call `git_default_config()` if we aren't calling
|
ourselves; however, we should call `git_default_config()` if we aren't calling
|
||||||
any other existing config callbacks.
|
any other existing config callbacks.
|
||||||
|
|
||||||
Add a new function to `builtin/walken.c`.
|
Add a new function to `builtin/walken.c`:
|
||||||
We'll also need to include the `config.h` header:
|
|
||||||
|
|
||||||
----
|
----
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
static int git_walken_config(const char *var, const char *value, void *cb)
|
static int git_walken_config(const char *var, const char *value, void *cb)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -239,14 +229,8 @@ typically done by calling `repo_init_revisions()` with the repository you intend
|
|||||||
to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
|
to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
|
||||||
struct.
|
struct.
|
||||||
|
|
||||||
Add the `struct rev_info` and the `repo_init_revisions()` call.
|
Add the `struct rev_info` and the `repo_init_revisions()` call:
|
||||||
We'll also need to include the `revision.h` header:
|
|
||||||
|
|
||||||
----
|
----
|
||||||
#include "revision.h"
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
/* This can go wherever you like in your declarations.*/
|
/* This can go wherever you like in your declarations.*/
|
||||||
@ -640,14 +624,9 @@ static void walken_object_walk(struct rev_info *rev)
|
|||||||
----
|
----
|
||||||
|
|
||||||
Let's start by calling just the unfiltered walk and reporting our counts.
|
Let's start by calling just the unfiltered walk and reporting our counts.
|
||||||
Complete your implementation of `walken_object_walk()`.
|
Complete your implementation of `walken_object_walk()`:
|
||||||
We'll also need to include the `list-objects.h` header.
|
|
||||||
|
|
||||||
----
|
----
|
||||||
#include "list-objects.h"
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
|
traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
|
||||||
|
|
||||||
printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,
|
printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,
|
||||||
@ -718,7 +697,7 @@ First, we'll need to `#include "list-objects-filter-options.h"` and set up the
|
|||||||
----
|
----
|
||||||
static void walken_object_walk(struct rev_info *rev)
|
static void walken_object_walk(struct rev_info *rev)
|
||||||
{
|
{
|
||||||
struct list_objects_filter_options filter_options = { 0 };
|
struct list_objects_filter_options filter_options = {};
|
||||||
|
|
||||||
...
|
...
|
||||||
----
|
----
|
||||||
|
24
Documentation/RelNotes/2.30.3.txt
Normal file
24
Documentation/RelNotes/2.30.3.txt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Git v2.30.2 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release addresses the security issue CVE-2022-24765.
|
||||||
|
|
||||||
|
Fixes since v2.30.2
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* Build fix on Windows.
|
||||||
|
|
||||||
|
* Fix `GIT_CEILING_DIRECTORIES` with Windows-style root directories.
|
||||||
|
|
||||||
|
* CVE-2022-24765:
|
||||||
|
On multi-user machines, Git users might find themselves
|
||||||
|
unexpectedly in a Git worktree, e.g. when another user created a
|
||||||
|
repository in `C:\.git`, in a mounted network drive or in a
|
||||||
|
scratch space. Merely having a Git-aware prompt that runs `git
|
||||||
|
status` (or `git diff`) and navigating to a directory which is
|
||||||
|
supposedly not a Git worktree, or opening such a directory in an
|
||||||
|
editor or IDE such as VS Code or Atom, will potentially run
|
||||||
|
commands defined by that other user.
|
||||||
|
|
||||||
|
Credit for finding this vulnerability goes to 俞晨东; The fix was
|
||||||
|
authored by Johannes Schindelin.
|
21
Documentation/RelNotes/2.30.4.txt
Normal file
21
Documentation/RelNotes/2.30.4.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Git v2.30.4 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release contains minor fix-ups for the changes that went into
|
||||||
|
Git 2.30.3, which was made to address CVE-2022-24765.
|
||||||
|
|
||||||
|
* The code that was meant to parse the new `safe.directory`
|
||||||
|
configuration variable was not checking what configuration
|
||||||
|
variable was being fed to it, which has been corrected.
|
||||||
|
|
||||||
|
* '*' can be used as the value for the `safe.directory` variable to
|
||||||
|
signal that the user considers that any directory is safe.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Derrick Stolee (2):
|
||||||
|
t0033: add tests for safe.directory
|
||||||
|
setup: opt-out of check with safe.directory=*
|
||||||
|
|
||||||
|
Matheus Valadares (1):
|
||||||
|
setup: fix safe.directory key not being checked
|
12
Documentation/RelNotes/2.30.5.txt
Normal file
12
Documentation/RelNotes/2.30.5.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Git v2.30.5 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release contains minor fix-ups for the changes that went into
|
||||||
|
Git 2.30.3 and 2.30.4, addressing CVE-2022-29187.
|
||||||
|
|
||||||
|
* The safety check that verifies a safe ownership of the Git
|
||||||
|
worktree is now extended to also cover the ownership of the Git
|
||||||
|
directory (and the `.git` file, if there is any).
|
||||||
|
|
||||||
|
Carlo Marcelo Arenas Belón (1):
|
||||||
|
setup: tighten ownership checks post CVE-2022-24765
|
60
Documentation/RelNotes/2.30.6.txt
Normal file
60
Documentation/RelNotes/2.30.6.txt
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
Git v2.30.6 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release addresses the security issues CVE-2022-39253 and
|
||||||
|
CVE-2022-39260.
|
||||||
|
|
||||||
|
Fixes since v2.30.5
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* CVE-2022-39253:
|
||||||
|
When relying on the `--local` clone optimization, Git dereferences
|
||||||
|
symbolic links in the source repository before creating hardlinks
|
||||||
|
(or copies) of the dereferenced link in the destination repository.
|
||||||
|
This can lead to surprising behavior where arbitrary files are
|
||||||
|
present in a repository's `$GIT_DIR` when cloning from a malicious
|
||||||
|
repository.
|
||||||
|
|
||||||
|
Git will no longer dereference symbolic links via the `--local`
|
||||||
|
clone mechanism, and will instead refuse to clone repositories that
|
||||||
|
have symbolic links present in the `$GIT_DIR/objects` directory.
|
||||||
|
|
||||||
|
Additionally, the value of `protocol.file.allow` is changed to be
|
||||||
|
"user" by default.
|
||||||
|
|
||||||
|
* CVE-2022-39260:
|
||||||
|
An overly-long command string given to `git shell` can result in
|
||||||
|
overflow in `split_cmdline()`, leading to arbitrary heap writes and
|
||||||
|
remote code execution when `git shell` is exposed and the directory
|
||||||
|
`$HOME/git-shell-commands` exists.
|
||||||
|
|
||||||
|
`git shell` is taught to refuse interactive commands that are
|
||||||
|
longer than 4MiB in size. `split_cmdline()` is hardened to reject
|
||||||
|
inputs larger than 2GiB.
|
||||||
|
|
||||||
|
Credit for finding CVE-2022-39253 goes to Cory Snider of Mirantis. The
|
||||||
|
fix was authored by Taylor Blau, with help from Johannes Schindelin.
|
||||||
|
|
||||||
|
Credit for finding CVE-2022-39260 goes to Kevin Backhouse of GitHub.
|
||||||
|
The fix was authored by Kevin Backhouse, Jeff King, and Taylor Blau.
|
||||||
|
|
||||||
|
|
||||||
|
Jeff King (2):
|
||||||
|
shell: add basic tests
|
||||||
|
shell: limit size of interactive commands
|
||||||
|
|
||||||
|
Kevin Backhouse (1):
|
||||||
|
alias.c: reject too-long cmdline strings in split_cmdline()
|
||||||
|
|
||||||
|
Taylor Blau (11):
|
||||||
|
builtin/clone.c: disallow `--local` clones with symlinks
|
||||||
|
t/lib-submodule-update.sh: allow local submodules
|
||||||
|
t/t1NNN: allow local submodules
|
||||||
|
t/2NNNN: allow local submodules
|
||||||
|
t/t3NNN: allow local submodules
|
||||||
|
t/t4NNN: allow local submodules
|
||||||
|
t/t5NNN: allow local submodules
|
||||||
|
t/t6NNN: allow local submodules
|
||||||
|
t/t7NNN: allow local submodules
|
||||||
|
t/t9NNN: allow local submodules
|
||||||
|
transport: make `protocol.file.allow` be "user" by default
|
6
Documentation/RelNotes/2.31.2.txt
Normal file
6
Documentation/RelNotes/2.31.2.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.31.2 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.3 to address
|
||||||
|
the security issue CVE-2022-24765; see the release notes for that
|
||||||
|
version for details.
|
4
Documentation/RelNotes/2.31.3.txt
Normal file
4
Documentation/RelNotes/2.31.3.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Git Documentation/RelNotes/2.31.3.txt Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.31.3.
|
6
Documentation/RelNotes/2.31.4.txt
Normal file
6
Documentation/RelNotes/2.31.4.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.31.4 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.5 to address
|
||||||
|
the security issue CVE-2022-29187; see the release notes for that
|
||||||
|
version for details.
|
5
Documentation/RelNotes/2.31.5.txt
Normal file
5
Documentation/RelNotes/2.31.5.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Git v2.31.5 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.6; see
|
||||||
|
the release notes for that version for details.
|
6
Documentation/RelNotes/2.32.1.txt
Normal file
6
Documentation/RelNotes/2.32.1.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.32.1 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.3 and
|
||||||
|
v2.31.2 to address the security issue CVE-2022-24765; see the
|
||||||
|
release notes for these versions for details.
|
4
Documentation/RelNotes/2.32.2.txt
Normal file
4
Documentation/RelNotes/2.32.2.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Git Documentation/RelNotes/2.32.2.txt Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.32.2.
|
6
Documentation/RelNotes/2.32.3.txt
Normal file
6
Documentation/RelNotes/2.32.3.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.32.3 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.5 and
|
||||||
|
v2.31.4 to address the security issue CVE-2022-29187; see the
|
||||||
|
release notes for these versions for details.
|
5
Documentation/RelNotes/2.32.4.txt
Normal file
5
Documentation/RelNotes/2.32.4.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Git v2.32.4 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.6; see
|
||||||
|
the release notes for that version for details.
|
15
Documentation/RelNotes/2.33.2.txt
Normal file
15
Documentation/RelNotes/2.33.2.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Git v2.33.2 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.3, v2.31.2
|
||||||
|
and v2.32.1 to address the security issue CVE-2022-24765; see
|
||||||
|
the release notes for these versions for details.
|
||||||
|
|
||||||
|
In addition, it contains the following fixes:
|
||||||
|
|
||||||
|
* Squelch over-eager warning message added during this cycle.
|
||||||
|
|
||||||
|
* A bug in "git rebase -r" has been fixed.
|
||||||
|
|
||||||
|
* One CI task based on Fedora image noticed a not-quite-kosher
|
||||||
|
construct recently, which has been corrected.
|
4
Documentation/RelNotes/2.33.3.txt
Normal file
4
Documentation/RelNotes/2.33.3.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Git Documentation/RelNotes/2.33.3.txt Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.33.3.
|
6
Documentation/RelNotes/2.33.4.txt
Normal file
6
Documentation/RelNotes/2.33.4.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Git v2.33.4 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges up the fixes that appear in v2.30.5, v2.31.4
|
||||||
|
and v2.32.3 to address the security issue CVE-2022-29187; see
|
||||||
|
the release notes for these versions for details.
|
5
Documentation/RelNotes/2.33.5.txt
Normal file
5
Documentation/RelNotes/2.33.5.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Git v2.33.5 Release Notes
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This release merges the security fix that appears in v2.30.6; see
|
||||||
|
the release notes for that version for details.
|
@ -1,438 +0,0 @@
|
|||||||
Git 2.34 Release Notes
|
|
||||||
======================
|
|
||||||
|
|
||||||
Updates since Git 2.33
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Backward compatibility notes
|
|
||||||
|
|
||||||
* The "--preserve-merges" option of "git rebase" has been removed.
|
|
||||||
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* Pathname expansion (like "~username/") learned a way to specify a
|
|
||||||
location relative to Git installation (e.g. its $sharedir which is
|
|
||||||
$(prefix)/share), with "%(prefix)".
|
|
||||||
|
|
||||||
* The `ort` strategy is used instead of `recursive` as the default
|
|
||||||
merge strategy.
|
|
||||||
|
|
||||||
* The userdiff pattern for "java" language has been updated.
|
|
||||||
|
|
||||||
* "git rebase" by default skips changes that are equivalent to
|
|
||||||
commits that are already in the history the branch is rebased onto;
|
|
||||||
give messages when this happens to let the users be aware of
|
|
||||||
skipped commits, and also teach them how to tell "rebase" to keep
|
|
||||||
duplicated changes.
|
|
||||||
|
|
||||||
* The advice message that "git cherry-pick" gives when it asks
|
|
||||||
conflicted replay of a commit to be resolved by the end user has
|
|
||||||
been updated.
|
|
||||||
|
|
||||||
* After "git clone --recurse-submodules", all submodules are cloned
|
|
||||||
but they are not by default recursed into by other commands. With
|
|
||||||
submodule.stickyRecursiveClone configuration set, submodule.recurse
|
|
||||||
configuration is set to true in a repository created by "clone"
|
|
||||||
with "--recurse-submodules" option.
|
|
||||||
|
|
||||||
* The logic for auto-correction of misspelt subcommands learned to go
|
|
||||||
interactive when the help.autocorrect configuration variable is set
|
|
||||||
to 'prompt'.
|
|
||||||
|
|
||||||
* "git maintenance" scheduler learned to use systemd timers as a
|
|
||||||
possible backend.
|
|
||||||
|
|
||||||
* "git diff --submodule=diff" showed failure from run_command() when
|
|
||||||
trying to run diff inside a submodule, when the user manually
|
|
||||||
removes the submodule directory.
|
|
||||||
|
|
||||||
* "git bundle unbundle" learned to show progress display.
|
|
||||||
|
|
||||||
* In cone mode, the sparse-index code path learned to remove ignored
|
|
||||||
files (like build artifacts) outside the sparse cone, allowing the
|
|
||||||
entire directory outside the sparse cone to be removed, which is
|
|
||||||
especially useful when the sparse patterns change.
|
|
||||||
|
|
||||||
* Taking advantage of the CGI interface, http-backend has been
|
|
||||||
updated to enable protocol v2 automatically when the other side
|
|
||||||
asks for it.
|
|
||||||
|
|
||||||
* The credential-cache helper has been adjusted to Windows.
|
|
||||||
|
|
||||||
* The error in "git help no-such-git-command" is handled better.
|
|
||||||
|
|
||||||
* The unicode character width table (used for output alignment) has
|
|
||||||
been updated.
|
|
||||||
|
|
||||||
* The ref iteration code used to optionally allow dangling refs to be
|
|
||||||
shown, which has been tightened up.
|
|
||||||
|
|
||||||
* "git add", "git mv", and "git rm" have been adjusted to avoid
|
|
||||||
updating paths outside of the sparse-checkout definition unless
|
|
||||||
the user specifies a "--sparse" option.
|
|
||||||
|
|
||||||
* "git repack" has been taught to generate multi-pack reachability
|
|
||||||
bitmaps.
|
|
||||||
|
|
||||||
* "git fsck" has been taught to report mismatch between expected and
|
|
||||||
actual types of an object better.
|
|
||||||
|
|
||||||
* In addition to GnuPG, ssh public crypto can be used for object and
|
|
||||||
push-cert signing. Note that this feature cannot be used with
|
|
||||||
ssh-keygen from OpenSSH 8.7, whose support for it is broken. Avoid
|
|
||||||
using it unless you update to OpenSSH 8.8.
|
|
||||||
|
|
||||||
* "git log --grep=string --author=name" learns to highlight hits just
|
|
||||||
like "git grep string" does.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* "git bisect" spawned "git show-branch" only to pretty-print the
|
|
||||||
title of the commit after checking out the next version to be
|
|
||||||
tested; this has been rewritten in C.
|
|
||||||
|
|
||||||
* "git add" can work better with the sparse index.
|
|
||||||
|
|
||||||
* Support for ancient versions of cURL library (pre 7.19.4) has been
|
|
||||||
dropped.
|
|
||||||
|
|
||||||
* A handful of tests that assumed implementation details of files
|
|
||||||
backend for refs have been cleaned up.
|
|
||||||
|
|
||||||
* trace2 logs learned to show parent process name to see in what
|
|
||||||
context Git was invoked.
|
|
||||||
|
|
||||||
* Loading of ref tips to prepare for common ancestry negotiation in
|
|
||||||
"git fetch-pack" has been optimized by taking advantage of the
|
|
||||||
commit graph when available.
|
|
||||||
|
|
||||||
* Remind developers that the userdiff patterns should be kept simple
|
|
||||||
and permissive, assuming that the contents they apply are always
|
|
||||||
syntactically correct.
|
|
||||||
|
|
||||||
* The current implementation of GIT_TEST_FAIL_PREREQS is broken in
|
|
||||||
that checking for the lack of a prerequisite would not work. Avoid
|
|
||||||
the use of "if ! test_have_prereq X" in a test script.
|
|
||||||
|
|
||||||
* The revision traversal API has been optimized by taking advantage
|
|
||||||
of the commit-graph, when available, to determine if a commit is
|
|
||||||
reachable from any of the existing refs.
|
|
||||||
|
|
||||||
* "git fetch --quiet" optimization to avoid useless computation of
|
|
||||||
info that will never be displayed.
|
|
||||||
|
|
||||||
* Callers from older advice_config[] based API has been updated to
|
|
||||||
use the newer advice_if_enabled() and advice_enabled() API.
|
|
||||||
|
|
||||||
* Teach "test_pause" and "debug" helpers to allow using the HOME and
|
|
||||||
TERM environment variables the user usually uses.
|
|
||||||
|
|
||||||
* "make INSTALL_STRIP=-s install" allows the installation step to use
|
|
||||||
"install -s" to strip the binaries as they get installed.
|
|
||||||
|
|
||||||
* Code that handles large number of refs in the "git fetch" code
|
|
||||||
path has been optimized.
|
|
||||||
|
|
||||||
* The reachability bitmap file used to be generated only for a single
|
|
||||||
pack, but now we've learned to generate bitmaps for history that
|
|
||||||
span across multiple packfiles.
|
|
||||||
|
|
||||||
* The code to make "git grep" recurse into submodules has been
|
|
||||||
updated to migrate away from the "add submodule's object store as
|
|
||||||
an alternate object store" mechanism (which is suboptimal).
|
|
||||||
|
|
||||||
* The tracing of process ancestry information has been enhanced.
|
|
||||||
|
|
||||||
* Reduce number of write(2) system calls while sending the
|
|
||||||
ref advertisement.
|
|
||||||
|
|
||||||
* Update the build procedure to use the "-pedantic" build when
|
|
||||||
DEVELOPER makefile macro is in effect.
|
|
||||||
|
|
||||||
* Large part of "git submodule add" gets rewritten in C.
|
|
||||||
|
|
||||||
* The run-command API has been updated so that the callers can easily
|
|
||||||
ask the file descriptors open for packfiles to be closed immediately
|
|
||||||
before spawning commands that may trigger auto-gc.
|
|
||||||
|
|
||||||
* An oddball OPTION_ARGUMENT feature has been removed from the
|
|
||||||
parse-options API.
|
|
||||||
|
|
||||||
* The mergesort implementation used to sort linked list has been
|
|
||||||
optimized.
|
|
||||||
|
|
||||||
* Remove external declaration of functions that no longer exist.
|
|
||||||
|
|
||||||
* "git multi-pack-index write --bitmap" learns to propagate the
|
|
||||||
hashcache from original bitmap to resulting bitmap.
|
|
||||||
|
|
||||||
* CI learns to run the leak sanitizer builds.
|
|
||||||
|
|
||||||
* "git grep --recurse-submodules" takes trees and blobs from the
|
|
||||||
submodule repository, but the textconv settings when processing a
|
|
||||||
blob from the submodule is not taken from the submodule repository.
|
|
||||||
A test is added to demonstrate the issue, without fixing it.
|
|
||||||
|
|
||||||
* Teach "git help -c" into helping the command line completion of
|
|
||||||
configuration variables.
|
|
||||||
|
|
||||||
* When "git cmd -h" shows more than one line of usage text (e.g.
|
|
||||||
the cmd subcommand may take sub-sub-command), parse-options API
|
|
||||||
learned to align these lines, even across i18n/l10n.
|
|
||||||
|
|
||||||
* Prevent "make sparse" from running for the source files that
|
|
||||||
haven't been modified.
|
|
||||||
|
|
||||||
* The code path to write a new version of .midx multi-pack index files
|
|
||||||
has learned to release the mmaped memory holding the current
|
|
||||||
version of .midx before removing them from the disk, as some
|
|
||||||
platforms do not allow removal of a file that still has mapping.
|
|
||||||
|
|
||||||
* A new feature has been added to abort early in the test framework.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.33
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* Input validation of "git pack-objects --stdin-packs" has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Bugfix for common ancestor negotiation recently introduced in "git
|
|
||||||
push" code path.
|
|
||||||
|
|
||||||
* "git pull" had various corner cases that were not well thought out
|
|
||||||
around its --rebase backend, e.g. "git pull --ff-only" did not stop
|
|
||||||
but went ahead and rebased when the history on other side is not a
|
|
||||||
descendant of our history. The series tries to fix them up.
|
|
||||||
|
|
||||||
* "git apply" miscounted the bytes and failed to read to the end of
|
|
||||||
binary hunks.
|
|
||||||
|
|
||||||
* "git range-diff" code clean-up.
|
|
||||||
|
|
||||||
* "git commit --fixup" now works with "--edit" again, after it was
|
|
||||||
broken in v2.32.
|
|
||||||
|
|
||||||
* Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
|
|
||||||
new version has a blocker bug for that architecture.
|
|
||||||
|
|
||||||
* Checking out all the paths from HEAD during the last conflicted
|
|
||||||
step in "git rebase" and continuing would cause the step to be
|
|
||||||
skipped (which is expected), but leaves MERGE_MSG file behind in
|
|
||||||
$GIT_DIR and confuses the next "git commit", which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* Various bugs in "git rebase -r" have been fixed.
|
|
||||||
|
|
||||||
* mmap() imitation used to call xmalloc() that dies upon malloc()
|
|
||||||
failure, which has been corrected to just return an error to the
|
|
||||||
caller to be handled.
|
|
||||||
|
|
||||||
* "git diff --relative" segfaulted and/or produced incorrect result
|
|
||||||
when there are unmerged paths.
|
|
||||||
|
|
||||||
* The delayed checkout code path in "git checkout" etc. were chatty
|
|
||||||
even when --quiet and/or --no-progress options were given.
|
|
||||||
|
|
||||||
* "git branch -D <branch>" used to refuse to remove a broken branch
|
|
||||||
ref that points at a missing commit, which has been corrected.
|
|
||||||
|
|
||||||
* Build update for Apple clang.
|
|
||||||
|
|
||||||
* The parser for the "--nl" option of "git column" has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* "git upload-pack" which runs on the other side of "git fetch"
|
|
||||||
forgot to take the ref namespaces into account when handling
|
|
||||||
want-ref requests.
|
|
||||||
|
|
||||||
* The sparse-index support can corrupt the index structure by storing
|
|
||||||
a stale and/or uninitialized data, which has been corrected.
|
|
||||||
|
|
||||||
* Buggy tests could damage repositories outside the throw-away test
|
|
||||||
area we created. We now by default export GIT_CEILING_DIRECTORIES
|
|
||||||
to limit the damage from such a stray test.
|
|
||||||
|
|
||||||
* Even when running "git send-email" without its own threaded
|
|
||||||
discussion support, a threading related header in one message is
|
|
||||||
carried over to the subsequent message to result in an unwanted
|
|
||||||
threading, which has been corrected.
|
|
||||||
|
|
||||||
* The output from "git fast-export", when its anonymization feature
|
|
||||||
is in use, showed an annotated tag incorrectly.
|
|
||||||
|
|
||||||
* Recent "diff -m" changes broke "gitk", which has been corrected.
|
|
||||||
|
|
||||||
* The "git apply -3" code path learned not to bother the lower level
|
|
||||||
merge machinery when the three-way merge can be trivially resolved
|
|
||||||
without the content level merge. This fixes a regression caused by
|
|
||||||
recent "-3way first and fall back to direct application" change.
|
|
||||||
|
|
||||||
* The code that optionally creates the *.rev reverse index file has
|
|
||||||
been optimized to avoid needless computation when it is not writing
|
|
||||||
the file out.
|
|
||||||
|
|
||||||
* "git range-diff -I... <range> <range>" segfaulted, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* The order in which various files that make up a single (conceptual)
|
|
||||||
packfile has been reevaluated and straightened up. This matters in
|
|
||||||
correctness, as an incomplete set of files must not be shown to a
|
|
||||||
running Git.
|
|
||||||
|
|
||||||
* The "mode" word is useless in a call to open(2) that does not
|
|
||||||
create a new file. Such a call in the files backend of the ref
|
|
||||||
subsystem has been cleaned up.
|
|
||||||
|
|
||||||
* "git update-ref --stdin" failed to flush its output as needed,
|
|
||||||
which potentially led the conversation to a deadlock.
|
|
||||||
|
|
||||||
* When "git am --abort" fails to abort correctly, it still exited
|
|
||||||
with exit status of 0, which has been corrected.
|
|
||||||
|
|
||||||
* Correct nr and alloc members of strvec struct to be of type size_t.
|
|
||||||
|
|
||||||
* "git stash", where the tentative change involves changing a
|
|
||||||
directory to a file (or vice versa), was confused, which has been
|
|
||||||
corrected.
|
|
||||||
|
|
||||||
* "git clone" from a repository whose HEAD is unborn into a bare
|
|
||||||
repository didn't follow the branch name the other side used, which
|
|
||||||
is corrected.
|
|
||||||
|
|
||||||
* "git cvsserver" had a long-standing bug in its authentication code,
|
|
||||||
which has finally been corrected (it is unclear and is a separate
|
|
||||||
question if anybody is seriously using it, though).
|
|
||||||
|
|
||||||
* "git difftool --dir-diff" mishandled symbolic links.
|
|
||||||
|
|
||||||
* Sensitive data in the HTTP trace were supposed to be redacted, but
|
|
||||||
we failed to do so in HTTP/2 requests.
|
|
||||||
|
|
||||||
* "make clean" has been updated to remove leftover .depend/
|
|
||||||
directories, even when it is not told to use them to compute header
|
|
||||||
dependencies.
|
|
||||||
|
|
||||||
* Protocol v0 clients can get stuck parsing a malformed feature line.
|
|
||||||
|
|
||||||
* A few kinds of changes "git status" can show were not documented.
|
|
||||||
(merge d2a534c515 ja/doc-status-types-and-copies later to maint).
|
|
||||||
|
|
||||||
* The mergesort implementation used to sort linked list has been
|
|
||||||
optimized.
|
|
||||||
(merge c90cfc225b rs/mergesort later to maint).
|
|
||||||
|
|
||||||
* An editor session launched during a Git operation (e.g. during 'git
|
|
||||||
commit') can leave the terminal in a funny state. The code path
|
|
||||||
has updated to save the terminal state before, and restore it
|
|
||||||
after, it spawns an editor.
|
|
||||||
(merge 3d411afabc cm/save-restore-terminal later to maint).
|
|
||||||
|
|
||||||
* "git cat-file --batch" with the "--batch-all-objects" option is
|
|
||||||
supposed to iterate over all the objects found in a repository, but
|
|
||||||
it used to translate these object names using the replace mechanism,
|
|
||||||
which defeats the point of enumerating all objects in the repository.
|
|
||||||
This has been corrected.
|
|
||||||
(merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).
|
|
||||||
|
|
||||||
* Recent sparse-index work broke safety against attempts to add paths
|
|
||||||
with trailing slashes to the index, which has been corrected.
|
|
||||||
(merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).
|
|
||||||
|
|
||||||
* The "--color-lines" and "--color-by-age" options of "git blame"
|
|
||||||
have been missing, which are now documented.
|
|
||||||
(merge 8c32856133 bs/doc-blame-color-lines later to maint).
|
|
||||||
|
|
||||||
* The PATH used in CI job may be too wide and let incompatible dlls
|
|
||||||
to be grabbed, which can cause the build&test to fail. Tighten it.
|
|
||||||
(merge 7491ef6198 js/windows-ci-path-fix later to maint).
|
|
||||||
|
|
||||||
* Avoid performance measurements from getting ruined by gc and other
|
|
||||||
housekeeping pauses interfering in the middle.
|
|
||||||
(merge be79131a53 rs/disable-gc-during-perf-tests later to maint).
|
|
||||||
|
|
||||||
* Stop "git add --dry-run" from creating new blob and tree objects.
|
|
||||||
(merge e578d0311d rs/add-dry-run-without-objects later to maint).
|
|
||||||
|
|
||||||
* "git commit" gave duplicated error message when the object store
|
|
||||||
was unwritable, which has been corrected.
|
|
||||||
(merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).
|
|
||||||
|
|
||||||
* Recent sparse-index addition, namely any use of index_name_pos(),
|
|
||||||
can expand sparse index entries and breaks any code that walks
|
|
||||||
cache-tree or existing index entries. One such instance of such a
|
|
||||||
breakage has been corrected.
|
|
||||||
|
|
||||||
* The xxdiff difftool backend can exit with status 128, which the
|
|
||||||
difftool-helper that launches the backend takes as a significant
|
|
||||||
failure, when it is not significant at all. Work it around.
|
|
||||||
(merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).
|
|
||||||
|
|
||||||
* Improve test framework around unwritable directories.
|
|
||||||
(merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).
|
|
||||||
|
|
||||||
* "git push" client talking to an HTTP server did not diagnose the
|
|
||||||
lack of the final status report from the other side correctly,
|
|
||||||
which has been corrected.
|
|
||||||
(merge c5c3486f38 jk/http-push-status-fix later to maint).
|
|
||||||
|
|
||||||
* Update "git archive" documentation and give explicit mention on the
|
|
||||||
compression level for both zip and tar.gz format.
|
|
||||||
(merge c4b208c309 bs/archive-doc-compression-level later to maint).
|
|
||||||
|
|
||||||
* Drop "git sparse-checkout" from the list of common commands.
|
|
||||||
(merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).
|
|
||||||
|
|
||||||
* "git branch -c/-m new old" was not described to copy config, which
|
|
||||||
has been corrected.
|
|
||||||
(merge 8252ec300e jc/branch-copy-doc later to maint).
|
|
||||||
|
|
||||||
* Squelch over-eager warning message added during this cycle.
|
|
||||||
|
|
||||||
* Fix long-standing shell syntax error in the completion script.
|
|
||||||
(merge 46b0585286 re/completion-fix-test-equality later to maint).
|
|
||||||
|
|
||||||
* Teach "git commit-graph" command not to allow using replace objects
|
|
||||||
at all, as we do not use the commit-graph at runtime when we see
|
|
||||||
object replacement.
|
|
||||||
(merge 095d112f8c ab/ignore-replace-while-working-on-commit-graph later to maint).
|
|
||||||
|
|
||||||
* "git pull --no-verify" did not affect the underlying "git merge".
|
|
||||||
(merge 47bfdfb3fd ar/fix-git-pull-no-verify later to maint).
|
|
||||||
|
|
||||||
* One CI task based on Fedora image noticed a not-quite-kosher
|
|
||||||
construct recently, which has been corrected.
|
|
||||||
|
|
||||||
* "git pull --ff-only" and "git pull --rebase --ff-only" should make
|
|
||||||
it a no-op to attempt pulling from a remote that is behind us, but
|
|
||||||
instead the command errored out by saying it was impossible to
|
|
||||||
fast-forward, which may technically be true, but not a useful thing
|
|
||||||
to diagnose as an error. This has been corrected.
|
|
||||||
(merge 361cb52383 jc/fix-pull-ff-only-when-already-up-to-date later to maint).
|
|
||||||
|
|
||||||
* The way Cygwin emulates a unix-domain socket, on top of which the
|
|
||||||
simple-ipc mechanism is implemented, can race with the program on
|
|
||||||
the other side that wants to use the socket, and briefly make it
|
|
||||||
appear as a regular file before lstat(2) starts reporting it as a
|
|
||||||
socket. We now have a workaround on the side that connects to a
|
|
||||||
unix domain socket.
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge f188160be9 ab/bundle-remove-verbose-option later to maint).
|
|
||||||
(merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
|
|
||||||
(merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
|
|
||||||
(merge dd20e4a6db ab/make-compdb-fix later to maint).
|
|
||||||
(merge 6ffb990dc4 os/status-docfix later to maint).
|
|
||||||
(merge 100c2da2d3 rs/p3400-lose-tac later to maint).
|
|
||||||
(merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).
|
|
||||||
(merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).
|
|
||||||
(merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).
|
|
||||||
(merge ec9a37d69b ab/pkt-line-cleanup later to maint).
|
|
||||||
(merge 8650c6298c ab/fix-make-lint-docs later to maint).
|
|
||||||
(merge 1c720357ce ab/test-lib-diff-cleanup later to maint).
|
|
||||||
(merge 6b615dbece ks/submodule-add-message-fix later to maint).
|
|
||||||
(merge 203eb8381a jc/doc-format-patch-clarify-auto-base later to maint).
|
|
||||||
(merge 559664c792 ab/test-lib later to maint).
|
|
@ -1,23 +0,0 @@
|
|||||||
Git v2.34.1 Release Notes
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This release is primarily to fix a handful of regressions in Git 2.34.
|
|
||||||
|
|
||||||
Fixes since v2.34
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* "git grep" looking in a blob that has non-UTF8 payload was
|
|
||||||
completely broken when linked with certain versions of PCREv2
|
|
||||||
library in the latest release.
|
|
||||||
|
|
||||||
* "git pull" with any strategy when the other side is behind us
|
|
||||||
should succeed as it is a no-op, but doesn't.
|
|
||||||
|
|
||||||
* An earlier change in 2.34.0 caused JGit application (that abused
|
|
||||||
GIT_EDITOR mechanism when invoking "git config") to get stuck with
|
|
||||||
a SIGTTOU signal; it has been reverted.
|
|
||||||
|
|
||||||
* An earlier change that broke .gitignore matching has been reverted.
|
|
||||||
|
|
||||||
* SubmittingPatches document gained a syntactically incorrect mark-up,
|
|
||||||
which has been corrected.
|
|
@ -1,393 +0,0 @@
|
|||||||
Git 2.35 Release Notes
|
|
||||||
======================
|
|
||||||
|
|
||||||
Updates since Git 2.34
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Backward compatibility warts
|
|
||||||
|
|
||||||
* "_" is now treated as any other URL-valid characters in an URL when
|
|
||||||
matching the per-URL configuration variable names.
|
|
||||||
|
|
||||||
* The color palette used by "git grep" has been updated to match that
|
|
||||||
of GNU grep.
|
|
||||||
|
|
||||||
|
|
||||||
UI, Workflows & Features
|
|
||||||
|
|
||||||
* "git status --porcelain=v2" now show the number of stash entries
|
|
||||||
with --show-stash like the normal output does.
|
|
||||||
|
|
||||||
* "git stash" learned the "--staged" option to stash away what has
|
|
||||||
been added to the index (and nothing else).
|
|
||||||
|
|
||||||
* "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
|
|
||||||
the newly created branch if "git init" is run.
|
|
||||||
|
|
||||||
* Various operating modes of "git reset" have been made to work
|
|
||||||
better with the sparse index.
|
|
||||||
|
|
||||||
* "git submodule deinit" for a submodule whose .git metadata
|
|
||||||
directory is embedded in its working tree refused to work, until
|
|
||||||
the submodule gets converted to use the "absorbed" form where the
|
|
||||||
metadata directory is stored in superproject, and a gitfile at the
|
|
||||||
top-level of the working tree of the submodule points at it. The
|
|
||||||
command is taught to convert such submodules to the absorbed form
|
|
||||||
as needed.
|
|
||||||
|
|
||||||
* The completion script (in contrib/) learns that the "--date"
|
|
||||||
option of commands from the "git log" family takes "human" and
|
|
||||||
"auto" as valid values.
|
|
||||||
|
|
||||||
* "Zealous diff3" style of merge conflict presentation has been added.
|
|
||||||
|
|
||||||
* The "git log --format=%(describe)" placeholder has been extended to
|
|
||||||
allow passing selected command-line options to the underlying "git
|
|
||||||
describe" command.
|
|
||||||
|
|
||||||
* "default" and "reset" have been added to our color palette.
|
|
||||||
|
|
||||||
* The cryptographic signing using ssh keys can specify literal keys
|
|
||||||
for keytypes whose name do not begin with the "ssh-" prefix by
|
|
||||||
using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").
|
|
||||||
|
|
||||||
* "git fetch" without the "--update-head-ok" option ought to protect
|
|
||||||
a checked out branch from getting updated, to prevent the working
|
|
||||||
tree that checks it out to go out of sync. The code was written
|
|
||||||
before the use of "git worktree" got widespread, and only checked
|
|
||||||
the branch that was checked out in the current worktree, which has
|
|
||||||
been updated.
|
|
||||||
|
|
||||||
* "git name-rev" has been tweaked to give output that is shorter and
|
|
||||||
easier to understand.
|
|
||||||
|
|
||||||
* "git apply" has been taught to ignore a message without a patch
|
|
||||||
with the "--allow-empty" option. It also learned to honor the
|
|
||||||
"--quiet" option given from the command line.
|
|
||||||
|
|
||||||
* The "init" and "set" subcommands in "git sparse-checkout" have been
|
|
||||||
unified for a better user experience and performance.
|
|
||||||
|
|
||||||
* Many git commands that deal with working tree files try to remove a
|
|
||||||
directory that becomes empty (i.e. "git switch" from a branch that
|
|
||||||
has the directory to another branch that does not would attempt
|
|
||||||
remove all files in the directory and the directory itself). This
|
|
||||||
drops users into an unfamiliar situation if the command was run in
|
|
||||||
a subdirectory that becomes subject to removal due to the command.
|
|
||||||
The commands have been taught to keep an empty directory if it is
|
|
||||||
the directory they were started in to avoid surprising users.
|
|
||||||
|
|
||||||
* "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
|
|
||||||
done to a piece of e-mail without a patch in it.
|
|
||||||
|
|
||||||
* The default merge message prepared by "git merge" records the name
|
|
||||||
of the current branch; the name can be overridden with a new option
|
|
||||||
to allow users to pretend a merge is made on a different branch.
|
|
||||||
|
|
||||||
* The way "git p4" shows file sizes in its output has been updated to
|
|
||||||
use human-readable units.
|
|
||||||
|
|
||||||
* "git -c branch.autosetupmerge=inherit branch new old" makes "new"
|
|
||||||
to have the same upstream as the "old" branch, instead of marking
|
|
||||||
"old" itself as its upstream.
|
|
||||||
|
|
||||||
|
|
||||||
Performance, Internal Implementation, Development Support etc.
|
|
||||||
|
|
||||||
* The use of errno as a means to carry the nature of error in the ref
|
|
||||||
API implementation has been reworked and reduced.
|
|
||||||
|
|
||||||
* Teach and encourage first-time contributors to this project to
|
|
||||||
state the base commit when they submit their topic.
|
|
||||||
|
|
||||||
* The command line complation for "git send-email" options have been
|
|
||||||
tweaked to make it easier to keep it in sync with the command itself.
|
|
||||||
|
|
||||||
* Ensure that the sparseness of the in-core index matches the
|
|
||||||
index.sparse configuration specified by the repository immediately
|
|
||||||
after the on-disk index file is read.
|
|
||||||
|
|
||||||
* Code clean-up to eventually allow information on remotes defined
|
|
||||||
for an arbitrary repository to be read.
|
|
||||||
|
|
||||||
* Build optimization.
|
|
||||||
|
|
||||||
* Tighten code for testing pack-bitmap.
|
|
||||||
|
|
||||||
* Weather balloon to break people with compilers that do not support
|
|
||||||
C99.
|
|
||||||
|
|
||||||
* The "reftable" backend for the refs API, without integrating into
|
|
||||||
the refs subsystem, has been added.
|
|
||||||
|
|
||||||
* More tests are marked as leak-free.
|
|
||||||
|
|
||||||
* The test framework learns to list unsatisfied test prerequisites,
|
|
||||||
and optionally error out when prerequisites that are expected to be
|
|
||||||
satisfied are not.
|
|
||||||
|
|
||||||
* The default setting for trace2 event nesting was too low to cause
|
|
||||||
test failures, which is worked around by bumping it up in the test
|
|
||||||
framework.
|
|
||||||
|
|
||||||
* Drop support for TravisCI and update test workflows at GitHub.
|
|
||||||
|
|
||||||
* Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
||||||
mechanism to force "git" to use 'master' as the default name for
|
|
||||||
the initial branch no longer need it; the use of the mechanism from
|
|
||||||
them have been removed.
|
|
||||||
|
|
||||||
* Allow running our tests while disabling fsync.
|
|
||||||
|
|
||||||
* Document the parameters given to the reflog entry iterator callback
|
|
||||||
functions.
|
|
||||||
(merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).
|
|
||||||
|
|
||||||
* The test helper for refs subsystem learned to write bogus and/or
|
|
||||||
nonexistent object name to refs to simulate error situations we
|
|
||||||
want to test Git in.
|
|
||||||
|
|
||||||
* "diff --histogram" optimization.
|
|
||||||
|
|
||||||
* Weather balloon to find compilers that do not grok variable
|
|
||||||
declaration in the for() loop.
|
|
||||||
|
|
||||||
* diff and blame commands have been taught to work better with sparse
|
|
||||||
index.
|
|
||||||
|
|
||||||
* The chainlint test script linter in the test suite has been updated.
|
|
||||||
|
|
||||||
* The DEVELOPER=yes build uses -std=gnu99 now.
|
|
||||||
|
|
||||||
* "git format-patch" uses a single rev_info instance and then exits.
|
|
||||||
Mark the structure with UNLEAK() macro to squelch leak sanitizer.
|
|
||||||
|
|
||||||
* New interface into the tmp-objdir API to help in-core use of the
|
|
||||||
quarantine feature.
|
|
||||||
|
|
||||||
* Broken &&-chains in the test scripts have been corrected.
|
|
||||||
|
|
||||||
* The RCS keyword substitution in "git p4" used to be done assuming
|
|
||||||
that the contents are UTF-8 text, which can trigger decoding
|
|
||||||
errors. We now treat the contents as a bytestring for robustness
|
|
||||||
and correctness.
|
|
||||||
|
|
||||||
* The conditions to choose different definitions of the FLEX_ARRAY
|
|
||||||
macro for vendor compilers has been simplified to make it easier to
|
|
||||||
maintain.
|
|
||||||
|
|
||||||
* Correctness and performance update to "diff --color-moved" feature.
|
|
||||||
|
|
||||||
* "git upload-pack" (the other side of "git fetch") used a 8kB buffer
|
|
||||||
but most of its payload came on 64kB "packets". The buffer size
|
|
||||||
has been enlarged so that such a packet fits.
|
|
||||||
|
|
||||||
* "git fetch" and "git pull" are now declared sparse-index clean.
|
|
||||||
Also "git ls-files" learns the "--sparse" option to help debugging.
|
|
||||||
|
|
||||||
* Similar message templates have been consolidated so that
|
|
||||||
translators need to work on fewer number of messages.
|
|
||||||
|
|
||||||
|
|
||||||
Fixes since v2.34
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
* "git grep" looking in a blob that has non-UTF8 payload was
|
|
||||||
completely broken when linked with certain versions of PCREv2
|
|
||||||
library in the latest release.
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
|
|
||||||
* "git pull" with any strategy when the other side is behind us
|
|
||||||
should succeed as it is a no-op, but doesn't.
|
|
||||||
|
|
||||||
* An earlier change in 2.34.0 caused JGit application (that abused
|
|
||||||
GIT_EDITOR mechanism when invoking "git config") to get stuck with
|
|
||||||
a SIGTTOU signal; it has been reverted.
|
|
||||||
|
|
||||||
* An earlier change that broke .gitignore matching has been reverted.
|
|
||||||
|
|
||||||
* Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
|
|
||||||
operation modes of the "git branch" command that do not need the
|
|
||||||
sort key information, no longer errors out by seeing a bogus sort
|
|
||||||
key.
|
|
||||||
(merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).
|
|
||||||
|
|
||||||
* The compatibility implementation for unsetenv(3) were written to
|
|
||||||
mimic ancient, non-POSIX, variant seen in an old glibc; it has been
|
|
||||||
changed to return an integer to match the more modern era.
|
|
||||||
(merge a38989bd5b jc/unsetenv-returns-an-int later to maint).
|
|
||||||
|
|
||||||
* The clean/smudge conversion code path has been prepared to better
|
|
||||||
work on platforms where ulong is narrower than size_t.
|
|
||||||
(merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).
|
|
||||||
|
|
||||||
* Redact the path part of packfile URI that appears in the trace output.
|
|
||||||
(merge 0ba558ffb1 if/redact-packfile-uri later to maint).
|
|
||||||
|
|
||||||
* CI has been taught to catch some Unicode directional formatting
|
|
||||||
sequence that can be used in certain mischief.
|
|
||||||
(merge 0e7696c64d js/ci-no-directional-formatting later to maint).
|
|
||||||
|
|
||||||
* The "--date=format:<strftime>" gained a workaround for the lack of
|
|
||||||
system support for a non-local timezone to handle "%s" placeholder.
|
|
||||||
(merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).
|
|
||||||
|
|
||||||
* The "merge" subcommand of "git jump" (in contrib/) silently ignored
|
|
||||||
pathspec and other parameters.
|
|
||||||
(merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).
|
|
||||||
|
|
||||||
* The code to decode the length of packed object size has been
|
|
||||||
corrected.
|
|
||||||
(merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).
|
|
||||||
|
|
||||||
* The advice message given by "git pull" when the user hasn't made a
|
|
||||||
choice between merge and rebase still said that the merge is the
|
|
||||||
default, which no longer is the case. This has been corrected.
|
|
||||||
(merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).
|
|
||||||
|
|
||||||
* "git fetch", when received a bad packfile, can fail with SIGPIPE.
|
|
||||||
This wasn't wrong per-se, but we now detect the situation and fail
|
|
||||||
in a more predictable way.
|
|
||||||
(merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).
|
|
||||||
|
|
||||||
* The function to cull a child process and determine the exit status
|
|
||||||
had two separate code paths for normal callers and callers in a
|
|
||||||
signal handler, and the latter did not yield correct value when the
|
|
||||||
child has caught a signal. The handling of the exit status has
|
|
||||||
been unified for these two code paths. An existing test with
|
|
||||||
flakiness has also been corrected.
|
|
||||||
(merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).
|
|
||||||
|
|
||||||
* When a non-existent program is given as the pager, we tried to
|
|
||||||
reuse an uninitialized child_process structure and crashed, which
|
|
||||||
has been fixed.
|
|
||||||
(merge f917f57f40 em/missing-pager later to maint).
|
|
||||||
|
|
||||||
* The single-key-input mode in "git add -p" had some code to handle
|
|
||||||
keys that generate a sequence of input via ReadKey(), which did not
|
|
||||||
handle end-of-file correctly, which has been fixed.
|
|
||||||
(merge fc8a8126df cb/add-p-single-key-fix later to maint).
|
|
||||||
|
|
||||||
* "git rebase -x" added an unnecessary 'exec' instructions before
|
|
||||||
'noop', which has been corrected.
|
|
||||||
(merge cc9dcdee61 en/rebase-x-fix later to maint).
|
|
||||||
|
|
||||||
* When the "git push" command is killed while the receiving end is
|
|
||||||
trying to report what happened to the ref update proposals, the
|
|
||||||
latter used to die, due to SIGPIPE. The code now ignores SIGPIPE
|
|
||||||
to increase our chances to run the post-receive hook after it
|
|
||||||
happens.
|
|
||||||
(merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).
|
|
||||||
|
|
||||||
* "git worktree add" showed "Preparing worktree" message to the
|
|
||||||
standard output stream, but when it failed, the message from die()
|
|
||||||
went to the standard error stream. Depending on the order the
|
|
||||||
stdio streams are flushed at the program end, this resulted in
|
|
||||||
confusing output. It has been corrected by sending all the chatty
|
|
||||||
messages to the standard error stream.
|
|
||||||
(merge b50252484f es/worktree-chatty-to-stderr later to maint).
|
|
||||||
|
|
||||||
* Coding guideline document has been updated to clarify what goes to
|
|
||||||
standard error in our system.
|
|
||||||
(merge e258eb4800 es/doc-stdout-vs-stderr later to maint).
|
|
||||||
|
|
||||||
* The sparse-index/sparse-checkout feature had a bug in its use of
|
|
||||||
the matching code to determine which path is in or outside the
|
|
||||||
sparse checkout patterns.
|
|
||||||
(merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).
|
|
||||||
|
|
||||||
* "git rebase -x" by mistake started exporting the GIT_DIR and
|
|
||||||
GIT_WORK_TREE environment variables when the command was rewritten
|
|
||||||
in C, which has been corrected.
|
|
||||||
(merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).
|
|
||||||
|
|
||||||
* When "git log" implicitly enabled the "decoration" processing
|
|
||||||
without being explicitly asked with "--decorate" option, it failed
|
|
||||||
to read and honor the settings given by the "--decorate-refs"
|
|
||||||
option.
|
|
||||||
|
|
||||||
* "git fetch --set-upstream" did not check if there is a current
|
|
||||||
branch, leading to a segfault when it is run on a detached HEAD,
|
|
||||||
which has been corrected.
|
|
||||||
(merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).
|
|
||||||
|
|
||||||
* Among some code paths that ask an yes/no question, only one place
|
|
||||||
gave a prompt that looked different from the others, which has been
|
|
||||||
updated to match what the others create.
|
|
||||||
(merge 0fc8ed154c km/help-prompt-fix later to maint).
|
|
||||||
|
|
||||||
* "git log --invert-grep --author=<name>" used to exclude commits
|
|
||||||
written by the given author, but now "--invert-grep" only affects
|
|
||||||
the matches made by the "--grep=<pattern>" option.
|
|
||||||
(merge 794c000267 rs/log-invert-grep-with-headers later to maint).
|
|
||||||
|
|
||||||
* "git grep --perl-regexp" failed to match UTF-8 characters with
|
|
||||||
wildcard when the pattern consists only of ASCII letters, which has
|
|
||||||
been corrected.
|
|
||||||
(merge 32e3e8bc55 rs/pcre2-utf later to maint).
|
|
||||||
|
|
||||||
* Certain sparse-checkout patterns that are valid in non-cone mode
|
|
||||||
led to segfault in cone mode, which has been corrected.
|
|
||||||
|
|
||||||
* Use of certain "git rev-list" options with "git fast-export"
|
|
||||||
created nonsense results (the worst two of which being "--reverse"
|
|
||||||
and "--invert-grep --grep=<foo>"). The use of "--first-parent" is
|
|
||||||
made to behave a bit more sensible than before.
|
|
||||||
(merge 726a228dfb ws/fast-export-with-revision-options later to maint).
|
|
||||||
|
|
||||||
* Perf tests were run with end-user's shell, but it has been
|
|
||||||
corrected to use the shell specified by $TEST_SHELL_PATH.
|
|
||||||
(merge 9ccab75608 ja/perf-use-specified-shell later to maint).
|
|
||||||
|
|
||||||
* Fix dependency rules to generate hook-list.h header file.
|
|
||||||
(merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).
|
|
||||||
|
|
||||||
* "git stash" by default triggers its "push" action, but its
|
|
||||||
implementation also made "git stash -h" to show short help only for
|
|
||||||
"git stash push", which has been corrected.
|
|
||||||
(merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).
|
|
||||||
|
|
||||||
* "git apply --3way" bypasses the attempt to do a three-way
|
|
||||||
application in more cases to address the regression caused by the
|
|
||||||
recent change to use direct application as a fallback.
|
|
||||||
(merge 34d607032c jz/apply-3-corner-cases later to maint).
|
|
||||||
|
|
||||||
* Fix performance-releated bug in "git subtree" (in contrib/).
|
|
||||||
(merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).
|
|
||||||
|
|
||||||
* Extend the guidance to choose the base commit to build your work
|
|
||||||
on, and hint/nudge contributors to read others' changes.
|
|
||||||
(merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).
|
|
||||||
|
|
||||||
* A corner case bug in the ort merge strategy has been corrected.
|
|
||||||
(merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).
|
|
||||||
|
|
||||||
* "git stash apply" forgot to attempt restoring untracked files when
|
|
||||||
it failed to restore changes to tracked ones.
|
|
||||||
(merge 71cade5a0b en/stash-df-fix later to maint).
|
|
||||||
|
|
||||||
* Other code cleanup, docfix, build fix, etc.
|
|
||||||
(merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
|
|
||||||
(merge f9b2b6684d ja/doc-cleanup later to maint).
|
|
||||||
(merge 7d1b866778 jc/fix-first-object-walk later to maint).
|
|
||||||
(merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
|
|
||||||
(merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
|
|
||||||
(merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
|
|
||||||
(merge 42c456ff81 rs/mergesort later to maint).
|
|
||||||
(merge ad506e6780 tl/midx-docfix later to maint).
|
|
||||||
(merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
|
|
||||||
(merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
|
|
||||||
(merge 7d3fc7df70 jt/midx-doc-fix later to maint).
|
|
||||||
(merge 7b089120d9 hn/create-reflog-simplify later to maint).
|
|
||||||
(merge 9e12400da8 cb/mingw-gmtime-r later to maint).
|
|
||||||
(merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
|
|
||||||
(merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
|
|
||||||
(merge eafd6e7e55 ab/die-with-bug later to maint).
|
|
||||||
(merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
|
|
||||||
(merge 47ca93d071 ds/repack-fixlets later to maint).
|
|
||||||
(merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
|
|
||||||
(merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
|
|
||||||
(merge 999bba3e0b rs/daemon-plug-leak later to maint).
|
|
||||||
(merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
|
|
||||||
(merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
|
|
@ -19,10 +19,8 @@ change is relevant to.
|
|||||||
base your work on the tip of the topic.
|
base your work on the tip of the topic.
|
||||||
|
|
||||||
* A new feature should be based on `master` in general. If the new
|
* A new feature should be based on `master` in general. If the new
|
||||||
feature depends on other topics that are in `next`, but not in
|
feature depends on a topic that is in `seen`, but not in `master`,
|
||||||
`master`, fork a branch from the tip of `master`, merge these topics
|
base your work on the tip of that topic.
|
||||||
to the branch, and work on that branch. You can remind yourself of
|
|
||||||
how you prepared the base with `git log --first-parent master..`.
|
|
||||||
|
|
||||||
* Corrections and enhancements to a topic not yet in `master` should
|
* Corrections and enhancements to a topic not yet in `master` should
|
||||||
be based on the tip of that topic. If the topic has not been merged
|
be based on the tip of that topic. If the topic has not been merged
|
||||||
@ -30,10 +28,10 @@ change is relevant to.
|
|||||||
into the series.
|
into the series.
|
||||||
|
|
||||||
* In the exceptional case that a new feature depends on several topics
|
* In the exceptional case that a new feature depends on several topics
|
||||||
not in `master`, start working on `next` or `seen` privately and
|
not in `master`, start working on `next` or `seen` privately and send
|
||||||
send out patches only for discussion. Once your new feature starts
|
out patches for discussion. Before the final merge, you may have to
|
||||||
to stabilize, you would have to rebase it (see the "depends on other
|
wait until some of the dependent topics graduate to `master`, and
|
||||||
topics" above).
|
rebase your work.
|
||||||
|
|
||||||
* Some parts of the system have dedicated maintainers with their own
|
* Some parts of the system have dedicated maintainers with their own
|
||||||
repositories (see the section "Subsystems" below). Changes to
|
repositories (see the section "Subsystems" below). Changes to
|
||||||
@ -73,13 +71,8 @@ Make sure that you have tests for the bug you are fixing. See
|
|||||||
[[tests]]
|
[[tests]]
|
||||||
When adding a new feature, make sure that you have new tests to show
|
When adding a new feature, make sure that you have new tests to show
|
||||||
the feature triggers the new behavior when it should, and to show the
|
the feature triggers the new behavior when it should, and to show the
|
||||||
feature does not trigger when it shouldn't. After any code change,
|
feature does not trigger when it shouldn't. After any code change, make
|
||||||
make sure that the entire test suite passes. When fixing a bug, make
|
sure that the entire test suite passes.
|
||||||
sure you have new tests that break if somebody else breaks what you
|
|
||||||
fixed by accident to avoid regression. Also, try merging your work to
|
|
||||||
'next' and 'seen' and make sure the tests still pass; topics by others
|
|
||||||
that are still in flight may have unexpected interactions with what
|
|
||||||
you are trying to do in your topic.
|
|
||||||
|
|
||||||
Pushing to a fork of https://github.com/git/git will use their CI
|
Pushing to a fork of https://github.com/git/git will use their CI
|
||||||
integration to test your changes on Linux, Mac and Windows. See the
|
integration to test your changes on Linux, Mac and Windows. See the
|
||||||
@ -151,21 +144,8 @@ without external resources. Instead of giving a URL to a mailing list
|
|||||||
archive, summarize the relevant points of the discussion.
|
archive, summarize the relevant points of the discussion.
|
||||||
|
|
||||||
[[commit-reference]]
|
[[commit-reference]]
|
||||||
|
If you want to reference a previous commit in the history of a stable
|
||||||
There are a few reasons why you may want to refer to another commit in
|
branch, use the format "abbreviated hash (subject, date)", like this:
|
||||||
the "more stable" part of the history (i.e. on branches like `maint`,
|
|
||||||
`master`, and `next`):
|
|
||||||
|
|
||||||
. A commit that introduced the root cause of a bug you are fixing.
|
|
||||||
|
|
||||||
. A commit that introduced a feature that you are enhancing.
|
|
||||||
|
|
||||||
. A commit that conflicts with your work when you made a trial merge
|
|
||||||
of your work into `next` and `seen` for testing.
|
|
||||||
|
|
||||||
When you reference a commit on a more stable branch (like `master`,
|
|
||||||
`maint` and `next`), use the format "abbreviated hash (subject,
|
|
||||||
date)", like this:
|
|
||||||
|
|
||||||
....
|
....
|
||||||
Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30)
|
Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30)
|
||||||
@ -279,11 +259,9 @@ Please make sure your patch does not add commented out debugging code,
|
|||||||
or include any extra files which do not relate to what your patch
|
or include any extra files which do not relate to what your patch
|
||||||
is trying to achieve. Make sure to review
|
is trying to achieve. Make sure to review
|
||||||
your patch after generating it, to ensure accuracy. Before
|
your patch after generating it, to ensure accuracy. Before
|
||||||
sending out, please make sure it cleanly applies to the base you
|
sending out, please make sure it cleanly applies to the `master`
|
||||||
have chosen in the "Decide what to base your work on" section,
|
branch head. If you are preparing a work based on "next" branch,
|
||||||
and unless it targets the `master` branch (which is the default),
|
that is fine, but please mark it as such.
|
||||||
mark your patches as such.
|
|
||||||
|
|
||||||
|
|
||||||
[[send-patches]]
|
[[send-patches]]
|
||||||
=== Sending your patches.
|
=== Sending your patches.
|
||||||
@ -387,10 +365,7 @@ Security mailing list{security-ml-ref}.
|
|||||||
Send your patch with "To:" set to the mailing list, with "cc:" listing
|
Send your patch with "To:" set to the mailing list, with "cc:" listing
|
||||||
people who are involved in the area you are touching (the `git
|
people who are involved in the area you are touching (the `git
|
||||||
contacts` command in `contrib/contacts/` can help to
|
contacts` command in `contrib/contacts/` can help to
|
||||||
identify them), to solicit comments and reviews. Also, when you made
|
identify them), to solicit comments and reviews.
|
||||||
trial merges of your topic to `next` and `seen`, you may have noticed
|
|
||||||
work by others conflicting with your changes. There is a good possibility
|
|
||||||
that these people may know the area you are touching well.
|
|
||||||
|
|
||||||
:current-maintainer: footnote:[The current maintainer: gitster@pobox.com]
|
:current-maintainer: footnote:[The current maintainer: gitster@pobox.com]
|
||||||
:git-ml: footnote:[The mailing list: git@vger.kernel.org]
|
:git-ml: footnote:[The mailing list: git@vger.kernel.org]
|
||||||
@ -473,7 +448,7 @@ their trees themselves.
|
|||||||
entitled "What's cooking in git.git" and "What's in git.git" giving
|
entitled "What's cooking in git.git" and "What's in git.git" giving
|
||||||
the status of various proposed changes.
|
the status of various proposed changes.
|
||||||
|
|
||||||
== GitHub CI[[GHCI]]
|
== GitHub CI[[GHCI]]]
|
||||||
|
|
||||||
With an account at GitHub, you can use GitHub CI to test your changes
|
With an account at GitHub, you can use GitHub CI to test your changes
|
||||||
on Linux, Mac and Windows. See
|
on Linux, Mac and Windows. See
|
||||||
@ -488,7 +463,7 @@ Follow these steps for the initial setup:
|
|||||||
|
|
||||||
After the initial setup, CI will run whenever you push new changes
|
After the initial setup, CI will run whenever you push new changes
|
||||||
to your fork of Git on GitHub. You can monitor the test state of all your
|
to your fork of Git on GitHub. You can monitor the test state of all your
|
||||||
branches here: `https://github.com/<Your GitHub handle>/git/actions/workflows/main.yml`
|
branches here: https://github.com/<Your GitHub handle>/git/actions/workflows/main.yml
|
||||||
|
|
||||||
If a branch did not pass all test cases then it is marked with a red
|
If a branch did not pass all test cases then it is marked with a red
|
||||||
cross. In that case you can click on the failing job and navigate to
|
cross. In that case you can click on the failing job and navigate to
|
||||||
|
@ -136,16 +136,5 @@ take effect.
|
|||||||
option. An empty file name, `""`, will clear the list of revs from
|
option. An empty file name, `""`, will clear the list of revs from
|
||||||
previously processed files.
|
previously processed files.
|
||||||
|
|
||||||
--color-lines::
|
|
||||||
Color line annotations in the default format differently if they come from
|
|
||||||
the same commit as the preceding line. This makes it easier to distinguish
|
|
||||||
code blocks introduced by different commits. The color defaults to cyan and
|
|
||||||
can be adjusted using the `color.blame.repeatedLines` config option.
|
|
||||||
|
|
||||||
--color-by-age::
|
|
||||||
Color line annotations depending on the age of the line in the default format.
|
|
||||||
The `color.blame.highlightRecent` config option controls what color is used for
|
|
||||||
each range of age.
|
|
||||||
|
|
||||||
-h::
|
-h::
|
||||||
Show help message.
|
Show help message.
|
||||||
|
@ -262,19 +262,11 @@ color::
|
|||||||
colors (at most two, one for foreground and one for background)
|
colors (at most two, one for foreground and one for background)
|
||||||
and attributes (as many as you want), separated by spaces.
|
and attributes (as many as you want), separated by spaces.
|
||||||
+
|
+
|
||||||
The basic colors accepted are `normal`, `black`, `red`, `green`,
|
The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`,
|
||||||
`yellow`, `blue`, `magenta`, `cyan`, `white` and `default`. The first
|
`blue`, `magenta`, `cyan` and `white`. The first color given is the
|
||||||
color given is the foreground; the second is the background. All the
|
foreground; the second is the background. All the basic colors except
|
||||||
basic colors except `normal` and `default` have a bright variant that can
|
`normal` have a bright variant that can be specified by prefixing the
|
||||||
be specified by prefixing the color with `bright`, like `brightred`.
|
color with `bright`, like `brightred`.
|
||||||
+
|
|
||||||
The color `normal` makes no change to the color. It is the same as an
|
|
||||||
empty string, but can be used as the foreground color when specifying a
|
|
||||||
background color alone (for example, "normal red").
|
|
||||||
+
|
|
||||||
The color `default` explicitly resets the color to the terminal default,
|
|
||||||
for example to specify a cleared background. Although it varies between
|
|
||||||
terminals, this is usually not the same as setting to "white black".
|
|
||||||
+
|
+
|
||||||
Colors may also be given as numbers between 0 and 255; these use ANSI
|
Colors may also be given as numbers between 0 and 255; these use ANSI
|
||||||
256-color mode (but note that not all terminals may support this). If
|
256-color mode (but note that not all terminals may support this). If
|
||||||
@ -288,11 +280,6 @@ The position of any attributes with respect to the colors
|
|||||||
be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`,
|
be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`,
|
||||||
`no-ul`, etc).
|
`no-ul`, etc).
|
||||||
+
|
+
|
||||||
The pseudo-attribute `reset` resets all colors and attributes before
|
|
||||||
applying the specified coloring. For example, `reset green` will result
|
|
||||||
in a green foreground and default background without any active
|
|
||||||
attributes.
|
|
||||||
+
|
|
||||||
An empty color string produces no color effect at all. This can be used
|
An empty color string produces no color effect at all. This can be used
|
||||||
to avoid coloring specific elements without disabling color entirely.
|
to avoid coloring specific elements without disabling color entirely.
|
||||||
+
|
+
|
||||||
@ -311,15 +298,6 @@ pathname::
|
|||||||
tilde expansion happens to such a string: `~/`
|
tilde expansion happens to such a string: `~/`
|
||||||
is expanded to the value of `$HOME`, and `~user/` to the
|
is expanded to the value of `$HOME`, and `~user/` to the
|
||||||
specified user's home directory.
|
specified user's home directory.
|
||||||
+
|
|
||||||
If a path starts with `%(prefix)/`, the remainder is interpreted as a
|
|
||||||
path relative to Git's "runtime prefix", i.e. relative to the location
|
|
||||||
where Git itself was installed. For example, `%(prefix)/bin/` refers to
|
|
||||||
the directory in which the Git executable itself lives. If Git was
|
|
||||||
compiled without runtime prefix support, the compiled-in prefix will be
|
|
||||||
substituted instead. In the unlikely event that a literal path needs to
|
|
||||||
be specified that should _not_ be expanded, it needs to be prefixed by
|
|
||||||
`./`, like so: `./%(prefix)/bin`.
|
|
||||||
|
|
||||||
|
|
||||||
Variables
|
Variables
|
||||||
@ -462,6 +440,8 @@ include::config/rerere.txt[]
|
|||||||
|
|
||||||
include::config/reset.txt[]
|
include::config/reset.txt[]
|
||||||
|
|
||||||
|
include::config/safe.txt[]
|
||||||
|
|
||||||
include::config/sendemail.txt[]
|
include::config/sendemail.txt[]
|
||||||
|
|
||||||
include::config/sequencer.txt[]
|
include::config/sequencer.txt[]
|
||||||
|
@ -44,9 +44,6 @@ advice.*::
|
|||||||
Shown when linkgit:git-push[1] rejects a forced update of
|
Shown when linkgit:git-push[1] rejects a forced update of
|
||||||
a branch when its remote-tracking ref has updates that we
|
a branch when its remote-tracking ref has updates that we
|
||||||
do not have locally.
|
do not have locally.
|
||||||
skippedCherryPicks::
|
|
||||||
Shown when linkgit:git-rebase[1] skips a commit that has already
|
|
||||||
been cherry-picked onto the upstream branch.
|
|
||||||
statusAheadBehind::
|
statusAheadBehind::
|
||||||
Shown when linkgit:git-status[1] computes the ahead/behind
|
Shown when linkgit:git-status[1] computes the ahead/behind
|
||||||
counts for a local ref compared to its remote tracking ref,
|
counts for a local ref compared to its remote tracking ref,
|
||||||
|
@ -7,8 +7,7 @@ branch.autoSetupMerge::
|
|||||||
automatic setup is done; `true` -- automatic setup is done when the
|
automatic setup is done; `true` -- automatic setup is done when the
|
||||||
starting point is a remote-tracking branch; `always` --
|
starting point is a remote-tracking branch; `always` --
|
||||||
automatic setup is done when the starting point is either a
|
automatic setup is done when the starting point is either a
|
||||||
local branch or remote-tracking branch; `inherit` -- if the starting point
|
local branch or remote-tracking
|
||||||
has a tracking configuration, it is copied to the new
|
|
||||||
branch. This option defaults to true.
|
branch. This option defaults to true.
|
||||||
|
|
||||||
branch.autoSetupRebase::
|
branch.autoSetupRebase::
|
||||||
@ -86,6 +85,10 @@ When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
|
|||||||
so that the local merge commits are included in the rebase (see
|
so that the local merge commits are included in the rebase (see
|
||||||
linkgit:git-rebase[1] for details).
|
linkgit:git-rebase[1] for details).
|
||||||
+
|
+
|
||||||
|
When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
|
||||||
|
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||||
|
commits will not be flattened by running 'git pull'.
|
||||||
|
+
|
||||||
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
||||||
mode.
|
mode.
|
||||||
+
|
+
|
||||||
|
@ -9,27 +9,26 @@ color.advice.hint::
|
|||||||
Use customized color for hints.
|
Use customized color for hints.
|
||||||
|
|
||||||
color.blame.highlightRecent::
|
color.blame.highlightRecent::
|
||||||
Specify the line annotation color for `git blame --color-by-age`
|
This can be used to color the metadata of a blame line depending
|
||||||
depending upon the age of the line.
|
on age of the line.
|
||||||
+
|
+
|
||||||
This setting should be set to a comma-separated list of color and
|
This setting should be set to a comma-separated list of color and date settings,
|
||||||
date settings, starting and ending with a color, the dates should be
|
starting and ending with a color, the dates should be set from oldest to newest.
|
||||||
set from oldest to newest. The metadata will be colored with the
|
The metadata will be colored given the colors if the line was introduced
|
||||||
specified colors if the line was introduced before the given
|
before the given timestamp, overwriting older timestamped colors.
|
||||||
timestamp, overwriting older timestamped colors.
|
|
||||||
+
|
+
|
||||||
Instead of an absolute timestamp relative timestamps work as well,
|
Instead of an absolute timestamp relative timestamps work as well, e.g.
|
||||||
e.g. `2.weeks.ago` is valid to address anything older than 2 weeks.
|
2.weeks.ago is valid to address anything older than 2 weeks.
|
||||||
+
|
+
|
||||||
It defaults to `blue,12 month ago,white,1 month ago,red`, which
|
It defaults to 'blue,12 month ago,white,1 month ago,red', which colors
|
||||||
colors everything older than one year blue, recent changes between
|
everything older than one year blue, recent changes between one month and
|
||||||
one month and one year old are kept white, and lines introduced
|
one year old are kept white, and lines introduced within the last month are
|
||||||
within the last month are colored red.
|
colored red.
|
||||||
|
|
||||||
color.blame.repeatedLines::
|
color.blame.repeatedLines::
|
||||||
Use the specified color to colorize line annotations for
|
Use the customized color for the part of git-blame output that
|
||||||
`git blame --color-lines`, if they come from the same commit as the
|
is repeated meta information per line (such as commit id,
|
||||||
preceding line. Defaults to cyan.
|
author name, date and timezone). Defaults to cyan.
|
||||||
|
|
||||||
color.branch::
|
color.branch::
|
||||||
A boolean to enable/disable color in the output of
|
A boolean to enable/disable color in the output of
|
||||||
@ -105,12 +104,9 @@ color.grep.<slot>::
|
|||||||
`matchContext`;;
|
`matchContext`;;
|
||||||
matching text in context lines
|
matching text in context lines
|
||||||
`matchSelected`;;
|
`matchSelected`;;
|
||||||
matching text in selected lines. Also, used to customize the following
|
matching text in selected lines
|
||||||
linkgit:git-log[1] subcommands: `--grep`, `--author` and `--committer`.
|
|
||||||
`selected`;;
|
`selected`;;
|
||||||
non-matching text in selected lines. Also, used to customize the
|
non-matching text in selected lines
|
||||||
following linkgit:git-log[1] subcommands: `--grep`, `--author` and
|
|
||||||
`--committer`.
|
|
||||||
`separator`;;
|
`separator`;;
|
||||||
separators between fields on a line (`:`, `-`, and `=`)
|
separators between fields on a line (`:`, `-`, and `=`)
|
||||||
and between hunks (`--`)
|
and between hunks (`--`)
|
||||||
|
@ -11,13 +11,13 @@ gpg.program::
|
|||||||
|
|
||||||
gpg.format::
|
gpg.format::
|
||||||
Specifies which key format to use when signing with `--gpg-sign`.
|
Specifies which key format to use when signing with `--gpg-sign`.
|
||||||
Default is "openpgp". Other possible values are "x509", "ssh".
|
Default is "openpgp" and another possible value is "x509".
|
||||||
|
|
||||||
gpg.<format>.program::
|
gpg.<format>.program::
|
||||||
Use this to customize the program used for the signing format you
|
Use this to customize the program used for the signing format you
|
||||||
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
|
||||||
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
be used as a legacy synonym for `gpg.openpgp.program`. The default
|
||||||
value for `gpg.x509.program` is "gpgsm" and `gpg.ssh.program` is "ssh-keygen".
|
value for `gpg.x509.program` is "gpgsm".
|
||||||
|
|
||||||
gpg.minTrustLevel::
|
gpg.minTrustLevel::
|
||||||
Specifies a minimum trust level for signature verification. If
|
Specifies a minimum trust level for signature verification. If
|
||||||
@ -33,47 +33,3 @@ gpg.minTrustLevel::
|
|||||||
* `marginal`
|
* `marginal`
|
||||||
* `fully`
|
* `fully`
|
||||||
* `ultimate`
|
* `ultimate`
|
||||||
|
|
||||||
gpg.ssh.defaultKeyCommand::
|
|
||||||
This command that will be run when user.signingkey is not set and a ssh
|
|
||||||
signature is requested. On successful exit a valid ssh public key is
|
|
||||||
expected in the first line of its output. To automatically use the first
|
|
||||||
available key from your ssh-agent set this to "ssh-add -L".
|
|
||||||
|
|
||||||
gpg.ssh.allowedSignersFile::
|
|
||||||
A file containing ssh public keys which you are willing to trust.
|
|
||||||
The file consists of one or more lines of principals followed by an ssh
|
|
||||||
public key.
|
|
||||||
e.g.: `user1@example.com,user2@example.com ssh-rsa AAAAX1...`
|
|
||||||
See ssh-keygen(1) "ALLOWED SIGNERS" for details.
|
|
||||||
The principal is only used to identify the key and is available when
|
|
||||||
verifying a signature.
|
|
||||||
+
|
|
||||||
SSH has no concept of trust levels like gpg does. To be able to differentiate
|
|
||||||
between valid signatures and trusted signatures the trust level of a signature
|
|
||||||
verification is set to `fully` when the public key is present in the allowedSignersFile.
|
|
||||||
Otherwise the trust level is `undefined` and git verify-commit/tag will fail.
|
|
||||||
+
|
|
||||||
This file can be set to a location outside of the repository and every developer
|
|
||||||
maintains their own trust store. A central repository server could generate this
|
|
||||||
file automatically from ssh keys with push access to verify the code against.
|
|
||||||
In a corporate setting this file is probably generated at a global location
|
|
||||||
from automation that already handles developer ssh keys.
|
|
||||||
+
|
|
||||||
A repository that only allows signed commits can store the file
|
|
||||||
in the repository itself using a path relative to the top-level of the working tree.
|
|
||||||
This way only committers with an already valid key can add or change keys in the keyring.
|
|
||||||
+
|
|
||||||
Since OpensSSH 8.8 this file allows specifying a key lifetime using valid-after &
|
|
||||||
valid-before options. Git will mark signatures as valid if the signing key was
|
|
||||||
valid at the time of the signatures creation. This allows users to change a
|
|
||||||
signing key without invalidating all previously made signatures.
|
|
||||||
+
|
|
||||||
Using a SSH CA key with the cert-authority option
|
|
||||||
(see ssh-keygen(1) "CERTIFICATES") is also valid.
|
|
||||||
|
|
||||||
gpg.ssh.revocationFile::
|
|
||||||
Either a SSH KRL or a list of revoked public keys (without the principal prefix).
|
|
||||||
See ssh-keygen(1) for details.
|
|
||||||
If a public key is found in this file then it will always be treated
|
|
||||||
as having trust level "never" and signatures will show as invalid.
|
|
||||||
|
@ -8,8 +8,7 @@ grep.patternType::
|
|||||||
Set the default matching behavior. Using a value of 'basic', 'extended',
|
Set the default matching behavior. Using a value of 'basic', 'extended',
|
||||||
'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
|
'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
|
||||||
`--fixed-strings`, or `--perl-regexp` option accordingly, while the
|
`--fixed-strings`, or `--perl-regexp` option accordingly, while the
|
||||||
value 'default' will use the `grep.extendedRegexp` option to choose
|
value 'default' will return to the default matching behavior.
|
||||||
between 'basic' and 'extended'.
|
|
||||||
|
|
||||||
grep.extendedRegexp::
|
grep.extendedRegexp::
|
||||||
If set to true, enable `--extended-regexp` option by default. This
|
If set to true, enable `--extended-regexp` option by default. This
|
||||||
|
@ -9,15 +9,13 @@ help.format::
|
|||||||
|
|
||||||
help.autoCorrect::
|
help.autoCorrect::
|
||||||
If git detects typos and can identify exactly one valid command similar
|
If git detects typos and can identify exactly one valid command similar
|
||||||
to the error, git will try to suggest the correct command or even
|
to the error, git will automatically run the intended command after
|
||||||
run the suggestion automatically. Possible config values are:
|
waiting a duration of time defined by this configuration value in
|
||||||
- 0 (default): show the suggested command.
|
deciseconds (0.1 sec). If this value is 0, the suggested corrections
|
||||||
- positive number: run the suggested command after specified
|
will be shown, but not executed. If it is a negative integer, or
|
||||||
deciseconds (0.1 sec).
|
"immediate", the suggested command
|
||||||
- "immediate": run the suggested command immediately.
|
is run immediately. If "never", suggestions are not shown at all. The
|
||||||
- "prompt": show the suggestion and prompt for confirmation to run
|
default value is zero.
|
||||||
the command.
|
|
||||||
- "never": don't run or show any suggested command.
|
|
||||||
|
|
||||||
help.htmlPath::
|
help.htmlPath::
|
||||||
Specify the path where the HTML documentation resides. File system paths
|
Specify the path where the HTML documentation resides. File system paths
|
||||||
|
@ -4,14 +4,7 @@ merge.conflictStyle::
|
|||||||
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, 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
|
marker and the original text before the `=======` marker.
|
||||||
"merge" style tends to produce smaller conflict regions than diff3,
|
|
||||||
both because of the exclusion of the original text, and because
|
|
||||||
when a subset of lines match on the two sides they are just pulled
|
|
||||||
out of the conflict region. Another alternate style, "zdiff3", is
|
|
||||||
similar to diff3 but removes matching lines on the two sides from
|
|
||||||
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
|
If merge is called without any commit argument, merge the upstream
|
||||||
|
@ -159,10 +159,6 @@ pack.writeBitmapHashCache::
|
|||||||
between an older, bitmapped pack and objects that have been
|
between an older, bitmapped pack and objects that have been
|
||||||
pushed since the last gc). The downside is that it consumes 4
|
pushed since the last gc). The downside is that it consumes 4
|
||||||
bytes per object of disk space. Defaults to true.
|
bytes per object of disk space. Defaults to true.
|
||||||
+
|
|
||||||
When writing a multi-pack reachability bitmap, no new namehashes are
|
|
||||||
computed; instead, any namehashes stored in an existing bitmap are
|
|
||||||
permuted into their appropriate location when writing a new bitmap.
|
|
||||||
|
|
||||||
pack.writeReverseIndex::
|
pack.writeReverseIndex::
|
||||||
When true, git will write a corresponding .rev file (see:
|
When true, git will write a corresponding .rev file (see:
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
protocol.allow::
|
protocol.allow::
|
||||||
If set, provide a user defined default policy for all protocols which
|
If set, provide a user defined default policy for all protocols which
|
||||||
don't explicitly have a policy (`protocol.<name>.allow`). By default,
|
don't explicitly have a policy (`protocol.<name>.allow`). By default,
|
||||||
if unset, known-safe protocols (http, https, git, ssh, file) have a
|
if unset, known-safe protocols (http, https, git, ssh) have a
|
||||||
default policy of `always`, known-dangerous protocols (ext) have a
|
default policy of `always`, known-dangerous protocols (ext) have a
|
||||||
default policy of `never`, and all other protocols have a default
|
default policy of `never`, and all other protocols (including file)
|
||||||
policy of `user`. Supported policies:
|
have a default policy of `user`. Supported policies:
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -18,6 +18,10 @@ When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
|
|||||||
so that the local merge commits are included in the rebase (see
|
so that the local merge commits are included in the rebase (see
|
||||||
linkgit:git-rebase[1] for details).
|
linkgit:git-rebase[1] for details).
|
||||||
+
|
+
|
||||||
|
When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
|
||||||
|
`--preserve-merges` along to 'git rebase' so that locally committed merge
|
||||||
|
commits will not be flattened by running 'git pull'.
|
||||||
|
+
|
||||||
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
When the value is `interactive` (or just 'i'), the rebase is run in interactive
|
||||||
mode.
|
mode.
|
||||||
+
|
+
|
||||||
|
42
Documentation/config/safe.txt
Normal file
42
Documentation/config/safe.txt
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
safe.directory::
|
||||||
|
These config entries specify Git-tracked directories that are
|
||||||
|
considered safe even if they are owned by someone other than the
|
||||||
|
current user. By default, Git will refuse to even parse a Git
|
||||||
|
config of a repository owned by someone else, let alone run its
|
||||||
|
hooks, and this config setting allows users to specify exceptions,
|
||||||
|
e.g. for intentionally shared repositories (see the `--shared`
|
||||||
|
option in linkgit:git-init[1]).
|
||||||
|
+
|
||||||
|
This is a multi-valued setting, i.e. you can add more than one directory
|
||||||
|
via `git config --add`. To reset the list of safe directories (e.g. to
|
||||||
|
override any such directories specified in the system config), add a
|
||||||
|
`safe.directory` entry with an empty value.
|
||||||
|
+
|
||||||
|
This config setting is only respected when specified in a system or global
|
||||||
|
config, not when it is specified in a repository config or via the command
|
||||||
|
line option `-c safe.directory=<path>`.
|
||||||
|
+
|
||||||
|
The value of this setting is interpolated, i.e. `~/<path>` expands to a
|
||||||
|
path relative to the home directory and `%(prefix)/<path>` expands to a
|
||||||
|
path relative to Git's (runtime) prefix.
|
||||||
|
+
|
||||||
|
To completely opt-out of this security check, set `safe.directory` to the
|
||||||
|
string `*`. This will allow all repositories to be treated as if their
|
||||||
|
directory was listed in the `safe.directory` list. If `safe.directory=*`
|
||||||
|
is set in system config and you want to re-enable this protection, then
|
||||||
|
initialize your list with an empty value before listing the repositories
|
||||||
|
that you deem safe.
|
||||||
|
+
|
||||||
|
As explained, Git only allows you to access repositories owned by
|
||||||
|
yourself, i.e. the user who is running Git, by default. When Git
|
||||||
|
is running as 'root' in a non Windows platform that provides sudo,
|
||||||
|
however, git checks the SUDO_UID environment variable that sudo creates
|
||||||
|
and will allow access to the uid recorded as its value in addition to
|
||||||
|
the id from 'root'.
|
||||||
|
This is to make it easy to perform a common sequence during installation
|
||||||
|
"make && sudo make install". A git process running under 'sudo' runs as
|
||||||
|
'root' but the 'sudo' command exports the environment variable to record
|
||||||
|
which id the original user has.
|
||||||
|
If that is not what you would prefer and want git to only trust
|
||||||
|
repositories that are owned by root instead, then you can remove
|
||||||
|
the `SUDO_UID` variable from root's environment before invoking git.
|
@ -36,13 +36,3 @@ user.signingKey::
|
|||||||
commit, you can override the default selection with this variable.
|
commit, you can override the default selection with this variable.
|
||||||
This option is passed unchanged to gpg's --local-user parameter,
|
This option is passed unchanged to gpg's --local-user parameter,
|
||||||
so you may specify a key using any method that gpg supports.
|
so you may specify a key using any method that gpg supports.
|
||||||
If gpg.format is set to `ssh` this can contain the path to either
|
|
||||||
your private ssh key or the public key when ssh-agent is used.
|
|
||||||
Alternatively it can contain a public key prefixed with `key::`
|
|
||||||
directly (e.g.: "key::ssh-rsa XXXXXX identifier"). The private key
|
|
||||||
needs to be available via ssh-agent. If not set git will call
|
|
||||||
gpg.ssh.defaultKeyCommand (e.g.: "ssh-add -L") and try to use the
|
|
||||||
first key available. For backward compatibility, a raw key which
|
|
||||||
begins with "ssh-", such as "ssh-rsa XXXXXX identifier", is treated
|
|
||||||
as "key::ssh-rsa XXXXXX identifier", but this form is deprecated;
|
|
||||||
use the `key::` form instead.
|
|
||||||
|
@ -5,9 +5,9 @@ The `GIT_AUTHOR_DATE` and `GIT_COMMITTER_DATE` environment variables
|
|||||||
support the following date formats:
|
support the following date formats:
|
||||||
|
|
||||||
Git internal format::
|
Git internal format::
|
||||||
It is `<unix-timestamp> <time-zone-offset>`, where
|
It is `<unix timestamp> <time zone offset>`, where `<unix
|
||||||
`<unix-timestamp>` is the number of seconds since the UNIX epoch.
|
timestamp>` is the number of seconds since the UNIX epoch.
|
||||||
`<time-zone-offset>` is a positive or negative offset from UTC.
|
`<time zone offset>` is a positive or negative offset from UTC.
|
||||||
For example CET (which is 1 hour ahead of UTC) is `+0100`.
|
For example CET (which is 1 hour ahead of UTC) is `+0100`.
|
||||||
|
|
||||||
RFC 2822::
|
RFC 2822::
|
||||||
|
@ -59,7 +59,7 @@ Possible status letters are:
|
|||||||
- D: deletion of a file
|
- D: deletion of a file
|
||||||
- M: modification of the contents or mode of a file
|
- M: modification of the contents or mode of a file
|
||||||
- R: renaming of a file
|
- R: renaming of a file
|
||||||
- T: change in the type of the file (regular file, symbolic link or submodule)
|
- T: change in the type of the file
|
||||||
- U: file is unmerged (you must complete the merge before it can
|
- U: file is unmerged (you must complete the merge before it can
|
||||||
be committed)
|
be committed)
|
||||||
- X: "unknown" change type (most probably a bug, please report it)
|
- X: "unknown" change type (most probably a bug, please report it)
|
||||||
|
@ -9,7 +9,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
|
'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
|
||||||
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--sparse]
|
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
|
||||||
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
|
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
|
||||||
[--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]
|
[--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]
|
||||||
[--] [<pathspec>...]
|
[--] [<pathspec>...]
|
||||||
@ -79,13 +79,6 @@ in linkgit:gitglossary[7].
|
|||||||
--force::
|
--force::
|
||||||
Allow adding otherwise ignored files.
|
Allow adding otherwise ignored files.
|
||||||
|
|
||||||
--sparse::
|
|
||||||
Allow updating index entries outside of the sparse-checkout cone.
|
|
||||||
Normally, `git add` refuses to update index entries whose paths do
|
|
||||||
not fit within the sparse-checkout cone, since those files might
|
|
||||||
be removed from the working tree without warning. See
|
|
||||||
linkgit:git-sparse-checkout[1] for more details.
|
|
||||||
|
|
||||||
-i::
|
-i::
|
||||||
--interactive::
|
--interactive::
|
||||||
Add modified contents in the working tree interactively to
|
Add modified contents in the working tree interactively to
|
||||||
|
@ -16,9 +16,8 @@ SYNOPSIS
|
|||||||
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
|
||||||
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
|
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
|
||||||
[--quoted-cr=<action>]
|
[--quoted-cr=<action>]
|
||||||
[--empty=(stop|drop|keep)]
|
|
||||||
[(<mbox> | <Maildir>)...]
|
[(<mbox> | <Maildir>)...]
|
||||||
'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)] | --allow-empty)
|
'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)])
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -64,14 +63,6 @@ OPTIONS
|
|||||||
--quoted-cr=<action>::
|
--quoted-cr=<action>::
|
||||||
This flag will be passed down to 'git mailinfo' (see linkgit:git-mailinfo[1]).
|
This flag will be passed down to 'git mailinfo' (see linkgit:git-mailinfo[1]).
|
||||||
|
|
||||||
--empty=(stop|drop|keep)::
|
|
||||||
By default, or when the option is set to 'stop', the command
|
|
||||||
errors out on an input e-mail message lacking a patch
|
|
||||||
and stops into the middle of the current am session. When this
|
|
||||||
option is set to 'drop', skip such an e-mail message instead.
|
|
||||||
When this option is set to 'keep', create an empty commit,
|
|
||||||
recording the contents of the e-mail message as its log.
|
|
||||||
|
|
||||||
-m::
|
-m::
|
||||||
--message-id::
|
--message-id::
|
||||||
Pass the `-m` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]),
|
Pass the `-m` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]),
|
||||||
@ -200,11 +191,6 @@ default. You can use `--no-utf8` to override this.
|
|||||||
the e-mail message; if `diff`, show the diff portion only.
|
the e-mail message; if `diff`, show the diff portion only.
|
||||||
Defaults to `raw`.
|
Defaults to `raw`.
|
||||||
|
|
||||||
--allow-empty::
|
|
||||||
After a patch failure on an input e-mail message lacking a patch,
|
|
||||||
create an empty commit with the contents of the e-mail message
|
|
||||||
as its log message.
|
|
||||||
|
|
||||||
DISCUSSION
|
DISCUSSION
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ SYNOPSIS
|
|||||||
[--ignore-space-change | --ignore-whitespace]
|
[--ignore-space-change | --ignore-whitespace]
|
||||||
[--whitespace=(nowarn|warn|fix|error|error-all)]
|
[--whitespace=(nowarn|warn|fix|error|error-all)]
|
||||||
[--exclude=<path>] [--include=<path>] [--directory=<root>]
|
[--exclude=<path>] [--include=<path>] [--directory=<root>]
|
||||||
[--verbose | --quiet] [--unsafe-paths] [--allow-empty] [<patch>...]
|
[--verbose] [--unsafe-paths] [<patch>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -228,11 +228,6 @@ behavior:
|
|||||||
current patch being applied will be printed. This option will cause
|
current patch being applied will be printed. This option will cause
|
||||||
additional information to be reported.
|
additional information to be reported.
|
||||||
|
|
||||||
-q::
|
|
||||||
--quiet::
|
|
||||||
Suppress stderr output. Messages about patch status and progress
|
|
||||||
will not be printed.
|
|
||||||
|
|
||||||
--recount::
|
--recount::
|
||||||
Do not trust the line counts in the hunk headers, but infer them
|
Do not trust the line counts in the hunk headers, but infer them
|
||||||
by inspecting the patch (e.g. after editing the patch without
|
by inspecting the patch (e.g. after editing the patch without
|
||||||
@ -256,10 +251,6 @@ When `git apply` is used as a "better GNU patch", the user can pass
|
|||||||
the `--unsafe-paths` option to override this safety check. This option
|
the `--unsafe-paths` option to override this safety check. This option
|
||||||
has no effect when `--index` or `--cached` is in use.
|
has no effect when `--index` or `--cached` is in use.
|
||||||
|
|
||||||
--allow-empty::
|
|
||||||
Don't return error for patches containing no diff. This includes
|
|
||||||
empty patches and patches with commit text only.
|
|
||||||
|
|
||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
@ -9,14 +9,14 @@ git-archimport - Import a GNU Arch repository into Git
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git archimport' [-h] [-v] [-o] [-a] [-f] [-T] [-D <depth>] [-t <tempdir>]
|
'git archimport' [-h] [-v] [-o] [-a] [-f] [-T] [-D depth] [-t tempdir]
|
||||||
<archive>/<branch>[:<git-branch>]...
|
<archive/branch>[:<git-branch>] ...
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
Imports a project from one or more GNU Arch repositories.
|
Imports a project from one or more GNU Arch repositories.
|
||||||
It will follow branches
|
It will follow branches
|
||||||
and repositories within the namespaces defined by the <archive>/<branch>
|
and repositories within the namespaces defined by the <archive/branch>
|
||||||
parameters supplied. If it cannot find the remote branch a merge comes from
|
parameters supplied. If it cannot find the remote branch a merge comes from
|
||||||
it will just import it as a regular commit. If it can find it, it will mark it
|
it will just import it as a regular commit. If it can find it, it will mark it
|
||||||
as a merge whenever possible (see discussion below).
|
as a merge whenever possible (see discussion below).
|
||||||
@ -27,7 +27,7 @@ import new branches within the provided roots.
|
|||||||
|
|
||||||
It expects to be dealing with one project only. If it sees
|
It expects to be dealing with one project only. If it sees
|
||||||
branches that have different roots, it will refuse to run. In that case,
|
branches that have different roots, it will refuse to run. In that case,
|
||||||
edit your <archive>/<branch> parameters to define clearly the scope of the
|
edit your <archive/branch> parameters to define clearly the scope of the
|
||||||
import.
|
import.
|
||||||
|
|
||||||
'git archimport' uses `tla` extensively in the background to access the
|
'git archimport' uses `tla` extensively in the background to access the
|
||||||
@ -42,7 +42,7 @@ incremental imports.
|
|||||||
|
|
||||||
While 'git archimport' will try to create sensible branch names for the
|
While 'git archimport' will try to create sensible branch names for the
|
||||||
archives that it imports, it is also possible to specify Git branch names
|
archives that it imports, it is also possible to specify Git branch names
|
||||||
manually. To do so, write a Git branch name after each <archive>/<branch>
|
manually. To do so, write a Git branch name after each <archive/branch>
|
||||||
parameter, separated by a colon. This way, you can shorten the Arch
|
parameter, separated by a colon. This way, you can shorten the Arch
|
||||||
branch names and convert Arch jargon to Git jargon, for example mapping a
|
branch names and convert Arch jargon to Git jargon, for example mapping a
|
||||||
"PROJECT{litdd}devo{litdd}VERSION" branch to "master".
|
"PROJECT{litdd}devo{litdd}VERSION" branch to "master".
|
||||||
@ -104,8 +104,8 @@ OPTIONS
|
|||||||
Override the default tempdir.
|
Override the default tempdir.
|
||||||
|
|
||||||
|
|
||||||
<archive>/<branch>::
|
<archive/branch>::
|
||||||
<archive>/<branch> identifier in a format that `tla log` understands.
|
Archive/branch identifier in a format that `tla log` understands.
|
||||||
|
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
|
@ -93,19 +93,12 @@ BACKEND EXTRA OPTIONS
|
|||||||
|
|
||||||
zip
|
zip
|
||||||
~~~
|
~~~
|
||||||
-<digit>::
|
-0::
|
||||||
Specify compression level. Larger values allow the command
|
Store the files instead of deflating them.
|
||||||
to spend more time to compress to smaller size. Supported
|
-9::
|
||||||
values are from `-0` (store-only) to `-9` (best ratio).
|
Highest and slowest compression level. You can specify any
|
||||||
Default is `-6` if not given.
|
number from 1 to 9 to adjust compression speed and ratio.
|
||||||
|
|
||||||
tar
|
|
||||||
~~~
|
|
||||||
-<number>::
|
|
||||||
Specify compression level. The value will be passed to the
|
|
||||||
compression command configured in `tar.<format>.command`. See
|
|
||||||
manual page of the configured command for the list of supported
|
|
||||||
levels and the default level if this option isn't specified.
|
|
||||||
|
|
||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
|
@ -11,8 +11,8 @@ SYNOPSIS
|
|||||||
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
|
'git blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
|
||||||
[-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
|
[-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
|
||||||
[--ignore-rev <rev>] [--ignore-revs-file <file>]
|
[--ignore-rev <rev>] [--ignore-revs-file <file>]
|
||||||
[--color-lines] [--color-by-age] [--progress] [--abbrev=<n>]
|
[--progress] [--abbrev=<n>] [<rev> | --contents <file> | --reverse <rev>..<rev>]
|
||||||
[<rev> | --contents <file> | --reverse <rev>..<rev>] [--] <file>
|
[--] <file>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -93,19 +93,6 @@ include::blame-options.txt[]
|
|||||||
is used for a caret to mark the boundary commit.
|
is used for a caret to mark the boundary commit.
|
||||||
|
|
||||||
|
|
||||||
THE DEFAULT FORMAT
|
|
||||||
------------------
|
|
||||||
|
|
||||||
When neither `--porcelain` nor `--incremental` option is specified,
|
|
||||||
`git blame` will output annotation for each line with:
|
|
||||||
|
|
||||||
- abbreviated object name for the commit the line came from;
|
|
||||||
- author ident (by default author name and date, unless `-s` or `-e`
|
|
||||||
is specified); and
|
|
||||||
- line number
|
|
||||||
|
|
||||||
before the line contents.
|
|
||||||
|
|
||||||
THE PORCELAIN FORMAT
|
THE PORCELAIN FORMAT
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ SYNOPSIS
|
|||||||
[--points-at <object>] [--format=<format>]
|
[--points-at <object>] [--format=<format>]
|
||||||
[(-r | --remotes) | (-a | --all)]
|
[(-r | --remotes) | (-a | --all)]
|
||||||
[--list] [<pattern>...]
|
[--list] [<pattern>...]
|
||||||
'git branch' [--track [direct|inherit] | --no-track] [-f] <branchname> [<start-point>]
|
'git branch' [--track | --no-track] [-f] <branchname> [<start-point>]
|
||||||
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
'git branch' (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
|
||||||
'git branch' --unset-upstream [<branchname>]
|
'git branch' --unset-upstream [<branchname>]
|
||||||
'git branch' (-m | -M) [<oldbranch>] <newbranch>
|
'git branch' (-m | -M) [<oldbranch>] <newbranch>
|
||||||
@ -125,14 +125,14 @@ OPTIONS
|
|||||||
|
|
||||||
-m::
|
-m::
|
||||||
--move::
|
--move::
|
||||||
Move/rename a branch, together with its config and reflog.
|
Move/rename a branch and the corresponding reflog.
|
||||||
|
|
||||||
-M::
|
-M::
|
||||||
Shortcut for `--move --force`.
|
Shortcut for `--move --force`.
|
||||||
|
|
||||||
-c::
|
-c::
|
||||||
--copy::
|
--copy::
|
||||||
Copy a branch, together with its config and reflog.
|
Copy a branch and the corresponding reflog.
|
||||||
|
|
||||||
-C::
|
-C::
|
||||||
Shortcut for `--copy --force`.
|
Shortcut for `--copy --force`.
|
||||||
@ -206,34 +206,24 @@ This option is only applicable in non-verbose mode.
|
|||||||
Display the full sha1s in the output listing rather than abbreviating them.
|
Display the full sha1s in the output listing rather than abbreviating them.
|
||||||
|
|
||||||
-t::
|
-t::
|
||||||
--track [inherit|direct]::
|
--track::
|
||||||
When creating a new branch, set up `branch.<name>.remote` and
|
When creating a new branch, set up `branch.<name>.remote` and
|
||||||
`branch.<name>.merge` configuration entries to set "upstream" tracking
|
`branch.<name>.merge` configuration entries to mark the
|
||||||
configuration for the new branch. This
|
start-point branch as "upstream" from the new branch. This
|
||||||
configuration will tell git to show the relationship between the
|
configuration will tell git to show the relationship between the
|
||||||
two branches in `git status` and `git branch -v`. Furthermore,
|
two branches in `git status` and `git branch -v`. Furthermore,
|
||||||
it directs `git pull` without arguments to pull from the
|
it directs `git pull` without arguments to pull from the
|
||||||
upstream when the new branch is checked out.
|
upstream when the new branch is checked out.
|
||||||
+
|
+
|
||||||
The exact upstream branch is chosen depending on the optional argument:
|
This behavior is the default when the start point is a remote-tracking branch.
|
||||||
`--track` or `--track direct` means to use the start-point branch itself as the
|
|
||||||
upstream; `--track inherit` means to copy the upstream configuration of the
|
|
||||||
start-point branch.
|
|
||||||
+
|
|
||||||
`--track direct` is the default when the start point is a remote-tracking branch.
|
|
||||||
Set the branch.autoSetupMerge configuration variable to `false` if you
|
Set the branch.autoSetupMerge configuration variable to `false` if you
|
||||||
want `git switch`, `git checkout` and `git branch` to always behave as if `--no-track`
|
want `git switch`, `git checkout` and `git branch` to always behave as if `--no-track`
|
||||||
were given. Set it to `always` if you want this behavior when the
|
were given. Set it to `always` if you want this behavior when the
|
||||||
start-point is either a local or remote-tracking branch. Set it to
|
start-point is either a local or remote-tracking branch.
|
||||||
`inherit` if you want to copy the tracking configuration from the
|
|
||||||
branch point.
|
|
||||||
+
|
|
||||||
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
|
Do not set up "upstream" configuration, even if the
|
||||||
branch.autoSetupMerge configuration variable is set.
|
branch.autoSetupMerge configuration variable is true.
|
||||||
|
|
||||||
--set-upstream::
|
--set-upstream::
|
||||||
As this option had confusing syntax, it is no longer supported.
|
As this option had confusing syntax, it is no longer supported.
|
||||||
|
@ -13,7 +13,7 @@ SYNOPSIS
|
|||||||
[--version=<version>] <file> <git-rev-list-args>
|
[--version=<version>] <file> <git-rev-list-args>
|
||||||
'git bundle' verify [-q | --quiet] <file>
|
'git bundle' verify [-q | --quiet] <file>
|
||||||
'git bundle' list-heads <file> [<refname>...]
|
'git bundle' list-heads <file> [<refname>...]
|
||||||
'git bundle' unbundle [--progress] <file> [<refname>...]
|
'git bundle' unbundle <file> [<refname>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -51,10 +51,10 @@ using the `--thin` option to linkgit:git-pack-objects[1], and
|
|||||||
unbundled using the `--fix-thin` option to linkgit:git-index-pack[1].
|
unbundled using the `--fix-thin` option to linkgit:git-index-pack[1].
|
||||||
|
|
||||||
There is no option to create a "thick pack" when using revision
|
There is no option to create a "thick pack" when using revision
|
||||||
exclusions, and users should not be concerned about the difference. By
|
exclusions, users should not be concerned about the difference. By
|
||||||
using "thin packs", bundles created using exclusions are smaller in
|
using "thin packs" bundles created using exclusions are smaller in
|
||||||
size. That they're "thin" under the hood is merely noted here as a
|
size. That they're "thin" under the hood is merely noted here as a
|
||||||
curiosity, and as a reference to other documentation.
|
curiosity, and as a reference to other documentation
|
||||||
|
|
||||||
See link:technical/bundle-format.html[the `bundle-format`
|
See link:technical/bundle-format.html[the `bundle-format`
|
||||||
documentation] for more details and the discussion of "thin pack" in
|
documentation] for more details and the discussion of "thin pack" in
|
||||||
@ -144,7 +144,7 @@ unbundle <file>::
|
|||||||
SPECIFYING REFERENCES
|
SPECIFYING REFERENCES
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
Revisions must be accompanied by reference names to be packaged in a
|
Revisions must accompanied by reference names to be packaged in a
|
||||||
bundle.
|
bundle.
|
||||||
|
|
||||||
More than one reference may be packaged, and more than one set of prerequisite objects can
|
More than one reference may be packaged, and more than one set of prerequisite objects can
|
||||||
|
@ -94,10 +94,8 @@ OPTIONS
|
|||||||
Instead of reading a list of objects on stdin, perform the
|
Instead of reading a list of objects on stdin, perform the
|
||||||
requested batch operation on all objects in the repository and
|
requested batch operation on all objects in the repository and
|
||||||
any alternate object stores (not just reachable objects).
|
any alternate object stores (not just reachable objects).
|
||||||
Requires `--batch` or `--batch-check` be specified. By default,
|
Requires `--batch` or `--batch-check` be specified. Note that
|
||||||
the objects are visited in order sorted by their hashes; see
|
the objects are visited in order sorted by their hashes.
|
||||||
also `--unordered` below. Objects are presented as-is, without
|
|
||||||
respecting the "replace" mechanism of linkgit:git-replace[1].
|
|
||||||
|
|
||||||
--buffer::
|
--buffer::
|
||||||
Normally batch output is flushed after each object is output, so
|
Normally batch output is flushed after each object is output, so
|
||||||
|
@ -11,7 +11,7 @@ SYNOPSIS
|
|||||||
'git checkout' [-q] [-f] [-m] [<branch>]
|
'git checkout' [-q] [-f] [-m] [<branch>]
|
||||||
'git checkout' [-q] [-f] [-m] --detach [<branch>]
|
'git checkout' [-q] [-f] [-m] --detach [<branch>]
|
||||||
'git checkout' [-q] [-f] [-m] [--detach] <commit>
|
'git checkout' [-q] [-f] [-m] [--detach] <commit>
|
||||||
'git checkout' [-q] [-f] [-m] [[-b|-B|--orphan] <new-branch>] [<start-point>]
|
'git checkout' [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>]
|
||||||
'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>...
|
'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]
|
'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]
|
||||||
'git checkout' (-p|--patch) [<tree-ish>] [--] [<pathspec>...]
|
'git checkout' (-p|--patch) [<tree-ish>] [--] [<pathspec>...]
|
||||||
@ -43,7 +43,7 @@ You could omit `<branch>`, in which case the command degenerates to
|
|||||||
rather expensive side-effects to show only the tracking information,
|
rather expensive side-effects to show only the tracking information,
|
||||||
if exists, for the current branch.
|
if exists, for the current branch.
|
||||||
|
|
||||||
'git checkout' -b|-B <new-branch> [<start-point>]::
|
'git checkout' -b|-B <new_branch> [<start point>]::
|
||||||
|
|
||||||
Specifying `-b` causes a new branch to be created as if
|
Specifying `-b` causes a new branch to be created as if
|
||||||
linkgit:git-branch[1] were called and then checked out. In
|
linkgit:git-branch[1] were called and then checked out. In
|
||||||
@ -52,11 +52,11 @@ if exists, for the current branch.
|
|||||||
`--track` without `-b` implies branch creation; see the
|
`--track` without `-b` implies branch creation; see the
|
||||||
description of `--track` below.
|
description of `--track` below.
|
||||||
+
|
+
|
||||||
If `-B` is given, `<new-branch>` is created if it doesn't exist; otherwise, it
|
If `-B` is given, `<new_branch>` is created if it doesn't exist; otherwise, it
|
||||||
is reset. This is the transactional equivalent of
|
is reset. This is the transactional equivalent of
|
||||||
+
|
+
|
||||||
------------
|
------------
|
||||||
$ git branch -f <branch> [<start-point>]
|
$ git branch -f <branch> [<start point>]
|
||||||
$ git checkout <branch>
|
$ git checkout <branch>
|
||||||
------------
|
------------
|
||||||
+
|
+
|
||||||
@ -118,9 +118,8 @@ OPTIONS
|
|||||||
-f::
|
-f::
|
||||||
--force::
|
--force::
|
||||||
When switching branches, proceed even if the index or the
|
When switching branches, proceed even if the index or the
|
||||||
working tree differs from `HEAD`, and even if there are untracked
|
working tree differs from `HEAD`. This is used to throw away
|
||||||
files in the way. This is used to throw away local changes and
|
local changes.
|
||||||
any untracked files or directories that are in the way.
|
|
||||||
+
|
+
|
||||||
When checking out paths from the index, do not fail upon unmerged
|
When checking out paths from the index, do not fail upon unmerged
|
||||||
entries; instead, unmerged entries are ignored.
|
entries; instead, unmerged entries are ignored.
|
||||||
@ -145,18 +144,18 @@ 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
|
on your side branch as `theirs` (i.e. "one contributor's work on top
|
||||||
of it").
|
of it").
|
||||||
|
|
||||||
-b <new-branch>::
|
-b <new_branch>::
|
||||||
Create a new branch named `<new-branch>` and start it at
|
Create a new branch named `<new_branch>` and start it at
|
||||||
`<start-point>`; see linkgit:git-branch[1] for details.
|
`<start_point>`; see linkgit:git-branch[1] for details.
|
||||||
|
|
||||||
-B <new-branch>::
|
-B <new_branch>::
|
||||||
Creates the branch `<new-branch>` and start it at `<start-point>`;
|
Creates the branch `<new_branch>` and start it at `<start_point>`;
|
||||||
if it already exists, then reset it to `<start-point>`. This is
|
if it already exists, then reset it to `<start_point>`. This is
|
||||||
equivalent to running "git branch" with "-f"; see
|
equivalent to running "git branch" with "-f"; see
|
||||||
linkgit:git-branch[1] for details.
|
linkgit:git-branch[1] for details.
|
||||||
|
|
||||||
-t::
|
-t::
|
||||||
--track [direct|inherit]::
|
--track::
|
||||||
When creating a new branch, set up "upstream" configuration. See
|
When creating a new branch, set up "upstream" configuration. See
|
||||||
"--track" in linkgit:git-branch[1] for details.
|
"--track" in linkgit:git-branch[1] for details.
|
||||||
+
|
+
|
||||||
@ -210,16 +209,16 @@ variable.
|
|||||||
`<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.
|
below for details.
|
||||||
|
|
||||||
--orphan <new-branch>::
|
--orphan <new_branch>::
|
||||||
Create a new 'orphan' branch, named `<new-branch>`, started from
|
Create a new 'orphan' branch, named `<new_branch>`, started from
|
||||||
`<start-point>` and switch to it. The first commit made on this
|
`<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
|
new branch will have no parents and it will be the root of a new
|
||||||
history totally disconnected from all the other branches and
|
history totally disconnected from all the other branches and
|
||||||
commits.
|
commits.
|
||||||
+
|
+
|
||||||
The index and the working tree are adjusted as if you had previously run
|
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
|
`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.
|
`git commit -a` to make the root commit.
|
||||||
+
|
+
|
||||||
This can be useful when you want to publish the tree from a commit
|
This can be useful when you want to publish the tree from a commit
|
||||||
@ -229,7 +228,7 @@ whose full history contains proprietary or otherwise encumbered bits of
|
|||||||
code.
|
code.
|
||||||
+
|
+
|
||||||
If you want to start a disconnected history that records a set of paths
|
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
|
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.
|
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
|
Afterwards you will be ready to prepare your new files, repopulating the
|
||||||
@ -266,7 +265,8 @@ When switching branches with `--merge`, staged changes may be lost.
|
|||||||
The same as `--merge` option above, but changes the way the
|
The same as `--merge` option above, but changes the way the
|
||||||
conflicting hunks are presented, overriding the
|
conflicting hunks are presented, overriding the
|
||||||
`merge.conflictStyle` configuration variable. Possible values are
|
`merge.conflictStyle` configuration variable. Possible values are
|
||||||
"merge" (default), "diff3", and "zdiff3".
|
"merge" (default) and "diff3" (in addition to what is shown by
|
||||||
|
"merge" style, shows the original contents).
|
||||||
|
|
||||||
-p::
|
-p::
|
||||||
--patch::
|
--patch::
|
||||||
@ -340,10 +340,10 @@ 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
|
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`.
|
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.
|
Name for the new branch.
|
||||||
|
|
||||||
<start-point>::
|
<start_point>::
|
||||||
The name of a commit at which to start the new branch; see
|
The name of a commit at which to start the new branch; see
|
||||||
linkgit:git-branch[1] for details. Defaults to `HEAD`.
|
linkgit:git-branch[1] for details. Defaults to `HEAD`.
|
||||||
+
|
+
|
||||||
|
@ -8,7 +8,7 @@ git-cherry-pick - Apply the changes introduced by some existing commits
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git cherry-pick' [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]
|
'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--ff]
|
||||||
[-S[<keyid>]] <commit>...
|
[-S[<keyid>]] <commit>...
|
||||||
'git cherry-pick' (--continue | --skip | --abort | --quit)
|
'git cherry-pick' (--continue | --skip | --abort | --quit)
|
||||||
|
|
||||||
@ -81,8 +81,8 @@ OPTIONS
|
|||||||
described above, and `-r` was to disable it. Now the
|
described above, and `-r` was to disable it. Now the
|
||||||
default is not to do `-x` so this option is a no-op.
|
default is not to do `-x` so this option is a no-op.
|
||||||
|
|
||||||
-m <parent-number>::
|
-m parent-number::
|
||||||
--mainline <parent-number>::
|
--mainline parent-number::
|
||||||
Usually you cannot cherry-pick a merge because you do not know which
|
Usually you cannot cherry-pick a merge because you do not know which
|
||||||
side of the merge should be considered the mainline. This
|
side of the merge should be considered the mainline. This
|
||||||
option specifies the parent number (starting from 1) of
|
option specifies the parent number (starting from 1) of
|
||||||
|
@ -9,10 +9,10 @@ git-clone - Clone a repository into a new directory
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git clone' [--template=<template-directory>]
|
'git clone' [--template=<template_directory>]
|
||||||
[-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
|
[-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
|
||||||
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
|
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
|
||||||
[--dissociate] [--separate-git-dir <git-dir>]
|
[--dissociate] [--separate-git-dir <git dir>]
|
||||||
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
[--depth <depth>] [--[no-]single-branch] [--no-tags]
|
||||||
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
|
||||||
[--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
|
[--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
|
||||||
@ -167,10 +167,10 @@ objects from the source repository into a pack in the cloned repository.
|
|||||||
configuration variables are created.
|
configuration variables are created.
|
||||||
|
|
||||||
--sparse::
|
--sparse::
|
||||||
Employ a sparse-checkout, with only files in the toplevel
|
Initialize the sparse-checkout file so the working
|
||||||
directory initially being present. The
|
directory starts with only the files in the root
|
||||||
linkgit:git-sparse-checkout[1] command can be used to grow the
|
of the repository. The sparse-checkout file can be
|
||||||
working directory as needed.
|
modified to grow the working directory as needed.
|
||||||
|
|
||||||
--filter=<filter-spec>::
|
--filter=<filter-spec>::
|
||||||
Use the partial clone feature and request that the server sends
|
Use the partial clone feature and request that the server sends
|
||||||
@ -211,7 +211,7 @@ objects from the source repository into a pack in the cloned repository.
|
|||||||
via ssh, this specifies a non-default path for the command
|
via ssh, this specifies a non-default path for the command
|
||||||
run on the other end.
|
run on the other end.
|
||||||
|
|
||||||
--template=<template-directory>::
|
--template=<template_directory>::
|
||||||
Specify the directory from which templates will be used;
|
Specify the directory from which templates will be used;
|
||||||
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
|
(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
|
||||||
|
|
||||||
@ -294,7 +294,7 @@ or `--mirror` is given)
|
|||||||
superproject's recorded SHA-1. Equivalent to passing `--remote` to
|
superproject's recorded SHA-1. Equivalent to passing `--remote` to
|
||||||
`git submodule update`.
|
`git submodule update`.
|
||||||
|
|
||||||
--separate-git-dir=<git-dir>::
|
--separate-git-dir=<git dir>::
|
||||||
Instead of placing the cloned repository where it is supposed
|
Instead of placing the cloned repository where it is supposed
|
||||||
to be, place the cloned repository at the specified directory,
|
to be, place the cloned repository at the specified directory,
|
||||||
then make a filesystem-agnostic Git symbolic link to there.
|
then make a filesystem-agnostic Git symbolic link to there.
|
||||||
|
@ -212,9 +212,8 @@ include::signoff-option.txt[]
|
|||||||
each trailer would appear, and other details.
|
each trailer would appear, and other details.
|
||||||
|
|
||||||
-n::
|
-n::
|
||||||
--[no-]verify::
|
--no-verify::
|
||||||
By default, the pre-commit and commit-msg hooks are run.
|
This option bypasses the pre-commit and commit-msg hooks.
|
||||||
When any of `--no-verify` or `-n` is given, these are bypassed.
|
|
||||||
See also linkgit:githooks[5].
|
See also linkgit:githooks[5].
|
||||||
|
|
||||||
--allow-empty::
|
--allow-empty::
|
||||||
|
@ -9,20 +9,20 @@ git-config - Get and set repository or global options
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git config' [<file-option>] [--type=<type>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] <name> [<value> [<value-pattern>]]
|
'git config' [<file-option>] [--type=<type>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] name [value [value-pattern]]
|
||||||
'git config' [<file-option>] [--type=<type>] --add <name> <value>
|
'git config' [<file-option>] [--type=<type>] --add name value
|
||||||
'git config' [<file-option>] [--type=<type>] [--fixed-value] --replace-all <name> <value> [<value-pattern>]
|
'git config' [<file-option>] [--type=<type>] [--fixed-value] --replace-all name value [value-pattern]
|
||||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get <name> [<value-pattern>]
|
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get name [value-pattern]
|
||||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get-all <name> [<value-pattern>]
|
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get-all name [value-pattern]
|
||||||
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] [--name-only] --get-regexp <name-regex> [<value-pattern>]
|
'git config' [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] [--name-only] --get-regexp name_regex [value-pattern]
|
||||||
'git config' [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch <name> <URL>
|
'git config' [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
|
||||||
'git config' [<file-option>] [--fixed-value] --unset <name> [<value-pattern>]
|
'git config' [<file-option>] [--fixed-value] --unset name [value-pattern]
|
||||||
'git config' [<file-option>] [--fixed-value] --unset-all <name> [<value-pattern>]
|
'git config' [<file-option>] [--fixed-value] --unset-all name [value-pattern]
|
||||||
'git config' [<file-option>] --rename-section <old-name> <new-name>
|
'git config' [<file-option>] --rename-section old_name new_name
|
||||||
'git config' [<file-option>] --remove-section <name>
|
'git config' [<file-option>] --remove-section name
|
||||||
'git config' [<file-option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list
|
'git config' [<file-option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list
|
||||||
'git config' [<file-option>] --get-color <name> [<default>]
|
'git config' [<file-option>] --get-color name [default]
|
||||||
'git config' [<file-option>] --get-colorbool <name> [<stdout-is-tty>]
|
'git config' [<file-option>] --get-colorbool name [stdout-is-tty]
|
||||||
'git config' [<file-option>] -e | --edit
|
'git config' [<file-option>] -e | --edit
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -102,9 +102,9 @@ OPTIONS
|
|||||||
in which section and variable names are lowercased, but subsection
|
in which section and variable names are lowercased, but subsection
|
||||||
names are not.
|
names are not.
|
||||||
|
|
||||||
--get-urlmatch <name> <URL>::
|
--get-urlmatch name URL::
|
||||||
When given a two-part name section.key, the value for
|
When given a two-part name section.key, the value for
|
||||||
section.<URL>.key whose <URL> part matches the best to the
|
section.<url>.key whose <url> part matches the best to the
|
||||||
given URL is returned (if no such key exists, the value for
|
given URL is returned (if no such key exists, the value for
|
||||||
section.key is used as a fallback). When given just the
|
section.key is used as a fallback). When given just the
|
||||||
section as name, do so for all the keys in the section and
|
section as name, do so for all the keys in the section and
|
||||||
@ -145,8 +145,8 @@ See also <<FILES>>.
|
|||||||
read from or written to if `extensions.worktreeConfig` is
|
read from or written to if `extensions.worktreeConfig` is
|
||||||
present. If not it's the same as `--local`.
|
present. If not it's the same as `--local`.
|
||||||
|
|
||||||
-f <config-file>::
|
-f config-file::
|
||||||
--file <config-file>::
|
--file config-file::
|
||||||
For writing options: write to the specified file rather than the
|
For writing options: write to the specified file rather than the
|
||||||
repository `.git/config`.
|
repository `.git/config`.
|
||||||
+
|
+
|
||||||
@ -155,7 +155,7 @@ available files.
|
|||||||
+
|
+
|
||||||
See also <<FILES>>.
|
See also <<FILES>>.
|
||||||
|
|
||||||
--blob <blob>::
|
--blob blob::
|
||||||
Similar to `--file` but use the given blob instead of a file. E.g.
|
Similar to `--file` but use the given blob instead of a file. E.g.
|
||||||
you can use 'master:.gitmodules' to read values from the file
|
you can use 'master:.gitmodules' to read values from the file
|
||||||
'.gitmodules' in the master branch. See "SPECIFYING REVISIONS"
|
'.gitmodules' in the master branch. See "SPECIFYING REVISIONS"
|
||||||
@ -246,18 +246,18 @@ Valid `<type>`'s include:
|
|||||||
all queried config options with the scope of that value
|
all queried config options with the scope of that value
|
||||||
(local, global, system, command).
|
(local, global, system, command).
|
||||||
|
|
||||||
--get-colorbool <name> [<stdout-is-tty>]::
|
--get-colorbool name [stdout-is-tty]::
|
||||||
|
|
||||||
Find the color setting for `<name>` (e.g. `color.diff`) and output
|
Find the color setting for `name` (e.g. `color.diff`) and output
|
||||||
"true" or "false". `<stdout-is-tty>` should be either "true" or
|
"true" or "false". `stdout-is-tty` should be either "true" or
|
||||||
"false", and is taken into account when configuration says
|
"false", and is taken into account when configuration says
|
||||||
"auto". If `<stdout-is-tty>` is missing, then checks the standard
|
"auto". If `stdout-is-tty` is missing, then checks the standard
|
||||||
output of the command itself, and exits with status 0 if color
|
output of the command itself, and exits with status 0 if color
|
||||||
is to be used, or exits with status 1 otherwise.
|
is to be used, or exits with status 1 otherwise.
|
||||||
When the color setting for `name` is undefined, the command uses
|
When the color setting for `name` is undefined, the command uses
|
||||||
`color.ui` as fallback.
|
`color.ui` as fallback.
|
||||||
|
|
||||||
--get-color <name> [<default>]::
|
--get-color name [default]::
|
||||||
|
|
||||||
Find the color configured for `name` (e.g. `color.diff.new`) and
|
Find the color configured for `name` (e.g. `color.diff.new`) and
|
||||||
output it as the ANSI color escape sequence to the standard
|
output it as the ANSI color escape sequence to the standard
|
||||||
|
@ -8,7 +8,7 @@ git-credential - Retrieve and store user credentials
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
------------------
|
------------------
|
||||||
'git credential' (fill|approve|reject)
|
git credential <fill|approve|reject>
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
@ -9,8 +9,8 @@ git-cvsexportcommit - Export a single commit to a CVS checkout
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git cvsexportcommit' [-h] [-u] [-v] [-c] [-P] [-p] [-a] [-d <cvsroot>]
|
'git cvsexportcommit' [-h] [-u] [-v] [-c] [-P] [-p] [-a] [-d cvsroot]
|
||||||
[-w <cvs-workdir>] [-W] [-f] [-m <msgprefix>] [<parent-commit>] <commit-id>
|
[-w cvsworkdir] [-W] [-f] [-m msgprefix] [PARENTCOMMIT] COMMITID
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
@ -11,9 +11,9 @@ SYNOPSIS
|
|||||||
[verse]
|
[verse]
|
||||||
'git cvsimport' [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>]
|
'git cvsimport' [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>]
|
||||||
[-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>]
|
[-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>]
|
||||||
[-C <git-repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>]
|
[-C <git_repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>]
|
||||||
[-a] [-m] [-M <regex>] [-S <regex>] [-L <commit-limit>]
|
[-a] [-m] [-M <regex>] [-S <regex>] [-L <commitlimit>]
|
||||||
[-r <remote>] [-R] [<CVS-module>]
|
[-r <remote>] [-R] [<CVS_module>]
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -59,7 +59,7 @@ OPTIONS
|
|||||||
from `CVS/Root`. If no such file exists, it checks for the
|
from `CVS/Root`. If no such file exists, it checks for the
|
||||||
`CVSROOT` environment variable.
|
`CVSROOT` environment variable.
|
||||||
|
|
||||||
<CVS-module>::
|
<CVS_module>::
|
||||||
The CVS module you want to import. Relative to <CVSROOT>.
|
The CVS module you want to import. Relative to <CVSROOT>.
|
||||||
If not given, 'git cvsimport' tries to read it from
|
If not given, 'git cvsimport' tries to read it from
|
||||||
`CVS/Repository`.
|
`CVS/Repository`.
|
||||||
|
@ -9,7 +9,7 @@ git-diff-files - Compares files in the working tree and the index
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git diff-files' [-q] [-0|-1|-2|-3|-c|--cc] [<common-diff-options>] [<path>...]
|
'git diff-files' [-q] [-0|-1|-2|-3|-c|--cc] [<common diff options>] [<path>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -9,7 +9,7 @@ git-diff-index - Compare a tree to the working tree or index
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git diff-index' [-m] [--cached] [--merge-base] [<common-diff-options>] <tree-ish> [<path>...]
|
'git diff-index' [-m] [--cached] [--merge-base] [<common diff options>] <tree-ish> [<path>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -11,7 +11,7 @@ SYNOPSIS
|
|||||||
[verse]
|
[verse]
|
||||||
'git diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
|
'git diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
|
||||||
[-t] [-r] [-c | --cc] [--combined-all-paths] [--root] [--merge-base]
|
[-t] [-r] [-c | --cc] [--combined-all-paths] [--root] [--merge-base]
|
||||||
[<common-diff-options>] <tree-ish> [<tree-ish>] [<path>...]
|
[<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -9,7 +9,7 @@ git-fmt-merge-msg - Produce a merge commit message
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git fmt-merge-msg' [-m <message>] [--into-name <branch>] [--log[=<n>] | --no-log]
|
'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log]
|
||||||
'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log] -F <file>
|
'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log] -F <file>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -44,10 +44,6 @@ OPTIONS
|
|||||||
Use <message> instead of the branch names for the first line
|
Use <message> instead of the branch names for the first line
|
||||||
of the log message. For use with `--log`.
|
of the log message. For use with `--log`.
|
||||||
|
|
||||||
--into-name <branch>::
|
|
||||||
Prepare the merge message as if merging to the branch `<branch>`,
|
|
||||||
instead of the name of the real branch to which the merge is made.
|
|
||||||
|
|
||||||
-F <file>::
|
-F <file>::
|
||||||
--file <file>::
|
--file <file>::
|
||||||
Take the list of merged objects from <file> instead of
|
Take the list of merged objects from <file> instead of
|
||||||
|
@ -235,15 +235,6 @@ and `date` to extract the named component. For email fields (`authoremail`,
|
|||||||
without angle brackets, and `:localpart` to get the part before the `@` symbol
|
without angle brackets, and `:localpart` to get the part before the `@` symbol
|
||||||
out of the trimmed email.
|
out of the trimmed email.
|
||||||
|
|
||||||
The raw data in an object is `raw`.
|
|
||||||
|
|
||||||
raw:size::
|
|
||||||
The raw data size of the object.
|
|
||||||
|
|
||||||
Note that `--format=%(raw)` can not be used with `--python`, `--shell`, `--tcl`,
|
|
||||||
because such language may not support arbitrary binary data in their string
|
|
||||||
variable type.
|
|
||||||
|
|
||||||
The message in a commit or a tag object is `contents`, from which
|
The message in a commit or a tag object is `contents`, from which
|
||||||
`contents:<part>` can be used to extract various parts out of:
|
`contents:<part>` can be used to extract various parts out of:
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ SYNOPSIS
|
|||||||
[-n | --numbered | -N | --no-numbered]
|
[-n | --numbered | -N | --no-numbered]
|
||||||
[--start-number <n>] [--numbered-files]
|
[--start-number <n>] [--numbered-files]
|
||||||
[--in-reply-to=<message id>] [--suffix=.<sfx>]
|
[--in-reply-to=<message id>] [--suffix=.<sfx>]
|
||||||
[--ignore-if-in-upstream] [--always]
|
[--ignore-if-in-upstream]
|
||||||
[--cover-from-description=<mode>]
|
[--cover-from-description=<mode>]
|
||||||
[--rfc] [--subject-prefix=<subject prefix>]
|
[--rfc] [--subject-prefix=<subject prefix>]
|
||||||
[(--reroll-count|-v) <n>]
|
[(--reroll-count|-v) <n>]
|
||||||
@ -192,10 +192,6 @@ will want to ensure that threading is disabled for `git send-email`.
|
|||||||
patches being generated, and any patch that matches is
|
patches being generated, and any patch that matches is
|
||||||
ignored.
|
ignored.
|
||||||
|
|
||||||
--always::
|
|
||||||
Include patches for commits that do not introduce any change,
|
|
||||||
which are omitted by default.
|
|
||||||
|
|
||||||
--cover-from-description=<mode>::
|
--cover-from-description=<mode>::
|
||||||
Controls which parts of the cover letter will be automatically
|
Controls which parts of the cover letter will be automatically
|
||||||
populated using the branch's description.
|
populated using the branch's description.
|
||||||
@ -693,10 +689,10 @@ You can also use `git format-patch --base=P -3 C` to generate patches
|
|||||||
for A, B and C, and the identifiers for P, X, Y, Z are appended at the
|
for A, B and C, and the identifiers for P, X, Y, Z are appended at the
|
||||||
end of the first message.
|
end of the first message.
|
||||||
|
|
||||||
If set `--base=auto` in cmdline, it will automatically compute
|
If set `--base=auto` in cmdline, it will track base commit automatically,
|
||||||
the base commit as the merge base of tip commit of the remote-tracking
|
the base commit will be the merge base of tip commit of the remote-tracking
|
||||||
branch and revision-range specified in cmdline.
|
branch and revision-range specified in cmdline.
|
||||||
For a local branch, you need to make it to track a remote branch by `git branch
|
For a local branch, you need to track a remote branch by `git branch
|
||||||
--set-upstream-to` before using this option.
|
--set-upstream-to` before using this option.
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
@ -12,7 +12,7 @@ SYNOPSIS
|
|||||||
'git fsck' [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
|
'git fsck' [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
|
||||||
[--[no-]full] [--strict] [--verbose] [--lost-found]
|
[--[no-]full] [--strict] [--verbose] [--lost-found]
|
||||||
[--[no-]dangling] [--[no-]progress] [--connectivity-only]
|
[--[no-]dangling] [--[no-]progress] [--connectivity-only]
|
||||||
[--[no-]name-objects] [<object>...]
|
[--[no-]name-objects] [<object>*]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -8,7 +8,7 @@ git-gui - A portable graphical interface to Git
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git gui' [<command>] [<arguments>]
|
'git gui' [<command>] [arguments]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -8,15 +8,13 @@ git-help - Display help information about Git
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git help' [-a|--all [--[no-]verbose]]
|
'git help' [-a|--all [--[no-]verbose]] [-g|--guides]
|
||||||
[[-i|--info] [-m|--man] [-w|--web]] [<command>|<guide>]
|
[-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE]
|
||||||
'git help' [-g|--guides]
|
|
||||||
'git help' [-c|--config]
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
With no options and no '<command>' or '<guide>' given, the synopsis of the 'git'
|
With no options and no COMMAND or GUIDE given, the synopsis of the 'git'
|
||||||
command and a list of the most commonly used Git commands are printed
|
command and a list of the most commonly used Git commands are printed
|
||||||
on the standard output.
|
on the standard output.
|
||||||
|
|
||||||
@ -33,7 +31,7 @@ variables.
|
|||||||
|
|
||||||
If an alias is given, git shows the definition of the alias on
|
If an alias is given, git shows the definition of the alias on
|
||||||
standard output. To get the manual page for the aliased command, use
|
standard output. To get the manual page for the aliased command, use
|
||||||
`git <command> --help`.
|
`git COMMAND --help`.
|
||||||
|
|
||||||
Note that `git --help ...` is identical to `git help ...` because the
|
Note that `git --help ...` is identical to `git help ...` because the
|
||||||
former is internally converted into the latter.
|
former is internally converted into the latter.
|
||||||
@ -60,7 +58,8 @@ OPTIONS
|
|||||||
|
|
||||||
-g::
|
-g::
|
||||||
--guides::
|
--guides::
|
||||||
Prints a list of the Git concept guides on the standard output.
|
Prints a list of the Git concept guides on the standard output. This
|
||||||
|
option overrides any given command or guide name.
|
||||||
|
|
||||||
-i::
|
-i::
|
||||||
--info::
|
--info::
|
||||||
|
@ -16,9 +16,7 @@ A simple CGI program to serve the contents of a Git repository to Git
|
|||||||
clients accessing the repository over http:// and https:// protocols.
|
clients accessing the repository over http:// and https:// protocols.
|
||||||
The program supports clients fetching using both the smart HTTP protocol
|
The program supports clients fetching using both the smart HTTP protocol
|
||||||
and the backwards-compatible dumb HTTP protocol, as well as clients
|
and the backwards-compatible dumb HTTP protocol, as well as clients
|
||||||
pushing using the smart HTTP protocol. It also supports Git's
|
pushing using the smart HTTP protocol.
|
||||||
more-efficient "v2" protocol if properly configured; see the
|
|
||||||
discussion of `GIT_PROTOCOL` in the ENVIRONMENT section below.
|
|
||||||
|
|
||||||
It verifies that the directory has the magic file
|
It verifies that the directory has the magic file
|
||||||
"git-daemon-export-ok", and it will refuse to export any Git directory
|
"git-daemon-export-ok", and it will refuse to export any Git directory
|
||||||
@ -79,18 +77,6 @@ Apache 2.x::
|
|||||||
SetEnv GIT_PROJECT_ROOT /var/www/git
|
SetEnv GIT_PROJECT_ROOT /var/www/git
|
||||||
SetEnv GIT_HTTP_EXPORT_ALL
|
SetEnv GIT_HTTP_EXPORT_ALL
|
||||||
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
|
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
|
||||||
|
|
||||||
# This is not strictly necessary using Apache and a modern version of
|
|
||||||
# git-http-backend, as the webserver will pass along the header in the
|
|
||||||
# environment as HTTP_GIT_PROTOCOL, and http-backend will copy that into
|
|
||||||
# GIT_PROTOCOL. But you may need this line (or something similar if you
|
|
||||||
# are using a different webserver), or if you want to support older Git
|
|
||||||
# versions that did not do that copying.
|
|
||||||
#
|
|
||||||
# Having the webserver set up GIT_PROTOCOL is perfectly fine even with
|
|
||||||
# modern versions (and will take precedence over HTTP_GIT_PROTOCOL,
|
|
||||||
# which means it can be used to override the client's request).
|
|
||||||
SetEnvIf Git-Protocol ".*" GIT_PROTOCOL=$0
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
+
|
+
|
||||||
To enable anonymous read access but authenticated write access,
|
To enable anonymous read access but authenticated write access,
|
||||||
@ -278,16 +264,6 @@ a repository with an extremely large number of refs. The value can be
|
|||||||
specified with a unit (e.g., `100M` for 100 megabytes). The default is
|
specified with a unit (e.g., `100M` for 100 megabytes). The default is
|
||||||
10 megabytes.
|
10 megabytes.
|
||||||
|
|
||||||
Clients may probe for optional protocol capabilities (like the v2
|
|
||||||
protocol) using the `Git-Protocol` HTTP header. In order to support
|
|
||||||
these, the contents of that header must appear in the `GIT_PROTOCOL`
|
|
||||||
environment variable. Most webservers will pass this header to the CGI
|
|
||||||
via the `HTTP_GIT_PROTOCOL` variable, and `git-http-backend` will
|
|
||||||
automatically copy that to `GIT_PROTOCOL`. However, some webservers may
|
|
||||||
be more selective about which headers they'll pass, in which case they
|
|
||||||
need to be configured explicitly (see the mention of `Git-Protocol` in
|
|
||||||
the Apache config from the earlier EXAMPLES section).
|
|
||||||
|
|
||||||
The backend process sets GIT_COMMITTER_NAME to '$REMOTE_USER' and
|
The backend process sets GIT_COMMITTER_NAME to '$REMOTE_USER' and
|
||||||
GIT_COMMITTER_EMAIL to '$\{REMOTE_USER}@http.$\{REMOTE_ADDR\}',
|
GIT_COMMITTER_EMAIL to '$\{REMOTE_USER}@http.$\{REMOTE_ADDR\}',
|
||||||
ensuring that any reflogs created by 'git-receive-pack' contain some
|
ensuring that any reflogs created by 'git-receive-pack' contain some
|
||||||
|
@ -9,7 +9,7 @@ git-http-fetch - Download from a remote Git repository via HTTP
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git http-fetch' [-c] [-t] [-a] [-d] [-v] [-w <filename>] [--recover] [--stdin | --packfile=<hash> | <commit>] <URL>
|
'git http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [--stdin | --packfile=<hash> | <commit>] <url>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -9,7 +9,7 @@ git-http-push - Push objects over HTTP/DAV to another repository
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git http-push' [--all] [--dry-run] [--force] [--verbose] <URL> <ref> [<ref>...]
|
'git http-push' [--all] [--dry-run] [--force] [--verbose] <url> <ref> [<ref>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -63,15 +63,16 @@ of such patterns separated by a colon ":" (this means that a ref name
|
|||||||
cannot have a colon in it). A single pattern '<name>' is just a
|
cannot have a colon in it). A single pattern '<name>' is just a
|
||||||
shorthand for '<name>:<name>'.
|
shorthand for '<name>:<name>'.
|
||||||
|
|
||||||
Each pattern pair '<src>:<dst>' consists of the source side (before
|
Each pattern pair consists of the source side (before the colon)
|
||||||
the colon) and the destination side (after the colon). The ref to be
|
and the destination side (after the colon). The ref to be
|
||||||
pushed is determined by finding a match that matches the source side,
|
pushed is determined by finding a match that matches the source
|
||||||
and where it is pushed is determined by using the destination side.
|
side, and where it is pushed is determined by using the
|
||||||
|
destination side.
|
||||||
|
|
||||||
- It is an error if '<src>' does not match exactly one of the
|
- It is an error if <src> does not match exactly one of the
|
||||||
local refs.
|
local refs.
|
||||||
|
|
||||||
- If '<dst>' does not match any remote ref, either
|
- If <dst> does not match any remote ref, either
|
||||||
|
|
||||||
* it has to start with "refs/"; <dst> is used as the
|
* it has to start with "refs/"; <dst> is used as the
|
||||||
destination literally in this case.
|
destination literally in this case.
|
||||||
|
@ -82,12 +82,6 @@ OPTIONS
|
|||||||
--strict::
|
--strict::
|
||||||
Die, if the pack contains broken objects or links.
|
Die, if the pack contains broken objects or links.
|
||||||
|
|
||||||
--progress-title::
|
|
||||||
For internal use only.
|
|
||||||
+
|
|
||||||
Set the title of the progress bar. The title is "Receiving objects" by
|
|
||||||
default and "Indexing objects" when `--stdin` is specified.
|
|
||||||
|
|
||||||
--check-self-contained-and-connected::
|
--check-self-contained-and-connected::
|
||||||
Die if the pack contains broken links. For internal use only.
|
Die if the pack contains broken links. For internal use only.
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ git-init-db - Creates an empty Git repository
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git init-db' [-q | --quiet] [--bare] [--template=<template-directory>] [--separate-git-dir <git-dir>] [--shared[=<permissions>]]
|
'git init-db' [-q | --quiet] [--bare] [--template=<template_directory>] [--separate-git-dir <git dir>] [--shared[=<permissions>]]
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
@ -9,10 +9,10 @@ git-init - Create an empty Git repository or reinitialize an existing one
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git init' [-q | --quiet] [--bare] [--template=<template-directory>]
|
'git init' [-q | --quiet] [--bare] [--template=<template_directory>]
|
||||||
[--separate-git-dir <git-dir>] [--object-format=<format>]
|
[--separate-git-dir <git dir>] [--object-format=<format>]
|
||||||
[-b <branch-name> | --initial-branch=<branch-name>]
|
[-b <branch-name> | --initial-branch=<branch-name>]
|
||||||
[--shared[=<permissions>]] [<directory>]
|
[--shared[=<permissions>]] [directory]
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -57,12 +57,12 @@ values are 'sha1' and (if enabled) 'sha256'. 'sha1' is the default.
|
|||||||
+
|
+
|
||||||
include::object-format-disclaimer.txt[]
|
include::object-format-disclaimer.txt[]
|
||||||
|
|
||||||
--template=<template-directory>::
|
--template=<template_directory>::
|
||||||
|
|
||||||
Specify the directory from which templates will be used. (See the "TEMPLATE
|
Specify the directory from which templates will be used. (See the "TEMPLATE
|
||||||
DIRECTORY" section below.)
|
DIRECTORY" section below.)
|
||||||
|
|
||||||
--separate-git-dir=<git-dir>::
|
--separate-git-dir=<git dir>::
|
||||||
|
|
||||||
Instead of initializing the repository as a directory to either `$GIT_DIR` or
|
Instead of initializing the repository as a directory to either `$GIT_DIR` or
|
||||||
`./.git/`, create a text file there containing the path to the actual
|
`./.git/`, create a text file there containing the path to the actual
|
||||||
@ -79,7 +79,7 @@ repository. If not specified, fall back to the default name (currently
|
|||||||
`master`, but this is subject to change in the future; the name can be
|
`master`, but this is subject to change in the future; the name can be
|
||||||
customized via the `init.defaultBranch` configuration variable).
|
customized via the `init.defaultBranch` configuration variable).
|
||||||
|
|
||||||
--shared[=(false|true|umask|group|all|world|everybody|<perm>)]::
|
--shared[=(false|true|umask|group|all|world|everybody|0xxx)]::
|
||||||
|
|
||||||
Specify that the Git repository is to be shared amongst several users. This
|
Specify that the Git repository is to be shared amongst several users. This
|
||||||
allows users belonging to the same group to push into that
|
allows users belonging to the same group to push into that
|
||||||
@ -110,16 +110,13 @@ the repository permissions.
|
|||||||
|
|
||||||
Same as 'group', but make the repository readable by all users.
|
Same as 'group', but make the repository readable by all users.
|
||||||
|
|
||||||
'<perm>'::
|
'0xxx'::
|
||||||
|
|
||||||
'<perm>' is a 3-digit octal number prefixed with `0` and each file
|
'0xxx' is an octal number and each file will have mode '0xxx'. '0xxx' will
|
||||||
will have mode '<perm>'. '<perm>' will override users' umask(2)
|
override users' umask(2) value (and not only loosen permissions as 'group' and
|
||||||
value (and not only loosen permissions as 'group' and 'all'
|
'all' does). '0640' will create a repository which is group-readable, but not
|
||||||
does). '0640' will create a repository which is group-readable, but
|
group-writable or accessible to others. '0660' will create a repo that is
|
||||||
not group-writable or accessible to others. '0660' will create a repo
|
readable and writable to the current user and group, but inaccessible to others.
|
||||||
that is readable and writable to the current user and group, but
|
|
||||||
inaccessible to others (directories and executable files get their
|
|
||||||
`x` bit from the `r` bit for corresponding classes of users).
|
|
||||||
--
|
--
|
||||||
|
|
||||||
By default, the configuration flag `receive.denyNonFastForwards` is enabled
|
By default, the configuration flag `receive.denyNonFastForwards` is enabled
|
||||||
|
@ -9,7 +9,7 @@ git-log - Show commit logs
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git log' [<options>] [<revision-range>] [[--] <path>...]
|
'git log' [<options>] [<revision range>] [[--] <path>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -81,13 +81,13 @@ produced by `--stat`, etc.
|
|||||||
|
|
||||||
include::line-range-options.txt[]
|
include::line-range-options.txt[]
|
||||||
|
|
||||||
<revision-range>::
|
<revision range>::
|
||||||
Show only commits in the specified revision range. When no
|
Show only commits in the specified revision range. When no
|
||||||
<revision-range> is specified, it defaults to `HEAD` (i.e. the
|
<revision range> is specified, it defaults to `HEAD` (i.e. the
|
||||||
whole history leading to the current commit). `origin..HEAD`
|
whole history leading to the current commit). `origin..HEAD`
|
||||||
specifies all the commits reachable from the current commit
|
specifies all the commits reachable from the current commit
|
||||||
(i.e. `HEAD`), but not from `origin`. For a complete list of
|
(i.e. `HEAD`), but not from `origin`. For a complete list of
|
||||||
ways to spell <revision-range>, see the 'Specifying Ranges'
|
ways to spell <revision range>, see the 'Specifying Ranges'
|
||||||
section of linkgit:gitrevisions[7].
|
section of linkgit:gitrevisions[7].
|
||||||
|
|
||||||
[--] <path>...::
|
[--] <path>...::
|
||||||
|
@ -10,9 +10,9 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git ls-files' [-z] [-t] [-v] [-f]
|
'git ls-files' [-z] [-t] [-v] [-f]
|
||||||
[-c|--cached] [-d|--deleted] [-o|--others] [-i|--|ignored]
|
(--[cached|deleted|others|ignored|stage|unmerged|killed|modified])*
|
||||||
[-s|--stage] [-u|--unmerged] [-k|--|killed] [-m|--modified]
|
(-[c|d|o|i|s|u|k|m])*
|
||||||
[--directory [--no-empty-directory]] [--eol]
|
[--eol]
|
||||||
[--deduplicate]
|
[--deduplicate]
|
||||||
[-x <pattern>|--exclude=<pattern>]
|
[-x <pattern>|--exclude=<pattern>]
|
||||||
[-X <file>|--exclude-from=<file>]
|
[-X <file>|--exclude-from=<file>]
|
||||||
@ -187,11 +187,6 @@ Both the <eolinfo> in the index ("i/<eolinfo>")
|
|||||||
and in the working tree ("w/<eolinfo>") are shown for regular files,
|
and in the working tree ("w/<eolinfo>") are shown for regular files,
|
||||||
followed by the ("attr/<eolattr>").
|
followed by the ("attr/<eolattr>").
|
||||||
|
|
||||||
--sparse::
|
|
||||||
If the index is sparse, show the sparse directories without expanding
|
|
||||||
to the contained files. Sparse directories will be shown with a
|
|
||||||
trailing slash, such as "x/" for a sparse directory "x".
|
|
||||||
|
|
||||||
\--::
|
\--::
|
||||||
Do not interpret any more arguments as options.
|
Do not interpret any more arguments as options.
|
||||||
|
|
||||||
|
@ -179,17 +179,6 @@ OPTIONS
|
|||||||
`maintenance.<task>.enabled` configured as `true` are considered.
|
`maintenance.<task>.enabled` configured as `true` are considered.
|
||||||
See the 'TASKS' section for the list of accepted `<task>` values.
|
See the 'TASKS' section for the list of accepted `<task>` values.
|
||||||
|
|
||||||
--scheduler=auto|crontab|systemd-timer|launchctl|schtasks::
|
|
||||||
When combined with the `start` subcommand, specify the scheduler
|
|
||||||
for running the hourly, daily and weekly executions of
|
|
||||||
`git maintenance run`.
|
|
||||||
Possible values for `<scheduler>` are `auto`, `crontab`
|
|
||||||
(POSIX), `systemd-timer` (Linux), `launchctl` (macOS), and
|
|
||||||
`schtasks` (Windows). When `auto` is specified, the
|
|
||||||
appropriate platform-specific scheduler is used; on Linux,
|
|
||||||
`systemd-timer` is used if available, otherwise
|
|
||||||
`crontab`. Default is `auto`.
|
|
||||||
|
|
||||||
|
|
||||||
TROUBLESHOOTING
|
TROUBLESHOOTING
|
||||||
---------------
|
---------------
|
||||||
@ -288,52 +277,6 @@ schedule to ensure you are executing the correct binaries in your
|
|||||||
schedule.
|
schedule.
|
||||||
|
|
||||||
|
|
||||||
BACKGROUND MAINTENANCE ON LINUX SYSTEMD SYSTEMS
|
|
||||||
-----------------------------------------------
|
|
||||||
|
|
||||||
While Linux supports `cron`, depending on the distribution, `cron` may
|
|
||||||
be an optional package not necessarily installed. On modern Linux
|
|
||||||
distributions, systemd timers are superseding it.
|
|
||||||
|
|
||||||
If user systemd timers are available, they will be used as a replacement
|
|
||||||
of `cron`.
|
|
||||||
|
|
||||||
In this case, `git maintenance start` will create user systemd timer units
|
|
||||||
and start the timers. The current list of user-scheduled tasks can be found
|
|
||||||
by running `systemctl --user list-timers`. The timers written by `git
|
|
||||||
maintenance start` are similar to this:
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
$ systemctl --user list-timers
|
|
||||||
NEXT LEFT LAST PASSED UNIT ACTIVATES
|
|
||||||
Thu 2021-04-29 19:00:00 CEST 42min left Thu 2021-04-29 18:00:11 CEST 17min ago git-maintenance@hourly.timer git-maintenance@hourly.service
|
|
||||||
Fri 2021-04-30 00:00:00 CEST 5h 42min left Thu 2021-04-29 00:00:11 CEST 18h ago git-maintenance@daily.timer git-maintenance@daily.service
|
|
||||||
Mon 2021-05-03 00:00:00 CEST 3 days left Mon 2021-04-26 00:00:11 CEST 3 days ago git-maintenance@weekly.timer git-maintenance@weekly.service
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
One timer is registered for each `--schedule=<frequency>` option.
|
|
||||||
|
|
||||||
The definition of the systemd units can be inspected in the following files:
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
~/.config/systemd/user/git-maintenance@.timer
|
|
||||||
~/.config/systemd/user/git-maintenance@.service
|
|
||||||
~/.config/systemd/user/timers.target.wants/git-maintenance@hourly.timer
|
|
||||||
~/.config/systemd/user/timers.target.wants/git-maintenance@daily.timer
|
|
||||||
~/.config/systemd/user/timers.target.wants/git-maintenance@weekly.timer
|
|
||||||
-----------------------------------------------------------------------
|
|
||||||
|
|
||||||
`git maintenance start` will overwrite these files and start the timer
|
|
||||||
again with `systemctl --user`, so any customization should be done by
|
|
||||||
creating a drop-in file, i.e. a `.conf` suffixed file in the
|
|
||||||
`~/.config/systemd/user/git-maintenance@.service.d` directory.
|
|
||||||
|
|
||||||
`git maintenance stop` will stop the user systemd timers and delete
|
|
||||||
the above mentioned files.
|
|
||||||
|
|
||||||
For more details, see `systemd.timer(5)`.
|
|
||||||
|
|
||||||
|
|
||||||
BACKGROUND MAINTENANCE ON MACOS SYSTEMS
|
BACKGROUND MAINTENANCE ON MACOS SYSTEMS
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
|
@ -70,9 +70,6 @@ OPTIONS
|
|||||||
--diff3::
|
--diff3::
|
||||||
Show conflicts in "diff3" style.
|
Show conflicts in "diff3" style.
|
||||||
|
|
||||||
--zdiff3::
|
|
||||||
Show conflicts in "zdiff3" style.
|
|
||||||
|
|
||||||
--ours::
|
--ours::
|
||||||
--theirs::
|
--theirs::
|
||||||
--union::
|
--union::
|
||||||
|
@ -9,7 +9,7 @@ git-merge-index - Run a merge for files needing merging
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git merge-index' [-o] [-q] <merge-program> (-a | ( [--] <file>...) )
|
'git merge-index' [-o] [-q] <merge-program> (-a | [--] <file>*)
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -12,8 +12,7 @@ SYNOPSIS
|
|||||||
'git merge' [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
|
'git merge' [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
|
||||||
[--no-verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
|
[--no-verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
|
||||||
[--[no-]allow-unrelated-histories]
|
[--[no-]allow-unrelated-histories]
|
||||||
[--[no-]rerere-autoupdate] [-m <msg>] [-F <file>]
|
[--[no-]rerere-autoupdate] [-m <msg>] [-F <file>] [<commit>...]
|
||||||
[--into-name <branch>] [<commit>...]
|
|
||||||
'git merge' (--continue | --abort | --quit)
|
'git merge' (--continue | --abort | --quit)
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -77,11 +76,6 @@ The 'git fmt-merge-msg' command can be
|
|||||||
used to give a good default for automated 'git merge'
|
used to give a good default for automated 'git merge'
|
||||||
invocations. The automated message can include the branch description.
|
invocations. The automated message can include the branch description.
|
||||||
|
|
||||||
--into-name <branch>::
|
|
||||||
Prepare the default merge message as if merging to the branch
|
|
||||||
`<branch>`, instead of the name of the real branch to which
|
|
||||||
the merge is made.
|
|
||||||
|
|
||||||
-F <file>::
|
-F <file>::
|
||||||
--file=<file>::
|
--file=<file>::
|
||||||
Read the commit message to be used for the merge commit (in
|
Read the commit message to be used for the merge commit (in
|
||||||
@ -246,8 +240,7 @@ from the RCS suite to present such a conflicted hunk, like this:
|
|||||||
|
|
||||||
------------
|
------------
|
||||||
Here are lines that are either unchanged from the common
|
Here are lines that are either unchanged from the common
|
||||||
ancestor, or cleanly resolved because only one side changed,
|
ancestor, or cleanly resolved because only one side changed.
|
||||||
or cleanly resolved because both sides changed the same way.
|
|
||||||
<<<<<<< yours:sample.txt
|
<<<<<<< yours:sample.txt
|
||||||
Conflict resolution is hard;
|
Conflict resolution is hard;
|
||||||
let's go shopping.
|
let's go shopping.
|
||||||
@ -268,37 +261,16 @@ side wants to say it is hard and you'd prefer to go shopping, while the
|
|||||||
other side wants to claim it is easy.
|
other side wants to claim it is easy.
|
||||||
|
|
||||||
An alternative style can be used by setting the "merge.conflictStyle"
|
An alternative style can be used by setting the "merge.conflictStyle"
|
||||||
configuration variable to either "diff3" or "zdiff3". In "diff3"
|
configuration variable to "diff3". In "diff3" style, the above conflict
|
||||||
style, the above conflict may look like this:
|
may look like this:
|
||||||
|
|
||||||
------------
|
------------
|
||||||
Here are lines that are either unchanged from the common
|
Here are lines that are either unchanged from the common
|
||||||
ancestor, or cleanly resolved because only one side changed,
|
ancestor, or cleanly resolved because only one side changed.
|
||||||
<<<<<<< yours:sample.txt
|
|
||||||
or cleanly resolved because both sides changed the same way.
|
|
||||||
Conflict resolution is hard;
|
|
||||||
let's go shopping.
|
|
||||||
||||||| base:sample.txt
|
|
||||||
or cleanly resolved because both sides changed identically.
|
|
||||||
Conflict resolution is hard.
|
|
||||||
=======
|
|
||||||
or cleanly resolved because both sides changed the same way.
|
|
||||||
Git makes conflict resolution easy.
|
|
||||||
>>>>>>> theirs:sample.txt
|
|
||||||
And here is another line that is cleanly resolved or unmodified.
|
|
||||||
------------
|
|
||||||
|
|
||||||
while in "zdiff3" style, it may look like this:
|
|
||||||
|
|
||||||
------------
|
|
||||||
Here are lines that are either unchanged from the common
|
|
||||||
ancestor, or cleanly resolved because only one side changed,
|
|
||||||
or cleanly resolved because both sides changed the same way.
|
|
||||||
<<<<<<< yours:sample.txt
|
<<<<<<< yours:sample.txt
|
||||||
Conflict resolution is hard;
|
Conflict resolution is hard;
|
||||||
let's go shopping.
|
let's go shopping.
|
||||||
||||||| base:sample.txt
|
|||||||
|
||||||
or cleanly resolved because both sides changed identically.
|
|
||||||
Conflict resolution is hard.
|
Conflict resolution is hard.
|
||||||
=======
|
=======
|
||||||
Git makes conflict resolution easy.
|
Git makes conflict resolution easy.
|
||||||
|
@ -9,7 +9,8 @@ git-multi-pack-index - Write and verify multi-pack-indexes
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git multi-pack-index' [--object-dir=<dir>] [--[no-]bitmap] <sub-command>
|
'git multi-pack-index' [--object-dir=<dir>] [--[no-]progress]
|
||||||
|
[--preferred-pack=<pack>] <subcommand>
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -22,13 +23,10 @@ OPTIONS
|
|||||||
Use given directory for the location of Git objects. We check
|
Use given directory for the location of Git objects. We check
|
||||||
`<dir>/packs/multi-pack-index` for the current MIDX file, and
|
`<dir>/packs/multi-pack-index` for the current MIDX file, and
|
||||||
`<dir>/packs` for the pack-files to index.
|
`<dir>/packs` for the pack-files to index.
|
||||||
+
|
|
||||||
`<dir>` must be an alternate of the current repository.
|
|
||||||
|
|
||||||
--[no-]progress::
|
--[no-]progress::
|
||||||
Turn progress on/off explicitly. If neither is specified, progress is
|
Turn progress on/off explicitly. If neither is specified, progress is
|
||||||
shown if standard error is connected to a terminal. Supported by
|
shown if standard error is connected to a terminal.
|
||||||
sub-commands `write`, `verify`, `expire`, and `repack.
|
|
||||||
|
|
||||||
The following subcommands are available:
|
The following subcommands are available:
|
||||||
|
|
||||||
@ -39,31 +37,9 @@ write::
|
|||||||
--
|
--
|
||||||
--preferred-pack=<pack>::
|
--preferred-pack=<pack>::
|
||||||
Optionally specify the tie-breaking pack used when
|
Optionally specify the tie-breaking pack used when
|
||||||
multiple packs contain the same object. `<pack>` must
|
multiple packs contain the same object. If not given,
|
||||||
contain at least one object. If not given, ties are
|
ties are broken in favor of the pack with the lowest
|
||||||
broken in favor of the pack with the lowest mtime.
|
mtime.
|
||||||
|
|
||||||
--[no-]bitmap::
|
|
||||||
Control whether or not a multi-pack bitmap is written.
|
|
||||||
|
|
||||||
--stdin-packs::
|
|
||||||
Write a multi-pack index containing only the set of
|
|
||||||
line-delimited pack index basenames provided over stdin.
|
|
||||||
|
|
||||||
--refs-snapshot=<path>::
|
|
||||||
With `--bitmap`, optionally specify a file which
|
|
||||||
contains a "refs snapshot" taken prior to repacking.
|
|
||||||
+
|
|
||||||
A reference snapshot is composed of line-delimited OIDs corresponding to
|
|
||||||
the reference tips, usually taken by `git repack` prior to generating a
|
|
||||||
new pack. A line may optionally start with a `+` character to indicate
|
|
||||||
that the reference which corresponds to that OID is "preferred" (see
|
|
||||||
linkgit:git-config[1]'s `pack.preferBitmapTips`.)
|
|
||||||
+
|
|
||||||
The file given at `<path>` is expected to be readable, and can contain
|
|
||||||
duplicates. (If a given OID is given more than once, it is marked as
|
|
||||||
preferred if at least one instance of it begins with the special `+`
|
|
||||||
marker).
|
|
||||||
--
|
--
|
||||||
|
|
||||||
verify::
|
verify::
|
||||||
@ -99,26 +75,19 @@ associated `.keep` file will not be selected for the batch to repack.
|
|||||||
EXAMPLES
|
EXAMPLES
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* Write a MIDX file for the packfiles in the current `.git` directory.
|
* Write a MIDX file for the packfiles in the current .git folder.
|
||||||
+
|
+
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
$ git multi-pack-index write
|
$ git multi-pack-index write
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
* Write a MIDX file for the packfiles in the current `.git` directory with a
|
|
||||||
corresponding bitmap.
|
|
||||||
+
|
|
||||||
-------------------------------------------------------------
|
|
||||||
$ git multi-pack-index write --preferred-pack=<pack> --bitmap
|
|
||||||
-------------------------------------------------------------
|
|
||||||
|
|
||||||
* Write a MIDX file for the packfiles in an alternate object store.
|
* Write a MIDX file for the packfiles in an alternate object store.
|
||||||
+
|
+
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
$ git multi-pack-index --object-dir <alt> write
|
$ git multi-pack-index --object-dir <alt> write
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
* Verify the MIDX file for the packfiles in the current `.git` directory.
|
* Verify the MIDX file for the packfiles in the current .git folder.
|
||||||
+
|
+
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
$ git multi-pack-index verify
|
$ git multi-pack-index verify
|
||||||
|
@ -9,10 +9,10 @@ git-p4 - Import from and submit to Perforce repositories
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git p4 clone' [<sync-options>] [<clone-options>] <p4-depot-path>...
|
'git p4 clone' [<sync options>] [<clone options>] <p4 depot path>...
|
||||||
'git p4 sync' [<sync-options>] [<p4-depot-path>...]
|
'git p4 sync' [<sync options>] [<p4 depot path>...]
|
||||||
'git p4 rebase'
|
'git p4 rebase'
|
||||||
'git p4 submit' [<submit-options>] [<master-branch-name>]
|
'git p4 submit' [<submit options>] [<master branch name>]
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -361,7 +361,7 @@ These options can be used to modify 'git p4 submit' behavior.
|
|||||||
p4/master. See the "Sync options" section above for more
|
p4/master. See the "Sync options" section above for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
--commit (<sha1>|<sha1>..<sha1>)::
|
--commit <sha1>|<sha1..sha1>::
|
||||||
Submit only the specified commit or range of commits, instead of the full
|
Submit only the specified commit or range of commits, instead of the full
|
||||||
list of changes that are in the current Git branch.
|
list of changes that are in the current Git branch.
|
||||||
|
|
||||||
|
@ -13,8 +13,8 @@ SYNOPSIS
|
|||||||
[--no-reuse-delta] [--delta-base-offset] [--non-empty]
|
[--no-reuse-delta] [--delta-base-offset] [--non-empty]
|
||||||
[--local] [--incremental] [--window=<n>] [--depth=<n>]
|
[--local] [--incremental] [--window=<n>] [--depth=<n>]
|
||||||
[--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
|
[--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
|
||||||
[--stdout [--filter=<filter-spec>] | <base-name>]
|
[--stdout [--filter=<filter-spec>] | base-name]
|
||||||
[--shallow] [--keep-true-parents] [--[no-]sparse] < <object-list>
|
[--shallow] [--keep-true-parents] [--[no-]sparse] < object-list
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
|
@ -9,7 +9,7 @@ git-pack-redundant - Find redundant pack files
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git pack-redundant' [ --verbose ] [ --alt-odb ] ( --all | <pack-filename>... )
|
'git pack-redundant' [ --verbose ] [ --alt-odb ] < --all | .pack filename ... >
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -105,7 +105,7 @@ Options related to merging
|
|||||||
include::merge-options.txt[]
|
include::merge-options.txt[]
|
||||||
|
|
||||||
-r::
|
-r::
|
||||||
--rebase[=false|true|merges|interactive]::
|
--rebase[=false|true|merges|preserve|interactive]::
|
||||||
When true, rebase the current branch on top of the upstream
|
When true, rebase the current branch on top of the upstream
|
||||||
branch after fetching. If there is a remote-tracking branch
|
branch after fetching. If there is a remote-tracking branch
|
||||||
corresponding to the upstream branch and the upstream branch
|
corresponding to the upstream branch and the upstream branch
|
||||||
@ -116,6 +116,10 @@ When set to `merges`, rebase using `git rebase --rebase-merges` so that
|
|||||||
the local merge commits are included in the rebase (see
|
the local merge commits are included in the rebase (see
|
||||||
linkgit:git-rebase[1] for details).
|
linkgit:git-rebase[1] for details).
|
||||||
+
|
+
|
||||||
|
When set to `preserve` (deprecated in favor of `merges`), rebase with the
|
||||||
|
`--preserve-merges` option passed to `git rebase` so that locally created
|
||||||
|
merge commits will not be flattened.
|
||||||
|
+
|
||||||
When false, merge the upstream branch into the current branch.
|
When false, merge the upstream branch into the current branch.
|
||||||
+
|
+
|
||||||
When `interactive`, enable the interactive mode of rebase.
|
When `interactive`, enable the interactive mode of rebase.
|
||||||
|
@ -10,7 +10,8 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>]
|
'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>]
|
||||||
[-u | -i]] [--index-output=<file>] [--no-sparse-checkout]
|
[-u [--exclude-per-directory=<gitignore>] | -i]]
|
||||||
|
[--index-output=<file>] [--no-sparse-checkout]
|
||||||
(--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])
|
(--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])
|
||||||
|
|
||||||
|
|
||||||
@ -38,9 +39,8 @@ OPTIONS
|
|||||||
|
|
||||||
--reset::
|
--reset::
|
||||||
Same as -m, except that unmerged entries are discarded instead
|
Same as -m, except that unmerged entries are discarded instead
|
||||||
of failing. When used with `-u`, updates leading to loss of
|
of failing. When used with `-u`, updates leading to loss of
|
||||||
working tree changes or untracked files or directories will not
|
working tree changes will not abort the operation.
|
||||||
abort the operation.
|
|
||||||
|
|
||||||
-u::
|
-u::
|
||||||
After a successful merge, update the files in the work
|
After a successful merge, update the files in the work
|
||||||
@ -88,6 +88,21 @@ OPTIONS
|
|||||||
The command will refuse to overwrite entries that already
|
The command will refuse to overwrite entries that already
|
||||||
existed in the original index file.
|
existed in the original index file.
|
||||||
|
|
||||||
|
--exclude-per-directory=<gitignore>::
|
||||||
|
When running the command with `-u` and `-m` options, the
|
||||||
|
merge result may need to overwrite paths that are not
|
||||||
|
tracked in the current branch. The command usually
|
||||||
|
refuses to proceed with the merge to avoid losing such a
|
||||||
|
path. However this safety valve sometimes gets in the
|
||||||
|
way. For example, it often happens that the other
|
||||||
|
branch added a file that used to be a generated file in
|
||||||
|
your branch, and the safety valve triggers when you try
|
||||||
|
to switch to that branch after you ran `make` but before
|
||||||
|
running `make clean` to remove the generated file. This
|
||||||
|
option tells the command to read per-directory exclude
|
||||||
|
file (usually '.gitignore') and allows such an untracked
|
||||||
|
but explicitly ignored file to be overwritten.
|
||||||
|
|
||||||
--index-output=<file>::
|
--index-output=<file>::
|
||||||
Instead of writing the results out to `$GIT_INDEX_FILE`,
|
Instead of writing the results out to `$GIT_INDEX_FILE`,
|
||||||
write the resulting index in the named file. While the
|
write the resulting index in the named file. While the
|
||||||
|
@ -79,10 +79,9 @@ remain the checked-out branch.
|
|||||||
|
|
||||||
If the upstream branch already contains a change you have made (e.g.,
|
If the upstream branch already contains a change you have made (e.g.,
|
||||||
because you mailed a patch which was applied upstream), then that commit
|
because you mailed a patch which was applied upstream), then that commit
|
||||||
will be skipped and warnings will be issued (if the `merge` backend is
|
will be skipped. For example, running `git rebase master` on the
|
||||||
used). For example, running `git rebase master` on the following
|
following history (in which `A'` and `A` introduce the same set of changes,
|
||||||
history (in which `A'` and `A` introduce the same set of changes, but
|
but have different committer information):
|
||||||
have different committer information):
|
|
||||||
|
|
||||||
------------
|
------------
|
||||||
A---B---C topic
|
A---B---C topic
|
||||||
@ -313,10 +312,7 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
By default (or if `--no-reapply-cherry-picks` is given), these commits
|
By default (or if `--no-reapply-cherry-picks` is given), these commits
|
||||||
will be automatically dropped. Because this necessitates reading all
|
will be automatically dropped. Because this necessitates reading all
|
||||||
upstream commits, this can be expensive in repos with a large number
|
upstream commits, this can be expensive in repos with a large number
|
||||||
of upstream commits that need to be read. When using the `merge`
|
of upstream commits that need to be read.
|
||||||
backend, warnings will be issued for each dropped commit (unless
|
|
||||||
`--quiet` is given). Advice will also be issued unless
|
|
||||||
`advice.skippedCherryPicks` is set to false (see linkgit:git-config[1]).
|
|
||||||
+
|
+
|
||||||
`--reapply-cherry-picks` allows rebase to forgo reading all upstream
|
`--reapply-cherry-picks` allows rebase to forgo reading all upstream
|
||||||
commits, potentially improving performance.
|
commits, potentially improving performance.
|
||||||
@ -356,8 +352,8 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
|
|
||||||
-s <strategy>::
|
-s <strategy>::
|
||||||
--strategy=<strategy>::
|
--strategy=<strategy>::
|
||||||
Use the given merge strategy, instead of the default `ort`.
|
Use the given merge strategy, instead of the default
|
||||||
This implies `--merge`.
|
`recursive`. This implies `--merge`.
|
||||||
+
|
+
|
||||||
Because 'git rebase' replays each commit from the working branch
|
Because 'git rebase' replays each commit from the working branch
|
||||||
on top of the <upstream> branch using the given strategy, using
|
on top of the <upstream> branch using the given strategy, using
|
||||||
@ -370,7 +366,7 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
--strategy-option=<strategy-option>::
|
--strategy-option=<strategy-option>::
|
||||||
Pass the <strategy-option> through to the merge strategy.
|
Pass the <strategy-option> through to the merge strategy.
|
||||||
This implies `--merge` and, if no strategy has been
|
This implies `--merge` and, if no strategy has been
|
||||||
specified, `-s ort`. Note the reversal of 'ours' and
|
specified, `-s recursive`. Note the reversal of 'ours' and
|
||||||
'theirs' as noted above for the `-m` option.
|
'theirs' as noted above for the `-m` option.
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
@ -446,8 +442,7 @@ When --fork-point is active, 'fork_point' will be used instead of
|
|||||||
ends up being empty, the <upstream> will be used as a fallback.
|
ends up being empty, the <upstream> will be used as a fallback.
|
||||||
+
|
+
|
||||||
If <upstream> is given on the command line, then the default is
|
If <upstream> is given on the command line, then the default is
|
||||||
`--no-fork-point`, otherwise the default is `--fork-point`. See also
|
`--no-fork-point`, otherwise the default is `--fork-point`.
|
||||||
`rebase.forkpoint` in linkgit:git-config[1].
|
|
||||||
+
|
+
|
||||||
If your branch was based on <upstream> but <upstream> was rewound and
|
If your branch was based on <upstream> but <upstream> was rewound and
|
||||||
your branch contains commits which were dropped, this option can be used
|
your branch contains commits which were dropped, this option can be used
|
||||||
@ -527,12 +522,29 @@ i.e. commits that would be excluded by linkgit:git-log[1]'s
|
|||||||
the `rebase-cousins` mode is turned on, such commits are instead rebased
|
the `rebase-cousins` mode is turned on, such commits are instead rebased
|
||||||
onto `<upstream>` (or `<onto>`, if specified).
|
onto `<upstream>` (or `<onto>`, if specified).
|
||||||
+
|
+
|
||||||
|
The `--rebase-merges` mode is similar in spirit to the deprecated
|
||||||
|
`--preserve-merges` but works with interactive rebases,
|
||||||
|
where commits can be reordered, inserted and dropped at will.
|
||||||
|
+
|
||||||
It is currently only possible to recreate the merge commits using the
|
It is currently only possible to recreate the merge commits using the
|
||||||
`ort` merge strategy; different merge strategies can be used only via
|
`recursive` merge strategy; different merge strategies can be used only via
|
||||||
explicit `exec git merge -s <strategy> [...]` commands.
|
explicit `exec git merge -s <strategy> [...]` commands.
|
||||||
+
|
+
|
||||||
See also REBASING MERGES and INCOMPATIBLE OPTIONS below.
|
See also REBASING MERGES and INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
|
-p::
|
||||||
|
--preserve-merges::
|
||||||
|
[DEPRECATED: use `--rebase-merges` instead] Recreate merge commits
|
||||||
|
instead of flattening the history by replaying commits a merge commit
|
||||||
|
introduces. Merge conflict resolutions or manual amendments to merge
|
||||||
|
commits are not preserved.
|
||||||
|
+
|
||||||
|
This uses the `--interactive` machinery internally, but combining it
|
||||||
|
with the `--interactive` option explicitly is generally not a good
|
||||||
|
idea unless you know what you are doing (see BUGS below).
|
||||||
|
+
|
||||||
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
-x <cmd>::
|
-x <cmd>::
|
||||||
--exec <cmd>::
|
--exec <cmd>::
|
||||||
Append "exec <cmd>" after each line creating a commit in the
|
Append "exec <cmd>" after each line creating a commit in the
|
||||||
@ -564,6 +576,9 @@ See also INCOMPATIBLE OPTIONS below.
|
|||||||
the root commit(s) on a branch. When used with --onto, it
|
the root commit(s) on a branch. When used with --onto, it
|
||||||
will skip changes already contained in <newbase> (instead of
|
will skip changes already contained in <newbase> (instead of
|
||||||
<upstream>) whereas without --onto it will operate on every change.
|
<upstream>) whereas without --onto it will operate on every change.
|
||||||
|
When used together with both --onto and --preserve-merges,
|
||||||
|
'all' root commits will be rewritten to have <newbase> as parent
|
||||||
|
instead.
|
||||||
+
|
+
|
||||||
See also INCOMPATIBLE OPTIONS below.
|
See also INCOMPATIBLE OPTIONS below.
|
||||||
|
|
||||||
@ -625,6 +640,7 @@ are incompatible with the following options:
|
|||||||
* --allow-empty-message
|
* --allow-empty-message
|
||||||
* --[no-]autosquash
|
* --[no-]autosquash
|
||||||
* --rebase-merges
|
* --rebase-merges
|
||||||
|
* --preserve-merges
|
||||||
* --interactive
|
* --interactive
|
||||||
* --exec
|
* --exec
|
||||||
* --no-keep-empty
|
* --no-keep-empty
|
||||||
@ -635,6 +651,13 @@ are incompatible with the following options:
|
|||||||
|
|
||||||
In addition, the following pairs of options are incompatible:
|
In addition, the following pairs of options are incompatible:
|
||||||
|
|
||||||
|
* --preserve-merges and --interactive
|
||||||
|
* --preserve-merges and --signoff
|
||||||
|
* --preserve-merges and --rebase-merges
|
||||||
|
* --preserve-merges and --empty=
|
||||||
|
* --preserve-merges and --ignore-whitespace
|
||||||
|
* --preserve-merges and --committer-date-is-author-date
|
||||||
|
* --preserve-merges and --ignore-date
|
||||||
* --keep-base and --onto
|
* --keep-base and --onto
|
||||||
* --keep-base and --root
|
* --keep-base and --root
|
||||||
* --fork-point and --root
|
* --fork-point and --root
|
||||||
@ -714,9 +737,9 @@ information about the rebased commits and their parents (and instead
|
|||||||
generates new fake commits based off limited information in the
|
generates new fake commits based off limited information in the
|
||||||
generated patches), those commits cannot be identified; instead it has
|
generated patches), those commits cannot be identified; instead it has
|
||||||
to fall back to a commit summary. Also, when merge.conflictStyle is
|
to fall back to a commit summary. Also, when merge.conflictStyle is
|
||||||
set to diff3 or zdiff3, the apply backend will use "constructed merge
|
set to diff3, the apply backend will use "constructed merge base" to
|
||||||
base" to label the content from the merge base, and thus provide no
|
label the content from the merge base, and thus provide no information
|
||||||
information about the merge base commit whatsoever.
|
about the merge base commit whatsoever.
|
||||||
|
|
||||||
The merge backend works with the full commits on both sides of history
|
The merge backend works with the full commits on both sides of history
|
||||||
and thus has no such limitations.
|
and thus has no such limitations.
|
||||||
@ -1193,16 +1216,16 @@ successful merge so that the user can edit the message.
|
|||||||
If a `merge` command fails for any reason other than merge conflicts (i.e.
|
If a `merge` command fails for any reason other than merge conflicts (i.e.
|
||||||
when the merge operation did not even start), it is rescheduled immediately.
|
when the merge operation did not even start), it is rescheduled immediately.
|
||||||
|
|
||||||
By default, the `merge` command will use the `ort` merge strategy for
|
By default, the `merge` command will use the `recursive` merge
|
||||||
regular merges, and `octopus` for octopus merges. One can specify a
|
strategy for regular merges, and `octopus` for octopus merges. One
|
||||||
default strategy for all merges using the `--strategy` argument when
|
can specify a default strategy for all merges using the `--strategy`
|
||||||
invoking rebase, or can override specific merges in the interactive
|
argument when invoking rebase, or can override specific merges in the
|
||||||
list of commands by using an `exec` command to call `git merge`
|
interactive list of commands by using an `exec` command to call `git
|
||||||
explicitly with a `--strategy` argument. Note that when calling `git
|
merge` explicitly with a `--strategy` argument. Note that when
|
||||||
merge` explicitly like this, you can make use of the fact that the
|
calling `git merge` explicitly like this, you can make use of the fact
|
||||||
labels are worktree-local refs (the ref `refs/rewritten/onto` would
|
that the labels are worktree-local refs (the ref `refs/rewritten/onto`
|
||||||
correspond to the label `onto`, for example) in order to refer to the
|
would correspond to the label `onto`, for example) in order to refer
|
||||||
branches you want to merge.
|
to the branches you want to merge.
|
||||||
|
|
||||||
Note: the first command (`label onto`) labels the revision onto which
|
Note: the first command (`label onto`) labels the revision onto which
|
||||||
the commits are rebased; The name `onto` is just a convention, as a nod
|
the commits are rebased; The name `onto` is just a convention, as a nod
|
||||||
@ -1252,6 +1275,29 @@ CONFIGURATION
|
|||||||
include::config/rebase.txt[]
|
include::config/rebase.txt[]
|
||||||
include::config/sequencer.txt[]
|
include::config/sequencer.txt[]
|
||||||
|
|
||||||
|
BUGS
|
||||||
|
----
|
||||||
|
The todo list presented by the deprecated `--preserve-merges --interactive`
|
||||||
|
does not represent the topology of the revision graph (use `--rebase-merges`
|
||||||
|
instead). Editing commits and rewording their commit messages should work
|
||||||
|
fine, but attempts to reorder commits tend to produce counterintuitive results.
|
||||||
|
Use `--rebase-merges` in such scenarios instead.
|
||||||
|
|
||||||
|
For example, an attempt to rearrange
|
||||||
|
------------
|
||||||
|
1 --- 2 --- 3 --- 4 --- 5
|
||||||
|
------------
|
||||||
|
to
|
||||||
|
------------
|
||||||
|
1 --- 2 --- 4 --- 3 --- 5
|
||||||
|
------------
|
||||||
|
by moving the "pick 4" line will result in the following history:
|
||||||
|
------------
|
||||||
|
3
|
||||||
|
/
|
||||||
|
1 --- 2 --- 4 --- 5
|
||||||
|
------------
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
---
|
---
|
||||||
Part of the linkgit:git[1] suite
|
Part of the linkgit:git[1] suite
|
||||||
|
@ -41,11 +41,6 @@ OPTIONS
|
|||||||
<directory>::
|
<directory>::
|
||||||
The repository to sync into.
|
The repository to sync into.
|
||||||
|
|
||||||
--http-backend-info-refs::
|
|
||||||
Used by linkgit:git-http-backend[1] to serve up
|
|
||||||
`$GIT_URL/info/refs?service=git-receive-pack` requests. See
|
|
||||||
`--http-backend-info-refs` in linkgit:git-upload-pack[1].
|
|
||||||
|
|
||||||
PRE-RECEIVE HOOK
|
PRE-RECEIVE HOOK
|
||||||
----------------
|
----------------
|
||||||
Before any ref is updated, if $GIT_DIR/hooks/pre-receive file exists
|
Before any ref is updated, if $GIT_DIR/hooks/pre-receive file exists
|
||||||
|
@ -17,12 +17,12 @@ The command takes various subcommands, and different options
|
|||||||
depending on the subcommand:
|
depending on the subcommand:
|
||||||
|
|
||||||
[verse]
|
[verse]
|
||||||
'git reflog' ['show'] [<log-options>] [<ref>]
|
'git reflog' ['show'] [log-options] [<ref>]
|
||||||
'git reflog expire' [--expire=<time>] [--expire-unreachable=<time>]
|
'git reflog expire' [--expire=<time>] [--expire-unreachable=<time>]
|
||||||
[--rewrite] [--updateref] [--stale-fix]
|
[--rewrite] [--updateref] [--stale-fix]
|
||||||
[--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>...]
|
[--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>...]
|
||||||
'git reflog delete' [--rewrite] [--updateref]
|
'git reflog delete' [--rewrite] [--updateref]
|
||||||
[--dry-run | -n] [--verbose] <ref>@\{<specifier>\}...
|
[--dry-run | -n] [--verbose] ref@\{specifier\}...
|
||||||
'git reflog exists' <ref>
|
'git reflog exists' <ref>
|
||||||
|
|
||||||
Reference logs, or "reflogs", record when the tips of branches and
|
Reference logs, or "reflogs", record when the tips of branches and
|
||||||
|
@ -10,7 +10,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git remote' [-v | --verbose]
|
'git remote' [-v | --verbose]
|
||||||
'git remote add' [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <name> <URL>
|
'git remote add' [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <name> <url>
|
||||||
'git remote rename' <old> <new>
|
'git remote rename' <old> <new>
|
||||||
'git remote remove' <name>
|
'git remote remove' <name>
|
||||||
'git remote set-head' <name> (-a | --auto | -d | --delete | <branch>)
|
'git remote set-head' <name> (-a | --auto | -d | --delete | <branch>)
|
||||||
@ -18,7 +18,7 @@ SYNOPSIS
|
|||||||
'git remote get-url' [--push] [--all] <name>
|
'git remote get-url' [--push] [--all] <name>
|
||||||
'git remote set-url' [--push] <name> <newurl> [<oldurl>]
|
'git remote set-url' [--push] <name> <newurl> [<oldurl>]
|
||||||
'git remote set-url --add' [--push] <name> <newurl>
|
'git remote set-url --add' [--push] <name> <newurl>
|
||||||
'git remote set-url --delete' [--push] <name> <URL>
|
'git remote set-url --delete' [--push] <name> <url>
|
||||||
'git remote' [-v | --verbose] 'show' [-n] <name>...
|
'git remote' [-v | --verbose] 'show' [-n] <name>...
|
||||||
'git remote prune' [-n | --dry-run] <name>...
|
'git remote prune' [-n | --dry-run] <name>...
|
||||||
'git remote' [-v | --verbose] 'update' [-p | --prune] [(<group> | <remote>)...]
|
'git remote' [-v | --verbose] 'update' [-p | --prune] [(<group> | <remote>)...]
|
||||||
@ -47,7 +47,7 @@ subcommands are available to perform operations on the remotes.
|
|||||||
'add'::
|
'add'::
|
||||||
|
|
||||||
Add a remote named <name> for the repository at
|
Add a remote named <name> for the repository at
|
||||||
<URL>. The command `git fetch <name>` can then be used to create and
|
<url>. The command `git fetch <name>` can then be used to create and
|
||||||
update remote-tracking branches <name>/<branch>.
|
update remote-tracking branches <name>/<branch>.
|
||||||
+
|
+
|
||||||
With `-f` option, `git fetch <name>` is run immediately after
|
With `-f` option, `git fetch <name>` is run immediately after
|
||||||
@ -152,7 +152,7 @@ With `--push`, push URLs are manipulated instead of fetch URLs.
|
|||||||
With `--add`, instead of changing existing URLs, new URL is added.
|
With `--add`, instead of changing existing URLs, new URL is added.
|
||||||
+
|
+
|
||||||
With `--delete`, instead of changing existing URLs, all URLs matching
|
With `--delete`, instead of changing existing URLs, all URLs matching
|
||||||
regex <URL> are deleted for remote <name>. Trying to delete all
|
regex <url> are deleted for remote <name>. Trying to delete all
|
||||||
non-push URLs is an error.
|
non-push URLs is an error.
|
||||||
+
|
+
|
||||||
Note that the push URL and the fetch URL, even though they can
|
Note that the push URL and the fetch URL, even though they can
|
||||||
|
@ -9,7 +9,7 @@ git-repack - Pack unpacked objects in a repository
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>] [--write-midx]
|
'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -76,9 +76,8 @@ to the new separate pack will be written.
|
|||||||
linkgit:git-pack-objects[1].
|
linkgit:git-pack-objects[1].
|
||||||
|
|
||||||
-q::
|
-q::
|
||||||
--quiet::
|
Pass the `-q` option to 'git pack-objects'. See
|
||||||
Show no progress over the standard error stream and pass the `-q`
|
linkgit:git-pack-objects[1].
|
||||||
option to 'git pack-objects'. See linkgit:git-pack-objects[1].
|
|
||||||
|
|
||||||
-n::
|
-n::
|
||||||
Do not update the server information with
|
Do not update the server information with
|
||||||
@ -129,11 +128,10 @@ depth is 4095.
|
|||||||
-b::
|
-b::
|
||||||
--write-bitmap-index::
|
--write-bitmap-index::
|
||||||
Write a reachability bitmap index as part of the repack. This
|
Write a reachability bitmap index as part of the repack. This
|
||||||
only makes sense when used with `-a`, `-A` or `-m`, as the bitmaps
|
only makes sense when used with `-a` or `-A`, as the bitmaps
|
||||||
must be able to refer to all reachable objects. This option
|
must be able to refer to all reachable objects. This option
|
||||||
overrides the setting of `repack.writeBitmaps`. This option
|
overrides the setting of `repack.writeBitmaps`. This option
|
||||||
has no effect if multiple packfiles are created, unless writing a
|
has no effect if multiple packfiles are created.
|
||||||
MIDX (in which case a multi-pack bitmap is created).
|
|
||||||
|
|
||||||
--pack-kept-objects::
|
--pack-kept-objects::
|
||||||
Include objects in `.keep` files when repacking. Note that we
|
Include objects in `.keep` files when repacking. Note that we
|
||||||
@ -191,15 +189,6 @@ this "roll-up", without respect to their reachability. This is subject
|
|||||||
to change in the future. This option (implying a drastically different
|
to change in the future. This option (implying a drastically different
|
||||||
repack mode) is not guaranteed to work with all other combinations of
|
repack mode) is not guaranteed to work with all other combinations of
|
||||||
option to `git repack`.
|
option to `git repack`.
|
||||||
+
|
|
||||||
When writing a multi-pack bitmap, `git repack` selects the largest resulting
|
|
||||||
pack as the preferred pack for object selection by the MIDX (see
|
|
||||||
linkgit:git-multi-pack-index[1]).
|
|
||||||
|
|
||||||
-m::
|
|
||||||
--write-midx::
|
|
||||||
Write a multi-pack index (see linkgit:git-multi-pack-index[1])
|
|
||||||
containing the non-redundant packs.
|
|
||||||
|
|
||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
|
@ -8,7 +8,7 @@ git-request-pull - Generates a summary of pending changes
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git request-pull' [-p] <start> <URL> [<end>]
|
'git request-pull' [-p] <start> <url> [<end>]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -21,7 +21,7 @@ the changes and indicates from where they can be pulled.
|
|||||||
The upstream project is expected to have the commit named by
|
The upstream project is expected to have the commit named by
|
||||||
`<start>` and the output asks it to integrate the changes you made
|
`<start>` and the output asks it to integrate the changes you made
|
||||||
since that commit, up to the commit named by `<end>`, by visiting
|
since that commit, up to the commit named by `<end>`, by visiting
|
||||||
the repository named by `<URL>`.
|
the repository named by `<url>`.
|
||||||
|
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
@ -33,14 +33,14 @@ OPTIONS
|
|||||||
Commit to start at. This names a commit that is already in
|
Commit to start at. This names a commit that is already in
|
||||||
the upstream history.
|
the upstream history.
|
||||||
|
|
||||||
<URL>::
|
<url>::
|
||||||
The repository URL to be pulled from.
|
The repository URL to be pulled from.
|
||||||
|
|
||||||
<end>::
|
<end>::
|
||||||
Commit to end at (defaults to HEAD). This names the commit
|
Commit to end at (defaults to HEAD). This names the commit
|
||||||
at the tip of the history you are asking to be pulled.
|
at the tip of the history you are asking to be pulled.
|
||||||
+
|
+
|
||||||
When the repository named by `<URL>` has the commit at a tip of a
|
When the repository named by `<url>` has the commit at a tip of a
|
||||||
ref that is different from the ref you have locally, you can use the
|
ref that is different from the ref you have locally, you can use the
|
||||||
`<local>:<remote>` syntax, to have its local name, a colon `:`, and
|
`<local>:<remote>` syntax, to have its local name, a colon `:`, and
|
||||||
its remote name.
|
its remote name.
|
||||||
|
@ -69,8 +69,7 @@ linkgit:git-add[1]).
|
|||||||
|
|
||||||
--hard::
|
--hard::
|
||||||
Resets the index and working tree. Any changes to tracked files in the
|
Resets the index and working tree. Any changes to tracked files in the
|
||||||
working tree since `<commit>` are discarded. Any untracked files or
|
working tree since `<commit>` are discarded.
|
||||||
directories in the way of writing any tracked files are simply deleted.
|
|
||||||
|
|
||||||
--merge::
|
--merge::
|
||||||
Resets the index and updates the files in the working tree that are
|
Resets the index and updates the files in the working tree that are
|
||||||
|
@ -92,7 +92,8 @@ in linkgit:git-checkout[1] for details.
|
|||||||
The same as `--merge` option above, but changes the way the
|
The same as `--merge` option above, but changes the way the
|
||||||
conflicting hunks are presented, overriding the
|
conflicting hunks are presented, overriding the
|
||||||
`merge.conflictStyle` configuration variable. Possible values
|
`merge.conflictStyle` configuration variable. Possible values
|
||||||
are "merge" (default), "diff3", and "zdiff3".
|
are "merge" (default) and "diff3" (in addition to what is
|
||||||
|
shown by "merge" style, shows the original contents).
|
||||||
|
|
||||||
--ignore-unmerged::
|
--ignore-unmerged::
|
||||||
When restoring files on the working tree from the index, do
|
When restoring files on the working tree from the index, do
|
||||||
|
@ -72,12 +72,6 @@ For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
|
|||||||
--ignore-unmatch::
|
--ignore-unmatch::
|
||||||
Exit with a zero status even if no files matched.
|
Exit with a zero status even if no files matched.
|
||||||
|
|
||||||
--sparse::
|
|
||||||
Allow updating index entries outside of the sparse-checkout cone.
|
|
||||||
Normally, `git rm` refuses to update index entries whose paths do
|
|
||||||
not fit within the sparse-checkout cone. See
|
|
||||||
linkgit:git-sparse-checkout[1] for more.
|
|
||||||
|
|
||||||
-q::
|
-q::
|
||||||
--quiet::
|
--quiet::
|
||||||
`git rm` normally outputs one line (in the form of an `rm` command)
|
`git rm` normally outputs one line (in the form of an `rm` command)
|
||||||
|
@ -9,8 +9,7 @@ git-send-email - Send a collection of patches as emails
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git send-email' [<options>] <file|directory>...
|
'git send-email' [<options>] <file|directory|rev-list options>...
|
||||||
'git send-email' [<options>] <format-patch options>
|
|
||||||
'git send-email' --dump-aliases
|
'git send-email' --dump-aliases
|
||||||
|
|
||||||
|
|
||||||
@ -20,8 +19,7 @@ Takes the patches given on the command line and emails them out.
|
|||||||
Patches can be specified as files, directories (which will send all
|
Patches can be specified as files, directories (which will send all
|
||||||
files in the directory), or directly as a revision list. In the
|
files in the directory), or directly as a revision list. In the
|
||||||
last case, any format accepted by linkgit:git-format-patch[1] can
|
last case, any format accepted by linkgit:git-format-patch[1] can
|
||||||
be passed to git send-email, as well as options understood by
|
be passed to git send-email.
|
||||||
linkgit:git-format-patch[1].
|
|
||||||
|
|
||||||
The header of the email is configurable via command-line options. If not
|
The header of the email is configurable via command-line options. If not
|
||||||
specified on the command line, the user will be prompted with a ReadLine
|
specified on the command line, the user will be prompted with a ReadLine
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user