gitlab在push一个分支到远程仓库之后会返回一个url,打开这个url可以进入创建MR的页面,但是,它把url中的中文直接删掉了,像下面这样:
source_branch%5D=bugfix%2F3DTouch
键盘两个字没了,那我就自己搞一个吧。要拼接这么个url,只要做三件事,一个是仓库名字,第二是source_branch当前分支,第三对source_branch进行urlencode。
仓库名字:
basename `git rev-parse --show-toplevel`
当前分支名字:
git rev-parse --abbrev-ref HEAD
拿到的分支名字末尾带了\n
,必须移除:
git rev-parse --abbrev-ref HEAD | tr -d '\n'
再来urlencode:
git rev-parse --abbrev-ref HEAD | tr -d '\n' | perl -p -e 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg'
好了,把它们拼接起来
open "https://xxx.xx/"$(basename `git rev-parse --show-toplevel`)"/merge_requests/new?merge_request%5Bsource_branch%5D=$(git rev-parse --abbrev-ref HEAD | tr -d '\n' | perl -p -e 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg')"%
这个放到alias
里面部分命令就直接执行了,那就保存到文件里,加上x
权限,然后再alias到文件,我自己alias成mr
。
大功告成,push一个分支后,输入mr
,网页就打开了。
别问我怎么知道这些命令的,我TM全是一个一个Google出来的。
各位根据自己git地址修改url