การเก็บรักษาการควบคุมเวอร์ชันกระทำการประวัติเทียบกับการปรับโครงสร้างและเอกสาร


11

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

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

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

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

รหัสที่มากระทำประวัติศาสตร์มีบทบาทใด ๆ ในการสื่อสารระหว่างสมาชิกในทีมหรือไม่? จะเกิดอะไรขึ้นถ้าเรายกเลิกประวัติการกระทำ แต่แทนที่จะพึ่งพา "ซอร์สโค้ด" + "รหัสการทดสอบหน่วย" เพื่อการสื่อสาร

การมีอยู่ของประวัติการกระทำได้สร้างความพึงพอใจให้กับเอกสารข้อมูลระยะยาวเกี่ยวกับโครงการเช่นการเปลี่ยนแปลงการออกแบบ / ข้อกำหนดที่สำคัญและกระแสของความคิดที่ผลักดันการเปลี่ยนแปลงเหล่านั้นหรือไม่?


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

1
These changes often lead to the loss of the original commit history of a few files.ลองดูที่ "ตำหนิคอมไพล์" - ไม่มีอะไรหลงทาง บางครั้งอาจหาได้ยากขึ้นเล็กน้อย แต่ก็มีอยู่เสมอ
maaartinus

1
ในการปรับเปลี่ยนครั้งใหญ่มันคุ้มค่าที่จะสละเวลาคิดและวางแผนปรับปรุงการควบคุมแหล่งที่มา บ่อยครั้งที่ความพยายามพิเศษเพียงเล็กน้อยหรือน้อยสามารถเก็บรักษาข้อมูลได้มากขึ้น เช่นถ้าคุณแบ่งไฟล์เป็น 3 ชิ้นอันดับแรกให้คงการคัดลอกต้นฉบับไว้ที่การเปลี่ยนทั้ง 3 ครั้ง จากนั้นมุ่งมั่นที่จะแก้ไขทั้งสาม ...
UuDdLrLrSs

คำตอบ:


5

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

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

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

สมมติว่าคุณอยู่ในเวอร์ชัน 7.8 ของโปรแกรมของคุณ แต่คุณสนับสนุนในเวอร์ชั่น 12 เวอร์ชันที่ต่างกันเช่น 1.6, 2.2, 2.8 และอื่น ๆ แต่ละรายการจะไม่ได้รับการอัปเกรดเป็นเวอร์ชั่นล่าสุดด้วยเหตุผลหลายประการดังนั้นคุณจึงสนับสนุนทั้งหมดด้วยการแก้ไขข้อบกพร่อง ลูกค้าพบข้อบกพร่องในการเปิดตัว 7.8 ล่าสุดของคุณ คุณแก้ไขได้ใน 7.8 คุณรู้ได้อย่างไรว่าต้องมีการแก้ไขรุ่นอื่นจำนวนเท่าใด หากไม่มีประวัติแหล่งที่มาและการติดตามปัญหาคุณไม่ต้องการ


7

ค่าของประวัติซอร์สโค้ดดูเหมือนจะไม่แน่นอน

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

นอกจากนี้อาจมีเหตุผลทางกฎหมายที่ดีมากในการเก็บประวัติรหัสต้นฉบับ source code ส่วนใหญ่ dumpster-diving ที่ฉันต้องทำ (ในฐานะวิศวกร build / SCM) ได้รับการร้องขอจากฝ่ายกฎหมายของ บริษัท ของฉัน


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

3

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

แต่นอกเหนือจากนี้แล้วมีค่าใดในการรักษาประวัติของซอร์สโค้ดหรือไม่?

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

รหัสที่มากระทำประวัติศาสตร์มีบทบาทใด ๆ ในการสื่อสารระหว่างสมาชิกในทีมหรือไม่? จะเกิดอะไรขึ้นถ้าเรายกเลิกประวัติการกระทำ แต่แทนที่จะพึ่งพา "ซอร์สโค้ด" + "รหัสการทดสอบหน่วย" เพื่อการสื่อสาร

ใช่. วิธี "การทดสอบหน่วยซอร์สโค้ด" + "โค้ดเท่านั้น" ไม่ได้บอกคุณว่าใคร / เมื่อ / ทำไม

การมีอยู่ของประวัติการกระทำได้สร้างความพึงพอใจให้กับเอกสารข้อมูลระยะยาวเกี่ยวกับโครงการเช่นการเปลี่ยนแปลงการออกแบบ / ข้อกำหนดที่สำคัญและกระแสของความคิดที่ผลักดันการเปลี่ยนแปลงเหล่านั้นหรือไม่?

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


1
+1 นอกจากนี้การใช้รหัสเพื่อการสื่อสารหมายความว่าข้อมูลที่อยู่ในประวัติยังปรากฏอยู่ในความคิดเห็นซึ่งเป็นการละเมิด DRY
Larry Coleman

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