diff options
Diffstat (limited to 'Documentation/git-upload-pack.adoc')
-rw-r--r-- | Documentation/git-upload-pack.adoc | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/Documentation/git-upload-pack.adoc b/Documentation/git-upload-pack.adoc new file mode 100644 index 0000000000..516d1639d9 --- /dev/null +++ b/Documentation/git-upload-pack.adoc @@ -0,0 +1,95 @@ +git-upload-pack(1) +================== + +NAME +---- +git-upload-pack - Send objects packed back to git-fetch-pack + + +SYNOPSIS +-------- +[verse] +'git-upload-pack' [--[no-]strict] [--timeout=<n>] [--stateless-rpc] + [--advertise-refs] <directory> + +DESCRIPTION +----------- +Invoked by 'git fetch-pack', learns what +objects the other side is missing, and sends them after packing. + +This command is usually not invoked directly by the end user. +The UI for the protocol is on the 'git fetch-pack' side, and the +program pair is meant to be used to pull updates from a remote +repository. For push operations, see 'git send-pack'. + +OPTIONS +------- + +--[no-]strict:: + Do not try <directory>/.git/ if <directory> is not a Git directory. + +--timeout=<n>:: + Interrupt transfer after <n> seconds of inactivity. + +--stateless-rpc:: + Perform only a single read-write cycle with stdin and stdout. + This fits with the HTTP POST request processing model where + a program may read the request, write a response, and must exit. + +--http-backend-info-refs:: + Used by linkgit:git-http-backend[1] to serve up + `$GIT_URL/info/refs?service=git-upload-pack` requests. See + "Smart Clients" in linkgit:gitprotocol-http[5] and "HTTP + Transport" in the linkgit:gitprotocol-v2[5] + documentation. Also understood by + linkgit:git-receive-pack[1]. + +<directory>:: + The repository to sync from. + +ENVIRONMENT +----------- + +`GIT_PROTOCOL`:: + Internal variable used for handshaking the wire protocol. Server + admins may need to configure some transports to allow this + variable to be passed. See the discussion in linkgit:git[1]. + +`GIT_NO_LAZY_FETCH`:: + When cloning or fetching from a partial repository (i.e., one + itself cloned with `--filter`), the server-side `upload-pack` + may need to fetch extra objects from its upstream in order to + complete the request. By default, `upload-pack` will refuse to + perform such a lazy fetch, because `git fetch` may run arbitrary + commands specified in configuration and hooks of the source + repository (and `upload-pack` tries to be safe to run even in + untrusted `.git` directories). ++ +This is implemented by having `upload-pack` internally set the +`GIT_NO_LAZY_FETCH` variable to `1`. If you want to override it +(because you are fetching from a partial clone, and you are sure +you trust it), you can explicitly set `GIT_NO_LAZY_FETCH` to +`0`. + +SECURITY +-------- + +Most Git commands should not be run in an untrusted `.git` directory +(see the section `SECURITY` in linkgit:git[1]). `upload-pack` tries to +avoid any dangerous configuration options or hooks from the repository +it's serving, making it safe to clone an untrusted directory and run +commands on the resulting clone. + +For an extra level of safety, you may be able to run `upload-pack` as an +alternate user. The details will be platform dependent, but on many +systems you can run: + + git clone --no-local --upload-pack='sudo -u nobody git-upload-pack' ... + +SEE ALSO +-------- +linkgit:gitnamespaces[7] + +GIT +--- +Part of the linkgit:git[1] suite |