From c1b6930b5e9ec3e3871ed04150f100b1ff12aa8f Mon Sep 17 00:00:00 2001 From: Richard Hartmann Date: Sun, 12 May 2013 21:50:03 +0200 Subject: [PATCH 1/1] Support $VCSH_GITIGNORE == none This will neither add core.excludesfile nor write a ignore file. --- doc/vcsh.1.ronn | 6 ++++-- vcsh | 14 ++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn index 4ec9548..7ebf9f5 100644 --- a/doc/vcsh.1.ronn +++ b/doc/vcsh.1.ronn @@ -151,14 +151,16 @@ executed in the context of your shell. Interesting knobs you can turn: * <$VCSH_GITIGNORE>: - Can be either or . + Can be , , or . - will seed the repo-specific <.gitignore> with all file and directory + will seed the repo-specific ignore file with all file and directory names which `git ls-files` returns. will descend through all directories recursively additionally to the above. + will not write any ignore file. + Defaults to . Less interesting knobs you could turn: diff --git a/vcsh b/vcsh index 7a0f712..f1f50de 100755 --- a/vcsh +++ b/vcsh @@ -238,7 +238,7 @@ upgrade() { hook pre-upgrade use git config core.worktree "$GIT_WORK_TREE" - git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME" + [ ! "x$VCSH_GITIGNORE" = 'xnone' ] && git config core.excludesfile ".gitignore.d/$VCSH_REPO_NAME" git config vcsh.vcsh 'true' [ -e "$VCSH_BASE/.gitignore.d/$VCSH_REPO_NAME" ] && git add -f "$VCSH_BASE/.gitignore.d/$VCSH_REPO_NAME" hook post-upgrade @@ -259,6 +259,12 @@ which() { } write_gitignore() { + # Don't do anything if the user does not want to write gitignore + if [ "x$VCSH_GITIGNORE" = 'xnone' ] then + info "Not writing gitignore as '\$VCSH_GITIGNORE' is set to 'none'" + exit + fi + use cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11 gitignores=$(for file in $(git ls-files); do @@ -272,7 +278,7 @@ write_gitignore() { echo '*' > "$tempfile" || fatal "could not write to '$tempfile'" 57 for gitignore in $gitignores; do echo "$gitignore" | sed 's@^@!/@' >> "$tempfile" || fatal "could not write to '$tempfile'" 57 - if [ x$VCSH_GITIGNORE = x'recursive' ] && [ -d "$gitignore" ]; then + if [ "x$VCSH_GITIGNORE" = 'xrecursive' ] && [ -d "$gitignore" ]; then { echo "$gitignore/*" | sed 's@^@!/@' >> "$tempfile" || fatal "could not write to '$tempfile'" 57; } fi done @@ -289,8 +295,8 @@ write_gitignore() { fatal "could not move '$tempfile' to '$VCSH_BASE/.gitignore.d/$VCSH_REPO_NAME'" 53 } -if [ ! "x$VCSH_GITIGNORE" = 'xexact' ] && [ ! "x$VCSH_GITIGNORE" = 'xrecursive' ]; then - fatal "'\$VCSH_GITIGNORE' must be either 'exact' or 'recursive'" 1 +if [ ! "x$VCSH_GITIGNORE" = 'xexact' ] && [ ! "x$VCSH_GITIGNORE" = 'xrecursive' ] && [ ! "x$VCSH_GITIGNORE" = 'xnone' ]; then + fatal "'\$VCSH_GITIGNORE' must equal 'exact', 'recursive', or 'none'" 1 fi if [ "$1" = 'clone' ]; then -- 2.39.5