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: