2011-02-07 4 views
25

Tôi muốn chỉ xem danh sách các tệp đã được sửa đổi, thêm, v.v., không phải là nội dung (svn diff kết quả đầu ra), chỉ danh sách các tệp như svn status.SVN: cách so sánh bản sao làm việc với bản sửa đổi kho lưu trữ?

svn diff -r HEAD giải quyết rất nhiều thông tin, rất khó hiểu một cách nhanh chóng.

svn status chỉ hiển thị các thay đổi so sánh bản sao làm việc với phiên bản gốc tại địa phương (không có bản sửa đổi kho lưu trữ).

svn update không hỗ trợ --dry-run

Tóm lại, tôi cần một cái gì đó giống như svn status, nhưng những gì so sánh bản sao làm việc hiện tại với phiên bản kho (Tôi sẽ so sánh với một phiên bản HEAD).

Tôi nhìn qua hướng dẫn SVN, nhưng không giúp tôi, không may: -/

Trả lời

40

Hãy thử

svn status --show-updates 

Các -u (hoặc --show-updates) tùy chọn để svn status nguyên nhân svn để liên lạc với kho lưu trữ và hiển thị những thứ đã thay đổi trong kho lưu trữ - điều đó có đủ cho bạn không? Tùy thuộc vào những gì bạn cần, bạn có thể muốn -q hoặc --verbose cờ quá

+0

Tuyệt vời! Nhưng nó đánh dấu tất cả các tập tin như '*' chỉ. – Azat

+0

Tôi có thể so sánh, ví dụ: hai bản sửa đổi không? Trạng thái 'svn -r4: 5' không được hỗ trợ. – Azat

+0

Hoặc nó là một câu hỏi cho một chủ đề khác? – Azat

22
svn diff -r head 

này sẽ tạo ra một danh sách diff cho tất cả các file mà khác nhau giữa các bản sao làm việc và kho, đưa ra một danh sách các tập tin và những thay đổi thực tế . Mà, như bạn nói, có thể khó hiểu.

Vì vậy, cố gắng này:

svn diff -r head --diff-cmd meld 

này dos điều tương tự, nhưng hiển thị các thay đổi bằng meld (bạn có thể cung cấp bất kỳ công cụ diff thị giác khác trong kho vũ khí của bạn), đó là rất nhiều dễ quản lý hơn.

Nhưng nghiêm túc, quen với việc đọc các kết quả đầu ra khác, vì chúng tạo cơ sở cho rất nhiều thứ khác (ví dụ, các bản vá) và khá khó để tránh trong thế giới Linux. Để cắt giảm sản lượng:

svn status -u 

sẽ cung cấp cho bạn một danh sách các tập tin sửa đổi, sau đó:.

svn diff <file> -r head --diff-cmd <tool> 

sẽ cung cấp cho bạn một sự khác biệt hình ảnh của chỉ các tập tin cụ thể bạn đang quan tâm

+1

Ngọt ngào, cảm ơn. Đây chính xác là câu trả lời tôi đang tìm kiếm. Meld có khả năng tốt để so sánh toàn bộ thư mục, bạn có biết cách gửi SVN bản sao làm việc cho chương trình này theo cách như vậy không? Để chúng tôi có thể xem trước toàn bộ cấu trúc. – Line

+0

@kdopen, xin lỗi vì những kẻ phản đối. Tôi có một người bạn rất sáng tạo đến thăm ai (biết tôi tức giận) đã sử dụng tình huống này và máy tính và tài khoản không giám sát của tôi để tạo nên một trò đùa khắt khe về tôi và downvoted nhiều câu trả lời. Trẻ con tôi phải nói, nhưng một trò đùa thực sự thông minh mà rõ ràng phục vụ mục đích của tôi là tôn trọng bản thân mình trên cộng đồng StackOverflow. : D Ít nhất tôi hy vọng ai đó có một tiếng cười tốt trên tài khoản của tôi. : D – AlexRebula

+0

Vâng, có vẻ như hệ thống đã sửa chữa nó. Cố gắng không để hệ thống đánh giá đến với bạn. Khi bạn đạt được 500 danh tiếng (khoảng 3 upvotes từ bây giờ), bạn sẽ thấy mình bắt đầu làm việc theo hàng đợi - sau đó bạn nhận ra rằng bạn chỉ cần tập trung vào các quy tắc và không phải lo lắng về cách mọi người cảm nhận về đánh giá của bạn. Tôi nhận được nhiều nhận xét mỗi ngày từ những người đã xem xét tiêu cực - và tôi đã xem xét và xóa nội dung của riêng mình theo thời gian. Đây là những gì khiến chúng tôi tách rời khỏi đống lộn xộn của các trang web như Quora – kdopen

2

Cách bạn diễn đạt câu hỏi gốc, câu trả lời đúng là trạng thái svn -u như đã cho. Dựa trên các nhận xét tiếp theo, bạn cũng nên biết về svn diff --summarize vì đây có thể là những gì bạn đang tìm kiếm. Đây là những gì bạn sẽ sử dụng để so sánh hai bản sửa đổi kho lưu trữ hoặc hai thẻ hoặc một cái gì đó khác trong kho lưu trữ. Bạn không thể sử dụng tùy chọn này để so sánh bản sao làm việc của bạn với kho lưu trữ (trạng thái thực hiện điều đó).

Xem: http://blogs.collab.net/subversion/2007/03/computing_the_d/

1

Đây là những gì tôi đã làm, và nó giải quyết vấn đề của tôi: Tôi muốn nhìn thấy gì khác nhau giữa bản sao làm việc của tôi và bản sao của repo.

svn diff > ~/svndiff.txt 

Và sau đó tôi đã kéo tệp văn bản thô vào SublimeText 2 để tôi có thể đọc dễ dàng hơn. Đoán đây là những thứ khá cơ bản, nhưng tôi nghĩ rằng tôi sẽ đăng nó vì nó đã giúp tôi với một vấn đề tương tự.

-1

Đây có thể là những gì bạn đang tìm kiếm:

svn diff -r ĐẦU --summarize

1

op:

Tôi muốn chỉ thấy danh sách các file đã được sửa đổi, thêm vào, vv, không phải là nội dung (svn diff kết quả đầu ra đó), chỉ danh sách các tập tin như tình trạng svn.

Giống như OP, tôi muốn xem báo cáo kiểu "trạng thái svn" của bản sao hiện tại cho các nhánh dự án được lồng dưới một kho lưu trữ svn lớn hơn với thân mới nhất của chúng và tôi muốn sử dụng cùng một đường dẫn và đối số sửa đổi mà svn diff sử dụng.

Sau đây nào đó:

svn diff --old . --new ^/pathToProject/trunk --summarize 

Tất nhiên, thay thế "pathToTrunk" vào đường dẫn thực tế kho của bạn sử dụng.