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 |
#649 in Development tools
135KB
3.5K
SLoC
git brws
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:
- Opens a page of
- Supports following services
- Prefers commit-specific page URL (permlink)
- Available on Linux, macOS and Windows
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 ofdevelop
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
andHEAD~3
$ git brws HEAD~3..HEAD
- Diff between
113079b
and60024ab
$ 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 frombranchB
intobranchA
$ 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}
orhttps://{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. |
Related Projects
TODOs
Please see the project page.
Development
Please see CONTRIBUTING.md.
License
Distributed under the MIT license.
Dependencies
~8–12MB
~235K SLoC