Skip to content

Instantly share code, notes, and snippets.

@anderskig
Forked from aridastidar/Repo
Created May 18, 2018 07:25
Show Gist options
  • Save anderskig/ce49928757b3fe371af18d3695e23358 to your computer and use it in GitHub Desktop.
Save anderskig/ce49928757b3fe371af18d3695e23358 to your computer and use it in GitHub Desktop.
Open a project file on GitHub.
#!/bin/bash
#
# Open the specified file on GitHub. It will use the current branch by default:
#
# repo app/controllers/application_controller.rb
#
# Specify a different branch:
#
# repo -b another-branch app/controllers/application_controller.rb
if [ -d .git ]; then
echo "Opening on Github..."
# Set the default branch to current branch instead of 'master'
BRANCH=$(git rev-parse --abbrev-ref HEAD)
while getopts "b:" option
do
case "$option" in
b) BRANCH=$OPTARG;;
esac
done
shift $(($OPTIND-1))
FILE=$1
BASE=$(git config --get remote.origin.url | sed s/\\.git// | sed 's/:/\//' | sed 's/.*github.com/https:\/\/github.com/')
if [[ -z "$FILE" ]]; then
URL="$BASE/tree/$BRANCH"
else
RELATIVE_PATH=$(git ls-tree --full-name --name-only HEAD $FILE)
URL="$BASE/blob/$BRANCH/$RELATIVE_PATH"
fi
if which xdg-open > /dev/null
then
xdg-open $URL
elif which gnome-open > /dev/null
then
gnome-open $URL
elif which open > /dev/null
then
open $URL
fi
echo "Opened $URL"
else
echo "Not a git repo"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment