2012-06-21 34 views
5

Tôi đã viết một ứng dụng C# đơn giản sử dụng SharpSVN để truy vấn trạng thái của tệp trước khi thử thêm. Các ví dụ tôi đã thấy ở những nơi khác nhau cho mục đích này rất liên quan đến việc gọi phương thức GetStatus của SvnClient, đi qua đường dẫn đầy đủ và tham số ngoài tới một tập hợp các SvnStatusEventArgs.SvnClient.GetStatus (đường dẫn, arg, trạng thái) trả về 0 cho tệp được phiên bản?

Hiểu biết của tôi là, đối với một tệp, GetStatus sẽ trở lại với một bộ sưu tập SvnStatusEventArgs có số lượng chính xác một, với trạng thái là NotVersioned, Missing, Normal, v.v.

Trong đơn đăng ký của tôi, lệnh gọi GetStatus của tôi đến tệp dưới sự kiểm soát nguồn trả về số Bộ sưu tập là số không.

 SvnClient foo = new SvnClient(); 
     Collection<SvnStatusEventArgs> statuses; 
     foo.GetStatus("C:\\Temp\\svnu\\Program.cs", new SvnStatusArgs {Depth = SvnDepth.Empty}, out statuses); 

Giá trị của trạng thái.Chi phí là 0, khi tôi mong đợi 1 có trạng thái [0] .LocalContentStatus value of Normal. Kỳ vọng này có đúng không? Để gọi đến đường dẫn tham chiếu đến tệp không trong điều khiển nguồn, cuộc gọi hoạt động với trạng thái [0] .LocalContentStatus value of NotVersioned.

Đường dẫn được xác minh là bản sao làm việc và tệp Program.cs trên thực tế, được đưa vào Subversion. Tôi đang chạy phiên bản SharpSVN 1.7005.2163.13448 và VS2010.

Rất cám ơn trước vì đã xóa bỏ sự nhầm lẫn rõ ràng của tôi.

EDIT Một số thông tin khác: Sau khi sửa đổi, nhưng không cam kết, Program.cs, đoạn mã tương tự này hiện trả về một giá trị trạng thái duy nhất với LocalContentStatus của "Đã sửa đổi". Sau khi cam kết tệp, hành vi gốc (không có giá trị trạng thái trả về) được trả lại.

+2

.Status() và .GetStatus() chỉ trả lại các nút trạng thái 'thú vị'. Bạn có thể làm cho nó trả về tất cả các nút bằng cách thiết lập .RetrieveAllEntries trên đối tượng args. –

+0

Đó là thông tin tuyệt vời, Bert. Tôi sẽ cố gắng và tư vấn cho cơ hội tiếp theo của mình. –

Trả lời

5

Xin lỗi vì sự chậm trễ trong việc nhận câu trả lời được đăng dựa trên phản hồi của Bert Huijben. Tôi đăng câu trả lời ở đây chỉ FYI vì lợi ích của mọi người.

Sửa đổi lệnh gọi GetStatus ban đầu để đặt thuộc tính RetrieveAllEntries của đối tượng SvnStatusArgs đã thực hiện, giải quyết vấn đề này và khiến các tệp bản sao của địa phương (nhưng không quan tâm :)) có số trạng thái trả về là 1, với .LocalContentStatus của "Bình thường", như mong muốn.

foo.GetStatus("C:\\Temp\\svnu\\Program.cs", new SvnStatusArgs {Depth = SvnDepth.Empty, 
                   RetrieveAllEntries = true}, out statuses); 

Rất cám ơn.

+0

Ý bạn là 'RetrieveAllEntries'. – AbleArcher

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