From: Richard Hartmann <richih.mailinglist@gmail.com>
Date: Wed, 23 Nov 2011 17:38:36 +0000 (+0100)
Subject: Introduce `vcsh setup`
X-Git-Url: https://git.madduck.net/code/vcsh.git/commitdiff_plain/5c2fca9c11b587c2c34ca52f65872056aa9c1b74?ds=sidebyside;hp=663af6efe8d81d4386127b8fbd05320f44988658

Introduce `vcsh setup`
---

diff --git a/_vcsh b/_vcsh
index 07376d2..d5ad914 100644
--- a/_vcsh
+++ b/_vcsh
@@ -11,6 +11,7 @@ _arguments \
 		list\:"list all repos"
 		run\:"run command on repo"
 		seed-gitignore\:"seed .gitignore.d/foo from git ls-files"
+		setup\:"set up repo with recommended settings"
 		use\:"Use repo; set ENV"
 		\<REPO\>\:"Run git command directly"
 	))'
diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn
index 71fbc6a..3ee97a4 100644
--- a/doc/vcsh.1.ronn
+++ b/doc/vcsh.1.ronn
@@ -21,6 +21,8 @@ vcsh(1) - manage and sync config files via git
 
 `vcsh` seed-gitignore <repo>
 
+`vcsh` setup <repo>
+
 `vcsh` use <repo>
 
 `vcsh` <repo> <gitcommand>
@@ -74,6 +76,9 @@ A sample configuration for `vcsh` and `mr` can be found at
 * seed-gitignore:
   Seed .gitignore.d/<repo> from git ls-files.
 
+* setup:
+  Set up repository with recommended settings.
+
 * use:
   Use repository; set ENV.
 
diff --git a/vcsh b/vcsh
index cb9f216..c05210d 100755
--- a/vcsh
+++ b/vcsh
@@ -30,6 +30,7 @@ help() {
 
    seed-gitignore \\
    <repo>               Seed .gitignore.d/<repo> from git ls-files
+   setup                Set up repository with recommended settings
    use <repo>           Use repository; set ENV
 
    <repo> <git command> Special command that allows you to run git commands
@@ -44,6 +45,14 @@ verbose() {
 	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() {
 	verbose "init() begin"
 	[ -e "$GIT_DIR" ] &&
@@ -56,10 +65,7 @@ init() {
 		 return 1) || return $?
 	cd "$GIT_WORK_TREE"
 	git init
-	git config core.worktree     "$GIT_WORK_TREE"
-	git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
-	touch   "$HOME/.gitignore.d/$VCSH_REPO_NAME"
-	git add "$HOME/.gitignore.d/$VCSH_REPO_NAME"
+	setup
 	verbose "init() end"
 }
 
@@ -95,6 +101,7 @@ elif [ "$1" = 'delete' ] ||
      [ "$1" = 'init' ] ||
      [ "$1" = 'run' ] ||
      [ "$1" = 'seed-gitignore' ] ||
+     [ "$1" = 'setup' ] ||
      [ "$1" = 'use' ]; then
 	[ -z $2 ] && echo "$SELF $1: error: please specify repository to work on" && return 1
 	export VCSH_COMMAND="$1"
@@ -226,7 +233,6 @@ elif [ "$VCSH_COMMAND" = 'seed-gitignore' ]; then
 	# Going back into old directory at the end in case `vcsh use` is reactivated.
 	old_dir="$PWD"
 	cd "$HOME"
-	git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
 	gitignores=$(for file in $(git ls-files); do
 		while true; do
 			echo $file; new="${file%/*}"
@@ -255,6 +261,13 @@ elif [ "$VCSH_COMMAND" = 'seed-gitignore' ]; then
 	cd "$old_dir"
 	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
 	verbose "use begin"
 #	if [ -n "$ZSH_VERSION" ]; then