diff --git a/bin/git-browse b/bin/git-browse index 98f315bb..da75f5fc 100755 --- a/bin/git-browse +++ b/bin/git-browse @@ -28,12 +28,13 @@ fi # construct urls commit_hash=$(git rev-parse HEAD 2>/dev/null) commit_or_branch=${commit_hash:-${branch}} +full_filename=$(git ls-files --full-name "${filename}") if [[ $remote_url =~ gitlab ]]; then # construct gitlab urls # https://gitlab.com///-/blob//#L- if [[ -n ${filename} ]]; then - url="${url}/-/blob/${commit_or_branch}/${filename}" + url="${url}/-/blob/${commit_or_branch}/${full_filename}" if [[ -n "${line1}" ]]; then url="${url}#L${line1}" if [[ -n "${line2}" ]]; then @@ -45,7 +46,7 @@ elif [[ $remote_url =~ github ]]; then # construct github urls # https://github.com///blob//#L-L if [[ -n "${filename}" ]]; then - url="${url}/blob/${commit_or_branch}/${filename}" + url="${url}/blob/${commit_or_branch}/${full_filename}" if [[ -n "${line1}" ]]; then url="${url}#L${line1}" if [[ -n "${line2}" ]]; then @@ -57,7 +58,7 @@ elif [[ $remote_url =~ bitbucket ]]; then # construct bitbucket urls # https://bitbucket.org///src//#lines-: if [[ -n ${filename} ]]; then - url=${url}/src/${commit_or_branch}/${filename} + url=${url}/src/${commit_or_branch}/${full_filename} if [[ -n "${line1}" ]]; then url="${url}#lines-${line1}" if [[ -n "${line2}" ]]; then diff --git a/tests/git-browse.bats b/tests/git-browse.bats index 190ef004..954e4916 100644 --- a/tests/git-browse.bats +++ b/tests/git-browse.bats @@ -24,11 +24,11 @@ get_file_uri() { local commit_hash= commit_hash=$(git rev-parse HEAD) if [ "$mode" = 'github' ]; then - REPLY="https://github.com/tj/git-extras/blob/$commit_hash/${filename}" + REPLY="https://github.com/tj/git-extras/blob/$commit_hash/${filename#./}" elif [ "$mode" = 'gitlab' ]; then - REPLY="https://gitlab.com/tj/git-extras/-/blob/${commit_hash}/${filename}" + REPLY="https://gitlab.com/tj/git-extras/-/blob/${commit_hash}/${filename#./}" elif [ "$mode" = 'bitbucket' ]; then - REPLY="https://bitbucket.org/tj/git-extras/src/${commit_hash}/${filename}" + REPLY="https://bitbucket.org/tj/git-extras/src/${commit_hash}/${filename#./}" fi }