2013-11-27 14 views
5

Tôi đã khắc phục sự cố một số công cụ xử lý Subversion cam kết từ một kho lưu trữ cụ thể.Subversion không có tác giả, ngày tháng và tin nhắn

Trong khi hầu hết các phiên bản được hiển thị một cách chính xác, 'log svn' trả một số sửa đổi không có tác giả, ngày hoặc tin nhắn:

svn log http://myrepository.com -r 123456 
------------------------------------------------------------------------ 
r123456 | (no author) | (no date) | 1 line 


------------------------------------------------------------------------ 

tôi nghi ngờ điều này là do sự thiếu quyền truy cập cho các tập tin đặc biệt về con đường đã thay đổi. Điều này có thể là một cái gì đó nhiều hơn chỉ đơn giản là thiếu quyền truy cập?

Trả lời

2

Việc thiếu tác giả hoặc ngày không phải là dấu hiệu của vấn đề quyền. Việc thiếu thông báo tường trình có thể là dấu hiệu của vấn đề quyền.

Trước hết Subversion không thực sự yêu cầu thuộc tính svn: author, svn: date hoặc svn: log thực sự được đặt thành bất kỳ thứ gì. Nói chung, bạn sẽ không kết thúc với cam kết không có ngày svn: author hoặc svn: trống trừ khi ai đó đã xóa thuộc tính bằng lệnh propdel (ví dụ: svn propdel svn:author --revprop -r 1234 $URL). Subversion cố gắng khuyến khích bạn để lại một thông điệp tường trình nhưng bạn cũng có thể cho nó một cái trống trừ khi được giới hạn bởi các móc cam kết. Vì vậy, hoàn toàn có thể là ai đó cố ý thực hiện những thay đổi đó cho bản sửa đổi. Điều này cũng có nghĩa là bất kỳ công cụ nào bạn đang sử dụng để xử lý các cam kết Subversion đều có thể xử lý việc thiếu các giá trị này.

Đối với quyền nếu bạn đang sử dụng ủy quyền dựa trên đường dẫn (authz-db với svnserve hoặc AuthzSVNAccessFile với httpd) thì quyền truy cập của bạn vào đường dẫn được sửa đổi bởi bản sửa đổi có thể giới hạn những gì bạn có thể thấy.

Đặc biệt:

  • Nếu bạn có quyền truy cập vào tất cả các con đường bạn sẽ thấy bất cứ điều gì bạn yêu cầu bao gồm tất cả các đường dẫn thay đổi và tất cả các thuộc tính sửa đổi.
  • Nếu bạn có quyền truy cập chỉ một số đường dẫn, bạn sẽ chỉ thấy các đường dẫn đã thay đổi mà bạn có quyền truy cập được liệt kê khi sử dụng -v và chỉ thuộc tính sửa đổi svn: author và svn: date. svn: log sẽ bị ẩn vì nó có thể chứa tên của các tệp mà bạn không có quyền truy cập. Các thuộc tính sửa đổi khác (kể cả các thuộc tính tùy chỉnh) cũng sẽ bị bỏ qua.
  • Nếu bạn không có quyền truy cập vào bất kỳ đường dẫn nào được thay đổi bởi bản sửa đổi thì bản sửa đổi sẽ bị bỏ qua hoàn toàn từ đầu ra của nhật ký.
+0

Cảm ơn Ben! Đó là một câu trả lời tuyệt vời! – Hakkar

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