Shell script to add and commit in 10 files at a time and push


#!/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
Rajesh Kumar
Follow me
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x