Documentation / technical / api-remote.txton commit t3504: use test_commit (6f0e577)
   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
   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
  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
  21`pushurl`::
  22
  23        An array of all of the pushurl_nr push URLs configured for the remote
  24
  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
  48        Git-native protocols.
  49
  50`http_proxy`::
  51
  52        The proxy to use for curl (http, https, ftp, etc.) URLs.
  53
  54`http_proxy_authmethod`::
  55
  56        The method used for authenticating against `http_proxy`.
  57
  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
  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().
  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
 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)