Autogenerated HTML docs for v2.47.0-318-g04eaf
[git-htmldocs.git] / gitremote-helpers.html
blob8e85b442f5464b29f322a8ab4e6abaa48dec6a0a
1 <!DOCTYPE html>
2 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3 <head>
4 <meta charset="UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
6 <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
7 <meta name="generator" content="Asciidoctor 2.0.20"/>
8 <title>gitremote-helpers(7)</title>
9 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"/>
10 <style>
11 /*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
12 /* Uncomment the following line when using as a custom stylesheet */
13 /* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
14 html{font-family:sans-serif;-webkit-text-size-adjust:100%}
15 a{background:none}
16 a:focus{outline:thin dotted}
17 a:active,a:hover{outline:0}
18 h1{font-size:2em;margin:.67em 0}
19 b,strong{font-weight:bold}
20 abbr{font-size:.9em}
21 abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
22 dfn{font-style:italic}
23 hr{height:0}
24 mark{background:#ff0;color:#000}
25 code,kbd,pre,samp{font-family:monospace;font-size:1em}
26 pre{white-space:pre-wrap}
27 q{quotes:"\201C" "\201D" "\2018" "\2019"}
28 small{font-size:80%}
29 sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
30 sup{top:-.5em}
31 sub{bottom:-.25em}
32 img{border:0}
33 svg:not(:root){overflow:hidden}
34 figure{margin:0}
35 audio,video{display:inline-block}
36 audio:not([controls]){display:none;height:0}
37 fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
38 legend{border:0;padding:0}
39 button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
40 button,input{line-height:normal}
41 button,select{text-transform:none}
42 button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
43 button[disabled],html input[disabled]{cursor:default}
44 input[type=checkbox],input[type=radio]{padding:0}
45 button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
46 textarea{overflow:auto;vertical-align:top}
47 table{border-collapse:collapse;border-spacing:0}
48 *,::before,::after{box-sizing:border-box}
49 html,body{font-size:100%}
50 body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
51 a:hover{cursor:pointer}
52 img,object,embed{max-width:100%;height:auto}
53 object,embed{height:100%}
54 img{-ms-interpolation-mode:bicubic}
55 .left{float:left!important}
56 .right{float:right!important}
57 .text-left{text-align:left!important}
58 .text-right{text-align:right!important}
59 .text-center{text-align:center!important}
60 .text-justify{text-align:justify!important}
61 .hide{display:none}
62 img,object,svg{display:inline-block;vertical-align:middle}
63 textarea{height:auto;min-height:50px}
64 select{width:100%}
65 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
66 div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
67 a{color:#2156a5;text-decoration:underline;line-height:inherit}
68 a:hover,a:focus{color:#1d4b8f}
69 a img{border:0}
70 p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
71 p aside{font-size:.875em;line-height:1.35;font-style:italic}
72 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
73 h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
74 h1{font-size:2.125em}
75 h2{font-size:1.6875em}
76 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
77 h4,h5{font-size:1.125em}
78 h6{font-size:1em}
79 hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
80 em,i{font-style:italic;line-height:inherit}
81 strong,b{font-weight:bold;line-height:inherit}
82 small{font-size:60%;line-height:inherit}
83 code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
84 ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
85 ul,ol{margin-left:1.5em}
86 ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
87 ul.circle{list-style-type:circle}
88 ul.disc{list-style-type:disc}
89 ul.square{list-style-type:square}
90 ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
91 ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
92 dl dt{margin-bottom:.3125em;font-weight:bold}
93 dl dd{margin-bottom:1.25em}
94 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
95 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
96 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
97 h1{font-size:2.75em}
98 h2{font-size:2.3125em}
99 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
100 h4{font-size:1.4375em}}
101 table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
102 table thead,table tfoot{background:#f7f8f7}
103 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
104 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
105 table tr.even,table tr.alt{background:#f8f8f7}
106 table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
107 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
108 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
109 .center{margin-left:auto;margin-right:auto}
110 .stretch{width:100%}
111 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
112 .clearfix::after,.float-group::after{clear:both}
113 :not(pre).nobreak{word-wrap:normal}
114 :not(pre).nowrap{white-space:nowrap}
115 :not(pre).pre-wrap{white-space:pre-wrap}
116 :not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
117 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
118 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
119 pre>code{display:block}
120 pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
121 em em{font-style:normal}
122 strong strong{font-weight:400}
123 .keyseq{color:rgba(51,51,51,.8)}
124 kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
125 .keyseq kbd:first-child{margin-left:0}
126 .keyseq kbd:last-child{margin-right:0}
127 .menuseq,.menuref{color:#000}
128 .menuseq b:not(.caret),.menuref{font-weight:inherit}
129 .menuseq{word-spacing:-.02em}
130 .menuseq b.caret{font-size:1.25em;line-height:.8}
131 .menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
132 b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
133 b.button::before{content:"[";padding:0 3px 0 2px}
134 b.button::after{content:"]";padding:0 2px 0 3px}
135 p a>code:hover{color:rgba(0,0,0,.9)}
136 #header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
137 #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
138 #header::after,#content::after,#footnotes::after,#footer::after{clear:both}
139 #content{margin-top:1.25em}
140 #content::before{content:none}
141 #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
142 #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
143 #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
144 #header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
145 #header .details span:first-child{margin-left:-.125em}
146 #header .details span.email a{color:rgba(0,0,0,.85)}
147 #header .details br{display:none}
148 #header .details br+span::before{content:"\00a0\2013\00a0"}
149 #header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
150 #header .details br+span#revremark::before{content:"\00a0|\00a0"}
151 #header #revnumber{text-transform:capitalize}
152 #header #revnumber::after{content:"\00a0"}
153 #content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
154 #toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
155 #toc>ul{margin-left:.125em}
156 #toc ul.sectlevel0>li>a{font-style:italic}
157 #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
158 #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
159 #toc li{line-height:1.3334;margin-top:.3334em}
160 #toc a{text-decoration:none}
161 #toc a:active{text-decoration:underline}
162 #toctitle{color:#7a2518;font-size:1.2em}
163 @media screen and (min-width:768px){#toctitle{font-size:1.375em}
164 body.toc2{padding-left:15em;padding-right:0}
165 #toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
166 #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
167 #toc.toc2>ul{font-size:.9em;margin-bottom:0}
168 #toc.toc2 ul ul{margin-left:0;padding-left:1em}
169 #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
170 body.toc2.toc-right{padding-left:0;padding-right:15em}
171 body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
172 @media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
173 #toc.toc2{width:20em}
174 #toc.toc2 #toctitle{font-size:1.375em}
175 #toc.toc2>ul{font-size:.95em}
176 #toc.toc2 ul ul{padding-left:1.25em}
177 body.toc2.toc-right{padding-left:0;padding-right:20em}}
178 #content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
179 #content #toc>:first-child{margin-top:0}
180 #content #toc>:last-child{margin-bottom:0}
181 #footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
182 #footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
183 #content{margin-bottom:.625em}
184 .sect1{padding-bottom:.625em}
185 @media screen and (min-width:768px){#content{margin-bottom:1.25em}
186 .sect1{padding-bottom:1.25em}}
187 .sect1:last-child{padding-bottom:0}
188 .sect1+.sect1{border-top:1px solid #e7e7e9}
189 #content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
190 #content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
191 #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
192 #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
193 #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
194 details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
195 details{margin-left:1.25rem}
196 details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
197 details>summary::-webkit-details-marker{display:none}
198 details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
199 details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
200 details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
201 .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
202 table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
203 .paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
204 .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
205 .admonitionblock>table td.icon{text-align:center;width:80px}
206 .admonitionblock>table td.icon img{max-width:none}
207 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
208 .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
209 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
210 .exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
211 .sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
212 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
213 .exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
214 .exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
215 .literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
216 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
217 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
218 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
219 .literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
220 .listingblock>.content{position:relative}
221 .listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
222 .listingblock:hover code[data-lang]::before{display:block}
223 .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
224 .listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
225 .listingblock pre.highlightjs{padding:0}
226 .listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
227 .listingblock pre.prettyprint{border-width:0}
228 .prettyprint{background:#f7f7f8}
229 pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
230 pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
231 pre.prettyprint li code[data-lang]::before{opacity:1}
232 pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
233 table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
234 table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
235 table.linenotable td.code{padding-left:.75em}
236 table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
237 pre.pygments span.linenos{display:inline-block;margin-right:.75em}
238 .quoteblock{margin:0 1em 1.25em 1.5em;display:table}
239 .quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
240 .quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
241 .quoteblock blockquote{margin:0;padding:0;border:0}
242 .quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
243 .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
244 .quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
245 .verseblock{margin:0 1em 1.25em}
246 .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
247 .verseblock pre strong{font-weight:400}
248 .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
249 .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
250 .quoteblock .attribution br,.verseblock .attribution br{display:none}
251 .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
252 .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
253 .quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
254 .quoteblock.abstract{margin:0 1em 1.25em;display:block}
255 .quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
256 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
257 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
258 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
259 .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
260 p.tableblock:last-child{margin-bottom:0}
261 td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
262 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
263 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
264 table.grid-all>*>tr>*{border-width:1px}
265 table.grid-cols>*>tr>*{border-width:0 1px}
266 table.grid-rows>*>tr>*{border-width:1px 0}
267 table.frame-all{border-width:1px}
268 table.frame-ends{border-width:1px 0}
269 table.frame-sides{border-width:0 1px}
270 table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
271 table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
272 table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
273 table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
274 table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
275 th.halign-left,td.halign-left{text-align:left}
276 th.halign-right,td.halign-right{text-align:right}
277 th.halign-center,td.halign-center{text-align:center}
278 th.valign-top,td.valign-top{vertical-align:top}
279 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
280 th.valign-middle,td.valign-middle{vertical-align:middle}
281 table thead th,table tfoot th{font-weight:bold}
282 tbody tr th{background:#f7f8f7}
283 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
284 p.tableblock>code:only-child{background:none;padding:0}
285 p.tableblock{font-size:1em}
286 ol{margin-left:1.75em}
287 ul li ol{margin-left:1.5em}
288 dl dd{margin-left:1.125em}
289 dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
290 li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
291 ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
292 ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
293 ul.unstyled,ol.unstyled{margin-left:0}
294 li>p:empty:only-child::before{content:"";display:inline-block}
295 ul.checklist>li>p:first-child{margin-left:-1em}
296 ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
297 ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
298 ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
299 ul.inline>li{margin-left:1.25em}
300 .unstyled dl dt{font-weight:400;font-style:normal}
301 ol.arabic{list-style-type:decimal}
302 ol.decimal{list-style-type:decimal-leading-zero}
303 ol.loweralpha{list-style-type:lower-alpha}
304 ol.upperalpha{list-style-type:upper-alpha}
305 ol.lowerroman{list-style-type:lower-roman}
306 ol.upperroman{list-style-type:upper-roman}
307 ol.lowergreek{list-style-type:lower-greek}
308 .hdlist>table,.colist>table{border:0;background:none}
309 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
310 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
311 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
312 td.hdlist2{word-wrap:anywhere}
313 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
314 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
315 .colist td:not([class]):first-child img{max-width:none}
316 .colist td:not([class]):last-child{padding:.25em 0}
317 .thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
318 .imageblock.left{margin:.25em .625em 1.25em 0}
319 .imageblock.right{margin:.25em 0 1.25em .625em}
320 .imageblock>.title{margin-bottom:0}
321 .imageblock.thumb,.imageblock.th{border-width:6px}
322 .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
323 .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
324 .image.left{margin-right:.625em}
325 .image.right{margin-left:.625em}
326 a.image{text-decoration:none;display:inline-block}
327 a.image object{pointer-events:none}
328 sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
329 sup.footnote a,sup.footnoteref a{text-decoration:none}
330 sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
331 #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
332 #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
333 #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
334 #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
335 #footnotes .footnote:last-of-type{margin-bottom:0}
336 #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
337 div.unbreakable{page-break-inside:avoid}
338 .big{font-size:larger}
339 .small{font-size:smaller}
340 .underline{text-decoration:underline}
341 .overline{text-decoration:overline}
342 .line-through{text-decoration:line-through}
343 .aqua{color:#00bfbf}
344 .aqua-background{background:#00fafa}
345 .black{color:#000}
346 .black-background{background:#000}
347 .blue{color:#0000bf}
348 .blue-background{background:#0000fa}
349 .fuchsia{color:#bf00bf}
350 .fuchsia-background{background:#fa00fa}
351 .gray{color:#606060}
352 .gray-background{background:#7d7d7d}
353 .green{color:#006000}
354 .green-background{background:#007d00}
355 .lime{color:#00bf00}
356 .lime-background{background:#00fa00}
357 .maroon{color:#600000}
358 .maroon-background{background:#7d0000}
359 .navy{color:#000060}
360 .navy-background{background:#00007d}
361 .olive{color:#606000}
362 .olive-background{background:#7d7d00}
363 .purple{color:#600060}
364 .purple-background{background:#7d007d}
365 .red{color:#bf0000}
366 .red-background{background:#fa0000}
367 .silver{color:#909090}
368 .silver-background{background:#bcbcbc}
369 .teal{color:#006060}
370 .teal-background{background:#007d7d}
371 .white{color:#bfbfbf}
372 .white-background{background:#fafafa}
373 .yellow{color:#bfbf00}
374 .yellow-background{background:#fafa00}
375 span.icon>.fa{cursor:default}
376 a span.icon>.fa{cursor:inherit}
377 .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
378 .admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
379 .admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
380 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
381 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
382 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
383 .conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
384 .conum[data-value] *{color:#fff!important}
385 .conum[data-value]+b{display:none}
386 .conum[data-value]::after{content:attr(data-value)}
387 pre .conum[data-value]{position:relative;top:-.125em}
388 b.conum *{color:inherit!important}
389 .conum:not([data-value]):empty{display:none}
390 dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
391 h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
392 p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
393 p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
394 p{margin-bottom:1.25rem}
395 .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
396 .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
397 .print-only{display:none!important}
398 @page{margin:1.25cm .75cm}
399 @media print{*{box-shadow:none!important;text-shadow:none!important}
400 html{font-size:80%}
401 a{color:inherit!important;text-decoration:underline!important}
402 a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
403 a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
404 abbr[title]{border-bottom:1px dotted}
405 abbr[title]::after{content:" (" attr(title) ")"}
406 pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
407 thead{display:table-header-group}
408 svg{max-width:100%}
409 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
410 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
411 #header,#content,#footnotes,#footer{max-width:none}
412 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
413 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
414 body.book #header{text-align:center}
415 body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
416 body.book #header .details{border:0!important;display:block;padding:0!important}
417 body.book #header .details span:first-child{margin-left:0!important}
418 body.book #header .details br{display:block}
419 body.book #header .details br+span::before{content:none!important}
420 body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
421 body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
422 .listingblock code[data-lang]::before{display:block}
423 #footer{padding:0 .9375em}
424 .hide-on-print{display:none!important}
425 .print-only{display:block!important}
426 .hide-for-print{display:none!important}
427 .show-for-print{display:inherit!important}}
428 @media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
429 .sect1{padding:0!important}
430 .sect1+.sect1{border:0}
431 #footer{background:none}
432 #footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
433 @media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
434 </style>
435 <style>
436 pre>code {
437 display: inline;
439 </style>
440 </head>
441 <body class="manpage">
442 <div id="header">
443 <h1>gitremote-helpers(7) Manual Page</h1>
444 <h2 id="_name">NAME</h2>
445 <div class="sectionbody">
446 <p>gitremote-helpers - Helper programs to interact with remote repositories</p>
447 </div>
448 </div>
449 <div id="content">
450 <div class="sect1">
451 <h2 id="_synopsis">SYNOPSIS</h2>
452 <div class="sectionbody">
453 <div class="verseblock">
454 <pre class="content"><em>git remote-&lt;transport&gt;</em> &lt;repository&gt; [&lt;URL&gt;]</pre>
455 </div>
456 </div>
457 </div>
458 <div class="sect1">
459 <h2 id="_description">DESCRIPTION</h2>
460 <div class="sectionbody">
461 <div class="paragraph">
462 <p>Remote helper programs are normally not used directly by end users,
463 but they are invoked by Git when it needs to interact with remote
464 repositories Git does not support natively. A given helper will
465 implement a subset of the capabilities documented here. When Git
466 needs to interact with a repository using a remote helper, it spawns
467 the helper as an independent process, sends commands to the helper&#8217;s
468 standard input, and expects results from the helper&#8217;s standard
469 output. Because a remote helper runs as an independent process from
470 Git, there is no need to re-link Git to add a new helper, nor any
471 need to link the helper with the implementation of Git.</p>
472 </div>
473 <div class="paragraph">
474 <p>Every helper must support the "capabilities" command, which Git
475 uses to determine what other commands the helper will accept. Those
476 other commands can be used to discover and update remote refs,
477 transport objects between the object database and the remote repository,
478 and update the local object store.</p>
479 </div>
480 <div class="paragraph">
481 <p>Git comes with a "curl" family of remote helpers, that handle various
482 transport protocols, such as <em>git-remote-http</em>, <em>git-remote-https</em>,
483 <em>git-remote-ftp</em> and <em>git-remote-ftps</em>. They implement the capabilities
484 <em>fetch</em>, <em>option</em>, and <em>push</em>.</p>
485 </div>
486 </div>
487 </div>
488 <div class="sect1">
489 <h2 id="_invocation">INVOCATION</h2>
490 <div class="sectionbody">
491 <div class="paragraph">
492 <p>Remote helper programs are invoked with one or (optionally) two
493 arguments. The first argument specifies a remote repository as in Git;
494 it is either the name of a configured remote or a URL. The second
495 argument specifies a URL; it is usually of the form
496 <em>&lt;transport&gt;://&lt;address&gt;</em>, but any arbitrary string is possible.
497 The <code>GIT_DIR</code> environment variable is set up for the remote helper
498 and can be used to determine where to store additional data or from
499 which directory to invoke auxiliary Git commands.</p>
500 </div>
501 <div class="paragraph">
502 <p>When Git encounters a URL of the form <em>&lt;transport&gt;://&lt;address&gt;</em>, where
503 <em>&lt;transport&gt;</em> is a protocol that it cannot handle natively, it
504 automatically invokes <em>git remote-&lt;transport&gt;</em> with the full URL as
505 the second argument. If such a URL is encountered directly on the
506 command line, the first argument is the same as the second, and if it
507 is encountered in a configured remote, the first argument is the name
508 of that remote.</p>
509 </div>
510 <div class="paragraph">
511 <p>A URL of the form <em>&lt;transport&gt;::&lt;address&gt;</em> explicitly instructs Git to
512 invoke <em>git remote-&lt;transport&gt;</em> with <em>&lt;address&gt;</em> as the second
513 argument. If such a URL is encountered directly on the command line,
514 the first argument is <em>&lt;address&gt;</em>, and if it is encountered in a
515 configured remote, the first argument is the name of that remote.</p>
516 </div>
517 <div class="paragraph">
518 <p>Additionally, when a configured remote has <code>remote.</code><em>&lt;name&gt;</em><code>.vcs</code> set to
519 <em>&lt;transport&gt;</em>, Git explicitly invokes <em>git remote-&lt;transport&gt;</em> with
520 <em>&lt;name&gt;</em> as the first argument. If set, the second argument is
521 <code>remote.</code><em>&lt;name&gt;</em><code>.url</code>; otherwise, the second argument is omitted.</p>
522 </div>
523 </div>
524 </div>
525 <div class="sect1">
526 <h2 id="_input_format">INPUT FORMAT</h2>
527 <div class="sectionbody">
528 <div class="paragraph">
529 <p>Git sends the remote helper a list of commands on standard input, one
530 per line. The first command is always the <em>capabilities</em> command, in
531 response to which the remote helper must print a list of the
532 capabilities it supports (see below) followed by a blank line. The
533 response to the capabilities command determines what commands Git uses
534 in the remainder of the command stream.</p>
535 </div>
536 <div class="paragraph">
537 <p>The command stream is terminated by a blank line. In some cases
538 (indicated in the documentation of the relevant commands), this blank
539 line is followed by a payload in some other protocol (e.g., the pack
540 protocol), while in others it indicates the end of input.</p>
541 </div>
542 <div class="sect2">
543 <h3 id="_capabilities">Capabilities</h3>
544 <div class="paragraph">
545 <p>Each remote helper is expected to support only a subset of commands.
546 The operations a helper supports are declared to Git in the response
547 to the <code>capabilities</code> command (see COMMANDS, below).</p>
548 </div>
549 <div class="paragraph">
550 <p>In the following, we list all defined capabilities and for
551 each we list which commands a helper with that capability
552 must provide.</p>
553 </div>
554 <div class="sect3">
555 <h4 id="_capabilities_for_pushing">Capabilities for Pushing</h4>
556 <div class="dlist">
557 <dl>
558 <dt class="hdlist1"><em>connect</em></dt>
559 <dd>
560 <p>Can attempt to connect to <em>git receive-pack</em> (for pushing),
561 <em>git upload-pack</em>, etc for communication using
562 git&#8217;s native packfile protocol. This
563 requires a bidirectional, full-duplex connection.</p>
564 <div class="paragraph">
565 <p>Supported commands: <em>connect</em>.</p>
566 </div>
567 </dd>
568 <dt class="hdlist1"><em>stateless-connect</em></dt>
569 <dd>
570 <p>Experimental; for internal use only.
571 Can attempt to connect to a remote server for communication
572 using git&#8217;s wire-protocol version 2. See the documentation
573 for the stateless-connect command for more information.</p>
574 <div class="paragraph">
575 <p>Supported commands: <em>stateless-connect</em>.</p>
576 </div>
577 </dd>
578 <dt class="hdlist1"><em>push</em></dt>
579 <dd>
580 <p>Can discover remote refs and push local commits and the
581 history leading up to them to new or existing remote refs.</p>
582 <div class="paragraph">
583 <p>Supported commands: <em>list for-push</em>, <em>push</em>.</p>
584 </div>
585 </dd>
586 <dt class="hdlist1"><em>export</em></dt>
587 <dd>
588 <p>Can discover remote refs and push specified objects from a
589 fast-import stream to remote refs.</p>
590 <div class="paragraph">
591 <p>Supported commands: <em>list for-push</em>, <em>export</em>.</p>
592 </div>
593 </dd>
594 </dl>
595 </div>
596 <div class="paragraph">
597 <p>If a helper advertises <em>connect</em>, Git will use it if possible and
598 fall back to another capability if the helper requests so when
599 connecting (see the <em>connect</em> command under COMMANDS).
600 When choosing between <em>push</em> and <em>export</em>, Git prefers <em>push</em>.
601 Other frontends may have some other order of preference.</p>
602 </div>
603 <div class="dlist">
604 <dl>
605 <dt class="hdlist1"><em>no-private-update</em></dt>
606 <dd>
607 <p>When using the <em>refspec</em> capability, git normally updates the
608 private ref on successful push. This update is disabled when
609 the remote-helper declares the capability <em>no-private-update</em>.</p>
610 </dd>
611 </dl>
612 </div>
613 </div>
614 <div class="sect3">
615 <h4 id="_capabilities_for_fetching">Capabilities for Fetching</h4>
616 <div class="dlist">
617 <dl>
618 <dt class="hdlist1"><em>connect</em></dt>
619 <dd>
620 <p>Can try to connect to <em>git upload-pack</em> (for fetching),
621 <em>git receive-pack</em>, etc for communication using the
622 Git&#8217;s native packfile protocol. This
623 requires a bidirectional, full-duplex connection.</p>
624 <div class="paragraph">
625 <p>Supported commands: <em>connect</em>.</p>
626 </div>
627 </dd>
628 <dt class="hdlist1"><em>stateless-connect</em></dt>
629 <dd>
630 <p>Experimental; for internal use only.
631 Can attempt to connect to a remote server for communication
632 using git&#8217;s wire-protocol version 2. See the documentation
633 for the stateless-connect command for more information.</p>
634 <div class="paragraph">
635 <p>Supported commands: <em>stateless-connect</em>.</p>
636 </div>
637 </dd>
638 <dt class="hdlist1"><em>fetch</em></dt>
639 <dd>
640 <p>Can discover remote refs and transfer objects reachable from
641 them to the local object store.</p>
642 <div class="paragraph">
643 <p>Supported commands: <em>list</em>, <em>fetch</em>.</p>
644 </div>
645 </dd>
646 <dt class="hdlist1"><em>import</em></dt>
647 <dd>
648 <p>Can discover remote refs and output objects reachable from
649 them as a stream in fast-import format.</p>
650 <div class="paragraph">
651 <p>Supported commands: <em>list</em>, <em>import</em>.</p>
652 </div>
653 </dd>
654 <dt class="hdlist1"><em>check-connectivity</em></dt>
655 <dd>
656 <p>Can guarantee that when a clone is requested, the received
657 pack is self contained and is connected.</p>
658 </dd>
659 <dt class="hdlist1"><em>get</em></dt>
660 <dd>
661 <p>Can use the <em>get</em> command to download a file from a given URI.</p>
662 </dd>
663 </dl>
664 </div>
665 <div class="paragraph">
666 <p>If a helper advertises <em>connect</em>, Git will use it if possible and
667 fall back to another capability if the helper requests so when
668 connecting (see the <em>connect</em> command under COMMANDS).
669 When choosing between <em>fetch</em> and <em>import</em>, Git prefers <em>fetch</em>.
670 Other frontends may have some other order of preference.</p>
671 </div>
672 </div>
673 <div class="sect3">
674 <h4 id="_miscellaneous_capabilities">Miscellaneous capabilities</h4>
675 <div class="dlist">
676 <dl>
677 <dt class="hdlist1"><em>option</em></dt>
678 <dd>
679 <p>For specifying settings like <code>verbosity</code> (how much output to
680 write to stderr) and <code>depth</code> (how much history is wanted in the
681 case of a shallow clone) that affect how other commands are
682 carried out.</p>
683 </dd>
684 <dt class="hdlist1"><em>refspec</em> &lt;refspec&gt;</dt>
685 <dd>
686 <p>For remote helpers that implement <em>import</em> or <em>export</em>, this capability
687 allows the refs to be constrained to a private namespace, instead of
688 writing to refs/heads or refs/remotes directly.
689 It is recommended that all importers providing the <em>import</em>
690 capability use this. It&#8217;s mandatory for <em>export</em>.</p>
691 <div class="paragraph">
692 <p>A helper advertising the capability
693 <code>refspec</code> <code>refs/heads/</code>*:refs/svn/origin/branches/*
694 is saying that, when it is asked to <code>import</code> <code>refs/heads/topic</code>, the
695 stream it outputs will update the <code>refs/svn/origin/branches/topic</code>
696 ref.</p>
697 </div>
698 <div class="paragraph">
699 <p>This capability can be advertised multiple times. The first
700 applicable refspec takes precedence. The left-hand of refspecs
701 advertised with this capability must cover all refs reported by
702 the list command. If no <em>refspec</em> capability is advertised,
703 there is an implied <code>refspec</code> *:*.</p>
704 </div>
705 <div class="paragraph">
706 <p>When writing remote-helpers for decentralized version control
707 systems, it is advised to keep a local copy of the repository to
708 interact with, and to let the private namespace refs point to this
709 local repository, while the refs/remotes namespace is used to track
710 the remote repository.</p>
711 </div>
712 </dd>
713 <dt class="hdlist1"><em>bidi-import</em></dt>
714 <dd>
715 <p>This modifies the <em>import</em> capability.
716 The fast-import commands <em>cat-blob</em> and <em>ls</em> can be used by remote-helpers
717 to retrieve information about blobs and trees that already exist in
718 fast-import&#8217;s memory. This requires a channel from fast-import to the
719 remote-helper.
720 If it is advertised in addition to "import", Git establishes a pipe from
721 fast-import to the remote-helper&#8217;s stdin.
722 It follows that Git and fast-import are both connected to the
723 remote-helper&#8217;s stdin. Because Git can send multiple commands to
724 the remote-helper it is required that helpers that use <em>bidi-import</em>
725 buffer all <em>import</em> commands of a batch before sending data to fast-import.
726 This is to prevent mixing commands and fast-import responses on the
727 helper&#8217;s stdin.</p>
728 </dd>
729 <dt class="hdlist1"><em>export-marks</em> &lt;file&gt;</dt>
730 <dd>
731 <p>This modifies the <em>export</em> capability, instructing Git to dump the
732 internal marks table to &lt;file&gt; when complete. For details,
733 read up on <code>--export-marks=</code><em>&lt;file&gt;</em> in <a href="git-fast-export.html">git-fast-export(1)</a>.</p>
734 </dd>
735 <dt class="hdlist1"><em>import-marks</em> &lt;file&gt;</dt>
736 <dd>
737 <p>This modifies the <em>export</em> capability, instructing Git to load the
738 marks specified in &lt;file&gt; before processing any input. For details,
739 read up on <code>--import-marks=</code><em>&lt;file&gt;</em> in <a href="git-fast-export.html">git-fast-export(1)</a>.</p>
740 </dd>
741 <dt class="hdlist1"><em>signed-tags</em></dt>
742 <dd>
743 <p>This modifies the <em>export</em> capability, instructing Git to pass
744 <code>--signed-tags=verbatim</code> to <a href="git-fast-export.html">git-fast-export(1)</a>. In the
745 absence of this capability, Git will use <code>--signed-tags=warn-strip</code>.</p>
746 </dd>
747 <dt class="hdlist1"><em>object-format</em></dt>
748 <dd>
749 <p>This indicates that the helper is able to interact with the remote
750 side using an explicit hash algorithm extension.</p>
751 </dd>
752 </dl>
753 </div>
754 </div>
755 </div>
756 </div>
757 </div>
758 <div class="sect1">
759 <h2 id="_commands">COMMANDS</h2>
760 <div class="sectionbody">
761 <div class="paragraph">
762 <p>Commands are given by the caller on the helper&#8217;s standard input, one per line.</p>
763 </div>
764 <div class="dlist">
765 <dl>
766 <dt class="hdlist1"><em>capabilities</em></dt>
767 <dd>
768 <p>Lists the capabilities of the helper, one per line, ending
769 with a blank line. Each capability may be preceded with <em>*</em>,
770 which marks them mandatory for Git versions using the remote
771 helper to understand. Any unknown mandatory capability is a
772 fatal error.</p>
773 <div class="paragraph">
774 <p>Support for this command is mandatory.</p>
775 </div>
776 </dd>
777 <dt class="hdlist1"><em>list</em></dt>
778 <dd>
779 <p>Lists the refs, one per line, in the format "&lt;value&gt; &lt;name&gt;
780 [&lt;attr&gt; &#8230;&#8203;]". The value may be a hex sha1 hash, "@&lt;dest&gt;" for
781 a symref, ":&lt;keyword&gt; &lt;value&gt;" for a key-value pair, or
782 "?" to indicate that the helper could not get the value of the
783 ref. A space-separated list of attributes follows the name;
784 unrecognized attributes are ignored. The list ends with a
785 blank line.</p>
786 <div class="paragraph">
787 <p>See REF LIST ATTRIBUTES for a list of currently defined attributes.
788 See REF LIST KEYWORDS for a list of currently defined keywords.</p>
789 </div>
790 <div class="paragraph">
791 <p>Supported if the helper has the "fetch" or "import" capability.</p>
792 </div>
793 </dd>
794 <dt class="hdlist1"><em>list for-push</em></dt>
795 <dd>
796 <p>Similar to <em>list</em>, except that it is used if and only if
797 the caller wants to the resulting ref list to prepare
798 push commands.
799 A helper supporting both push and fetch can use this
800 to distinguish for which operation the output of <em>list</em>
801 is going to be used, possibly reducing the amount
802 of work that needs to be performed.</p>
803 <div class="paragraph">
804 <p>Supported if the helper has the "push" or "export" capability.</p>
805 </div>
806 </dd>
807 <dt class="hdlist1"><em>option</em> &lt;name&gt; &lt;value&gt;</dt>
808 <dd>
809 <p>Sets the transport helper option &lt;name&gt; to &lt;value&gt;. Outputs a
810 single line containing one of <em>ok</em> (option successfully set),
811 <em>unsupported</em> (option not recognized) or <em>error &lt;msg&gt;</em>
812 (option &lt;name&gt; is supported but &lt;value&gt; is not valid
813 for it). Options should be set before other commands,
814 and may influence the behavior of those commands.</p>
815 <div class="paragraph">
816 <p>See OPTIONS for a list of currently defined options.</p>
817 </div>
818 <div class="paragraph">
819 <p>Supported if the helper has the "option" capability.</p>
820 </div>
821 </dd>
822 <dt class="hdlist1"><em>fetch</em> &lt;sha1&gt; &lt;name&gt;</dt>
823 <dd>
824 <p>Fetches the given object, writing the necessary objects
825 to the database. Fetch commands are sent in a batch, one
826 per line, terminated with a blank line.
827 Outputs a single blank line when all fetch commands in the
828 same batch are complete. Only objects which were reported
829 in the output of <em>list</em> with a sha1 may be fetched this way.</p>
830 <div class="paragraph">
831 <p>Optionally may output a <em>lock &lt;file&gt;</em> line indicating the full path of
832 a file under <code>$GIT_DIR/objects/pack</code> which is keeping a pack until
833 refs can be suitably updated. The path must end with .<code>keep</code>. This is
834 a mechanism to name a &lt;pack,idx,keep&gt; tuple by giving only the keep
835 component. The kept pack will not be deleted by a concurrent repack,
836 even though its objects may not be referenced until the fetch completes.
837 The .<code>keep</code> file will be deleted at the conclusion of the fetch.</p>
838 </div>
839 <div class="paragraph">
840 <p>If option <em>check-connectivity</em> is requested, the helper must output
841 <em>connectivity-ok</em> if the clone is self-contained and connected.</p>
842 </div>
843 <div class="paragraph">
844 <p>Supported if the helper has the "fetch" capability.</p>
845 </div>
846 </dd>
847 <dt class="hdlist1"><em>push</em> +&lt;src&gt;:&lt;dst&gt;</dt>
848 <dd>
849 <p>Pushes the given local &lt;src&gt; commit or branch to the
850 remote branch described by &lt;dst&gt;. A batch sequence of
851 one or more <em>push</em> commands is terminated with a blank line
852 (if there is only one reference to push, a single <em>push</em> command
853 is followed by a blank line). For example, the following would
854 be two batches of <em>push</em>, the first asking the remote-helper
855 to push the local ref <em>master</em> to the remote ref <em>master</em> and
856 the local <code>HEAD</code> to the remote <em>branch</em>, and the second
857 asking to push ref <em>foo</em> to ref <em>bar</em> (forced update requested
858 by the <em>+</em>).</p>
859 <div class="listingblock">
860 <div class="content">
861 <pre>push refs/heads/master:refs/heads/master
862 push HEAD:refs/heads/branch
864 push +refs/heads/foo:refs/heads/bar
865 \n</pre>
866 </div>
867 </div>
868 <div class="paragraph">
869 <p>Zero or more protocol options may be entered after the last <em>push</em>
870 command, before the batch&#8217;s terminating blank line.</p>
871 </div>
872 <div class="paragraph">
873 <p>When the push is complete, outputs one or more <em>ok &lt;dst&gt;</em> or
874 <em>error &lt;dst&gt; &lt;why&gt;?</em> lines to indicate success or failure of
875 each pushed ref. The status report output is terminated by
876 a blank line. The option field &lt;why&gt; may be quoted in a C
877 style string if it contains an LF.</p>
878 </div>
879 <div class="paragraph">
880 <p>Supported if the helper has the "push" capability.</p>
881 </div>
882 </dd>
883 <dt class="hdlist1"><em>import</em> &lt;name&gt;</dt>
884 <dd>
885 <p>Produces a fast-import stream which imports the current value
886 of the named ref. It may additionally import other refs as
887 needed to construct the history efficiently. The script writes
888 to a helper-specific private namespace. The value of the named
889 ref should be written to a location in this namespace derived
890 by applying the refspecs from the "refspec" capability to the
891 name of the ref.</p>
892 <div class="paragraph">
893 <p>Especially useful for interoperability with a foreign versioning
894 system.</p>
895 </div>
896 <div class="paragraph">
897 <p>Just like <em>push</em>, a batch sequence of one or more <em>import</em> is
898 terminated with a blank line. For each batch of <em>import</em>, the remote
899 helper should produce a fast-import stream terminated by a <em>done</em>
900 command.</p>
901 </div>
902 <div class="paragraph">
903 <p>Note that if the <em>bidi-import</em> capability is used the complete batch
904 sequence has to be buffered before starting to send data to fast-import
905 to prevent mixing of commands and fast-import responses on the helper&#8217;s
906 stdin.</p>
907 </div>
908 <div class="paragraph">
909 <p>Supported if the helper has the "import" capability.</p>
910 </div>
911 </dd>
912 <dt class="hdlist1"><em>export</em></dt>
913 <dd>
914 <p>Instructs the remote helper that any subsequent input is
915 part of a fast-import stream (generated by <em>git fast-export</em>)
916 containing objects which should be pushed to the remote.</p>
917 <div class="paragraph">
918 <p>Especially useful for interoperability with a foreign versioning
919 system.</p>
920 </div>
921 <div class="paragraph">
922 <p>The <em>export-marks</em> and <em>import-marks</em> capabilities, if specified,
923 affect this command in so far as they are passed on to <em>git
924 fast-export</em>, which then will load/store a table of marks for
925 local objects. This can be used to implement for incremental
926 operations.</p>
927 </div>
928 <div class="paragraph">
929 <p>Supported if the helper has the "export" capability.</p>
930 </div>
931 </dd>
932 <dt class="hdlist1"><em>connect</em> &lt;service&gt;</dt>
933 <dd>
934 <p>Connects to given service. Standard input and standard output
935 of helper are connected to specified service (git prefix is
936 included in service name so e.g. fetching uses <em>git-upload-pack</em>
937 as service) on remote side. Valid replies to this command are
938 empty line (connection established), <em>fallback</em> (no smart
939 transport support, fall back to dumb transports) and just
940 exiting with error message printed (can&#8217;t connect, don&#8217;t
941 bother trying to fall back). After line feed terminating the
942 positive (empty) response, the output of service starts. After
943 the connection ends, the remote helper exits.</p>
944 <div class="paragraph">
945 <p>Supported if the helper has the "connect" capability.</p>
946 </div>
947 </dd>
948 <dt class="hdlist1"><em>stateless-connect</em> &lt;service&gt;</dt>
949 <dd>
950 <p>Experimental; for internal use only.
951 Connects to the given remote service for communication using
952 git&#8217;s wire-protocol version 2. Valid replies to this command
953 are empty line (connection established), <em>fallback</em> (no smart
954 transport support, fall back to dumb transports) and just
955 exiting with error message printed (can&#8217;t connect, don&#8217;t bother
956 trying to fall back). After line feed terminating the positive
957 (empty) response, the output of the service starts. Messages
958 (both request and response) must consist of zero or more
959 PKT-LINEs, terminating in a flush packet. Response messages will
960 then have a response end packet after the flush packet to
961 indicate the end of a response. The client must not
962 expect the server to store any state in between request-response
963 pairs. After the connection ends, the remote helper exits.</p>
964 <div class="paragraph">
965 <p>Supported if the helper has the "stateless-connect" capability.</p>
966 </div>
967 </dd>
968 <dt class="hdlist1"><em>get</em> &lt;uri&gt; &lt;path&gt;</dt>
969 <dd>
970 <p>Downloads the file from the given <em>&lt;uri&gt;</em> to the given <em>&lt;path&gt;</em>. If
971 <em>&lt;path&gt;</em><code>.temp</code> exists, then Git assumes that the .<code>temp</code> file is a
972 partial download from a previous attempt and will resume the
973 download from that position.</p>
974 </dd>
975 </dl>
976 </div>
977 <div class="paragraph">
978 <p>If a fatal error occurs, the program writes the error message to
979 stderr and exits. The caller should expect that a suitable error
980 message has been printed if the child closes the connection without
981 completing a valid response for the current command.</p>
982 </div>
983 <div class="paragraph">
984 <p>Additional commands may be supported, as may be determined from
985 capabilities reported by the helper.</p>
986 </div>
987 </div>
988 </div>
989 <div class="sect1">
990 <h2 id="_ref_list_attributes">REF LIST ATTRIBUTES</h2>
991 <div class="sectionbody">
992 <div class="paragraph">
993 <p>The <em>list</em> command produces a list of refs in which each ref
994 may be followed by a list of attributes. The following ref list
995 attributes are defined.</p>
996 </div>
997 <div class="dlist">
998 <dl>
999 <dt class="hdlist1"><em>unchanged</em></dt>
1000 <dd>
1001 <p>This ref is unchanged since the last import or fetch, although
1002 the helper cannot necessarily determine what value that produced.</p>
1003 </dd>
1004 </dl>
1005 </div>
1006 </div>
1007 </div>
1008 <div class="sect1">
1009 <h2 id="_ref_list_keywords">REF LIST KEYWORDS</h2>
1010 <div class="sectionbody">
1011 <div class="paragraph">
1012 <p>The <em>list</em> command may produce a list of key-value pairs.
1013 The following keys are defined.</p>
1014 </div>
1015 <div class="dlist">
1016 <dl>
1017 <dt class="hdlist1"><em>object-format</em></dt>
1018 <dd>
1019 <p>The refs are using the given hash algorithm. This keyword is only
1020 used if the server and client both support the object-format
1021 extension.</p>
1022 </dd>
1023 </dl>
1024 </div>
1025 </div>
1026 </div>
1027 <div class="sect1">
1028 <h2 id="_options">OPTIONS</h2>
1029 <div class="sectionbody">
1030 <div class="paragraph">
1031 <p>The following options are defined and (under suitable circumstances)
1032 set by Git if the remote helper has the <em>option</em> capability.</p>
1033 </div>
1034 <div class="dlist">
1035 <dl>
1036 <dt class="hdlist1"><em>option verbosity</em> &lt;n&gt;</dt>
1037 <dd>
1038 <p>Changes the verbosity of messages displayed by the helper.
1039 A value of 0 for &lt;n&gt; means that processes operate
1040 quietly, and the helper produces only error output.
1041 1 is the default level of verbosity, and higher values
1042 of &lt;n&gt; correspond to the number of -v flags passed on the
1043 command line.</p>
1044 </dd>
1045 <dt class="hdlist1"><em>option progress</em> {<em>true</em>|<em>false</em>}</dt>
1046 <dd>
1047 <p>Enables (or disables) progress messages displayed by the
1048 transport helper during a command.</p>
1049 </dd>
1050 <dt class="hdlist1"><em>option depth</em> &lt;depth&gt;</dt>
1051 <dd>
1052 <p>Deepens the history of a shallow repository.</p>
1053 </dd>
1054 <dt class="hdlist1"><em>option deepen-since</em> &lt;timestamp&gt;</dt>
1055 <dd>
1056 <p>Deepens the history of a shallow repository based on time.</p>
1057 </dd>
1058 <dt class="hdlist1"><em>option deepen-not</em> &lt;ref&gt;</dt>
1059 <dd>
1060 <p>Deepens the history of a shallow repository excluding ref.
1061 Multiple options add up.</p>
1062 </dd>
1063 <dt class="hdlist1"><em>option deepen-relative</em> {<em>true</em>|<em>false</em>}</dt>
1064 <dd>
1065 <p>Deepens the history of a shallow repository relative to
1066 current boundary. Only valid when used with "option depth".</p>
1067 </dd>
1068 <dt class="hdlist1"><em>option followtags</em> {<em>true</em>|<em>false</em>}</dt>
1069 <dd>
1070 <p>If enabled the helper should automatically fetch annotated
1071 tag objects if the object the tag points at was transferred
1072 during the fetch command. If the tag is not fetched by
1073 the helper a second fetch command will usually be sent to
1074 ask for the tag specifically. Some helpers may be able to
1075 use this option to avoid a second network connection.</p>
1076 </dd>
1077 </dl>
1078 </div>
1079 <div class="paragraph">
1080 <p><em>option dry-run</em> {<em>true</em>|<em>false</em>}:
1081 If true, pretend the operation completed successfully,
1082 but don&#8217;t actually change any repository data. For most
1083 helpers this only applies to the <em>push</em>, if supported.</p>
1084 </div>
1085 <div class="dlist">
1086 <dl>
1087 <dt class="hdlist1"><em>option servpath &lt;c-style-quoted-path&gt;</em></dt>
1088 <dd>
1089 <p>Sets service path (--upload-pack, --receive-pack etc.) for
1090 next connect. Remote helper may support this option, but
1091 must not rely on this option being set before
1092 connect request occurs.</p>
1093 </dd>
1094 <dt class="hdlist1"><em>option check-connectivity</em> {<em>true</em>|<em>false</em>}</dt>
1095 <dd>
1096 <p>Request the helper to check connectivity of a clone.</p>
1097 </dd>
1098 <dt class="hdlist1"><em>option force</em> {<em>true</em>|<em>false</em>}</dt>
1099 <dd>
1100 <p>Request the helper to perform a force update. Defaults to
1101 <em>false</em>.</p>
1102 </dd>
1103 <dt class="hdlist1"><em>option cloning</em> {<em>true</em>|<em>false</em>}</dt>
1104 <dd>
1105 <p>Notify the helper this is a clone request (i.e. the current
1106 repository is guaranteed empty).</p>
1107 </dd>
1108 <dt class="hdlist1"><em>option update-shallow</em> {<em>true</em>|<em>false</em>}</dt>
1109 <dd>
1110 <p>Allow to extend .git/shallow if the new refs require it.</p>
1111 </dd>
1112 <dt class="hdlist1"><em>option pushcert</em> {<em>true</em>|<em>false</em>}</dt>
1113 <dd>
1114 <p>GPG sign pushes.</p>
1115 </dd>
1116 <dt class="hdlist1"><em>option push-option</em> &lt;string&gt;</dt>
1117 <dd>
1118 <p>Transmit &lt;string&gt; as a push option. As the push option
1119 must not contain LF or NUL characters, the string is not encoded.</p>
1120 </dd>
1121 <dt class="hdlist1"><em>option from-promisor</em> {<em>true</em>|<em>false</em>}</dt>
1122 <dd>
1123 <p>Indicate that these objects are being fetched from a promisor.</p>
1124 </dd>
1125 <dt class="hdlist1"><em>option no-dependents</em> {<em>true</em>|<em>false</em>}</dt>
1126 <dd>
1127 <p>Indicate that only the objects wanted need to be fetched, not
1128 their dependents.</p>
1129 </dd>
1130 <dt class="hdlist1"><em>option atomic</em> {<em>true</em>|<em>false</em>}</dt>
1131 <dd>
1132 <p>When pushing, request the remote server to update refs in a single atomic
1133 transaction. If successful, all refs will be updated, or none will. If the
1134 remote side does not support this capability, the push will fail.</p>
1135 </dd>
1136 <dt class="hdlist1"><em>option object-format true</em></dt>
1137 <dd>
1138 <p>Indicate that the caller wants hash algorithm information
1139 to be passed back from the remote. This mode is used when fetching
1140 refs.</p>
1141 </dd>
1142 </dl>
1143 </div>
1144 </div>
1145 </div>
1146 <div class="sect1">
1147 <h2 id="_see_also">SEE ALSO</h2>
1148 <div class="sectionbody">
1149 <div class="paragraph">
1150 <p><a href="git-remote.html">git-remote(1)</a></p>
1151 </div>
1152 <div class="paragraph">
1153 <p><a href="git-remote-ext.html">git-remote-ext(1)</a></p>
1154 </div>
1155 <div class="paragraph">
1156 <p><a href="git-remote-fd.html">git-remote-fd(1)</a></p>
1157 </div>
1158 <div class="paragraph">
1159 <p><a href="git-fast-import.html">git-fast-import(1)</a></p>
1160 </div>
1161 </div>
1162 </div>
1163 <div class="sect1">
1164 <h2 id="_git">GIT</h2>
1165 <div class="sectionbody">
1166 <div class="paragraph">
1167 <p>Part of the <a href="git.html">git(1)</a> suite</p>
1168 </div>
1169 </div>
1170 </div>
1171 </div>
1172 <div id="footer">
1173 <div id="footer-text">
1174 Last updated 2024-04-03 15:35:56 -0700
1175 </div>
1176 </div>
1177 </body>
1178 </html>