[Trick] Hướng dẫn custom lại message tạo pull request của GitLab, GitHub, Bitbucket

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 ^^

Bình luận về bài viết này