http: allow selection of proxy authentication method
[git/git.git] / Documentation / technical / api-remote.txt
CommitLineData
f019d08e
DB
1Remotes configuration API
2=========================
3
4The API in remote.h gives access to the configuration related to
5remotes. It handles all three configuration mechanisms historically
2de9b711 6and currently used by Git, and presents the information in a uniform
f019d08e
DB
7fashion. Note that the code also handles plain URLs without any
8configuration, giving them just the default information.
9
10struct remote
11-------------
12
13`name`::
14
15 The user's nickname for the remote
16
17`url`::
18
19 An array of all of the url_nr URLs configured for the remote
20
056724c6
MG
21`pushurl`::
22
23 An array of all of the pushurl_nr push URLs configured for the remote
24
f019d08e
DB
25`push`::
26
27 An array of refspecs configured for pushing, with
28 push_refspec being the literal strings, and push_refspec_nr
29 being the quantity.
30
31`fetch`::
32
33 An array of refspecs configured for fetching, with
34 fetch_refspec being the literal strings, and fetch_refspec_nr
35 being the quantity.
36
37`fetch_tags`::
38
39 The setting for whether to fetch tags (as a separate rule from
40 the configured refspecs); -1 means never to fetch tags, 0
41 means to auto-follow tags based on the default heuristic, 1
42 means to always auto-follow tags, and 2 means to fetch all
43 tags.
44
45`receivepack`, `uploadpack`::
46
47 The configured helper programs to run on the remote side, for
2de9b711 48 Git-native protocols.
f019d08e
DB
49
50`http_proxy`::
51
52 The proxy to use for curl (http, https, ftp, etc.) URLs.
53
ef976395
KF
54`http_proxy_authmethod`::
55
56 The method used for authenticating against `http_proxy`.
57
f019d08e
DB
58struct remotes can be found by name with remote_get(), and iterated
59through with for_each_remote(). remote_get(NULL) will return the
60default remote, given the current branch and configuration.
61
62struct refspec
63--------------
64
5b2515f4
MH
65A struct refspec holds the parsed interpretation of a refspec. If it
66will force updates (starts with a '+'), force is true. If it is a
67pattern (sides end with '*') pattern is true. src and dest are the
68two sides (including '*' characters if present); if there is only one
69side, it is src, and dst is NULL; if sides exist but are empty (i.e.,
70the refspec either starts or ends with ':'), the corresponding side is
71"".
72
73An array of strings can be parsed into an array of struct refspecs
74using parse_fetch_refspec() or parse_push_refspec().
f019d08e
DB
75
76remote_find_tracking(), given a remote and a struct refspec with
77either src or dst filled out, will fill out the other such that the
78result is in the "fetch" specification for the remote (note that this
79evaluates patterns and returns a single result).
80
81struct branch
82-------------
83
84Note that this may end up moving to branch.h
85
86struct branch holds the configuration for a branch. It can be looked
87up with branch_get(name) for "refs/heads/{name}", or with
88branch_get(NULL) for HEAD.
89
90It contains:
91
92`name`::
93
94 The short name of the branch.
95
96`refname`::
97
98 The full path for the branch ref.
99
100`remote_name`::
101
102 The name of the remote listed in the configuration.
103
f019d08e
DB
104`merge_name`::
105
106 An array of the "merge" lines in the configuration.
107
108`merge`::
109
110 An array of the struct refspecs used for the merge lines. That
111 is, merge[i]->dst is a local tracking ref which should be
112 merged into this branch by default.
113
114`merge_nr`::
115
116 The number of merge configurations
117
118branch_has_merge_config() returns true if the given branch has merge
119configuration given.
120
121Other stuff
122-----------
123
124There is other stuff in remote.h that is related, in general, to the
125process of interacting with remotes.
126
127(Daniel Barkalow)