summaryrefslogblamecommitdiffstats
path: root/diff.sh
blob: 9f3480c418a89e27239999acb27e7f9a6bd9581f (plain) (tree)



























































                                                                   
##
# systrunk diff [<from>=BASE] [<to>=WKTREE]
#
# Perform a unified diff (diff -u) between <from> and <to>, which
# should be two revisions in the repository.  If not supplied, <to>
# will be the worktree.  Otherwise, there is no way to specify the
# worktree.
##
function systr_diff
{
    if [ $# -lt 2 ]; then
        to="."
    else
        to=$(systr_repo_resolve_reference "$2")
        to="$path/revs/$to/"
    fi

    if [ $# -lt 1 ]; then
        from="$BASE"
    else
        from=$(systr_repo_resolve_reference "$1")
    fi

    from="$path/revs/$from/"

    diff -ruNd --color=auto --exclude='*.systr' "$from" "$to"
}

##
# systrunk shortdiff [<from>=BASE] [<to>=WKTREE]
#
# Indicate only names of files that have been changed, added,
# or removed between <from> and <to>, which should be two
# revisions in the repository.  If not supplied, <to> will be
# the worktree.  Otherwise, there is no way to specify the
# worktree.
##
function systr_short_diff
{
    if [ $# -lt 2 ]; then
        to="."
    else
        to=$(systr_repo_resolve_reference "$2")
        to="$path/revs/$to/"
    fi

    if [ $# -lt 1 ]; then
        from="$BASE"
    else
        from=$(systr_repo_resolve_reference "$1")
    fi

    if [[ "$from" == "NULL" ]]; then
        exit
    fi

    from="$path/revs/$from/"

    diff -qr --exclude='*.systr' "$from" "$to"
}