#!/bin/sh

if [ $# -ne 3 ] ; then
    echo "Usage: $0 <ref> <ref> <filename>"
    exit 1
fi

RevA=$1
RevB=$2
File=$3

object() {
    Rev=$1
    File=$2
    Object=""

    if [ "$Rev" = "." ]; then
        echo "$File"
        return
    fi

    Oid=$(git show $Rev:$File 2> /dev/null | grep "sha256" | cut -d ":" -f 2)
    if [ "$Oid" != "" ]; then
        Oid12=$(echo $Oid | cut -b 1-2)
        Oid34=$(echo $Oid | cut -b 3-4)
        Object=.git/lfs/objects/$Oid12/$Oid34/$Oid
        if [ ! -e "$Object" ]; then
            echo "Missing file $File at revision $Rev"
            exit 2
        fi
    fi

    echo "$Object"
}


ObjectA=$(object $RevA $File)
EC="$?"
if [ "$EC" != "0" ]; then
    echo "$ObjectA"
    exit "$EC"
fi

ObjectB=$(object $RevB $File)
EC="$?"
if [ "$EC" != "0" ]; then
    echo "$ObjectB"
    exit "$EC"
fi

echo "diff -urN $ObjectA $ObjectB"
diff -urN "$ObjectA" "$ObjectB"