https://github.com/programming-sai/gitguardian
A Windows-based automation tool that automatically pushes the contents of a specified folder to GitHub at fixed intervals using Task Scheduler, lockfiles, and bat scripting. Designed to help developers maintain commit streaks effortlessly.
https://github.com/programming-sai/gitguardian
automation bat commit-streak dev-tools git productivity scripting task-schedulre windows
Last synced: about 1 month ago
JSON representation
A Windows-based automation tool that automatically pushes the contents of a specified folder to GitHub at fixed intervals using Task Scheduler, lockfiles, and bat scripting. Designed to help developers maintain commit streaks effortlessly.
- Host: GitHub
- URL: https://github.com/programming-sai/gitguardian
- Owner: Programming-Sai
- Created: 2025-04-12T13:43:34.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-12T20:19:36.000Z (about 1 year ago)
- Last Synced: 2025-04-15T09:12:59.283Z (about 1 year ago)
- Topics: automation, bat, commit-streak, dev-tools, git, productivity, scripting, task-schedulre, windows
- Language: PowerShell
- Homepage:
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# GitGuardian
An automated tool to commit and push the contents of a specified folder to GitHub at scheduled intervals—leveraging PowerShell scripts, lockfiles, and WSL cron.
---
## Repository Structure
```text
GitGuardian/
├── .fttignore
├── .gitignore
├── config.txt # Defines script names, lockfile, log locations, and repo folder
├── git-push.bat # Batch script: adds, commits, and pushes
├── main-runner.ps1 # PowerShell orchestration: lockfile & script invocation
└── README.md # Project documentation (this file)
```
---
## How It Works
1. **Load Configuration** (`config.txt`)
- `GIT_SCRIPT`: name of the batch file (e.g., `git-push.bat`)
- `LOCK_FILE`: filename for the lockfile to prevent overlapping runs
- `LOG_FILE`: filename for appending commit logs
- `GIT_FOLDER`: path to the local Git repository (use your own path)
2. **PowerShell Runner** (`main-runner.ps1`)
- Reads key/value pairs from `config.txt`
- Validates that the batch script exists in the project root
- Checks for a stale lockfile (deletes if older than 60 minutes)
- Creates a new lockfile, sets environment variables, and `cd` into `%GIT_FOLDER%`
- Invokes the batch script to commit and push with a timestamped message
- Removes the lockfile on completion
3. **Commit & Push** (`git-push.bat`)
- Requires a commit message argument and a valid `.git` directory
- Stages all changes, commits, and pushes to the remote branch
- Outputs status and errors to the log file defined in `config.txt`
4. **Scheduling**
- Define cron jobs in WSL to invoke the PowerShell script at desired times
- **Example cron entries** (place under your own user with `crontab -e`):
```cron
# Early morning (e.g., 2‑4 AM)
0 2-4 * * * powershell.exe -ExecutionPolicy Bypass -File "/main-runner.ps1" >> "/git_push.log" 2>&1
# Mid-afternoon (e.g., 3‑4 PM)
0 15-16 * * * powershell.exe -ExecutionPolicy Bypass -File "/main-runner.ps1" >> "/git_push.log" 2>&1
```
- Replace `` with the absolute or relative path to your project folder
---
## Prerequisites
- **Windows 10/11** with **WSL (Ubuntu)** installed
- **Git** available on Windows (and optionally in WSL)
- **PowerShell** (built‑in to Windows)
---
## Manual Testing
Run the orchestration script directly to verify before scheduling:
```powershell
# Replace with your project directory
powershell.exe -ExecutionPolicy Bypass -File "\main-runner.ps1"
```
Check the log file for confirmation of commits and any errors.
---
## Customization
- **Scheduling**: adjust time fields in your crontab entries via `crontab -e`.
- **Configuration**: modify `config.txt` entries (script names, filenames, repo path).
- **Branching/Tags**: update `git-push.bat` to handle additional Git options if needed.