frecenfile

Crates.iofrecenfile
lib.rsfrecenfile
version
sourcesrc
created_at2025-05-01 15:58:36.048855+00
updated_at2025-05-10 12:18:33.243674+00
descriptionCompute frecency scores for files in a Git repository
homepage
repository
max_upload_size
id1656415
Cargo.toml error:TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Dániel Kántor (kantord)

documentation

README

frecenfile

frecenfile computes frecency scores for files in Git repositories. Frecency combines the frequency and recency of events.

This is useful as a heauristic for finding relevant or trending files when all you have to work with is the commit history.

Performance

frecenfile is highly scalabe, producing a sorted output within miliseconds for mid-sized repositories, and processing the entire commit history Linux in under a minute. Processing the last 3000 commits in the Linux repository takes just around a second.

For most purposes, the results should be easily cacheable.

Git history

By default, frecenfile processes the last 3000 commits, but this can be modified using the --max-commits flag. Processing an excessive amounts of commits would not usually be usueful, as "trending" files are not likely to be buried deep in the commit history. Processing only a smaller amount of commits is not likely to be needed for performance reasons, but might be useful for some use cases.

📦 Installation

cargo install frecenfile

🚀 Usage

Score every file in the current repo, highest first

frecenfile

Only list paths, omit scores

frecenfile --path-only

Restrict analysis to certain directories

frecenfile --paths src tests

Sort oldest/least-touched files first

frecenfile --ascending

Example output

12.9423   src/lib.rs
 9.3310   src/analyze.rs
 2.7815   README.md
Commit count: 0

cargo fmt