ความไม่สะดวกเกี่ยวกับการรวมใน SVN ก่อนหน้า v1.5 ล้าสมัยแล้วในขณะนี้หากไม่มีข้อมูลเมตาอีกต่อไป


11

ฉันเริ่มต้นกับ SVN และหลายแหล่งกล่าวว่าการรวมกันเป็นเรื่องยากมากใน SVN เมื่อเทียบกับเครื่องมือ DVCS คำถามล่าสุดที่ฉันสามารถหาที่นี่ใน SE มีจาก 2012

บางครั้งมีการกล่าวถึงเหตุผลที่ SVN ก่อนหน้า v1.5 ไม่มีข้อมูลเมตา แต่ SVN อยู่ในรุ่น 1.8.9 ในขณะนี้

ระบุว่า SVN นั้นเป็นผู้ใหญ่มากกว่า v1.5 และโดยเฉพาะอย่างยิ่งความจริงที่ว่าเราไม่ได้ใช้ SVN 1.5 ดังนั้นเราจึงไม่ต้องทนทุกข์ทรมานจากการขาดข้อมูลเมตาที่กล่าวถึง - ยังมีความถูกต้องมากในการโต้แย้งกับ SVN

ฉันเข้าใจว่า DVCS มีวิธีที่แตกต่างอย่างสิ้นเชิงซึ่งมักเป็นที่ต้องการมากกว่า แต่สำหรับผู้ที่ "ต้อง" ues SVN ไม่ว่าด้วยเหตุผลใดก็ตามการรวมกันไม่ใช่ "นรก" จริง ๆ อีกแล้วใช่ไหม


3
@ TorbenGundtofte-Bruun - ฉันไม่มีเวลาที่จะตอบคำถามนี้ แต่ฉันจะพูดว่า "อย่ากลัว SVN" มันมีข้อ จำกัด แต่ทำเช่นนั้นของ DVCS
kdgregory

คำตอบ:


15

มันใช้งานได้ดีถ้าคุณติดกับกรณีง่าย ๆแต่มีบางอย่างที่ซับซ้อนที่ไม่

ข้อ จำกัด ที่ฉันคิดได้:

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

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

  • ไฟล์ที่เพิ่มเข้ามาบางครั้งอาจทำให้เกิดข้อขัดแย้งปลอมแปลงในภายหลังเมื่อรวมเข้าด้วยกัน

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

  • สุดท้าย แต่ไม่ท้ายสุดมันช้า ผสานกับโครงการขนาดร้ายแรงใด ๆ มักจะใช้เวลานาทีที่ DVCS ส่วนใหญ่สามารถทำมันได้ภายใต้สอง


+1, คำตอบที่ดี จุดเกี่ยวกับบรรพบุรุษร่วมกันเป็นสิ่งที่ฉันต้องระวัง คุณมีข้อมูลอ้างอิงเกี่ยวกับข้อเท็จจริงเหล่านี้หรือไม่?
Doval

1
@Doval: ประสบการณ์
Jan Hudec

อาจเป็นมูลค่าการกล่าวขวัญว่า svn dosen't มีแนวคิดแยกต่างหากของแท็ก
jk

เกี่ยวกับสัญลักษณ์แสดงหัวข้อแรกของคุณ (ขอบคุณสำหรับคำอธิบายที่ชัดเจนมาก!) อาจไม่สามารถแก้ไขได้โดยใช้สาขาการสะสมที่มี branchpoint เดียวกับสาขาฟีเจอร์หรือไม่ (อิงตามVance98 ) ปัญหาเกิดขึ้นเฉพาะเมื่อสองฟีเจอร์ฟีเจอร์มีจุดแตกต่างกันหรือไม่?
Torben Gundtofte-Bruun

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

1

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

นี่เป็นเพียงประสบการณ์การดำเนินงานของฉัน ฉันไม่รู้อะไรเกี่ยวกับ internals ของ SVN


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