From 3566d2c860b0ad3ab7d6d5fb1490eb9a5b5f5974 Mon Sep 17 00:00:00 2001
From: guillep2k <github.com@mailfilter.com.ar>
Date: Fri, 2 Aug 2019 12:14:50 -0300
Subject: [PATCH] Include "executable" files in the index, as they are not
 necessarily binary (#7718)

---
 models/repo_indexer.go    | 2 +-
 modules/git/tree_entry.go | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/models/repo_indexer.go b/models/repo_indexer.go
index 83383807a7..3a41e0525a 100644
--- a/models/repo_indexer.go
+++ b/models/repo_indexer.go
@@ -232,7 +232,7 @@ func addDelete(filename string, repo *Repository, batch rupture.FlushingBatch) e
 }
 
 func isIndexable(entry *git.TreeEntry) bool {
-	return entry.IsRegular()
+	return entry.IsRegular() || entry.IsExecutable()
 }
 
 // parseGitLsTreeOutput parses the output of a `git ls-tree -r --full-name` command
diff --git a/modules/git/tree_entry.go b/modules/git/tree_entry.go
index 6019e34487..4e18cc8ead 100644
--- a/modules/git/tree_entry.go
+++ b/modules/git/tree_entry.go
@@ -108,6 +108,11 @@ func (te *TreeEntry) IsRegular() bool {
 	return te.gogitTreeEntry.Mode == filemode.Regular
 }
 
+// IsExecutable if the entry is an executable file (not necessarily binary)
+func (te *TreeEntry) IsExecutable() bool {
+	return te.gogitTreeEntry.Mode == filemode.Executable
+}
+
 // Blob returns the blob object the entry
 func (te *TreeEntry) Blob() *Blob {
 	encodedObj, err := te.ptree.repo.gogitRepo.Storer.EncodedObject(plumbing.AnyObject, te.gogitTreeEntry.Hash)