Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 90f5a5087d | |||
| c0bdd81cf5 | |||
| c612c6c762 | |||
| 3265d75b7d | |||
| 50f53d3a35 |
17
README.md
17
README.md
@@ -84,6 +84,23 @@ Sample
|
||||
[2025-07-04 16:06:31] [<uniq id>] [END]
|
||||
```
|
||||
|
||||
#### What happens to local changes
|
||||
|
||||
Any local changes are stored in a backup branch and then reset and cleaned up. No local changes should be commited or synced up, this would break the pull only flow.
|
||||
|
||||
If there are changes and they have been reset it will show up in the log like this
|
||||
|
||||
```log
|
||||
...
|
||||
[2026-01-22 14:31:02] [F4222EC4] [!] Local or cached changes detected, creating backup branch and resetting changes
|
||||
[2026-01-22 14:31:02] [F4222EC4] Reset log: HEAD is now at 633f6de Uppdate 14
|
||||
...
|
||||
```
|
||||
|
||||
If a clean up was run too it will show up as "Clean log" after the Reset log.
|
||||
|
||||
The reset will only reset local or cached changs (added) but not changed that have been commited. If changes have been commited a manual reset has to be done.
|
||||
|
||||
## TODO
|
||||
|
||||
Future versions will hold an incoming webhook handler and a polling scripts (systemd based)
|
||||
|
||||
@@ -33,9 +33,27 @@ 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
|
||||
changes=$("${GIT_COMMAND_BASE[@]}" "-C" "${GIT_REPOSITORY_FOLDER}" "status" "--porcelain");
|
||||
if [ -n "$changes" ]; then
|
||||
echo "[$(date +"%Y-%m-%d %H:%M:%S")] [${unique_id}] [!] 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";
|
||||
|
||||
@@ -122,7 +122,7 @@ else
|
||||
fi;
|
||||
# set remote host if not set to the ssh config name
|
||||
if [ -z "${REMOTE_HOST}" ]; then
|
||||
REMOTE_HOST="${GIT_REPOSITORY_NAME}";
|
||||
REMOTE_HOST="$(basename "${REPOSITORY}" .git)";
|
||||
fi;
|
||||
if [ $error -eq 1 ]; then
|
||||
exit;
|
||||
@@ -131,7 +131,7 @@ fi;
|
||||
error=0
|
||||
echo "* Validate SSH PEM Key exist and SSH config";
|
||||
if ! grep "Host ${REMOTE_HOST}" "${GIT_WEBHOOK_BASE_FOLDER}"/.ssh/config; then
|
||||
echo "[!] ssh config entry for Host ${REMOTE_HOST} is missing";
|
||||
echo "[!] ssh config entry for Host ${REMOTE_HOST} is missing in ${GIT_WEBHOOK_BASE_FOLDER}/.ssh/config";
|
||||
error=1;
|
||||
else
|
||||
# make sure the identiy file is there
|
||||
|
||||
Reference in New Issue
Block a user