blob: c54b17db69b8420bdec7c6ee0f424a5216957add [file] [log] [blame]
Junio C Hamano6d559fc2008-02-20 10:44:261Remotes configuration API
2=========================
3
4The API in remote.h gives access to the configuration related to
5remotes. It handles all three configuration mechanisms historically
6and currently used by git, and presents the information in a uniform
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
15The user's nickname for the remote
16
17`url`::
18
19An array of all of the url_nr URLs configured for the remote
20
Junio C Hamano0e88f3e2009-06-21 08:03:2521`pushurl`::
22
23An array of all of the pushurl_nr push URLs configured for the remote
24
Junio C Hamano6d559fc2008-02-20 10:44:2625`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
33An array of refspecs configured for fetching, with
34fetch_refspec being the literal strings, and fetch_refspec_nr
35being the quantity.
36
37`fetch_tags`::
38
39The setting for whether to fetch tags (as a separate rule from
40the configured refspecs); -1 means never to fetch tags, 0
41means to auto-follow tags based on the default heuristic, 1
42means to always auto-follow tags, and 2 means to fetch all
43tags.
44
45`receivepack`, `uploadpack`::
46
47The configured helper programs to run on the remote side, for
48git-native protocols.
49
50`http_proxy`::
51
52The proxy to use for curl (http, https, ftp, etc.) URLs.
53
54struct remotes can be found by name with remote_get(), and iterated
55through with for_each_remote(). remote_get(NULL) will return the
56default remote, given the current branch and configuration.
57
58struct refspec
59--------------
60
61A struct refspec holds the parsed interpretation of a refspec. If it
62will force updates (starts with a '+'), force is true. If it is a
63pattern (sides end with '*') pattern is true. src and dest are the two
64sides (if a pattern, only the part outside of the wildcards); if there
65is only one side, it is src, and dst is NULL; if sides exist but are
66empty (i.e., the refspec either starts or ends with ':'), the
67corresponding side is "".
68
69This parsing can be done to an array of strings to give an array of
70struct refpsecs with parse_ref_spec().
71
72remote_find_tracking(), given a remote and a struct refspec with
73either src or dst filled out, will fill out the other such that the
74result is in the "fetch" specification for the remote (note that this
75evaluates patterns and returns a single result).
76
77struct branch
78-------------
79
80Note that this may end up moving to branch.h
81
82struct branch holds the configuration for a branch. It can be looked
83up with branch_get(name) for "refs/heads/{name}", or with
84branch_get(NULL) for HEAD.
85
86It contains:
87
88`name`::
89
90The short name of the branch.
91
92`refname`::
93
94The full path for the branch ref.
95
96`remote_name`::
97
98The name of the remote listed in the configuration.
99
100`remote`::
101
102The struct remote for that remote.
103
104`merge_name`::
105
106An array of the "merge" lines in the configuration.
107
108`merge`::
109
110An array of the struct refspecs used for the merge lines. That
111is, merge[i]->dst is a local tracking ref which should be
112merged into this branch by default.
113
114`merge_nr`::
115
116The 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)