#pull-request #git #git-diff #github #repository #command-line-tool #git-commit

bin+lib git-brws

Command line tool to open a repository, file, commit, diff, tag, pull request, issue or project's website in your web browser from command line

31 releases

0.11.12 Sep 18, 2020
0.11.10 Aug 5, 2020
0.11.9 Apr 27, 2020
0.11.7 Feb 8, 2020
0.4.1 Dec 28, 2016

#587 in Development tools

MIT license

135KB
3.5K SLoC

git brws

crates.io Github Actions CI Coverage

git brws is a command line tool to open a repository, file, commit, diff, tag, blame, pull request, issue or project's website in your web browser from command line. 'brws' is an abbreviation of 'browse'.

Features:

Installation

git brws is available on Linux, macOS and Windows.

With Homebrew

$ brew tap "rhysd/git-brws" "https://github.com/rhysd/git-brws"
$ brew install git-brws

It installs git-brws to /usr/local/bin and git-brws.1 to /usr/local/share/man/man1. This is recommended way for installation on macOS since updating to the new version is easy.

On Arch Linux

You can install git-brws via the AUR package:

git clone https://aur.archlinux.org/git-brws.git
cd git-brws
makepkg -si

Download from release page

Pre-built binary executables are available at release page for following targets:

  • Linux 64bit (x86_64-unknown-linux-gnu)
  • macOS 64bit (x86_64-apple-darwin)
  • Windows 64bit (x86_64-pc-windows-msvc)
  • Linux 32bit (i686-unknown-linux-gnu)
  • Windows 32bit (i686-pc-windows-msvc)

Download and unarchive the binary then put the executable in $PATH.

Manpage for man command is available. Please find git-brws.1 in the unarchived directory or download it from here and copy it to the man directory in your system (e.g. /usr/local/share/man/man1/).

Note: git brws --help only works when it is installed. git brws -h is always available.

With cargo

$ cargo install git-brws

It requires Rust toolchain to build git-brws from sources.

Usage

Usage: git brws [Options] {Args}

Options:
    -r, --repo REPO     Shorthand format (repo, user/repo, host/user/repo) or
                        Git URL you want to see. When only repo name is
                        specified, most popular repository will be searched
                        from GitHub
    -b, --branch BRANCH Branch name to browse
    -d, --dir PATH      Directory path to the repository. Default value is
                        current working directory
    -R, --remote REMOTE Remote name (e.g. origin). Default value is a remote
                        the current branch is tracking. If current branch
                        tracks no branch, it falls back to 'origin'
    -u, --url           Output URL to stdout instead of opening in browser
    -p, --pr            Open pull request page instead of repository page. If
                        not existing, open 'Create Pull Request' page
    -w, --website       Open website page instead of repository page (homepage
                        URL for GitHub, GitLab pages, Bitbucket Cloud)
    -B, --blame         Open blame page instead of repository page. File path
                        to blame must be passed also.
    -c, --current-branch
                        Open the current branch instead of default branch
    -h, --help          Print this help
    -v, --version       Show version

Open a repository page

  • Repository at current directory
$ git brws
  • develop branch
$ git brws -b develop
  • origin remote of develop branch
$ git brws -r origin -b develop
  • @rhysd's 'Shiba' repository
$ git brws -r rhysd/Shiba
  • Most popular react repository on GitHub
$ git brws -r react

It will open https://github.com/facebook/react.

Note: When only repository name is specified for -r option, git-brws searches GitHub with query {repo} in:name and opens the best-matched repository page.

  • Specify directory of repository
$ git brws -d ~/.go/src/github.com/rhysd/dot-github

Open a file page

  • File of current branch of current remote
$ git brws ./some/file.txt
  • Line of the file
$ git brws ./some/file.txt#L123

Note: The L can be omit.

  • Range from line to line of the file
$ git brws ./some/file.txt#L123-L126

Note: The L can be omit.

Open a commit page

  • HEAD page of current repository
$ git brws HEAD

Open a tag page

  • 0.10.0 tag page of current repository
$ git brws 0.10.0

Open a diff page between commits

  • Diff between HEAD and HEAD~3
$ git brws HEAD~3..HEAD
  • Diff between 113079b and 60024ab
$ git brws 60024ab..113079b

Open a diff page from specific commit and its merge base

In addition to .., diff with ... is supported.

  • Diff between branchB and the merge base commit from branchB into branchA
$ git brws branchA...branchB

If you don't know the difference between .. and ..., please read git diff --help.

Note: Only GitHub and GitHub Enterprise support .... For GitLab, only ... is available.

Open a pull request page

  • Pull request page of current branch of current repository
$ git brws --pr
  • Pull request page of specific branch of specific repository
# Specify my forked repository
$ git brws --pr --repo rhysd/rust.vim -b async-contextual-keyword

# Or specify original repository
$ git brws --pr --repo rust-lang/rust.vim -b async-contextual-keyword

Note: Currently only GitHub and GitHub Enterprise are supported.

Note: If you have created multiple pull requests at the same repository with the same branch name, the command may not open a pull request page you want.

Note: When a pull request page for current branch is not existing yet, it opens 'Create Pull Request' page instead.

Open a website for the repository

# Website for current repository
$ git brws --website

With --repo option, arbitrary repository's website can be opened.

# Opens https://reactjs.org
$ git brws --website --repo react

It opens a website for the repository.

  • For GitHub, URL for 'homepage' configuration of the repository if it's set. Otherwise https://{user}.github.io/{repo}
  • For GitHub Enterprise, https://pages.{host}/{user}/{repo} or https://{host}/pages/{user}/{repo} depending on your GitHub Enterprise configuration of subdomain isolation
  • For GitLab, GitLab Pages
  • For Bitbucket, Bitbucket Cloud

Open an issue page

  • Issue #8
$ git brws '#8'

Note: # is usually used for a line comment in major shells. Please quote the argument

Open a blame page

  • Specific file
$ git brws --blame some/file.txt
  • Specific line at file
$ git brws --blame some/file.txt#L5
  • Specific range at file
$ git brws --blame some/file.txt#L5-L9

Cooperate with other tools

With -u option, git brws outputs URL to stdout.

For example, in Vim, you can write your repository URL to your text instantly.

:r!git brws -u

And below can open editing file in your browser.

:!git brws %

Customization

Some environment variables are available to customize behavior of git-brws.

Variable Description
$GIT_BRWS_GIT_COMMAND Git command to use. If not specified, "git" will be used.
$GIT_BRWS_GHE_URL_HOST When you use your own GitHub Enterprise repository, you can specify its host to this variable. By default, git brws detects ^github\. as GHE host. If your GHE repository host does not match it, please specify this variable. If your repository is https://example-repo.org/user/repo, example-repo.org should be set.
$GIT_BRWS_GHE_SSH_PORT When you set a number to it, the number will be used for the ssh port for GitHub Enterprise URLs.
$GIT_BRWS_GITLAB_URL_HOST When you use self-hosted GitLab instance, you can specify its host to this variable. By default, git brws detects host matching to ^gitlab\. as GitLab. If your GitLab URL host does not match it, please specify this variable. If your repository is hosted at https://your-code.net/user/repo, your-code.net should be set.
$GIT_BRWS_GITLAB_SSH_PORT When you set a number to it, the number will be used for the ssh port for self-hosted GitLab URLs. This is useful when your environment hosts GitLab to non-trivial ssh port URL.
$GIT_BRWS_GITHUB_TOKEN This variable is used for --pr (or -p) only. API access token for github.com. They are optional, but useful for avoiding API rate limit and accessing to private repositories. Please generate a token from https://github.com/settings/tokens/new
$GITHUB_TOKEN Ditto. When GIT_BRWS_GITHUB_TOKEN is not set, GITHUB_TOKEN is looked.
$GIT_BRWS_GHE_TOKEN This variable is used for --pr (or -p) only. API access token for GitHub Enterprise instance. It is sometimes mandatory (depending on your GHE instance configuration). Please generate a token from https://{YOUR GHE HOST}/settings/tokens/new.
$GIT_BRWS_BROWSE_COMMAND Command to open URL. If this value is specified, the command is executed with URL as first argument to browse the URL.
$GIT_BRWS_SHORT_COMMIT_HASH Setting true will use 7-letters short commit hash like 78fbce6 for URLs.
$https_proxy This variable is used for --pr (or -p) only. An HTTPS Proxy server URL if you use a web proxy.

TODOs

Please see the project page.

Development

Please see CONTRIBUTING.md.

License

Distributed under the MIT license.

Dependencies

~7–11MB
~236K SLoC