Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Commit Spoof

Makes you busy as a bee

Generate commit history at whatever date range you want

Kanax01 Entropy

Demo

  • Before

Before.png

  • After

After.png

Requirements

  • Python 3.8+
  • Git on PATH
  • GH Cli

Quick Start

py spoof.py \
  --repo-path /home/Entropic-Code/lol \
  --start 1/1/2025 --end 12/21/2025 \
  --probability 50 --max-commits 5 \
  --name "Your Name" \
  --email "you@example.com" \
  --remote git@github.com:OWNER/REPO.git \
  --branch main

That generates commits across the date range, resets the repo if it already has history, sets up SSH if needed, and force-pushes.

Date range

Flag Default Meaning
--start M/D/YYYY 365 days before --end First day (inclusive)
--end M/D/YYYY today Last day (inclusive)
# All of 2025
py spoof.py --repo-path my-repo --start 1/1/2025 --end 12/31/2025

# From a date through today
py spoof.py --repo-path my-repo --start 1/1/2025

# Last ~year ending today
py spoof.py --repo-path my-repo

Windows paths

/home/... and relative paths map to %USERPROFILE%\spofer\:

/home/Entropic-Code/lol  →  C:\Users\You\spofer\Entropic-Code\lol

Omit --repo-path to use %USERPROFILE%\spofer\<repo-name> derived from --remote.

Push only (no generation)

py spoof.py --skip-gen \
  --repo-path my-repo \
  --remote git@github.com:OWNER/REPO.git \
  --branch main \
  --email "you@example.com"

Options

Option Default Description
--repo-path PATH from --remote Target repo. Created if missing.
--start M/D/YYYY 365 days before --end First day to generate commits.
--end M/D/YYYY today Last day to generate commits.
--probability N 75 Daily commit chance (0100).
--max-commits N 8 Max commits per active day (150).
--no-weekends off Skip Saturday and Sunday.
--trend N 0.0 Activity drift (-1.0 to 1.0).
--remote URL none Set origin and force-push.
--branch NAME main Branch to init and push.
--name NAME Git User Git user.name.
--email ADDRESS git@localhost Git user.email and SSH key comment.
--skip-gen off Push existing history only. Requires --remote.
--append off Stack onto existing commits instead of resetting.
--skip-ssh-setup off Skip automatic SSH setup.

Behavior

Auto-reset — Re-running without --skip-gen or --append wipes existing commits and regenerates. No manual folder deletion needed.

Progress — Prints every 25 commits. A full year can take several minutes.

SSH — With an SSH --remote, the script creates ~/.ssh/commit-spoof, writes an SSH config alias, and tests the connection before pushing. It can install gh via winget/apt/brew or show the public key to add at github.com/settings/ssh/new. Reuses the existing key if auth already works.

Push--remote always force-pushes. Review local history first.

Troubleshooting

Problem Fix
Seems hung Normal for hundreds of commits. Wait for progress lines.
SSH auth fails Add the printed public key to GitHub, then --skip-gen to push.
Want to keep old commits Pass --append.
Push rejected Check URL, branch, and permissions.

Releases

Contributors

Languages