2010-03-04 17 views
17

Tôi đang cố gắng viết một bản vá đa tệp cho một dự án nguồn mở, nhưng bản sao chính đã thay đổi kể từ khi tôi bắt đầu làm việc. Tôi cần phải có được sự khác biệt SVN (chỉ là các tập tin dưới sự kiểm soát phiên bản) giữa phiên bản không được cam kết của tôi và sửa đổi mà từ đó nó đã được kiểm tra. Tôi có thể sử dụng lệnh SVN nào để tìm sự khác biệt?Làm thế nào tôi có thể tìm thấy sự khác biệt svn giữa bản sao làm việc và rev tùy ý?

Chỉnh sửa: Tôi rất tiếc, tôi phải sử dụng cụm từ "bản sao làm việc" không đúng cách. Tôi cần so sánh những thay đổi không được cam kết của tôi với bản sửa đổi mà chúng dựa vào. Nói cách khác, tôi đã kiểm tra bản sửa đổi 1000 và thay đổi các tệp foobar. Số rev hiện lên tới 1015, nhưng tôi cần so sánh phiên bản foobar với phiên bản sửa đổi 1000. Có một lệnh dễ dàng để thực hiện việc này (so sánh bản sao đã sửa đổi của chương trình với bản sửa đổi trước đây) không?

+0

Tôi tin rằng bạn sử dụng thuật ngữ "bản sao làm việc" một cách chính xác. Khi bạn kiểm tra rev 1000 thì bản sao làm việc của bạn là bản sao của rev 1000. Nó không thực sự quan trọng là cơ sở là 1015. Bạn chỉ cần xác định N (đó là cơ bản bình thường) là 1000 là khá nhiều tất cả các lệnh mặc định là cơ sở. Vì vậy, svn diff -r1000 nên hoạt động hoàn hảo cho bạn (giả sử bạn thực sự đã kiểm tra vòng quay 1000). Nếu bạn kiểm tra bản thân diff nó nói rằng những gì sửa đổi đã làm nó so sánh (như ezpz cho thấy trong câu trả lời của mình) – Tom

Trả lời

13

Bạn có thể sử dụng tham số -rN: M với lệnh diff chỉ định các sửa đổi bạn muốn so sánh. Chỉ cần cung cấp bản sửa đổi mà từ đó bản sao làm việc của bạn đã được kiểm tra (bạn có thể bỏ mặc M vì nó mặc định là bản sao làm việc) và bạn sẽ nhận được những gì bạn cần.

Nếu bạn không nhớ số phiên bản gốc cố gắng chạy svn status -v và cột đầu tiên sẽ hiển thị.

Thông tin thêm svn help diff ...

7

svn diff lấy đối số -rN:M mặc định là N == BASEM == working copy. Sẽ svn diff -r REV trong đó REV là bản sửa đổi bạn muốn không hoạt động?

Để trả lời chỉnh sửa của bạn, giả sử bạn có những điều sau đây:

$ ls 
foo bar baz 
$ svn st -u 
Status against revision: 1071 
$ echo "more stuff" >> foo 
$ svn diff -r 1000 foo 
Index: foo 
=================================================================== 
--- foo (revision 1000) 
+++ foo (working copy) 
... 

Tôi tin rằng đây là những gì bạn đang sau, đúng không?

0

Nếu mục tiêu của bạn là để có được một báo cáo về chỉ là tên tập tin mà các nội dung đã thay đổi, điều này sẽ làm các trick:

svn diff | grep 'Index: ' . 
Các vấn đề liên quan