Tag Archive git

git: private repository โดยใช้ synology server

เดี่ยวนี้ถ้าต้องการจะใช้ git repository ก็แค่สมัครสมาชิกเว็บอย่าง github แค่กรอกข้อมูลใน Join GitHub ไม่นานก็ได้พื้นที่สำหรับ backup ข้อมูลได้แล้ว ติดแค่ว่าถ้าเป็น project ภายในหรือเป็นเรื่องเกี่ยวกับธุรกิจการจะเปิดให้คนอื่นใครก็ได้เข้ามาดู source code คงจะไม่ดีแน่ ทำให้ต้องจ่ายค่าบริการเพื่ิอสร้างเป็น private repository หรืออีกทางเลือกคือ สร้าง git server ไว้ใช้เอง

ผมมีตัว nas ของ synology อยู่แล้วเลยใช้มันเป็นที่สำรองข้อมูลซะเลย จะได้ไม่ต้องสร้าง linux มาทำเป็น server อีกตัว

  1. login เข้า synology Control Panel โดยใช้ user ที่มีสิทธิ administrator
  2. ลง git package โดยวิธี Install or Buy Packages
  3. set user permission ให้ใช้ group git ได้โดยวิธี Manage Groups
  4. เปิดให้ใช้ ssh ได้โดยวิธีตาม Terminal
  5. SSH login synology nas ได้โดยวิธี How to login to DSM with root permission via SSH/Telnet
  6. สร้าง folder ไว้เก็บข้อมูล git ทั้งหมดและเซ็ทสิทธิไว้
    # Create the directory
    mkdir /volume1/git

    # folder owner and permission
    chown -R admin:administrators git
    chmod -R 772 git

  7. เตรียมการสำเร็จแล้ว เราสามารถสร้าง repository ขึ้นมาใหม่ได้โดย
    cd /volume1/git
    git init --bare --shared [my-project].git

    โดยแทนที่

    [my-project]

    โดยชื่อ git project

    ในขั้นตอนนี้ folder [my-project].git จะถูกสร้างขึ้นมาใหม่ใน /volume1/git/ และจะเห็นข้อความประมาณ Initialized empty shared Git repository in /volume1/git/snippets.git/ ก็เป็นอันเสร็จกับทางฝั่ง git server แล้ว

  8. จากนั้นก็ clone git ในเครื่อง client (ฝั่ง local) ได้โดยใช้คำสั่ง
    git clone ssh://[git-user]@[syn-ip-addr]/volume1/git/[my-project].gitโดย
    [git-user]
    user ที่เซ็ตไว้
    [syn-ip-addr]
    ip ของตัว nas synology
    [my-project]
    path และชือ repository

    เช่น
    git clone ssh://ph[email protected]/volume1/git/chromeExtensions/pittBookmarks.git

อาจจะดูยุ่งยากแต่ repository ต่อไปแค่ทำ 2 ขั้นตอนสุดท้าย ก็สามารถทำงานอย่างเป็นส่วนตัวได้แล้ว

git: ให้สร้างโพลเดอร์แต่ไม่สนไฟล์ข้างใน

จากเรื่อง default file รูปด้วย .htaccess ตัว directory \datas\peoples\ ต้องการที่จะให้ git push folder นี้และไฟล์ .htaccess และ default.jpg ขึ้นไปด้วย แต่ไม่ต้องการไฟล์อื่นๆ ใน \datas\peoples\ โพลเดอร์นี้ไปด้วย

ทำได้โดย

  1. ตรวจให้แน่ใจว่าไดเร็กทอรี่ ไม่อยู่ใน ไฟล์ .gitignore อื่นๆ ที่อยู่ใน directory แม่ เช่น \.gitignore และ \datas\.gitignore
  2. สร้างไฟล์ \datas\.gitignore โดยมีเนื้อหา
    # Ignore everything in this directory
    *
    # Except this file
    !.gitignore
    
    !/peoples/
    !/peoples/.htaccess
    !/peoples/default.jpg
    

    อธิบายง่ายๆคือ

    • * แทนละเว้นทุกไฟล์ใน folder \datas
    • ยกเว้น file ที่มีเครื่องหมาย ! นำหน้าชื่อ เช่น !.gitignore คือ ให้สนใจไฟล์ .gitignore ที่ใส่คำสั่งนี้ด้วย (ถ้าไม่ใส่ ไฟล์นี้จะถูกไม่สนใจ รวมถึงคำสั่งที่เขียนไว้ด้วย
    • !/peoples/ สร้างโพลเดอร์ /peoples/ เปล่าๆ ในโพลเดอร์ \datas\
    • !/peoples/.htaccess และ !/peoples/default.jpg คือให้เก็บ 2 ไฟล์นี้ไปด้วย
  3. add, push และ commit

หลังจากนี้ ทุกครั้งที่ pull ลงมาก็จะสร้างทั้ง 2 ไฟล์ทุกครั้ง