Skip to content

Commit

Permalink
up sync-git-mirrors.sh
Browse files Browse the repository at this point in the history
  • Loading branch information
milahu committed Nov 25, 2023
1 parent 0e3b1ae commit c13875d
Showing 1 changed file with 33 additions and 8 deletions.
41 changes: 33 additions & 8 deletions src/scripts/sync-git-mirrors.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,19 @@ set -x

opts="--force"

branches="master journal"
main_branch="master"

extra_branches="journal"

branches="$main_branch $extra_branches"

# try.gitea.io is a read-only mirror of the repo on github.com
ignore_remotes="try.gitea.io"

# force english language so we can parse git output
export LANG=C
export LC_ALL=C

# done: remove. better: socks5h proxy:
# git -c remote.origin.proxy=socks5h://127.0.0.1:9050 clone
# git config --add remote.darktea.proxy socks5h://127.0.0.1:9050
Expand All @@ -26,13 +34,21 @@ git fetch $remote $branches --tags
# rebase the main branches with changes from the main repo
# usually, these changes come from the Issues2Markdown github action
date=$(date +%F-%H-%M-%S)
# stash changes to the master branch
git stash -m "git pull-push $(date)"
# stash changes to the main branch
stash_output="$(git stash -m "git pull-push $(date)")"
echo "$stash_output"
if [[ "$stash_output" == "No local changes to save" ]]; then
did_stash_main=false
else
did_stash_main=true
fi
for branch in $branches; do
git branch --copy $branch $branch-bak-$date
if [[ "$branch" == "master" ]]; then
if [[ "$branch" == "$main_branch" ]]; then
git rebase remotes/$remote/$branch
git stash pop
if $did_stash_main; then
git stash pop
fi
else
branch_path="$(git worktree list | grep " \[$branch\]$" || true)"
is_temp_branch_path=false
Expand All @@ -43,12 +59,20 @@ for branch in $branches; do
git worktree add "$branch_path" $branch
is_temp_branch_path=true
fi
git -C "$branch_path" stash -m "git pull-push $(date)"
stash_output="$(git -C "$branch_path" stash -m "git pull-push $(date)")"
echo "$stash_output"
if [[ "$stash_output" == "No local changes to save" ]]; then
did_stash=false
else
did_stash=true
fi
git -C "$branch_path" rebase remotes/$remote/$branch
if $is_temp_branch_path; then
git worktree remove "$branch_path"
fi
git -C "$branch_path" stash pop
if $did_stash; then
git -C "$branch_path" stash pop
fi
fi
done

Expand All @@ -61,13 +85,14 @@ for remote in $(git remote show); do
if echo "$remote" | grep -q readonly; then
continue
fi
# TODO push branches and tags in one command
git push $remote $branches $opts || true
git push $remote $branches $opts --tags || true
done

# codeberg.org has no automatic update like github pages
echo updating https://milahu.codeberg.page/alchi/
git push codeberg.org master:pages
git push codeberg.org $main_branch:pages

# sourceforge.net has no automatic update like github pages
echo updating https://milahu-alchi.sourceforge.io/
Expand Down

0 comments on commit c13875d

Please sign in to comment.