อะไรคือข้อดีของระบบควบคุมเวอร์ชันที่แต่ละไฟล์แยกจากกัน?


15

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

ระบบควบคุมเวอร์ชัน "ต่อไฟล์" บางระบบ:

  • CVS
  • ClearCase
  • Visual SourceSafe

ระบบควบคุมเวอร์ชัน "ทั้งพื้นที่เก็บข้อมูล" บางระบบ:

  • SVN
  • Git
  • หลายใจ

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

อะไรคือข้อดีของระบบการควบคุมรุ่นต่อไฟล์เหล่านี้หรือไม่ ระบบควบคุมเวอร์ชัน "ทั้งพื้นที่เก็บข้อมูล" มีปัญหาใดบ้างที่ระบบควบคุมเวอร์ชันต่อไฟล์ไม่มี?


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

ขอโทษถ้าคำถามนี้ออกมาเป็นข้อโต้แย้ง มันเป็นผลิตภัณฑ์ของความขุ่นเคืองเมื่อเร็ว ๆ นี้
Mike Daniels

1
@ ไมค์แดเนียลส์: มันไม่ได้ (อย่างน้อยสำหรับฉัน) ตามที่คุณถามถึงข้อดีอย่างชัดเจน
blubb

มุมมองทั้งสองนี้เป็นเพียงการประชุมที่แตกต่างกัน การโต้เถียงใด ๆ ในความโปรดปรานของคนอื่น ๆ เพียงยกเคาน์เตอร์ - โต้แย้งจากสมัครพรรคพวกของอีกด้านหนึ่ง ตัวอย่างเช่นหากคุณต้องการพฤติกรรม "ทั้งตัวแทน" ใน Clearcase คุณสามารถกำหนดค่ากำหนดของคุณตามวันที่
mouviciel

SVN มีรุ่นต่อไฟล์หรือว่ามีการเปลี่ยนแปลงในรุ่นล่าสุดหรือไม่
Klaim

คำตอบ:


12

จากประสบการณ์ของฉันไม่มี "VCS" ทั้งพื้นที่เก็บข้อมูล "ครอบงำ VCS" ต่อไฟล์ "อย่างเคร่งครัด


3

ต่อไฟล์มีข้อได้เปรียบเมื่อคุณสร้างสายผลิตภัณฑ์ (ผลิตภัณฑ์ซอฟต์แวร์หลายรายการ) จากพื้นที่เก็บข้อมูลเดียวกัน

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

และนี่ไม่ใช่ตัวอย่างแบบสุ่มที่ดึงออกมาจากอากาศบาง ๆ

นี่เกิดขึ้นครั้งสุดท้ายที่ฉันจัดส่งอัปเดตซอฟต์แวร์ไปยังกองทัพสหรัฐฯสำหรับระบบที่พวกเขาซื้อจำนวนมากจากนายจ้างคนก่อนหน้าของฉัน มูลค่าเงินดอลลาร์ของสัญญามีหน่วยวัดเป็นเศษส่วนพันล้านดอลลาร์ (ย้อนกลับเมื่อดอลลาร์สหรัฐมีมูลค่ามากกว่า)

ดังนั้นมันจะช่วยบางครั้ง

ผิดปกติ: ที่ที่ฉันทำงานตอนนี้เราจัดส่งลูกค้าที่แตกต่างกันเช่นกัน .... (และนั่นไม่ใช่สิ่งที่ฉันตัดสินใจในกรณีที่คุณสงสัย)

ฉันสงสัยว่ามันเป็นเรื่องธรรมดามากในการป้องกัน / อวกาศอวกาศกว่าในการหดตัวหรือเว็บแอป


3
แต่สาขาของที่เก็บไฟล์ทั้งหมดจะตอบสนองความต้องการเดียวกัน ตัวอย่างเช่นใน bzr สาขาจะไม่ขึ้นอยู่กับการฉีดจนกระทั่งคุณรวม (หรือแชร์ที่เก็บ)
edA-qa mort-ora-y

1
ฉันไม่สามารถนึกถึงสถานการณ์เดียวที่สาขาในระบบ 'ทั้งพื้นที่เก็บข้อมูล' จะไม่แสดงสถานะที่ต้องการได้ดีกว่าอาศัยสถานะภายนอกกับ VCS เพื่อกำหนดไฟล์ที่จะใช้ใน VCS "ต่อไฟล์" งานแรกของฉันหลังจากที่ฉันใช้ RCS กลุ่มของสคริปต์เพื่อวางโครงการและสคริปต์ระดับบนสุดเพื่อให้ได้เวอร์ชันของเวอร์ชันสคริปต์ซึ่งเป็นฝันร้ายที่แน่นอนและใช่นั่นก็เป็นโครงการทางทหารด้วย * 8 ')
ทำเครื่องหมายบูธ

@Mark Booth ลูกค้ารู้ว่ามีการเปลี่ยนแปลงไฟล์อะไรบ้างสำหรับสิ่งที่ต้องการแก้ไข ดังนั้นการตรวจสอบการกำหนดค่าทางกายภาพจึงเป็นไปตามหมายเลขควบคุมเวอร์ชัน
Tim Williscroft

สิ่งที่ฉันพูดคือเวอร์ชัน + แพตช์ตรวจสอบต้องใช้ข้อมูลที่แตกต่างกันในสถานที่ต่าง ๆ VCS และผู้สอบบัญชี ด้วยสาขาในระบบ 'ทั้งพื้นที่เก็บข้อมูล' ทั้งสองสถานะจะถูกบันทึกเป็นเอนทิตีแยกต่างหาก ตอนนี้ข้อมูลเดียวกันจะถูกทำซ้ำระหว่าง VCS และระบบการตรวจสอบและควรตรงกันเสมอ gitสามารถแยกความแตกต่างระหว่างผู้แต่งและผู้เดินทางดังนั้นคุณสามารถเก็บที่เก็บที่ 'ตรวจสอบแล้ว' ซึ่งคุณรู้จักทั้งผู้สร้างแพทช์ (ผู้แต่ง) และผู้ตรวจสอบ (คอมมิทเตอร์) ให้สถานการณ์ที่เป็นแบบอย่างแก่เราและฉันจะกลับ -1 ของฉัน
Mark Booth

@ Mark ใหญ่บูธแพทช์อะไร? พวกเขารู้ว่าซอฟต์แวร์ของพวกเขาคือชุดของไฟล์ A 1.01 B 1.05 D 1.55 E 1.44 F 1.01 และ SVD สำหรับรุ่นที่พวกเขายอมรับมีข้อมูลการเปลี่ยนแปลงไฟล์ต่อไฟล์เช่น E เปลี่ยนไปแก้ไขข้อบกพร่อง 1104, เวอร์ชั่นเก่า 1.43, เวอร์ชั่นใหม่ 1.44 . สวรรค์ช่วยเราถ้าเราเปลี่ยน F จากรุ่น 1.01 สถานการณ์ยังซับซ้อนมากขึ้นเนื่องจากมีข้อผิดพลาดจริงที่ได้รับการแก้ไขพวกเขาไม่ต้องการเปลี่ยนแปลง คนเหล่านี้ต้องการการเปลี่ยนแปลงที่น้อยที่สุดเพื่อหยิบเอาคุณสมบัติบางอย่างที่เชอร์รี่เลือกมาจากปีแห่งการพัฒนา การเลือกการแก้ไขข้อผิดพลาดภายหลัง
ทิม Williscroft

3

ไม่มีประโยชน์ใด ๆ ต่อการกำหนดเวอร์ชันต่อไฟล์

ข้อเสียในมืออื่น ๆ ที่มีความอุดมสมบูรณ์และชัดแจ้ง


0

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


0

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

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

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