#!/bin/bash

if [ "$#" -ne 1 ]; then
	echo "Usage: $0 <orig tag>|<base release>" 1>&2
	exit 1
fi
tag="$1"

case "$tag" in
v*)	;;
*)	tag="v${tag%.*}" ;;
esac

# Validate the tag.
count=$( git tag -l "$tag" | wc -l )
if [ "$count" != 1 ]; then
	echo "$0: $tag: tag invalid" 1>&2
	exit 1
fi

#git ls-tree -r --full-tree HEAD | grep ^120 | \
#while read mode type blobid name

# Identify all new symlinks since the proffered tag.
echo "# Recreate any symlinks created since the orig."
git diff "$tag.." --raw | awk '(/^:000000 120000/ && $5 == "A") { print $NF }' | \
while read name
do
	link=$( readlink "$name" )

	echo "[ ! -L '$name' ] && ln -sf '$link' '$name'"
done

# Identify all removed files since the proffered tag.
echo "# Remove any files deleted from the orig."
git diff "$tag.." --raw | awk '(/^:/ && $5 == "D") { print $NF }' | \
while read name
do
	echo "rm -f '$name'"
done

# All done, make sure this does not complete in error.
echo "exit 0"
