2010-02-01 27 views
16

Tôi có các thay đổi trên chi nhánh mà tôi đã hợp nhất vào thân cây trong thư mục làm việc của mình. Chỉ số Svn hiển thị danh sách các tệp đã thay đổi chính xác. Tuy nhiên, đầu ra "svn stat" bao gồm dấu "+" trong lịch sử được lập lịch để cam kết trên mỗi tệp được thêm mới vào nhánh.svn diff khi các tệp được đánh dấu bằng "lịch sử được lập lịch với cam kết"

A + src \ chính \ java \ com .... java

Khi tôi chạy "svn diff", các tập tin nói thêm rằng có dấu "+" không có trong đầu ra vá .

Điều này có vẻ bị hỏng. Nếu một tệp được đánh dấu là đã thêm, thì toàn bộ nội dung của tệp phải ở đầu ra khác. Tôi đã thử đi qua - tổ tiên - chú ý. Không có thay đổi đối với đầu ra diff. Gần nhất tôi có thể tìm thấy cùng một vấn đề là these comments về các tệp được sao chép/di chuyển

Có ai biết cách để SVN đưa các tệp này vào đầu ra khác không?

Tôi vừa thử một chương trình khác biệt bên ngoài như được đề xuất bởi câu trả lời questions này, nhưng nó không hoạt động đối với tôi.

Trả lời

11

Ký tự + ở đầu ra của svn status cho biết tệp có "Lịch sử được lập biểu với cam kết". Điều này có nghĩa rằng tệp không thực sự là một tệp mới, nhưng thực sự là hậu duệ trực tiếp của một số tệp khác trong kho lưu trữ Subversion.

Điều này có nghĩa là có nên không có đầu ra nào trong svn diff, vì tệp này chưa thực sự thay đổi. Nếu bạn đã thực hiện một số sửa đổi cục bộ cho tệp, chúng sẽ xuất hiện trong đầu ra svn diff.

+1

Tôi nghi ngờ '+'. Tuy nhiên, làm thế nào tôi có thể sử dụng diff để tạo ra một diff bao gồm tất cả các thay đổi (như nhìn từ thân cây) để trình cho một nhà bảo trì dự án? –

+0

@James: Nó có thể khó khăn để làm với lịch sử, vì về mặt kỹ thuật một bản sao svn hoặc đổi tên * không thể * được đại diện ở định dạng khác biệt tiêu chuẩn (và giữ cho lịch sử). Bạn có thể xóa lịch sử của tập tin đó (tập tin «cp file.bak; svn revert; rm; mv file.bak; svn add file') và sau đó bạn sẽ có diff trong' svn diff', nhưng bạn sẽ 't giữ lịch sử, mà sẽ là quá xấu. Bạn có thể phải bao gồm các hướng dẫn để thực hiện chuyển đổi theo cách thủ công. – Avi

17

Khi phiên bản 1.7 được phát hành, svn diff sẽ có công tắc --show-copies-as-adds cho mục đích đó. Đó là một dấu hiệu tốt cho thấy các phiên bản thông qua 1.6 không có khả năng đó.

0

nếu bạn "svn mv fileA fileB". sẽ có + dấu gần tệpB. Tôi nghĩ dấu + nghĩa là nội dung tệp thực sự chưa được thay đổi, vì vậy nó không hiển thị trong svn diff. Trong trường hợp này, nó chỉ là tên tập tin đã thay đổi.

Các vấn đề liên quan