gitignore

package module
v0.0.0-...-205db1a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2020 License: MIT Imports: 5 Imported by: 55

README

go-gitignore Build Status

A fast gitignore matching library for Go.

This library use simple tree index for matching, so keep fast if gitignore file has many pattern.

Usage

gitignore, _ := gitignore.NewGitIgnore("/path/to/gitignore")

path := "/path/to/file"
isDir := false
gitignore.Match(path, isDir)
Specify base directory

go-gitignore treat path as a base directory. If you want to specify other base (e.g. current directory and Global gitignore), you can like the following.

gitignore, _ := gitignore.NewGitIgnore("/home/you/.gitignore", ".")
From io.Reader

go-gitignore can initialize from io.Reader.

gitignore, _ := gitignore.NewGitIgnoreFromReader(base, reader)

Simple tree index

go-gitignore parse gitignore file, and generate a simple tree index for matching like the following.

.
├── accept
│   ├── absolute
│   │   └── depth
│   │       ├── initial
│   │       └── other
│   └── relative
│       └── depth
│           ├── initial
│           └── other
└── ignore
    ├── absolute
    │   └── depth
    │       ├── initial
    │       └── other
    └── relative
        └── depth
            ├── initial
            └── other

Features

  • Support absolute path (/path/to/ignore)
  • Support relative path (path/to/ignore)
  • Support accept pattern (!path/to/accept)
  • Support directory pattern (path/to/directory/)
  • Support glob pattern (path/to/*.txt)

note: glob pattern

go-gitignore use filepath.Match for matching meta char pattern, so not support recursive pattern (path/**/file).

Installation

$ go get github.com/monochromegane/go-gitignore

Contribution

  1. Fork it
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the go test ./... command and confirm that it passes
  6. Run gofmt -s
  7. Create new Pull Request

License

MIT

Author

monochromegane

Documentation

Index

Constants

This section is empty.

Variables

Functions

This section is empty.

Types

type DummyIgnoreMatcher

type DummyIgnoreMatcher bool

func (DummyIgnoreMatcher) Match

func (d DummyIgnoreMatcher) Match(path string, isDir bool) bool

type IgnoreMatcher

type IgnoreMatcher interface {
	Match(path string, isDir bool) bool
}

func NewGitIgnore

func NewGitIgnore(gitignore string, base ...string) (IgnoreMatcher, error)

func NewGitIgnoreFromReader

func NewGitIgnoreFromReader(path string, r io.Reader) IgnoreMatcher

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL