คุณรักษารหัสการพัฒนาและรหัสการผลิตอย่างไร [ปิด]


137

อะไรคือแนวทางปฏิบัติที่ดีที่สุดและกฎที่ควรปฏิบัติในขณะที่รักษาโค้ด เป็นแนวทางปฏิบัติที่ดีที่จะมีเฉพาะรหัสที่พร้อมใช้งานจริงในสาขาการพัฒนาหรือควรมีรหัสล่าสุดที่ยังไม่ทดสอบในสาขาการพัฒนา

พวกคุณรักษารหัสการพัฒนาและรหัสการผลิตของคุณอย่างไร?

แก้ไข - คำถามเสริม - ทีมพัฒนาของคุณปฏิบัติตาม "กระทำเร็วที่สุดเท่าที่จะเป็นไปได้และบ่อยครั้งแม้ว่าโค้ดจะมี - ข้อบกพร่องเล็กน้อยหรือไม่สมบูรณ์" โปรโตคอลหรือ "กระทำ - ONLY-perfect-code "โปรโตคอลในขณะที่ส่งรหัสไปยังสาขา DEVELOPMENT?


ฉันเคยตอบคำถามที่คล้ายกัน (หรือคำถามในช่องว่าง / ทิศทางเดียวกันนั้น) มาก่อนดังนั้นคุณอาจต้องการตรวจสอบคำถามนี้: มีกลยุทธ์ที่ดีอะไรบ้างในการอนุญาตให้แอปพลิเคชันที่ปรับใช้แล้วเป็นโปรแกรมแก้ไขด่วนได้
จนถึง

@revo: เดี๋ยวก่อน ... คำตอบปี 2008 ของฉันล้าสมัยหรือไม่? :) ฉันคิดว่ามันเป็นจริง เป็นเวลามากกว่า 10 ปีแล้ว: ฉันได้แก้ไขคำตอบของฉัน
VonC

คำตอบ:


115

อัปเดต 2019:

ทุกวันนี้คำถามจะเห็นได้จากบริบทโดยใช้ Git และ 10 ปีของการใช้เวิร์กโฟลว์การพัฒนาแบบกระจาย (ทำงานร่วมกันผ่าน GitHubเป็นหลัก) แสดงแนวทางปฏิบัติที่ดีที่สุดทั่วไป:

  • masterเป็นสาขาพร้อมที่จะนำไปใช้ในการผลิตในเวลาใด ๆ : masterรุ่นถัดไปกับชุดที่เลือกของสาขาคุณลักษณะรวมอยู่ใน
  • dev(หรือสาขาการรวมหรือ ' next') คือสาขาที่มีการทดสอบสาขาคุณลักษณะที่เลือกสำหรับรุ่นถัดไปร่วมกัน
  • maintenance(หรือhot-fix) branch เป็นสาขาสำหรับวิวัฒนาการของรุ่นปัจจุบัน / การแก้ไขข้อบกพร่องโดยมีการผสานกลับไปที่devและหรือmaster

ชนิดของเวิร์กโฟลว์ที่ (ที่คุณไม่ได้รวมdevไปmasterแต่ที่คุณผสานเฉพาะสาขาคุณลักษณะdevแล้วถ้าเลือกที่จะmasterในการสั่งซื้อเพื่อให้สามารถลดลงได้อย่างง่ายดายมีสาขาไม่พร้อมสำหรับการเปิดตัวถัดไป) จะดำเนินการใน Git repo ตัวเองด้วยgitworkflow (คำเดียวภาพประกอบที่นี่ )
ดูเพิ่มเติมได้ที่rocketraman/gitworkflow. ประวัติความเป็นมาของการทำเช่นนี้ VS Trunk-based พัฒนาเป็นข้อสังเกตในการแสดงความคิดเห็นและการอภิปรายของบทความนี้โดยอดัม Dymitruk

https://github.com/rocketraman/gitworkflow/raw/master/docs/images/topic Graduation.png

(ที่มา: Gitworkflow: ไพรเมอร์เชิงงาน )

หมายเหตุ: ในเวิร์กโฟลว์แบบกระจายนั้นคุณสามารถคอมมิตเมื่อใดก็ได้ที่คุณต้องการและส่งไปยังสาขาส่วนบุคคล WIP (งานระหว่างดำเนินการ) โดยไม่มีปัญหา: คุณจะสามารถจัดระเบียบ (git rebase) คอมมิตของคุณใหม่ก่อนที่จะทำให้เป็นส่วนหนึ่งของสาขาฟีเจอร์


คำตอบเดิม (ต.ค. 2551 10+ ปีที่แล้ว)

ทุกอย่างขึ้นอยู่กับลักษณะตามลำดับของการจัดการรุ่นของคุณ

อย่างแรกทุกอย่างในหีบของคุณมีไว้สำหรับรุ่นต่อไปหรือไม่? คุณอาจพบว่าฟังก์ชันบางอย่างที่พัฒนาในปัจจุบัน ได้แก่ :

  • ซับซ้อนเกินไปและยังต้องได้รับการขัดเกลา
  • ไม่พร้อมในเวลา
  • น่าสนใจ แต่ไม่ใช่สำหรับรุ่นถัดไปนี้

ในกรณีนี้ trunk ควรมีความพยายามในการพัฒนาในปัจจุบัน แต่สาขาการเผยแพร่ที่กำหนดไว้ก่อนหน้ารุ่นถัดไปสามารถทำหน้าที่เป็นสาขาการรวมซึ่งจะรวมเฉพาะรหัสที่เหมาะสม (ตรวจสอบความถูกต้องสำหรับรุ่นถัดไป) จากนั้นแก้ไขในช่วง homologation และในที่สุดก็ถูกแช่แข็งเมื่อเข้าสู่กระบวนการผลิต

เมื่อพูดถึงรหัสการผลิตคุณต้องจัดการสาขาแพตช์ของคุณด้วยในขณะที่โปรดทราบว่า:

  • แพตช์ชุดแรกอาจเริ่มก่อนที่จะเผยแพร่ครั้งแรกในการผลิต (หมายความว่าคุณรู้ว่าคุณจะเข้าสู่การผลิตโดยมีข้อบกพร่องบางอย่างที่คุณไม่สามารถแก้ไขได้ทันเวลา แต่คุณสามารถเริ่มต้นการทำงานสำหรับจุดบกพร่องเหล่านั้นในสาขาที่แยกต่างหากได้)
  • ส่วนแพทช์อื่น ๆ จะมีความหรูหราตั้งแต่ฉลากการผลิตที่กำหนดไว้อย่างดี

เมื่อพูดถึงสาขา dev คุณสามารถมีลำต้นเดียวได้เว้นแต่คุณจะมีความพยายามในการพัฒนาอื่น ๆ ที่คุณต้องทำควบคู่กันเช่น:

  • การปรับโครงสร้างขนาดใหญ่
  • การทดสอบไลบรารีทางเทคนิคใหม่ซึ่งอาจเปลี่ยนวิธีการเรียกสิ่งต่างๆในคลาสอื่น ๆ
  • จุดเริ่มต้นของรอบการเปิดตัวใหม่ซึ่งจำเป็นต้องรวมการเปลี่ยนแปลงทางสถาปัตยกรรมที่สำคัญเข้าด้วยกัน

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


เพื่อตอบความคิดเห็นของ Ville M. :

  • โปรดทราบว่าสาขา dev ไม่ได้หมายถึง 'หนึ่งสาขาต่อผู้พัฒนา' (ซึ่งจะทำให้เกิด 'ผสานความบ้าคลั่ง' โดยที่นักพัฒนาแต่ละคนจะต้องผสานงานของผู้อื่นเพื่อดู / รับงานของตน) แต่สาขาการพัฒนาหนึ่งสาขาต่อการพัฒนา ความพยายาม
  • เมื่อความพยายามเหล่านั้นจำเป็นต้องรวมกลับเข้าไปใน trunk (หรือ "main" หรือ release branch อื่น ๆ ที่คุณกำหนด) นี่คือผลงานของผู้พัฒนาไม่ใช่ - ขอย้ำไม่ใช่ - SC Manager (ที่ไม่รู้วิธีแก้ การผสานที่ขัดแย้งกัน) หัวหน้าโครงการอาจดูแลการผสานหมายความว่าต้องเริ่ม / เสร็จสิ้นตรงเวลา
  • ไม่ว่าคุณจะเลือกใครสำหรับการผสานสิ่งที่สำคัญที่สุดคือ:
    • เพื่อให้มีการทดสอบหน่วยและ / หรือสภาพแวดล้อมการประกอบซึ่งคุณสามารถปรับใช้ / ทดสอบผลลัพธ์ของการผสาน
    • เพื่อกำหนดแท็กก่อนจุดเริ่มต้นของการผสานเพื่อให้สามารถกลับไปยังสถานะก่อนหน้าได้หากการผสานดังกล่าวพิสูจน์ตัวเองว่าซับซ้อนเกินไปหรือค่อนข้างนานในการแก้ไข

1
@Adam ขอบคุณสำหรับการแก้ไขและขออภัยที่ไม่ได้ตั้งค่าการระบุแหล่งที่มาที่เหมาะสมเร็วกว่านี้
VonC

ฮา! ไร้กังวล แต่อย่างใด คุณได้ทำสิ่งต่างๆมากมายให้กับชุมชนที่นี่คุณแทบจะไม่โทษอะไรเลย ฉันดีใจที่มีคนอย่างคุณทำงานมากมายเพื่อประโยชน์ของทุกคนทั่วโลก!
Adam Dymitruk

คุณมั่นใจได้อย่างไรว่าmaster(การผลิต) และdev(การรวม) ไม่แตกต่างกัน? โดยเฉพาะกับการแก้ร้อน? คุณรวมmasterกลับเข้าไปเป็นประจำdevเช่นหลังจากปล่อยหรือไม่?
Bergi

@Bergi พร้อม gitworflow dev เป็นสาขาชั่วคราวลบและสร้างขึ้นใหม่ที่ด้านบนของแต่ละรุ่นใหม่ ไม่มีความแตกต่างที่นั่น
VonC

43

เราใช้:

  • สาขาพัฒนาการโดยเฉพาะ

จนกว่าโปรเจ็กต์ใกล้จะเสร็จสมบูรณ์หรือเรากำลังสร้างเวอร์ชันหลัก (เช่นการสาธิตผลิตภัณฑ์เวอร์ชันการนำเสนอ) จากนั้นเรา (ประจำ) แยกสาขาการพัฒนาปัจจุบันของเราออกเป็น:

  • สาขาการเปิดตัว

ไม่มีฟีเจอร์ใหม่เข้าสู่สาขาการเปิดตัว เฉพาะจุดบกพร่องที่สำคัญเท่านั้นที่ได้รับการแก้ไขในสาขาการเผยแพร่และรหัสสำหรับแก้ไขข้อบกพร่องเหล่านี้จะรวมเข้ากับสาขาการพัฒนาอีกครั้ง

กระบวนการสองส่วนที่มีการพัฒนาและสาขา (การเปิดตัว) ที่มั่นคงทำให้ชีวิตง่ายขึ้นมากสำหรับเราและฉันไม่เชื่อว่าเราจะปรับปรุงส่วนใดส่วนหนึ่งได้โดยการแนะนำสาขาเพิ่มเติม แต่ละสาขายังมีกระบวนการสร้างของตัวเองซึ่งหมายความว่าทุกๆสองสามนาทีจะมีการสร้างกระบวนการสร้างใหม่ดังนั้นหลังจากการเช็คอินโค้ดเราจะมีไฟล์ปฏิบัติการใหม่สำหรับเวอร์ชันบิวด์และสาขาทั้งหมดภายในประมาณครึ่งชั่วโมง

ในบางครั้งเรายังมีสาขาสำหรับนักพัฒนารายเดียวที่ทำงานเกี่ยวกับเทคโนโลยีใหม่และยังไม่ได้รับการพิสูจน์หรือสร้างหลักฐานแนวคิด แต่โดยทั่วไปแล้วจะทำได้ก็ต่อเมื่อการเปลี่ยนแปลงมีผลต่อหลายส่วนของ codebase สิ่งนี้เกิดขึ้นโดยเฉลี่ยทุก ๆ 3-4 เดือนและโดยปกติสาขาดังกล่าวจะรวมเข้าใหม่ (หรือทิ้ง) ภายในหนึ่งหรือสองเดือน

โดยทั่วไปฉันไม่ชอบความคิดของนักพัฒนาทุกคนที่ทำงานในสาขาของตัวเองเพราะคุณ "ข้ามไปและย้ายไปที่นรกการรวม" โดยตรง ฉันขอแนะนำให้ต่อต้านมัน หากคุณมีโค้ดเบสทั่วไปคุณควรทำงานร่วมกันทั้งหมด สิ่งนี้ทำให้นักพัฒนามีความระมัดระวังมากขึ้นเกี่ยวกับการเช็คอินของตนและจากประสบการณ์ของ coder ทุกคนรู้ว่าการเปลี่ยนแปลงใดที่อาจทำลายโครงสร้างและการทดสอบจึงเข้มงวดมากขึ้นในกรณีเช่นนี้

คำถามในการเช็คอินก่อนกำหนด:

หากคุณต้องการเช็คอินPERFECT CODEเท่านั้นจริงๆแล้วไม่ควรเช็คอินอะไรเลยไม่มีรหัสใดที่สมบูรณ์แบบและเพื่อให้ QA ตรวจสอบและทดสอบรหัสนั้นจำเป็นต้องอยู่ในสาขาการพัฒนาจึงจะสามารถสร้างไฟล์ปฏิบัติการใหม่ได้

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

ทุก ๆ ครั้งการตรวจสอบโค้ดและข้อมูลรวมที่หลีกเลี่ยงไม่ได้จะทำให้โปรแกรมไม่สามารถใช้งานได้จนกว่าจะสร้างรหัสใหม่ อย่างน้อยที่สุดที่เราทำคือเพิ่มคำว่า "WAIT FOR BUILD" ในความคิดเห็นในการเช็คอินและ / หรือส่งอีเมล


1
ฉันโหวตมันขึ้น สิ่งนี้คล้ายกับสิ่งที่เราทำ แต่เรากำลังทำการเปลี่ยนแปลงทั้งหมดในการพัฒนาแล้วพยายามรวมการแก้ไขข้อบกพร่องเหล่านั้นลงในสาขาการเผยแพร่ อย่างไรก็ตามฉันคิดว่าถ้าเราเปลี่ยนเป็นการแก้ไขข้อบกพร่องทั้งหมดในรุ่นและรวมเข้ากับการพัฒนานั่นจะแก้ไขได้
TheCodeMonk

2
คุณบอกเป็นนัยว่า QA ทดสอบสาขาการพัฒนาจะดีกว่าไหมถ้าพวกเขาตรวจสอบสาขาการเผยแพร่ ด้วยวิธีนี้ฉันจะสามารถเริ่มทำงานกับฟีเจอร์บ้าใหม่ของฉันที่จะไม่รวมอยู่ในรุ่นถัดไป (และอาจทำให้บางอย่างพัง) ในขณะนั้น QA จะทดสอบโค้ดที่มีอยู่โดยที่ฟีเจอร์ใหม่ของฉันไม่รบกวน?
BornToCode

15

เพื่อสิ่งที่คุ้มค่านี่คือวิธีที่เราทำ

การพัฒนาส่วนใหญ่ดำเนินการในลำต้นแม้ว่าลักษณะการทดลองหรือสิ่งที่อาจทำลายระบบอย่างมีนัยสำคัญมักจะได้รับสาขาของตัวเอง สิ่งนี้ใช้งานได้ดีเพราะหมายความว่านักพัฒนาทุกคนจะมีเวอร์ชันล่าสุดของทุกอย่างในสำเนาการทำงานของตนเสมอ

หมายความว่าสิ่งสำคัญคือต้องรักษาลำตัวให้ทำงานอย่างคลุมเครือเนื่องจากเป็นไปได้อย่างสมบูรณ์ที่จะทำลายมันอย่างสมบูรณ์ ในทางปฏิบัตินั้นไม่ได้เกิดขึ้นบ่อยนักและไม่ค่อยเป็นปัญหาสำคัญ

สำหรับรุ่นที่ใช้งานจริงเราแตกกิ่งก้านสาขาหยุดเพิ่มคุณสมบัติใหม่และดำเนินการแก้ไขข้อบกพร่องและทดสอบสาขา (รวมกลับเข้าสู่ลำต้นเป็นประจำ) จนกว่าจะพร้อมสำหรับการเผยแพร่ เมื่อถึงจุดนั้นเราจะทำการผสานขั้นสุดท้ายเป็น trunk เพื่อให้แน่ใจว่าทุกอย่างอยู่ในนั้นแล้วจึงปล่อย

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

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


ทำงานได้ดีเพียงพอและง่ายพอสำหรับนักพัฒนาโค้ดเท่านั้นที่ไม่ใช่ vcs-druids
Matthieu

12

ทำไมยังไม่มีใครพูดถึงเรื่องนี้? ที่ประสบความสำเร็จ Git รูปแบบแตกแขนง

มันเป็นโมเดลการแตกแขนงที่ดีที่สุดสำหรับฉัน!

หากโปรเจ็กต์ของคุณมีขนาดเล็กอย่าใช้ทุกสาขาตลอดเวลา (บางทีคุณอาจข้ามสาขาฟีเจอร์สำหรับฟีเจอร์ขนาดเล็ก) แต่อย่างอื่นมันเป็นวิธีที่จะทำ!

รูปแบบการแตกแขนง


4
ใช่ยกเว้นว่ามักจะซับซ้อน / สมบูรณ์เกินไปตามที่scottchacon.com/2011/08/31/github-flow.htmlแสดงไว้
VonC

ฉันเห็นด้วย. ทำความเข้าใจเกี่ยวกับรูปแบบการแยกสายคอมไพล์ (ที่แก้ปัญหาได้มากมาย) และทำให้ง่ายขึ้นเพื่อให้ตรงกับความต้องการ และการไหลของ GitHub ต้องการการปรับใช้อย่างรวดเร็ว แต่ก็เป็นไปไม่ได้เสมอไป ... เป็นโมเดลการแตกแขนงที่เราใช้ในโครงการของฉันไม่มากก็น้อย (เพื่อให้สิ่งต่างๆง่ายขึ้น) แต่เราต้องเผชิญกับกรณีที่เราชอบที่จะใช้โมเดล git-flow: (และนั่นทำให้เรารู้สึกแย่มาก :(
Philippe

1
วิธีที่ฉันเห็นโดยทั่วไปแล้วสิ่งนี้จะคัดลอกทุกสิ่งที่ VonC กล่าวไว้ประมาณ 1 ปีก่อน (ตามคำตอบของเขา) แต่ในวิธีที่ละเอียดกว่าและมีภาพที่สวยงาม!
cregox

6

รหัสการพัฒนาบนสาขารหัสสดที่ติดแท็กบน Trunk

ไม่จำเป็นต้องมีกฎ "คอมมิตเฉพาะโค้ดที่สมบูรณ์แบบ" สิ่งใดก็ตามที่นักพัฒนาพลาดควรได้รับจากสี่ตำแหน่ง ได้แก่ การตรวจสอบโค้ดการทดสอบสาขาการทดสอบการถดถอยการทดสอบ QA ขั้นสุดท้าย

นี่คือคำอธิบายโดยละเอียดเพิ่มเติมทีละขั้นตอน:

  1. ทำการพัฒนาทั้งหมดในสาขาโดยมุ่งมั่นอย่างสม่ำเสมอในขณะที่คุณไป
  2. การตรวจสอบโค้ดอิสระของการเปลี่ยนแปลงเมื่อการพัฒนาทั้งหมดเสร็จสมบูรณ์
  3. จากนั้นส่งสาขาไปที่การทดสอบ
  4. เมื่อการทดสอบสาขาเสร็จสมบูรณ์แล้วให้รวมโค้ดเข้ากับสาขา Release Candidate
  5. สาขา Release Candidate คือการทดสอบการถดถอยหลังจากการรวมแต่ละครั้ง
  6. การทดสอบ QA และ UA ขั้นสุดท้ายดำเนินการบน RC หลังจากที่สาขา dev ทั้งหมดรวมเข้าด้วยกัน
  7. เมื่อผ่านการตรวจสอบคุณภาพและ UAT แล้วให้รวมสาขาการเผยแพร่เป็นสาขา MAIN / TRUNK
  8. สุดท้ายแท็ก Trunk ณ จุดนั้นและปรับใช้แท็กนั้นกับ Live


3

เราแก้ปัญหานี้โดยแยกรหัสการผลิต (ลำตัวหลัก) ออกจากรหัสการพัฒนาโดยสิ้นเชิง (โดยที่นักพัฒนาทุกคนมีสาขาของตัวเอง)

ไม่อนุญาตให้ใช้รหัสในรหัสการผลิตก่อนที่จะได้รับการตรวจสอบอย่างละเอียด (โดย QA และผู้ตรวจสอบโค้ด)

วิธีนี้จะไม่มีความสับสนเกี่ยวกับรหัสที่ใช้งานได้มันเป็นสาขาหลักเสมอ


2

โอ้ใช่ - อีกอย่างหนึ่ง - เราเก็บโค้ดที่ไม่ใช่การผลิตไว้ (นั่นคือรหัสที่จะไม่ถูกนำออกใช้ - เช่นสคริปต์เครื่องมือการทดสอบยูทิลิตี้) ใน CV HEAD โดยปกติจะต้องมีการทำเครื่องหมายอย่างชัดเจนเพื่อให้ไม่มีใคร "เผลอ" เผยแพร่


2
บางทีนี่อาจจะดีกว่าเมื่อแก้ไขคำตอบก่อนหน้านี้
Richard Harrison

6
เขากล่าวว่า CVS :-)
จนถึง

2

เราพัฒนาบนลำต้นโดยจะแยกแขนงทุกๆสองสัปดาห์และนำไปผลิต เฉพาะจุดบกพร่องที่สำคัญเท่านั้นที่ได้รับการแก้ไขในสาขาส่วนที่เหลือสามารถรอได้อีกสองสัปดาห์

กฎข้อเดียวคือการกระทำไม่ควรทำลายสิ่งใด ในการจัดการ wip-code และรหัสที่ยังไม่ทดสอบเราเพียงแค่เพิ่มความเหมาะสมหาก statments เพื่อให้ง่ายต่อการสลับเปิดและปิด

โดยทั่วไปแล้วมันเป็นไปได้ที่จะแตกกิ่งก้านเมื่อใดก็ได้และนำไปผลิต


0

ฉันใช้ git และฉันมี 2 สาขา: masterและmaint

  • ต้นแบบ - รหัสการพัฒนา
  • maint - รหัสการผลิต

เมื่อฉันปล่อยรหัสไปยังเวอร์ชันที่ใช้งานจริงฉันแท็กและฉันรวมmasterกับmaint branch ฉันมักจะปรับใช้จากmaintสาขา แพตช์จากสาขาการพัฒนาฉันเลือกพวกมันไปยังสาขาหลักและปรับใช้แพตช์


0

เรามีสาขา "รุ่น" ซึ่งมีสิ่งที่กำลังผลิตอยู่หรือจะนำไปใช้งานในไม่ช้า (ผ่าน QA ส่วนใหญ่แล้ว)

แต่ละโครงการหรือในบางกรณีหน่วยงานอื่น ๆ จะมีสาขาของตัวเองซึ่งแตกแขนงมาจากการเปิดตัว

การเปลี่ยนแปลงจะได้รับความมุ่งมั่นโดยนักพัฒนาในโครงการในสาขาของโครงการ การเผยแพร่จะรวมกลับเข้าสู่สาขาการพัฒนาเป็นระยะ ๆ

เมื่อแพคเกจงานในสาขาเป็น QA'd ทั้งหมด (การทดสอบหน่วยการทดสอบระบบการตรวจสอบโค้ดการตรวจสอบคุณภาพ ฯลฯ ) สาขาจะรวมเข้ากับสาขาการเผยแพร่ โครงสร้างใหม่สร้างขึ้นจากสาขาการเผยแพร่และการตรวจสอบขั้นสุดท้ายจะเกิดขึ้นกับเวอร์ชันนั้น

โดยทั่วไปกระบวนการนี้ใช้ได้จนกว่าจะพบปัญหาหลังจากการผสานเสร็จสิ้น หาก WP "ค้าง" หลังจากที่รวมเข้าด้วยกันมันจะเก็บทุกอย่างไว้หลังจากนั้นจนกว่าจะได้รับการแก้ไข (เราไม่สามารถปล่อยอีกครั้งได้จนกว่าจะปล่อยที่ติดอยู่)


นอกจากนี้ยังค่อนข้างยืดหยุ่น - การเปลี่ยนแปลงเล็กน้อยอาจเกิดขึ้นได้โดยตรงในสาขาการเผยแพร่หากมีการเผยแพร่ในช่วงเวลาสั้น ๆ (เช่น 1-2 วันหรือมากกว่านั้น)

หากมีการเปลี่ยนแปลงในการผลิตโดยตรงด้วยเหตุผลบางประการ (ปัญหาสำคัญที่ส่งผลกระทบต่อลูกค้าในการผลิตซึ่งจำเป็นต้องมีการเปลี่ยนแปลงรหัสทันทีเพื่อแก้ไข) การเปลี่ยนแปลงเหล่านั้นจะถูกนำกลับไปที่ BRANCH_RELEASE แทบจะไม่เคยเกิดขึ้นเลย


0

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

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