Starcat Developer

Feature branch

รัน agent ของโปรเจกต์แบบขนานหลายงานภายในแอปเดียว

feature branch คือแนวทางทำงานด้านโค้ดที่แยกออกมาภายในโปรเจกต์เดียว branch ที่ติดตามอยู่แต่ละอันมีแชต project agent และ sandbox preview เป็นของตัวเอง คุณจึงพัฒนาและทดสอบแบบขนานได้โดยไม่ปนการสนทนากัน

ข้อมูล:

ขณะนี้ feature branch เปิดให้เฉพาะบางองค์กร หากไม่เห็นปุ่ม New ในรายการ branch ของโปรเจกต์ แสดงว่าองค์กรของคุณยังไม่มีสิทธิ์ใช้งาน

เมื่อไหร่ควรใช้ branch

ใช้ feature branch เมื่อคุณต้องการงานแบบขนานภายในแอปเดียวกัน:

  • สร้างฟีเจอร์ขณะที่งานอื่นยังดำเนินต่อบน default branch
  • ลองการทดลองที่เสี่ยงโดยไม่บล็อก agent หลัก
  • แยกการแก้บั๊กไว้ต่างหาก ขณะที่ agent อีกตัวส่งงานต่อที่อื่น

นี่ยังคงเป็นโปรเจกต์เดียว ไม่ใช่แอปแยก, Surface, Module หรือ conversation fork

สิ่งที่ branch แยกออกจากกัน (และสิ่งที่ไม่แยก)

branch แยกสิ่งเหล่านี้:

  • โค้ด: แต่ละ branch มี GitHub branch และ commit ของตัวเอง
  • แชต / งานของ agent: แต่ละ branch ที่ติดตามอยู่มีการสนทนากับ project agent ของตัวเอง
  • sandbox runtime: แต่ละ branch มี builder sandbox และ preview ของตัวเอง

การสร้าง branch สามารถ fork Data Store แบบ standalone แต่ละตัวที่โปรเจกต์ใช้ เพื่อให้ branch ทำงานกับข้อมูลสำเนาของตัวเอง feature branch และ preview ของมันก็มีเป้าหมายการ routing ของตัวเองด้วย ดู การเชื่อมต่อและการกำหนดเส้นทาง

คำเตือน:

สอง branch ที่ route ไปยัง data store branch เดียวกันจะใช้ข้อมูลร่วมกัน การเปลี่ยน schema และข้อมูลใน branch หนึ่งจะปรากฏในอีก branch ดังนั้นควรประสานงานกันและหลีกเลี่ยงการเปลี่ยน schema ที่ขัดกัน ในเวลาเดียวกัน

การทำงานกับ branch

Project branch menu with Create new branch and Track existing branch actions

  1. เปิดรายการ Branches หรือตัวเลือก branch ของโปรเจกต์
  2. สร้างหรือติดตาม branch:
    • New → Create new branch สร้าง GitHub branch จาก branch ที่เปิดอยู่ในขณะนั้น และเริ่มติดตามในโปรเจกต์
    • New → Track existing branch ทำให้ GitHub branch ที่มีอยู่แล้วใช้ได้ใน builder ของโปรเจกต์
  3. สลับ branch จากรายการ แต่ละ branch ที่ติดตามอยู่จะเปิดพร้อมแชต project agent และ sandbox ของตัวเอง
  4. ทำงานกับ agent และทดสอบใน sandbox preview ของ builder บน branch นั้น

การ merge โดย agent

วิธี merge หลักให้ agent เป็นผู้ทำ จาก branch ที่ไม่ใช่ default:

  1. คลิก Merge
  2. ตรวจ merge preview ที่เขียนด้วยภาษาธรรมดาและคำเตือนเรื่อง conflict (ถ้ามี) แล้วยืนยัน
  3. คำขอจะเปิดในแชตของ default branch agent ของ branch นั้นจะทำการ merge แก้ conflict ของไฟล์ และตรวจสอบผลลัพธ์
หมายเหตุ:

หาก agent ของ default branch ไม่ว่าง การ merge จะไม่ถูกเข้าคิว รอให้การทำงานปัจจุบันของมันจบก่อน แล้วลองอีกครั้ง หากแชตของ default branch ยังไม่เคยถูกเปิด ให้เปิดมันหนึ่งครั้งก่อน แล้วลอง merge ใหม่

หลัง merge สำเร็จ การ Stop Tracking feature branch เป็นการเก็บกวาดที่จะทำหรือไม่ก็ได้

Preview deployment และการเผยแพร่

feature branch สร้าง preview deployment ที่แชร์ได้ เพื่อให้ตรวจสอบนอก builder ของโปรเจกต์

  • preview ของ default branch ใช้ https://app-slug-preview.stardeck.site
  • preview ของ feature branch ใช้ https://app-slug-preview-branch-name.stardeck.site Stardeck ปรับชื่อ branch ให้ hostname ยังเป็นรูปแบบที่ DNS ใช้ได้
  • โปรเจกต์มี preview ของ feature branch ที่ใช้งานอยู่ได้สูงสุด 5 อัน preview ของ default branch ไม่นับรวมในขีดจำกัดนี้

การเผยแพร่ขึ้น production ยังคงทำได้เฉพาะจาก default branch หากต้องการส่งงานจาก feature branch ขึ้น production ให้ merge เข้า default branch ตรวจสอบผลลัพธ์ แล้วจึงเผยแพร่ ดู การเผยแพร่และ deployment

การดำเนินการที่ทำได้เฉพาะ default branch

การดำเนินการบางอย่างของโปรเจกต์ทำได้เฉพาะบน default branch:

  • อัปเดต
  • การ sync การประกาศ Module Module sync จาก default branch เท่านั้น คุณเปิดหรือปิด Module ได้ใน Settings → Modules

ทำงานเหล่านี้จาก default branch หลังจาก merge การเปลี่ยนแปลงที่เกี่ยวข้องแล้ว

การจัดการ branch

เปิดการตั้งค่า branch (ไอคอนเฟือง) ของ branch ที่ติดตามอยู่ เพื่อ:

  • View on GitHub: เปิด branch บน GitHub
  • Stop Tracking: นำออกจาก Stardeck preview deployment ที่ใช้งานอยู่และ hostname ของมันจะถูกล้างออก ส่วน GitHub branch ยังคงอยู่ครบ

เลิกติดตาม default branch ไม่ได้

Feature branch กับ conversation fork

Feature branchConversation fork
เปลี่ยนโค้ด?ได้ ใช้ project agent เต็มรูปแบบไม่ได้ อ่านอย่างเดียว สำหรับวางแผน/สำรวจ
การแยกจากกันโค้ด แชต และ sandbox แยกกันแยกเฉพาะแชต
เป้าหมายงานสร้างแบบขนานลองไอเดียโดยไม่แตะโค้ด

ต้องการที่ร่างแผนโดยไม่เปลี่ยนโค้ด? ใช้ conversation forking ต้องการ agent ขนานที่แก้และทดสอบได้? ใช้ feature branch