Có lệnh liệt kê các xung đột SVN không?


116

Có ai biết một lệnh SVN để liệt kê các xung đột hiện tại giữa repo và bản sao làm việc không?

Cảm ơn

Câu trả lời:


168

Trên Linux, nếu bạn chỉ muốn xem các xung đột, hãy chuyển trạng thái qua grep.

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

6
Việc thêm -A 1vào các đối số grep sẽ hiển thị cho bạn dòng sau dòng xung đột, dòng này đôi khi liên quan đến xung đột.
Wesley Hartford

4
-P yêu cầu grep sử dụng perl regex, ^ = start of string, (? =) Kèm theo mẫu lookahead . {0,6} bất kỳ từ 0 đến 6 ký tự nào và chữ C, là chỉ báo cho xung đột
Pete

5
Lợi ích của việc sử dụng phần lookahead là gì? Không thể '^.{0,6}C'hoạt động tốt?
hans_meine

2
Để sử dụng lệnh này tương ứng trên OSX, bạn cần phải cài đặt GNU grep vì grep BSD không có cờ perl regex (-P)
G.Rassovsky

4
Trên Windows phiên bản Powershell của việc này là(svn status) -Match '^(?=.{0,6}C)'
bstoney

28

Chỉ cần sử dụng grep!

svn st | grep '^C'

2
@sid, nó regexp cho 'bắt đầu bằng', vì vậy phương tiện mà ký tự đầu tiên là một C
Joseph Sắc

1
Tôi đã suy nghĩ nếu điều này có thể bỏ lỡ các file mà có "A + C" tình trạng .. Có phải đó là một vấn đề ..
Raghav

2
egrep '^ [AC +] +' sau đó sẽ thực hiện thủ thuật, mặc dù tôi không thường gặp vấn đề A + C.
Joseph Lust

1
Đơn giản để ghi nhớ và đủ cho hầu hết các trường hợp. Cảm ơn @JosephLust.
csonuryilmaz

11

Bạn có thể thử svn merge -r <revision> --dry-runvà xem điều gì xảy ra theo cách đó.


Dường như không hoạt động trên Windows với svn 1.7.8. Nhật ký lỗi: svn: E205001: Hãy thử 'svn trợ giúp' để biết thêm thông tin svn: E205001: Yêu cầu nguồn hợp nhất
kakyo


4

Để sử dụng Windows PowerShell:

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

3

Nếu bạn đã hợp nhất, bạn có thể sử dụng

svn status

và thấy chữ "C" viết hoa cho xung đột, nhưng thông thường bạn sẽ không thấy loại như vậy trong bản sao làm việc của mình.


1

Có thể sử dụng svn merge --dryruntrong khi chỉ định URL kho lưu trữ với tất cả các bản sửa đổi sau bản mới nhất mà bạn đã cập nhật.

Ví dụ: nếu WC hiện tại của bạn dựa trên bản sửa đổi 147, điều này có thể làm được:

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

Tôi chưa làm được gì cả, vì vậy bạn sẽ phải tự mình thử.


0

Nếu bạn chưa hợp nhất hoặc cập nhật tệp, hãy sử dụng lệnh bên dưới

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

Gọi tắt

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

Chi tiết
SVN không đánh dấu trạng thái xung đột (C) cho đến khi bạn cập nhật (các) tệp bằng cách sử dụng svn update.
Cho đến lúc đó các trạng thái được hiển thị như dưới đây

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

M - Đã sửa đổi trong cục bộ
* - Cập nhật / Đến từ xa
M và * - Đã sửa đổi trong cục bộ, cũng như từ xa - Đây là xung đột nhưng svn chưa đánh dấu


-2

trên mac

$ svn status | grep -e '^!'

đã làm công việc

đây là người đàn ông cho grep:

cách sử dụng: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C [num]] [-e mẫu] [-f tệp] [--binary-files = value] [--color = when] [--context [= num]] [--directories = action] [--label] [--line-buffered] [--null] [pattern] [file ...]


Việc so khớp dấu chấm than sẽ giúp tìm các mục mâu thuẫn như thế nào?
anddam

^!là regex cho mọi dòng bắt đầu bằng !. Tất cả các dòng mâu thuẫn bắt đầu bằng!
thesummersign

2
Không, tôi vừa giải quyết xung đột trên repo 1,9 và các dòng xung đột chỉ bắt đầu bằng "C".
anddam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.