Autogenerated manpages for v2.45.2-606-g900514
[git-manpages.git] / man1 / git-upload-pack.1
blob548ef59aab9dab61b7eb8032530017d16cf6340e
1 '\" t
2 .\"     Title: git-upload-pack
3 .\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
4 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
5 .\"      Date: 2024-06-20
6 .\"    Manual: Git Manual
7 .\"    Source: Git 2.45.2.606.g9005149a4a
8 .\"  Language: English
9 .\"
10 .TH "GIT\-UPLOAD\-PACK" "1" "2024\-06\-20" "Git 2\&.45\&.2\&.606\&.g900514" "Git Manual"
11 .\" -----------------------------------------------------------------
12 .\" * Define some portability stuff
13 .\" -----------------------------------------------------------------
14 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 .\" http://bugs.debian.org/507673
16 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
17 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 .ie \n(.g .ds Aq \(aq
19 .el       .ds Aq '
20 .\" -----------------------------------------------------------------
21 .\" * set default formatting
22 .\" -----------------------------------------------------------------
23 .\" disable hyphenation
24 .nh
25 .\" disable justification (adjust text to left margin only)
26 .ad l
27 .\" -----------------------------------------------------------------
28 .\" * MAIN CONTENT STARTS HERE *
29 .\" -----------------------------------------------------------------
30 .SH "NAME"
31 git-upload-pack \- Send objects packed back to git\-fetch\-pack
32 .SH "SYNOPSIS"
33 .sp
34 .nf
35 \fIgit\-upload\-pack\fR [\-\-[no\-]strict] [\-\-timeout=<n>] [\-\-stateless\-rpc]
36                   [\-\-advertise\-refs] <directory>
37 .fi
38 .sp
39 .SH "DESCRIPTION"
40 .sp
41 Invoked by \fIgit fetch\-pack\fR, learns what objects the other side is missing, and sends them after packing\&.
42 .sp
43 This command is usually not invoked directly by the end user\&. The UI for the protocol is on the \fIgit fetch\-pack\fR side, and the program pair is meant to be used to pull updates from a remote repository\&. For push operations, see \fIgit send\-pack\fR\&.
44 .SH "OPTIONS"
45 .PP
46 \-\-[no\-]strict
47 .RS 4
48 Do not try <directory>/\&.git/ if <directory> is not a Git directory\&.
49 .RE
50 .PP
51 \-\-timeout=<n>
52 .RS 4
53 Interrupt transfer after <n> seconds of inactivity\&.
54 .RE
55 .PP
56 \-\-stateless\-rpc
57 .RS 4
58 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\&.
59 .RE
60 .PP
61 \-\-http\-backend\-info\-refs
62 .RS 4
63 Used by
64 \fBgit-http-backend\fR(1)
65 to serve up
66 \fB$GIT_URL/info/refs?service=git\-upload\-pack\fR
67 requests\&. See "Smart Clients" in
68 \fBgitprotocol-http\fR(5)
69 and "HTTP Transport" in the
70 \fBgitprotocol-v2\fR(5)
71 documentation\&. Also understood by
72 \fBgit-receive-pack\fR(1)\&.
73 .RE
74 .PP
75 <directory>
76 .RS 4
77 The repository to sync from\&.
78 .RE
79 .SH "ENVIRONMENT"
80 .PP
81 \fBGIT_PROTOCOL\fR
82 .RS 4
83 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
84 \fBgit\fR(1)\&.
85 .RE
86 .PP
87 \fBGIT_NO_LAZY_FETCH\fR
88 .RS 4
89 When cloning or fetching from a partial repository (i\&.e\&., one itself cloned with
90 \fB\-\-filter\fR), the server\-side
91 \fBupload\-pack\fR
92 may need to fetch extra objects from its upstream in order to complete the request\&. By default,
93 \fBupload\-pack\fR
94 will refuse to perform such a lazy fetch, because
95 \fBgit fetch\fR
96 may run arbitrary commands specified in configuration and hooks of the source repository (and
97 \fBupload\-pack\fR
98 tries to be safe to run even in untrusted
99 \fB\&.git\fR
100 directories)\&.
102 This is implemented by having
103 \fBupload\-pack\fR
104 internally set the
105 \fBGIT_NO_LAZY_FETCH\fR
106 variable to
107 \fB1\fR\&. 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
108 \fBGIT_NO_LAZY_FETCH\fR
110 \fB0\fR\&.
112 .SH "SECURITY"
114 Most Git commands should not be run in an untrusted \fB\&.git\fR directory (see the section \fBSECURITY\fR in \fBgit\fR(1))\&. \fBupload\-pack\fR tries to avoid any dangerous configuration options or hooks from the repository it\(cqs serving, making it safe to clone an untrusted directory and run commands on the resulting clone\&.
116 For an extra level of safety, you may be able to run \fBupload\-pack\fR as an alternate user\&. The details will be platform dependent, but on many systems you can run:
118 .if n \{\
119 .RS 4
122 git clone \-\-no\-local \-\-upload\-pack=\*(Aqsudo \-u nobody git\-upload\-pack\*(Aq \&.\&.\&.
124 .if n \{\
127 .SH "SEE ALSO"
129 \fBgitnamespaces\fR(7)
130 .SH "GIT"
132 Part of the \fBgit\fR(1) suite