สร้าง Git Repo ง่าย ๆ บน Godaddy

Thu 19 Dec 2013
ใช้เวลาอ่าน 2 นาที

เกริ่นนำ

บันทึกการทดลองอีกหนึ่งบทสำหรับ Git ปกติไม่ค่อยได้ใส่ใจใช้งาน Git แบบจริง ๆ จัง ๆ อะไรมากนักเพราะไม่ได้เขียน Source Code เองมีแต่เอามาใช้ก็แต่ clone มาก็จบกันไป วันนี้มีโจทย์ให้ทำ คือ พัฒนาเว็บร่วมกันโดยใช้ Git เป็นตัวควบคุม Source Code พอดีว่า Project อยู่บน Godaddy สามารถ Remote ผ่านทาง ssh ได้ก็หวานหมูเลย จริง ๆ บน Dreamhost ก็ทำได้ครับแต่ไม่แน่ใจว่าทำแบบเดียวกันหรือเปล่าเพราะอ่าน wiki ของ Dreamhost แล้วยาวกว่า เอาเป็นว่าลองดูวิธีนี้สั้น ใช้กันแบบส่วนตัวมี account เดียวไม่แชร์กับใครซึ่งใช้กับ Server ของตัวเองก็ได้ครับ

แหล่งอ้างอิง

http://all-of.me/running-git-over-ssh-with-godaddy-shared-hosting/

สะภาพแวดล้อม

  • Server: Godaddy CentOS 5.5
  • Git:  1.8.2.1
  • ssh + authorized_keys enable

ตั้งค่า ชื่อและอีเมล

ตรงนี้ไม่จำเป็นก็ได้ครับแต่เพื่อความสวยงามของ log ทำไว้ก็ดี คือเป็นการกำหนดชื่อและอีเมล เมื่อเราสั่ง commit ก็จะแปะเข้าไปใน comment ด้วยถ้าไม่ใส่ก็จะเอามาจะ shell user ที่ใช้งานอยู่

$ git config --global user.name '<your_name>'
$ git config --global user.email '<your_email>'

 

สร้าง Git Repository ทางฝั่ง  Server

เลือกที่เหมาะ ๆ สร้าง directory สำหรับเก็บ Source Code ของ Project เช่น

$ mkdir ~/git

$ cd ~/git

 

Copy เว็บที่เราเคยเขียนไว้มาเก็บไว้ที่ dir git

$ cp -a ~/html/project_dir .

$ cd project_dir

 

สั่งเริ่มสร้าง repository ด้วยคำสั่ง ดังต่อไปนี้

$ git init

$ git update-server-info

$ git add *

$ git add .htaccess

$ git commit -m "Start commit..."

 

ตั้งค่าให้เป็น git repo แบบ bare ซึ่งทางฝั่ง Client จะได้ push มาได้

$ git config --local --bool core.bare true

ตั้งให้มีการ update ทางฝั่ง web root ทุกครั้งที่มีการ push มาจากฝั่ง client โดยการเพิ่ม file ชื่อว่า post-receive ใน .git/hooks

$ vim .git/hooks/post-receive

แล้วเพิ่ม script สำหรับการ update ดังนี้

#!/bin/bash
PROJECT_PATH="~/html/project_dir"

echo "Starting Pull request"
unset $(git rev-parse --local-env-vars)
cd $PROJECT_PATH
git pull
echo "Pull request is completed"

หลังจากนั้นให้เปลี่ยน Source ของ Web เป็น Git ที่เราสร้างไว้

$ cd ~/html

$ mv project_dir project_dir.bak

$ git clone ~/git/project_dir

เสร็จสิ้นกระบวนการทางฝั่ง Server ต่อไปก็เป็นฝั่ง Client

การใช้งานฝั่ง Client

สำหรับเครื่อง Client ถ้าเป็น Linux และ OS X จะง่ายมากแค่ลง Git ก็สามารถใช้งานได้ทันที ทาง Windows ผมไม่แน่ใจว่าทำยังไงบ้างสมมติว่าเรามี Git อยู่บนเครื่องเรียบร้อยแล้ว และ มีการแลกเปลี่ยน public key ระหว่าง Client และ Server เรียบร้อยแล้ว

ตั้งค่า ชื่อและอีเมล

ตรง นี้ไม่จำเป็นก็ได้ครับแต่เพื่อความสวยงามของ log ทำไว้ก็ดี คือเป็นการกำหนดชื่อและอีเมล เมื่อเราสั่ง commit ก็จะแปะเข้าไปใน comment ด้วยถ้าไม่ใส่ก็จะเอามาจะ shell user ที่ใช้งานอยู่

$ git config --global user.name '<your_name>'
$ git config --global user.email '<your_email>'

 

ทำการ Clone Project

$ git clone ssh://ssh_username@hostname/~/git/project_name

หรือ

$ git clone ssh_username@hostname:git/project_name

 

รอสักครู่ก็จะได้ git local repo มาไว้ที่เครื่องเราเรียบร้อย ทดสอบแก้ไข้หน้าเว็บ สมมติว่าแก้หน้า index.php เมื่อแก้และบันทึกเสร็จแล้วให้สั่ง

$ git add index.php

$ git commit -m "Edit index.php"

$ git push

สังเกต output ที่ออกมานะครับควรจะมีบอกว่ามีการอัปเดททางฝั่ง ที่เก็บด้วย เมื่อทำเสร็จก็ลอง reload เว็บดูว่าเปลี่ยนตามที่เราแก้หรือไม่

ใครใช้เครื่องมือพัฒนาเว็บที่สนับสนุน git ก็สามารถ import เข้าไปแก้ไขและสั่งควบคุม Git กับเครื่องมือได้เลย เช่น Aptana Studio ก็ import เข้าไปเมื่อเห็นว่าเป็น Git ก็จะขึ้นที่ชื่อ Project ว่าเป็น Master เราก็สั่ง Commit , Pull, Push ได้เลย ลองเอาไปประยุกต์ใช้กันดูครับ ส่วนคนที่เซียนแล้วสามารถแนะนำเพิ่มเติมมาได้ครับ ผมเองก็เพิ่งหัดใช้

หมายเหตุ

สำหรับเว็บที่มีการเขียนข้อมูล upload file ขึ้นไปเก็บตลอดเวลาอันนี้ผมไม่แน่ใจว่าจะมีผลกระทบหรือต้องใส่กฎยกเว็นว่าอันไหนให้ ignor หรือเปล่า เพราะที่ใช้อยู่ไม่มีการ upload และเขียน file ทางฝั้ง web directory ยังไงก็วานผู้รู้ช่วยให้ความกระจ่างด้วยครับ