mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
96 lines
2.3 KiB
Markdown
96 lines
2.3 KiB
Markdown
|
# go-gitignore [![Build Status](https://travis-ci.org/monochromegane/go-gitignore.svg)](https://travis-ci.org/monochromegane/go-gitignore)
|
||
|
|
||
|
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
|
||
|
|
||
|
```go
|
||
|
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.
|
||
|
|
||
|
```go
|
||
|
gitignore, _ := gitignore.NewGitIgnore("/home/you/.gitignore", ".")
|
||
|
```
|
||
|
|
||
|
### From io.Reader
|
||
|
|
||
|
go-gitignore can initialize from io.Reader.
|
||
|
|
||
|
```go
|
||
|
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](https://golang.org/pkg/path/filepath/#Match) for matching meta char pattern, so not support recursive pattern (path/`**`/file).
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
```sh
|
||
|
$ 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](https://github.com/monochromegane/go-gitignore/blob/master/LICENSE)
|
||
|
|
||
|
## Author
|
||
|
|
||
|
[monochromegane](https://github.com/monochromegane)
|
||
|
|