remote=$(git config "branch.${branch}.remote")
if [[ -n ${remote} ]] ; then
remote=$(git config "remote.${remote}.url")
+ else
+ # Still try harder.
+ local remotes=$(git config --get-regexp 'remote\..*\.url')
+ if [[ -n ${remotes} ]]; then
+ remote=$(echo "${remotes}" | awk '{print $2; exit}')
+ fi
fi
fi
repo=$(echo "${remote}" | sed -e 's,^git@gitlab.com[:/],,' -e 's,^https://gitlab.com/,,' -e 's,^git://gitlab.com/,,' -e 's:[.]git$::')
url="https://gitlab.com/${repo}/commit/"
;;
- git://git.sv.gnu.org/*|git://git.savannah.gnu.org/*)
- repo=$(echo "${remote}" | sed -r -e 's,^git://git.(sv|savannah).gnu.org/,,' -e 's:[.]git$::')
- url="http://git.savannah.gnu.org/cgit/${repo}.git/commit/?h="
+ git://git.sv.gnu.org/*|git://git.savannah.gnu.org/*|https://git.savannah.gnu.org/*)
+ repo=$(echo "${remote}" | sed -E -e 's,^(git|https)://git.(sv|savannah).gnu.org/(git/)?,,' -e 's:[.]git$::')
+ url="https://git.savannah.gnu.org/cgit/${repo}.git/commit/?h="
;;
git://git.sv.nongnu.org/*|git://git.savannah.nongnu.org/*)
repo=$(echo "${remote}" | sed -r -e 's,^git://git.(sv|savannah).nongnu.org/,,' -e 's:[.]git$::')
- url="http://git.savannah.nongnu.org/cgit/${repo}.git/commit/?h="
+ url="https://git.savannah.nongnu.org/cgit/${repo}.git/commit/?h="
;;
git://git.code.sf.net/p/*|ssh://*@git.code.sf.net/p/*)
repo=$(echo "${remote}" | sed -r -e 's,(git://|ssh://([^@]*@)?)git.code.sf.net/p/([^/]*)/.*,\3,')
repo=$(echo "${remote}" | sed -e 's,.*/,,' -e 's,[.]git$,,')
url="https://sourceware.org/git/?p=${repo}.git;a=commit;h="
;;
+ *://gcc.gnu.org/*)
+ repo=$(echo "${remote}" | sed -e 's,.*/,,' -e 's,[.]git$,,')
+ url="https://gcc.gnu.org/git/?p=${repo}.git;a=commit;h="
+ ;;
+ rpc://*)
+ url="${remote#rpc://}"
+ url="https://${url/\//.googlesource.com/}/+/"
+ ;;
*.googlesource.com/*)
url="${remote%.git}/+/"
;;
url="https://git.kernel.org/${repo}.git/commit/?id="
;;
*)
- echo "Unknown remote: ${remote}"
+ echo "Unknown remote: '${remote}'"
exit 1
;;
esac
- git log -n3 ${1:-HEAD} | sed "s,^commit ,${url},"
+ git log -n${num} ${1:-HEAD} | sed "s,^commit ,${url},"
}
svn_url() {
Usage: $0 [options] [args]
Options:
+ -# Number of commits to show (default: 3)
+ -n# Number of commits to show
-c CVS URL
-g GIT URL (default)
-s SVN URL
}
main() {
- local vcs="auto"
+ local vcs="auto" num="3" args=()
while [[ $# -gt 0 ]] ; do
case $1 in
+ -n[0-9]*) num="${1:2}";;
+ -[0-9]*) num="${1:1}";;
-c) vcs="cvs";;
-s) vcs="svn";;
-g) vcs="git";;
-h) usage;;
--) shift; break;;
-*) usage;;
- *) break;;
+ *) args+=( "$1" );;
esac
shift
done
+ set -- "${args}"
if [[ ${vcs} == "auto" ]] ; then
if [[ -d CVS ]] ; then