update_chibios_mirror.sh
3107 bytes
1#!/bin/bash
2
3################################
4# Configuration
5
6# The ChibiOS branches to mirror
7chibios_branches="trunk stable_21.11.x"
8
9# The ChibiOS-Contrib branches to mirror
10contrib_branches="chibios-21.11.x"
11
12################################
13# Actions
14
15set -eEuo pipefail
16umask 022
17
18this_script="$(realpath "${BASH_SOURCE[0]}")"
19script_dir="$(realpath "$(dirname "$this_script")")"
20qmk_firmware_dir="$(realpath "$script_dir/../")"
21chibios_dir="$qmk_firmware_dir/lib/chibios"
22contrib_dir="$qmk_firmware_dir/lib/chibios-contrib"
23
24chibios_git_location=$(realpath "$chibios_dir/$(cat "$chibios_dir/.git" | awk '/gitdir:/ {print $2}')")
25chibios_git_config=$(realpath "$chibios_git_location/config")
26contrib_git_location=$(realpath "$contrib_dir/$(cat "$contrib_dir/.git" | awk '/gitdir:/ {print $2}')")
27contrib_git_config=$(realpath "$contrib_git_location/config")
28
29cd "$chibios_dir"
30
31if [[ -z "$(cat "$chibios_git_config" | grep '\[svn-remote "svn"\]')" ]] ; then
32 git svn init --stdlayout --prefix='svn/' https://svn.code.sf.net/p/chibios/code/
33fi
34
35if [[ -z "$(cat "$chibios_git_config" | grep '\[remote "qmk"\]')" ]] ; then
36 git remote add qmk git@github.com:qmk/ChibiOS.git
37 git remote set-url qmk git@github.com:qmk/ChibiOS.git --push
38else
39 git remote set-url qmk git@github.com:qmk/ChibiOS.git
40 git remote set-url qmk git@github.com:qmk/ChibiOS.git --push
41fi
42
43echo "Updating remotes..."
44git fetch --all --tags --prune
45
46echo "Ensure refs actually match up..."
47for branch in $chibios_branches ; do
48 echo "Matching $branch..."
49 git update-ref refs/remotes/svn/$branch refs/remotes/qmk/svn-mirror/$branch
50done
51
52echo "Fetching latest from subversion..."
53git svn fetch
54
55echo "Updating ChibiOS branches..."
56for branch in $chibios_branches ; do
57 echo "Creating branch 'svn-mirror/$branch' from 'svn/$branch'..."
58 git branch -f svn-mirror/$branch svn/$branch \
59 && git push qmk svn-mirror/$branch
60done
61
62cd "$contrib_dir"
63
64if [[ -z "$(cat "$contrib_git_config" | grep '\[remote "qmk"\]')" ]] ; then
65 git remote add qmk git@github.com:qmk/ChibiOS-Contrib.git
66 git remote set-url qmk git@github.com:qmk/ChibiOS-Contrib.git --push
67else
68 git remote set-url qmk git@github.com:qmk/ChibiOS-Contrib.git
69 git remote set-url qmk git@github.com:qmk/ChibiOS-Contrib.git --push
70fi
71
72if [[ -z "$(cat "$contrib_git_config" | grep '\[remote "upstream"\]')" ]] ; then
73 git remote add upstream git@github.com:ChibiOS/ChibiOS-Contrib.git
74 git remote set-url upstream git@github.com:ChibiOS/ChibiOS-Contrib.git --push
75else
76 git remote set-url upstream git@github.com:ChibiOS/ChibiOS-Contrib.git
77 git remote set-url upstream git@github.com:ChibiOS/ChibiOS-Contrib.git --push
78fi
79
80echo "Updating remotes..."
81git fetch --all --tags --prune
82
83echo "Updating ChibiOS-Contrib branches..."
84for branch in $contrib_branches ; do
85 echo "Creating branch 'mirror/$branch' from 'upstream/$branch'..."
86 git branch -f mirror/$branch upstream/$branch \
87 && git push qmk mirror/$branch || true # Allow for nonexistent ChibiOS-Contrib branches -- they'll turn up eventually.
88done