From 10798d8737ec77906a39e72227e546d5f0e4e3c4 Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Mon, 1 Sep 2025 20:33:10 -0400 Subject: [PATCH] latest pushes --- README.md | 3 +- git_scripts/fix_errors.sh | 31 +++++++++ git_scripts/push.sh | 109 +++++++++++++++++++++++++++++++ git_scripts/repository_recal.sh | 110 ++++++++++++++++++++++++++++++++ 4 files changed, 252 insertions(+), 1 deletion(-) create mode 100755 git_scripts/fix_errors.sh create mode 100755 git_scripts/push.sh create mode 100755 git_scripts/repository_recal.sh diff --git a/README.md b/README.md index 9dfb851..7046247 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ -# universal_robotics_sensors_research +# Universal Robotics Sensors Research + Bellande Robotics Sensors Research Innovation Center Journal diff --git a/git_scripts/fix_errors.sh b/git_scripts/fix_errors.sh new file mode 100755 index 0000000..2ebdbee --- /dev/null +++ b/git_scripts/fix_errors.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Get the URL from .git/config +git_url=$(git config --get remote.origin.url) + +# Check if a URL is found +if [ -z "$git_url" ]; then + echo "No remote URL found in .git/config." + exit 1 +fi + +# Clone the repository into a temporary folder +git clone "$git_url" tmp_clone + +# Check if the clone was successful +if [ $? -eq 0 ]; then + # Remove the existing .git directory if it exists + if [ -d ".git" ]; then + rm -rf .git + fi + + # Copy the .git directory from the clone to the current repository + cp -r tmp_clone/.git . + + # Remove the clone directory + rm -rf tmp_clone + + echo "Repository cloned and .git directory copied successfully." +else + echo "Failed to clone the repository." +fi diff --git a/git_scripts/push.sh b/git_scripts/push.sh new file mode 100755 index 0000000..58c2c8b --- /dev/null +++ b/git_scripts/push.sh @@ -0,0 +1,109 @@ +#!/bin/bash +# Function to handle errors +handle_error() { + echo "Error: $1" + exit 1 +} + +# Function to check if a remote exists +check_remote() { + git remote | grep -q "^$1\$" + return $? +} + +# Get list of remotes +remotes=$(git remote) + +# Check if origin is the only remote +if [ "$(echo "$remotes" | wc -l)" -eq 1 ] && [ "$remotes" = "origin" ]; then + echo "Detected single origin remote. Using simple push..." + + # Simple push for origin + git pull --no-edit || handle_error "Failed to pull from origin" + git fetch || handle_error "Failed to fetch" + git add . + git commit -am "latest pushes" + git push || handle_error "Failed to push to origin" + +else + echo "Detected multiple remotes. Using multi-remote push..." + + # Check if github or bellande remotes exist (continue regardless) + has_github=false + has_gitlab=false + has_bitbucket=false + has_bellande=false + + if check_remote "github"; then + has_github=true + echo "Found GitHub remote" + fi + + if check_remote "gitlab"; then + has_gitlab=true + echo "Found GitLab remote" + fi + + if check_remote "bitbucket"; then + has_bitbucket=true + echo "Found BitBucket remote" + fi + + if check_remote "bellande"; then + has_bellande=true + echo "Found Bellande remote" + fi + + # If neither exists, just proceed with available remotes + if [ "$has_github" = false ] && [ "$has_gitlab" = false ] && [ "$has_bitbucket" = false ] && [ "$has_bellande" = false ]; then + echo "Neither github, gitlab, bitbucket, bellande remotes found. Continuing with available remotes..." + fi + + # Pull from primary remote (GitHub if available, otherwise skip) + if [ "$has_github" = true ]; then + git pull github main --no-edit || handle_error "Failed to pull from GitHub" + else + echo "Skipping pull from GitHub (remote not found)" + fi + + # Fetch from all remotes + git fetch --all || handle_error "Failed to fetch from remotes" + + # Add and commit changes + git add . + git commit -am "latest pushes" + + # Push to GitHub if available + if [ "$has_github" = true ]; then + echo "Pushing to GitHub..." + git push github main || handle_error "Failed to push to GitHub" + else + echo "Skipping push to GitHub (remote not found)" + fi + + # Push to Gitlab if available + if [ "$has_gitlab" = true ]; then + echo "Pushing to GitLab..." + git push gitlab main || handle_error "Failed to push to GitLab" + else + echo "Skipping push to GitLab (remote not found)" + fi + + # Push to BitBucket if available + if [ "$has_bitbucket" = true ]; then + echo "Pushing to BitBucket..." + git push bitbucket main || handle_error "Failed to push to BitBucket" + else + echo "Skipping push to BitBucket (remote not found)" + fi + + # Push to Bellande if available + if [ "$has_bellande" = true ]; then + echo "Pushing to Bellande Technologies..." + git push bellande main || handle_error "Failed to push to Bellande" + else + echo "Skipping push to Bellande (remote not found)" + fi + + echo "Push operations completed" +fi diff --git a/git_scripts/repository_recal.sh b/git_scripts/repository_recal.sh new file mode 100755 index 0000000..4c7fd4f --- /dev/null +++ b/git_scripts/repository_recal.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +# Git push what is already in the repository +git pull --no-edit; git fetch; git add .; git commit -am "latest pushes"; git push + +# Get the current directory +current_dir=$(pwd) + +# Read the remote repository URL from .git/config +remote_repo_url=$(git -C "$current_dir" config --get remote.origin.url) + +# Create a temporary directory for cloning the repository +temp_dir=$(mktemp -d) + +# Clone the repository into the temporary directory without using local references +git clone --no-local "$current_dir" "$temp_dir" + +# Switch to the temporary directory +cd "$temp_dir" + +# Create a temporary file to store the file list +tmp_file=$(mktemp) +# Create a temporary file to store the processed commits +processed_commits_file=$(mktemp) + +# Function to check if a commit has already been processed +is_commit_processed() { + local commit="$1" + + # Check if the commit is already processed + grep -Fxq "$commit" "$processed_commits_file" +} + +# Function to mark a commit as processed +mark_commit_processed() { + local commit="$1" + + # Mark the commit as processed + echo "$commit" >> "$processed_commits_file" +} + +# Function to check if a file or folder exists in the repository +file_exists_in_repo() { + local file_path="$1" + + # Check if the file or folder exists in the repository + git ls-tree --name-only -r HEAD | grep -Fxq "$file_path" +} + +# Function to process the files and folders in each commit +process_commit_files() { + local commit="$1" + + # Check if the commit has already been processed + if is_commit_processed "$commit"; then + echo "Commit $commit already processed. Skipping..." + return + fi + + # Get the list of files and folders in the commit (including subfolders) + git ls-tree --name-only -r "$commit" >> "$tmp_file" + + # Process each file or folder in the commit + while IFS= read -r line + do + # Check if the file or folder exists in the current push + if file_exists_in_repo "$line"; then + echo "Keeping: $line" + else + echo "Deleting: $line" + git filter-repo --path "$line" --invert-paths + fi + done < "$tmp_file" + + # Mark the commit as processed + mark_commit_processed "$commit" + + # Clear the temporary file + > "$tmp_file" +} + +# Iterate over each commit in the repository +git rev-list --all | while IFS= read -r commit +do + process_commit_files "$commit" +done + +# Push the filtered changes to the original repository +git remote add origin "$remote_repo_url" +git push --force origin main + +# Perform a history rewrite to remove the filtered files +git filter-repo --force + +# Fetch the changes from the remote repository +git -C "$current_dir" fetch origin + +# Merge the remote changes into the local repository +git -C "$current_dir" merge origin/main --no-edit + +# Update the local repository and reduce the size of .git if needed +git -C "$current_dir" gc --prune=now +git -C "$current_dir" reflog expire --expire=now --all +git -C "$current_dir" repack -ad + +# Clean up temporary files and directories +cd "$current_dir" +rm -rf "$temp_dir" +rm "$tmp_file" +rm "$processed_commits_file"