latest pushes
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
# universal_robotics_sensors_research
|
||||
# Universal Robotics Sensors Research
|
||||
|
||||
Bellande Robotics Sensors Research Innovation Center Journal
|
||||
|
31
git_scripts/fix_errors.sh
Executable file
31
git_scripts/fix_errors.sh
Executable file
@@ -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
|
109
git_scripts/push.sh
Executable file
109
git_scripts/push.sh
Executable file
@@ -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
|
110
git_scripts/repository_recal.sh
Executable file
110
git_scripts/repository_recal.sh
Executable file
@@ -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"
|
Reference in New Issue
Block a user