#!/bin/bash # # Keep git remotes in sync among media archives. # # Parameters BASENAME="$0" DEST="$1" MEDIA="/var/cache/media" # Syntax if [ -z "$DEST" ]; then echo "usage: $BASENAME " exit 1 elif [ ! -d "$DEST/$MEDIA" ]; then echo "folder $DEST/$MEDIA does not exist." exit 1 fi # TODO echo "Needs work!" exit # Run for folder in `ls $MEDIA`; do if [ -d "$DEST/$MEDIA/$folder/.git" ]; then git -C $MEDIA/$folder remote -v | grep "(fetch)" | sed -e 's/(fetch)//' | while read remote; do ( cd $DEST/$MEDIA/$folder name="`echo $remote | cut -d ' ' -f 1`" url="`echo $remote | cut -d ' ' -f 2`" # Add and update if [ "$name" != "all" ]; then if ! git remote | grep -q "^$name$" ]; then git remote add $remote else oldurl="`git remote -v | grep "^$name$" | grep "(fetch)" | cut -d ' ' -f 2`" if [ "$url" != "$oldurl" ]; then git remote set-url $name --delete $oldurl git remote set-url $name --add $url fi fi fi # Remove dangling remotes ) done fi done