Fixed walking large directory issue
This commit is contained in:
parent
269ade50ff
commit
fe07d124db
|
@ -372,14 +372,8 @@ func (p *Project) Validate(path string, fcheck bool) bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
separator := string(os.PathSeparator)
|
if p.shouldIgnore(path) {
|
||||||
// supported paths
|
return false
|
||||||
for _, v := range p.Watcher.Ignore {
|
|
||||||
s := append([]string{p.Path}, strings.Split(v, separator)...)
|
|
||||||
abs, _ := filepath.Abs(filepath.Join(s...))
|
|
||||||
if path == abs || strings.HasPrefix(path, abs+separator) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// file check
|
// file check
|
||||||
if fcheck {
|
if fcheck {
|
||||||
|
@ -492,6 +486,10 @@ func (p *Project) cmd(stop <-chan bool, flag string, global bool) {
|
||||||
|
|
||||||
// Watch the files tree of a project
|
// Watch the files tree of a project
|
||||||
func (p *Project) walk(path string, info os.FileInfo, err error) error {
|
func (p *Project) walk(path string, info os.FileInfo, err error) error {
|
||||||
|
if p.shouldIgnore(path) {
|
||||||
|
return filepath.SkipDir
|
||||||
|
}
|
||||||
|
|
||||||
if p.Validate(path, true) {
|
if p.Validate(path, true) {
|
||||||
result := p.watcher.Walk(path, p.init)
|
result := p.watcher.Walk(path, p.init)
|
||||||
if result != "" {
|
if result != "" {
|
||||||
|
@ -511,6 +509,19 @@ func (p *Project) walk(path string, info os.FileInfo, err error) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Project) shouldIgnore(path string) bool {
|
||||||
|
separator := string(os.PathSeparator)
|
||||||
|
// supported paths
|
||||||
|
for _, v := range p.Watcher.Ignore {
|
||||||
|
s := append([]string{p.Path}, strings.Split(v, separator)...)
|
||||||
|
abs, _ := filepath.Abs(filepath.Join(s...))
|
||||||
|
if path == abs || strings.HasPrefix(path, abs+separator) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Print on files, cli, ws
|
// Print on files, cli, ws
|
||||||
func (p *Project) stamp(t string, o BufferOut, msg string, stream string) {
|
func (p *Project) stamp(t string, o BufferOut, msg string, stream string) {
|
||||||
ctime := time.Now()
|
ctime := time.Now()
|
||||||
|
|
Loading…
Reference in New Issue