cloc-graph
Version:
Track lines of code over time by language with visualization
26 lines (25 loc) • 809 B
JavaScript
;
/**
* Sampling utilities for optimizing analysis of large repositories
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.smartSampleCommits = smartSampleCommits;
/**
* Smart sampling algorithm to select representative commits
*
* @param commits - Array of all commits
* @param maxSamples - Maximum number of samples to take
* @returns Array of selected commits
*/
function smartSampleCommits(commits, maxSamples) {
const sample = [];
const interval = Math.ceil(commits.length / maxSamples);
for (let i = 0; i < commits.length; i += interval) {
sample.push(commits[i]);
}
// Ensure we have exactly maxSamples, adjust the last sample if necessary
while (sample.length > maxSamples) {
sample.pop();
}
return sample;
}