Mohak Agrawal and Claude Sonnet 5
8a5287a979
fix(detect): honor nested .gitignore/.graphifyignore files below the scan root ( #1206 )
...
detect() only read .gitignore/.graphifyignore in the scan root and its
ancestor directories (up to the nearest VCS root), loaded once before the
walk began. A .gitignore sitting in a descendant directory — e.g.
vendor/sub/.gitignore — was never read, so files/dirs it excluded leaked
into the graph. Real git (and every other gitignore-aware tool) honors
.gitignore at every directory level, not just the ancestor chain.
Extracts the per-directory read+parse logic into a shared
_load_dir_own_ignore() helper (used by both the existing ancestor-chain
loader and the new call site) and invokes it live inside detect()'s
os.walk loop for every directory visited, before that directory's
children are pruned — so a nested ignore file governs its own subtree
with the same closer-file-wins precedence git uses.
Adds three regression tests: nested file exclude, nested directory prune
(the walk never descends into it), and nested negation overriding a
broader root-level rule.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-07-13 18:29:32 +01:00
..
2026-07-09 00:32:21 +01:00
2026-05-22 13:22:51 +01:00
2026-06-27 23:57:39 +01:00
2026-07-05 11:41:18 +01:00
2026-06-23 17:26:49 +01:00
2026-07-11 11:52:12 +01:00
2026-06-16 01:41:15 +01:00
2026-06-02 23:48:54 +01:00
2026-05-13 10:07:50 -07:00
2026-06-03 00:08:03 +01:00
2026-05-22 13:22:51 +01:00
2026-07-11 17:22:25 +01:00
2026-07-12 10:23:36 +01:00
2026-07-08 12:09:40 +01:00
2026-07-13 00:35:32 +01:00
2026-05-22 13:22:51 +01:00
2026-06-11 15:08:36 -06:00
2026-07-01 15:09:42 +01:00
2026-05-17 11:32:38 +01:00
2026-07-13 00:47:10 +01:00
2026-07-02 22:29:30 +01:00
2026-07-08 16:38:35 +01:00
2026-07-12 23:57:16 +01:00
2026-07-11 16:31:10 +01:00
2026-05-12 02:23:51 +03:00
2026-06-07 14:34:13 +01:00
2026-07-01 11:52:50 +01:00
2026-07-01 10:49:43 +01:00
2026-06-30 18:30:05 +01:00
2026-06-02 22:23:15 +01:00
2026-07-08 01:16:58 +01:00
2026-07-10 21:57:16 +01:00
2026-06-30 19:32:10 +01:00
2026-06-11 19:52:56 +03:00
2026-07-01 10:47:10 +01:00
2026-07-13 18:29:32 +01:00
2026-05-26 09:17:18 +01:00
2026-07-12 14:31:50 +01:00
2026-06-30 11:19:54 +01:00
2026-07-13 17:48:26 +01:00
2026-07-13 10:29:26 +01:00
2026-07-13 00:35:32 +01:00
2026-07-08 17:07:31 +01:00
2026-07-13 01:34:35 +01:00
2026-06-28 16:57:00 +01:00
2026-07-09 13:22:36 +01:00
2026-06-07 15:03:49 +03:00
2026-06-28 16:57:00 +01:00
2026-06-18 01:55:56 +01:00
2026-07-06 16:43:21 +01:00
2026-06-11 09:36:38 +02:00
2026-05-07 20:07:57 +01:00
2026-07-06 16:49:31 +01:00
2026-07-12 16:15:24 +01:00
2026-06-30 16:58:23 +01:00
2026-06-18 22:55:44 +01:00
2026-07-02 22:29:32 +01:00
2026-05-05 00:07:50 +02:00
2026-06-28 19:29:51 +01:00
2026-06-30 23:26:13 +01:00
2026-07-01 10:30:47 +01:00
2026-07-01 11:43:05 +01:00
2026-06-24 11:43:13 +01:00
2026-06-13 15:13:23 +01:00
2026-06-02 20:48:13 +01:00
2026-07-06 16:43:21 +01:00
2026-07-06 16:38:42 +01:00
2026-07-06 16:38:42 +01:00
2026-07-10 02:11:36 +01:00
2026-07-09 10:44:50 +01:00
2026-07-05 10:42:09 +01:00
2026-06-18 22:50:52 +01:00
2026-07-06 12:46:12 +01:00
2026-06-29 09:40:22 +01:00
2026-07-08 22:49:01 +01:00
2026-07-06 16:02:45 +01:00
2026-07-02 22:29:30 +01:00
2026-07-04 22:12:47 +01:00
2026-06-19 10:25:09 +01:00
2026-05-26 20:16:41 +01:00
2026-07-08 12:45:08 +01:00
2026-06-10 15:50:38 +01:00
2026-05-22 13:22:51 +01:00
2026-05-22 13:22:51 +01:00
2026-07-01 13:45:53 +01:00
2026-07-03 18:34:41 +01:00
2026-05-31 16:41:18 +01:00
2026-07-04 22:12:47 +01:00
2026-06-02 22:50:33 +01:00
2026-07-06 12:44:47 +01:00
2026-06-02 22:50:33 +01:00
2026-06-16 01:41:15 +01:00
2026-07-09 00:32:21 +01:00
2026-07-09 00:32:21 +01:00
2026-07-09 01:06:02 +01:00
2026-07-11 11:56:38 +01:00
2026-06-30 16:59:16 +01:00
2026-07-10 11:12:28 +01:00
2026-07-04 21:22:39 +01:00
2026-07-04 03:12:23 +01:00
2026-06-02 22:16:58 +01:00
2026-05-16 22:36:58 +01:00
2026-05-24 20:38:10 +01:00
2026-05-22 13:22:51 +01:00
2026-07-12 10:36:00 +01:00
2026-07-06 00:45:51 +01:00
2026-07-06 16:38:42 +01:00
2026-06-30 12:57:33 +01:00
2026-07-06 12:36:12 +01:00
2026-07-07 10:57:52 +01:00
2026-07-11 11:31:47 +01:00
2026-05-22 13:22:51 +01:00
2026-07-06 16:38:42 +01:00
2026-07-10 20:24:25 +01:00
2026-06-30 16:58:23 +01:00
2026-07-04 03:12:23 +01:00
2026-07-03 00:32:24 +01:00
2026-07-02 12:11:51 +01:00
2026-07-13 01:03:02 +01:00
2026-06-30 23:15:52 +01:00
2026-07-13 00:35:32 +01:00
2026-07-02 11:46:22 +01:00
2026-06-16 03:06:43 +01:00
2026-06-30 16:59:16 +01:00
2026-06-05 21:46:25 +01:00
2026-07-02 22:38:29 +01:00
2026-07-02 22:38:28 +01:00
2026-07-04 03:12:23 +01:00
2026-05-31 16:47:52 +01:00
2026-07-02 22:38:29 +01:00
2026-07-03 16:03:18 +01:00
2026-07-02 22:29:31 +01:00
2026-06-24 08:54:11 +01:00
2026-06-26 10:20:53 +01:00
2026-07-12 00:37:09 +01:00
2026-06-23 17:26:49 +01:00
2026-06-27 10:19:15 +01:00
2026-07-04 22:12:47 +01:00
2026-07-05 10:33:07 +01:00