ฉันถามตัวเองด้วยคำถามเดียวกันเมื่อเรานำ Subversion มาใช้ที่นี่นักพัฒนาประมาณ 20 คนกระจายกันทั่วโครงการ 4 - 6 โครงการ ฉันไม่พบแหล่งที่ดีที่มี '' คำตอบ '' นี่คือบางส่วนของวิธีที่คำตอบของเราพัฒนาขึ้นในช่วง 3 ปีที่ผ่านมา:
- กระทำบ่อยเท่าที่มีประโยชน์ กฎง่ายๆของเราจะกระทำเมื่อใดก็ตามที่คุณทำงานที่เพียงพอซึ่งจะเป็นปัญหาที่ต้องทำอีกครั้งหากการแก้ไขสูญหาย บางครั้งฉันส่งทุก ๆ 15 นาทีหรือบางครั้งอาจเป็นวัน (ใช่บางครั้งฉันใช้เวลาหนึ่งวันในการเขียนโค้ด 1 บรรทัด)
- เราใช้สาขาเป็นหนึ่งในคำตอบก่อนหน้านี้ของคุณแนะนำสำหรับเส้นทางการพัฒนาที่แตกต่างกัน ตอนนี้สำหรับหนึ่งในโปรแกรมของเราเรามีสาขาที่ใช้งานอยู่ 3 สาขา: 1 สำหรับการพัฒนาหลัก, 1 สำหรับความพยายามที่ยังไม่เสร็จในการขนานโปรแกรมและ 1 สำหรับความพยายามในการแก้ไขเพื่อใช้ XML อินพุตและไฟล์เอาต์พุต
- เราแทบจะไม่ใช้แท็กแม้ว่าเราคิดว่าเราควรจะใช้แท็กเหล่านี้เพื่อระบุรุ่นที่จะออกสู่การผลิต
คิดว่าการพัฒนาดำเนินไปตามเส้นทางเดียว ในบางช่วงเวลาหรือสถานะของการพัฒนาการตลาดตัดสินใจที่จะวางจำหน่ายผลิตภัณฑ์เวอร์ชันแรกดังนั้นคุณจึงควรติดธงทำเครื่องหมายในเส้นทางที่มีข้อความ '1' (หรือ '1.0' หรือมีคุณ) ในบางครั้งบางจุดประกายสว่างตัดสินใจที่จะขนานโปรแกรม แต่ตัดสินใจว่าจะใช้เวลาหลายสัปดาห์และคนต้องการที่จะไปลงเส้นทางหลักในระหว่างนี้ ดังนั้นคุณจึงสร้างทางแยกในเส้นทางและผู้คนต่างออกไปเดินตามส้อมที่แตกต่างกัน
ธงในถนนเรียกว่า 'แท็ก' และส้อมบนท้องถนนจะแบ่งออกเป็น 'สาขา' บางครั้งกิ่งก้านก็กลับมารวมกัน
- เราใส่เนื้อหาทั้งหมดที่จำเป็นในการสร้างไฟล์เรียกทำงาน (หรือระบบ) ลงในที่เก็บ; นั่นหมายความว่าอย่างน้อยซอร์สโค้ดและสร้างไฟล์ (หรือไฟล์โครงการสำหรับ Visual Studio) แต่เมื่อเรามีไอคอนและไฟล์กำหนดค่าและสิ่งอื่น ๆ ทั้งหมดนั่นจะเข้าสู่พื้นที่เก็บข้อมูล เอกสารบางเล่มพบว่าเป็นของ repo; แน่นอนว่าเอกสารใด ๆ เช่นไฟล์ช่วยเหลือที่อาจเป็นส่วนหนึ่งของโปรแกรมและเป็นสถานที่ที่มีประโยชน์ในการวางเอกสารสำหรับนักพัฒนา
นอกจากนี้เรายังวางโปรแกรมปฏิบัติการ Windows สำหรับการผลิตเพื่อการเผยแพร่ในที่เดียวเพื่อให้ผู้ที่กำลังมองหาซอฟต์แวร์ - ลินุกซ์รุ่นของเราไปที่เซิร์ฟเวอร์ดังนั้นจึงไม่จำเป็นต้องจัดเก็บ
- เราไม่ต้องการให้พื้นที่เก็บข้อมูลสามารถส่งเวอร์ชันล่าสุดที่สร้างและดำเนินการได้ตลอดเวลา บางโครงการทำงานในลักษณะนั้นบางอย่างไม่ การตัดสินใจขึ้นอยู่กับผู้จัดการโครงการและขึ้นอยู่กับปัจจัยหลายอย่าง แต่ฉันคิดว่ามันพังเมื่อทำการเปลี่ยนแปลงที่สำคัญในโปรแกรม