<newname> Rename repository
run <repo> \\
<command> Use this repository
-
- seed-gitignore \\
- <repo> Seed .gitignore.d/<repo> from git ls-files
setup Set up repository with recommended settings
+ write-gitignore \\
+ <repo> Write .gitignore.d/<repo> via git ls-files
<repo> <git command> Special command that allows you to run git commands
directly without having to type so much ;)" >&2
+ <repo> Special command that enters a repository
}
debug() {
$VCSH_EXTERNAL_COMMAND
}
-seed_gitignore() {
+setup() {
+ use
+ git config core.worktree "$GIT_WORK_TREE"
+ git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
+ git config vcsh.vcsh 'true'
+ [ -e "$HOME/.gitignore.d/$VCSH_REPO_NAME" ] && git add -f "$HOME/.gitignore.d/$VCSH_REPO_NAME"
+}
+
+use() {
+ git_dir_exists
+ export GIT_WORK_TREE="$(git config --get core.worktree)"
+ export VCSH_DIRECTORY="$VCSH_REPO_NAME"
+}
+
+write_gitignore() {
use
cd "$HOME" || fatal "could not enter '$HOME'" 11
gitignores=$(for file in $(git ls-files); do
fatal "could not move '$tempfile' to '$HOME/.gitignore.d/$VCSH_REPO_NAME'" 53
}
-setup() {
- use
- git config core.worktree "$GIT_WORK_TREE"
- git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME"
- git config vcsh.vcsh 'true'
- [ -e "$HOME/.gitignore.d/$VCSH_REPO_NAME" ] && git add -f "$HOME/.gitignore.d/$VCSH_REPO_NAME"
-}
-
-use() {
- git_dir_exists
- export GIT_WORK_TREE="$(git config --get core.worktree)"
- export VCSH_DIRECTORY="$VCSH_REPO_NAME"
-}
-
if [ "$1" = 'clone' ]; then
[ -z $2 ] && fatal "$1: please specify a remote" 1
export VCSH_COMMAND="$1"
[ "$1" = 'list-tracked-by' ] ||
[ "$1" = 'rename' ] ||
[ "$1" = 'run' ] ||
- [ "$1" = 'seed-gitignore' ] ||
- [ "$1" = 'setup' ]; then
+ [ "$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
[ "$1" = 'run' -a -z "$3" ] && fatal "$1: please specify a command" 1
export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git"
[ "$VCSH_COMMAND" = 'rename' ] && export GIT_DIR_NEW="$VCSH_BASE/$3.git"
[ "$VCSH_COMMAND" = 'run' ] && shift 2 && export VCSH_EXTERNAL_COMMAND="$*"
- [ "$VCSH_COMMAND" = 'seed-gitignore' ]
+ [ "$VCSH_COMMAND" = 'write-gitignore' ]
elif [ "$1" = 'list' ] ||
[ "$1" = 'list-tracked' ]; then
export VCSH_COMMAND="$1"
-elif [ -n "$1" ]; then
- export VCSH_COMMAND=run
+elif [ -n "$1" -a -n "$2" ]; then
+ export VCSH_COMMAND='run'
export VCSH_REPO_NAME="$1"
export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git"
[ -d $GIT_DIR ] || { help; exit 1; }
shift 1
export VCSH_EXTERNAL_COMMAND="git $*"
+elif [ -n "$1" ]; then
+ export VCSH_COMMAND='enter'
+ export VCSH_REPO_NAME="$1"
+ export GIT_DIR="$VCSH_BASE/$VCSH_REPO_NAME.git"
+ [ -d $GIT_DIR ] || { help; exit 1; }
else
# $1 is empty, or 'help'
help && exit