blob: d4c5cfb09e3ab4a4a6a417b73286ff057e423310 [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Junio C Hamanoba4b9282008-07-06 05:20:316<meta name="generator" content="AsciiDoc 8.2.5" />
Junio C Hamano1a4e8412005-12-27 08:17:237<style type="text/css">
8/* Debug borders */
9p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
10/*
11 border: 1px solid red;
12*/
13}
14
15body {
16 margin: 1em 5% 1em 5%;
17}
18
Junio C Hamanoba4b9282008-07-06 05:20:3119a {
20 color: blue;
21 text-decoration: underline;
22}
23a:visited {
24 color: fuchsia;
25}
Junio C Hamano1a4e8412005-12-27 08:17:2326
27em {
28 font-style: italic;
29}
30
31strong {
32 font-weight: bold;
33}
34
35tt {
36 color: navy;
37}
38
39h1, h2, h3, h4, h5, h6 {
40 color: #527bbd;
41 font-family: sans-serif;
42 margin-top: 1.2em;
43 margin-bottom: 0.5em;
44 line-height: 1.3;
45}
46
Junio C Hamanoba4b9282008-07-06 05:20:3147h1, h2, h3 {
Junio C Hamano1a4e8412005-12-27 08:17:2348 border-bottom: 2px solid silver;
49}
50h2 {
Junio C Hamano1a4e8412005-12-27 08:17:2351 padding-top: 0.5em;
52}
Junio C Hamanoba4b9282008-07-06 05:20:3153h3 {
54 float: left;
55}
56h3 + * {
57 clear: left;
58}
Junio C Hamano1a4e8412005-12-27 08:17:2359
60div.sectionbody {
61 font-family: serif;
62 margin-left: 0;
63}
64
65hr {
66 border: 1px solid silver;
67}
68
69p {
70 margin-top: 0.5em;
71 margin-bottom: 0.5em;
72}
73
74pre {
75 padding: 0;
76 margin: 0;
77}
78
79span#author {
80 color: #527bbd;
81 font-family: sans-serif;
82 font-weight: bold;
Junio C Hamanoba4b9282008-07-06 05:20:3183 font-size: 1.1em;
Junio C Hamano1a4e8412005-12-27 08:17:2384}
85span#email {
86}
87span#revision {
88 font-family: sans-serif;
89}
90
91div#footer {
92 font-family: sans-serif;
93 font-size: small;
94 border-top: 2px solid silver;
95 padding-top: 0.5em;
96 margin-top: 4.0em;
97}
98div#footer-text {
99 float: left;
100 padding-bottom: 0.5em;
101}
102div#footer-badges {
103 float: right;
104 padding-bottom: 0.5em;
105}
106
107div#preamble,
108div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
109div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
110div.admonitionblock {
111 margin-right: 10%;
112 margin-top: 1.5em;
113 margin-bottom: 1.5em;
114}
115div.admonitionblock {
116 margin-top: 2.5em;
117 margin-bottom: 2.5em;
118}
119
120div.content { /* Block element content. */
121 padding: 0;
122}
123
124/* Block element titles. */
125div.title, caption.title {
126 font-family: sans-serif;
127 font-weight: bold;
128 text-align: left;
129 margin-top: 1.0em;
130 margin-bottom: 0.5em;
131}
132div.title + * {
133 margin-top: 0;
134}
135
136td div.title:first-child {
137 margin-top: 0.0em;
138}
139div.content div.title:first-child {
140 margin-top: 0.0em;
141}
142div.content + div.title {
143 margin-top: 0.0em;
144}
145
146div.sidebarblock > div.content {
147 background: #ffffee;
148 border: 1px solid silver;
149 padding: 0.5em;
150}
151
Junio C Hamanoba4b9282008-07-06 05:20:31152div.listingblock {
153 margin-right: 0%;
154}
Junio C Hamano1a4e8412005-12-27 08:17:23155div.listingblock > div.content {
156 border: 1px solid silver;
157 background: #f4f4f4;
158 padding: 0.5em;
159}
160
161div.quoteblock > div.content {
162 padding-left: 2.0em;
163}
Junio C Hamanoba4b9282008-07-06 05:20:31164
165div.attribution {
Junio C Hamano1a4e8412005-12-27 08:17:23166 text-align: right;
167}
Junio C Hamanoba4b9282008-07-06 05:20:31168div.verseblock + div.attribution {
169 text-align: left;
170}
Junio C Hamano1a4e8412005-12-27 08:17:23171
172div.admonitionblock .icon {
173 vertical-align: top;
174 font-size: 1.1em;
175 font-weight: bold;
176 text-decoration: underline;
177 color: #527bbd;
178 padding-right: 0.5em;
179}
180div.admonitionblock td.content {
181 padding-left: 0.5em;
182 border-left: 2px solid silver;
183}
184
185div.exampleblock > div.content {
186 border-left: 2px solid silver;
187 padding: 0.5em;
188}
189
190div.verseblock div.content {
191 white-space: pre;
192}
193
194div.imageblock div.content { padding-left: 0; }
195div.imageblock img { border: 1px solid silver; }
196span.image img { border-style: none; }
197
198dl {
199 margin-top: 0.8em;
200 margin-bottom: 0.8em;
201}
202dt {
203 margin-top: 0.5em;
204 margin-bottom: 0;
205 font-style: italic;
206}
207dd > *:first-child {
208 margin-top: 0;
209}
210
211ul, ol {
212 list-style-position: outside;
213}
Junio C Hamanoba4b9282008-07-06 05:20:31214div.olist2 ol {
Junio C Hamano1a4e8412005-12-27 08:17:23215 list-style-type: lower-alpha;
216}
217
218div.tableblock > table {
Junio C Hamanoba4b9282008-07-06 05:20:31219 border: 3px solid #527bbd;
Junio C Hamano1a4e8412005-12-27 08:17:23220}
221thead {
222 font-family: sans-serif;
223 font-weight: bold;
224}
225tfoot {
226 font-weight: bold;
227}
228
229div.hlist {
230 margin-top: 0.8em;
231 margin-bottom: 0.8em;
232}
Junio C Hamanoba4b9282008-07-06 05:20:31233div.hlist td {
234 padding-bottom: 5px;
235}
Junio C Hamano1a4e8412005-12-27 08:17:23236td.hlist1 {
237 vertical-align: top;
238 font-style: italic;
239 padding-right: 0.8em;
240}
241td.hlist2 {
242 vertical-align: top;
243}
244
245@media print {
246 div#footer-badges { display: none; }
247}
Junio C Hamanoba4b9282008-07-06 05:20:31248
249div#toctitle {
250 color: #527bbd;
251 font-family: sans-serif;
252 font-size: 1.1em;
253 font-weight: bold;
254 margin-top: 1.0em;
255 margin-bottom: 0.1em;
256}
257
258div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
259 margin-top: 0;
260 margin-bottom: 0;
261}
262div.toclevel2 {
263 margin-left: 2em;
264 font-size: 0.9em;
265}
266div.toclevel3 {
267 margin-left: 4em;
268 font-size: 0.9em;
269}
270div.toclevel4 {
271 margin-left: 6em;
272 font-size: 0.9em;
273}
274include1::./stylesheets/xhtml11-manpage.css[]
Junio C Hamano1a4e8412005-12-27 08:17:23275/* Workarounds for IE6's broken and incomplete CSS2. */
276
277div.sidebar-content {
278 background: #ffffee;
279 border: 1px solid silver;
280 padding: 0.5em;
281}
282div.sidebar-title, div.image-title {
283 font-family: sans-serif;
284 font-weight: bold;
285 margin-top: 0.0em;
286 margin-bottom: 0.5em;
287}
288
289div.listingblock div.content {
290 border: 1px solid silver;
291 background: #f4f4f4;
292 padding: 0.5em;
293}
294
295div.quoteblock-content {
296 padding-left: 2.0em;
297}
298
299div.exampleblock-content {
300 border-left: 2px solid silver;
301 padding-left: 0.5em;
302}
Junio C Hamanoba4b9282008-07-06 05:20:31303
304/* IE6 sets dynamically generated links as visited. */
305div#toc a:visited { color: blue; }
Junio C Hamano1a4e8412005-12-27 08:17:23306</style>
307<title>git-receive-pack(1)</title>
308</head>
309<body>
310<div id="header">
311<h1>
312git-receive-pack(1) Manual Page
313</h1>
314<h2>NAME</h2>
315<div class="sectionbody">
316<p>git-receive-pack -
Junio C Hamano7c73c662007-01-19 00:37:50317 Receive what is pushed into the repository
Junio C Hamano1a4e8412005-12-27 08:17:23318</p>
319</div>
320</div>
321<h2>SYNOPSIS</h2>
322<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31323<div class="para"><p><em>git receive-pack</em> &lt;directory&gt;</p></div>
Junio C Hamano1a4e8412005-12-27 08:17:23324</div>
Junio C Hamanoba4b9282008-07-06 05:20:31325<h2 id="_description">DESCRIPTION</h2>
Junio C Hamano1a4e8412005-12-27 08:17:23326<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31327<div class="para"><p>Invoked by <em>git-send-pack</em> and updates the repository with the
328information fed from the remote end.</p></div>
329<div class="para"><p>This command is usually not invoked directly by the end user.
330The UI for the protocol is on the <em>git-send-pack</em> side, and the
Junio C Hamano1a4e8412005-12-27 08:17:23331program pair is meant to be used to push updates to remote
Junio C Hamanoba4b9282008-07-06 05:20:31332repository. For pull operations, see <a href="git-fetch-pack.html">git-fetch-pack(1)</a>.</p></div>
333<div class="para"><p>The command allows for creation and fast forwarding of sha1 refs
Junio C Hamano1a4e8412005-12-27 08:17:23334(heads/tags) on the remote end (strictly speaking, it is the
Junio C Hamanoba4b9282008-07-06 05:20:31335local end <em>git-receive-pack</em> runs, but to the user who is sitting at
336the send-pack end, it is updating the remote. Confused?)</p></div>
337<div class="para"><p>There are other real-world examples of using update and
338post-update hooks found in the Documentation/howto directory.</p></div>
339<div class="para"><p><em>git-receive-pack</em> honours the receive.denyNonFastForwards config
Junio C Hamanoabcd65d2007-03-08 02:43:00340option, which tells it if updates to a ref should be denied if they
Junio C Hamanoba4b9282008-07-06 05:20:31341are not fast-forwards.</p></div>
Junio C Hamano1a4e8412005-12-27 08:17:23342</div>
Junio C Hamanoba4b9282008-07-06 05:20:31343<h2 id="_options">OPTIONS</h2>
Junio C Hamano1a4e8412005-12-27 08:17:23344<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31345<div class="vlist"><dl>
Junio C Hamano1a4e8412005-12-27 08:17:23346<dt>
347&lt;directory&gt;
348</dt>
349<dd>
350<p>
351 The repository to sync into.
352</p>
353</dd>
Junio C Hamanoba4b9282008-07-06 05:20:31354</dl></div>
Junio C Hamano1a4e8412005-12-27 08:17:23355</div>
Junio C Hamanoba4b9282008-07-06 05:20:31356<h2 id="_pre_receive_hook">pre-receive Hook</h2>
Junio C Hamanoabcd65d2007-03-08 02:43:00357<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31358<div class="para"><p>Before any ref is updated, if $GIT_DIR/hooks/pre-receive file exists
Junio C Hamanoc51fede2007-03-12 07:29:20359and is executable, it will be invoked once with no parameters. The
Junio C Hamanoba4b9282008-07-06 05:20:31360standard input of the hook will be one line per ref to be updated:</p></div>
Junio C Hamanoabcd65d2007-03-08 02:43:00361<div class="literalblock">
362<div class="content">
Junio C Hamanoc51fede2007-03-12 07:29:20363<pre><tt>sha1-old SP sha1-new SP refname LF</tt></pre>
Junio C Hamanoabcd65d2007-03-08 02:43:00364</div></div>
Junio C Hamanoba4b9282008-07-06 05:20:31365<div class="para"><p>The refname value is relative to $GIT_DIR; e.g. for the master
Junio C Hamanoc51fede2007-03-12 07:29:20366head this is "refs/heads/master". The two sha1 values before
Junio C Hamanoabcd65d2007-03-08 02:43:00367each refname are the object names for the refname before and after
Junio C Hamano1d90cb02007-07-03 07:05:31368the update. Refs to be created will have sha1-old equal to 0{40},
369while refs to be deleted will have sha1-new equal to 0{40}, otherwise
Junio C Hamanoba4b9282008-07-06 05:20:31370sha1-old and sha1-new should be valid objects in the repository.</p></div>
371<div class="para"><p>This hook is called before any refname is updated and before any
372fast-forward checks are performed.</p></div>
373<div class="para"><p>If the pre-receive hook exits with a non-zero exit status no updates
Junio C Hamanoabcd65d2007-03-08 02:43:00374will be performed, and the update, post-receive and post-update
375hooks will not be invoked either. This can be useful to quickly
Junio C Hamanoba4b9282008-07-06 05:20:31376bail out if the update is not to be supported.</p></div>
Junio C Hamanoabcd65d2007-03-08 02:43:00377</div>
Junio C Hamanoba4b9282008-07-06 05:20:31378<h2 id="_update_hook">update Hook</h2>
Junio C Hamanoabcd65d2007-03-08 02:43:00379<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31380<div class="para"><p>Before each ref is updated, if $GIT_DIR/hooks/update file exists
381and is executable, it is invoked once per ref, with three parameters:</p></div>
Junio C Hamanoabcd65d2007-03-08 02:43:00382<div class="literalblock">
383<div class="content">
384<pre><tt>$GIT_DIR/hooks/update refname sha1-old sha1-new</tt></pre>
385</div></div>
Junio C Hamanoba4b9282008-07-06 05:20:31386<div class="para"><p>The refname parameter is relative to $GIT_DIR; e.g. for the master
Junio C Hamanoabcd65d2007-03-08 02:43:00387head this is "refs/heads/master". The two sha1 arguments are
388the object names for the refname before and after the update.
389Note that the hook is called before the refname is updated,
Junio C Hamano1d90cb02007-07-03 07:05:31390so either sha1-old is 0{40} (meaning there is no such ref yet),
Junio C Hamanoba4b9282008-07-06 05:20:31391or it should match what is recorded in refname.</p></div>
392<div class="para"><p>The hook should exit with non-zero status if it wants to disallow
393updating the named ref. Otherwise it should exit with zero.</p></div>
394<div class="para"><p>Successful execution (a zero exit status) of this hook does not
Junio C Hamanoa6387422007-08-25 03:54:27395ensure the ref will actually be updated, it is only a prerequisite.
Junio C Hamanoabcd65d2007-03-08 02:43:00396As such it is not a good idea to send notices (e.g. email) from
Junio C Hamanoba4b9282008-07-06 05:20:31397this hook. Consider using the post-receive hook instead.</p></div>
Junio C Hamanoabcd65d2007-03-08 02:43:00398</div>
Junio C Hamanoba4b9282008-07-06 05:20:31399<h2 id="_post_receive_hook">post-receive Hook</h2>
Junio C Hamanoabcd65d2007-03-08 02:43:00400<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31401<div class="para"><p>After all refs were updated (or attempted to be updated), if any
Junio C Hamanoabcd65d2007-03-08 02:43:00402ref update was successful, and if $GIT_DIR/hooks/post-receive
Junio C Hamanoc51fede2007-03-12 07:29:20403file exists and is executable, it will be invoke once with no
404parameters. The standard input of the hook will be one line
Junio C Hamanoba4b9282008-07-06 05:20:31405for each successfully updated ref:</p></div>
Junio C Hamanoabcd65d2007-03-08 02:43:00406<div class="literalblock">
407<div class="content">
Junio C Hamanoc51fede2007-03-12 07:29:20408<pre><tt>sha1-old SP sha1-new SP refname LF</tt></pre>
Junio C Hamanoabcd65d2007-03-08 02:43:00409</div></div>
Junio C Hamanoba4b9282008-07-06 05:20:31410<div class="para"><p>The refname value is relative to $GIT_DIR; e.g. for the master
Junio C Hamanoc51fede2007-03-12 07:29:20411head this is "refs/heads/master". The two sha1 values before
Junio C Hamanoabcd65d2007-03-08 02:43:00412each refname are the object names for the refname before and after
413the update. Refs that were created will have sha1-old equal to
Junio C Hamano1d90cb02007-07-03 07:05:314140{40}, while refs that were deleted will have sha1-new equal to
4150{40}, otherwise sha1-old and sha1-new should be valid objects in
Junio C Hamanoba4b9282008-07-06 05:20:31416the repository.</p></div>
417<div class="para"><p>Using this hook, it is easy to generate mails describing the updates
Junio C Hamanoabcd65d2007-03-08 02:43:00418to the repository. This example script sends one mail message per
Junio C Hamanoba4b9282008-07-06 05:20:31419ref listing the commits pushed to the repository:</p></div>
Junio C Hamanoabcd65d2007-03-08 02:43:00420<div class="literalblock">
421<div class="content">
422<pre><tt>#!/bin/sh
423# mail out commit update information.
Junio C Hamanoc51fede2007-03-12 07:29:20424while read oval nval ref
Junio C Hamanoabcd65d2007-03-08 02:43:00425do
Junio C Hamanoc51fede2007-03-12 07:29:20426 if expr "$oval" : '0*$' &gt;/dev/null
Junio C Hamanoabcd65d2007-03-08 02:43:00427 then
428 echo "Created a new ref, with the following commits:"
Junio C Hamanofce7c7e2008-07-02 03:06:38429 git rev-list --pretty "$nval"
Junio C Hamanoabcd65d2007-03-08 02:43:00430 else
431 echo "New commits:"
Junio C Hamanofce7c7e2008-07-02 03:06:38432 git rev-list --pretty "$nval" "^$oval"
Junio C Hamanoabcd65d2007-03-08 02:43:00433 fi |
Junio C Hamanoc51fede2007-03-12 07:29:20434 mail -s "Changes to ref $ref" commit-list@mydomain
Junio C Hamanoabcd65d2007-03-08 02:43:00435done
436exit 0</tt></pre>
437</div></div>
Junio C Hamanoba4b9282008-07-06 05:20:31438<div class="para"><p>The exit code from this hook invocation is ignored, however a
439non-zero exit code will generate an error message.</p></div>
440<div class="para"><p>Note that it is possible for refname to not have sha1-new when this
Junio C Hamanoabcd65d2007-03-08 02:43:00441hook runs. This can easily occur if another user modifies the ref
Junio C Hamanoba4b9282008-07-06 05:20:31442after it was updated by <em>git-receive-pack</em>, but before the hook was able
Junio C Hamanoabcd65d2007-03-08 02:43:00443to evaluate it. It is recommended that hooks rely on sha1-new
Junio C Hamanoba4b9282008-07-06 05:20:31444rather than the current value of refname.</p></div>
Junio C Hamanoabcd65d2007-03-08 02:43:00445</div>
Junio C Hamanoba4b9282008-07-06 05:20:31446<h2 id="_post_update_hook">post-update Hook</h2>
Junio C Hamanoabcd65d2007-03-08 02:43:00447<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31448<div class="para"><p>After all other processing, if at least one ref was updated, and
Junio C Hamanoabcd65d2007-03-08 02:43:00449if $GIT_DIR/hooks/post-update file exists and is executable, then
450post-update will called with the list of refs that have been updated.
Junio C Hamanoba4b9282008-07-06 05:20:31451This can be used to implement any repository wide cleanup tasks.</p></div>
452<div class="para"><p>The exit code from this hook invocation is ignored; the only thing
453left for <em>git-receive-pack</em> to do at that point is to exit itself
454anyway.</p></div>
455<div class="para"><p>This hook can be used, for example, to run <tt>git update-server-info</tt>
456if the repository is packed and is served via a dumb transport.</p></div>
Junio C Hamanoabcd65d2007-03-08 02:43:00457<div class="literalblock">
458<div class="content">
459<pre><tt>#!/bin/sh
Junio C Hamanofce7c7e2008-07-02 03:06:38460exec git update-server-info</tt></pre>
Junio C Hamanoabcd65d2007-03-08 02:43:00461</div></div>
462</div>
Junio C Hamanoba4b9282008-07-06 05:20:31463<h2 id="_see_also">SEE ALSO</h2>
Junio C Hamano1a4e8412005-12-27 08:17:23464<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31465<div class="para"><p><a href="git-send-pack.html">git-send-pack(1)</a></p></div>
Junio C Hamano1a4e8412005-12-27 08:17:23466</div>
Junio C Hamanoba4b9282008-07-06 05:20:31467<h2 id="_author">Author</h2>
Junio C Hamano1a4e8412005-12-27 08:17:23468<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31469<div class="para"><p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p></div>
Junio C Hamano1a4e8412005-12-27 08:17:23470</div>
Junio C Hamanoba4b9282008-07-06 05:20:31471<h2 id="_documentation">Documentation</h2>
Junio C Hamano1a4e8412005-12-27 08:17:23472<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31473<div class="para"><p>Documentation by Junio C Hamano.</p></div>
Junio C Hamano1a4e8412005-12-27 08:17:23474</div>
Junio C Hamanoba4b9282008-07-06 05:20:31475<h2 id="_git">GIT</h2>
Junio C Hamano1a4e8412005-12-27 08:17:23476<div class="sectionbody">
Junio C Hamanoba4b9282008-07-06 05:20:31477<div class="para"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
Junio C Hamano1a4e8412005-12-27 08:17:23478</div>
479<div id="footer">
480<div id="footer-text">
Junio C Hamanoba4b9282008-07-06 05:20:31481Last updated 2008-07-06 05:16:58 UTC
Junio C Hamano1a4e8412005-12-27 08:17:23482</div>
483</div>
484</body>
485</html>