<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sourcewatch.git/watcher_test.go, branch main</title>
<subtitle>experimental filesync for windows docker bindmounts</subtitle>
<link rel='alternate' type='text/html' href='https://git.begu.at/sourcewatch.git/'/>
<entry>
<title>Add log level system and sync logging</title>
<updated>2026-07-06T20:16:37+00:00</updated>
<author>
<name>Bernhard Guillon</name>
<email>Bernhard.Guillon@begu.org</email>
</author>
<published>2026-07-06T20:16:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.begu.at/sourcewatch.git/commit/?id=913a974eca2522ba7c6d27066481bb2c6635db53'/>
<id>913a974eca2522ba7c6d27066481bb2c6635db53</id>
<content type='text'>
- log.go: log level system (DEBUG, INFO, WARN, ERROR, NONE)
- CLI: -log-level flag (default info), -verbose as shorthand for debug
- Watcher: logs sync/remove actions at INFO level
- Watcher: logs events at DEBUG level
- Errors: structured error messages (DISK FULL, PERMISSION DENIED, etc.)
- Updated README with -log-level flag
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- log.go: log level system (DEBUG, INFO, WARN, ERROR, NONE)
- CLI: -log-level flag (default info), -verbose as shorthand for debug
- Watcher: logs sync/remove actions at INFO level
- Watcher: logs events at DEBUG level
- Errors: structured error messages (DISK FULL, PERMISSION DENIED, etc.)
- Updated README with -log-level flag
</pre>
</div>
</content>
</entry>
<entry>
<title>Add symlink watcher support with tests</title>
<updated>2026-07-06T19:54:00+00:00</updated>
<author>
<name>Bernhard Guillon</name>
<email>Bernhard.Guillon@begu.org</email>
</author>
<published>2026-07-06T19:54:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.begu.at/sourcewatch.git/commit/?id=5a2d70be3ce8524c366f4dd303b950974f05aa7c'/>
<id>5a2d70be3ce8524c366f4dd303b950974f05aa7c</id>
<content type='text'>
- syncCreate: remove existing file before creating symlink
- syncWrite: handle symlink target changes (remove + recreate)
- Added 4 new tests:
  - CreateSymlink: new symlink synced to /data
  - UpdateSymlinkTarget: symlink target change updates /data
  - RemoveSymlink: symlink removal synced
  - ModifySymlinkTargetFile: target file change preserves symlink
- 39 tests passing
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- syncCreate: remove existing file before creating symlink
- syncWrite: handle symlink target changes (remove + recreate)
- Added 4 new tests:
  - CreateSymlink: new symlink synced to /data
  - UpdateSymlinkTarget: symlink target change updates /data
  - RemoveSymlink: symlink removal synced
  - ModifySymlinkTargetFile: target file change preserves symlink
- 39 tests passing
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement nested .gitignore support with GitignoreStack</title>
<updated>2026-07-06T19:36:29+00:00</updated>
<author>
<name>Bernhard Guillon</name>
<email>Bernhard.Guillon@begu.org</email>
</author>
<published>2026-07-06T19:36:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.begu.at/sourcewatch.git/commit/?id=ad7575e85ebf6332d324ca5997db18ea81065df4'/>
<id>ad7575e85ebf6332d324ca5997db18ea81065df4</id>
<content type='text'>
- Replaced go-gitignore with custom GitignoreStack that tracks
  multiple .gitignore files hierarchically
- Patterns are processed in root-to-leaf order, last match wins
- Negation patterns in child dirs override parent ignores
- Patterns only apply within their directory scope (no leaking)
- Added 6 new tests for nested .gitignore:
  - Scoped: patterns only affect own directory
  - Dir-scoped: different dirs can ignore different things
  - Negation override: child !pattern un-ignores parent's *.pattern
  - Deep nesting: 3+ levels of .gitignore
  - Parent scope doesn't leak to siblings
- All 35 tests passing
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Replaced go-gitignore with custom GitignoreStack that tracks
  multiple .gitignore files hierarchically
- Patterns are processed in root-to-leaf order, last match wins
- Negation patterns in child dirs override parent ignores
- Patterns only apply within their directory scope (no leaking)
- Added 6 new tests for nested .gitignore:
  - Scoped: patterns only affect own directory
  - Dir-scoped: different dirs can ignore different things
  - Negation override: child !pattern un-ignores parent's *.pattern
  - Deep nesting: 3+ levels of .gitignore
  - Parent scope doesn't leak to siblings
- All 35 tests passing
</pre>
</div>
</content>
</entry>
<entry>
<title>Add watcher tests, refactor watch() to accept context</title>
<updated>2026-07-06T19:26:29+00:00</updated>
<author>
<name>Bernhard Guillon</name>
<email>Bernhard.Guillon@begu.org</email>
</author>
<published>2026-07-06T19:26:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.begu.at/sourcewatch.git/commit/?id=8b22a36d1c068f9baee68799b0c1f51ecb999e9d'/>
<id>8b22a36d1c068f9baee68799b0c1f51ecb999e9d</id>
<content type='text'>
- Added watcher_test.go: 10 tests covering create, write, remove,
  rename, ignored files, debouncing, directory creation/removal,
  and manifest updates
- Refactored watch() to accept context.Context for clean cancellation
- Added signal handling (SIGINT/SIGTERM) for graceful shutdown in main.go
- Fixed test expectations (version two = 11 bytes, not 10)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Added watcher_test.go: 10 tests covering create, write, remove,
  rename, ignored files, debouncing, directory creation/removal,
  and manifest updates
- Refactored watch() to accept context.Context for clean cancellation
- Added signal handling (SIGINT/SIGTERM) for graceful shutdown in main.go
- Fixed test expectations (version two = 11 bytes, not 10)
</pre>
</div>
</content>
</entry>
</feed>
