Repository navigation
v0.10.0
Highlights
- Several repositories as one tree.
glasir serveon a directory holding more than one git repository (up to two levels down) serves them as one graph: HTTP routes already joined across repositories, and nowdetect_changes,co_changes,change_history,impact-ofand the git hooks work per repository, with each path prefixed by its repository. - Workflows and local actions are in the graph.
.github/workflows/*.ymland everyaction.ymlare read for what they express: jobs are symbols,needsconnects them, anduses: ./…and the scripts a step runs connect the job to those files.impacton a script shows the workflow that runs it;glasir reviewon a workflow change has symbols to report..github/workflows,.github/actionsand.github/scriptsenter the indexed scope; issue templates, dependabot and the rest of.githubstay out. - Rust calls through a module resolve.
commits::changes()reacheschangesincommits.rs— beside the caller, under the crate'ssrc/, or as amod.rs— where before the bare name was refused whenever two files defined it.
Review
- A symbol a test reads through a reference (a constant, a table a check iterates) now counts as reached by that test;
reviewreported such code as untested before. - A file the history says usually changes with a changed one is a
mediumreason now, nothigh: a reminder, not a blocked merge on its own.highis a changed symbol with callers and no test reaching it.
Fixes
- Directories named
parsers,bench/deeporbench/langswere left out of every tree. Those rules belonged to this repository and are in its own.glasirignorenow; the indexer's fixed rules keep onlytmpandvendorat the root andtarget,node_modulesand dot-directories anywhere. - Shell scripts: only the command is a call.
set -eno longer yields a call toe,echo hinone tohi,local owner=…none toowner; flags, variables, operands and continuation lines are arguments. A shell script has a top-level node even when it calls nothing, so a step running it has something to point at. - A Rust value named like a file (
community.get(i)besidecommunity.rs) was read as a call into that file. - A root
action.ymlread as plain YAML produced dozens of nodes named after its keys.
The snapshot format and the scanner identity changed; the first analyse after upgrading rebuilds the graph.
Install
- Homebrew:
brew install attackwave/glasir/glasir - Scoop: add the bucket
Attackwave/scoop-glasir, then runscoop install glasir - Archives for Linux (static, x86_64 and arm64), macOS (arm64 and x86_64) and Windows are attached, each with a SHA-256 checksum, the licences and an SBOM.