From 5137f2cf25a71cfaf6d7794d86ea2ed52bb001d3 Mon Sep 17 00:00:00 2001 From: Bernhard Guillon Date: Mon, 6 Jul 2026 21:47:30 +0200 Subject: Docker test fixes: directory pattern matching, mtime-based sync, Go version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- sync.go | 3 +++ 1 file changed, 3 insertions(+) (limited to 'sync.go') diff --git a/sync.go b/sync.go index 526e143..6bdd651 100644 --- a/sync.go +++ b/sync.go @@ -5,11 +5,13 @@ import ( "log" "os" "path/filepath" + "time" ) type FileMeta struct { Size int64 Mode os.FileMode + ModTime time.Time Symlink string } @@ -65,6 +67,7 @@ func initialSync(hostDir, dataDir string, stack *GitignoreStack, dryRun bool) (* meta := FileMeta{ Size: info.Size(), Mode: info.Mode(), + ModTime: info.ModTime(), Symlink: linkTarget, } manifest.Files[relPath] = meta -- cgit v1.2.3