| Remotes configuration API | 
 | ========================= | 
 |  | 
 | The API in remote.h gives access to the configuration related to | 
 | remotes. It handles all three configuration mechanisms historically | 
 | and currently used by Git, and presents the information in a uniform | 
 | fashion. Note that the code also handles plain URLs without any | 
 | configuration, giving them just the default information. | 
 |  | 
 | struct remote | 
 | ------------- | 
 |  | 
 | `name`:: | 
 |  | 
 | 	The user's nickname for the remote | 
 |  | 
 | `url`:: | 
 |  | 
 | 	An array of all of the url_nr URLs configured for the remote | 
 |  | 
 | `pushurl`:: | 
 |  | 
 | 	An array of all of the pushurl_nr push URLs configured for the remote | 
 |  | 
 | `push`:: | 
 |  | 
 | 	 An array of refspecs configured for pushing, with | 
 | 	 push_refspec being the literal strings, and push_refspec_nr | 
 | 	 being the quantity. | 
 |  | 
 | `fetch`:: | 
 |  | 
 | 	An array of refspecs configured for fetching, with | 
 | 	fetch_refspec being the literal strings, and fetch_refspec_nr | 
 | 	being the quantity. | 
 |  | 
 | `fetch_tags`:: | 
 |  | 
 | 	The setting for whether to fetch tags (as a separate rule from | 
 | 	the configured refspecs); -1 means never to fetch tags, 0 | 
 | 	means to auto-follow tags based on the default heuristic, 1 | 
 | 	means to always auto-follow tags, and 2 means to fetch all | 
 | 	tags. | 
 |  | 
 | `receivepack`, `uploadpack`:: | 
 |  | 
 | 	The configured helper programs to run on the remote side, for | 
 | 	Git-native protocols. | 
 |  | 
 | `http_proxy`:: | 
 |  | 
 | 	The proxy to use for curl (http, https, ftp, etc.) URLs. | 
 |  | 
 | `http_proxy_authmethod`:: | 
 |  | 
 | 	The method used for authenticating against `http_proxy`. | 
 |  | 
 | struct remotes can be found by name with remote_get(), and iterated | 
 | through with for_each_remote(). remote_get(NULL) will return the | 
 | default remote, given the current branch and configuration. | 
 |  | 
 | struct refspec | 
 | -------------- | 
 |  | 
 | A struct refspec holds the parsed interpretation of a refspec.  If it | 
 | will force updates (starts with a '+'), force is true.  If it is a | 
 | pattern (sides end with '*') pattern is true.  src and dest are the | 
 | two sides (including '*' characters if present); if there is only one | 
 | side, it is src, and dst is NULL; if sides exist but are empty (i.e., | 
 | the refspec either starts or ends with ':'), the corresponding side is | 
 | "". | 
 |  | 
 | An array of strings can be parsed into an array of struct refspecs | 
 | using parse_fetch_refspec() or parse_push_refspec(). | 
 |  | 
 | remote_find_tracking(), given a remote and a struct refspec with | 
 | either src or dst filled out, will fill out the other such that the | 
 | result is in the "fetch" specification for the remote (note that this | 
 | evaluates patterns and returns a single result). | 
 |  | 
 | struct branch | 
 | ------------- | 
 |  | 
 | Note that this may end up moving to branch.h | 
 |  | 
 | struct branch holds the configuration for a branch. It can be looked | 
 | up with branch_get(name) for "refs/heads/{name}", or with | 
 | branch_get(NULL) for HEAD. | 
 |  | 
 | It contains: | 
 |  | 
 | `name`:: | 
 |  | 
 | 	The short name of the branch. | 
 |  | 
 | `refname`:: | 
 |  | 
 | 	The full path for the branch ref. | 
 |  | 
 | `remote_name`:: | 
 |  | 
 | 	The name of the remote listed in the configuration. | 
 |  | 
 | `merge_name`:: | 
 |  | 
 | 	An array of the "merge" lines in the configuration. | 
 |  | 
 | `merge`:: | 
 |  | 
 | 	An array of the struct refspecs used for the merge lines. That | 
 | 	is, merge[i]->dst is a local tracking ref which should be | 
 | 	merged into this branch by default. | 
 |  | 
 | `merge_nr`:: | 
 |  | 
 | 	The number of merge configurations | 
 |  | 
 | branch_has_merge_config() returns true if the given branch has merge | 
 | configuration given. | 
 |  | 
 | Other stuff | 
 | ----------- | 
 |  | 
 | There is other stuff in remote.h that is related, in general, to the | 
 | process of interacting with remotes. | 
 |  | 
 | (Daniel Barkalow) |