การโค่นล้ม: วิธีการเปรียบเทียบความแตกต่างระหว่างการเปลี่ยนแปลงที่เข้ามา?


19

ฉันต้องการดูการเปลี่ยนแปลงที่เพื่อนร่วมงานของฉันทำก่อนที่จะยอมรับการเปลี่ยนแปลงที่เข้ามา

ดังนั้นฉันเริ่มจากการรับสถานะ

svn st -u

... ที่บอกฉันว่าฉันมีการเปลี่ยนแปลงที่เข้ามา

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

ฉันเห็นสิ่งที่ฉันเปลี่ยนไป

svn diff localChanges.html

... แต่ฉันlocalAndIncoming.htmlจะแตกต่างกันอย่างไรเพื่อแสดงสิ่งที่เปลี่ยนแปลงและแตกต่างจากสำเนาการทำงานของฉันอย่างไร


ไม่ใช่คำตอบสำหรับคำถามเกี่ยวกับบรรทัดคำสั่งของคุณ แต่: ในที่สุดเมื่อคุณรู้ว่าอะไรที่แตกต่างจากสำเนาการทำงานของคุณคุณอาจต้องการรวมการเปลี่ยนแปลงที่เก็บกับการเปลี่ยนแปลงของคุณเอง เมื่อใช้ GUI บางอย่างในการทำเช่นนั้นทำไมไม่ใช้ GUI เพื่อช่วยคุณเริ่มต้นต่างกันเช่นกัน? เครื่องมือเช่น TortoiseSVN เสนอการเปรียบเทียบดังกล่าว นอกจากนี้ IDEs เช่น Eclipse ยังสามารถตรวจสอบการเปลี่ยนแปลงที่กำลังจะเกิดขึ้น (แม้ว่าจะไม่มีอะไรให้ผสาน - ยินดีที่ได้ทราบว่าผู้ร่วมงานของคุณทำอะไรอยู่) เป็นเรื่องง่ายมากหลีกเลี่ยงการรวมอัตโนมัติ
Arjan

1
มีวิธี GUI ในการเห็นการเปลี่ยนแปลงที่เข้ามาโดยใช้ TortoiseSVN หรือไม่?
Christian

คุณต้องการกระจายChanges.htmlด้วยหรือไม่
Raffi Khatchadourian

คำตอบ:



2

FYI svn diffให้ส่วนต่างตามไฟล์ที่ไม่ได้รับการแก้ไขและถูกเก็บไว้ใน.svnไดเรกทอรีไม่ใช่เวอร์ชัน repo ที่ใช้งานจริง

คุณสามารถเรียกใช้svn updateเพื่อรับการโค่นล้มเพื่อพยายามอัปเดต (และอาจรวม) แล้วทำsvn diffแต่ไม่สะอาดเท่าที่ฉันคิดว่าคุณต้องการ

ในที่สุดsvn diffก็รองรับการกระจายบน repo ตัวอย่าง:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

ค่าเริ่มต้นใดที่เปรียบเทียบ HEAD กับการแก้ไขที่ผ่าน


2

ด้วยtortoisesvn (ถ้าคุณใช้ windows)

  • เรียกใช้หน้าจอบันทึก

  • เลือกการแก้ไขหัว

  • คลิกขวาที่ localAndIncoming.html

  • เลือกเปรียบเทียบกับสำเนาที่ใช้งานได้


0

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

http://mercurial.selenic.com/

และใช่ฉันรู้ว่าการแนะนำให้คุณเปลี่ยนผลิตภัณฑ์ไม่ใช่วิธีแก้ปัญหาที่ดีที่สุด แต่ก็เป็นวิธีการแก้ปัญหาที่น้อยลง


0

ทำรายการชำระเงินอื่นในโฟลเดอร์ใหม่

cd ..
svn checkout  /path/to/repo clean_working_copy

หากคุณใช้ clean_working_copy ซ้ำอย่าลืมอัปเดตก่อน

svn update clean_working_copy

จากนั้นเปรียบเทียบไฟล์ของคุณกับไฟล์จาก clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

หรือกับ diff 3-way ที่คุณต้องการ (mine คือ kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html

การทำงานนี้ แต่ scm ควรมีวิธีการแบบบูรณาการ
rds

0

ฉันคิด

svn diff -r HEAD

เกือบให้สิ่งที่คุณต้องการ สิ่งเดียวคือเครื่องหมาย + และ - จะตรงกันข้ามกับสิ่งที่คุณคาดหวัง

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