X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/eb672cdb05dc0bd6f2b2b1c6b61d2f055abc73c5..b57143886c638b166aa6c0933b8ffb25df4f67be:/vcsh diff --git a/vcsh b/vcsh index c1b4874..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() { @@ -152,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 @@ -170,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