|
|
@@ -0,0 +1,88 @@ |
|
|
|
#!/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 |