## # systrunk checkout [[] ] # # Reset a worktree to the state at . If is given, # checkout also initializes a new worktree at the CWD. If # is given, the path is assumed to be located on a remote machine # and is contacted over SSH. While resetting to the state at # , all local uncommitted changes are lost. # # After checkout, BASE and TRAC will be set to . ## function systr_checkout { # check arguments # if [ $# -lt 2 ]; then echo "Missing required parameters" exit fi # init worktree # if [ $# -gt 2 ]; then init_wktree $@ fi # perform checkout # read remote <.systr/remote read path <.systr/path version=$2 if [[ "$version" == "NULL" ]]; then echo "Checking out NULL :: Checkout not performed" exit fi commit=$(get_commit "$version") symref=$(get_symref "$version") echo "$commit" >.systr/BASE echo "$symref" >.systr/TRAC if [[ "$commit" == "NULL" ]]; then echo "Nothing to checkout" exit 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 }