dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

forge.info (59943B)


      1 This is forge.info, produced by makeinfo version 6.7 from forge.texi.
      2 
      3      Copyright (C) 2018-2022 Jonas Bernoulli <jonas@bernoul.li>
      4 
      5      You can redistribute this document and/or modify it under the terms
      6      of the GNU General Public License as published by the Free Software
      7      Foundation, either version 3 of the License, or (at your option)
      8      any later version.
      9 
     10      This document is distributed in the hope that it will be useful,
     11      but WITHOUT ANY WARRANTY; without even the implied warranty of
     12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13      General Public License for more details.
     14 
     15 INFO-DIR-SECTION Emacs
     16 START-INFO-DIR-ENTRY
     17 * Forge: (forge).       Access Git Forges from Magit.
     18 END-INFO-DIR-ENTRY
     19 
     20 
     21 File: forge.info,  Node: Top,  Next: Introduction,  Up: (dir)
     22 
     23 Forge User and Developer Manual
     24 *******************************
     25 
     26 Forge allows you to work with Git forges, such as Github and Gitlab,
     27 from the comfort of Magit and the rest of Emacs.
     28 
     29 This manual is for Forge version 0.3.2.
     30 
     31      Copyright (C) 2018-2022 Jonas Bernoulli <jonas@bernoul.li>
     32 
     33      You can redistribute this document and/or modify it under the terms
     34      of the GNU General Public License as published by the Free Software
     35      Foundation, either version 3 of the License, or (at your option)
     36      any later version.
     37 
     38      This document is distributed in the hope that it will be useful,
     39      but WITHOUT ANY WARRANTY; without even the implied warranty of
     40      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     41      General Public License for more details.
     42 
     43 * Menu:
     44 
     45 * Introduction::
     46 * Supported Forges and Hosts::
     47 * Getting Started::
     48 * Usage::
     49 * Other Options::
     50 * FAQ::
     51 * Keystroke Index::
     52 * Function and Command Index::
     53 * Variable Index::
     54 
     55 — The Detailed Node Listing —
     56 
     57 Supported Forges and Hosts
     58 
     59 * Supported Forges::
     60 * Partially Supported Forges::
     61 * Supported Semi-Forges::
     62 
     63 Getting Started
     64 
     65 * Token Creation::
     66 * Initial Pull::
     67 * Repository Detection::
     68 * Caveats::
     69 
     70 Usage
     71 
     72 * Pulling::
     73 * Branching::
     74 * Working with Topics::
     75 * Miscellaneous::
     76 
     77 Working with Topics
     78 
     79 * Visiting Topics::
     80 * Listing Topics and Notifications::
     81 * Creating Topics::
     82 * Editing Topics and Posts::
     83 
     84 
     85 FAQ
     86 
     87 * Is it possible to create a single pull-request without pulling everything?::
     88 * ‘error in process filter HTTP Error 502, "Bad gateway"’: error in process filter HTTP Error 502 "Bad gateway".
     89 
     90 
     91 
     92 File: forge.info,  Node: Introduction,  Next: Supported Forges and Hosts,  Prev: Top,  Up: Top
     93 
     94 1 Introduction
     95 **************
     96 
     97 Forge allows you to work with Git forges, such as Github and Gitlab,
     98 from the comfort of Magit and the rest of Emacs.
     99 
    100    Forge fetches issues, pull-requests and other data using the forge’s
    101 API and stores that in a local database.  Additionally it fetches the
    102 pull-request references using Git.  Forge implements various features
    103 that use this data but the database and pull-request refs can also be
    104 used by third-party packages.
    105 
    106 
    107 File: forge.info,  Node: Supported Forges and Hosts,  Next: Getting Started,  Prev: Introduction,  Up: Top
    108 
    109 2 Supported Forges and Hosts
    110 ****************************
    111 
    112 Currently Forge supports two forges and three more forges partially.
    113 Additionally it supports four semi-forges.  Support for more forges and
    114 semi-forges can and will be added.
    115 
    116    Both forges and semi-forges provide web interfaces for Git
    117 repositories.  Forges additionally support pull-requests and issues and
    118 make those and other information available using an API.
    119 
    120    When a forge is only partially supported, then that means that only
    121 the functionality that does not require the API is implemented, or in
    122 other words, that the forge is only supported as a semi-forge.
    123 
    124    A host is a particular instance of a forge.  For example the hosts
    125 <https://gitlab.com> and <https://salsa.debian.org> are both instances
    126 of the Gitlab forge.  Forge supports some well known hosts out of the
    127 box and additional hosts can easily be supported by adding entries to
    128 the option ‘forge-alist’.
    129 
    130    For more details about the caveats mentioned below (and some others)
    131 also see *note Getting Started::.
    132 
    133 * Menu:
    134 
    135 * Supported Forges::
    136 * Partially Supported Forges::
    137 * Supported Semi-Forges::
    138 
    139 
    140 File: forge.info,  Node: Supported Forges,  Next: Partially Supported Forges,  Up: Supported Forges and Hosts
    141 
    142 2.1 Supported Forges
    143 ====================
    144 
    145 Github
    146 ------
    147 
    148 Forge’s support for Github can be considered the "reference
    149 implementation".  Support for other forges can lag behind a bit.
    150 
    151 Github Caveats
    152 ..............
    153 
    154    • Forge uses the Github GraphQL API when possible but has to fall
    155      back to use the REST API in many cases because the former is still
    156      rather incomplete.
    157 
    158    • Forge depends on the ‘updated_at’ field being updated when
    159      appropriate.  For Github pull-requests at least, that is not always
    160      done.
    161 
    162 Github Hosts
    163 ............
    164 
    165    • <https://github.com>
    166 
    167 Gitlab
    168 ------
    169 
    170 Gitlab Caveats
    171 ..............
    172 
    173    • Forge cannot provide notifications because the Gitlab API does not
    174      expose those.
    175 
    176 Gitlab Hosts
    177 ............
    178 
    179    • <https://gitlab.com>
    180    • <https://salsa.debian.org>
    181    • <https://framagit.org>
    182 
    183 
    184 File: forge.info,  Node: Partially Supported Forges,  Next: Supported Semi-Forges,  Prev: Supported Forges,  Up: Supported Forges and Hosts
    185 
    186 2.2 Partially Supported Forges
    187 ==============================
    188 
    189 Gitea https://gitea.io
    190 ----------------------
    191 
    192 This is the next forge whose API will be supported.
    193 
    194 Gitea Hosts
    195 ...........
    196 
    197    • <https://codeberg.org>
    198 
    199 Gogs https://gogs.io
    200 --------------------
    201 
    202 Once Gitea is supported it should be fairly simple to support Gogs too,
    203 because the former is a fork of the latter and the APIs seem to still be
    204 very similar.
    205 
    206 Gogs Hosts
    207 ..........
    208 
    209    • <https://code.orgmode.org>
    210 
    211 Bitbucket https://bitbucket.org
    212 -------------------------------
    213 
    214 I don’t plan to support Bitbucket’s API any time soon, and it gets less
    215 likely that I will every do it every time I look at it.
    216 
    217 Bitbucket Caveats
    218 .................
    219 
    220    • The API documentation is poor and initial tests indicated that the
    221      implementation is buggy.
    222 
    223    • Atlassian’s offering contains two very distinct implementations
    224      that are both called "Bitbucket".  Forge only supports the
    225      implementation whose only instance is available at
    226      <https://bitbucket.org>, because I only have access to that.
    227 
    228    • Unlike all other forges, Bitbucket does not expose pull-requests as
    229      references in the upstream repository.  For that reason Forge
    230      actually treats it as a semi-forge, not as forge whose API is not
    231      supported yet.  This means that you cannot checkout pull-requests
    232      locally.  There is little hope that this will ever get fixed; the
    233      respective issue was opened six years ago and there has been no
    234      progress since: <https://bitbucket.org/site/master/issues/5814>.
    235 
    236 Bitbucket Hosts
    237 ...............
    238 
    239    • <https://bitbucket.org>
    240 
    241 
    242 File: forge.info,  Node: Supported Semi-Forges,  Prev: Partially Supported Forges,  Up: Supported Forges and Hosts
    243 
    244 2.3 Supported Semi-Forges
    245 =========================
    246 
    247 Gitweb https://git-scm.com/docs/gitweb
    248 --------------------------------------
    249 
    250 Gitweb Caveats
    251 ..............
    252 
    253    • I could find only one public installation
    254      (<https://git.savannah.gnu.org>), which gives users the choice
    255      between Gitweb and Cgit.  The latter seems more popular (not just
    256      on this site).
    257 
    258 Cgit https://git.zx2c4.com/cgit/about
    259 -------------------------------------
    260 
    261 Cgit Caveats
    262 ............
    263 
    264    • Different sites use different URL schemata and some of the bigger
    265      sites use a fork.  For this reason Forge has to provide several
    266      classes to support different variations of Cgit and you have to
    267      look at their definitions to figure out which one is the correct
    268      one for a particular installation.
    269 
    270 Cgit Hosts
    271 ..........
    272 
    273    • <https://git.savannah.gnu.org/cgit>
    274    • <https://git.kernel.org>
    275    • <https://repo.or.cz>
    276 
    277 Stgit https://codemadness.org/git/stagit/file/README.html
    278 ---------------------------------------------------------
    279 
    280 Stgit Caveats
    281 .............
    282 
    283    • Stgit cannot show logs for branches beside "master".  For that
    284      reason Forge takes users to a page listing the branches when they
    285      request the log for a particular branch (even for "master" whose
    286      log is just one click away from there).
    287 
    288 Stgit Hosts
    289 ...........
    290 
    291    • <https://git.suckless.org>
    292 
    293 Srht https://meta.sr.ht
    294 -----------------------
    295 
    296 Srht Caveats
    297 ............
    298 
    299    • Srht cannot show logs for branches beside "master".  For that
    300      reason Forge takes users to a page listing the branches when they
    301      request the log for a particular branch (even for "master" whose
    302      log is just one click away from there).
    303 
    304 Srht Hosts
    305 ..........
    306 
    307    • <https://git.sr.ht>
    308 
    309 
    310 File: forge.info,  Node: Getting Started,  Next: Usage,  Prev: Supported Forges and Hosts,  Up: Top
    311 
    312 3 Getting Started
    313 *****************
    314 
    315 Getting started using Forge should be fairly easy provided you take the
    316 time to read the documentation.  First see *note (ghub)Getting Started::
    317 from Ghub’s manual.  Ghub is the library that Forge uses to communicate
    318 with forge APIs.  While Ghub can be used independently of Forge, its
    319 "Getting Started" part was written with Forge users in mind.
    320 
    321    Please begin reading in *note (ghub)Getting Started:: and then come
    322 back here and make sure to read the subsections.
    323 
    324    Loading Magit doesn’t cause Forge to be loaded automatically.  Adding
    325 something like this to your init file takes care of this:
    326 
    327      (with-eval-after-load 'magit
    328        (require 'forge))
    329 
    330    Or if you use ‘use-package’:
    331 
    332      (use-package forge
    333        :after magit)
    334 
    335 * Menu:
    336 
    337 * Token Creation::
    338 * Initial Pull::
    339 * Repository Detection::
    340 * Caveats::
    341 
    342 
    343 File: forge.info,  Node: Token Creation,  Next: Initial Pull,  Up: Getting Started
    344 
    345 3.1 Token Creation
    346 ==================
    347 
    348 Forge uses the Ghub package to access the APIs of supported Git forges.
    349 How this works and how to create and store a token is documented in
    350 *note (ghub)Getting Started::.
    351 
    352    Ghub used to provide a setup wizard, but that had to be removed for
    353 reasons given in the manual just mentioned.  Nowadays there is no way
    354 around reading the documentation and doing this manually I am afraid.
    355 
    356    Forge requires the following token scopes.
    357 
    358    • For Github these scopes are required.
    359 
    360         • ‘repo’ grants full read/write access to private and public
    361           repositories.
    362         • ‘user’ grants access to profile information.
    363         • ‘read:org’ grants read-only access to organization membership.
    364 
    365      More information about these and other scopes can be found at
    366      <https://docs.github.com/en/developers/apps/scopes-for-oauth-apps>.
    367 
    368    • For Gitlab instances ‘api’ is the only required scope.  It gives
    369      read and write access to everything.  The Gitlab API provides more
    370      fine-grained scopes for read-only access, but when any write access
    371      at all is required, then it is all or nothing.
    372 
    373 
    374 File: forge.info,  Node: Initial Pull,  Next: Repository Detection,  Prev: Token Creation,  Up: Getting Started
    375 
    376 3.2 Initial Pull
    377 ================
    378 
    379 To start using Forge in a certain repository visit the Magit status
    380 buffer for that repository and type ‘f n’ (‘forge-pull’).
    381 Alternatively, you can use ‘M-x forge-add-repository’, which makes it
    382 possible to add a forge repository without pulling all topics and even
    383 without having to clone the respective Git repository.
    384 
    385    You must set up a token *before* you can add the first repository.
    386 See *note Token Creation::.
    387 
    388    The first time ‘forge-pull’ is run in a repository, an entry for that
    389 repository is added to the database and a new value is added to the Git
    390 variable ‘remote.<remote>.fetch’, which fetches all pull-requests.
    391 (‘+refs/pull/*/head:refs/pullreqs/*’ for Github)
    392 
    393    ‘forge-pull’ then fetches topics and other information using the
    394 forge’s API and pull-request references using Git.
    395 
    396    The initial fetch can take a while but most of that is done
    397 asynchronously.  Storing the information in the database is done
    398 synchronously though, so there can be a noticeable hang at the end.
    399 Subsequent fetches are much faster.
    400 
    401    Fetching issues from Github is much faster than fetching from other
    402 forges because making a handful of GraphQL requests is much faster than
    403 making hundreds of REST requests.
    404 
    405 
    406 File: forge.info,  Node: Repository Detection,  Next: Caveats,  Prev: Initial Pull,  Up: Getting Started
    407 
    408 3.3 Repository Detection
    409 ========================
    410 
    411 Ghub does *not* associate a given local repository with a repository on
    412 a forge.  The Forge package itself takes care of this.  In doing so it
    413 ignores the Git variable ‘ghub.host’ and other ‘FORGE.host’ variables
    414 used by Ghub.  (But ‘github.user’ and other variables used to specify
    415 the user are honored).  Forge associates the local repository with a
    416 forge repository by first determining which remote is associated with
    417 the upstream repository and then looking that up in ‘forge-alist’.
    418 
    419    If only one remote exists, then Forge uses that unconditionally.  If
    420 several remotes exist, then a remote may be selected based on its name.
    421 
    422    The convention is to name the upstream remote ‘origin’.  If you
    423 follow this convention, then you have to do nothing else and the remote
    424 by that name is automatically used, provided it exists and regardless of
    425 whether other remotes exist.  If it does not exist, then no other
    426 remotes are tried.
    427 
    428    If you do not follow the naming convention, then you have to inform
    429 Forge about that by setting the Git variable ‘forge.remote’ to the name
    430 that you instead use for upstream remotes.
    431 
    432 ‘N r’ (‘forge-forge.remote’)
    433      This command changes the value of the ‘forge.remote’ Git variable
    434      in the current repository.
    435 
    436    If this variable is set, then Forge uses the remote by that name, if
    437 it exists, the same way it may have used ‘origin’ if the the variable
    438 were undefined.  I.e.  it does not fall through to try ‘origin’ if no
    439 remote by your chosen name exists.
    440 
    441    Once the upstream remote has been determined, Forge looks it up in
    442 ‘forge-alist’, using the host part of the URL as the key.  For example
    443 the key for ‘git@github.com:magit/forge.git’ is ‘github.com’.
    444 
    445 
    446 File: forge.info,  Node: Caveats,  Prev: Repository Detection,  Up: Getting Started
    447 
    448 3.4 Caveats
    449 ===========
    450 
    451    • Fetched information is stored in a database.  The table schemata of
    452      that database have not been finalized yet.  Until that has happened
    453      it will occasionally have to be discarded.  That isn’t such a huge
    454      deal because for now the database does not contain any information
    455      that cannot simply be fetched again, see *note Initial Pull::.
    456 
    457    • Fetching is implemented under the assumption that the API can be
    458      asked to list the things that have changed since we last checked.
    459      Unfortunately the APIs are not bug-free, so this is not always the
    460      case.  If in doubt, then re-fetch an individual topic to ensure it
    461      is up-to-date using the command ‘forge-pull-topic’.
    462 
    463    • Some other, forge-specific, caveats are mentioned in *note
    464      Supported Forges and Hosts::.
    465 
    466 
    467 File: forge.info,  Node: Usage,  Next: Other Options,  Prev: Getting Started,  Up: Top
    468 
    469 4 Usage
    470 *******
    471 
    472 Once information has been pulled from a repository’s forge for the first
    473 time, Forge adds two additional sections, named "Pull requests" and
    474 "Issues" to Magit’s status buffer.  It is also possible to add a
    475 repository to the local database without pulling all the data, which is
    476 useful if you want to create a single pull-request.
    477 
    478 ‘N a’ (‘forge-add-repository’)
    479      This command adds a repository to the database.
    480 
    481      It offers to either pull topics (now and in the future) or to only
    482      pull individual topics when the user invokes ‘forge-pull-topic’.
    483 
    484    Some of Forge’s commands are only bound when point is within one of
    485 these sections but other commands are also available elsewhere in
    486 Magit’s status buffer and/or from Magit’s transient commands.
    487 
    488 ‘N’ (‘forge-dispatch’)
    489      This prefix command is available in any Magit buffer and provides
    490      access to several of the available Forge commands.  Most of these
    491      commands are also bound elsewhere, but some are not.  See the
    492      following sections for information about the available commands.
    493 
    494      Throughout this manual you will find many bindings that begin with
    495      ‘N’, but if you prefer to continue to use ‘forge-dispatch’’s older
    496      binding you can substitute ‘'’ for that.
    497 
    498 * Menu:
    499 
    500 * Pulling::
    501 * Branching::
    502 * Working with Topics::
    503 * Miscellaneous::
    504 
    505 
    506 File: forge.info,  Node: Pulling,  Next: Branching,  Up: Usage
    507 
    508 4.1 Pulling
    509 ===========
    510 
    511 The commands that fetch forge data are available from the same transient
    512 prefix command (‘magit-fetch’ on ‘f’) that is used to fetch Git data.
    513 If option ‘magit-pull-or-fetch’ is non-nil, then they are also available
    514 from the ‘magit-pull’ transient (on ‘F’).
    515 
    516 ‘f n’ (‘forge-pull’)
    517 ‘N f f’
    518      This command uses a forge’s API to fetch topics and other
    519      information about the current repository and stores the fetched
    520      information in the database.  It also fetches notifications for all
    521      repositories from the same forge host.  (Currently this is limited
    522      to Github.)  Finally it fetches pull-request references using Git.
    523 
    524      After using this command for the first time in a given repository
    525      the status buffer for that repository always lists the
    526      pull-requests and issues.  See *note Initial Pull::.
    527 
    528 ‘f N’ (‘forge-pull-notifications’)
    529 ‘N f n’
    530      This command uses a forge’s API to fetch all notifications from
    531      that forge including, but not limited to, the notifications for the
    532      current repository.
    533 
    534      Fetching all notifications fetches associated topics even if you
    535      have not started fetching *all* topics for the respective
    536      repositories (using ‘forge-pull’), but it does not cause the topics
    537      to be listed in the status buffer of such "uninitialized"
    538      repositories.
    539 
    540    Note how pulling data from a forge’s API works the same way as
    541 pulling Git data does; you do it explicitly when you want to see the
    542 work done by others.
    543 
    544    This is less disruptive, more reliable, and easier to understand than
    545 if Forge did the pulling by itself at random intervals.  It might
    546 however mean that you occasionally invoke a command expecting the most
    547 recent data to be available and then have to abort to pull first.  The
    548 same can happen with Git, e.g.  you might attempt to merge a branch that
    549 you know exists but haven’t actually pulled yet.
    550 
    551 ‘N f t’ (‘forge-pull-topic’)
    552      This command uses a forge’s API to fetch a single pull-request and
    553      stores it in the database.
    554 
    555      Normally you wouldn’t want to pull a single pull-request by itself,
    556      but due to a bug in the Github API you might sometimes have to do
    557      so.
    558 
    559      Fetching is implemented under the assumption that the API can be
    560      asked to list the things that have changed since we last checked.
    561      Unfortunately the APIs are not bug-free, so this is not always the
    562      case.  If in doubt, then re-fetch an individual topic to ensure it
    563      is up-to-date using the command ‘forge-pull-topic’.
    564 
    565 
    566 File: forge.info,  Node: Branching,  Next: Working with Topics,  Prev: Pulling,  Up: Usage
    567 
    568 4.2 Branching
    569 =============
    570 
    571 Forge provides commands for creating and checking out a new branch or
    572 work tree from a pull-request.  These commands are available from the
    573 same transient prefix commands as the suffix commands used to create and
    574 check out branches and work trees in a more generic fashion
    575 (‘magit-branch’ on ‘b’ and ‘magit-worktree’ on ‘%’).
    576 
    577 ‘b N’ (‘forge-branch-pullreq’)
    578      This command creates and configures a new branch from a
    579      pull-request, creating and configuring a new remote if necessary.
    580 
    581      The name of the local branch is the same as the name of the remote
    582      branch that you are being asked to merge, unless the contributor
    583      could not be bothered to properly name the branch before opening
    584      the pull-request.  The most likely such case is when you are being
    585      asked to merge something like "fork/master" into "origin/master".
    586      In such cases the local branch will be named "pr-N", where ‘N’ is
    587      the pull-request number.
    588 
    589      These variables are always set by this command:
    590 
    591         • ‘branch.<name>.pullRequest’ is set to the pull-request number.
    592         • ‘branch.<name>.pullRequestRemote’ is set to the remote on
    593           which the pull-request branch is located.
    594         • ‘branch.<name>.pushRemote’ is set to the same remote as
    595           ‘branch.<name>.pullRequestRemote’ if that is possible,
    596           otherwise it is set to the upstream remote.
    597         • ‘branch.<name>.description’ is set to the pull-request title.
    598         • ‘branch.<name>.rebase’ is set to ‘true’ because there should
    599           be no merge commits among the commits in a pull-request.
    600 
    601      This command also configures the upstream and the push-remote of
    602      the local branch that it creates.
    603 
    604      The branch against which the pull-request was opened is always used
    605      as the upstream.  This makes it easy to see what commits you are
    606      being asked to merge in the section titled something like "Unmerged
    607      into origin/master".
    608 
    609      Like for other commands that create a branch, it depends on the
    610      option ‘magit-branch-prefer-remote-upstream’ whether the remote
    611      branch itself or the respective local branch is used as the
    612      upstream, so this section may also be titled e.g.  "Unmerged into
    613      master".
    614 
    615      When necessary and possible, the remote pull-request branch is
    616      configured to be used as the push-target.  This makes it easy to
    617      see what further changes the contributor has made since you last
    618      reviewed their changes in the section titled something like
    619      "Unpulled from origin/new-feature" or "Unpulled from
    620      fork/new-feature".
    621 
    622         • If the pull-request branch is located in the upstream
    623           repository, then you probably have set ‘remote.pushDefault’ to
    624           that repository.  However some users like to set that variable
    625           to their personal fork, even if they have push access to the
    626           upstream, so ‘branch.<name>.pushRemote’ is set anyway.
    627 
    628         • If the pull-request branch is located inside a fork, then you
    629           are usually able to push to that branch, because Github by
    630           default allows the recipient of a pull-request to push to the
    631           remote pull-request branch even if it is located in a fork.
    632           The contributor has to explicitly disable this.
    633 
    634              • If you are not allowed to push to the pull-request branch
    635                on the fork, then a branch by the same name located in
    636                the upstream repository is configured as the push-target.
    637 
    638              • A—sadly rather common—special case is when the
    639                contributor didn’t bother to use a dedicated branch for
    640                the pull-request.
    641 
    642                The most likely such case is when you are being asked to
    643                merge something like "fork/master" into "origin/master".
    644                The special push permission mentioned above is never
    645                granted for the branch that is the repository’s default
    646                branch, and that would almost certainly be the case in
    647                this scenario.
    648 
    649                To enable you to easily push somewhere anyway, the local
    650                branch is named "pr-N" (where ‘N’ is the pull-request
    651                number) and the upstream repository is used as the
    652                push-remote.
    653 
    654              • Finally, if you are allowed to push to the pull-request
    655                branch and the contributor had the foresight to use a
    656                dedicated branch, then the fork is configured as the
    657                push-remote.
    658 
    659           The push-remote is configured using
    660           ‘branch.<name>.pushRemote’, even if the used value is
    661           identical to that of ‘remote.pushDefault’, just in case you
    662           change the value of the latter later on.  Additionally the
    663           variable ‘branch.<name>.pullRequestRemote’ is set to the
    664           remote on which the pull-request branch is located.
    665 
    666 ‘b n’ (‘forge-checkout-pullreq’)
    667      This command creates and configures a new branch from a
    668      pull-request the same way ‘forge-branch-pullreq’ does.
    669      Additionally it checks out the new branch.
    670 
    671 ‘Z n’ (‘forge-checkout-worktree’)
    672      This command creates and configures a new branch from a
    673      pull-request the same way ‘forge-branch-pullreq’ does.
    674      Additionally it checks out the new branch using a new working tree.
    675 
    676 User Options: forge-checkout-worktree-read-directory-function
    677      This function is used by ‘forge-checkout-worktree’ to read read the
    678      new worktree directory where it checks out to pull-request.  It
    679      takes the pull-request as the only argument and must return a
    680      directory.
    681 
    682    When you delete a pull-request branch, which was created using one of
    683 the above three commands, then ‘magit-branch-delete’ usually offers to
    684 also delete the corresponding remote.  It does not offer to delete a
    685 remote if (1) the remote is the upstream remote, and/or (2) if other
    686 branches are being fetched from the remote.
    687 
    688    Note that you have to delete the local branch (e.g.  "feature") for
    689 this to work.  If you delete the tracking branch (e.g "fork/feature"),
    690 then the remote is never removed.
    691 
    692 
    693 File: forge.info,  Node: Working with Topics,  Next: Miscellaneous,  Prev: Branching,  Up: Usage
    694 
    695 4.3 Working with Topics
    696 =======================
    697 
    698 We call both issues and pull-requests "topics".  The contributions to
    699 the conversation are called "posts".
    700 
    701 * Menu:
    702 
    703 * Visiting Topics::
    704 * Listing Topics and Notifications::
    705 * Creating Topics::
    706 * Editing Topics and Posts::
    707 
    708 
    709 File: forge.info,  Node: Visiting Topics,  Next: Listing Topics and Notifications,  Up: Working with Topics
    710 
    711 4.3.1 Visiting Topics
    712 ---------------------
    713 
    714 Magit’s status buffer contains lists of issues and pull-requests.
    715 Topics are ordered by last modification time.  All open issues and some
    716 recently edited and closed topics are listed.
    717 
    718    Forge provides some commands that act on the listed topics.  These
    719 commands can also be used in other contexts, such as when point is on a
    720 commit or branch section.
    721 
    722 ‘C-c C-w’ (‘forge-browse-TYPE’)
    723 ‘C-c C-w’ (‘forge-browse-dwim’)
    724 ‘N b I’ (‘forge-browse-issues’)
    725 ‘N b P’ (‘forge-browse-pullreqs’)
    726 ‘N b t’ (‘forge-browse-topic’)
    727 ‘N b i’ (‘forge-browse-issue’)
    728 ‘N b p’ (‘forge-browse-pullreq’)
    729      These commands visit the topic, issue(s), pull-request(s), post,
    730      branch, commit, or remote at point in a browser.
    731 
    732      This is implemented using various commands named
    733      ‘forge-browse-TYPE’, and the key binding is defined by remapping
    734      ‘magit-browse-thing’ (as defined in ‘magit-mode-map)’.  For commit
    735      sections this key is bound to ‘forge-browse-dwim’, which prefers a
    736      topic over a branch and a branch over a commit.
    737 
    738 ‘<RET>’ (‘forge-visit-TYPE’)
    739 ‘C-c C-v’ (‘forge-visit-topic’)
    740 ‘N v t’ (‘forge-visit-topic’)
    741 ‘N v i’ (‘forge-visit-issue’)
    742 ‘N v p’ (‘forge-visit-pullreq’)
    743      These commands visit the pull-request(s), issue(s), or repository
    744      in a separate buffer.
    745 
    746      The ‘RET’ binding is only available when point is on a issue or
    747      pull-request section because that key is already bound to something
    748      else for most of Magit’s own sections.  ‘C-c C-v’ however is also
    749      available on regular commit (e.g.  in a log) and branch sections.
    750 
    751      This is implemented using various commands named ‘forge-visit-TYPE’
    752      and the key binding is defined by remapping ‘magit-visit-thing’ (as
    753      defined in ‘magit-mode-map’).
    754 
    755 
    756 File: forge.info,  Node: Listing Topics and Notifications,  Next: Creating Topics,  Prev: Visiting Topics,  Up: Working with Topics
    757 
    758 4.3.2 Listing Topics and Notifications
    759 --------------------------------------
    760 
    761 By default Forge lists a subset of topics directly in the Magit status
    762 buffer.  It also provides commands to list topics and notifications in
    763 separate buffers.
    764 
    765    Forge adds the following two functions to
    766 ‘magit-status-sections-hook’:
    767 
    768  -- Function: forge-insert-pullreqs
    769      This function inserts a list of the most recent and/or open
    770      pull-requests.
    771 
    772  -- Function: forge-insert-issues
    773      This function inserts a list of the most recent and/or open issues.
    774 
    775  -- User Option: forge-topic-list-limit
    776      This option limits the number of topics listed by the above
    777      functions.
    778 
    779      All unread topics are always shown.  If the value of this option
    780      has the form ‘(OPEN . CLOSED)’, then the integer ‘OPEN’ specifies
    781      the maximal number of topics and ‘CLOSED’ specifies the maximal
    782      number of closed topics.  IF ‘CLOSED’ is negative then show no
    783      closed topics until the command ‘forge-toggle-closed-visibility’
    784      changes the sign.
    785 
    786  -- Command: forge-toggle-closed-visibility
    787      This command toggles whether the above two functions list recently
    788      closed issues in the current buffer.
    789 
    790    The following three functions are also suitable for
    791 ‘magit-status-sections-hook’:
    792 
    793  -- Function: forge-insert-assigned-pullreqs
    794      This function inserts a list of open pull-requests that are
    795      assigned to you.
    796 
    797  -- Function: forge-insert-requested-reviews
    798      This function inserts a list of open pull-requests that are
    799      awaiting your review.
    800 
    801  -- Function: forge-insert-authored-pullreqs
    802      This function inserts a list of open pull-requests that are
    803      authored by you.
    804 
    805  -- Function: forge-insert-assigned-issues
    806      This function inserts a list of open issues that are assigned to
    807      you.
    808 
    809  -- Function: forge-insert-authored-issues
    810      This function inserts a list of open issues that are authored by
    811      you.
    812 
    813    The following commands list repositories, notifications and topics in
    814 dedicated buffers:
    815 
    816 ‘N l r’ (‘forge-list-repositories’)
    817      This command lists all known repositories in a separate buffer.
    818 
    819 ‘N l n’ (‘forge-list-notifications’)
    820      This command lists all notifications for all forges in a separate
    821      buffer.
    822 
    823 ‘N l p’ (‘forge-list-pullreqs’)
    824      This command lists the current repository’s pull-requests in a
    825      separate buffer.
    826 
    827 ‘N l i’ (‘forge-list-issues’)
    828      This command lists the current repository’s issues in a separate
    829      buffer.
    830 
    831  -- Command: forge-list-labeled-pullreqs
    832      This command lists the current repository’s open pull-requests that
    833      are labeled with a label read from the user.
    834 
    835  -- Command: forge-list-labeled-issues
    836      This command lists the current repository’s open issues that are
    837      labeled with a label read from the user.
    838 
    839  -- Command: forge-list-assigned-pullreqs
    840      This command lists the current repository’s open pull-requests that
    841      are assigned to you in a separate buffer.
    842 
    843  -- Command: forge-list-assigned-issues
    844      This command lists the current repository’s open issues that are
    845      assigned to you in a separate buffer.
    846 
    847  -- Command: forge-list-requested-reviews
    848      This command lists pull-requests of the current repository that are
    849      awaiting your review in a separate buffer.
    850 
    851  -- Command: forge-list-authored-pullreqs
    852      This command lists the current repository’s open pull-requests that
    853      are authored by you in a separate buffer.
    854 
    855  -- Command: forge-list-authored-issues
    856      This command lists the current repository’s open issues that are
    857      authored by you in a separate buffer.
    858 
    859  -- Command: forge-list-owned-pullreqs
    860      This command lists open pull-requests from all the repositories
    861      that you own.  Options ‘forge-owned-accounts’ and
    862      ‘forge-owned-ignored’ controls which repositories are considered to
    863      be owned by you.  Only Github is supported for now.
    864 
    865  -- Command: forge-list-owned-issues
    866      This command lists open issues from all the repositories that you
    867      own.  Options ‘forge-owned-accounts’ and ‘forge-owned-ignored’
    868      controls which repositories are considered to be owned by you.
    869      Only Github is supported for now.
    870 
    871  -- User Option: forge-owned-accounts
    872      This is an alist of accounts that are owned by you.  This should
    873      include your username as well as any organization that you own.
    874      Used by the commands ‘forge-list-owned-issues’,
    875      ‘forge-list-owned-pullreqs’ and ‘forge-fork’.
    876 
    877      Each element has the form ‘(ACCOUNT . PLIST)’.  The following
    878      properties are currently being used:
    879 
    880         • ‘remote-name’ The default name suggested by ‘forge-fork’ for a
    881           fork created within this account.  If unspecified, then the
    882           name of the account is used.
    883 
    884      Example: ‘(("tarsius") ("emacsmirror" :remote-name "mirror"))’.
    885 
    886  -- User Option: forge-owned-ignored
    887      This is a list of repository names that are considered to not be
    888      owned by you even though they would have been considered to be
    889      owned by you based on ‘forge-owned-accounts’.
    890 
    891 
    892 File: forge.info,  Node: Creating Topics,  Next: Editing Topics and Posts,  Prev: Listing Topics and Notifications,  Up: Working with Topics
    893 
    894 4.3.3 Creating Topics
    895 ---------------------
    896 
    897 ‘N c p’ (‘forge-create-pullreq’)
    898 ‘C-c C-n [on "Pull requests" section]’
    899      This command creates a new pull-request for the current repository.
    900 
    901 ‘N c i’ (‘forge-create-issue’)
    902 ‘C-c C-n [on "Issues" section]’
    903      This command creates a new issue for the current repository.
    904 
    905 
    906 File: forge.info,  Node: Editing Topics and Posts,  Prev: Creating Topics,  Up: Working with Topics
    907 
    908 4.3.4 Editing Topics and Posts
    909 ------------------------------
    910 
    911 We call both issues and pull-requests "topics".  The contributions to
    912 the conversation are called "posts".  The post that initiated the
    913 conversation is also called a post.
    914 
    915    These commands are available only from the topic buffer (i.e.  from
    916 the buffer that shows the posts on a topic).  Other commands that also
    917 work in other buffers are available here also.  For example ‘C-c C-w’ on
    918 a post visits that post in a browser.
    919 
    920 ‘C-c C-n’ (‘forge-create-post’)
    921 ‘C-c C-r’
    922      This command allows users to create a new post on an existing
    923      topic.  It opens a buffer in which the user can write the post.
    924      When the post is done, then the user has to submit using ‘C-c C-c’.
    925 
    926      If the region is active and marks part of an existing post, then
    927      that part of the post is quoted.  Otherwise, or if a prefix
    928      argument is used, then the complete post that point is currently on
    929      is quoted.
    930 
    931 ‘C-c C-e [on a post section]’ (‘forge-edit-post’)
    932      This command visits an existing post in a separate buffer.  When
    933      the changes to the post are done, then the user has to submit using
    934      ‘C-c C-c’.
    935 
    936 ‘C-c C-e [on "Title" section]’ (‘forge-edit-topic-title’)
    937      This command reads a new title for an existing topic in the
    938      minibuffer.
    939 
    940 ‘C-c C-e [on "State" section]’ (‘forge-edit-topic-state’)
    941      This command toggles the state of an existing topic between "open"
    942      and "closed".
    943 
    944 ‘C-c C-e [on "Labels" section]’ (‘forge-edit-topic-labels’)
    945      This command reads a list of labels for an existing topic in the
    946      minibuffer.
    947 
    948 ‘C-c C-e [on "Marks" section]’ (‘forge-edit-topic-marks’)
    949      This command reads a list of marks for an existing topic in the
    950      minibuffer.
    951 
    952      Marks are like labels except that they are not shared with anyone
    953      else.  To create a mark that topics can subsequently be marked with
    954      use the command ‘forge-create-mark’.  Existing marks can be edited
    955      using the command ‘forge-edit-mark’.
    956 
    957 ‘C-c C-e [on "Assignees" section]’ (‘forge-edit-topic-assignees’)
    958      This command reads a list of assignees for an existing topic in the
    959      minibuffer.
    960 
    961 ‘C-c C-e [on "Review-Requests" section]’ (‘forge-edit-topic-review-requests’)
    962      This command reads a list of people who you would like to review an
    963      existing topic in the minibuffer.
    964 
    965 ‘C-c C-e [on "Note" section]’
    966 ‘M-x forge-edit-topic-note’
    967      This lets you edit your private note about a topic.
    968 
    969 ‘C-c C-k [on a comment section]’ (‘forge-delete-comment’)
    970      This command deletes the comment at point.
    971 
    972 ‘m M [if enabled]’ (‘forge-merge’)
    973 ‘N M [if enabled]’
    974      This command merges the current pull-request using the forge’s API.
    975      If there is no current pull-request or with a prefix argument, then
    976      it reads a pull-request to visit instead.
    977 
    978      The "merge method" to be used is read from the user.
    979 
    980      Use of this command is discouraged.  Unless the remote repository
    981      is configured to disallow that, you should instead merge locally
    982      and then push the target branch.  Forges detect that you have done
    983      that and respond by automatically marking the pull-request as
    984      merged.
    985 
    986    Creating a new post and editing an existing post are similar to
    987 creating a new commit and editing the message of an existing commit.  In
    988 both cases the message has to be written in a separate buffer and then
    989 the process has to be finished or canceled using a separate command.
    990 
    991    The following commands are available in buffers used to edit posts:
    992 
    993 ‘C-c C-c’ (‘forge-post-submit’)
    994      This command submits the post that is being edited in the current
    995      buffer.
    996 
    997 ‘C-c C-k’ (‘forge-post-cancel’)
    998      This command cancels the post that is being edited in the current
    999      buffer.
   1000 
   1001 
   1002 File: forge.info,  Node: Miscellaneous,  Prev: Working with Topics,  Up: Usage
   1003 
   1004 4.4 Miscellaneous
   1005 =================
   1006 
   1007 ‘N c f’ (‘forge-fork’)
   1008      This command adds an additional remote to the current repository.
   1009      The remote can either point at an existing repository or one that
   1010      has to be created first by forking it to an account the user has
   1011      access to.
   1012 
   1013      Currently this only supports Github and Gitlab.
   1014 
   1015 ‘N a’ (‘forge-add-repository’)
   1016      This command reads a repository from the user and adds it to the
   1017      database.  The repository can be provided as a URL, a name, or in
   1018      the form OWNER/NAME.  This is subject to ‘magit-clone-name-alist’.
   1019 
   1020      This command offers to either pull topics (now and in the future)
   1021      or to only pull individual topics when the user invokes
   1022      ‘forge-pull-topic’.
   1023 
   1024 ‘N t t’ (‘forge-toggle-display-in-status-buffer’)
   1025      This command toggles whether any topics are displayed in the
   1026      current Magit status buffer.
   1027 
   1028 ‘N t c’ (‘forge-toggle-closed-visibility’)
   1029      This command toggles whether closed topics are shown in the Magit
   1030      status buffer.
   1031 
   1032  -- Command: forge-add-user-repositories
   1033      This command reads a host and a username from the user and adds all
   1034      of that user’s repositories on that host to the local database.
   1035 
   1036      This may take a while.  Only Github is supported at the moment.
   1037 
   1038  -- Command: forge-add-organization-repositories
   1039      This command reads a host and an organization from the user and
   1040      adds all the organization’s repositories on that host to the local
   1041      database.
   1042 
   1043      This may take a while.  Only Github is supported at the moment.
   1044 
   1045  -- Command: forge-remove-repository
   1046      This command reads a repository and removes it from the local
   1047      database.
   1048 
   1049  -- Command: forge-remove-topic-locally
   1050      This command reads a topic and removes it from the local database.
   1051      The topic is not removed from the forge and, if it is later
   1052      modified, then it will be added to the database again.
   1053 
   1054      Due to how the supported APIs work, it would be too expensive to
   1055      automatically remove topics from the local datbase that were
   1056      removed from the forge.  The only purpose of this command is to
   1057      allow you to manually clean up the local database.
   1058 
   1059  -- Command: forge-reset-database
   1060      This command moves the current database file to the trash and
   1061      creates a new empty database.
   1062 
   1063      This is useful after the database’s table schemata have changed,
   1064      which will happen a few times while the Forge functionality is
   1065      still under heavy development.
   1066 
   1067 
   1068 File: forge.info,  Node: Other Options,  Next: FAQ,  Prev: Usage,  Up: Top
   1069 
   1070 5 Other Options
   1071 ***************
   1072 
   1073  -- User Option: forge-database-connector
   1074      This option controls which database connector is used by Forge.
   1075 
   1076      This must be set before ‘forge’ is loaded.  To use an alternative
   1077      connector you must install the respective package explicitly.
   1078 
   1079         • When ‘sqlite’, then use the ‘emacsql-sqlite’ library that is
   1080           being maintained in the same repository as ‘emacsql’ itself.
   1081 
   1082         • When ‘libsqlite3’, then use the ‘emacsql-libsqlite’ library,
   1083           which itself uses a module provided by the ‘sqlite3’ package.
   1084           This is still experimental.
   1085 
   1086         • When ‘sqlite3’, then use the ‘emacsql-sqlite3’ library, which
   1087           uses the official ‘sqlite3’ command-line tool, which I do not
   1088           recommended because it is not suitable to be used like this,
   1089           but has the advantage that you likely don’t need a compiler.
   1090           See <https://nullprogram.com/blog/2014/02/06/>.
   1091 
   1092 
   1093 File: forge.info,  Node: FAQ,  Next: Keystroke Index,  Prev: Other Options,  Up: Top
   1094 
   1095 Appendix A FAQ
   1096 **************
   1097 
   1098 * Menu:
   1099 
   1100 * Is it possible to create a single pull-request without pulling everything?::
   1101 * ‘error in process filter HTTP Error 502, "Bad gateway"’: error in process filter HTTP Error 502 "Bad gateway".
   1102 
   1103 
   1104 File: forge.info,  Node: Is it possible to create a single pull-request without pulling everything?,  Next: error in process filter HTTP Error 502 "Bad gateway",  Up: FAQ
   1105 
   1106 A.1 Is it possible to create a single pull-request without pulling everything?
   1107 ==============================================================================
   1108 
   1109 Yes.  ‘M-x forge-add-repository’ offers to add a repository to the
   1110 database without also fetching all pull-requests and issues.
   1111 
   1112 
   1113 File: forge.info,  Node: error in process filter HTTP Error 502 "Bad gateway",  Prev: Is it possible to create a single pull-request without pulling everything?,  Up: FAQ
   1114 
   1115 A.2 ‘error in process filter: HTTP Error: 502, "Bad gateway"’
   1116 =============================================================
   1117 
   1118 This is a frequently occuring error.  Adding some formatting the full
   1119 error is:
   1120 
   1121      error in process filter: ghub--signal-error: HTTP Error: 502,
   1122        "Bad gateway", "/graphql",
   1123        ((data . "null")
   1124         (errors ((message . "Something went wrong while executing your query.
   1125            This may be the result of a timeout, or it could be a GitHub bug.
   1126            Please include `CC2C:4FEA:A1771C1:CBF40CE:5C33F7E5`
   1127            when reporting this issue."))))
   1128 
   1129    This indicates that something went wrong within Github’s network.
   1130 See
   1131 <https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_server_errors>.
   1132 The appended error message also says as much: "This may be the result of
   1133 a timeout, or it could be a GitHub bug."
   1134 
   1135    It appears that this happens more often in big repositories,
   1136 especially during the initial pull, but this may be an illusion; it is
   1137 known to also happens for smaller, incremental requests.
   1138 
   1139    I believe that more data just means more requests and thus more
   1140 opportunities for things to go wrong.  It seems unlikely that this is
   1141 due to us requesting too much data at once (in that case we would get a
   1142 different error from GraphQL, not HTTP). When fetching lots of data,
   1143 then we do not request one large response but make many requests and we
   1144 then collect the many responses (pagination forces us to do that).
   1145 
   1146    The timeout may be due to many requests from other people arriving at
   1147 some Github-internal bottleneck at the same time, or it may be due to
   1148 cold caches and overly aggressive timeouts.  We just don’t know; it’s
   1149 their infrastructure.
   1150 
   1151    The second problem is that we currently simply error out if we get
   1152 this error.  This could be changed and eventually it will be, but for
   1153 the time being your only option is to just try again, possibly
   1154 repeatedly and possibly after a delay to give whatever congestion may
   1155 exist on the other end a chance to clear or to give their caches a
   1156 chance to warm up.
   1157 
   1158    This was also discussed in <https://github.com/magit/forge/issues/20>
   1159 and <https://github.com/magit/ghub/issues/83>.
   1160 
   1161 
   1162 File: forge.info,  Node: Keystroke Index,  Next: Function and Command Index,  Prev: FAQ,  Up: Top
   1163 
   1164 Appendix B Keystroke Index
   1165 **************************
   1166 
   1167 
   1168 * Menu:
   1169 
   1170 * b N:                                   Branching.           (line  13)
   1171 * b n:                                   Branching.           (line 102)
   1172 * C-c C-c:                               Editing Topics and Posts.
   1173                                                               (line  89)
   1174 * C-c C-e [on "Assignees" section]:      Editing Topics and Posts.
   1175                                                               (line  53)
   1176 * C-c C-e [on "Labels" section]:         Editing Topics and Posts.
   1177                                                               (line  40)
   1178 * C-c C-e [on "Marks" section]:          Editing Topics and Posts.
   1179                                                               (line  44)
   1180 * C-c C-e [on "Note" section]:           Editing Topics and Posts.
   1181                                                               (line  62)
   1182 * C-c C-e [on "Review-Requests" section]: Editing Topics and Posts.
   1183                                                               (line  57)
   1184 * C-c C-e [on "State" section]:          Editing Topics and Posts.
   1185                                                               (line  36)
   1186 * C-c C-e [on "Title" section]:          Editing Topics and Posts.
   1187                                                               (line  32)
   1188 * C-c C-e [on a post section]:           Editing Topics and Posts.
   1189                                                               (line  27)
   1190 * C-c C-k:                               Editing Topics and Posts.
   1191                                                               (line  93)
   1192 * C-c C-k [on a comment section]:        Editing Topics and Posts.
   1193                                                               (line  65)
   1194 * C-c C-n:                               Editing Topics and Posts.
   1195                                                               (line  17)
   1196 * C-c C-n [on "Issues" section]:         Creating Topics.     (line  12)
   1197 * C-c C-n [on "Pull requests" section]:  Creating Topics.     (line   8)
   1198 * C-c C-r:                               Editing Topics and Posts.
   1199                                                               (line  17)
   1200 * C-c C-v:                               Visiting Topics.     (line  35)
   1201 * C-c C-w:                               Visiting Topics.     (line  21)
   1202 * C-c C-w <1>:                           Visiting Topics.     (line  21)
   1203 * f n:                                   Pulling.             (line  13)
   1204 * f N:                                   Pulling.             (line  25)
   1205 * m M [if enabled]:                      Editing Topics and Posts.
   1206                                                               (line  69)
   1207 * N:                                     Usage.               (line  23)
   1208 * N a:                                   Usage.               (line  13)
   1209 * N a <1>:                               Miscellaneous.       (line  15)
   1210 * N b I:                                 Visiting Topics.     (line  21)
   1211 * N b i:                                 Visiting Topics.     (line  21)
   1212 * N b P:                                 Visiting Topics.     (line  21)
   1213 * N b p:                                 Visiting Topics.     (line  21)
   1214 * N b t:                                 Visiting Topics.     (line  21)
   1215 * N c f:                                 Miscellaneous.       (line   7)
   1216 * N c i:                                 Creating Topics.     (line  12)
   1217 * N c p:                                 Creating Topics.     (line   8)
   1218 * N f f:                                 Pulling.             (line  13)
   1219 * N f n:                                 Pulling.             (line  25)
   1220 * N f t:                                 Pulling.             (line  47)
   1221 * N l i:                                 Listing Topics and Notifications.
   1222                                                               (line  73)
   1223 * N l n:                                 Listing Topics and Notifications.
   1224                                                               (line  65)
   1225 * N l p:                                 Listing Topics and Notifications.
   1226                                                               (line  69)
   1227 * N l r:                                 Listing Topics and Notifications.
   1228                                                               (line  62)
   1229 * N M [if enabled]:                      Editing Topics and Posts.
   1230                                                               (line  69)
   1231 * N r:                                   Repository Detection.
   1232                                                               (line  28)
   1233 * N t c:                                 Miscellaneous.       (line  28)
   1234 * N t t:                                 Miscellaneous.       (line  24)
   1235 * N v i:                                 Visiting Topics.     (line  35)
   1236 * N v p:                                 Visiting Topics.     (line  35)
   1237 * N v t:                                 Visiting Topics.     (line  35)
   1238 * RET:                                   Visiting Topics.     (line  35)
   1239 * Z n:                                   Branching.           (line 107)
   1240 
   1241 
   1242 File: forge.info,  Node: Function and Command Index,  Next: Variable Index,  Prev: Keystroke Index,  Up: Top
   1243 
   1244 Appendix C Function and Command Index
   1245 *************************************
   1246 
   1247 
   1248 * Menu:
   1249 
   1250 * forge-add-organization-repositories:   Miscellaneous.       (line  37)
   1251 * forge-add-repository:                  Usage.               (line  13)
   1252 * forge-add-repository <1>:              Miscellaneous.       (line  15)
   1253 * forge-add-user-repositories:           Miscellaneous.       (line  31)
   1254 * forge-branch-pullreq:                  Branching.           (line  13)
   1255 * forge-browse-dwim:                     Visiting Topics.     (line  21)
   1256 * forge-browse-issue:                    Visiting Topics.     (line  21)
   1257 * forge-browse-issues:                   Visiting Topics.     (line  21)
   1258 * forge-browse-pullreq:                  Visiting Topics.     (line  21)
   1259 * forge-browse-pullreqs:                 Visiting Topics.     (line  21)
   1260 * forge-browse-topic:                    Visiting Topics.     (line  21)
   1261 * forge-browse-TYPE:                     Visiting Topics.     (line  21)
   1262 * forge-checkout-pullreq:                Branching.           (line 102)
   1263 * forge-checkout-worktree:               Branching.           (line 107)
   1264 * forge-create-issue:                    Creating Topics.     (line  12)
   1265 * forge-create-post:                     Editing Topics and Posts.
   1266                                                               (line  17)
   1267 * forge-create-pullreq:                  Creating Topics.     (line   8)
   1268 * forge-delete-comment:                  Editing Topics and Posts.
   1269                                                               (line  65)
   1270 * forge-dispatch:                        Usage.               (line  23)
   1271 * forge-edit-post:                       Editing Topics and Posts.
   1272                                                               (line  27)
   1273 * forge-edit-topic-assignees:            Editing Topics and Posts.
   1274                                                               (line  53)
   1275 * forge-edit-topic-labels:               Editing Topics and Posts.
   1276                                                               (line  40)
   1277 * forge-edit-topic-marks:                Editing Topics and Posts.
   1278                                                               (line  44)
   1279 * forge-edit-topic-note:                 Editing Topics and Posts.
   1280                                                               (line  62)
   1281 * forge-edit-topic-review-requests:      Editing Topics and Posts.
   1282                                                               (line  57)
   1283 * forge-edit-topic-state:                Editing Topics and Posts.
   1284                                                               (line  36)
   1285 * forge-edit-topic-title:                Editing Topics and Posts.
   1286                                                               (line  32)
   1287 * forge-forge.remote:                    Repository Detection.
   1288                                                               (line  28)
   1289 * forge-fork:                            Miscellaneous.       (line   7)
   1290 * forge-insert-assigned-issues:          Listing Topics and Notifications.
   1291                                                               (line  50)
   1292 * forge-insert-assigned-pullreqs:        Listing Topics and Notifications.
   1293                                                               (line  38)
   1294 * forge-insert-authored-issues:          Listing Topics and Notifications.
   1295                                                               (line  54)
   1296 * forge-insert-authored-pullreqs:        Listing Topics and Notifications.
   1297                                                               (line  46)
   1298 * forge-insert-issues:                   Listing Topics and Notifications.
   1299                                                               (line  17)
   1300 * forge-insert-pullreqs:                 Listing Topics and Notifications.
   1301                                                               (line  13)
   1302 * forge-insert-requested-reviews:        Listing Topics and Notifications.
   1303                                                               (line  42)
   1304 * forge-list-assigned-issues:            Listing Topics and Notifications.
   1305                                                               (line  88)
   1306 * forge-list-assigned-pullreqs:          Listing Topics and Notifications.
   1307                                                               (line  84)
   1308 * forge-list-authored-issues:            Listing Topics and Notifications.
   1309                                                               (line 100)
   1310 * forge-list-authored-pullreqs:          Listing Topics and Notifications.
   1311                                                               (line  96)
   1312 * forge-list-issues:                     Listing Topics and Notifications.
   1313                                                               (line  73)
   1314 * forge-list-labeled-issues:             Listing Topics and Notifications.
   1315                                                               (line  80)
   1316 * forge-list-labeled-pullreqs:           Listing Topics and Notifications.
   1317                                                               (line  76)
   1318 * forge-list-notifications:              Listing Topics and Notifications.
   1319                                                               (line  65)
   1320 * forge-list-owned-issues:               Listing Topics and Notifications.
   1321                                                               (line 110)
   1322 * forge-list-owned-pullreqs:             Listing Topics and Notifications.
   1323                                                               (line 104)
   1324 * forge-list-pullreqs:                   Listing Topics and Notifications.
   1325                                                               (line  69)
   1326 * forge-list-repositories:               Listing Topics and Notifications.
   1327                                                               (line  62)
   1328 * forge-list-requested-reviews:          Listing Topics and Notifications.
   1329                                                               (line  92)
   1330 * forge-merge:                           Editing Topics and Posts.
   1331                                                               (line  69)
   1332 * forge-post-cancel:                     Editing Topics and Posts.
   1333                                                               (line  93)
   1334 * forge-post-submit:                     Editing Topics and Posts.
   1335                                                               (line  89)
   1336 * forge-pull:                            Pulling.             (line  13)
   1337 * forge-pull-notifications:              Pulling.             (line  25)
   1338 * forge-pull-topic:                      Pulling.             (line  47)
   1339 * forge-remove-repository:               Miscellaneous.       (line  44)
   1340 * forge-remove-topic-locally:            Miscellaneous.       (line  48)
   1341 * forge-reset-database:                  Miscellaneous.       (line  58)
   1342 * forge-toggle-closed-visibility:        Listing Topics and Notifications.
   1343                                                               (line  31)
   1344 * forge-toggle-closed-visibility <1>:    Miscellaneous.       (line  28)
   1345 * forge-toggle-display-in-status-buffer: Miscellaneous.       (line  24)
   1346 * forge-visit-issue:                     Visiting Topics.     (line  35)
   1347 * forge-visit-pullreq:                   Visiting Topics.     (line  35)
   1348 * forge-visit-topic:                     Visiting Topics.     (line  35)
   1349 * forge-visit-TYPE:                      Visiting Topics.     (line  35)
   1350 
   1351 
   1352 File: forge.info,  Node: Variable Index,  Prev: Function and Command Index,  Up: Top
   1353 
   1354 Appendix D Variable Index
   1355 *************************
   1356 
   1357 
   1358 * Menu:
   1359 
   1360 * forge-database-connector:              Other Options.       (line   6)
   1361 * forge-owned-accounts:                  Listing Topics and Notifications.
   1362                                                               (line 116)
   1363 * forge-owned-ignored:                   Listing Topics and Notifications.
   1364                                                               (line 131)
   1365 * forge-topic-list-limit:                Listing Topics and Notifications.
   1366                                                               (line  20)
   1367 
   1368 
   1369 
   1370 Tag Table:
   1371 Node: Top751
   1372 Node: Introduction2428
   1373 Node: Supported Forges and Hosts2991
   1374 Node: Supported Forges4241
   1375 Ref: Github4397
   1376 Ref: Github Caveats4540
   1377 Ref: Github Hosts4894
   1378 Ref: Gitlab4950
   1379 Ref: Gitlab Caveats4965
   1380 Ref: Gitlab Hosts5090
   1381 Node: Partially Supported Forges5210
   1382 Ref: Gitea https//giteaio5416
   1383 Ref: Gitea Hosts5516
   1384 Ref: Gogs https//gogsio5572
   1385 Ref: Gogs Hosts5775
   1386 Ref: Bitbucket https//bitbucketorg5833
   1387 Ref: Bitbucket Caveats6031
   1388 Ref: Bitbucket Hosts6928
   1389 Node: Supported Semi-Forges6993
   1390 Ref: Gitweb https//git-scmcom/docs/gitweb7164
   1391 Ref: Gitweb Caveats7243
   1392 Ref: Cgit https//gitzx2c4com/cgit/about7483
   1393 Ref: Cgit Caveats7560
   1394 Ref: Cgit Hosts7909
   1395 Ref: Stgit https//codemadnessorg/git/stagit/file/READMEhtml8036
   1396 Ref: Stgit Caveats8153
   1397 Ref: Stgit Hosts8439
   1398 Ref: Srht https//metasrht8499
   1399 Ref: Srht Caveats8548
   1400 Ref: Srht Hosts8831
   1401 Node: Getting Started8882
   1402 Node: Token Creation9853
   1403 Node: Initial Pull11110
   1404 Node: Repository Detection12505
   1405 Node: Caveats14425
   1406 Node: Usage15351
   1407 Node: Pulling16833
   1408 Node: Branching19516
   1409 Node: Working with Topics25905
   1410 Node: Visiting Topics26278
   1411 Node: Listing Topics and Notifications28315
   1412 Node: Creating Topics33640
   1413 Node: Editing Topics and Posts34129
   1414 Node: Miscellaneous38145
   1415 Node: Other Options40767
   1416 Node: FAQ41847
   1417 Node: Is it possible to create a single pull-request without pulling everything?42172
   1418 Node: error in process filter HTTP Error 502 "Bad gateway"42638
   1419 Node: Keystroke Index45008
   1420 Node: Function and Command Index50205
   1421 Node: Variable Index57670
   1422 
   1423 End Tag Table
   1424 
   1425 
   1426 Local Variables:
   1427 coding: utf-8
   1428 End: