## SYNOPSIS
- `vcsh` clone <url> [<location>]
+ `vcsh` clone <url> [<repo>]
`vcsh` delete <repo>
A sample configuration for `vcsh` and `mr` can be found at
*https://github.com/RichiH/vcsh_mr_template*
+ Please note that you can always use a path instead of a name for <repo>.
+ This is needed to support mr and other scripts properly and of no concern to
+ an interactive user.
+
## OPTIONS
* clone:
Run command with <$GIT_DIR> and <$GIT_WORK_TREE> set. Allows you to run any
and all commands without any restrictions. Use with care.
+ Please note that there is a somewhat magic feature for run. Instead of <repo>
+ it accepts <path>, as well. Anything that has a slash in it will be assumed to
+ be a path. `vcsh run` will then operate on this directory instead of the one
+ normally generated from the repository's name.
+ This is needed to support mr and other scripts properly and of no concern to
+ an interactive user.
+
* seed-gitignore:
Seed .gitignore.d/<repo> from git ls-files.
#!/bin/sh
-[ -n "$VCSH_DEBUG" ] && set -x
+[ -n "$VCSH_DEBUG" ] && set -vx
[ -z "$XDG_CONFIG_HOME" ] && XDG_CONFIG_HOME="$HOME/.config"
[ -z "$VCSH_BASE" ] && VCSH_BASE="$XDG_CONFIG_HOME/vcsh/repo.d"
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" || error "could not touch '$HOME/.gitignore.d/$VCSH_REPO_NAME'"
- git add "$HOME/.gitignore.d/$VCSH_REPO_NAME"
+ [ -e "$HOME/.gitignore.d/$VCSH_REPO_NAME" ] && git add -f "$HOME/.gitignore.d/$VCSH_REPO_NAME"
}
use() {
export VCSH_REPO_NAME="$2"
export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git"
[ "$VCSH_COMMAND" = 'rename' ] && export GIT_DIR_NEW="$VCSH_BASE/$3.git"
- if [ "$VCSH_COMMAND" = 'run' ]; then
- shift 2
- export VCSH_EXTERNAL_COMMAND="$*"
- # Did we receive a directory instead of a name? 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)
- fi
- fi
+ [ "$VCSH_COMMAND" = 'run' ] && shift 2 && export VCSH_EXTERNAL_COMMAND="$*"
[ "$VCSH_COMMAND" = 'seed-gitignore' ]
-# [ "$VCSH_COMMAND" = 'seed-gitignore' ] && export VCSH_COMMAND='seed_gitignore'
elif [ "$1" = 'list' ]; then
export VCSH_COMMAND="$1"
elif [ -n "$1" ]; then
help && exit
fi
+ # Did we receive a directory instead of a name?
+ # 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)
+ fi
+
+
for check_directory in "$VCSH_BASE" "$HOME/.gitignore.d"
do
if [ ! -d "$check_directory" ]; then