diff --git a/_vcsh b/_vcsh index 9f5b00658d0751c60ade48d957ef3dbe67522114..424914407252e2946ca6949fb96e45c202da7447 100644 --- a/_vcsh +++ b/_vcsh @@ -5,6 +5,7 @@ _arguments \ clone\:"clone from repo" help\:"display help" delete\:"delete repo" + enter\:"Enter repo; spawn new \$SHELL" exit\:"Exit repo; unset" init\:"init & clone from repo" list\:"list all repos" diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn index 015e76ed573ffc8acedd1e1ff22f02282fd95f8f..71fbc6ac5a16104f593cd89d11c7d653c0c9dd22 100644 --- a/doc/vcsh.1.ronn +++ b/doc/vcsh.1.ronn @@ -7,6 +7,8 @@ vcsh(1) - manage and sync config files via git `vcsh` delete <repo> +`vcsh` enter <repo> + `vcsh` exit `vcsh` help @@ -50,8 +52,11 @@ A sample configuration for `vcsh` and `mr` can be found at * delete: Delete an existing repository. +* enter: + Enter repository; spawn new <$SHELL>. + * exit: - Exit repository; unset ENV + Exit repository; unset ENV. * help: Display help. @@ -70,7 +75,7 @@ A sample configuration for `vcsh` and `mr` can be found at Seed .gitignore.d/<repo> from git ls-files. * use: - Use repository; set ENV + Use repository; set ENV. * <repo> <gitcommand>: Shortcut to run `vcsh` on a repo. Will prepend `git` to <command> by itself. diff --git a/vcsh b/vcsh index 4ba30e53e7e3635406782fdbdd6677c1636e4ac0..b5e703eddc9f0a03ecae035c9ef3a93411471aaf 100755 --- a/vcsh +++ b/vcsh @@ -21,6 +21,7 @@ help() { [<repo>] Clone from an existing repository help Display this help text delete Delete an existing repository + enter Enter repository; spawn new $SHELL exit Exit repository; unset ENV init <repo> Initialize a new repository list List all repositories @@ -89,6 +90,7 @@ if [ "$1" = 'clone' ]; then export VCSH_REPO_NAME export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git" elif [ "$1" = 'delete' ] || + [ "$1" = 'enter' ] || [ "$1" = 'init' ] || [ "$1" = 'run' ] || [ "$1" = 'seed-gitignore' ] || @@ -177,6 +179,13 @@ To continue, type \"Yes, do as I say\"" cd "$old_dir" verbose "delete end" +elif [ "$VCSH_COMMAND" = 'enter' ]; then + verbose "enter begin" + use || return $? + $SHELL + leave + verbose "enter end" + elif [ "$VCSH_COMMAND" = 'exit' ]; then verbose "exit begin" # if [ -n "$ZSH_VERSION" ] && [ "$VCSH_NO_IGNORE_EOF" = '1' ]; then