X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/91a1772555cbf6c7a86ee49dc97658ab81fd86d3..2cba2ad7bd28fd65df380511b29527c9e203d3a0:/vcsh diff --git a/vcsh b/vcsh index 7f475fe..1828880 100755 --- a/vcsh +++ b/vcsh @@ -18,7 +18,6 @@ do fi done - debug() { [ -n "$VCSH_DEBUG" ] && echo "$SELF: debug: $1" } @@ -42,7 +41,9 @@ help() { init Initialize a new repository clone \\ - [] Clone from an existing repository" >&2 + [] Clone from an existing repository + seed-gitignore \\ + Seed .gitignore.d/ from git ls-files" >&2 } use() { @@ -144,6 +145,7 @@ elif [ "$1" = 'clone' ]; then done [ "$VCSH_CONFLICT" = '1' ] && echo "$SELF: fatal: will stop after fetching and not try to merge!\n" && + echo " Once this situation has been resolved, run 'vcsh run git pull' to finish cloning.\n" && exit 3 git merge origin/master # vcsh use $REPO_NAME @@ -151,7 +153,7 @@ elif [ "$1" = 'clone' ]; then elif [ "$1" = 'init' ]; then verbose "init begin" - [ -z $2 ] && help && return 0 + [ -z $2 ] && help && echo && echo "$SELF $1: please specify repository to work on" && return 0 export REPO_NAME="$2" export GIT_DIR="$VCSH_BASE/$REPO_NAME.git" init @@ -169,6 +171,26 @@ elif [ "$1" = 'init' ]; then # verbose "exit end" # exit 0 +elif [ "$1" = 'seed-gitignore' ]; then + verbose "seed-gitignore begin" + [ -z $2 ] && help && echo && echo "$SELF $1: please specify repository to work on" && return 0 + use "$2" + files=$(git ls-files) + gitignores=$(for file in $(git ls-files); do + while true; do + echo $file; new="${file%/*}" + [ "$file" = "$new" ] && break + file="$new" + done; + done | sort -u | sed 's/^/!/') + [ -e .gitignore.d/$2 ] && + echo "$SELF: .gitignore.d/$2 exists, moving it to .gitignore.d/$2.bak" && + mv -f .gitignore.d/$2 .gitignore.d/$2.bak + echo '*' > .gitignore.d/$2 + for gitignore in $gitignores; do + echo $gitignore >> .gitignore.d/$2 + done + else verbose "defaulting to calling help()" help