#!/bin/sh do_clone() { set -ex if ! test -e "$1" ; then git clone "$2" "$1" fi } do_clone_all() { do_clone "ffmpeg" "git://source.ffmpeg.org/ffmpeg.git" do_clone "fribidi" "git://anongit.freedesktop.org/fribidi/fribidi.git" do_clone "libass" "https://code.google.com/p/libass/" do_clone "mpv" "https://github.com/mpv-player/mpv.git" } do_gitmaster() { set -ex ( cd "$1" git checkout --detach origin/master git remote prune origin ) } do_gitmaster_all() { set -ex do_clone_all do_gitmaster ffmpeg do_gitmaster fribidi do_gitmaster libass do_gitmaster mpv } do_releasetag() { ( cd "$1" version=`git tag | grep "^$2[0-9]" | sort -V | tail -n 1` git checkout --detach refs/tags/"$version" ) } do_releasetag_all() { set -ex do_clone_all do_releasetag ffmpeg 'n' do_releasetag fribidi '' do_releasetag libass '' do_releasetag mpv 'v' } if [ x"$1" != x"--skip-selfupdate" ]; then ( set -ex git pull --rebase ) exec "$0" --skip-selfupdate "$@" fi shift case "$1" in --master) do_gitmaster_all ;; --release|'') do_releasetag_all ;; *) echo >&2 "$0 --master" echo >&2 "$0 --release" exit 0 ;; esac