fi
done
-
debug() {
[ -n "$VCSH_DEBUG" ] && echo "$SELF: debug: $1"
}
init <repo> Initialize a new repository
clone <remote> \\
- [<repo>] Clone from an existing repository" >&2
+ [<repo>] Clone from an existing repository
+ seed-gitignore \\
+ <repo> Seed .gitignore.d/<repo> from git ls-files" >&2
}
use() {
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 <foo> git pull' to finish cloning.\n" &&
exit 3
git merge origin/master
# vcsh use $REPO_NAME
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
# 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