#!/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"/