]> git.madduck.net Git - code/vcsh.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Introduce `vcsh setup`
authorRichard Hartmann <richih.mailinglist@gmail.com>
Wed, 23 Nov 2011 17:38:36 +0000 (18:38 +0100)
committerRichard Hartmann <richih.mailinglist@gmail.com>
Wed, 23 Nov 2011 17:38:36 +0000 (18:38 +0100)
_vcsh
doc/vcsh.1.ronn
vcsh

diff --git a/_vcsh b/_vcsh
index 07376d2079f2c3e94339cefba2a49ebf2a3b4ba1..d5ad9146953b3e6119f1be5011b144e22c0583aa 100644 (file)
--- 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"
                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"
        ))'
                use\:"Use repo; set ENV"
                \<REPO\>\:"Run git command directly"
        ))'
index 71fbc6ac5a16104f593cd89d11c7d653c0c9dd22..3ee97a469227f40c74f09ab6133ed6e236f5ffcb 100644 (file)
@@ -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` <repo> <gitcommand>
 `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.
 
 * seed-gitignore:
   Seed .gitignore.d/<repo> from git ls-files.
 
+* setup:
+  Set up repository with recommended settings.
+
 * use:
   Use repository; set ENV.
 
 * use:
   Use repository; set ENV.
 
diff --git a/vcsh b/vcsh
index cb9f216b7a96a869c3656c2f1ddfc4bee5b1ca5f..c05210d2b67e83e0ec43c5972748d747fcc96232 100755 (executable)
--- a/vcsh
+++ b/vcsh
@@ -30,6 +30,7 @@ help() {
 
    seed-gitignore \\
    <repo>               Seed .gitignore.d/<repo> from git ls-files
 
    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
    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
 }
 
        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" ] &&
 init() {
        verbose "init() begin"
        [ -e "$GIT_DIR" ] &&
@@ -56,10 +65,7 @@ init() {
                 return 1) || return $?
        cd "$GIT_WORK_TREE"
        git 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"
 }
 
        verbose "init() end"
 }
 
@@ -95,6 +101,7 @@ elif [ "$1" = 'delete' ] ||
      [ "$1" = 'init' ] ||
      [ "$1" = 'run' ] ||
      [ "$1" = 'seed-gitignore' ] ||
      [ "$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"
      [ "$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"
        # 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%/*}"
        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"
 
        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
 elif [ "$VCSH_COMMAND" = 'use' ]; then
        verbose "use begin"
 #      if [ -n "$ZSH_VERSION" ]; then