# Github webhook scripts These are scripts to setup the basic webhook folder structure, the clone base for one campaign and a simple crontab script to pull data from the repository ## Scripts - base_setup.sh: setup for the folder structure, users, etc - new_clone.sh: Basic clone script - git_sync.sh: The script to run in crontab, to sync the changes ## Run commands ### Settings in `config/webhook.cfg` the following settings have to be entered ```ini GIT_WEBHOOK_BASE_FOLDER="" WWW_GROUP="" SUDO_USER="" USE_SUDO=<1: use sudo, 0: no sudo used> ``` ### base_setup.sh as is, if the folder exists it will only copy the scripts, will not alter or change anything. Planned to get auto fixes for wrong ACL, etc or missing config settings ### new_clone.sh Create a new clone ```sh new_clone.sh [repository] [branch] ([host]) ([remote name]) ``` The [host] is the SSH Host name entry, this sill repalce any "[host]:" in the [repository]. If the [host] is not set the host set in the [repository] will be used. If nothing found the script will abort A [branch] name must be set all the time. An optional [remote name] can be set, if not set "origin" will be used. ### git_sync.sh Syncs changes, this is the script that should be placed into the crontab ```sh git_sync.sh [repository] [branch] ([remote name]) ``` The [repository] the the folder name inside the clone folder, on new clone it is output in the info line "... into (GIT REPOSITORY FOLDER)". All repository folders are in the "clone-base/" folder. The base folder is defined in the config/webhook.crf file. A [branch] name must be set all the time. An optional [remote name] can be set, if not set "origin" will be used. All sync progress will be written to the log folder inside the base folder, the log file has the name of [repository] Sample ```log [2025-07-04 16:06:31] [] [START] git merge / [2025-07-04 16:06:31] [] Updating .. [2025-07-04 16:06:31] [] [END] ``` ## TODO Future versions will hold an incoming webhook handler and a polling scripts (systemd based)