การติดตาม git-flow คุณควรจัดการกับโปรแกรมแก้ไขด่วนของรุ่นก่อนหน้าอย่างไร


103

หากคุณพยายามทำตามแบบจำลองการแยกส่วน git-flow ตามเอกสารที่นี่และด้วยเครื่องมือที่นี่คุณควรจัดการกับสถานการณ์นี้อย่างไร:

คุณได้สร้างรุ่น 1.0 และรุ่น 2.0 จากนั้นคุณต้องสร้างโปรแกรมแก้ไขด่วนสำหรับ 1.0 คุณสร้างสาขาโปรแกรมแก้ไขด่วนจากแท็ก 1.0 และดำเนินการแก้ไขที่นั่น แต่แล้วอะไรล่ะ?

โดยปกติคุณจะรวมเป็นหลักและวางแท็กรุ่น 1.1 ไว้ที่นั่น แต่คุณไม่สามารถผสาน 1.1 ถึงจุดหนึ่งหลังจาก 2.0 บนมาสเตอร์ได้

ฉันเดาว่าคุณสามารถวางแท็กรุ่นในสาขาโปรแกรมแก้ไขด่วนได้ แต่จะสร้างสาขาถาวรข้างต้นแบบที่จะมีแท็กรุ่น เป็นวิธีที่ถูกต้องหรือไม่?


เป็นไปได้ที่จะทำสำเนาGit-flow และ master ที่มี release-branch คู่ขนานหลายอัน [แม้ว่าคำถามอื่นจะใหม่กว่า แต่ก็มีคำตอบที่มีประโยชน์มากกว่าดังนั้นฉันจึงตั้งค่าสถานะคำถามนี้ว่าซ้ำกัน]
danio

คำตอบ:


76

ดูเหมือนว่าจะมีแนวคิดของสาขา "สนับสนุน" ในการไหลของคอมไพล์ ใช้เพื่อเพิ่มโปรแกรมแก้ไขด่วนลงในรุ่นก่อนหน้านี้

ชุดข้อความนี้มีข้อมูลเพิ่มเติมพร้อมตัวอย่างเหล่านี้:

git checkout 6.0
git checkout -b support/6.x
git checkout -b hotfix/6.0.1

... ทำการแก้ไขแล้ว:

git checkout support/6.x
git merge hotfix/6.0.1
git branch -d hotfix/6.0.1
git tag 6.0.1

หรือใช้git flowคำสั่ง

git flow support start 6.x 6.0
git flow hotfix start 6.0.1 support/6.x

... ทำการเปลี่ยนแปลงแล้ว:

git flow hotfix finish 6.0.1

? เก็บสาขาการสนับสนุนเหล่านี้ไว้หรือลบทิ้งหลังจากช่วงเวลาหนึ่ง
Evan Hu

@EvanHu ดีแน่นอนเก็บไว้ตราบเท่าที่คุณมีสาขาในการผลิตที่ไหนสักแห่ง หลังจากนั้นเป็นเรื่องของการบันทึกประวัติศาสตร์ คุณอาจต้องการทราบว่าโปรแกรมแก้ไขด่วนได้รับการแก้ไขอย่างไรหากควรเกิดขึ้นอีก
Klas Mellbourn

หนึ่งควรทำการคลายร้อนใช่ไหม? เราจะทำเช่นนั้นได้อย่างไร?
Ravindranath Akila

33

คำถามที่น่าสนใจ! โฟลว์ที่คุณเชื่อมโยงถือว่ามาสเตอร์สามารถติดตามการผลิตได้ จะใช้ได้เฉพาะเมื่อมีการเพิ่มเวอร์ชันการผลิตอย่างเคร่งครัด โดยทั่วไปแล้วจะเป็นจริงสำหรับเว็บไซต์ที่มีเวอร์ชันที่ใช้งานจริงเพียงเวอร์ชันเดียว

หากคุณต้องดูแลเวอร์ชันการผลิตหลายสาขาการติดตามการผลิตเพียงสาขาเดียวไม่เพียงพอ วิธีแก้ปัญหาไม่ใช่การใช้ต้นแบบในการติดตามการผลิต แทนการใช้สาขาชอบrelease1, release2ฯลฯ

ในวิธีนี้คุณอาจไม่จำเป็นต้องมีสาขาโปรแกรมแก้ไขด่วน คุณสามารถแก้ไขปัญหาในrelease1สาขาได้ เมื่อการแก้ไขดีเพียงพอให้สร้างrelease1.1แท็กบนrelease1สาขา


คุณสามารถเปลี่ยน git-flow เพื่อตั้งค่าแท็ก release บน release branch นั่นเป็นการเปลี่ยนแปลงที่สำคัญพอสมควร มันจะทำลายสคริปต์ปัจจุบัน นอกจากนี้สิ่งที่เชี่ยวชาญจะมี?
Klas Mellbourn

3
git-flowการขับรถไม่เหมาะถ้าคุณได้ให้การสนับสนุนการผลิตรุ่นหลาย ในเวิร์กโฟลว์ที่เสนอในคำตอบนี้จะไม่มีการใช้มาสเตอร์เลย คุณสามารถตั้งชื่อหัวหน้าสาขาการพัฒนาได้ แต่ก็เป็นเพียงชื่อเท่านั้น
Andomar

GitFlow รองรับการติดตามเวอร์ชันการผลิตมากกว่าหนึ่งเวอร์ชัน: gitversion.readthedocs.io/en/latest/git-branching-strategies/…
Andre L

7

git-flow ถือว่าคุณสนับสนุนเพียงหนึ่งบรรทัดเผยแพร่ในแต่ละครั้งติดตามได้อย่างสะดวกโดยผู้เชี่ยวชาญ หากคุณกำลังบำรุงรักษามากกว่า 1 รายการคุณจะต้องแก้ไขกระบวนการ git-flow เพื่อให้มีตัวติดตามหลาย ๆ รุ่นแยกกันที่คุณรองรับ (master-1, master-2) คุณสามารถใช้ master เพื่อติดตามสายการเผยแพร่ล่าสุดได้ต่อไปนอกเหนือจากหรือแทนตัวติดตามเฉพาะสำหรับสายการเผยแพร่ล่าสุด (master แทน master-2)

น่าเสียดายที่เครื่องมือ git-flow ที่คุณอาจใช้อยู่อาจต้องได้รับการแก้ไข แต่หวังว่าคุณจะคุ้นเคยกับกระบวนการ git-flow มากพอที่จะจัดการกับกรณีนี้โดยตรงด้วยคำสั่ง git


หากคุณปรับเปลี่ยนgit flowกระบวนการมันจะมีบางอย่างที่แตกต่างออกไป หากโมเดลบางส่วนควรได้รับการแก้ไข (ไม่ใช่แค่ขยาย) แสดงว่าประสบความสำเร็จตามที่ผู้เขียนระบุไว้ โปรดตรวจสอบคำตอบของฉันสำหรับหัวข้อที่เรากำลังพูดคุย
Victor Yarema

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.