จัดการ Codebase ยุคเก่าให้น่าใช้ด้วย Stacked Sessions และ Pull Requests ใน GitHub Copilot

จัดการ Codebase ยุคเก่าให้น่าใช้ด้วย Stacked Sessions และ Pull Requests ใน GitHub Copilot

ลองพิจารณาสกรีนช็อตนี้จาก แอป GitHub Copilot สักครู่ครับ แม้จะเป็นเพียงภาพขนาดเล็กที่เต็มไปด้วยไอคอน แต่มันเล่าเรื่องราวความเปลี่ยนแปลงในการทำงานที่น่าตื่นเต้นอย่างยิ่ง

Screenshot of stacked sessions. They start with a folder 'Cass-kit', with 'Frontend modernization' below, and 'modernize frontend styles', 'Style port onto dev', and 'Remove react-bootstrap' all below.

ภาพที่เห็นคือชุดของ Stacked Sessions ซึ่งเป็นการรวมกลุ่มงานใน Repository เดียวกัน โดยแต่ละ Session จะถูกสร้างขึ้นเพื่อต่อยอดจากงานก่อนหน้านี้อย่างเป็นลำดับขั้นตอน

เหตุผลที่สิ่งนี้ดูมหัศจรรย์มาก เป็นเพราะผมมีโปรเจกต์ส่วนตัวที่เก่ามากตั้งแต่ปี 2014 มันคือแดชบอร์ดที่รวบรวมทั้งปฏิทิน อุปกรณ์สมาร์ทโฮม และการจัดการงานเข้าด้วยกัน แม้จะมีการอัปเดตบ้างตามกาลเวลา แต่การดูแลรักษาก็เริ่มยากขึ้นเรื่อยๆ เนื่องจาก Dependencies ในโปรเจกต์เก่าจนน่าตกใจ ทั้ง React 15, Less สำหรับ CSS และ React-Bootstrap เวอร์ชันโบราณ

การพยายามรื้อระบบเหล่านี้ก่อนยุค AI คงต้องใช้เวลาหลายสัปดาห์จนผมเคยยอมแพ้ไปแล้ว เพราะมันใหญ่เกินกว่าจะรื้อไหวเมื่อเทียบกับผลลัพธ์ที่จะได้ แต่ในปัจจุบันเรามี AI แล้ว ผมจึงเริ่มใช้แอป GitHub Copilot เพื่อลงมือจัดการโปรเจกต์นี้อีกครั้ง

ขั้นตอนแรก: พยายามจัดการทุกอย่างในครั้งเดียว (One-shot)

แม้ผมจะพยายามลองดู แต่คำตอบคือมันไม่ได้ผลครับ ผมเริ่มจากการส่ง Prompt ใน Plan mode โดยใช้โมเดลอย่าง Claude Opus 4.8 และให้ GPT-5.5 ช่วยรีวิวเพื่อวางแผนปรับปรุง Frontend ใหม่ทั้งหมด ทั้งการเปลี่ยนไปใช้ Tailwind, ตัด Less ออก และปรับปรุงเรื่อง Accessibility แต่เมื่อกดรันจริง ผลลัพธ์กลับไม่เป็นตามคาด ซึ่งนั่นเป็นความผิดพลาดของผมเอง

ขั้นตอนที่สอง: เรียนรู้จากความผิดพลาดในอดีต

ผมเพิ่งนึกได้ว่าเคยลองปรับปรุงโปรเจกต์นี้ใน Branch ชื่อ dev ไว้ก่อนหน้านี้ ทำให้เกิดปัญหาความขัดแย้งของโค้ดเมื่อพยายามทำ Session ใหม่จาก Branch main การต้องมานั่งไล่แก้ปัญหาเหล่านี้ในยุคก่อน AI คงทำให้ผมหงุดหงิดจนแทบบ้า

แต่ด้วย GitHub Copilot ผมสามารถเปลี่ยนแผนได้ทันทีผ่านคำขอสั้นๆ AI ช่วยปิด Pull Request เดิมที่ล้มเหลว แล้วพอร์ตการตัดสินใจเรื่องสไตล์ทั้งหมดไปยัง Session ใหม่ที่แยกออกมาจาก Branch dev ให้โดยอัตโนมัติ ทำให้งานที่ทำไปไม่สูญเปล่า

Screenshot of a conversation with Copilot. It starts with Copilot asking, 'Your decision when you're back (left to you — too consequential to guess): 1. Merge into main as-is, reconcile the master/dev fork separately; 2. re-apply just the styling + a11y improvements as a fresh branch off dev; 3. close this PR if dev's direction supersedes it. If you want option 2, I can start that port onto dev's Less + TypeScript structure.' Cassidy responds, 'Let's close this and start a new session as a fresh

ขั้นตอนที่สาม: แก้ไขที่ต้นตอของปัญหา

หลังจากทดสอบผมพบคำเตือนเก่าๆ เกี่ยวกับ findDOMNode ซึ่งระบุว่าโครงสร้างเดิมใน React-Bootstrap นั้นเก่าเกินไป ผมจึงตัดสินใจใช้ Plan mode อีกครั้งเพื่อปรึกษา AI ว่าควรจะอัปเกรดหรือรื้อทิ้งดี ซึ่งแผนที่ได้แนะนำให้เปลี่ยน Library ใหม่ทั้งหมดเพื่อประสิทธิภาพในระยะยาว

ขั้นตอนที่สี่: พลังของการวาง Stack ทับซ้อน Session เพื่อไม่ให้งานใหญ่เกินไปจนควบคุมไม่ได้ (Scope Creep) ผมจึงเลือกแบ่งงานออกเป็นส่วนๆ แทนที่จะสร้าง PR ขนาดหมื่นบรรทัด ผมสั่งให้ Copilot แยกงานใหม่นี้ออกเป็นอีกหนึ่ง Session ที่ต่อยอดจากงานเดิม

ขั้นตอนนี้เองที่ทำให้ผมประทับใจมาก เพราะแอป GitHub Copilot สามารถสร้าง Pull Request สำหรับงานปัจจุบัน และสร้าง Stacked Session สำหรับการรื้อ React-Bootstrap ออก โดยใช้บริบทเดิมมารันต่อทันที พร้อมสร้าง Stacked Pull Request ตามหลังงานแรกมาติดๆ

คำว่า "Stack" ในที่นี้หมายถึงโซ่ตรวนของ Pull Request ที่ต่อกันเป็นทอดๆ โดยแต่ละส่วนจะเจาะจงไปยัง Branch ก่อนหน้า จนสุดท้ายทวนกระแสกลับไปรวมที่ Main Branch ซึ่งช่วยให้การตรวจสอบและจัดการโค้ดทำได้ง่ายและเป็นระบบที่สุด

ขั้นตอนที่ห้า: อนาคตของการพัฒนาซอฟต์แวร์

หากเรากลับมาดูสกรีนช็็อตแรกอีกครั้ง จะเห็นลำดับตั้งแต่การดึง Repo เข้ามา, ชื่อ Session เริ่มต้น, งานที่ถูกยกเลิกไป (ไอคอนสีแดง), และงานที่สำเร็จบน Branch dev ที่มี Session อื่นซ้อนอยู่ด้านล่างเพื่อทำงานต่อกัน

Screenshot of stacked sessions. They start with a folder 'Cass-kit', with 'Frontend modernization' below, and 'modernize frontend styles', 'Style port onto dev', and 'Remove react-bootstrap' all below.

การพัฒนาซอฟต์แวร์อาจไม่ใช่เรื่องราบรื่นเสมอไป แต่เครื่องมือเหล่านี้ช่วยให้มันง่ายขึ้นอย่างไม่น่าเชื่อ หากคุณกำลังหาวิธีปรับปรุง Codebase ของตัวเองให้ทันสมัย ลองใช้ฟีเจอร์นี้ใน GitHub Copilot App ดูครับ

Source: GitHub Blog
ดูแลงานแปลและเรียบเรียงโดย SirilukP

ความคิดเห็น (0)

เข้าสู่ระบบเพื่อร่วมแสดงความเห็น

สมัครสมาชิก

มาเป็นคนแรกที่แสดงความเห็นกันเลยโบร