## # systr_repo_create_commit [] # # Create a new commit directory within the repository. This function # is polymorphic for both local and remote repositories. The new # commit ID is printed to stdout. ## function systr_repo_create_commit { if [ $# -gt 0 ]; then path="$1" fi if [[ "$remote" == "" ]]; then ( cd "$path" cd "revs/" mktemp -d XXXXXXXX ) else ssh "$remote" "systrunk create-commit \"$path\"" fi } ## # systr_repo_finish_commit [] # # Finish writing a commit by adding meta-data to the commit directory. # The commit mesasge is taken from the file .mesg at the root # of the repository directory. If is given, it is written to # .merge.systr in the commit. This function is polymorphic for both # local and remote repositories. ## function systr_repo_finish_commit { if [ $# -lt 2 ]; then echo "Fatal: too few arguments to systr_repo_finish_commit" exit 1 fi commit="$1" parent="$2" if [ $# -gt 2 ]; then merge="$3" else merge="" fi if [ -f ".systr/author" ]; then read author <.systr/author else author="Anonymous" fi if [ -f ".systr/email" ]; then read email <.systr/email else email="" fi if [[ "$remote" == "" ]]; then ( cd "$path" cd "revs/" cd "$commit" echo "$parent" >.commit.systr echo "$author" >.author.systr echo "$email" >.email.systr mv "../$commit.mesg" ".mesg.systr" if [[ "$merge" != "" ]]; then echo "$merge" >.merge.systr fi ) else ssh "$remote" "systrunk finish-commit \"$commit\" \"$parent\" \ \"$author\" \"$email\" \"$merge\"" fi } ## # systr_repo_set_reference # # Update to point to . If doesn't exist, # it is created. This function is polymorphic for both local and # remote repositories. ## function systr_repo_set_reference { if [ $# -lt 2 ]; then echo "Fatal: too few arguments to systr_repo_set_reference" exit 1 fi symref="$1" commit="$2" if [[ "$symref" == "BASE" ]]; then echo "Fatal: will not define BASE in the repository" exit 1 elif [[ "$symref" == "TRAC" ]]; then echo "Fatal: will not define TRAC in the repository" exit 1 elif [[ "$symref" == "NULL" ]]; then echo "Fatal: will not define NULL in the repository" exit 1 elif [[ "$symref" == "MERG" ]]; then echo "Fatal: will not define MERG in the repository" exit 1 fi if [[ "$remote" == "" ]]; then ( cd "$path" cd "refs/" echo "$commit" >"$symref" ) else ssh "$remote" "systrunk set-ref \"$symref\" \"$commit\"" fi }