mirror of
https://github.com/git/git.git
synced 2024-11-17 22:44:49 +01:00
124 lines
3.2 KiB
Text
124 lines
3.2 KiB
Text
|
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
|
||
|
|
||
|
`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.
|
||
|
|
||
|
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 (if a pattern, only the part outside of the wildcards); 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 "".
|
||
|
|
||
|
This parsing can be done to an array of strings to give an array of
|
||
|
struct refpsecs with parse_ref_spec().
|
||
|
|
||
|
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.
|
||
|
|
||
|
`remote`::
|
||
|
|
||
|
The struct remote for that remote.
|
||
|
|
||
|
`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)
|