feat(client): ignore rule in .lodge

This commit is contained in:
hh committed 2026-10-02 21:59:27 +00:00
1 parent 4207f7e6f8
commit 45c81cfcaf
8 files changed
+146 -18

No files matched your search

+7 -5
View File
@@ -114,20 +114,20 @@ func (c *Client) Sync(ctx context.Context, dir string, online bool) (Result, err
func (c *Client) scan(repo *gitrepo.Repo, rules Rules) diskFiles {
found := diskFiles{shared: protocol.Manifest{}, branch: protocol.Manifest{}, tracked: repo.Tracked(rules.paths())}
for _, rule := range rules {
for _, rule := range rules.synced() {
start := filepath.Join(repo.Root, filepath.FromSlash(rule.Path))
_ = filepath.WalkDir(start, func(full string, entry fs.DirEntry, err error) error {
if err != nil {
return nil
}
if entry.IsDir() && entry.Name() == ".git" {
rel, _ := filepath.Rel(repo.Root, full)
rel = filepath.ToSlash(rel)
if entry.IsDir() && (entry.Name() == ".git" || rules.ignored(rel)) {
return filepath.SkipDir
}
if !entry.Type().IsRegular() || strings.HasSuffix(full, tempSuffix) {
return nil
}
rel, _ := filepath.Rel(repo.Root, full)
rel = filepath.ToSlash(rel)
if found.tracked[rel] || !rules.covers(rel, rule.Shared) {
return nil
}
@@ -257,7 +257,9 @@ func (c *Client) pass(ctx context.Context, repo *gitrepo.Repo, st *worktreeState
}
continue
}
relevant := protocol.SafePath
relevant := func(path string) bool {
return protocol.SafePath(path) && !rules.ignored(path)
}
if active[space] != nil {
relevant = func(path string) bool {
return protocol.SafePath(path) && rules.covers(path, space == protocol.SharedSpace) && !found.tracked[path]