Git Hook untuk Push Mirror Setelah Post-Receive

logo git

Judule wagu,
Ha ceto… Pokmen ngono kae lah..

Saya ingin membuat pengaturan seperti gambar berikut:

ServerRepo

Kasusnya adalah, jika setiap ada commit dan push dari Developer ke Server Repo. Maka otomatis repo yang sama pada Server Testing akan diupdate tanpa campur tangan manusia lagi.

Langkah yang dikerjakan begini:

Server Repo Side

1. Seting agar bisa melakukan ssh ke server testing tanpa login. (via kunci public).

2. Pindah ke direktori git

#cd sanbox.git

3. Buat file hook post-receive dengan target mirror branch develop

# vim hooks/post-receive

isi dengan berikut:

#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-receive".
ssh user@servertesting 'cd '"/home/user/sandbox"' && git fetch origin && git pull origin develop'

4. Set Permission

# chmod +x hooks/post-receive

Server Testing Side

1. Login sebagai user. Set kunci public dari server repo, agar server repo bisa ssh tanpa password (kunci public),

2. Set kunci publik ke server repo, agar server testing bisa clone repo(git) via ssh,

3. Clone repo,

# git clone git@serverrepo:repos/sandbox.git

4. Pindah ke branch “develop”

# cd sandbox
# git checkout develop
# git status

Client Side (Developer)

1. Clone repo via ssh (setelah seting kunci public),

# git clone git@serverrepo:repos/sandbox.git

2. Lakukan perubahan di repo pada brach develop,

# git checkout develop
# git status
# touch README

3. Lakukan commit dan push ke server.

# git add README
# git commit -m "testing mirror"
# git push origin develop

4. Perhatikan log yang didapat

Kelar,

Lakukan Pengecekan pada Server Testing!!

# git status | pastikan pada branch develop
# ls | akan ada file README (yang baru saja ditambahkan oleh client)
# git log

Jika ada pertanyaan silahkan dengan senang hati tinggalkan komentar.
Sekian

Regard
Tuan Pembual