มีคำสั่งในการแสดงรายการความขัดแย้ง SVN หรือไม่?


116

ไม่มีใครรู้คำสั่ง SVN เพื่อแสดงรายการความขัดแย้งปัจจุบันระหว่าง repo และสำเนาที่ใช้งานได้

ขอบคุณ

คำตอบ:


168

บน Linux หากคุณต้องการดูเฉพาะความขัดแย้งให้ไพพ์สถานะผ่าน grep

svn status | grep -P '^(?=.{0,6}C)'

6
การเพิ่ม-A 1อาร์กิวเมนต์ grep จะแสดงบรรทัดหลังเส้นความขัดแย้งซึ่งบางครั้งเกี่ยวข้องกับความขัดแย้ง
Wesley Hartford

4
-P บอกให้grepใช้ perl regex, ^ = start of string, (? =) ใส่รูปแบบlookaheadซึ่งก็คือ {0,6} ใดก็ได้ 0 ถึง 6 อักขระและตัวอักษร C ซึ่งเป็นตัวบ่งชี้ความขัดแย้ง
Pete

5
จุดของการใช้ส่วน Lookahead คืออะไร? ไม่สามารถ'^.{0,6}C'ทำงานได้เช่นกัน?
hans_meine

2
ในการใช้คำสั่งเดียวกันนี้บน OSX คุณต้องติดตั้ง GNU grep เนื่องจาก BSD grep ไม่มีแฟ
ล็ก

4
ใน Windows เวอร์ชัน Powershell คือ(svn status) -Match '^(?=.{0,6}C)'
bstoney

28

เพียงแค่ใช้ grep!

svn st | grep '^C'

2
@sid เป็น regexp สำหรับ 'ขึ้นต้นด้วย' ดังนั้นนั่นหมายความว่าตัวละครตัวแรกคือ C
Joseph Lust

1
ฉันคิดว่านี่อาจทำให้พลาดไฟล์ที่มีสถานะ "A + C" ได้หรือ
เปล่า

2
egrep '^ [AC +] +' จะทำเคล็ดลับแม้ว่าโดยปกติฉันจะไม่มีปัญหา A + C
Joseph Lust

1
โปรดจำไว้ง่ายๆและเพียงพอสำหรับกรณีส่วนใหญ่ ขอบคุณ @JosephLust
csonuryilmaz

11

คุณสามารถลองsvn merge -r <revision> --dry-runดูว่าเกิดอะไรขึ้น


ดูเหมือนจะไม่ทำงานบน Windows ด้วย svn 1.7.8 บันทึกข้อผิดพลาด: svn: E205001: ลอง 'svn help' เพื่อดูข้อมูลเพิ่มเติม svn: E205001: ต้องการผสานแหล่งที่มา
kakyo



3

หากคุณได้รวมเข้าด้วยกันแล้วคุณสามารถใช้ได้

svn status

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


1

อาจเป็นไปได้ที่จะใช้svn merge --dryrunในขณะที่ระบุ URL ที่เก็บพร้อมการแก้ไขทั้งหมดหลังจากที่คุณอัปเดตล่าสุด

เช่นถ้า WC ปัจจุบันของคุณใช้การแก้ไข 147 สิ่งนี้สามารถทำได้:

svn merge -r 148:HEAD http://url.to.repo/repo/

ฉันไม่ได้ทำอะไรด้วยตัวเองดังนั้นคุณต้องลองด้วยตัวเอง


0

หากคุณยังไม่ได้รวมหรืออัปเดตไฟล์ให้ใช้คำสั่งด้านล่าง

svn status --show-updates | grep -P '.*(?=.*M)(?=.*\*).*'

สั้น ๆ

svn st -u | grep -P '.*(?=.*M)(?=.*\*).*'

รายละเอียด
SVN จะไม่ทำเครื่องหมายสถานะความขัดแย้ง (C) จนกว่าคุณจะอัปเดตไฟล์โดยใช้svn update.
จนกว่าจะถึงเวลานั้นสถานะจะแสดงดังด้านล่าง

+---+------+---------------+---------------+
| M |      |               | 23246   file1 |
+---+------+---------------+---------------+
|   |      | *             | 23233   file2 |
+---+------+---------------+---------------+
| M |    * | 23233   file3 |               |
+---+------+---------------+---------------+

M - แก้ไขในเครื่อง
* - การอัปเดต / ขาเข้าจากระยะไกล
M และ * - แก้ไขในท้องถิ่นและในระยะไกล - นี่เป็นข้อขัดแย้ง แต่ svn ยังไม่ได้ทำเครื่องหมาย


-2

บน Mac

$ svn status | grep -e '^!'

ได้งาน

นี่คือผู้ชายสำหรับ grep:

การใช้งาน: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e pattern] [-f file] [--binary-files = value] [--color = when] [--context [= num]] [--directories = action] [--label] [--line-buffered] [--null] [รูปแบบ] [ไฟล์ ... ]


การจับคู่เครื่องหมายอัศเจรีย์จะช่วยค้นหารายการที่ขัดแย้งได้อย่างไร
anddam

^!เป็น regex !สำหรับบรรทัดที่ขึ้นต้นด้วยทุก เส้นที่ขัดแย้งกันทั้งหมดเริ่มต้นด้วย!
thesummersign

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