Repository navigation
feat(cgcignore): treat .gitignore as an ignore source - #1680
Merged
Shashankss1205 merged 1 commit intoSep 2, 2026
Merged
Shashankss1205 merged 1 commit into
Shashankss1205 merged 1 commit into
Conversation
Anything git ignores is now ignored by the indexer, so a repository no longer needs a .cgcignore that restates its .gitignore. Patterns are layered defaults -> .gitignore -> .cgcignore. Matching is last-match-wins, so a negated pattern in .cgcignore can still bring a git-ignored path back into the graph. Fixes CodeGraphContext#729 Signed-off-by: Aloys Jehwin <[email protected]>
|
@AloysJehwin is attempting to deploy a commit to the shashankss1205's projects Team on Vercel. A member of the Team first needs to authorize it. |
Shashankss1205
approved these changes
Sep 2, 2026
Shashankss1205
left a comment
Collaborator
There was a problem hiding this comment.
Verified on a local trial-merge: the layering (defaults → .gitignore → .cgcignore, last-match-wins) preserves .cgcignore as the final authority so !pattern re-inclusion works exactly as the issue asked; find_gitignore is correctly bounded to the git worktree (an unrooted path probes only itself — no /tmp/.gitignore pickup). Full unit suite green (+7 new tests) and — the part I specifically checked, since our golden fixtures live inside a repo with its own .gitignore — all 21 parser goldens pass unchanged. Thanks @AloysJehwin, closes #729.
Shashankss1205
added a commit
that referenced
this pull request
Sep 2, 2026
* fix(viz): display source filenames for synthetic module nodes * fix(jobs): serialize last update time in job responses (#1679) * fix(cli): explain embedded database lock conflicts (#1684) * fix(setup-wizard): stop replacing IDE settings that are JSONC (#1677) VS Code and its forks write settings.json as JSONC. json.load rejects comments and trailing commas, and the wizard treated that rejection as "no settings yet" before writing the file back, so a user's whole configuration was replaced by a lone mcpServers key. Parse JSONC before giving up, and if the file still cannot be parsed, leave it alone instead of overwriting it. Back up the file before writing either way, and say so when comments are present, since json.dump cannot preserve them. Fixes #660 Signed-off-by: Aloys Jehwin <[email protected]> * feat(cgcignore): treat .gitignore as an ignore source (#1680) Anything git ignores is now ignored by the indexer, so a repository no longer needs a .cgcignore that restates its .gitignore. Patterns are layered defaults -> .gitignore -> .cgcignore. Matching is last-match-wins, so a negated pattern in .cgcignore can still bring a git-ignored path back into the graph. Fixes #729 Signed-off-by: Aloys Jehwin <[email protected]> * normalize module-node label to the plain filename in all render sites --------- Signed-off-by: Aloys Jehwin <[email protected]> Co-authored-by: Donovan Yohan <[email protected]> Co-authored-by: Aloys Jehwin <[email protected]> Co-authored-by: Shashank Shekhar Singh <[email protected]>
Shashankss1205
added a commit
that referenced
this pull request
Sep 2, 2026
* fix: find functions by argument type * fix(jobs): serialize last update time in job responses (#1679) * fix(cli): explain embedded database lock conflicts (#1684) * fix(setup-wizard): stop replacing IDE settings that are JSONC (#1677) VS Code and its forks write settings.json as JSONC. json.load rejects comments and trailing commas, and the wizard treated that rejection as "no settings yet" before writing the file back, so a user's whole configuration was replaced by a lone mcpServers key. Parse JSONC before giving up, and if the file still cannot be parsed, leave it alone instead of overwriting it. Back up the file before writing either way, and say so when comments are present, since json.dump cannot preserve them. Fixes #660 Signed-off-by: Aloys Jehwin <[email protected]> * feat(cgcignore): treat .gitignore as an ignore source (#1680) Anything git ignores is now ignored by the indexer, so a repository no longer needs a .cgcignore that restates its .gitignore. Patterns are layered defaults -> .gitignore -> .cgcignore. Matching is last-match-wins, so a negated pattern in .cgcignore can still bring a git-ignored path back into the graph. Fixes #729 Signed-off-by: Aloys Jehwin <[email protected]> * fix(viz): display source filenames for synthetic module nodes (#1682) * fix(viz): display source filenames for synthetic module nodes * fix(jobs): serialize last update time in job responses (#1679) * fix(cli): explain embedded database lock conflicts (#1684) * fix(setup-wizard): stop replacing IDE settings that are JSONC (#1677) VS Code and its forks write settings.json as JSONC. json.load rejects comments and trailing commas, and the wizard treated that rejection as "no settings yet" before writing the file back, so a user's whole configuration was replaced by a lone mcpServers key. Parse JSONC before giving up, and if the file still cannot be parsed, leave it alone instead of overwriting it. Back up the file before writing either way, and say so when comments are present, since json.dump cannot preserve them. Fixes #660 Signed-off-by: Aloys Jehwin <[email protected]> * feat(cgcignore): treat .gitignore as an ignore source (#1680) Anything git ignores is now ignored by the indexer, so a repository no longer needs a .cgcignore that restates its .gitignore. Patterns are layered defaults -> .gitignore -> .cgcignore. Matching is last-match-wins, so a negated pattern in .cgcignore can still bring a git-ignored path back into the graph. Fixes #729 Signed-off-by: Aloys Jehwin <[email protected]> * normalize module-node label to the plain filename in all render sites --------- Signed-off-by: Aloys Jehwin <[email protected]> Co-authored-by: Donovan Yohan <[email protected]> Co-authored-by: Aloys Jehwin <[email protected]> Co-authored-by: Shashank Shekhar Singh <[email protected]> * fix the argument query so it filters f; behavioral pin on real kuzu --------- Signed-off-by: Aloys Jehwin <[email protected]> Co-authored-by: Donovan Yohan <[email protected]> Co-authored-by: Aloys Jehwin <[email protected]> Co-authored-by: Upanshi Mittal <[email protected]> Co-authored-by: Shashank Shekhar Singh <[email protected]>
Shashankss1205
added a commit
that referenced
this pull request
Sep 2, 2026
…1676) * feat: add SSL connection parameters to cassandra_ingester.py * feat: add SSL connection parameters to mysql_ingester.py * fix(jobs): serialize last update time in job responses (#1679) * fix(cli): explain embedded database lock conflicts (#1684) * fix(setup-wizard): stop replacing IDE settings that are JSONC (#1677) VS Code and its forks write settings.json as JSONC. json.load rejects comments and trailing commas, and the wizard treated that rejection as "no settings yet" before writing the file back, so a user's whole configuration was replaced by a lone mcpServers key. Parse JSONC before giving up, and if the file still cannot be parsed, leave it alone instead of overwriting it. Back up the file before writing either way, and say so when comments are present, since json.dump cannot preserve them. Fixes #660 Signed-off-by: Aloys Jehwin <[email protected]> * feat(cgcignore): treat .gitignore as an ignore source (#1680) Anything git ignores is now ignored by the indexer, so a repository no longer needs a .cgcignore that restates its .gitignore. Patterns are layered defaults -> .gitignore -> .cgcignore. Matching is last-match-wins, so a negated pattern in .cgcignore can still bring a git-ignored path back into the graph. Fixes #729 Signed-off-by: Aloys Jehwin <[email protected]> * fix(viz): display source filenames for synthetic module nodes (#1682) * fix(viz): display source filenames for synthetic module nodes * fix(jobs): serialize last update time in job responses (#1679) * fix(cli): explain embedded database lock conflicts (#1684) * fix(setup-wizard): stop replacing IDE settings that are JSONC (#1677) VS Code and its forks write settings.json as JSONC. json.load rejects comments and trailing commas, and the wizard treated that rejection as "no settings yet" before writing the file back, so a user's whole configuration was replaced by a lone mcpServers key. Parse JSONC before giving up, and if the file still cannot be parsed, leave it alone instead of overwriting it. Back up the file before writing either way, and say so when comments are present, since json.dump cannot preserve them. Fixes #660 Signed-off-by: Aloys Jehwin <[email protected]> * feat(cgcignore): treat .gitignore as an ignore source (#1680) Anything git ignores is now ignored by the indexer, so a repository no longer needs a .cgcignore that restates its .gitignore. Patterns are layered defaults -> .gitignore -> .cgcignore. Matching is last-match-wins, so a negated pattern in .cgcignore can still bring a git-ignored path back into the graph. Fixes #729 Signed-off-by: Aloys Jehwin <[email protected]> * normalize module-node label to the plain filename in all render sites --------- Signed-off-by: Aloys Jehwin <[email protected]> Co-authored-by: Donovan Yohan <[email protected]> Co-authored-by: Aloys Jehwin <[email protected]> Co-authored-by: Shashank Shekhar Singh <[email protected]> * fix: find functions by argument type (#1686) * fix: find functions by argument type * fix(jobs): serialize last update time in job responses (#1679) * fix(cli): explain embedded database lock conflicts (#1684) * fix(setup-wizard): stop replacing IDE settings that are JSONC (#1677) VS Code and its forks write settings.json as JSONC. json.load rejects comments and trailing commas, and the wizard treated that rejection as "no settings yet" before writing the file back, so a user's whole configuration was replaced by a lone mcpServers key. Parse JSONC before giving up, and if the file still cannot be parsed, leave it alone instead of overwriting it. Back up the file before writing either way, and say so when comments are present, since json.dump cannot preserve them. Fixes #660 Signed-off-by: Aloys Jehwin <[email protected]> * feat(cgcignore): treat .gitignore as an ignore source (#1680) Anything git ignores is now ignored by the indexer, so a repository no longer needs a .cgcignore that restates its .gitignore. Patterns are layered defaults -> .gitignore -> .cgcignore. Matching is last-match-wins, so a negated pattern in .cgcignore can still bring a git-ignored path back into the graph. Fixes #729 Signed-off-by: Aloys Jehwin <[email protected]> * fix(viz): display source filenames for synthetic module nodes (#1682) * fix(viz): display source filenames for synthetic module nodes * fix(jobs): serialize last update time in job responses (#1679) * fix(cli): explain embedded database lock conflicts (#1684) * fix(setup-wizard): stop replacing IDE settings that are JSONC (#1677) VS Code and its forks write settings.json as JSONC. json.load rejects comments and trailing commas, and the wizard treated that rejection as "no settings yet" before writing the file back, so a user's whole configuration was replaced by a lone mcpServers key. Parse JSONC before giving up, and if the file still cannot be parsed, leave it alone instead of overwriting it. Back up the file before writing either way, and say so when comments are present, since json.dump cannot preserve them. Fixes #660 Signed-off-by: Aloys Jehwin <[email protected]> * feat(cgcignore): treat .gitignore as an ignore source (#1680) Anything git ignores is now ignored by the indexer, so a repository no longer needs a .cgcignore that restates its .gitignore. Patterns are layered defaults -> .gitignore -> .cgcignore. Matching is last-match-wins, so a negated pattern in .cgcignore can still bring a git-ignored path back into the graph. Fixes #729 Signed-off-by: Aloys Jehwin <[email protected]> * normalize module-node label to the plain filename in all render sites --------- Signed-off-by: Aloys Jehwin <[email protected]> Co-authored-by: Donovan Yohan <[email protected]> Co-authored-by: Aloys Jehwin <[email protected]> Co-authored-by: Shashank Shekhar Singh <[email protected]> * fix the argument query so it filters f; behavioral pin on real kuzu --------- Signed-off-by: Aloys Jehwin <[email protected]> Co-authored-by: Donovan Yohan <[email protected]> Co-authored-by: Aloys Jehwin <[email protected]> Co-authored-by: Upanshi Mittal <[email protected]> Co-authored-by: Shashank Shekhar Singh <[email protected]> * fix(viz): render FalkorDB relationships in the live graph (#1689) parse_element classified relationships by class name, matching only Relationship/KuzuRelationship. FalkorDB's edge class is named Edge, so it matched no branch and every FalkorDB relationship was silently dropped — on the backend that is CGC's default on Unix under Python 3.12+. parse_rel directly below already reads FalkorDB edges correctly; it was never reached. The offline renderer in cli_helpers already classified by duck typing and handled this (#1453). Both renderers now share those predicates in utils/graph_shapes, so classification cannot drift apart again. * expose --ssl-verify/--ssl-ca-certs on the datasource CLI; test the driver kwargs --------- Signed-off-by: Aloys Jehwin <[email protected]> Co-authored-by: Donovan Yohan <[email protected]> Co-authored-by: Aloys Jehwin <[email protected]> Co-authored-by: Upanshi Mittal <[email protected]> Co-authored-by: Shashank Shekhar Singh <[email protected]> Co-authored-by: Mansurshakh Japarov <[email protected]> Co-authored-by: Abhinav Singh <[email protected]>
This was referenced Sep 2, 2026
Shashankss1205
added a commit
that referenced
this pull request
Sep 2, 2026
…1567) (#1694) Every entry is sourced from an actual issue (#1673 census loop, #1683 lock conflicts, #1317 context desync, #1597 silent vector resolve, #1625 stale grammar venv, #1677 JSONC settings, #1680 ignore layering, #1685 arg types, #1689 missing viz edges), with the version each fix shipped in and the still-applicable workarounds. Linked from the README.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #729
Anything git ignores now gets ignored by the indexer too, so you don't need a
.cgcignorethat just restates your.gitignore.Patterns are layered defaults → .gitignore → .cgcignore. Since matching is last-match-wins,
.cgcignorestill has the final say — so the escape hatch from the issue works:dist/in.gitignoreplus!dist/in.cgcignoreindexesdist/anyway. There's a test for exactly that.It all goes through
build_ignore_spec, which is the one place discovery, the SCIP pipeline and the watcher already share, so nothing else needed touching..gitignoreis looked up the same way.cgcignoreis — walking up but stopping at the git worktree, so indexing a loose directory can't pick up something like/tmp/.gitignore. A missing or unreadable.gitignoreis a no-op; unreadable warns rather than raising, matching how the rest of the module behaves.Worth flagging in review: this changes what gets indexed for existing users by default. Most people will want it (that's the issue's premise), but anyone relying on a git-ignored directory being in the graph will need the
!line. Happy to put it behind a config flag instead if you'd rather have it opt-in.ruff checkis clean on both files. The one unit failure,test_elisp_parser::test_parse_elisp_normalized_output, fails identically on a cleanmain— unrelated to this change. Same for thedb-parityandbuildjobs, which are red onmainright now.