paulirish.git-open/git-open
Jens Aronsson 353390eb4b Updated bitbucket url.
Bitbucket repo url doesn't use "/tree" but "/branch" instead.
2015-02-02 23:49:42 +01:00

78 lines
1.3 KiB
Bash
Executable file

#!/bin/bash
# Opens the github page for a repo/branch in your browser.
# https://github.com/paulirish/git-open/
#
# git open
# git open [remote] [branch]
# are we in a git repo?
git rev-parse --is-inside-work-tree &>/dev/null
if [[ $? != 0 ]]
then
echo "Not a git repository."
exit 1
fi
# assume origin if not provided
# fallback to upstream if neither is present.
remote="origin"
if [ ! -z "$1" ]
then
remote="$1"
fi
remote_url="remote.${remote}.url"
giturl=$(git config --get $remote_url)
if [ -z "$giturl" ]
then
echo "$remote_url not set."
exit 1
fi
# URL normalization
# Github support
if grep -q github <<<$giturl; then
giturl=${giturl/git\@github\.com\:/https://github.com/}
providerUrlDifference=tree
# bitbucket support
elif grep -q bitbucket <<<$giturl; then
giturl=${giturl/git\@bitbucket\.org\:/https://bitbucket.org/}
providerUrlDifference=branch
fi
giturl=${giturl%\.git}
# get current branch
if [ -z "$2" ]
then
branch=`git symbolic-ref -q HEAD | sed -e 's|^refs/heads/||'`
else
branch="$2"
fi
if [ ! -z "$branch" ]
then
giturl="${giturl}/${providerUrlDifference}/${branch}"
fi
# simplify URL for master
giturl=${giturl/tree\/master/}
# get current open browser command
if [ $(uname -s) == "Darwin" ]
then
open=open
else
open=xdg-open
fi
# open it in a browser
$open $giturl
exit 0