Subversion: Làm thế nào để so sánh sự khác biệt giữa các thay đổi đến?


19

Tôi muốn xem 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 có được trạng thái

svn st -u

... Điều đó cho tôi biết rằng tôi đã có một sự 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 thế nào 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?


Không phải là một câu trả lời cho câu hỏi dòng lệnh của bạn, nhưng: cuối cùng, khi bạn biết điều gì khác với bản sao làm việc của mình, có lẽ bạn sẽ muốn hợp nhất các thay đổi của 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 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ể thực hiện việc xem xét các thay đổi đến (ngay cả khi không có gì để hợp nhất - thật tuyệt khi có ý tưởng về những gì đồng nghiệp của bạn đã làm) rất dễ dàng , tránh việc hợp nhất tự động.
Arjan

1
Có cách GUI nào để xem các thay đổi đến bằng sử dụng TortoiseSVN không?
Christian

Bạn cũng muốn khác diffChanges.html chứ?
Raffi Khatchadourian

Câu trả lời:



2

FYI svn diffcung cấp một khác biệt dựa trên tập tin chưa sửa đổi được lưu trữ trong .svnthư 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để có được lật đổ để thử cập nhật (và có thể hợp nhất) và sau đó thực hiện svn diff, nhưng điều đó không sạch như tôi đoán bạn muốn.

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

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

Mà mặc định để so sánh CHÍNH với sửa đổi thông qua.


2

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

  • Gọi màn hình đăng nhập

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

  • Nhấp chuột phải vào localAndIn chuẩn.html

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


0

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 lớn 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 hình thức mới này, bạn có kho lưu trữ cục bộ của riêng mình và sau đó bạn có thể thực hiện các thay đổi từ kho lưu trữ chính và chạy khác biệt trên nó, nếu bạn không thích những thay đổi đó, 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à vâng, tôi biết đề xuất 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 hơn không kém.


0

Làm một kiểm tra khác trong một thư mục mới.

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

Nếu bạn sử dụng lại Clean_usiness_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_usiness_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Hoặc với diff 3 chiều ưa thích 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

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

0

tôi nghĩ

svn diff -r HEAD

gần như cho 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.

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.