GitRoot: forge ที่ clone ทีเดียวได้ทั้ง issue และบอร์ด เพราะเก็บทุกอย่างเป็นไฟล์ใน git
GitRoot คือ git forge ที่เก็บ issue · บอร์ด · สิทธิ์ของโปรเจกต์เป็นไฟล์ไว้ใน git คู่กับโค้ด ไม่ใช่ในฐานข้อมูล สั่ง git clone ครั้งเดียวจึงได้ทุกอย่างกลับมาไว้ในโฟลเดอร์เดียว โดยไม่ต้องฝากข้อมูลไว้กับ forge เจ้าใด

GitRoot เป็น forge หรือแพลตฟอร์มโฮสต์โค้ดที่ดึงทั้งโปรเจกต์กลับมาไว้ในโฟลเดอร์เดียวได้ในครั้งเดียว ไม่ใช่แค่โค้ด เบื้องหลังคือมันเก็บทุกอย่างของโปรเจกต์ไว้เป็นไฟล์ใน git ระบบเก็บประวัติการแก้โค้ดที่นักพัฒนาใช้กัน พอทุกอย่างเป็นไฟล์แบบนั้น การสั่ง git clone ทีเดียวก็ดึงกลับมาได้หมด ทั้งตัวโค้ด · รายการงานที่ต้องแก้หรือ issue · บอร์ดงาน ไปจนถึงสิทธิ์ว่าใครแก้อะไรได้
จุดที่ต่างจาก forge เจ้าใหญ่อย่าง GitHub และ GitLab คือเวลา clone โปรเจกต์จากที่นั่นกลับมา เราได้แค่โค้ด ส่วน issue กับบอร์ดยังค้างอยู่ในฐานข้อมูลของเขา ดึงกลับมาไม่ได้ คนทำ GitRoot เป็นนักพัฒนาคนเดียว และตอนนี้ยังเป็นรุ่น alpha ที่เจ้าตัวบอกเองว่าอย่าเพิ่งเอาไปใช้งานจริง
GitRoot ทำหน้าที่น้อยกว่าที่คิด

GitRoot ทำหน้าที่หลักเพียงสองอย่าง คือสร้าง repository หรือที่เก็บโค้ดหนึ่งชุด และควบคุมว่าใครเข้าถึง repository ไหนได้บ้าง ผู้พัฒนาระบุไว้ชัดเจนว่ามีเท่านี้ ไม่มากหรือน้อยไปกว่านี้
ความสามารถอื่นที่โปรเจกต์ต้องใช้ ทั้งระบบ issue · การวางแผนงาน · บอร์ดงาน ไปจนถึงการรีวิวก่อนรวมโค้ด ล้วนแยกเป็นปลั๊กอินอิสระและเปิดเฉพาะตัวที่โปรเจกต์นั้นต้องใช้จริงๆ ได้ ปลั๊กอินแต่ละตัวไม่ผูกกัน จะเปิดบอร์ด issue ไว้ใช้โดยไม่ติดตั้งปลั๊กอินหน้าเว็บเลยก็ยังได้ ระบบรีวิวและรวมโค้ดของ GitRoot มีชื่อเรียกเฉพาะว่า graft เว็บ gitroot.dev เองก็ใช้ฟีเจอร์นี้จัดการโค้ดที่คนอื่นส่งเข้ามา
เหตุผลที่แยกย่อยขนาดนี้คือผู้พัฒนาไม่ต้องการให้ forge บังคับวิธีทำงานของเรา เพราะแต่ละทีมแบ่งงานเป็นรอบและเป้าหมายย่อยไม่เหมือนกัน การเปิดเฉพาะปลั๊กอินที่ใช้จริงทำให้เราเลือกวิธีทำงานเองได้ แทนที่จะให้เมนูสำเร็จรูปของ forge กำหนดไว้ตั้งแต่ต้น
คุมสิทธิ์ผ่าน branch ไม่ใช่ระบบสิทธิ์แยกต่างหาก
GitRoot ไม่ได้สร้างระบบแยกต่างหากเพื่อกำหนดว่าใครแก้อะไรได้ แต่กำหนดสิทธิ์ผ่าน branch (สายการแก้โค้ดที่แยกออกมาจากตัวหลัก) ของ git โดยตรง ทุก repository มีไฟล์ชื่อ .gitroot/users.yml ซึ่งระบุว่าใครมีสิทธิ์เขียนตรงไหนได้บ้าง
ตอนเริ่มต้น มีแค่เจ้าของ repository เท่านั้นที่เขียนลง default branch หรือสายหลักได้ ถ้าคนอื่นพยายาม push หรือส่งการแก้ขึ้นไปยังสายหลัก GitRoot จะปฏิเสธทันที แต่ทุกคนสร้าง branch ของตัวเองได้ พอสร้างแล้ว GitRoot จะให้เฉพาะคนสร้างเขียน branch นั้นได้ คนอื่นแก้ branch นี้ไม่ได้ การแยกไปทำงานบน branch ของตัวเองแล้วค่อยรวมกลับเป็นวิธีทำงานแบบ git แท้ๆ แบบเดียวกับเทคนิค git worktree ที่ให้รันงานหลายสายพร้อมกัน
ตามค่าเริ่มต้น มีแค่เจ้าของที่ merge หรือรวมงานเข้าสายหลักได้ ถ้าจะให้คนอื่น merge ได้ด้วย เจ้าของต้องเปิดสิทธิ์ให้ ซึ่งทำได้สองทาง ทางแรกคือเพิ่มชื่อคนนั้นลงในไฟล์ .gitroot/users.yml ตรงๆ ทางที่สองคือคนนั้นสร้าง branch ที่เพิ่มชื่อตัวเองไว้ แล้วเจ้าของ merge branch นั้นเข้าไป สรุปแล้ว ทุกคนอ่านและแก้ไฟล์บนเครื่องตัวเองหรือบน branch ของตัวเองได้อย่างอิสระ แต่การรวมงานเข้าสายหลักซึ่งสะท้อนสถานะปัจจุบันของโปรเจกต์ต้องผ่านมือเจ้าของเสมอ
ไม่มีฐานข้อมูล จึงย้ายเซิร์ฟเวอร์ได้โดยไม่ต้องเขียนสคริปต์
ทุกอย่างเก็บเป็นไฟล์ธรรมดาไว้ข้างโค้ด ไม่ได้อยู่ในฐานข้อมูลหรือซุกซ่อนไว้ใน git
หลักการข้อนี้มีข้อดีที่เห็นได้ชัดสองอย่าง อย่างแรกคือติดตั้งได้โดยไม่ต้องพึ่ง dependency หรือซอฟต์แวร์อื่นที่ต้องลงเพิ่ม แค่ดาวน์โหลดโปรแกรมไฟล์เดียวมารันก็มี forge ของตัวเองใช้ได้เลย อย่างที่สอง ถ้าวันหนึ่งอยากย้ายไปเซิร์ฟเวอร์ใหม่ ก็ย้ายไฟล์ไปได้เลย ไม่ต้องเขียนสคริปต์ดึงข้อมูลออกจากฐานข้อมูลเก่าไปลงฐานใหม่ เพราะข้อมูลทุกอย่างเป็นไฟล์ที่ git เก็บประวัติไว้ให้แล้ว
ใช้งานจริงผ่าน git ล้วนๆ ส่วนหน้าเว็บเป็นแค่ส่วนเสริม
วิธีหลักในการใช้ GitRoot คือใช้ git ล้วนๆ การจัดการ issue กับสิทธิ์ทำผ่าน branch และไฟล์ yml เป็นหลัก ส่วนหน้าเว็บที่ดูสวยงามเป็นแค่ปลั๊กอินเสริม ไม่ใช่ค่าเริ่มต้น แม้แต่บอร์ด issue ก็ยังเปิดดูแบบพื้นฐานได้โดยไม่ต้องติดตั้งปลั๊กอินหน้าเว็บเลย
แปลว่าคนที่จะเข้ามาช่วยพัฒนาต้องใช้ git เป็นก่อน เพราะทั้งโค้ด · issue · งานแปล ล้วนจัดการผ่าน git ตอนนี้โปรเจกต์ยังเป็นรุ่น alpha ด้วย การเข้ามาร่วมจึงยังไม่ง่ายสำหรับคนที่ไม่คุ้นกับ git ใครที่กลัวว่าจะใช้ git พลาด อาจเริ่มจากเครื่องมือสาย git ที่ย้อนคำสั่งได้ง่ายอย่าง Jujutsu มาก่อนก็ได้ ผู้พัฒนาเองรู้ข้อจำกัดนี้ดี และตั้งเป้าไว้ว่าสักวันจะให้ commit หรือบันทึกการแก้ และ push โค้ดผ่านเบราว์เซอร์ได้โดยตรง เพื่อให้คนที่ไม่ถนัด git เข้ามาร่วมได้ด้วย
หลักคิดที่หยิบไปใช้ได้ แม้ไม่ได้ลง GitRoot

ต่อให้ยังไม่คิดจะลง GitRoot วันนี้ ไอเดียแกนกลางของมันก็หยิบไปใช้ได้ นั่นคือ metadata หรือข้อมูลประกอบโปรเจกต์ ทั้ง issue · บอร์ด · สิทธิ์ ไม่จำเป็นต้องฝากไว้กับ forge เจ้าใด ข้อมูลเหล่านี้เก็บเป็นไฟล์ไว้คู่กับโค้ดและย้อนดูประวัติได้ พอเก็บเป็นไฟล์ก็ใช้เครื่องมือค้นหาข้อความทั่วไปค้นข้อมูลได้ เปิดอ่านและแก้ตอนออฟไลน์ได้ และไม่ผูกติดกับเจ้าใดเจ้าหนึ่งจนย้ายออกไม่ได้
ลองนึกภาพว่าบัญชีของเราบน forge เจ้าใหญ่ถูกปิดโดยไม่ทันตั้งตัว issue · บอร์ด · ประวัติการรีวิวที่สะสมมาทั้งหมดจะยังอยู่กับเราไหม ถ้าทุกอย่างเป็นไฟล์ที่ clone ลงเครื่องไว้ตั้งแต่แรก เราก็ไม่ต้องกังวลเรื่องนี้อีกต่อไป
ที่มา: เอกสารทางการของ GitRoot
ชอบเรื่องแนวนี้ มีอีบุ๊คฟรีให้อ่านต่อ
สร้าง Claude Skill แบบไม่ต้องรู้โค้ด คู่มือสร้าง Claude Skill ของคุณเองด้วยการคุยกับ Claude Code เป็นภาษาไทย
กดสมัครแล้วเราจะส่งเทคนิค AI และของแจกใหม่ๆ ให้ทางอีเมล เลิกรับได้ตลอด



