From c11b8935a052823cfe9267bfced26ca602545341 Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Mon, 27 Apr 2026 10:39:06 +0700 Subject: [PATCH] Add devcpone sync hook --- .githooks/post-commit | 8 ++++++++ scripts/devcpone_sync.sh | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100755 .githooks/post-commit create mode 100755 scripts/devcpone_sync.sh diff --git a/.githooks/post-commit b/.githooks/post-commit new file mode 100755 index 0000000..b6ee897 --- /dev/null +++ b/.githooks/post-commit @@ -0,0 +1,8 @@ +#!/bin/sh +set -eu + +repo_root=$(git rev-parse --show-toplevel) + +if ! "$repo_root/scripts/devcpone_sync.sh"; then + printf '%s\n' "devcpone sync skipped/failed; commit kept intact" >&2 +fi diff --git a/scripts/devcpone_sync.sh b/scripts/devcpone_sync.sh new file mode 100755 index 0000000..92373c9 --- /dev/null +++ b/scripts/devcpone_sync.sh @@ -0,0 +1,42 @@ +#!/bin/sh +set -eu + +repo_root=$(git rev-parse --show-toplevel) +branch=$(git symbolic-ref --quiet --short HEAD 2>/dev/null || true) + +case "$branch" in + master|main) + ;; + *) + exit 0 + ;; +esac + +remote_host=${DEVCPONE_REMOTE_HOST:-one@devcpone.aplikasi.web.id} +remote_root=${DEVCPONE_REMOTE_ROOT:-/home/one/project/one/one-api} +ssh_key=${DEVCPONE_SSH_KEY:-/Users/fajrihardhitamurti/id_rsa} + +tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/devcpone-sync.XXXXXX") +trap 'rm -rf "$tmpdir"' EXIT HUP INT TERM + +manifest="$tmpdir/files.list" + +if git rev-parse --verify HEAD^ >/dev/null 2>&1; then + git diff -M --name-only -z --diff-filter=ACMR HEAD^ HEAD > "$manifest" +else + git ls-files -z > "$manifest" +fi + +if [ ! -s "$manifest" ]; then + exit 0 +fi + +ssh_cmd="ssh" +if [ -f "$ssh_key" ]; then + ssh_cmd="$ssh_cmd -i $ssh_key" +fi + +ssh_cmd="$ssh_cmd -o BatchMode=yes" + +ssh "$remote_host" "mkdir -p '$remote_root'" >/dev/null +rsync -a --relative --from0 --files-from="$manifest" -e "$ssh_cmd" "$repo_root"/ "$remote_host:$remote_root"/