From a82dfd998413a033234b6e604200331e64f8528f Mon Sep 17 00:00:00 2001
From: Jochen Keil <jochen.keil@gmail.com>
Date: Sun, 14 Feb 2016 22:02:33 +0100
Subject: [PATCH] Fix write_gitignore for git version >= 2.7

As of git version 2.7 it is no longer necessary to include parent
directories in the list of files not to be ignored.

This fixes #195.
---
 vcsh | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/vcsh b/vcsh
index 98e0acd..d4e1ba0 100755
--- a/vcsh
+++ b/vcsh
@@ -476,14 +476,21 @@ write_gitignore() {
 
 	use
 	cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11
+	local GIT_VERSION=$(git --version)
+	local GIT_VERSION_MAJOR=$(echo $GIT_VERSION | sed -n 's/.* \([0-9]\)\..*/\1/p')
+	local GIT_VERSION_MINOR=$(echo $GIT_VERSION | sed -n 's/.* \([0-9]\)\.\([0-9]\)\..*/\2/p')
 	OLDIFS=$IFS
 	IFS=$(printf '\n\t')
 	gitignores=$(for file in $(git ls-files); do
-		while true; do
-			echo "$file"; new=${file%/*}
-			[ x"$file" = x"$new" ] && break
-			file=$new
-		done;
+		if [ $GIT_VERSION_MAJOR -ge 2 -a $GIT_VERSION_MINOR -ge 7 ]; then
+			echo "$file";
+		else
+			while true; do
+				echo "$file"; new=${file%/*}
+				[ x"$file" = x"$new" ] && break
+				file=$new
+			done;
+		fi
 	done | sort -u)
 
 	# Contrary to GNU mktemp, mktemp on BSD/OSX requires a template for temp files
-- 
GitLab