├── .github ├── FUNDING.yml └── workflows │ └── main.yml ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md └── git_star_boost.ps1 /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: luizbizzio 2 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Git Star Boost 🚀⭐ 2 | 3 | on: 4 | push: 5 | branches: 6 | - main # Roda no push para a branch 'main' 7 | schedule: 8 | - cron: '0 0 * * *' # Roda todos os dias à meia-noite (formato cron) 9 | 10 | jobs: 11 | boost: 12 | runs-on: windows-latest # Usando o runner Windows 13 | 14 | steps: 15 | # Passo 1: Checkout do repositório 16 | - name: Checkout repository 17 | uses: actions/checkout@v3 18 | 19 | # Passo 2: Executar o script PowerShell 20 | - name: Run Git Star Boost Script 21 | run: | 22 | # Define o caminho onde os repositórios Git estão localizados 23 | $reposPath = $env:GITHUB_WORKSPACE # Usa o diretório onde o repositório foi clonado 24 | 25 | # Lista de repositórios a serem ignorados 26 | $blacklist = @("repo1", "repo2", "repo3", "repo4") # Adicione os repositórios que você quer ignorar 27 | 28 | # Obtém todos os repositórios no diretório especificado 29 | $repos = Get-ChildItem -Path $reposPath -Directory | Where-Object { Test-Path (Join-Path $_.FullName ".git") } 30 | 31 | # Verifica se o GPG (para assinar commits) está disponível no sistema 32 | $gpgAvailable = (Get-Command gpg -ErrorAction SilentlyContinue) -ne $null 33 | $gpgConfigured = $false 34 | 35 | # Se o GPG estiver disponível, verifica se está configurado para assinar commits no Git 36 | if ($gpgAvailable) { 37 | $gpgConfigured = git config --global user.signingkey 38 | } 39 | 40 | # Itera sobre cada repositório encontrado 41 | foreach ($repo in $repos) { 42 | $repoPath = $repo.FullName 43 | 44 | # Pula repositórios que estão na lista negra 45 | if ($blacklist -contains $repo.Name) { 46 | Write-Host "Skipping repository $repo.Name" 47 | continue # Pula para o próximo repositório 48 | } 49 | 50 | # Verifica se o diretório é um repositório Git válido 51 | $gitFolder = Join-Path $repoPath ".git" 52 | if (Test-Path $gitFolder) { 53 | Write-Host "Git repository found: $repoPath" 54 | 55 | Set-Location -Path $repoPath # Muda para o diretório do repositório 56 | 57 | # Atualiza o repositório com as últimas mudanças 58 | git pull 59 | git status 60 | git stash -u 61 | git reset --hard 62 | git clean -fd 63 | 64 | # Busca commits com a mensagem '#UPDATE' e remove-os 65 | $commitHashes = git log --oneline | Select-String "#UPDATE" | ForEach-Object { $_.Line.Split(' ')[0] } 66 | foreach ($commitHash in $commitHashes) { 67 | Write-Host "Removing commit $commitHash with the '#UPDATE' message" 68 | git rebase --onto $commitHash^ $commitHash # Remove o commit do histórico 69 | } 70 | 71 | # Cria um arquivo temporário para fazer um commit sem alterar o conteúdo do repositório 72 | $fileName = Join-Path $repoPath "temp_file" 73 | New-Item -Path $fileName -ItemType File -Force # Cria o arquivo temporário 74 | 75 | git add $fileName 76 | 77 | # Cria o commit (com ou sem assinatura GPG) 78 | if ($gpgConfigured) { 79 | git commit --gpg-sign -m "#TEMP" 80 | } else { 81 | git commit -m "#TEMP" 82 | } 83 | 84 | # Remove o arquivo temporário após o commit 85 | Remove-Item $fileName 86 | 87 | git rm $fileName 88 | 89 | # Cria o commit final 90 | if ($gpgConfigured) { 91 | git commit --gpg-sign -m "#UPDATE" 92 | } else { 93 | git commit -m "#UPDATE" 94 | } 95 | 96 | # Força o push para o repositório remoto (sobrescreve a história) 97 | git push --force 98 | git stash pop 99 | git status 100 | 101 | } else { 102 | Write-Host ".git not found: $repoPath" 103 | } 104 | } 105 | 106 | Write-Host "Done!" 107 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | contact@luizbizzio.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024-2025 Luiz Bizzio 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Git Auto Commit 🚀📤 2 | 3 | **Git Auto Commit** keeps your Git repository **always fresh** and **relevant** on GitHub by matically updating it with a **new commit** each time it runs. The best part? It **keeps your profile active** without cluttering your commit history. Perfect for boosting visibility and engagement! 4 | 5 | ## Always Recently Updated ✅ 6 | Did you know? This repository will always receive a **commit/update every 3 hours**, ensuring it stays fresh and relevant on GitHub. This is automated to keep your GitHub profile **active** and engaging! 7 | 8 | ## Purpose 🎯 9 | 10 | **Git Star Boost** is designed to: 11 | 12 | - 🔄 **Keep your repository up-to-date** with regular commits, ensuring it’s always fresh and relevant. 13 | - ❌ **Avoid commit clutter** by deleting the last commit made by the script, then creating a new one, so no multiple commits pile up. 14 | - 🌟 **Enhance your GitHub profile** by showing a recent commit, keeping your activity visible and boosting engagement. 15 | 16 | It’s perfect for **boosting engagement** and **visibility** on GitHub without creating unnecessary commit history. 17 | 18 | --- 19 | 20 | ## How It Works 🔧 21 | 22 | 1. **Regular Updates** 🚀
23 | The script matically fetches the latest changes from the remote repository using `git pull`, ensuring your local repository is synchronized with the remote and up-to-date. This step ensures that any new changes in the remote repository are reflected locally.

24 | 25 | 2. **No Commit Clutter** ❌
26 | Upon execution, the script identifies the last commit made by the script itself and uses `git rebase` to remove that commit from the repository's history. Afterward, a new commit is created with a fresh message (`#UPDATE`), maintaining the repository's up-to-date status without accumulating multiple commits. The commit history is kept clean and concise, showing only the most recent change.

27 | 28 | 3. **Increased Visibility** 📅
29 | Each time the script runs, a new commit is created with a consistent message (e.g., `#UPDATE`). This new commit appears in the commit history on GitHub and is reflected in your GitHub profile, ensuring your profile remains active and showing regular activity. This makes your profile appear as if you’re continuously contributing, even if you're not actively making changes to the project.

30 | 31 | 4. **Enhanced Engagement** 🔥
32 | The frequent commits trigger activity on your GitHub profile, creating an impression of ongoing work. GitHub’s activity feed displays these regular commits, which increases visibility on your repositories. As a result, more users may notice and engage with your projects, contributing to higher interaction and potential collaboration.

33 | 34 | ## Features ⚡ 35 | 36 | - 🔄 **Keeps repositories up-to-date** by pulling the latest changes from remote. 37 | - 💥 **No cluttered commit history**: Only the most recent commit is shown. 38 | - 👀 **Boosts profile activity** with a fresh commit each time, increasing visibility. 39 | - 🚀 **Improves engagement** by showing continuous activity without managing a long commit history. 40 | 41 | ## Requirements ⚙️ 42 | 43 | - **PowerShell**: The script is written for PowerShell. 44 | - **Git**: Git must be installed and available in your system’s PATH. 45 | - **Personal Acess Token**: You can find it in Developer Options on Github Settings 46 | - **GPG (optional)**: If you want to sign commits, GPG must be installed and configured. 47 | 48 | ## Usage 🏃‍♂️ 49 | 50 | 1. Create a new **PowerShell script** (`.ps1` file) and paste the following code inside it. 🧑🏻‍💻 51 | 2. Update the `$reposPath` variable to point to your local Git repositories. 📂 52 | 4. Define your GitHub username and your Personal Access Token. 🪪 53 | 5. (Optional) Add repositories to the `$blacklist` to skip certain repositories. 🚫 54 | 6. Run the script regularly to keep your repositories up-to-date and your profile active. ⏰ 55 | 56 | ```ps1 57 | # Infinite loop to run the script every hour 58 | while ($true) { 59 | # Define the path where all your Git repositories are located 60 | $reposPath = "C:\Github\" # Path to your local repositories 61 | 62 | # List of repositories to skip (blacklist) 63 | $blacklist = @("repo1", "repo2", "repo3", "repo4") # Names of repositories to ignore 64 | 65 | # Get all the directories (repositories) inside the specified path 66 | $repos = Get-ChildItem -Path $reposPath -Directory # Retrieves all directories in the given path 67 | 68 | # Check if GPG (used for signing commits) is available on your system 69 | $gpgAvailable = (Get-Command gpg -ErrorAction SilentlyContinue) -ne $null # Checks if GPG is installed 70 | $gpgConfigured = $false # Default value for GPG configuration 71 | 72 | # Set GitHub username and token for authentication 73 | $gitHubUsername = "github_username" # GitHub username 74 | $gitHubToken = "github_personal_token" # GitHub token for authentication 75 | 76 | # Iterate over each repository found 77 | foreach ($repo in $repos) { 78 | # Get the full path of the current repository 79 | $repoPath = $repo.FullName 80 | 81 | # Skip repositories that are in the blacklist 82 | if ($blacklist -contains $repo.Name) { 83 | continue # Skip to the next repository in the list 84 | } 85 | 86 | # Check if the directory is a valid Git repository (it should contain a .git folder) 87 | $gitFolder = Join-Path $repoPath ".git" # Build the path to the .git folder 88 | if (Test-Path $gitFolder) { # If the .git folder exists, it's a Git repository 89 | 90 | # Change to the repository directory 91 | Set-Location -Path $repoPath # Navigate to the repository directory 92 | 93 | # Update the repository by pulling the latest changes 94 | git remote set-url origin "https://${gitHubUsername}:${gitHubToken}@github.com/${gitHubUsername}/$($repo.Name).git" # Set the remote URL with the GitHub token 95 | git pull # Fetch the latest updates from the remote repository 96 | git status # Show the current status of the repository (modified files, etc.) 97 | git stash -u # Save untracked files to prevent losing them during the reset 98 | 99 | # Discard any uncommitted changes by resetting the repository to the last commit 100 | git reset --hard # Reset the repository to the last commit, discarding local changes 101 | git clean -fd # Remove any untracked files and directories 102 | 103 | # Search for commits with the message '#UPDATE' and remove them from history 104 | $commitHashes = git log --oneline | Select-String "#UPDATE" | ForEach-Object { $_.Line.Split(' ')[0] } # Get all commit hashes with the message '#UPDATE' 105 | 106 | # For each commit with the '#UPDATE' message, remove it from the repository's history 107 | foreach ($commitHash in $commitHashes) { 108 | git rebase --onto $commitHash^ $commitHash # Rebase to remove the commit from the history 109 | } 110 | 111 | # Create a temporary file to trigger a commit without changing the content of the repository 112 | $fileName = Join-Path $repoPath "temp_file" # Define the temporary file name 113 | New-Item -Path $fileName -ItemType File -Force # Create the temporary file in the repository 114 | 115 | # Stage the temporary file for commit 116 | git add $fileName # Add the temporary file to the staging area 117 | 118 | # Create a commit with the temporary file (optional: sign with GPG if configured) 119 | if ($gpgConfigured) { 120 | git commit --gpg-sign --no-edit -m "#TEMP" # Commit with GPG signing 121 | } else { 122 | git commit --no-edit -m "#TEMP" # Commit without GPG signing 123 | } 124 | 125 | # Remove the temporary file after committing 126 | Remove-Item $fileName # Delete the temporary file from the local repository 127 | 128 | # Remove the file from Git tracking 129 | git rm $fileName # Remove the file from the staging area 130 | 131 | # Create another commit with the message '#UPDATE' (again, optional: sign with GPG) 132 | if ($gpgConfigured) { 133 | git commit --gpg-sign --no-edit -m "#UPDATE" # Commit with GPG signing 134 | } else { 135 | git commit --no-edit -m "#UPDATE" # Commit without GPG signing 136 | } 137 | 138 | # Force push the changes to the remote repository (overwrites history) 139 | git push --force # Push the changes to the remote repository, overwriting history 140 | 141 | # Restore the previously stashed changes (if any) 142 | git stash pop # Apply the saved untracked changes back to the working directory 143 | git status # Show the final status of the repository 144 | 145 | } else { 146 | Write-Host ".git not found: $repoPath" # Print a message if the directory isn't a Git repository 147 | } 148 | } 149 | 150 | # Wait for 10 hours (36000 seconds) before repeating 151 | Start-Sleep -Seconds 36000 152 | } 153 | 154 | # Final message after processing all repositories 155 | Write-Host "Done!" # Indicate that the script has finished running 156 | ``` 157 | 158 | ## Notes 📝 159 | 160 | - **Windows Task scheduler:** You can configure Windows Task Scheduler to run the script automatically at logon. The script will then repeat every 10 hours, keeping your repositories updated without manual intervention. 🕐 161 | 162 | - **Using the Blacklist**: You can use the `$blacklist` variable to **skip specific repositories** from being processed by the script. Just add the names of repositories you want to exclude in the array. This is useful if you have certain projects you don't want the script to touch. 🚫 163 | 164 | - **GPG Commit Verification:** The script matically detects if you have GPG set up for signing commits. You do not need to configure the script for verified commits — it will sign them if GPG is configured on your system. 🔑 165 | 166 | - **Repository Responsibility:** You are responsible for the use and content of your repositories. This script modifies commit history, so use it in accordance with your project's needs. ⚠️ 167 | 168 | --- 169 | 170 | ## License 📄 171 | 172 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. 173 | -------------------------------------------------------------------------------- /git_star_boost.ps1: -------------------------------------------------------------------------------- 1 | # Infinite loop to run the script every hour 2 | while ($true) { 3 | # Define the path where all your Git repositories are located 4 | $reposPath = "C:\Github\" # Path to your local repositories 5 | 6 | # List of repositories to skip (blacklist) 7 | $blacklist = @("repo1", "repo2", "repo3", "repo4") # Names of repositories to ignore 8 | 9 | # Get all the directories (repositories) inside the specified path 10 | $repos = Get-ChildItem -Path $reposPath -Directory # Retrieves all directories in the given path 11 | 12 | # Check if GPG (used for signing commits) is available on your system 13 | $gpgAvailable = (Get-Command gpg -ErrorAction SilentlyContinue) -ne $null # Checks if GPG is installed 14 | $gpgConfigured = $false # Default value for GPG configuration 15 | 16 | # Set GitHub username and token for authentication 17 | $gitHubUsername = "github_username" # GitHub username 18 | $gitHubToken = "github_personal_token" # GitHub token for authentication 19 | 20 | # Iterate over each repository found 21 | foreach ($repo in $repos) { 22 | # Get the full path of the current repository 23 | $repoPath = $repo.FullName 24 | 25 | # Skip repositories that are in the blacklist 26 | if ($blacklist -contains $repo.Name) { 27 | continue # Skip to the next repository in the list 28 | } 29 | 30 | # Check if the directory is a valid Git repository (it should contain a .git folder) 31 | $gitFolder = Join-Path $repoPath ".git" # Build the path to the .git folder 32 | if (Test-Path $gitFolder) { # If the .git folder exists, it's a Git repository 33 | 34 | # Change to the repository directory 35 | Set-Location -Path $repoPath # Navigate to the repository directory 36 | 37 | # Update the repository by pulling the latest changes 38 | git remote set-url origin "https://${gitHubUsername}:${gitHubToken}@github.com/${gitHubUsername}/$($repo.Name).git" # Set the remote URL with the GitHub token 39 | git pull # Fetch the latest updates from the remote repository 40 | git status # Show the current status of the repository (modified files, etc.) 41 | git stash -u # Save untracked files to prevent losing them during the reset 42 | 43 | # Discard any uncommitted changes by resetting the repository to the last commit 44 | git reset --hard # Reset the repository to the last commit, discarding local changes 45 | git clean -fd # Remove any untracked files and directories 46 | 47 | # Search for commits with the message '#UPDATE' and remove them from history 48 | $commitHashes = git log --oneline | Select-String "#UPDATE" | ForEach-Object { $_.Line.Split(' ')[0] } # Get all commit hashes with the message '#UPDATE' 49 | 50 | # For each commit with the '#UPDATE' message, remove it from the repository's history 51 | foreach ($commitHash in $commitHashes) { 52 | git rebase --onto $commitHash^ $commitHash # Rebase to remove the commit from the history 53 | } 54 | 55 | # Create a temporary file to trigger a commit without changing the content of the repository 56 | $fileName = Join-Path $repoPath "temp_file" # Define the temporary file name 57 | New-Item -Path $fileName -ItemType File -Force # Create the temporary file in the repository 58 | 59 | # Stage the temporary file for commit 60 | git add $fileName # Add the temporary file to the staging area 61 | 62 | # Create a commit with the temporary file (optional: sign with GPG if configured) 63 | if ($gpgConfigured) { 64 | git commit --gpg-sign --no-edit -m "#TEMP" # Commit with GPG signing 65 | } else { 66 | git commit --no-edit -m "#TEMP" # Commit without GPG signing 67 | } 68 | 69 | # Remove the temporary file after committing 70 | Remove-Item $fileName # Delete the temporary file from the local repository 71 | 72 | # Remove the file from Git tracking 73 | git rm $fileName # Remove the file from the staging area 74 | 75 | # Create another commit with the message '#UPDATE' (again, optional: sign with GPG) 76 | if ($gpgConfigured) { 77 | git commit --gpg-sign --no-edit -m "#UPDATE" # Commit with GPG signing 78 | } else { 79 | git commit --no-edit -m "#UPDATE" # Commit without GPG signing 80 | } 81 | 82 | # Force push the changes to the remote repository (overwrites history) 83 | git push --force # Push the changes to the remote repository, overwriting history 84 | 85 | # Restore the previously stashed changes (if any) 86 | git stash pop # Apply the saved untracked changes back to the working directory 87 | git status # Show the final status of the repository 88 | 89 | } else { 90 | Write-Host ".git not found: $repoPath" # Print a message if the directory isn't a Git repository 91 | } 92 | } 93 | 94 | # Wait for 10 hours (36000 seconds) before repeating 95 | Start-Sleep -Seconds 36000 96 | } 97 | 98 | # Final message after processing all repositories 99 | Write-Host "Done!" # Indicate that the script has finished running 100 | --------------------------------------------------------------------------------