git-effort
Analyze effort per file in git repository
TLDR
Display each file in the repository, showing commits and active days
Display files modified by a specific number of commits or more, showing commits and active days
Display files modified by a specific author, showing commits and active days
Display files modified since a specific time/date, showing commits and active days
Display only the specified files or directories, showing commits and active days
Display all files in a specific directory, showing commits and active days
SYNOPSIS
git effort [<options>] [<path>]
PARAMETERS
--author / --no-author
Includes or excludes author-based statistics in the output.
--file / --no-file
Includes or excludes file-based statistics in the output.
--committer / --no-committer
Includes or excludes committer-based statistics in the output.
--lines / --no-lines
Includes or excludes the total lines changed (added/deleted) in the output.
--count / --no-count
Includes or excludes the total commit count in the output.
--summary
Displays only a summary line without detailed breakdowns per author or file.
--sort <key>
Sorts the output by a specific metric such as lines, commits, or files.
--reverse
Reverses the sort order, displaying results from lowest to highest.
--since <date>
Considers only commits made after the specified date or time.
--until <date>
Considers only commits made before the specified date or time.
--limit <n>
Limits the output to the top N results based on the current sort order.
<path>
Specifies a particular file or directory to analyze, restricting the effort calculation to changes within that scope.
DESCRIPTION
git-effort is a utility that analyzes Git commit history to provide insights into developer contributions and "effort."
It typically quantifies this by examining metrics such as the number of lines changed (added/deleted), the total count of commits, and the number of distinct files touched by each author or committer within a specified period or path.
This tool helps project managers and team leads understand areas of high activity, identify key contributors, and get a quantitative overview of work distribution. It's often distributed as part of git-extras or similar external utility collections.
While "effort" is a heuristic, it offers a useful perspective on code activity.
CAVEATS
git-effort is not a standard command included with Git; it typically requires installation of external tools like git-extras.
The term "effort" is a heuristic based on quantitative metrics (lines of code, commits) and does not directly measure code quality, complexity, or true productivity.
Large refactorings or auto-generated code changes can skew line count metrics, potentially overstating actual effort.
Always consider these metrics in context with qualitative assessments.
METRICS DEFINED
The command typically quantifies "effort" by aggregating various metrics from the Git history. These commonly include: Lines Changed (sum of additions and deletions), Commit Count (total number of commits made), and Files Touched (number of unique files modified). These metrics provide a numerical representation of activity within the codebase.
HISTORY
git-effort gained prominence primarily as a part of the git-extras project, a collection of useful Git scripts that extend its functionality.
It emerged from the need for developers and project managers to quickly gauge activity and contribution levels within a Git repository beyond basic commit logs.
Its development reflects a community-driven effort to add more analytical capabilities to Git, providing a simple command-line interface for complex historical data aggregation.
SEE ALSO
git-log(1), git-shortlog(1), git-blame(1), git-diff(1)