diff --git a/Documentation/config/fetch.adoc b/Documentation/config/fetch.adoc index 00435e9a16d9f9..be055c35813d57 100644 --- a/Documentation/config/fetch.adoc +++ b/Documentation/config/fetch.adoc @@ -94,6 +94,16 @@ A value of 0 will give some reasonable default. If unset, it defaults to 1. For submodules, this setting can be overridden using the `submodule.fetchJobs` config setting. +`fetch.packfileUriJobs`:: + Specifies the maximum number of packfile URI downloads and indexers + to run at once. The default is 1, which preserves advertised URI + order. ++ +Values greater than 1 are used only when the server advertises and the +client requests the `no-ref-delta` promise. Each URI pack is then checked +with `index-pack --no-ref-delta` before it is accepted. +Responses with one URI retain the serial path. + `fetch.writeCommitGraph`:: Set to true to write a commit-graph after every `git fetch` command that downloads a pack-file from a remote. Using the `--split` option, diff --git a/Documentation/config/uploadpack.adoc b/Documentation/config/uploadpack.adoc index 0e1dda944a5490..c45f3c10645419 100644 --- a/Documentation/config/uploadpack.adoc +++ b/Documentation/config/uploadpack.adoc @@ -86,3 +86,14 @@ uploadpack.allowRefInWant:: is intended for the benefit of load-balanced servers which may not have the same view of what OIDs their refs point to due to replication delay. + +uploadpack.allowNoRefDelta:: + If this option is set, `upload-pack` may advertise the + `no-ref-delta` feature of the protocol version 2 `fetch` + command. When a client requests the feature, `upload-pack` passes + `--no-ref-delta` to `pack-objects` for the inline pack and promises + that every pack named in a `packfile-uris` response section also + contains no `REF_DELTA` entries. `upload-pack` does not inspect + configured URI packs, so the server administrator must create each + pack with `pack-objects --no-ref-delta` or otherwise verify this + property. The default is `false`. diff --git a/Documentation/git-http-fetch.adoc b/Documentation/git-http-fetch.adoc index 2200f073c47120..784f23903030de 100644 --- a/Documentation/git-http-fetch.adoc +++ b/Documentation/git-http-fetch.adoc @@ -48,13 +48,21 @@ commit-id:: line (which is not expected in this case), 'git http-fetch' fetches the packfile directly at the given URL and uses index-pack to generate corresponding .idx and .keep files. - The hash is used to determine the name of the temporary file and is - arbitrary. The output of index-pack is printed to stdout. Requires - --index-pack-args. + The hash is used to determine the name of the temporary file. It need + not be the pack hash, but it must uniquely identify the pack contents + for resumption. The output of index-pack is printed to stdout. Requires + one or more --index-pack-arg options. ---index-pack-args=:: - For internal use only. The command to run on the contents of the - downloaded pack. Arguments are URL-encoded separated by spaces. +--index-pack-arg=:: + For internal use only. The first instance specifies the command run on + the contents of the downloaded pack. Subsequent instances specify its + arguments. + +--report-progress:: + For internal use only. With --packfile, report the cumulative number + of bytes received as `bytes ` lines on stdout, before the + index-pack output. Bytes already present in a resumed download are + not included. --recover:: Verify that everything reachable from target is fetched. Used after diff --git a/Documentation/git-index-pack.adoc b/Documentation/git-index-pack.adoc index 18036953c06b22..0076d6c183c220 100644 --- a/Documentation/git-index-pack.adoc +++ b/Documentation/git-index-pack.adoc @@ -9,8 +9,10 @@ git-index-pack - Build pack index file for an existing packed archive SYNOPSIS -------- [verse] -'git index-pack' [-v] [-o ] [--[no-]rev-index] -'git index-pack' --stdin [--fix-thin] [--keep] [-v] [-o ] +'git index-pack' [-v] [-o ] [--no-ref-delta] + [--[no-]rev-index] +'git index-pack' --stdin [--fix-thin] [--keep] [--no-ref-delta] + [-v] [-o ] [--[no-]rev-index] [] @@ -60,6 +62,11 @@ OPTIONS excluded objects the deltified objects are based on to the pack. This option only makes sense in conjunction with --stdin. +--no-ref-delta:: + Reject a pack containing a `REF_DELTA` entry. `OFS_DELTA` entries + are accepted. This option can be used to verify a protocol promise + that a pack contains no `REF_DELTA` entries. + --keep:: Before moving the index into its final destination create an empty .keep file for the associated pack file. diff --git a/Documentation/git-pack-objects.adoc b/Documentation/git-pack-objects.adoc index 65cd00c152f495..5e42e4429d0b8e 100644 --- a/Documentation/git-pack-objects.adoc +++ b/Documentation/git-pack-objects.adoc @@ -10,7 +10,8 @@ SYNOPSIS -------- [verse] 'git pack-objects' [-q | --progress | --all-progress] [--all-progress-implied] - [--no-reuse-delta] [--delta-base-offset] [--non-empty] + [--no-reuse-delta] [--delta-base-offset] [--no-ref-delta] + [--non-empty] [--local] [--incremental] [--window=] [--depth=] [--revs [--unpacked | --all]] [--keep-pack=] [--cruft] [--cruft-expiration=