|
- #!/bin/sh -
-
- set -e
- set -x
-
- # using ssh-agent to make this quicker:
- # eval $(ssh-agent)
- # ssh-add
-
- # Token file must contain:
- # Authorization: token <token>
- # where <token> is generated from: Settings -> Applications, or:
- # <basegiteaurl>/user/settings/applications
- tokenfile="$PWD/.gitea.token"
-
- # domain used to detect if it's a repo that we can update
- gitdomain=funkthat.com
-
- # the gitea API url
- giteabaseurl="https://www.funkthat.com/gitea/api/v1"
-
- echo "start"
-
- # Command to list all the repos that have master as it's default branch.
- #curl -s -X GET "https://www.funkthat.com/gitea/api/v1/users/jmg/repos" -H "accept: application/json" | jq -r '(.[]) | select(.default_branch == "master") | .name'
-
- if ! [ -x $(which jq) ]; then
- echo 'Error: jq needs to be installed'
- exit 1
- fi
-
- # -H @"$tokenfile"
- # Set the default branch:
- # curl -v -i -d "$(jq -n '{ default_branch: "main" }')" -X PATCH "https://www.funkthat.com/gitea/api/v1/repos/jmg/projects" -H "Content-Type: application/json" -H "accept: application/json" -H @"$tokenfile"
- #curl -s -X GET "https://www.funkthat.com/gitea/api/v1/repos/jmg/ggate" -H "accept: application/json" | jq '.default_branch'
- #echo 'list'
-
- # make sure we are in a correct repo
- cd /Users/jmg/git/fbsdembdev
- r=$(git remote -v | grep git.funkthat.com 2>&1)
- if [ x"$r" = x"" ]; then
- echo 'not a gitea repo'
- exit 1
- fi
-
- # get the remote that we need to update
- gitremote=$(echo "$r" | awk '{ print $1; exit 0 }')
-
- # get the gitea user/project, this currently assumes that whatever
- # the url is, it ends with <username>/<reponame>.git
- giteauserproj=$(echo "$r" | awk '{ url=$2; cnt = split(url, surl, "/"); proj = split(surl[cnt], sproj, "."); printf("%s/%s", surl[cnt - 1], sproj[1]); exit 0; }')
-
- # see if there's a master branch
- r=$(git branch | grep master || true)
- if [ x"$r" = x"" ]; then
- echo 'no master branch'
- exit 1
- fi
-
- # Check if we are on that branch
- onotherbranch=1
- if [ x"${r#\* }" != x"$r" ]; then
- onotherbranch=0
- git checkout $(git log | head -n 1 | awk '{print $2}') >/dev/null 2>&1
- fi
-
- # rename the branch
- git branch -m master main
-
- # change upstream
- upmerge=$(git config branch.main.merge)
- if [ x"${upmerge%master}" != x"$upmerge" ]; then
- git config branch.main.merge refs/heads/main
- fi
-
- # push new main branch
- git push origin main
-
- # update gitea
- curl -v -i -d "$(jq -n '{ default_branch: "main" }')" -X PATCH "${giteabaseurl}/repos/${giteauserproj}" -H "Content-Type: application/json" -H "accept: application/json" -H @"$tokenfile"
-
- # delete old branch on server
- git push -d origin master
-
- # restore our checkout
- if [ x"$onotherbranch" = x"0" ]; then
- git checkout main
- fi
|