mirror of
https://github.com/go-gitea/gitea
synced 2024-09-19 18:26:04 +00:00
71 lines
3.4 KiB
Go
71 lines
3.4 KiB
Go
|
// Package gitignore implements matching file system paths to gitignore patterns that
|
|||
|
// can be automatically read from a git repository tree in the order of definition
|
|||
|
// priorities. It support all pattern formats as specified in the original gitignore
|
|||
|
// documentation, copied below:
|
|||
|
//
|
|||
|
// Pattern format
|
|||
|
// ==============
|
|||
|
//
|
|||
|
// - A blank line matches no files, so it can serve as a separator for readability.
|
|||
|
//
|
|||
|
// - A line starting with # serves as a comment. Put a backslash ("\") in front of
|
|||
|
// the first hash for patterns that begin with a hash.
|
|||
|
//
|
|||
|
// - Trailing spaces are ignored unless they are quoted with backslash ("\").
|
|||
|
//
|
|||
|
// - An optional prefix "!" which negates the pattern; any matching file excluded
|
|||
|
// by a previous pattern will become included again. It is not possible to
|
|||
|
// re-include a file if a parent directory of that file is excluded.
|
|||
|
// Git doesn’t list excluded directories for performance reasons, so
|
|||
|
// any patterns on contained files have no effect, no matter where they are
|
|||
|
// defined. Put a backslash ("\") in front of the first "!" for patterns
|
|||
|
// that begin with a literal "!", for example, "\!important!.txt".
|
|||
|
//
|
|||
|
// - If the pattern ends with a slash, it is removed for the purpose of the
|
|||
|
// following description, but it would only find a match with a directory.
|
|||
|
// In other words, foo/ will match a directory foo and paths underneath it,
|
|||
|
// but will not match a regular file or a symbolic link foo (this is consistent
|
|||
|
// with the way how pathspec works in general in Git).
|
|||
|
//
|
|||
|
// - If the pattern does not contain a slash /, Git treats it as a shell glob
|
|||
|
// pattern and checks for a match against the pathname relative to the location
|
|||
|
// of the .gitignore file (relative to the toplevel of the work tree if not
|
|||
|
// from a .gitignore file).
|
|||
|
//
|
|||
|
// - Otherwise, Git treats the pattern as a shell glob suitable for consumption
|
|||
|
// by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will
|
|||
|
// not match a / in the pathname. For example, "Documentation/*.html" matches
|
|||
|
// "Documentation/git.html" but not "Documentation/ppc/ppc.html" or
|
|||
|
// "tools/perf/Documentation/perf.html".
|
|||
|
//
|
|||
|
// - A leading slash matches the beginning of the pathname. For example,
|
|||
|
// "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
|
|||
|
//
|
|||
|
// Two consecutive asterisks ("**") in patterns matched against full pathname
|
|||
|
// may have special meaning:
|
|||
|
//
|
|||
|
// - A leading "**" followed by a slash means match in all directories.
|
|||
|
// For example, "**/foo" matches file or directory "foo" anywhere, the same as
|
|||
|
// pattern "foo". "**/foo/bar" matches file or directory "bar"
|
|||
|
// anywhere that is directly under directory "foo".
|
|||
|
//
|
|||
|
// - A trailing "/**" matches everything inside. For example, "abc/**" matches
|
|||
|
// all files inside directory "abc", relative to the location of the
|
|||
|
// .gitignore file, with infinite depth.
|
|||
|
//
|
|||
|
// - A slash followed by two consecutive asterisks then a slash matches
|
|||
|
// zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b",
|
|||
|
// "a/x/y/b" and so on.
|
|||
|
//
|
|||
|
// - Other consecutive asterisks are considered invalid.
|
|||
|
//
|
|||
|
// Copyright and license
|
|||
|
// =====================
|
|||
|
//
|
|||
|
// Copyright (c) Oleg Sklyar, Silvertern and source{d}
|
|||
|
//
|
|||
|
// The package code was donated to source{d} to include, modify and develop
|
|||
|
// further as a part of the `go-git` project, release it on the license of
|
|||
|
// the whole project or delete it from the project.
|
|||
|
package gitignore
|