summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--checkout.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/checkout.sh b/checkout.sh
index 01a9bf0..ab9d4bd 100644
--- a/checkout.sh
+++ b/checkout.sh
@@ -1,4 +1,66 @@
##
+# systr_check_repo <path>
+#
+# Assert that the local repository path exists and is valid.
+##
+function systr_check_repo
+{
+ if [ $# -lt 1 ]; then
+ echo "Fatal: too few arguments to systr_check_repo"
+ exit 1
+ fi
+
+ path="$1"
+
+ (
+ cd "$path"
+
+ if [ ! -f "refs/HEAD" ]; then
+ echo "Fatal: $path is not a repository"
+ exit 1
+ fi
+ )
+}
+
+##
+# systr_init_wktree [<remote>] <path>
+#
+# Assert that the repository at <remote>:<path> exists, then setup
+# the .systr directory at the CWD.
+##
+function systr_init_wktree
+{
+ if [ $# -lt 1 ]; then
+ echo "Fatal: too few arguments to systr_init_wktree"
+ exit 1
+ fi
+
+ if [ $# -gt 1 ]; then
+ remote="$1"
+ shift
+ else
+ remote=""
+ fi
+
+ path="$1"
+
+ if [[ "$remote" == "" ]]; then
+ systr_check_repo "$path"
+ else
+ ssh "$remote" "systrunk check-repo \"$path\""
+ fi
+
+ mkdir -p .systr/
+
+ echo "$remote" >.systr/remote
+ echo "$path" >.systr/path
+ echo "NULL" >.systr/BASE
+ echo "NULL" >.systr/TRAC
+
+ echo "Setup worktree at $(pwd)"
+}
+
+##
# systrunk checkout <version> [[<remote>] <path>]
#
# Reset a worktree to the state at <version>. If <path> is given,