38 lines
1.6 KiB
YAML
38 lines
1.6 KiB
YAML
name: Sync remote
|
|
|
|
on: [push, delete]
|
|
|
|
jobs:
|
|
push:
|
|
runs-on: ubuntu-latest
|
|
if: github.repository == 'zenbones-theme/zenbones.nvim'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Sync remote repositories
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${{ secrets.GIT_SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
# Ignore hosts keys, since we accept them as-is
|
|
git config --global core.sshCommand 'ssh -i ~/.ssh/id_rsa -o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
|
|
# Codeberg
|
|
git remote add codeberg ssh://git@codeberg.org/mcchris/zenbones.nvim.git
|
|
git push --tags --force --prune codeberg 'refs/remotes/origin/*:refs/heads/*'
|
|
# GitLab
|
|
# NOTE: pushing refs fails with:
|
|
# remote: GitLab: You cannot create a branch with an invalid name.
|
|
# To ssh://gitlab.com/mcchris/zenbones.nvim.git
|
|
# ! [remote rejected] origin/HEAD -> HEAD (pre-receive hook declined)
|
|
# ! [remote rejected] origin/dev -> dev (pre-receive hook declined)
|
|
git remote add gitlab ssh://git@gitlab.com/mcchris/zenbones.nvim.git
|
|
# NOTE: `--all` syncs local branches only
|
|
# create tracking braches for all remote branches
|
|
for branch in $(git branch --all | grep '^\s*remotes' | grep -vP 'HEAD'); do
|
|
git rev-parse --verify "${branch##*/}" 1>/dev/null 2>&1 || \
|
|
git branch --track "${branch##*/}" "$branch"
|
|
done
|
|
git push --force --prune gitlab --all
|
|
git push --force gitlab --tags
|