diff options
| author | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-07-06 21:47:30 +0200 |
|---|---|---|
| committer | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-07-06 21:47:30 +0200 |
| commit | 5137f2cf25a71cfaf6d7794d86ea2ed52bb001d3 (patch) | |
| tree | 11f43bb2caef501f039500c627c9946042aa27ed /watcher.go | |
| parent | ad7575e85ebf6332d324ca5997db18ea81065df4 (diff) | |
| download | sourcewatch-5137f2cf25a71cfaf6d7794d86ea2ed52bb001d3.tar.gz sourcewatch-5137f2cf25a71cfaf6d7794d86ea2ed52bb001d3.zip | |
Docker test fixes: directory pattern matching, mtime-based sync, Go version
- Fixed directory pattern matching: go-gitignore doesn't match 'build/'
against bare 'build', now checks with trailing slash appended
- Added ModTime to FileMeta for reliable change detection (same-size
file modifications now sync correctly)
- Updated Dockerfile to golang:1.24-alpine (was 1.22)
- Downgraded go.mod to Go 1.24 (system has custom 1.26.4 build)
Docker tested with podman:
- Initial sync correctly excludes ignored dirs/files
- Nested .gitignore works (sub/ ignores *.tmp)
- Watcher syncs new/modified/deleted files
- Case-sensitive rename (Foo→foo) handled correctly
- Same-size file modifications sync correctly
Diffstat (limited to 'watcher.go')
| -rw-r--r-- | watcher.go | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -127,6 +127,7 @@ func syncCreate(srcPath, destPath, relPath string, manifest *Manifest, stack *Gi meta := FileMeta{ Size: info.Size(), Mode: info.Mode(), + ModTime: info.ModTime(), Symlink: linkTarget, } manifest.Files[relPath] = meta @@ -161,13 +162,14 @@ func syncWrite(srcPath, destPath, relPath string, manifest *Manifest, dryRun, ve } meta, exists := manifest.Files[relPath] - if exists && meta.Size == info.Size() && meta.Mode == info.Mode() { + if exists && meta.Size == info.Size() && meta.Mode == info.Mode() && meta.ModTime.Equal(info.ModTime()) { return } manifest.Files[relPath] = FileMeta{ - Size: info.Size(), - Mode: info.Mode(), + Size: info.Size(), + Mode: info.Mode(), + ModTime: info.ModTime(), } if dryRun { |
