From 6fae25b305d714b3ab7608fa003f1af9bf024545 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Tue, 14 Feb 2023 13:33:23 +0800 Subject: Rename tools into bin --- bin/git/swap-protocol.bash | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 bin/git/swap-protocol.bash (limited to 'bin/git/swap-protocol.bash') diff --git a/bin/git/swap-protocol.bash b/bin/git/swap-protocol.bash new file mode 100755 index 0000000..b7f4db2 --- /dev/null +++ b/bin/git/swap-protocol.bash @@ -0,0 +1,25 @@ +#! /usr/bin/env bash +# Get the first remote URL within git/https protocol on github.com +# Swap the protocol, and apply new protocol to every remaining remotes + +target='' +extra='' + +# For each remote +git remote -v \ +| while read remote url etc; do + # Set fetch/push URL seperately + [[ $etc =~ push ]] && extra='--push' || extra='' + + if [[ $url =~ git@.*github.com ]]; then + target=${target:-https} + # git@ -> https:// + [[ $target == https ]] && sed -E 's#^git@(.+):(.+)$#https://\1/\2#' <<<$url | xargs git remote set-url $extra $remote + elif [[ $url =~ https://.*github.com ]]; then + target=${target:-git} + # https:// -> git@ + [[ $target == git ]] && sed -E 's#^https://([^/]+)/(.+)$#git@\1:\2#' <<<$url | xargs git remote set-url $extra $remote + fi +done + +git remote -v -- cgit v1.2.3-70-g09d2