blob: d88452e3cb4b71e390cf62ed666cf622e22a43d4 (
plain) (
tree)
|
|
##
# systr_repo_create_commit [<path>]
#
# 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 <commit> <parent> <author> <email> [<merge>]
#
# Finish writing a commit by adding meta-data to the commit directory.
# The commit mesasge is taken from the file <commit>.mesg at the root
# of the repository directory. If <merge> 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 4 ]; then
echo "Fatal: too few arguments to systr_repo_finish_commit"
exit 1
fi
commit="$1"
parent="$2"
author="$3"
email="$4"
if [ $# -gt 4 ]; then
merge="$5"
else
merge=""
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 <symref> <commit>
#
# Update <symref> to point to <commit>. If <symref> 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
}
|