From 3265d75b7d3d1369b57a6e5acc268e1bdc73d30f Mon Sep 17 00:00:00 2001 From: Clemens Schwaighofer Date: Thu, 22 Jan 2026 14:33:40 +0900 Subject: [PATCH] Add reset of current changes before running merge in git_sync.sh Will create a backup branch of all the changes and then reset the working copy --- src/bin/git_sync.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/bin/git_sync.sh b/src/bin/git_sync.sh index fd5c563..e80c581 100755 --- a/src/bin/git_sync.sh +++ b/src/bin/git_sync.sh @@ -33,9 +33,28 @@ GIT_COMMAND=("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" "fetch" "- "${GIT_COMMAND[@]}" # check diff for if we need to update GIT_COMMAND=("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" "diff" "--stat" "HEAD" "${REMOTE_NAME}/${BRANCH}") +# In general all data that should not be checked in should be in the .gitignore file changes=$("${GIT_COMMAND[@]}" 2>&1) if [ -n "${changes}" ]; then echo "[$(date +"%Y-%m-%d %H:%M:%S")] [${unique_id}] [START] git merge ${GIT_REPOSITORY_FOLDER} ${REMOTE_NAME}/${BRANCH}" &>> "$LOG_FILE"; + # check if there are local changes, make a backup branch and reset them + local_changes=$("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" "diff" "--quiet"); + cached_changed=$("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" "diff" "--quiet" "--cached"); + if $local_changes || $cached_changed; then + echo "[$(date +"%Y-%m-%d %H:%M:%S")] [${unique_id}] [!] Local or cached changes detected, creating backup branch and resetting changes" &>> "$LOG_FILE"; + GIT_COMMAND=("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" "branch" "backup-$(date +%Y%m%d-%H%M%S)") + "${GIT_COMMAND[@]}"; + # Reset everything + GIT_COMMAND=("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" "reset" "--hard" "HEAD") + log_data=$("${GIT_COMMAND[@]}" 2>&1); + echo "[$(date +"%Y-%m-%d %H:%M:%S")] [${unique_id}] Reset log: ${log_data}" &>> "$LOG_FILE"; + GIT_COMMAND=("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" "clean" "-fd") + log_data=$("${GIT_COMMAND[@]}" 2>&1); + if [ -n "${log_data}" ]; then + echo "[$(date +"%Y-%m-%d %H:%M:%S")] [${unique_id}] Clean log: ${log_data}" &>> "$LOG_FILE"; + fi; + fi; + # MERGE GIT_COMMAND=("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" merge "${REMOTE_NAME}/${BRANCH}") log_data=$("${GIT_COMMAND[@]}" 2>&1); echo "[$(date +"%Y-%m-%d %H:%M:%S")] [${unique_id}] ${log_data}" &>> "$LOG_FILE";