improve clone and pull scripts
This commit is contained in:
parent
c97e8f0eb8
commit
e63c5e5882
|
|
@ -2,6 +2,7 @@
|
|||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
.history
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
|
@ -114,8 +115,6 @@ venv.bak/
|
|||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
|
|
@ -124,5 +123,5 @@ dmypy.json
|
|||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# github action
|
||||
# github action
|
||||
.github/workflows/*yaml
|
||||
|
|
|
|||
55
clone.sh
55
clone.sh
|
|
@ -4,6 +4,9 @@
|
|||
USERNAME=$1
|
||||
TOKEN=$2
|
||||
|
||||
# Retry limit for failed clone attempts
|
||||
RETRY_LIMIT=3
|
||||
|
||||
# Branch types and their corresponding directories
|
||||
declare -A branch_dirs=(
|
||||
["dev"]="test"
|
||||
|
|
@ -72,6 +75,33 @@ branches=(
|
|||
"master_openeducat_erp-14.0.1.0"
|
||||
)
|
||||
|
||||
# Error log file
|
||||
error_log="clone_error_log.txt" > "$error_log" # Clear log file at the start
|
||||
|
||||
# Clone branch function with retry mechanism
|
||||
clone_branch() {
|
||||
local branch=$1
|
||||
local full_path=$2
|
||||
local attempt=1
|
||||
|
||||
while [ $attempt -le $RETRY_LIMIT ]; do
|
||||
echo "Cloning $branch into $full_path (Attempt $attempt/$RETRY_LIMIT)..."
|
||||
git clone --depth=1 -b "$branch" "https://$USERNAME:$TOKEN@github.com/expsa/odex25-standard-modules.git" "$full_path"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Successfully cloned $branch into $full_path"
|
||||
return 0
|
||||
else
|
||||
echo "Failed to clone $branch (Attempt $attempt)."
|
||||
attempt=$((attempt + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
# If the retry limit is reached, log the failure
|
||||
echo "Failed to clone $branch after $RETRY_LIMIT attempts." >> "$error_log"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Loop through each branch
|
||||
for branch in "${branches[@]}"; do
|
||||
# Extract the prefix (dev, preprod, master) and the branch name
|
||||
|
|
@ -84,17 +114,22 @@ for branch in "${branches[@]}"; do
|
|||
# Full path for the folder inside the corresponding directory
|
||||
full_path="$base_dir/$folder_name"
|
||||
|
||||
# Skip cloning if the folder already exists
|
||||
if [ -d "$full_path" ]; then
|
||||
echo "Skipping $branch: already cloned in $full_path"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Create the directory if it doesn't exist
|
||||
mkdir -p "$full_path"
|
||||
|
||||
# Clone the specific branch into the designated folder using token-based authentication
|
||||
git clone --depth=1 -b "$branch" "https://$USERNAME:$TOKEN@github.com/expsa/odex25-standard-modules.git" "$full_path"
|
||||
|
||||
# Check if the clone was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Successfully cloned $branch into $full_path"
|
||||
else
|
||||
echo "Failed to clone $branch"
|
||||
exit 1
|
||||
fi
|
||||
# Clone the specific branch with error handling
|
||||
clone_branch "$branch" "$full_path"
|
||||
done
|
||||
|
||||
# Check if any errors were logged
|
||||
if [ -s "$error_log" ]; then
|
||||
echo "Some branches failed to clone. Check $error_log for details."
|
||||
else
|
||||
echo "All branches cloned successfully."
|
||||
fi
|
||||
|
|
|
|||
67
pull.sh
67
pull.sh
|
|
@ -3,6 +3,9 @@
|
|||
# Branch to process (test, preprod, master)
|
||||
BRANCH=$1
|
||||
|
||||
# Retry limit for failed pull attempts
|
||||
RETRY_LIMIT=3
|
||||
|
||||
# Branch types and their corresponding directories
|
||||
declare -A branch_dirs=(
|
||||
["dev"]="test"
|
||||
|
|
@ -71,6 +74,40 @@ branches=(
|
|||
"master_openeducat_erp-14.0.1.0"
|
||||
)
|
||||
|
||||
# Error log file
|
||||
error_log="pull_error_log.txt" > "$error_log" # Clear log file at the start
|
||||
|
||||
# Function to pull code with retries
|
||||
pull_branch() {
|
||||
local branch=$1
|
||||
local full_path=$2
|
||||
local attempt=1
|
||||
|
||||
while [ $attempt -le $RETRY_LIMIT ]; do
|
||||
echo "Pulling $branch into $full_path (Attempt $attempt/$RETRY_LIMIT)..."
|
||||
|
||||
# Navigate to the directory and pull the latest changes
|
||||
cd "$full_path" || { echo "Failed to access $full_path"; exit 1; }
|
||||
git pull origin "$branch"
|
||||
local pull_status=$?
|
||||
|
||||
# Return to the previous directory
|
||||
cd - || exit 1
|
||||
|
||||
if [ $pull_status -eq 0 ]; then
|
||||
echo "Successfully pulled $branch into $full_path"
|
||||
return 0
|
||||
else
|
||||
echo "Failed to pull $branch (Attempt $attempt)."
|
||||
attempt=$((attempt + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
# If retry limit is reached, log the failure
|
||||
echo "Failed to pull $branch after $RETRY_LIMIT attempts." >> "$error_log"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Loop through each branch
|
||||
for branch in "${branches[@]}"; do
|
||||
prefix="${branch%%_*}"
|
||||
|
|
@ -80,24 +117,20 @@ for branch in "${branches[@]}"; do
|
|||
folder_name="${branch#*_}"
|
||||
full_path="$BRANCH/$folder_name"
|
||||
|
||||
# Create the directory if it doesn't exist
|
||||
mkdir -p "$full_path"
|
||||
|
||||
# Navigate to the directory
|
||||
cd "$full_path" || { echo "Failed to access $full_path"; exit 1; }
|
||||
|
||||
# Pull the latest changes
|
||||
git pull origin "$branch"
|
||||
|
||||
# Check if the pull was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Successfully pulled $branch into $full_path"
|
||||
else
|
||||
echo "Failed to pull $branch"
|
||||
exit 1
|
||||
# Skip the branch if the directory does not exist
|
||||
if [ ! -d "$full_path" ]; then
|
||||
echo "Skipping $branch: $full_path does not exist"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Return to the previous directory
|
||||
cd - > /dev/null
|
||||
# Pull the branch with error handling
|
||||
pull_branch "$branch" "$full_path"
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if any errors were logged
|
||||
if [ -s "$error_log" ]; then
|
||||
echo "Some branches failed to pull. Check $error_log for details."
|
||||
else
|
||||
echo "All branches pulled successfully."
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in New Issue