Autogenerated HTML docs for v1.7.6-472-g4bfe7
[git/jnareb-git.git] / technical / api-remote.html
blobf709fa640d44c977e5efeab1a96da729c453fb58
1 <!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" />
6 <meta name="generator" content="AsciiDoc 8.4.5" />
7 <title>Remotes configuration API</title>
8 <style type="text/css">
9 /* Debug borders */
10 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
12 border: 1px solid red;
16 body {
17 margin: 1em 5% 1em 5%;
20 a {
21 color: blue;
22 text-decoration: underline;
24 a:visited {
25 color: fuchsia;
28 em {
29 font-style: italic;
30 color: navy;
33 strong {
34 font-weight: bold;
35 color: #083194;
38 tt {
39 color: navy;
42 h1, h2, h3, h4, h5, h6 {
43 color: #527bbd;
44 font-family: sans-serif;
45 margin-top: 1.2em;
46 margin-bottom: 0.5em;
47 line-height: 1.3;
50 h1, h2, h3 {
51 border-bottom: 2px solid silver;
53 h2 {
54 padding-top: 0.5em;
56 h3 {
57 float: left;
59 h3 + * {
60 clear: left;
63 div.sectionbody {
64 font-family: serif;
65 margin-left: 0;
68 hr {
69 border: 1px solid silver;
72 p {
73 margin-top: 0.5em;
74 margin-bottom: 0.5em;
77 ul, ol, li > p {
78 margin-top: 0;
81 pre {
82 padding: 0;
83 margin: 0;
86 span#author {
87 color: #527bbd;
88 font-family: sans-serif;
89 font-weight: bold;
90 font-size: 1.1em;
92 span#email {
94 span#revnumber, span#revdate, span#revremark {
95 font-family: sans-serif;
98 div#footer {
99 font-family: sans-serif;
100 font-size: small;
101 border-top: 2px solid silver;
102 padding-top: 0.5em;
103 margin-top: 4.0em;
105 div#footer-text {
106 float: left;
107 padding-bottom: 0.5em;
109 div#footer-badges {
110 float: right;
111 padding-bottom: 0.5em;
114 div#preamble {
115 margin-top: 1.5em;
116 margin-bottom: 1.5em;
118 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
119 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
120 div.admonitionblock {
121 margin-top: 1.5em;
122 margin-bottom: 1.5em;
124 div.admonitionblock {
125 margin-top: 2.5em;
126 margin-bottom: 2.5em;
129 div.content { /* Block element content. */
130 padding: 0;
133 /* Block element titles. */
134 div.title, caption.title {
135 color: #527bbd;
136 font-family: sans-serif;
137 font-weight: bold;
138 text-align: left;
139 margin-top: 1.0em;
140 margin-bottom: 0.5em;
142 div.title + * {
143 margin-top: 0;
146 td div.title:first-child {
147 margin-top: 0.0em;
149 div.content div.title:first-child {
150 margin-top: 0.0em;
152 div.content + div.title {
153 margin-top: 0.0em;
156 div.sidebarblock > div.content {
157 background: #ffffee;
158 border: 1px solid silver;
159 padding: 0.5em;
162 div.listingblock > div.content {
163 border: 1px solid silver;
164 background: #f4f4f4;
165 padding: 0.5em;
168 div.quoteblock {
169 padding-left: 2.0em;
170 margin-right: 10%;
172 div.quoteblock > div.attribution {
173 padding-top: 0.5em;
174 text-align: right;
177 div.verseblock {
178 padding-left: 2.0em;
179 margin-right: 10%;
181 div.verseblock > div.content {
182 white-space: pre;
184 div.verseblock > div.attribution {
185 padding-top: 0.75em;
186 text-align: left;
188 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
189 div.verseblock + div.attribution {
190 text-align: left;
193 div.admonitionblock .icon {
194 vertical-align: top;
195 font-size: 1.1em;
196 font-weight: bold;
197 text-decoration: underline;
198 color: #527bbd;
199 padding-right: 0.5em;
201 div.admonitionblock td.content {
202 padding-left: 0.5em;
203 border-left: 2px solid silver;
206 div.exampleblock > div.content {
207 border-left: 2px solid silver;
208 padding: 0.5em;
211 div.imageblock div.content { padding-left: 0; }
212 span.image img { border-style: none; }
213 a.image:visited { color: white; }
215 dl {
216 margin-top: 0.8em;
217 margin-bottom: 0.8em;
219 dt {
220 margin-top: 0.5em;
221 margin-bottom: 0;
222 font-style: normal;
223 color: navy;
225 dd > *:first-child {
226 margin-top: 0.1em;
229 ul, ol {
230 list-style-position: outside;
232 ol.arabic {
233 list-style-type: decimal;
235 ol.loweralpha {
236 list-style-type: lower-alpha;
238 ol.upperalpha {
239 list-style-type: upper-alpha;
241 ol.lowerroman {
242 list-style-type: lower-roman;
244 ol.upperroman {
245 list-style-type: upper-roman;
248 div.compact ul, div.compact ol,
249 div.compact p, div.compact p,
250 div.compact div, div.compact div {
251 margin-top: 0.1em;
252 margin-bottom: 0.1em;
255 div.tableblock > table {
256 border: 3px solid #527bbd;
258 thead {
259 font-family: sans-serif;
260 font-weight: bold;
262 tfoot {
263 font-weight: bold;
265 td > div.verse {
266 white-space: pre;
268 p.table {
269 margin-top: 0;
271 /* Because the table frame attribute is overriden by CSS in most browsers. */
272 div.tableblock > table[frame="void"] {
273 border-style: none;
275 div.tableblock > table[frame="hsides"] {
276 border-left-style: none;
277 border-right-style: none;
279 div.tableblock > table[frame="vsides"] {
280 border-top-style: none;
281 border-bottom-style: none;
285 div.hdlist {
286 margin-top: 0.8em;
287 margin-bottom: 0.8em;
289 div.hdlist tr {
290 padding-bottom: 15px;
292 dt.hdlist1.strong, td.hdlist1.strong {
293 font-weight: bold;
295 td.hdlist1 {
296 vertical-align: top;
297 font-style: normal;
298 padding-right: 0.8em;
299 color: navy;
301 td.hdlist2 {
302 vertical-align: top;
304 div.hdlist.compact tr {
305 margin: 0;
306 padding-bottom: 0;
309 .comment {
310 background: yellow;
313 @media print {
314 div#footer-badges { display: none; }
317 div#toctitle {
318 color: #527bbd;
319 font-family: sans-serif;
320 font-size: 1.1em;
321 font-weight: bold;
322 margin-top: 1.0em;
323 margin-bottom: 0.1em;
326 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
327 margin-top: 0;
328 margin-bottom: 0;
330 div.toclevel2 {
331 margin-left: 2em;
332 font-size: 0.9em;
334 div.toclevel3 {
335 margin-left: 4em;
336 font-size: 0.9em;
338 div.toclevel4 {
339 margin-left: 6em;
340 font-size: 0.9em;
342 /* Workarounds for IE6's broken and incomplete CSS2. */
344 div.sidebar-content {
345 background: #ffffee;
346 border: 1px solid silver;
347 padding: 0.5em;
349 div.sidebar-title, div.image-title {
350 color: #527bbd;
351 font-family: sans-serif;
352 font-weight: bold;
353 margin-top: 0.0em;
354 margin-bottom: 0.5em;
357 div.listingblock div.content {
358 border: 1px solid silver;
359 background: #f4f4f4;
360 padding: 0.5em;
363 div.quoteblock-attribution {
364 padding-top: 0.5em;
365 text-align: right;
368 div.verseblock-content {
369 white-space: pre;
371 div.verseblock-attribution {
372 padding-top: 0.75em;
373 text-align: left;
376 div.exampleblock-content {
377 border-left: 2px solid silver;
378 padding-left: 0.5em;
381 /* IE6 sets dynamically generated links as visited. */
382 div#toc a:visited { color: blue; }
383 </style>
384 </head>
385 <body>
386 <div id="header">
387 <h1>Remotes configuration API</h1>
388 </div>
389 <div id="preamble">
390 <div class="sectionbody">
391 <div class="paragraph"><p>The API in remote.h gives access to the configuration related to
392 remotes. It handles all three configuration mechanisms historically
393 and currently used by git, and presents the information in a uniform
394 fashion. Note that the code also handles plain URLs without any
395 configuration, giving them just the default information.</p></div>
396 </div>
397 </div>
398 <h2 id="_struct_remote">struct remote</h2>
399 <div class="sectionbody">
400 <div class="dlist"><dl>
401 <dt class="hdlist1">
402 <tt>name</tt>
403 </dt>
404 <dd>
406 The user&#8217;s nickname for the remote
407 </p>
408 </dd>
409 <dt class="hdlist1">
410 <tt>url</tt>
411 </dt>
412 <dd>
414 An array of all of the url_nr URLs configured for the remote
415 </p>
416 </dd>
417 <dt class="hdlist1">
418 <tt>pushurl</tt>
419 </dt>
420 <dd>
422 An array of all of the pushurl_nr push URLs configured for the remote
423 </p>
424 </dd>
425 <dt class="hdlist1">
426 <tt>push</tt>
427 </dt>
428 <dd>
430 An array of refspecs configured for pushing, with
431 push_refspec being the literal strings, and push_refspec_nr
432 being the quantity.
433 </p>
434 </dd>
435 <dt class="hdlist1">
436 <tt>fetch</tt>
437 </dt>
438 <dd>
440 An array of refspecs configured for fetching, with
441 fetch_refspec being the literal strings, and fetch_refspec_nr
442 being the quantity.
443 </p>
444 </dd>
445 <dt class="hdlist1">
446 <tt>fetch_tags</tt>
447 </dt>
448 <dd>
450 The setting for whether to fetch tags (as a separate rule from
451 the configured refspecs); -1 means never to fetch tags, 0
452 means to auto-follow tags based on the default heuristic, 1
453 means to always auto-follow tags, and 2 means to fetch all
454 tags.
455 </p>
456 </dd>
457 <dt class="hdlist1">
458 <tt>receivepack</tt>, <tt>uploadpack</tt>
459 </dt>
460 <dd>
462 The configured helper programs to run on the remote side, for
463 git-native protocols.
464 </p>
465 </dd>
466 <dt class="hdlist1">
467 <tt>http_proxy</tt>
468 </dt>
469 <dd>
471 The proxy to use for curl (http, https, ftp, etc.) URLs.
472 </p>
473 </dd>
474 </dl></div>
475 <div class="paragraph"><p>struct remotes can be found by name with remote_get(), and iterated
476 through with for_each_remote(). remote_get(NULL) will return the
477 default remote, given the current branch and configuration.</p></div>
478 </div>
479 <h2 id="_struct_refspec">struct refspec</h2>
480 <div class="sectionbody">
481 <div class="paragraph"><p>A struct refspec holds the parsed interpretation of a refspec. If it
482 will force updates (starts with a <em>+</em>), force is true. If it is a
483 pattern (sides end with <em>*</em>) pattern is true. src and dest are the two
484 sides (if a pattern, only the part outside of the wildcards); if there
485 is only one side, it is src, and dst is NULL; if sides exist but are
486 empty (i.e., the refspec either starts or ends with <em>:</em>), the
487 corresponding side is "".</p></div>
488 <div class="paragraph"><p>This parsing can be done to an array of strings to give an array of
489 struct refpsecs with parse_ref_spec().</p></div>
490 <div class="paragraph"><p>remote_find_tracking(), given a remote and a struct refspec with
491 either src or dst filled out, will fill out the other such that the
492 result is in the "fetch" specification for the remote (note that this
493 evaluates patterns and returns a single result).</p></div>
494 </div>
495 <h2 id="_struct_branch">struct branch</h2>
496 <div class="sectionbody">
497 <div class="paragraph"><p>Note that this may end up moving to branch.h</p></div>
498 <div class="paragraph"><p>struct branch holds the configuration for a branch. It can be looked
499 branch_get(NULL) for HEAD.</p></div>
500 <div class="paragraph"><p>It contains:</p></div>
501 <div class="dlist"><dl>
502 <dt class="hdlist1">
503 <tt>name</tt>
504 </dt>
505 <dd>
507 The short name of the branch.
508 </p>
509 </dd>
510 <dt class="hdlist1">
511 <tt>refname</tt>
512 </dt>
513 <dd>
515 The full path for the branch ref.
516 </p>
517 </dd>
518 <dt class="hdlist1">
519 <tt>remote_name</tt>
520 </dt>
521 <dd>
523 The name of the remote listed in the configuration.
524 </p>
525 </dd>
526 <dt class="hdlist1">
527 <tt>remote</tt>
528 </dt>
529 <dd>
531 The struct remote for that remote.
532 </p>
533 </dd>
534 <dt class="hdlist1">
535 <tt>merge_name</tt>
536 </dt>
537 <dd>
539 An array of the "merge" lines in the configuration.
540 </p>
541 </dd>
542 <dt class="hdlist1">
543 <tt>merge</tt>
544 </dt>
545 <dd>
547 An array of the struct refspecs used for the merge lines. That
548 is, merge[i]&#8594;dst is a local tracking ref which should be
549 merged into this branch by default.
550 </p>
551 </dd>
552 <dt class="hdlist1">
553 <tt>merge_nr</tt>
554 </dt>
555 <dd>
557 The number of merge configurations
558 </p>
559 </dd>
560 </dl></div>
561 <div class="paragraph"><p>branch_has_merge_config() returns true if the given branch has merge
562 configuration given.</p></div>
563 </div>
564 <h2 id="_other_stuff">Other stuff</h2>
565 <div class="sectionbody">
566 <div class="paragraph"><p>There is other stuff in remote.h that is related, in general, to the
567 process of interacting with remotes.</p></div>
568 <div class="paragraph"><p>(Daniel Barkalow)</p></div>
569 </div>
570 <div id="footer">
571 <div id="footer-text">
572 Last updated 2009-06-21 08:02:57 UTC
573 </div>
574 </div>
575 </body>
576 </html>