Autogenerated manpages for v2.46.0-164-g477ce
[git-manpages.git] / man1 / git-upload-pack.1
blobfd441e52d79b481d2a694ed877c9fd8962c5d0a5
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 v1.79.2 <http://docbook.sf.net/>
5 .\"      Date: 2024-08-14
6 .\"    Manual: Git Manual
7 .\"    Source: Git 2.46.0.164.g477ce5ccd6
8 .\"  Language: English
9 .\"
10 .TH "GIT\-UPLOAD\-PACK" "1" "2024-08-14" "Git 2\&.46\&.0\&.164\&.g477ce5" "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 .SH "DESCRIPTION"
39 .sp
40 Invoked by \fIgit fetch\-pack\fR, learns what objects the other side is missing, and sends them after packing\&.
41 .sp
42 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\&.
43 .SH "OPTIONS"
44 .PP
45 \-\-[no\-]strict
46 .RS 4
47 Do not try <directory>/\&.git/ if <directory> is not a Git directory\&.
48 .RE
49 .PP
50 \-\-timeout=<n>
51 .RS 4
52 Interrupt transfer after <n> seconds of inactivity\&.
53 .RE
54 .PP
55 \-\-stateless\-rpc
56 .RS 4
57 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\&.
58 .RE
59 .PP
60 \-\-http\-backend\-info\-refs
61 .RS 4
62 Used by
63 \fBgit-http-backend\fR(1)
64 to serve up
65 \fB$GIT_URL/info/refs?service=git\-upload\-pack\fR
66 requests\&. See "Smart Clients" in
67 \fBgitprotocol-http\fR(5)
68 and "HTTP Transport" in the
69 \fBgitprotocol-v2\fR(5)
70 documentation\&. Also understood by
71 \fBgit-receive-pack\fR(1)\&.
72 .RE
73 .PP
74 <directory>
75 .RS 4
76 The repository to sync from\&.
77 .RE
78 .SH "ENVIRONMENT"
79 .PP
80 \fBGIT_PROTOCOL\fR
81 .RS 4
82 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
83 \fBgit\fR(1)\&.
84 .RE
85 .PP
86 \fBGIT_NO_LAZY_FETCH\fR
87 .RS 4
88 When cloning or fetching from a partial repository (i\&.e\&., one itself cloned with
89 \fB\-\-filter\fR), the server\-side
90 \fBupload\-pack\fR
91 may need to fetch extra objects from its upstream in order to complete the request\&. By default,
92 \fBupload\-pack\fR
93 will refuse to perform such a lazy fetch, because
94 \fBgit fetch\fR
95 may run arbitrary commands specified in configuration and hooks of the source repository (and
96 \fBupload\-pack\fR
97 tries to be safe to run even in untrusted
98 \fB\&.git\fR
99 directories)\&.
101 This is implemented by having
102 \fBupload\-pack\fR
103 internally set the
104 \fBGIT_NO_LAZY_FETCH\fR
105 variable to
106 \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
107 \fBGIT_NO_LAZY_FETCH\fR
109 \fB0\fR\&.
111 .SH "SECURITY"
113 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\&.
115 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:
117 .if n \{\
118 .RS 4
121 git clone \-\-no\-local \-\-upload\-pack=\*(Aqsudo \-u nobody git\-upload\-pack\*(Aq \&.\&.\&.
123 .if n \{\
126 .SH "SEE ALSO"
128 \fBgitnamespaces\fR(7)
129 .SH "GIT"
131 Part of the \fBgit\fR(1) suite