Hôm nay có ông anh trong công ty tớ đưa ra ý kiến custom lại chỗ chọn branch của gitlab, do mặc định merge vào development branch => muốn merge vào các branch khác thì cần bấm vào change branch => đợi load => chọn => ok. Việc này làm đi làm lại gây nhàm chán, mất thời gian và ức chế.
Đang bí content viết bài, tối về đá xong 2 bát cơm tranh thủ tìm cách giải quyết ngon hơn thì thấy chạy được nên ngồi viết bài share cho mọi người.
Cách đơn giản
Dùng bookmark, viết 1 đoạn script khi click vào sẽ tự động thêm cái đuôi &merge_request[target_branch]=<branch_name>
javascript:window.location.href=window.location.href+"&merge_request[target_branch]=dev";
javascript:window.location.href=window.location.href+"&merge_request[target_branch]=staging";
javascript:window.location.href=window.location.href+"&merge_request[target_branch]=production";
Cách ngon hơn
Ngon hơn thì bạn có thể dùng chrome search engine để tạo 1 cái shortcut. Bạn có thể tham khảo ở bài này
Cách ngon nhất
Ngon nhất là mỗi khi push code, đưa sẵn cái url tạo pull request ra, chỉ viết click vào thôi.
Bước 1: Tạo 1 file bash, trong file sẽ push code và in ra các link dẫn đến custom branch.
Đối với gitlab
#!/bin/bash
# minhphong306.wordpress.com
# ~/.smartgit.sh
server="gitlab.com"
SHOULD_PROCESS=$(git remote -v | grep "origin.*(push)" | grep -c "$server")
if [ $SHOULD_PROCESS -ne 0 ]; then
REPO_NAME=$(git remote -v | grep "origin.*(push)" | sed 's/.*:\(.*\)\.git.*/\1/g')
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
$(git push origin $BRANCH_NAME)
echo ""
echo ">> Merge dev:"
echo " https://$server/$REPO_NAME/-/merge_requests/new?merge_request%5Bsource_branch%5D=$BRANCH_NAME&merge_request%5Btarget_branch%5D=dev"
echo ">> Merge stag:"
echo "https://$server/$REPO_NAME/-/merge_requests/new?merge_request%5Bsource_branch%5D=$BRANCH_NAME&merge_request%5Btarget_branch%5D=staging"
echo ">> Merge prod:"
echo "https://$server/$REPO_NAME/-/merge_requests/new?merge_request%5Bsource_branch%5D=$BRANCH_NAME&merge_request%5Btarget_branch%5D=production"
echo ""
else
echo "Not git repo or not has origin remote. Please check again."
fi
Đối với github
#!/bin/bash
# minhphong306.wordpress.com
# ~/.smartgit.sh
server="github.com"
SHOULD_PROCESS=$(git remote -v | grep "origin.*(push)" | grep -c "$server")
if [ $SHOULD_PROCESS -ne 0 ]; then
REPO_NAME=$(git remote -v | grep "origin.*(push)" | sed 's/.*:\(.*\)\.git.*/\1/g')
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
$(git push origin $BRANCH_NAME)
echo ""
echo ">> Merge dev:"
echo " https://$server/$REPO_NAME/compare/dev...$BRANCH_NAME"
echo ">> Merge stag:"
echo " https://$server/$REPO_NAME/compare/staging...$BRANCH_NAME"
echo ">> Merge prod:"
echo " https://$server/$REPO_NAME/compare/production...$BRANCH_NAME"
echo ""
else
echo "Not git repo or not has origin remote. Please check again."
fi
Đối với bitbucket
#!/bin/bash
# minhphong306.wordpress.com
# ~/.smartgit.sh
server="bitbucket.org"
SHOULD_PROCESS=$(git remote -v | grep "origin.*(push)" | grep -c "$server")
if [ $SHOULD_PROCESS -ne 0 ]; then
REPO_NAME=$(git remote -v | grep "origin.*(push)" | sed 's/.*:\(.*\)\.git.*/\1/g')
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
$(git push origin $BRANCH_NAME)
echo ""
echo ">> Merge dev:"
echo " https://$server/$REPO_NAME/pull-requests/new?source=$BRANCH_NAME&t=1&dest=dev"
echo ">> Merge stag:"
echo "https://$server/$REPO_NAME/pull-requests/new?source=$BRANCH_NAME&t=1&dest=staging"
echo ">> Merge prod:"
echo "https://$server/$REPO_NAME/pull-requests/new?source=$BRANCH_NAME&t=1&dest=production"
echo ""
else
echo "Not git repo or not has origin remote. Please check again."
fi
Bước 2: Đặt alias cho file
alias gitsm='sh ~/workspace/sh/gitsmart.sh'
Thành quả
Nguồn
Tớ chế lại từ cái script ở comment của 1 bác trên stackoverflow: https://stackoverflow.com/a/50239334/7228412
Cảm ơn bạn đã bỏ thời gian đọc bài.
Hope this help ^^