Lệnh svn nào sẽ liệt kê tất cả các tệp được sửa đổi trên một nhánh?


81

Trong svn, tôi có một nhánh đã được tạo, nói ở bản sửa đổi 22334. Sau đó, các cam kết đã được thực hiện trên nhánh.

Làm cách nào để lấy danh sách tất cả các tệp đã được thay đổi trên nhánh so với những tệp trên thân? Tôi không muốn xem các tệp đã được thay đổi trên thân giữa khi nhánh được tạo và "bây giờ".


Tôi trở về với câu hỏi này khá thường xuyên và câu trả lời hữu ích nhất là người sẽ bị xóa khỏi @AndrewMedico, với svn log:-D
Daniel W.

Câu trả lời:


84

Điều này sẽ làm được, tôi nghĩ:

svn diff -r 22334:HEAD --summarize <url of the branch>

2
Cảm ơn. Tôi thậm chí còn không biết chi nhánh của mình là bản sửa đổi nào, vì vậy tôi làm svn log <url of the branch> | tailđể có được số sửa đổi nhỏ nhất.
fikr4n

1
Sau khi chạy thao tác này để nhận bản tóm tắt tất cả các thay đổi, nếu bạn muốn xem lại từng thay đổi bạn đã thực hiện trên chi nhánh của mình, bạn có thể sử dụng svn diff -r 22334(lưu ý rằng không chỉ định sự khác biệt với HEAD). Điều này sẽ khác với bản sao làm việc cục bộ của bạn và cho phép bạn thay đổi nó từ bên trong ứng dụng khác của bạn.
cherno

43

Bạn cũng có thể nhận được danh sách nhanh các tệp đã thay đổi nếu đó là tất cả những gì bạn đang tìm kiếm bằng cách sử dụng lệnh trạng thái với tùy chọn -u

svn status -u

Điều này sẽ hiển thị cho bạn bản sửa đổi nào của tệp trong cơ sở mã hiện tại so với bản sửa đổi mới nhất trong kho lưu trữ. Tôi chỉ sử dụng diff khi tôi thực sự muốn thấy sự khác biệt trong chính các tệp.

Có một tốt hướng dẫn về lệnh svn ở đây giải thích rất nhiều những tình huống thường gặp: SVN Command tham khảo


3
svn statussẽ chỉ hiển thị cho bạn các sửa đổi cục bộ. OP đang tìm cách xem tất cả các thay đổi tệp đã được cam kết với nhánh của họ kể từ khi nó được tạo từ thân cây.
webnesto

25

Bạn có thể sử dụng lệnh sau:

svn status -q

Theo svnbook :

With --quiet (-q), it prints only summary information about locally modified items.

CẢNH BÁO: Đầu ra của lệnh này chỉ hiển thị sửa đổi của bạn. Vì vậy, tôi đề nghị thực hiện một svn upđể tải phiên bản mới nhất của tệp và sau đó sử dụng svn status -qđể tải các tệp bạn đã sửa đổi.


Câu trả lời ngắn gọn nhưng ngọt ngào.
Học sinh

@maskarih câu trả lời hoàn hảo!
Gaurav

14

Điều này sẽ chỉ liệt kê các tệp đã sửa đổi:

svn status -u | grep M

trạng thái svn chỉ hiển thị các sửa đổi vùng làm việc cục bộ. điều này không trả lời câu hỏi ban đầu liên quan đến tất cả các thay đổi trên nhánh, sau khi nó được tạo.
webnesto

2
và các tập tin có chứa Mtrong tên
Manolete

7
trạng thái svn -u | grep ^ M
rhel.user

Tôi sử dụng trạng thái -u | grep "M"
Mark Kahn

2

-u tùy chọn sẽ hiển thị bao gồm các tệp đối tượng nếu chúng được thêm vào trong quá trình biên dịch.

Vì vậy, để khắc phục điều đó, bạn có thể sử dụng như thế này.

svn status -u | grep -v '\?' 

2
echo You must invoke st from within branch directory
SvnUrl=`svn info | grep URL | sed 's/URL: //'`
SvnVer=`svn info | grep Revision | sed 's/Revision: //'`
svn diff -r $SvnVer --summarize $SvnUrl

0

svn log -q -vhiển thị đường dẫn và ẩn nhận xét. Tất cả các đường dẫn đều được thụt lề để bạn có thể tìm kiếm các đường bắt đầu bằng khoảng trắng. Sau đó chuyển đến cutsortdọn dẹp:

svn log --stop-on-copy -q -v | grep '^[[:space:]]'| cut -c6- | sort -u

Điều này nhận được tất cả các đường dẫn được đề cập trên nhánh kể từ điểm nhánh của nó. Lưu ý rằng nó sẽ liệt kê các tệp đã xóa và thêm, cũng như các tệp đã sửa đổi. Tôi chỉ sử dụng cái này để lấy những thứ mà tôi nên lo lắng khi xem xét trên một nhánh hơi lộn xộn từ một nhà phát triển mới.

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.