ฝึกการควบคุมเวอร์ชันสำหรับเขียนซ้ำ


29

เราพัฒนาผลิตภัณฑ์ (ต้นแบบ) P_OLD ในภาษา X และตอนนี้เรากำลังเขียนมันใหม่ตั้งแต่ต้นเป็น P_NEW ในภาษา Y

เนื่องจาก P_NEW และ P_OLD เป็นผลิตภัณฑ์เดียวกัน:

P_NEW ควรเป็นเพียง brach ของ P_OLD เก่าหรือควรเป็นที่เก็บของมันเอง?

เป็นวิธีปกติในการจัดการการเปลี่ยนแปลงครั้งใหญ่ในมุมมองการควบคุมเวอร์ชันอะไร



@gnat ขอบคุณสำหรับลิงค์ มันเป็นเรื่องที่น่าสนใจ แต่ความแตกต่างหลักคือสำหรับเรามันเป็นผลิตภัณฑ์เดียวกันเพิ่งออกแบบใหม่ทั้งหมด โครงการเก่านั้นเป็นต้นแบบ (น่าเกลียด)
1v0

คำตอบ:


46

คุณเกือบจะต้องการพื้นที่เก็บข้อมูลใหม่

วัตถุประสงค์ของที่เก็บคือ:

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

หากคุณกำลังเขียนโครงการใหม่ทั้งหมดตั้งแต่ต้นแล้วไม่มีจุดที่จะเขียนใหม่ในที่เก็บเดียวกัน คุณจะไม่สามารถใช้แพทช์ที่เขียนด้วยภาษาเก่ากับการเขียนใหม่ของคุณ การสลับ repos จะไม่ทำให้ประวัติศาสตร์ใน repo เก่าหายไปและถ้าคุณสลับคุณจะไม่มีขั้นตอนแปลก ๆ ที่คุณมีสองภาษาที่เตะรอบใน repo ของคุณ

เหตุผลเดียวที่ฉันจะพิจารณาเก็บที่เก็บไว้เมื่อเปลี่ยนภาษาก็คือถ้าก) ภาษานั้นคล้ายกันมากจนสามารถคัดลอกโค้ดจากที่หนึ่งไปอีกที่หนึ่งได้โดยไม่ต้องทำการเปลี่ยนแปลงใด ๆ หรือ b) คุณมีโครงการที่ เนื้อหาส่วนใหญ่ของฟังก์ชั่นในการควบคุมเวอร์ชันเป็นสิ่งที่ต้องการเทมเพลตในภาษา templating ที่คุณเก็บไว้และภาษาของแกนกลางที่คุณกำลังเปลี่ยนแปลเป็น line-for เป็นภาษาอื่น (และแม้กระทั่งเมื่อคุณรู้ คุณจะต้องทำซ้ำแม่แบบในระหว่างการโยกย้าย)


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

16

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

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


5

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

อย่างไรก็ตามแม้ในกรณีนี้บางคนอาจโต้เถียงสำหรับการเริ่มต้น repo ใหม่ที่ดึงรหัสเก่าที่เกี่ยวข้องตามที่ต้องการ

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