By default, git-receive-pack will advertise the atomic push
capability to its clients. If you don't want to advertise this
capability, set this variable to false.
When set to true, git-receive-pack will advertise the push options
capability to its clients. False by default.
By default, git-receive-pack will run "git-gc --auto" after
receiving data from git-push and updating refs. You can stop
it by setting this variable to false.
By setting this variable to a string, `git receive-pack`
will accept a `git push --signed` and verifies it by using
a "nonce" protected by HMAC using this string as a secret
When a `git push --signed` sent a push certificate with a
"nonce" that was issued by a receive-pack serving the same
repository within this many seconds, export the "nonce"
found in the certificate to `GIT_PUSH_CERT_NONCE` to the
hooks (instead of what the receive-pack asked the sending
side to include). This may allow writing checks in
`pre-receive` and `post-receive` a bit easier. Instead of
checking `GIT_PUSH_CERT_NONCE_SLOP` environment variable
that records by how many seconds the nonce is stale to
decide if they want to accept the certificate, they only
can check `GIT_PUSH_CERT_NONCE_STATUS` is `OK`.
If it is set to true, git-receive-pack will check all received
objects. See `transfer.fsckObjects` for what's checked.
Defaults to false. If not set, the value of
`transfer.fsckObjects` is used instead.
Acts like `fsck.<msg-id>`, but is used by
linkgit:git-receive-pack instead of
linkgit:git-fsck. See the `fsck.<msg-id>` documentation for
Acts like `fsck.skipList`, but is used by
linkgit:git-receive-pack instead of
linkgit:git-fsck. See the `fsck.skipList` documentation for
After receiving the pack from the client, `receive-pack` may
produce no output (if `--quiet` was specified) while processing
the pack, causing some networks to drop the TCP connection.
With this option set, if `receive-pack` does not transmit
any data in this phase for `receive.keepAlive` seconds, it will
send a short keepalive packet. The default is 5 seconds; set
to 0 to disable keepalives entirely.
If the number of objects received in a push is below this
limit then the objects will be unpacked into loose object
files. However if the number of received objects equals or
exceeds this limit then the received pack will be stored as
a pack, after adding any missing delta bases. Storing the
pack from a push can make the push operation complete faster,
especially on slow filesystems. If not set, the value of
`transfer.unpackLimit` is used instead.
If the size of the incoming pack stream is larger than this
limit, then git-receive-pack will error out, instead of
accepting the pack file. If not set or set to 0, then the size
If set to true, git-receive-pack will deny a ref update that deletes
the ref. Use this to prevent such a ref deletion via a push.
If set to true, git-receive-pack will deny a ref update that
deletes the currently checked out branch of a non-bare repository.
If set to true or "refuse", git-receive-pack will deny a ref update
to the currently checked out branch of a non-bare repository.
Such a push is potentially dangerous because it brings the HEAD
out of sync with the index and working tree. If set to "warn",
print a warning of such a push to stderr, but allow the push to
proceed. If set to false or "ignore", allow such pushes with no
message. Defaults to "refuse".
Another option is "updateInstead" which will update the working
tree if pushing into the current branch. This option is
intended for synchronizing working directories when one side is not easily
accessible via interactive ssh (e.g. a live web site, hence the requirement
that the working directory be clean). This mode also comes in handy when
developing inside a VM to test and fix code on different Operating Systems.
By default, "updateInstead" will refuse the push if the working tree or
the index have any difference from the HEAD, but the `push-to-checkout`
hook can be used to customize this. See linkgit:githooks.
If set to true, git-receive-pack will deny a ref update which is
not a fast-forward. Use this to prevent such an update via a push,
even if that push is forced. This configuration variable is
set when initializing a shared repository.
This variable is the same as `transfer.hideRefs`, but applies
only to `receive-pack` (and so affects pushes, but not fetches).
An attempt to update or delete a hidden ref by `git push` is
This is a multi-valued variable that defines reference prefixes
to match the commands in `receive-pack`. Commands matching the
prefixes will be executed by an external hooks "proc-receive",
instead of the internal `execute_commands` function. If this
variable is not defined, the "proc-receive" hook will never be
used, and all commands will be executed by the internal
For example, if this variable is set to "refs/for/", pushing to
reference such as "refs/for/master" will not create or update a
reference named "refs/for/master", but may create or update a
pull request directly by running an external hook.
If set to true, git-receive-pack will run git-update-server-info
after receiving data from git-push and updating refs.
If set to true, .git/shallow can be updated when new refs
require new shallow roots. Otherwise those refs are rejected.