มีจุดที่รวม“ บันทึกการเปลี่ยนแปลง” ในไฟล์รหัสทุกไฟล์เมื่อคุณใช้การควบคุมเวอร์ชันหรือไม่?


75

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

// 2011-06-14 (John Smith) Change XYZ to ABC to fix Bug #999

และ:

// 2009-95-12 (Bob Jones) Extracted this code to Class Foo 
// <commented-out code here>

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

คุณคิดอย่างไร? คุณใช้ทั้งความคิดเห็นและบันทึกหรือไม่ แค่บันทึก คุณพบว่าการโค้ดง่ายขึ้นเมื่อคุณเห็นโค้ดบล็อกข้างต้นที่ John Smith เปลี่ยนวิธีการตรวจสอบ XYZ เมื่อสัปดาห์ที่แล้วแทนที่จะต้องค้นหาบันทึกและเปรียบเทียบไฟล์โค้ดในเครื่องมือ Diff หรือไม่?

แก้ไข: การใช้ SVN แต่โดยทั่วไปจะเป็นที่เก็บเท่านั้น ไม่มีสาขาไม่มีการรวมไม่มีอะไรนอกจากล็อก + ที่เก็บข้อมูล


4
คุณใช้ระบบควบคุมเวอร์ชันใด?
ChrisF

11
ร้านค้าบางแห่งใช้บันทึกการเปลี่ยนแปลงก่อนที่จะมีระบบควบคุมแหล่งที่มา ความเฉื่อยและความคุ้นเคยทำให้บันทึกการเปลี่ยนแปลงอยู่เสมอ
Gilbert Le Blanc

2
+1 - ทีมของฉันก็ทำเช่นนี้และฉันพยายามโน้มน้าวให้พวกเขารู้ว่ามันเป็นบทบาทของ VCS ปัญหาเริ่มต้นขึ้นเมื่อความคิดเห็นเหล่านี้ไม่ได้รับการอัปเดตด้วยรหัสจริง ... และที่แย่ที่สุดคือฝ่ายบริหารตัดสินใจที่จะเพิ่มรายการเปลี่ยนแปลงในทุกวิธีด้วย
slaphappy

2
+1 - ฉันต่อสู้กับนักพัฒนาอาวุโสของเรามาเกือบสองปีแล้วเกี่ยวกับเรื่องนี้ เหตุผลเดียวของเขาสำหรับการเพิ่มความคิดเห็นที่ไร้ประโยชน์เหล่านี้คือมันทำให้การผสานการเปลี่ยนแปลงกับวิธี 3000 บรรทัดง่ายขึ้นเล็กน้อย แนวคิดที่ว่าวิธีการ 3000 บรรทัดเป็นสิ่งที่น่ารังเกียจด้วยการดูถูก
Joshua Smith

1
หาก "ใช้เวลานานเกินไปในการร่อนผ่านบันทึก VCS [ของคุณ]" แสดงว่าคุณกำลังทำอะไรผิดพลาด
Keith Thompson

คำตอบ:


45

ฉันมักจะลบความคิดเห็นในรหัส และโดยการลบผมหมายถึงด้วยอคติ หากความคิดเห็นไม่ได้อธิบายว่าทำไมฟังก์ชั่นบางอย่างถึงทำอะไรมันก็หายไป ลาก่อน. อย่าผ่านไป

ดังนั้นจึงไม่น่าแปลกใจที่ฉันจะลบการเปลี่ยนแปลงเหล่านั้นด้วยเหตุผลเดียวกัน

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

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

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

แต่เกรงว่าคุณคิดว่าฉันบอกว่าควรลบความคิดเห็นอย่างสนุกสนานการส่ง WTF รายวันนี้ (จากโค้ดเบสที่ฉันทำงาน) แสดงให้เห็นถึงจุดของฉันอย่างสมบูรณ์แบบ:

/// The GaidenCommand is a specialized Command for use by the
/// CommandManager.
///
/// Note, the word "gaiden" is Japanese and means "side story",
/// see "http://en.wikipedia.org/wiki/Gaiden".
/// Why did I call this "GaidenCommand"? Because it's very similar to
/// a regular Command, but it serves the CommandManager in a different
/// way, and it is not the same as a regular "Command". Also
/// "CommandManagerCommand" is far too long to write. I also toyed with
/// calling this the "AlephCommand", Aleph being a silent Hebrew
/// letter, but Gaiden sounded better.

โอ้ ... เรื่องราวที่ฉันสามารถบอกคุณได้เกี่ยวกับ codebase นั้นและฉันจะยกเว้นว่ามันยังถูกใช้งานโดยองค์กรรัฐบาลที่ใหญ่ที่สุดแห่งหนึ่ง


4
เมื่อใดก็ตามที่ฉันต่อสู้กับตรรกะที่ซับซ้อนบางชิ้นบางครั้งความคิดเห็นสามารถช่วยให้ฉันเข้าใจบริบทได้ว่าเหตุใดตรรกะจึงสับสนเหมือนเดิม แต่โดยรวมฉันเห็นด้วยกับคุณ
maple_shaft

5
นักพัฒนาทุกคนมีคุณสมบัติไม่ดีอย่างน้อยฉันรู้ว่าฉันไม่ควร แต่ฉันหยุดไม่ได้ :) ทุกครั้งที่ฉันสร้างTODOความคิดเห็นลูกสุนัขก็ตาย
maple_shaft

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

8
@Neil Butterworth: อีกครั้ง: ructions: รหัสนี้มีความหมายอ่อน ปรับเปลี่ยนมันเปลี่ยนปรับปรุง มันมีความหมายสำหรับที่ มันไม่ได้ตั้งใจจะเขียนแค่ครั้งเดียว ความเข้าใจของเราเกี่ยวกับการเปลี่ยนแปลงทางธุรกิจและเมื่อสิ่งนั้นเกิดขึ้นเราจำเป็นต้องเปลี่ยนรหัส ฉันมีปัญหาเกี่ยวกับความคิดเห็นมากมาย แต่ส่วนใหญ่ที่เกี่ยวข้องกับการสนทนาของเราคือความคิดเห็นไม่ค่อยสอดคล้องกับรหัสและโดยทั่วไปแล้วพวกเขาไม่ได้อธิบายว่าทำไมสิ่งที่เกิดขึ้น เมื่อเกิดเหตุการณ์เช่นนั้นมันง่ายที่จะลบ file.Open() // Open the fileถ้ามีคนมาหาผมและถามว่าทำไมฉันลบความคิดเห็นดังต่อไปนี้ ฉันจะหัวเราะ
George Stocker

5
ไม่กี่วันที่ผ่านมาฉันเขียนชิ้นส่วนของรหัสการคำนวณทางคณิตศาสตร์ที่ซับซ้อนมากเต็มไปด้วยตรีโกณมิติการแปลงอะไรก็ตาม ... ฉันใช้เวลาประมาณครึ่งชั่วโมงครึ่งในการเขียนรหัสน้อยกว่า 10 บรรทัด ค่อนข้างไม่มีใครรอบตัวฉันเข้าใจว่ามันทำงานอย่างไร ฉันจะไม่เข้าใจในอีกไม่กี่สัปดาห์ ในอีกทางหนึ่งทำไมมันมีเรื่องไม่สำคัญ ดังนั้นเหนือบรรทัดสองสามเหล่านี้เป็นทั้งบทของข้อความอธิบายว่าทำไม หากคุณมาและลบความคิดเห็นนั้นฉันจะต่อยต่อหน้าคุณแล้วสกรูโดนไล่ออก
Davor Ždralo

76

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

แน่นอนสิ่งที่น่ากลัวจริงๆคือคุณสมบัติของ VCS "สมัยก่อน" ที่คุณสามารถมีบันทึก VCS จริงฝังอยู่ในไฟล์ต้นฉบับ ทำให้การผสานเป็นไปไม่ได้เกือบ


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

10

ฉันมีไฟล์ ChangeLog ไฟล์เดียวสำหรับแต่ละโครงการที่มีการส่งข้อความยอมรับโดยอัตโนมัติ

เราไม่ได้ฝังความคิดเห็นของ ChangeLog ถ้าเราทำฉันจะลบพวกเขาและมี "พูดคุย" กับคนที่เพิ่มพวกเขา ฉันคิดว่าพวกมันบ่งบอกว่าไม่เข้าใจเครื่องมือที่คุณใช้โดยเฉพาะ vcs

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


8

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

แต่ฉันรู้อะไร ...

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

ในทางกลับกันร้านค้าของฉันทำสิ่งที่ C # เป็นหลักและเรามักจะใช้ความคิดเห็นแบบอินไลน์ XML เพื่อจัดทำเอกสาร API ของเราดังนั้นการอ่านเอกสารเกี่ยวกับการเปลี่ยนแปลง API สาธารณะจะง่ายขึ้นหรือน้อยลงเช่นเดียวกับการใช้ Intellisense

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


6

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

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


5

การควบคุมเวอร์ชันสามารถแทนที่ความคิดเห็นบันทึกการเปลี่ยนแปลงเหล่านั้นในรหัสหาก devs ในทีมของคุณใช้งานถูกต้อง

หากทีมของคุณไม่ได้เพิ่มความคิดเห็นในการเช็คอินหรือออกความคิดเห็นที่ไม่ช่วยเหลือมันจะยากที่จะค้นหาข้อมูลที่คุณกำลังมองหาในอนาคต

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

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


5

นี่คือสิ่งที่เหลือจากวันที่บันทึกของ VCS สับสนและระบบ VCS นั้นจัดการได้ยาก (ฉันจำวันเหล่านั้นได้ที่ไหนสักแห่งที่แบ็กเอนด์ของยุค 80)

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

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


4

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

รหัส PowerBuilder เดิมของเรายังคงใช้มัน แต่ฉันคิดว่านั่นเป็นเพียงปัจจัยความสะดวกสบายสำหรับ peeps บางอย่าง ที่ได้รับการรวบรวมเพื่อเผยแพร่ดังนั้น (IMO พวกเขา oughtta) ใช้ประวัติ VCS ของ friggin


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

3

หากคุณใช้ SVN การทำเช่นนี้เป็นการเสียเวลาและไร้ประโยชน์โดยสิ้นเชิง

SVN มีฟังก์ชั่นตำหนิ ที่จะบอกคุณว่าใครทำทุกบรรทัดในไฟล์ที่กำหนดและเมื่อ


1

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

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

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

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


มีการแปลง VCS ที่ไม่รักษาข้อความยอมรับหรือไม่
David Thornley

1
@ David - ฉันเห็นมากมายที่ไม่ได้ ฉันไม่รู้ว่ามีสิ่งกีดขวางทางเทคนิคหรือไม่หรือมีคนตัดสินว่าการ "เริ่มใหม่" ง่ายกว่าและตรวจสอบรหัสทั้งหมดใน VCS ใหม่ในวันที่ 1
Justin Cave

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

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

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

1

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


1
ใบอนุญาตใดบอกว่า
Trasplazio Garzuglio

2
ฉันทำงานในสถานที่ซึ่งการปฏิบัติตาม Sarbanes Oxley ที่พวกเขาเชื่อในความต้องการบล็อกการเปลี่ยนแปลงในไฟล์ต้นฉบับ พวกเขายังใช้ PVCS (หรือที่เรียกว่า "มิติ") ในช่วงหลายปีที่ผ่านมาดังนั้นพวกเขาจึงไม่มีการควบคุมเวอร์ชัน แต่อย่างใด แต่ฉันรู้อะไรบ้าง
Bruce Ediger

@Marco: ฉันจำไม่ได้หรือจะเชื่อมโยงกับมัน
Sverre Rabbelier

1
ส่วนที่ 2a ของ GPLv2 นั้นจำเป็นต้องใช้ โครงการส่วนใหญ่ไม่สนใจบางโครงการมีไฟล์ "ChangeLog" เดียว (มักสร้างจาก VCS)
dsas

0

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


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