{"id":26239611,"url":"https://github.com/ascender1729/github-contribution-generator","last_synced_at":"2025-12-27T20:00:05.688Z","repository":{"id":280905246,"uuid":"943564294","full_name":"ascender1729/github-contribution-generator","owner":"ascender1729","description":"A powerful tool to generate custom GitHub contribution patterns with backdated commits for any date range. Customize your profile's activity graph with configurable commits per day.","archived":false,"fork":false,"pushed_at":"2025-03-05T23:09:51.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T00:20:02.966Z","etag":null,"topics":["activity-graph","backdated-commits","commit-history","contribution-pattern","developer-tools","git-tools","github-contribution-graph","profile-customization","python"],"latest_commit_sha":null,"homepage":"https://github.com/ascender1729/github-contribution-generator","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ascender1729.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-05T23:04:23.000Z","updated_at":"2025-03-05T23:15:50.000Z","dependencies_parsed_at":"2025-03-06T00:20:06.295Z","dependency_job_id":null,"html_url":"https://github.com/ascender1729/github-contribution-generator","commit_stats":null,"previous_names":["ascender1729/github-contribution-generator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascender1729%2Fgithub-contribution-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascender1729%2Fgithub-contribution-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascender1729%2Fgithub-contribution-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ascender1729%2Fgithub-contribution-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ascender1729","download_url":"https://codeload.github.com/ascender1729/github-contribution-generator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243358316,"owners_count":20277997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["activity-graph","backdated-commits","commit-history","contribution-pattern","developer-tools","git-tools","github-contribution-graph","profile-customization","python"],"created_at":"2025-03-13T07:16:25.814Z","updated_at":"2025-12-27T20:00:00.621Z","avatar_url":"https://github.com/ascender1729.png","language":"Python","readme":"# GitHub Contribution Generator\r\n\r\nA powerful tool to generate custom contribution patterns on your GitHub profile by creating backdated commits for any date range you choose.\r\n\r\n## 📋 Table of Contents\r\n\r\n- [Overview](#overview)\r\n- [Features](#features)\r\n- [Requirements](#requirements)\r\n- [Setup Instructions](#setup-instructions)\r\n- [Installation](#installation)\r\n- [Usage](#usage)\r\n- [Command Reference](#command-reference)\r\n- [Troubleshooting](#troubleshooting)\r\n- [Contributing](#contributing)\r\n- [License](#license)\r\n- [Contact](#contact)\r\n- [FAQ](#faq)\r\n\r\n## 🔍 Overview\r\n\r\nThis tool allows you to customize your GitHub contribution graph by generating commits with specified dates. Whether you need to:\r\n- Fill in gaps in your contribution history\r\n- Create artistic patterns\r\n- Backdate commits for projects you worked on offline\r\n- Generate a rich contribution history\r\n\r\n## ✨ Features\r\n\r\n- **Custom Date Ranges**: Generate commits for any time period\r\n- **Adjustable Commit Frequency**: Set minimum and maximum commits per day\r\n- **Parallel Processing**: Fast generation using multithreading\r\n- **Chronological Ordering**: Commits are ordered by timestamp for each day\r\n- **Simple Setup**: Easy-to-follow instructions for all skill levels\r\n- **Cross-Platform**: Works on Windows, macOS, and Linux\r\n\r\n## 📋 Requirements\r\n\r\n- Python 3.6 or higher\r\n- Git installed and configured\r\n- GitHub account\r\n- Personal Access Token with repository permissions\r\n\r\n## 🔧 Setup Instructions\r\n\r\n### 1. Create a New GitHub Repository\r\n\r\n1. Go to GitHub and log in\r\n2. Click the \"+\" icon in the top right corner, then select \"New repository\"\r\n3. Name the repository whatever you want (e.g., \"my-contribution-history\")\r\n4. Add a brief description\r\n5. Choose Public or Private based on your preference\r\n6. DO NOT initialize with README, .gitignore, or license\r\n7. Click \"Create repository\"\r\n\r\n### 2. Create a Personal Access Token (PAT)\r\n\r\n1. Go to GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)\r\n2. Click \"Generate new token (classic)\"\r\n3. Note: \"Contribution Generator\"\r\n4. Select scopes: check \"repo\" (Full control of private repositories)\r\n5. Click \"Generate token\"\r\n6. IMPORTANT: Copy your token immediately! You won't be able to see it again.\r\n\r\n### 3. Set Up Local Repository\r\n\r\n```bash\r\n# Create a new directory for your activity repository\r\nmkdir my-activity-repo\r\ncd my-activity-repo\r\n\r\n# Initialize git\r\ngit init\r\n\r\n# Configure git with your details\r\ngit config user.name \"YourUsername\"\r\ngit config user.email \"your.email@example.com\"\r\n\r\n# Create a README file\r\necho \"# My Contribution History\" \u003e README.md\r\n\r\n# Set up the remote repository\r\ngit remote add origin https://github.com/YourUsername/my-contribution-history.git\r\n\r\n# Create the contribution script (copy the provided script to local_contribute.py)\r\n# Use a text editor to paste the script contents\r\n\r\n# Add your files\r\ngit add README.md local_contribute.py\r\ngit commit -m \"Initial setup\"\r\n\r\n# Configure your PAT\r\ngit remote set-url origin https://YOUR_PAT_TOKEN@github.com/YourUsername/my-contribution-history.git\r\n```\r\n\r\n## 🚀 Installation\r\n\r\n1. **Clone this repository**\r\n\r\n```bash\r\n# Clone this repository\r\ngit clone https://github.com/ascender1729/github-contribution-generator.git\r\n\r\n# Copy the script file to your project\r\ncp github-contribution-generator/local_contribute.py .\r\n```\r\n\r\n2. **Set up your target repository**\r\n\r\n```bash\r\n# Create a new directory for your activity\r\nmkdir my-activity-repo\r\ncd my-activity-repo\r\n\r\n# Initialize git\r\ngit init\r\n\r\n# Configure git with your details\r\ngit config user.name \"YourUsername\"\r\ngit config user.email \"your.email@example.com\"\r\n\r\n# Copy the script from the cloned repository\r\ncp ../github-contribution-generator/local_contribute.py .\r\n\r\n# Create a README file\r\necho \"# My Contribution History\" \u003e README.md\r\n\r\n# Add your remote repository\r\ngit remote add origin https://github.com/YourUsername/my-contribution-history.git\r\n\r\n# Add your files\r\ngit add README.md local_contribute.py\r\ngit commit -m \"Initial setup\"\r\n\r\n# Add your PAT to the remote URL (replace with your actual token)\r\ngit remote set-url origin https://YOUR_PAT_TOKEN@github.com/YourUsername/my-contribution-history.git\r\n```\r\n\r\n## 🚀 Usage\r\n\r\n1. **Run the script**\r\n\r\n```bash\r\npython local_contribute.py\r\n```\r\n\r\n2. **Enter requested information**\r\n   - Start date (YYYY-MM-DD format)\r\n   - End date (YYYY-MM-DD format)\r\n   - Minimum commits per day (8-100)\r\n   - Maximum commits per day (must be ≥ minimum)\r\n\r\n3. **Wait for completion**\r\n   - The script will show progress updates\r\n   - Generation may take from minutes to hours depending on date range\r\n\r\n4. **Push to GitHub**\r\n\r\n```bash\r\ngit push -f origin main\r\n```\r\n\r\n5. **View your GitHub profile**\r\n   - Visit your profile to see the updated contribution graph\r\n   - Changes usually appear within a few minutes\r\n\r\n## 💻 Command Reference\r\n\r\n| Command | Description |\r\n|---------|-------------|\r\n| `git init` | Initialize a new Git repository |\r\n| `git config user.name \"YourUsername\"` | Set your Git username |\r\n| `git config user.email \"your.email@example.com\"` | Set your Git email |\r\n| `git remote add origin URL` | Connect to remote repository |\r\n| `git remote set-url origin URL` | Update remote repository URL (for PAT) |\r\n| `git add .` | Stage all files for commit |\r\n| `git commit -m \"Message\"` | Commit staged files |\r\n| `python local_contribute.py` | Run the contribution script |\r\n| `git push -f origin main` | Force push changes to GitHub |\r\n\r\n## 🔧 Troubleshooting\r\n\r\n### Common Issues:\r\n\r\n1. **\"Error: remote origin already exists\"**\r\n   ```bash\r\n   git remote remove origin\r\n   git remote add origin https://github.com/YourUsername/repo-name.git\r\n   ```\r\n\r\n2. **\"Permission denied\" when pushing**\r\n   - Check that you've correctly added your PAT to the remote URL\r\n   ```bash\r\n   git remote set-url origin https://YOUR_PAT_TOKEN@github.com/YourUsername/repo-name.git\r\n   ```\r\n\r\n3. **Encoding errors with emoji**\r\n   - Use the script with `encoding='utf-8'` as provided\r\n   - If errors persist, modify script to remove emoji characters\r\n\r\n4. **Script runs too slowly**\r\n   - Adjust the `chunk_size` and `max_workers` variables in the script\r\n   - Try a smaller date range or fewer commits per day\r\n\r\n## 🤝 Contributing\r\n\r\nTo contribute:\r\n1. Fork the repository.\r\n2. Create a new branch (`git checkout -b feature/YourFeature`).\r\n3. Commit your changes (`git commit -m 'Add YourFeature'`).\r\n4. Push to the branch (`git push origin feature/YourFeature`).\r\n5. Create a new Pull Request.\r\n\r\n## ⚖️ License\r\n\r\nDistributed under the MIT License. See `LICENSE` for more information.\r\n\r\n## 📞 Contact\r\n\r\nPavan Kumar - pavankumard.pg19.ma@nitp.ac.in  \r\nLinkedIn: [linkedin.com/in/im-pavankumar](https://linkedin.com/in/im-pavankumar)  \r\nProject Link: [GitHub Contribution Generator](https://github.com/ascender1729/github-contribution-generator)\r\n\r\n## ❓ FAQ\r\n\r\n**Q: Is this against GitHub's terms of service?**  \r\nA: GitHub does not explicitly prohibit backdated commits. However, use this tool responsibly and ethically.\r\n\r\n**Q: Will this affect my GitHub streaks?**  \r\nA: Yes, GitHub counts all commits regardless of date.\r\n\r\n**Q: Can I use this with private repositories?**  \r\nA: Yes, the tool works with both public and private repositories.\r\n\r\n**Q: How can I create specific patterns?**  \r\nA: Create multiple repositories with different date ranges to build specific patterns.\r\n\r\n**Q: Will my commits appear immediately?**  \r\nA: GitHub typically updates contribution graphs within minutes, but it can sometimes take longer.\r\n\r\n---\r\n\r\n**Disclaimer**: This tool is meant for educational purposes. Use responsibly and ethically.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascender1729%2Fgithub-contribution-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fascender1729%2Fgithub-contribution-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fascender1729%2Fgithub-contribution-generator/lists"}