(If you are trying to configure Forge for https://github.com and/or https://gitlab.com, then you can skip this section.)
Originally Ghub supported only Github but now it also supports Gitlab,
Gitea, Gogs and Bitbucket. Because of that, the function ghub-request
defaults to acting on a github forge, but can be told to act on other
forges using the FORGE argument.
The FORGE argument only specifies what kind of forge we are accessing, not which host specifically. The HOST argument can be used to select the instance. For some forges a default instance is defined:
github defaults to host api.github.com.
gitlab defaults to host gitlab.com/api/v4.
bitbucket defaults to host api.bitbucket.org/2.0.
gitea and gogs forges and
localhost:3000/api/v1 is used as the default host in both cases.
Together the FORGE and HOST arguments specify the forge type and instance. In addition to that, it is also necessary to specify on whose behalf the request is being made, which can be done using the USERNAME and AUTH arguments. For example:
(ghub-request "GET" "/user" nil
:forge 'github
:host "api.github.com"
:username "tarsius"
:auth 'forge)
Having to specify these arguments for every request is inconvenient. Additional variables and convenience functions can be used to make that unnecessary in most cases.
(But for debugging purposes the above explicit form is very useful.
You will obviously have to change the value of USERNAME and you should
use ghub as AUTH when first trying this at home.)
These variables can be set globally and/or for a specific repository.
github.user specifies the user.
github instance the Git variable github.HOST.user
specifies the user. The HOST in that variable name is the same
as the value of the HOST argument of the called function.
github.host can be used. This should only be set locally.
These github specific variables are discussed in more detail in
Github Configuration Variables.
For gitlab and bitbucket forges similar variables are available:
gitlab.user specifies the https://gitlab.com user.
gitlab.HOST.user specifies the user for the HOST gitlab instance.
gitlab.host specifies the gitlab host, unless the HOST argument
is non-nil
bitbucket.user specifies the https://bitbucket.org user.
bitbucket.HOST.user specifies the user for the HOST bitbucket
instance.
bitbucket.host specifies the bitbucket host, unless the HOST
argument is non-nil.
For the gitea and gogs forges some similar variables are available,
however for some of the ghub.* variables no equivalent variable exist
for these two forges:
gitea.user is not used because no canonical gitea instance exists.
gitea.HOST.user specifies the user for the HOST gitea instance.
gitea.host specifies the gitea host, unless the HOST argument is
non-nil
gogs.user is not used because no canonical gogs instance exists.
gogs.HOST.user specifies the user for the HOST gogs instance.
gogs.host specifies the gogs host, unless the HOST argument is
non-nil