Pywayne Bin Gitstats
Analyze Git repository commit time distribution and generate visualizations.
Quick Start
# Analyze current repository (default: current directory, current branch)
gitstats
# Specify custom output path
gitstats --save output.png
# Analyze with time filter
gitstats --since "2024-01-01"
Usage Examples
Basic Analysis
# Analyze current repository
gitstats
# Analyze specific repository path
gitstats /path/to/repo
# Show plot in popup window (no file saved)
gitstats -p
Time Range Filtering
# Commits since specific date
gitstats --since "2024-01-01"
# Commits within date range
gitstats --since "2024-01-01" --until "2024-12-31"
# Relative time expressions
gitstats --since "1 year ago"
gitstats --since "90 days ago"
gitstats --until "30 days ago"
Branch Selection
# Analyze specific branch
gitstats --branch main
gitstats --branch develop
gitstats --branch origin/main
# Analyze all branches
gitstats --all
Timezone Configuration
# Use UTC timezone
gitstats --tz UTC
# Use specific timezone
gitstats --tz "America/New_York"
gitstats --tz "Europe/London"
# Default is Asia/Shanghai
gitstats --tz "Asia/Shanghai"
Custom Output
# Custom output filename
gitstats --save my_stats.png
# Output to subdirectory
gitstats --save results/commit_analysis.png
# Absolute path
gitstats --save /tmp/git_stats.png
Combined Examples
# All branches, last year, custom output
gitstats --since "1 year ago" --all --save yearly_stats.png
# Main branch, last 90 days, UTC timezone
gitstats --branch main --since "90 days ago" --tz UTC
# Develop branch, date range, show plot
gitstats --branch develop --since "2024-01-01" --until "2024-06-30" -p
Command Reference
| Argument | Description |
|---|---|
repo | Git repository path. Default: current directory |
--since | Start time (e.g., "2024-01-01", "1 year ago", "90 days ago") |
--until | End time (same formats as --since) |
--tz | Timezone. Default: "Asia/Shanghai". Examples: "UTC", "America/New_York" |
--branch | Specific branch to analyze. Examples: "main", "develop", "origin/main" |
--all | Analyze all branches (overrides --branch) |
--save | Output image path. Default: "git_time_distribution.png" |
-p, --show-plot | Show plot in popup window without saving file |
Output Charts
Generates a 3×2 subplot layout visualization:
- Commits per Day - Line chart showing daily commit counts
- Commits by Hour - Bar chart for hours 0-23
- Commits by Weekday - Bar chart for Mon-Sun
- Heatmap: Weekday × Hour - Color-coded activity matrix
Chart title includes: repository name, branch, and timezone.
Branch Selection Priority
- If
--allis specified, all branches are analyzed - If
--branchis specified, only that branch is analyzed - If neither is specified, current HEAD branch is used
Requirements
- Git must be installed
- Python dependencies: pandas, matplotlib (installed with pywayne)
Notes
- Time range can use Git's flexible date formats (absolute dates, relative expressions)
- Output file is overwritten if it exists
- Large repositories with
--allmay take longer to process - Commit times are parsed in UTC, then converted to specified timezone