Skip to content

Latest commit

 

History

History
145 lines (122 loc) · 6.85 KB

README.org

File metadata and controls

145 lines (122 loc) · 6.85 KB

GitHub layer

img/github.png

Table of Contents

Description

This layers adds support for GitHub.

Features:

  • magithub: Magit-integrated interface to hub command line
  • forge: integration with various forges, such as GitHub and GitLab.
  • gist.el: full-featured mode to browse and post GitHub gists.
  • git-link: quickly generate URLs for commits or files.
  • github-clone allows for easy cloning and forking of repositories.

Install

Layer

To use this configuration layer, add it to your ~/.spacemacs. You will need to add github to the existing dotspacemacs-configuration-layers list in this file.

Git configuration

You will need to generate a personal access token on GitHub. This token should have the gist and repo permissions. Once this token is created, it needs to be added to your ~/.gitconfig

You will also need to generate an SSH key and add it to your GitHub account.

git config --global github.oauth-token <token>

Hub configuration

For now, Magithub requires the hub utility to work – before trying to use Magithub, follow the installation instructions at hub.github.com. To force hub to authenticate, you can use hub browse in a terminal (inside a GitHub repo).

Magithub configuration

Spacemacs configures Magithub to be in offline mode by default and disables displaying the GitHub project status, issues, and pull requests because loading project data for repositories with many pull requests or issues can be exorbitantly slow (see issue #11176). To toggle online mode and the project status, issues, and pull requests sections for the current repository, open in the magit status buffer (SPC g s) and then open the Magithub settings popup (@ C). To enable online mode and the project status, pull requests, and issues sections by default, use the following shell commands:

git config --global --bool magithub.online true
git config --global --bool magithub.status.includeStatusHeader true
git config --global --bool magithub.status.includePullRequestsSection true
git config --global --bool magithub.status.includeIssuesSection true

Alternatively, use the following Emacs forms:

(magit-set "true" "--global" "magithub.online")
(magit-set "true" "--global" "magithub.status.includeStatusHeader")
(magit-set "true" "--global" "magithub.status.includePullRequestsSection")
(magit-set "true" "--global" "magithub.status.includeIssuesSection")

Key bindings

magithub

Key bindingDescription
@ Copen the Magithub settings popup
@ Hopens the current repository in the browser
@ cpushes a brand-new local repository up to GitHub
@ fcreate a fork of an existing repository
@ psubmit pull request upstream
@ icreate an issue

forge

In a magit-status buffer (SPC g s):

Key bindingDescription
b Ycreate branch from pull-request
b ycreate and check out branch from pull-request
F ffetch issues and pull-requests
F nfetch notifications
F pcreate pull-request
F icreate issue
F Flist notifications
F Plist pull-requests
F Ilist issues
p ypull pull-requests and issues for the current repository
p Ypull all notifications for the current repository’s forge

gist.el

Key bindingDescription
SPC g g bcreate a public gist with the buffer content
SPC g g Bcreate a private gist with the buffer content
SPC g g lopen the gist list buffer
SPC g g rcreate a public gist with the region content
SPC g g Rcreate a private gist with the region content

In the gist list buffer:

Key bindingDescription
/evil search
+add buffer to gist
-remove file for gist
b or oopen current gist in browser
ffetch current gist
grefresh the list
hgo left
jgo down
kgo up
Kkill current gist
lgo right
nnext search occurrence
Nnext previous occurrence
vvisual state
Vvisual-line state
yprint URL and copy it

Clone repositories

Key bindingDescription
SPC g h c /search for a repository to clone it
SPC g h c cclone and optionally fork repository
SPC g h c radd a remote that is an existing fork of selected remote
SPC g h c ffork remote in current user namespace
SPC g h c uadd upstream as remote