#!/bin/bash
# Set the desired commit message
COMMIT_MESSAGE="Batch commit"
# Specify the number of files to process in each batch
BATCH_SIZE=10
# Set the maximum file size in bytes (99 MB)
MAX_FILE_SIZE=$((99 * 1024 * 1024))
# Get the list of modified files
MODIFIED_FILES=$(git status --porcelain | awk '{print $2}')
# Count the total number of modified files
TOTAL_FILES=$(echo "$MODIFIED_FILES" | wc -l)
# Loop through the modified files in batches
for ((i = 1; i <= TOTAL_FILES; i += BATCH_SIZE)); do
# Get the files for the current batch
BATCH_FILES=$(echo "$MODIFIED_FILES" | awk "NR >= $i && NR < $i + $BATCH_SIZE")
# Filter out files larger than the maximum size
VALID_FILES=""
for FILE in $BATCH_FILES; do
FILE_SIZE=$(stat -c%s "$FILE")
if (( FILE_SIZE <= MAX_FILE_SIZE )); then
VALID_FILES+=" $FILE"
fi
done
if [[ -n "$VALID_FILES" ]]; then
# Add the valid files to the staging area
git add $VALID_FILES
# Commit the changes with the specified message
git commit -m "$COMMIT_MESSAGE"
# Push the changes to the remote repository
git push origin
# Clear the staging area
git reset HEAD
fi
done
I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND