รวมสาขากับลำต้น


119

ใช้ TortoiseSVN ฉันต้องทำการเปลี่ยนแปลงที่เคยทำในสาขาหนึ่งแล้วรวมเข้ากับลำต้น

ฉันเป็นผู้พัฒนาโครงการนี้เพียงคนเดียวดังนั้นฉันจึงรู้ว่า trunk ไม่ได้เปลี่ยนแปลง ฉันกำลังเรียนรู้ SVN เพื่อให้ทีมของฉันสามารถใช้งานได้ในที่สุด

โดยพื้นฐานแล้วฉันต้องการให้ลำต้นของฉันมีลักษณะเหมือนกิ่งก้าน

ในโลกก่อน svn ฉันจะคัดลอกไฟล์ในโฟลเดอร์สาขาของฉันลบไฟล์ในโฟลเดอร์ trunk จากนั้นคัดลอก branch ไปยัง trunk

ใน TortoiseSVN ฉันได้พยายามReintegrate a branch, และMerge a range of revisions Merge two different treesดูเหมือนว่าไม่มีอะไรที่จะเปลี่ยนลำต้นได้จริง ฉันได้ลองแตกกิ่งก้านที่ด้านบนของลำต้นแล้วด้วย สิ่งนี้ทำให้ฉันมีข้อผิดพลาดโดยบอกว่ามีลำต้นอยู่แล้ว

คำตอบ:


157

ในกรณีของคุณ:

  1. สลับสำเนาการทำงานไปที่ลำตัว (สวิตช์ SVN)
  2. รวมสาขาลงในสำเนาการทำงาน (SVN Merge)
  3. ตรวจสอบให้แน่ใจว่าทุกอย่างยังคงรวบรวมและใช้งานได้
  4. ยอมรับสำเนาการทำงาน (ลำตัว)
  5. พิจารณาการฆ่าสาขา

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


ปรับปรุง

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

สาขาเดียวที่ฉันไม่ฆ่าคือสาขาการบำรุงรักษาและการเปิดตัวเว้นแต่ว่าจะไม่รองรับรุ่นใดรุ่นหนึ่ง

ไม่ว่าจะเกิดอะไรขึ้นคุณสามารถเข้าถึงทุกการแก้ไขได้เสมอดังนั้นการฆ่าสาขาจึงถูกใช้เพื่อป้องกันไม่ให้นักพัฒนารายอื่นพัฒนาในสาขาที่ตายแล้ว


ความคิดเห็นที่คุณเพิ่มในขั้นตอนที่ 5 อาจจะดีกว่าขั้นตอนที่ 1? เมื่อคุณต้องการใช้ "รวมสาขาอีกครั้ง" จากกล่องโต้ตอบการผสาน TortoiseSVN การรวมการเปลี่ยนแปลงทั้งหมดจากลำต้น (หรือกิ่งฐาน) ก่อนเป็นข้อกำหนด
jbvo

1
ขั้นตอนแรก (เปลี่ยนสำเนาการทำงานเป็นลำต้น) จำเป็นเฉพาะในกรณีที่ไม่มีสำเนาการทำงานแยกสาขาและลำต้นหรือไม่
Jeff B

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

10

ฉันคิดว่าใน TortoiseSVN 1.8.5, Merge | ผสานสองต้นไม้ที่แตกต่างกันควรใช้งานได้ เมื่อคุณรวม branch / tag กลับไปที่ trunk เคล็ดลับคือ From URL คือ trunk และ To คือแท็ก / branch แปลก แต่จริง

ที่มา: การรวม

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


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

6

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

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


2
ควรระมัดระวังในการ "คัดลอก" ไฟล์ ใช้บางอย่างเช่นการส่งออกของ TortoiseSVN เพื่อหลีกเลี่ยงความเสียหายของไดเรกทอรี svn ที่ซ่อนอยู่
Milimetric

3

ฉันใช้ TortoiseSVN 1.9.3, Build 27038

ทำตามขั้นตอนด้านล่างเพื่อรวมกิ่งก้านเป็นลำต้น

1) คลิกขวาที่สำเนาการทำงานของลำตัวและเลือกตัวเลือกด้านล่าง

ใส่คำอธิบายภาพที่นี่

2) ในกรณีที่ Branch Merging เป็น trunk ให้เลือก option ที่สองตามที่แสดงด้านล่างและคลิกถัดไป

ใส่คำอธิบายภาพที่นี่

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

ใส่คำอธิบายภาพที่นี่

4) คลิกถัดไปและทำการทดสอบรวม

ใส่คำอธิบายภาพที่นี่

5) หากการทดสอบการผสานสำเร็จให้คลิกที่ปุ่มผสาน

6) เมื่อการผสานสำเร็จแล้วให้ทำการเปลี่ยนแปลงบนลำต้น

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