-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathupdate-dev-branches.sh
More file actions
executable file
·63 lines (55 loc) · 2.28 KB
/
update-dev-branches.sh
File metadata and controls
executable file
·63 lines (55 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash -e
cd "$(dirname "$(readlink -f "$0")")"
die() {
echo $* >&2
exit 1
}
rebase_failed() {
git rebase --abort
die "rebase failed for $*"
}
main() {
git update-index --refresh
git diff-index --quiet HEAD -- || die "git isn't clean"
branches="${@:-sdl-dev-3.4 sdl-dev-3.6 image-dev-3.4 image-dev-3.6 ttf-dev mixer-dev net-dev shadercross-dev}"
for branch in $branches; do
case $branch in
sdl-dev-3.4) src_dir=sdl3-src/SDL; src_branch=origin/release-3.4.x;;
sdl-dev-3.6) src_dir=sdl3-src/SDL; src_branch=origin/main;;
image-dev-3.4) src_dir=sdl3-image-src/SDL_image; src_branch=origin/release-3.4.x;;
image-dev-3.6) src_dir=sdl3-image-src/SDL_image; src_branch=origin/main;;
ttf-dev) src_dir=sdl3-ttf-src/SDL_ttf; src_branch=origin/main;;
mixer-dev) src_dir=sdl3-mixer-src/SDL_mixer; src_branch=origin/main;;
net-dev) src_dir=sdl3-net-src/SDL_net; src_branch=origin/main;;
shadercross-dev) src_dir=sdl3-shadercross-src/SDL_shadercross; src_branch=origin/main;;
*) die "unknown branch $branch"
esac
if git checkout "$branch"; then
git rebase main || rebase_failed "$branch"
git checkout "$branch"
dist="$(git rev-list --count main..HEAD)"
if [ "$dist" -gt "1" ]; then
# squash
message="$(git log -1 --pretty=%B)"
git reset --soft HEAD~1
git commit --amend -m "$message"
git checkout "$branch"
fi
hash="$(git -C "$src_dir" rev-parse HEAD)"
git -C "$src_dir" fetch
git -C "$src_dir" checkout "$src_branch"
new_hash="$(git -C "$src_dir" rev-parse HEAD)"
if [[ "$hash" != "$new_hash" ]]; then
rev="$(git -C "$src_dir" describe --tags || git -C "$src_dir" describe --all --long)"
time="$(git -C "$src_dir" show -s --format=%ci HEAD)"
./generate-and-check.sh || die "generate $branch failed"
git diff --exit-code || git commit -a -m "$(basename $src_dir) $rev @ $time"
fi
else
echo "skipping $branch"
fi
done
git checkout main
exit
}
main "$@"