diff options
-rw-r--r-- | checkout.sh | 79 | ||||
-rw-r--r-- | repo-access.sh | 17 |
2 files changed, 37 insertions, 59 deletions
diff --git a/checkout.sh b/checkout.sh index 59cc82e..a3f9f9f 100644 --- a/checkout.sh +++ b/checkout.sh @@ -1,90 +1,51 @@ ## -# systr_check_repo <path> +# systr_init_wktree <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. +# Assert that the repository 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" + echo "Fatal: too few args to init_wktree" >&2 exit 1 fi - if [ $# -gt 1 ]; then - remote="$1" - shift - else - remote="" - fi - path="$1" + systr_repo_check "$path" - 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 + mkdir .systr + echo "$path" >.systr/path + echo "NULL" >.systr/BASE + echo "NULL" >.systr/TRAC + date >.systr/updated echo "Setup worktree at $(pwd)" } ## -# systrunk checkout <version> [[<remote>] <path>] +# systrunk checkout <commit> [<path>] # -# 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. -# While resetting to the state at <version>, all local uncommitted -# changes are lost. +# Reset a worktree to the state at <commit>. If <path> is given, +# checkout also initializes a new worktree at the CWD. While +# resetting to <commit>, all local uncommitted changes are lost. # -# After checkout, BASE and TRAC will be set to <version>. +# After checkout, BASE and TRAC will be set to <commit>. ## function systr_checkout { if [ $# -lt 1 ]; then - echo "Fatal: too few arguments to systr_checkout" + echo "Fatal: too few arguments to systr_checkout" >&2 exit 1 fi version="$1" if [ $# -gt 1 ]; then - shift - systr_init_wktree "$@" - read remote <.systr/remote - read path <.systr/path + systr_init_wktree "$2" + read path <.systr/path + read BASE <.systr/BASE + read TRAC <.systr/TRAC fi if [[ "$version" == "NULL" ]]; then diff --git a/repo-access.sh b/repo-access.sh index 2b6a5cc..b599dc8 100644 --- a/repo-access.sh +++ b/repo-access.sh @@ -1,4 +1,21 @@ ## +# systr_repo_check [<path>=PATH] +# +# Assert that the local repository path exists and is valid. +## +function systr_repo_check +{ + if [ $# -gt 0 ]; then + path="$1" + fi + + if [ ! -f "$path/refs/HEAD" ]; then + echo "Fatal: $path is not a repository" >&2 + exit 1 + fi +} + +## # systr_repo_resolve_reference <ref> # # Resolve a revision name to a commit ID. The result is printed to |