summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMalf Furious <m@lfurio.us>2017-04-30 22:28:38 -0400
committerMalf Furious <m@lfurio.us>2017-04-30 22:28:38 -0400
commitdfc2f49646ddf8f8b861e810a062600f86f4acbb (patch)
tree61b6a37a2fbba7e1f92b913e177689bb70bc5787
parent38f60a3be294d1bfe79c91bd4fe9c74b51a20bd5 (diff)
downloadsystrunk-dfc2f49646ddf8f8b861e810a062600f86f4acbb.tar.gz
systrunk-dfc2f49646ddf8f8b861e810a062600f86f4acbb.zip
Rewrite function systr_checkout()
-rw-r--r--checkout.sh49
1 files changed, 16 insertions, 33 deletions
diff --git a/checkout.sh b/checkout.sh
index ab9d4bd..9ae1235 100644
--- a/checkout.sh
+++ b/checkout.sh
@@ -65,40 +65,36 @@ function systr_init_wktree
#
# Reset a worktree to the state at <version>. If <path> is given,
# checkout also initializes a new worktree at the CWD. If <remote>
-# is given, the path is assumed to be located on a remote machine
-# and is contacted over SSH. While resetting to the state at
-# <version>, all local uncommitted changes are lost.
+# is given, the path is assumed to be located on a remote machine.
+# While resetting to the state at <version>, all local uncommitted
+# changes are lost.
#
# After checkout, BASE and TRAC will be set to <version>.
##
function systr_checkout
{
- # check arguments #
- if [ $# -lt 2 ]; then
- echo "Missing required parameters"
- exit
+ if [ $# -lt 1 ]; then
+ echo "Fatal: too few arguments to systr_checkout"
+ exit 1
fi
- # init worktree #
- if [ $# -gt 2 ]; then
- init_wktree $@
- fi
+ version="$1"
- # perform checkout #
- read remote <.systr/remote
- read path <.systr/path
- version=$2
+ if [ $# -gt 1 ]; then
+ shift
+ systr_init_wktree "$@"
+ read remote <.systr/remote
+ read path <.systr/path
+ fi
if [[ "$version" == "NULL" ]]; then
echo "Checking out NULL :: Checkout not performed"
exit
fi
- commit=$(get_commit "$version")
- symref=$(get_symref "$version")
-
+ commit=$(systr_repo_resolve_reference "$version")
echo "$commit" >.systr/BASE
- echo "$symref" >.systr/TRAC
+ echo "$version" >.systr/TRAC
if [[ "$commit" == "NULL" ]]; then
echo "Nothing to checkout"
@@ -106,18 +102,5 @@ function systr_checkout
fi
echo "Checking out files..."
-
- # local repository #
- if [[ "$remote" == "" ]]; then
- rsync -az --info=progress2 --info=stats2 \
- --delete --exclude='*.systr' \
- "$path/$commit/" .
-
- # remote repository #
- else
- rsync -az -e ssh --info=progress2 --info=stats2 \
- --delete --exclude='*.systr' \
- "$remote:$path/$commit/" .
-
- fi
+ systr_rsync_normal "$path/revs/$commit/" .
}