]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-upload-pack.txt
The seventh batch
[thirdparty/git.git] / Documentation / git-upload-pack.txt
CommitLineData
8b3d9dc0
JH
1git-upload-pack(1)
2==================
8b3d9dc0
JH
3
4NAME
5----
c3f0baac 6git-upload-pack - Send objects packed back to git-fetch-pack
8b3d9dc0
JH
7
8
9SYNOPSIS
10--------
7791a1d9 11[verse]
9812f213
AQ
12'git-upload-pack' [--[no-]strict] [--timeout=<n>] [--stateless-rpc]
13 [--advertise-refs] <directory>
ad471949 14
8b3d9dc0
JH
15DESCRIPTION
16-----------
0b444cdb 17Invoked by 'git fetch-pack', learns what
8b3d9dc0
JH
18objects the other side is missing, and sends them after packing.
19
20This command is usually not invoked directly by the end user.
0b444cdb 21The UI for the protocol is on the 'git fetch-pack' side, and the
8b3d9dc0 22program pair is meant to be used to pull updates from a remote
0b444cdb 23repository. For push operations, see 'git send-pack'.
8b3d9dc0 24
8b3d9dc0
JH
25OPTIONS
26-------
83a5ad61 27
9812f213 28--[no-]strict::
384f7d17 29 Do not try <directory>/.git/ if <directory> is not a Git directory.
83a5ad61 30
3240240f 31--timeout=<n>::
83a5ad61
JS
32 Interrupt transfer after <n> seconds of inactivity.
33
9812f213
AQ
34--stateless-rpc::
35 Perform only a single read-write cycle with stdin and stdout.
36 This fits with the HTTP POST request processing model where
37 a program may read the request, write a response, and must exit.
38
98e2d9d6
ÆAB
39--http-backend-info-refs::
40 Used by linkgit:git-http-backend[1] to serve up
41 `$GIT_URL/info/refs?service=git-upload-pack` requests. See
1e232016 42 "Smart Clients" in linkgit:gitprotocol-http[5] and "HTTP
c9dba103 43 Transport" in the linkgit:gitprotocol-v2[5]
1e232016 44 documentation. Also understood by
98e2d9d6 45 linkgit:git-receive-pack[1].
9812f213 46
8b3d9dc0
JH
47<directory>::
48 The repository to sync from.
49
2834a72d
JK
50ENVIRONMENT
51-----------
52
53`GIT_PROTOCOL`::
54 Internal variable used for handshaking the wire protocol. Server
55 admins may need to configure some transports to allow this
56 variable to be passed. See the discussion in linkgit:git[1].
57
7b70e9ef
JK
58`GIT_NO_LAZY_FETCH`::
59 When cloning or fetching from a partial repository (i.e., one
60 itself cloned with `--filter`), the server-side `upload-pack`
61 may need to fetch extra objects from its upstream in order to
62 complete the request. By default, `upload-pack` will refuse to
63 perform such a lazy fetch, because `git fetch` may run arbitrary
64 commands specified in configuration and hooks of the source
65 repository (and `upload-pack` tries to be safe to run even in
66 untrusted `.git` directories).
67+
68This is implemented by having `upload-pack` internally set the
69`GIT_NO_LAZY_FETCH` variable to `1`. If you want to override it
70(because you are fetching from a partial clone, and you are sure
71you trust it), you can explicitly set `GIT_NO_LAZY_FETCH` to
72`0`.
73
e69ac42f
JK
74SECURITY
75--------
76
77Most Git commands should not be run in an untrusted `.git` directory
78(see the section `SECURITY` in linkgit:git[1]). `upload-pack` tries to
79avoid any dangerous configuration options or hooks from the repository
80it's serving, making it safe to clone an untrusted directory and run
81commands on the resulting clone.
82
83For an extra level of safety, you may be able to run `upload-pack` as an
84alternate user. The details will be platform dependent, but on many
85systems you can run:
86
87 git clone --no-local --upload-pack='sudo -u nobody git-upload-pack' ...
88
d49483f0
JT
89SEE ALSO
90--------
91linkgit:gitnamespaces[7]
92
8b3d9dc0
JH
93GIT
94---
9e1f0a85 95Part of the linkgit:git[1] suite