#!/bin/bash # set -x source ./log_helpers.sh GIT_SSL_NO_VERIFY=true commit_before_pull="" # save the last commit before executing 'git pull' save_commit_before_pull () { # git reflog -> 46c5896 HEAD@{0}: commit: Made update_helpers.sh executable commit_before_pull=$(git reflog | grep "HEAD@{0}" | cut -d" " -f1) if ! [ -z "$commit_before_pull" ]; then if grep -qE "^[[:xdigit:]]{6,}$" <<< $commit_before_pull; then return 0 fi fi commit_before_pull="" return 1 } # save_commit_before_pull # fallback if something went wrong: revert to last valid commit revert_to_commit_before_pull () { if ! [ -z "$commit_before_pull" ]; then if grep -qE "^[[:xdigit:]]{6,}$" <<< $commit_before_pull; then `git reset --hard "$commit_before_pull"` if [ $? -eq 0 ]; then return 0 fi fi fi return 1 } # revert_to_commit_before_pull # clone the customer repository in ./UpdateController/workspace. # this is done only once. clone_customer_repository () { local func="${FUNCNAME[0]}" current_dir=${PWD##*/} current_dir="./${current_dir:-/}" if [ "$current_dir" = "./UpdateController" ]; then if ! [[ -d ./workspace ]]; then { mkdir -p ./workspace; } fi # check if the directory is empty. If so, clone the # customer repository if ! find ./workspace -mindepth 1 -maxdepth 1 | read; then log_debug "$func: cloning ${1} ..." ( cd ./workspace && git clone "$1" ; ) if [ $? -eq 0 ]; then log_debug "$func: cloning ${1} done" return 0 fi fi fi return 1 } # clone_customer_repository https://git.mimbach49.de/GerhardHoffmann/customer_281.git pull_customer_repository () { # has to be called in ./UpdateController local func="${FUNCNAME[0]}" current_dir=${PWD##*/} current_dir="./${current_dir:-/}" if [ "$current_dir" = "./UpdateController" ]; then repository_dir="./workspace/$1" if ! [[ -d "$repository_dir" ]]; then log_crit "$func: $repository_dir does not exist!" return 1 fi message=$(cd $repository_dir && git pull) if [ "$message" = "Already up to date." ]; then log_warn "$func: $repository_dir already up to date." return 1 fi log_info "$func: $message" # Updating a6dd5d7..46d6b37 while IFS= read -r $line; do echo "$line" # sed -E 's/(Updating\s+)([[:xdigit:]]+)(..)([[:xdigit:]]+).*?/\2 \4/' done < <(printf "%s\n" "$message") else log_crit "$func not called in ./UpdateController" return 1 fi return 0 } # pull_customer_repository customer_281