aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/format/index/index.go
diff options
context:
space:
mode:
authorPaul T <paul.t@gembaadvantage.com>2021-12-15 06:31:49 +0000
committerGitHub <noreply@github.com>2021-12-15 06:31:49 +0000
commit53a714bdc90026135e2f2ada1c4d6c925b2733cd (patch)
tree1fe7dc9f5974bc6e5a65e805b96e3a36be3f573e /plumbing/format/index/index.go
parentaba274ca7daf59d07d9559e6f99ca18ef0b78c7b (diff)
parentf0b111ab70e4e90013658b0835929b2083902017 (diff)
downloadgo-git-53a714bdc90026135e2f2ada1c4d6c925b2733cd.tar.gz
Merge branch 'go-git:master' into master
Diffstat (limited to 'plumbing/format/index/index.go')
-rw-r--r--plumbing/format/index/index.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/plumbing/format/index/index.go b/plumbing/format/index/index.go
index 649416a..f4c7647 100644
--- a/plumbing/format/index/index.go
+++ b/plumbing/format/index/index.go
@@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"path/filepath"
+ "strings"
"time"
"github.com/go-git/go-git/v5/plumbing"
@@ -211,3 +212,20 @@ type EndOfIndexEntry struct {
// their contents).
Hash plumbing.Hash
}
+
+// SkipUnless applies patterns in the form of A, A/B, A/B/C
+// to the index to prevent the files from being checked out
+func (i *Index) SkipUnless(patterns []string) {
+ for _, e := range i.Entries {
+ var include bool
+ for _, pattern := range patterns {
+ if strings.HasPrefix(e.Name, pattern) {
+ include = true
+ break
+ }
+ }
+ if !include {
+ e.SkipWorktree = true
+ }
+ }
+}