2011-01-01 9 views
7

Tôi đang làm việc trên một dự án liên quan đến việc trích xuất chi tiết từ một máy chủ SVN sử dụng SVNKit. Dự án của tôi đã hoàn thành và đã hoạt động một thời gian. Trong quá trình thử nghiệm, tôi nhận thấy một cái gì đó khá lạ lùng. Thời gian cam kết dữ liệu trích xuất của tôi dường như khác với những gì trong SVN Logs.Cửa hàng SVN cam kết thời gian như thế nào?

Tôi không thể tìm thấy bất kỳ mã nào trong dự án có thể gây ra sự khác biệt này nhưng bây giờ tôi đang tìm cách máy chủ SVN lưu trữ thời gian Cam kết trong chính nó. Khi chúng tôi có nhà phát triển làm việc từ một phần khác nhau trên thế giới, kết quả là các múi giờ khác nhau, tôi đã nghĩ rằng SVN có thể đang lưu trữ thời gian sau khi chuyển đổi thành GMT hoặc múi giờ của hệ thống mà máy chủ SVN đang chạy. Nhưng điều đó dường như không xảy ra. Thay vào đó, thời gian được lưu trữ theo thời gian khi cam kết được thực hiện và trong chính múi giờ địa phương đó.

Tôi đã không thể tìm thấy bất kỳ tài liệu quan trọng nào trên Internet để hỗ trợ lý thuyết của tôi cho đến nay.

Ai đó có thể giải thích ngắn gọn về cách SVN lưu trữ Thời gian cam kết cho mỗi thay đổi không? Các liên kết Documentaion đề cập đến điều này sẽ giúp ích rất nhiều.

Trả lời

6

Có vẻ như các bộ Subversion cam kết thời gian dựa trên server thời gian sử dụng UTC múi giờ, this email từ nhà phát triển Subversion Ben Collins-Sussman xác nhận. Ngoài ra, git-svn manpage và, Perl SVN::Web tài liệu mô-đun đồng ý với điều này.

2

Từ section of the SVN book documenting the unversioned properties:

svn:date

Chứa thời gian tính theo giờ UTC sửa đổi đã được tạo ra, trong định dạng ISO 8601. Giá trị đến từ đồng hồ của máy chủ, không phải của máy khách.

ISO 8601 vẫn cho phép nhiều định dạng khác nhau và chỉ báo múi giờ không bắt buộc. Tuy nhiên, nếu bạn có một cái nhìn vào giá trị của svn:date như thế này:

svn propget --revprop -r HEAD http://example.com/svn 

Sau đó, kết quả sẽ là một cái gì đó như thế này:

2010-12-23T00:45:41.552600Z 

Đó Z ở cuối là chỉ số cho UTC múi giờ và Subversion luôn sử dụng múi giờ đó để ghi lại ngày giờ cam kết.

2

Yêu cầu của bạn về tiểu nhóm propget dường như bỏ qua đối số svn: date. Tôi phải nhập lệnh theo cách này để đạt được kết quả mong muốn:

svn propget --revprop -r HEAD svn: date