Câu hỏi Subversion: Cách so sánh sự khác biệt giữa các thay đổi đến?


Tôi muốn thấy những thay đổi mà đồng nghiệp của tôi đã thực hiện trước khi tôi chấp nhận những thay đổi sắp tới.

Vì vậy, tôi bắt đầu bằng cách nhận trạng thái

svn st -u

... cho tôi biết rằng tôi đã có thay đổi

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

Tôi có thể thấy những gì tôi đã thay đổi

svn diff localChanges.html

... nhưng làm sao tôi có thể khác localAndIncoming.html để hiển thị những gì đã được thay đổi, và nó khác với bản sao làm việc của tôi như thế nào?


19
2018-06-08 16:20


gốc


Không phải là câu trả lời cho câu hỏi dòng lệnh của bạn, nhưng: cuối cùng, một khi bạn biết gì khác với bản sao làm việc của bạn, có thể bạn sẽ muốn hợp nhất các thay đổi kho lưu trữ với các thay đổi của riêng bạn. Khi sử dụng một số GUI để làm như vậy, tại sao không sử dụng GUI để giúp bạn thực hiện sự khác biệt ban đầu? Các công cụ như TortoiseSVN cung cấp so sánh như vậy. Ngoài ra, các IDE như Eclipse có thể xem xét các thay đổi sắp tới (ngay cả khi không có gì để hợp nhất - tốt để có ý tưởng về những gì đồng nghiệp của bạn đã làm) rất dễ, tránh hợp nhất tự động. - Arjan
Có cách nào để xem giao diện GUI bằng cách sử dụng TortoiseSVN không? - Christian
Bạn cũng muốn phân biệt đếnChanges.html nữa, phải không? - Raffi Khatchadourian


Các câu trả lời:


Tôi tin những gì bạn cần là:

svn diff -rBASE:HEAD

21
2018-03-14 10:11





FYI svn diff cho một diff dựa trên tập tin chưa sửa đổi được lưu trữ trong .svn thư mục, không dựa trên phiên bản repo trực tiếp.

Bạn có thể chạy svn update để nhận subversion để thử cập nhật (và có thể hợp nhất) và sau đó thực hiện svn diff, nhưng đó không phải là sạch như tôi đoán bạn muốn.

Cuối cùng svn diff không hỗ trợ diffing chỉ trên repo. Thí dụ:

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

Mặc định nào sẽ so sánh HEAD với bản sửa đổi được thông qua.


2
2018-06-08 16:58





Với tortoisesvn (nếu bạn sử dụng windows)

  • Gọi màn hình nhật ký

  • Chọn sửa đổi đầu

  • Nhấp chuột phải vào localAndIncoming.html

  • Chọn So sánh với bản sao làm việc


2
2018-01-19 21:20





Bạn thực sự không thể cho đến khi bạn thực sự tải xuống phiên bản mới. Những hạn chế như thế này là một trong những lý do chính khiến một loại kiểm soát nguồn mới trở nên phổ biến gần đây. Nó được gọi là kiểm soát nguồn phi tập trung.
Với biểu mẫu mới này, bạn có kho lưu trữ cục bộ của riêng bạn, và sau đó bạn có thể thay đổi từ kho lưu trữ chính và chạy khác trên kho lưu trữ, nếu bạn không thích những thay đổi được thực hiện, bạn có thể hoàn nguyên kho lưu trữ của riêng mình và đi từ đó.

http://mercurial.selenic.com/ 

Và yeah, tôi biết đề nghị bạn chuyển đổi sản phẩm không phải là một giải pháp tối ưu, nhưng nó là một giải pháp không kém.


0
2018-06-08 16:46





Thực hiện thanh toán khác trong thư mục mới.

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

Nếu bạn sử dụng lại clean_working_copy đừng quên cập nhật trước

svn update clean_working_copy

Sau đó so sánh tệp của bạn với tệp từ clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Hoặc với cách ưa thích 3 chiều của bạn (của tôi là 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

0
2018-01-19 21:12



Công việc này, nhưng một scm nên cung cấp một cách tích hợp hơn. - rds


Tôi nghĩ

svn diff -r HEAD

gần như cung cấp những gì bạn muốn. Điều duy nhất là + và - được đảo ngược so với những gì bạn mong đợi.


0
2018-02-01 09:59