blob: 80781c3179dc901d5bc8d38968938911a4f6bd09 (
plain) (
tree)
|  |  | ##
# get_commit <version>
#
# Resolve a revision to a commit ID, exit via fatal error if
# resolution cannot take place.
##
function get_commit
{
    # local repository #
    if [[ "$remote" == "" ]]; then
        if [[ "$1" == "HEAD" ]]; then
            cat "$path/HEAD"
        elif [[ "$1" == "BASE" ]]; then
            cat ".systr/BASE"
        elif [[ "$1" == "TRAC" ]]; then
            read trac <.systr/TRAC
            get_commit "$trac"
        elif [[ "$1" == "NULL" ]]; then
            echo "NULL"
        elif [ -f "$path/refs/$1" ]; then
            cat "$path/refs/$1"
        elif [[ ${1:0:5} == "refs/" ]]; then
            if [ -f "$path/$1" ]; then
                cat "$path/$1"
            fi
        elif [ -f "$path/$1/.commit.systr" ]; then
            echo "$1"
        else
            echo "Error: $1 not a revision" >&2
            exit
        fi
    # remote repository #
    else
        exit
    fi
}
##
# get_symref <version>
#
# Resolve a revision to a symbolic reference, exit via fatal
# error if resolution cannot take place.
##
function get_symref
{
    # local repository #
    if [[ "$remote" == "" ]]; then
        if [[ "$1" == "HEAD" ]]; then
            echo "HEAD"
        elif [[ "$1" == "BASE" ]]; then
            echo "BASE"
        elif [[ "$1" == "TRAC" ]]; then
            cat ".systr/TRAC"
        elif [[ "$1" == "NULL" ]]; then
            echo "NULL"
        elif [ -f "$path/refs/$1" ]; then
            echo "refs/$1"
        elif [ -f "$path/$1/.commit.systr" ]; then
            echo "$1"
        else
            echo "Error: $1 not a revision" >&2
            exit
        fi
    # remote repository #
    else
        exit
    fi
}
 |