LinuxCommandLibrary

git-effort

Analyze effort per file in git repository

TLDR

Display each file in the repository, showing commits and active days

$ git effort
copy

Display files modified by a specific number of commits or more, showing commits and active days
$ git effort --above [5]
copy

Display files modified by a specific author, showing commits and active days
$ git effort -- --author="[username]"
copy

Display files modified since a specific time/date, showing commits and active days
$ git effort -- --since="[last month]"
copy

Display only the specified files or directories, showing commits and active days
$ git effort [path/to/file_or_directory1 path/to/file_or_directory2 ...]
copy

Display all files in a specific directory, showing commits and active days
$ git effort [path/to/directory/*]
copy

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

Copied to clipboard