From 151f754b5e87920c3fec9927f978549b2343a99b Mon Sep 17 00:00:00 2001 From: Malf Furious Date: Sun, 30 Apr 2017 19:22:35 -0400 Subject: Add repo-access module --- repo-access.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 repo-access.sh (limited to 'repo-access.sh') diff --git a/repo-access.sh b/repo-access.sh new file mode 100644 index 0000000..1e799a5 --- /dev/null +++ b/repo-access.sh @@ -0,0 +1,48 @@ +## +# systr_repo_resolve_reference [] +# +# Resolve a revision to a commit ID. This function is polymorphic +# for both local and remote repositories. The result is printed to +# stdout. +## +function systr_repo_resolve_reference +{ + if [ $# -lt 1 ]; then + echo "Fatal: too few arguments to systr_repo_resolve_reference" + exit 1 + fi + + symref="$1" + + if [ $# -gt 1 ]; then + path="$2" + fi + + if [[ "$symref" == "BASE" ]]; then + cat ".systr/BASE" + elif [[ "$symref" == "TRAC" ]]; then + read trac <.systr/TRAC + systr_repo_resolve_reference "$trac" + elif [[ "$symref" == "NULL" ]]; then + echo "NULL" + fi + + if [[ "$remote" == "" ]]; then + ( + cd "$path" + + if [[ "$symref" == "HEAD" ]]; then + cat "HEAD" + elif [ -f "refs/$symref" ]; then + cat "refs/$symref" + elif [ -f "revs/$symref/.commit.systr" ]; then + echo "$symref" + else + echo "$symref not a revision" + exit 1 + fi + ) + else + ssh "$remote" "systrunk resv-ref \"$symref\" \"$path\"" + fi +} -- cgit v1.2.3