Updated gpull.

This commit is contained in:
Ali
2025-12-18 10:04:50 +08:00
parent da2260d414
commit 82e3b234f5

19
gpull
View File

@@ -5,13 +5,20 @@
# Usage: # Usage:
# ./gpull [repo] [remote] [branch] # ./gpull [repo] [remote] [branch]
# #
# repo (optional) Directory of repository to pull, default is current directory. # repo (optional) Directory of repository to pull, default is current
directory.
# remote (optional) Remote name, default is origin. # remote (optional) Remote name, default is origin.
# branch (optional) Branch name, default is current branch. # branch (optional) Branch name, default is current branch.
# #
# The script will pull the specific remote branch into the local repository. # The script will pull the specific remote branch into the local repository.
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Function to handle errors gracefully without closing terminal
handle_error() {
echo "Error: $1"
return 1
}
# Get command line arguments # Get command line arguments
repo_dir=${1:-$(pwd)} repo_dir=${1:-$(pwd)}
remote=${2:-origin} remote=${2:-origin}
@@ -19,15 +26,15 @@ branch=${3:-}
# Change to the specified directory # Change to the specified directory
if [ ! -d "$repo_dir" ]; then if [ ! -d "$repo_dir" ]; then
echo "Error: Directory '$repo_dir' does not exist." handle_error "Directory '$repo_dir' does not exist."
exit 1 exit 1
fi fi
cd "$repo_dir" || exit 1 cd "$repo_dir" || { handle_error "Failed to change to directory '$repo_dir'."; exit 1; }
# Check if the current directory is a git repository # Check if the current directory is a git repository
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
echo "Error: '$repo_dir' is not a git repository." handle_error "'$repo_dir' is not a git repository."
exit 1 exit 1
fi fi
@@ -35,7 +42,7 @@ fi
if [ -z "$branch" ]; then if [ -z "$branch" ]; then
branch=$(git rev-parse --abbrev-ref HEAD) branch=$(git rev-parse --abbrev-ref HEAD)
if [ "$branch" = "HEAD" ]; then if [ "$branch" = "HEAD" ]; then
echo "Error: Not currently on a branch. Please specify a branch to pull." handle_error "Not currently on a branch. Please specify a branch to pull."
exit 1 exit 1
fi fi
fi fi
@@ -49,6 +56,6 @@ git pull "$remote" "$branch"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "Successfully pulled changes from $remote/$branch" echo "Successfully pulled changes from $remote/$branch"
else else
echo "Error: Failed to pull changes from $remote/$branch" handle_error "Failed to pull changes from $remote/$branch"
exit 1 exit 1
fi fi