mirror of
https://github.com/zebrajr/github-backupper.git
synced 2025-12-06 12:19:50 +01:00
initial commit
This commit is contained in:
parent
d6fdd5569d
commit
ed12ca315d
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
repositories
|
||||
gitRepos.txt
|
||||
54
gitBackuper.sh
Executable file
54
gitBackuper.sh
Executable file
|
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
# File containing the list of Git repository URLs
|
||||
REPO_FILE="gitRepos.txt"
|
||||
|
||||
# Directory where the repositories will be cloned
|
||||
CLONE_DIR="repositories"
|
||||
|
||||
# Create the directory if it doesn't exist
|
||||
mkdir -p "$CLONE_DIR"
|
||||
|
||||
# Function to convert HTTPS URL to SSH format
|
||||
convert_to_ssh() {
|
||||
local https_url="$1"
|
||||
local ssh_url
|
||||
|
||||
# Remove the 'https://' part
|
||||
ssh_url="git@${https_url#https://}"
|
||||
|
||||
# Replace '/' with ':' after 'github.com'
|
||||
ssh_url="${ssh_url/github.com\//github.com:}"
|
||||
|
||||
# Append '.git' at the end
|
||||
ssh_url="${ssh_url}.git"
|
||||
|
||||
echo "$ssh_url"
|
||||
}
|
||||
|
||||
# Read each line from the file
|
||||
while IFS= read -r repo_url
|
||||
do
|
||||
# Skip lines that start with '#'
|
||||
[[ "$repo_url" =~ ^# ]] && continue
|
||||
|
||||
# Convert HTTPS URL to SSH URL
|
||||
ssh_repo_url=$(convert_to_ssh "$repo_url")
|
||||
|
||||
# Extract the repo name from the URL
|
||||
repo_name=$(basename "$repo_url" .git)
|
||||
|
||||
# Path to the local repository
|
||||
repo_path="$CLONE_DIR/$repo_name"
|
||||
|
||||
# Check if the directory exists
|
||||
if [ -d "$repo_path" ]; then
|
||||
# If the repo is already cloned, fetch and update
|
||||
echo "Updating repository: $repo_name"
|
||||
git -C "$repo_path" fetch --all
|
||||
git -C "$repo_path" pull
|
||||
else
|
||||
# If the repo is not cloned, clone it using SSH URL
|
||||
echo "Cloning repository: $repo_name"
|
||||
git clone "$ssh_repo_url" "$repo_path"
|
||||
fi
|
||||
done < "$REPO_FILE"
|
||||
7
gitRepos.sample.txt
Normal file
7
gitRepos.sample.txt
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Comment Lines are accepted
|
||||
# Own Repos - Private
|
||||
https://github.com/zebrajr/cookieclicker
|
||||
# Own Repos - Public
|
||||
https://github.com/zebrajr/sysadmin
|
||||
# Someone else Repos
|
||||
https://github.com/zebrajr/zebrajr
|
||||
Loading…
Reference in New Issue
Block a user