]> 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:

Merge branch 'hook-support'
authorRichard Hartmann <richih.mailinglist@gmail.com>
Mon, 13 Feb 2012 01:02:23 +0000 (02:02 +0100)
committerRichard Hartmann <richih.mailinglist@gmail.com>
Mon, 13 Feb 2012 01:02:23 +0000 (02:02 +0100)
1  2 
vcsh

diff --combined vcsh
index 86e88f0ea59760abdd63bfc794d5bc77b178b14b,f922cea50f8d44df492807b2b6a37ec1b52a8fc4..ba0049e542120cf4931ce3652b9b412808bef2b4
--- 1/vcsh
--- 2/vcsh
+++ b/vcsh
@@@ -1,7 -1,7 +1,7 @@@
  #!/bin/sh
  
  # This program is licensed under the GNU GPL version 2 or later.
 -# (c) Richard "RichiH" Hartmann <richih.mailinglist@gmail.com>, 2011
 +# (c) Richard "RichiH" Hartmann <richih.mailinglist@gmail.com>, 2011-2012
  # For details, see LICENSE. To submit patches, you have to agree to
  # license your code under the GNU GPL version 2 or later.
  
@@@ -35,7 -35,6 +35,7 @@@ help() 
     run <repo> \\
         <command>        Use this repository
     setup                Set up repository with recommended settings
 +   which <substring>    Find substring in name of any tracked file
     write-gitignore \\
     <repo>               Write .gitignore.d/<repo> via git ls-files
  
@@@ -95,13 -94,13 +95,13 @@@ delete() 
  $files
  
  AGAIN, THIS WILL DELETE YOUR DATA!
 -To continue, type \"Yes, do as I say\""
 +To continue, type 'Yes, do as I say'"
        read answer
 -      [ "x$answer" = "xYes, do as I say" ] || exit 16
 +      [ "x$answer" = 'xYes, do as I say' ] || exit 16
        for file in $files; do
                rm -f $file || info "could not delete '$file', continuing with deletion"
        done
 -      rmdir "$GIT_DIR" || error "could not delete '$GIT_DIR'"
 +      rm -r "$GIT_DIR" || error "could not delete '$GIT_DIR'"
  }
  
  enter() {
@@@ -118,7 -117,6 +118,7 @@@ git_dir_exists() 
  hook() {
        for hook in $VCSH_HOOK_D/$1* $VCSH_HOOK_D/$VCSH_REPO_NAME.$1*; do
                [ -x "$hook" ] || continue
 +              info "executing '$hook'"
                "$hook"
        done
  }
@@@ -184,14 -182,6 +184,14 @@@ use() 
        export VCSH_DIRECTORY="$VCSH_REPO_NAME"
  }
  
 +which() {
 +      for VCSH_REPO_NAME in $(list); do
 +              for VCSH_FILE in $(get_files); do
 +                      echo $VCSH_FILE | grep -q "$VCSH_COMMAND_PARAMETER" && echo "$VCSH_REPO_NAME: $VCSH_FILE"
 +              done
 +      done | sort -u
 +}
 +
  write_gitignore() {
        use
        cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11
                fatal "could not move '$tempfile' to '$VCSH_BASE/.gitignore.d/$VCSH_REPO_NAME'" 53
  }
  
 -if [ ! x$VCSH_GITIGNORE = x'exact' ] && [ ! x$VCSH_GITIGNORE = x'recursive' ]; then
 -      fatal "\$VCSH_GITIGNORE must be either 'exact' or 'recursive'" 1
 +if [ ! "x$VCSH_GITIGNORE" = 'xexact' ] && [ ! "x$VCSH_GITIGNORE" = 'xrecursive' ]; then
 +      fatal "'\$VCSH_GITIGNORE' must be either 'exact' or 'recursive'" 1
  fi
  
  if [ "$1" = 'clone' ]; then
 -      [ -z $2 ] && fatal "$1: please specify a remote" 1
 +      [ -z "$2" ] && fatal "$1: please specify a remote" 1
        export VCSH_COMMAND="$1"
        GIT_REMOTE="$2"
        [ -n "$3" ] && VCSH_REPO_NAME="$3" || VCSH_REPO_NAME=$(basename "$GIT_REMOTE" .git)
        export VCSH_REPO_NAME
        export GIT_DIR="$VCSH_REPO_D/$VCSH_REPO_NAME.git"
 -elif [ "$1" = 'delete' ] ||
 -     [ "$1" = 'enter' ] ||
 -     [ "$1" = 'init' ] ||
 -     [ "$1" = 'list-tracked-by' ] ||
 -     [ "$1" = 'rename' ] ||
 -     [ "$1" = 'run' ] ||
 -     [ "$1" = 'setup' ] ||
 +elif [ "$1" = 'which' ]; then
 +      [ -z "$2" ] && fatal "$1: please specify a filename" 1
 +      [ -n "$3" ] && fatal "$1: too many parameters" 1
 +      export VCSH_COMMAND="$1"
 +      export VCSH_COMMAND_PARAMETER="$2"
 +elif [ "$1" = 'delete' ]           ||
 +     [ "$1" = 'enter' ]            ||
 +     [ "$1" = 'init' ]             ||
 +     [ "$1" = 'list-tracked-by' ]  ||
 +     [ "$1" = 'rename' ]           ||
 +     [ "$1" = 'run' ]              ||
 +     [ "$1" = 'setup' ]            ||
       [ "$1" = 'write-gitignore' ]; then
        [ -z $2 ]                      && fatal "$1: please specify repository to work on" 1
        [ "$1" = 'rename' -a -z "$3" ] && fatal "$1: please specify a target name" 1
@@@ -280,7 -265,7 +280,7 @@@ f
  # Mangle the input to fit normal operation.
  if echo $VCSH_REPO_NAME | grep -q '/'; then
        export GIT_DIR=$VCSH_REPO_NAME
 -      export VCSH_REPO_NAME=$(basename $VCSH_REPO_NAME .git)
 +      export VCSH_REPO_NAME=$(basename "$VCSH_REPO_NAME" .git)
  fi
  
  
@@@ -298,5 -283,7 +298,7 @@@ don
  
  verbose "$VCSH_COMMAND begin"
  export VCSH_COMMAND=$(echo $VCSH_COMMAND | sed 's/-/_/g')
+ hook pre-command
  $VCSH_COMMAND
+ hook post-command
  verbose "$VCSH_COMMAND end, exiting"