Skip to content
Snippets Groups Projects
Commit 5c2fca9c authored by Richard Hartmann's avatar Richard Hartmann
Browse files

Introduce `vcsh setup`

parent 663af6ef
Branches
Tags
No related merge requests found
...@@ -11,6 +11,7 @@ _arguments \ ...@@ -11,6 +11,7 @@ _arguments \
list\:"list all repos" list\:"list all repos"
run\:"run command on repo" run\:"run command on repo"
seed-gitignore\:"seed .gitignore.d/foo from git ls-files" seed-gitignore\:"seed .gitignore.d/foo from git ls-files"
setup\:"set up repo with recommended settings"
use\:"Use repo; set ENV" use\:"Use repo; set ENV"
\<REPO\>\:"Run git command directly" \<REPO\>\:"Run git command directly"
))' ))'
...@@ -21,6 +21,8 @@ vcsh(1) - manage and sync config files via git ...@@ -21,6 +21,8 @@ vcsh(1) - manage and sync config files via git
`vcsh` seed-gitignore <repo> `vcsh` seed-gitignore <repo>
`vcsh` setup <repo>
`vcsh` use <repo> `vcsh` use <repo>
`vcsh` <repo> <gitcommand> `vcsh` <repo> <gitcommand>
...@@ -74,6 +76,9 @@ A sample configuration for `vcsh` and `mr` can be found at ...@@ -74,6 +76,9 @@ A sample configuration for `vcsh` and `mr` can be found at
* seed-gitignore: * seed-gitignore:
Seed .gitignore.d/<repo> from git ls-files. Seed .gitignore.d/<repo> from git ls-files.
* setup:
Set up repository with recommended settings.
* use: * use:
Use repository; set ENV. Use repository; set ENV.
......
...@@ -30,6 +30,7 @@ help() { ...@@ -30,6 +30,7 @@ help() {
seed-gitignore \\ seed-gitignore \\
<repo> Seed .gitignore.d/<repo> from git ls-files <repo> Seed .gitignore.d/<repo> from git ls-files
setup Set up repository with recommended settings
use <repo> Use repository; set ENV use <repo> Use repository; set ENV
<repo> <git command> Special command that allows you to run git commands <repo> <git command> Special command that allows you to run git commands
...@@ -44,6 +45,14 @@ verbose() { ...@@ -44,6 +45,14 @@ verbose() {
if [ -n "$VCSH_DEBUG" ] || [ -n "$VCSH_VERBOSE" ]; then echo "$SELF: verbose: $@"; fi if [ -n "$VCSH_DEBUG" ] || [ -n "$VCSH_VERBOSE" ]; then echo "$SELF: verbose: $@"; fi
} }
setup() {
git config core.worktree "$GIT_WORK_TREE"
git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
git config vcsh.vcsh 'true'
touch "$HOME/.gitignore.d/$VCSH_REPO_NAME"
git add "$HOME/.gitignore.d/$VCSH_REPO_NAME"
}
init() { init() {
verbose "init() begin" verbose "init() begin"
[ -e "$GIT_DIR" ] && [ -e "$GIT_DIR" ] &&
...@@ -56,10 +65,7 @@ init() { ...@@ -56,10 +65,7 @@ init() {
return 1) || return $? return 1) || return $?
cd "$GIT_WORK_TREE" cd "$GIT_WORK_TREE"
git init git init
git config core.worktree "$GIT_WORK_TREE" setup
git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
touch "$HOME/.gitignore.d/$VCSH_REPO_NAME"
git add "$HOME/.gitignore.d/$VCSH_REPO_NAME"
verbose "init() end" verbose "init() end"
} }
...@@ -95,6 +101,7 @@ elif [ "$1" = 'delete' ] || ...@@ -95,6 +101,7 @@ elif [ "$1" = 'delete' ] ||
[ "$1" = 'init' ] || [ "$1" = 'init' ] ||
[ "$1" = 'run' ] || [ "$1" = 'run' ] ||
[ "$1" = 'seed-gitignore' ] || [ "$1" = 'seed-gitignore' ] ||
[ "$1" = 'setup' ] ||
[ "$1" = 'use' ]; then [ "$1" = 'use' ]; then
[ -z $2 ] && echo "$SELF $1: error: please specify repository to work on" && return 1 [ -z $2 ] && echo "$SELF $1: error: please specify repository to work on" && return 1
export VCSH_COMMAND="$1" export VCSH_COMMAND="$1"
...@@ -226,7 +233,6 @@ elif [ "$VCSH_COMMAND" = 'seed-gitignore' ]; then ...@@ -226,7 +233,6 @@ elif [ "$VCSH_COMMAND" = 'seed-gitignore' ]; then
# Going back into old directory at the end in case `vcsh use` is reactivated. # Going back into old directory at the end in case `vcsh use` is reactivated.
old_dir="$PWD" old_dir="$PWD"
cd "$HOME" cd "$HOME"
git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
gitignores=$(for file in $(git ls-files); do gitignores=$(for file in $(git ls-files); do
while true; do while true; do
echo $file; new="${file%/*}" echo $file; new="${file%/*}"
...@@ -255,6 +261,13 @@ elif [ "$VCSH_COMMAND" = 'seed-gitignore' ]; then ...@@ -255,6 +261,13 @@ elif [ "$VCSH_COMMAND" = 'seed-gitignore' ]; then
cd "$old_dir" cd "$old_dir"
verbose "seed-gitignore end" verbose "seed-gitignore end"
elif [ "$VCSH_COMMAND" = 'setup' ]; then
verbose "seed-gitignore begin"
use || return $?
setup || return $?
leave
verbose "seed-gitignore end"
elif [ "$VCSH_COMMAND" = 'use' ]; then elif [ "$VCSH_COMMAND" = 'use' ]; then
verbose "use begin" verbose "use begin"
# if [ -n "$ZSH_VERSION" ]; then # if [ -n "$ZSH_VERSION" ]; then
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment