2010-02-18 18 views
5

Tôi muốn tạo một kho lưu trữ kỹ thuật số cá nhân.Hệ thống kiểm soát phiên bản hoặc kho lưu trữ mã nguồn mở nào lưu trữ mtime, ctime và atime ban đầu của tệp?

Tôi muốn có thể kiểm tra các tệp kỹ thuật số (vài năm trước đây, một số chưa được tạo) vào lưu trữ đó và lưu trữ chúng cùng với siêu dữ liệu của chúng như ctime, atime và mtime.

Tôi muốn có thể kiểm tra các tệp này từ lưu trữ đó, sửa đổi nội dung của chúng và cam kết thay đổi về lưu trữ, trong khi vẫn giữ nguyên các cam kết trước đó và siêu dữ liệu của chúng.

Tôi muốn lưu trữ là rất đáng tin cậy và an toàn và có thể được sao lưu từ xa.

Tôi muốn có thể kiểm tra tệp trong và ngoài lưu trữ từ các máy tính chạy Linux, Mac OS X 10.5+ hoặc Win XP +.

Tôi muốn có thể kiểm tra tệp trong và ngoài lưu trữ từ máy tính có dung lượng RAM thấp hơn kích thước tệp. Ví dụ. Tôi muốn có thể kiểm tra trong/ra một tập tin 13GB bằng cách sử dụng một máy tính với 2GB RAM.

Tôi nghĩ Subversion có thể thực hiện tất cả điều này, nhưng rõ ràng là it can't. (Ít nhất, nó không thể là một vài năm trước đây và theo như tôi biết nó vẫn không thể, sửa tôi nếu tôi sai.)

Có một VCS tự do hay khả năng tương tự tất cả những thứ này ?

Cảm ơn sự giúp đỡ của bạn.

+0

Dường như trong trường hợp của svn, đó là một vấn đề đang được xem xét cho một tốt 7 năm trở lên và vẫn còn (vẫn còn!) Đang được xem xét nhưng chưa được triển khai. Tin vui là RFC có vẻ hoạt động. Xem http://subversion.tigris.org/issues/show_bug.cgi?id=1256 và http://permalink.gmane.org/gmane.comp.version-control.subversion.devel/117879. Vì vậy, những lựa chọn thay thế? – sampablokuper

Trả lời

0

Tôi nghi ngờ có một vcs thực hiện chính xác những gì bạn muốn. Tôi sẽ không chọn một tính năng như thế này làm tiêu chí chính để chọn một vcs. Tuy nhiên, bằng cách sử dụng svn và git bạn có thể lưu trữ các thuộc tính cùng với cam kết của bạn và cho phép bảo mật không cho phép chỉnh sửa các thuộc tính.

1

Điều bạn muốn có vẻ đạt được tốt hơn với rsync và ảnh chụp nhanh. Bạn có thể tìm hiểu về điều này tại đây: http://rsnapshot.org/

Dù sao, điều này có vẻ như là một câu hỏi phù hợp hơn với máy chủ hoặc siêu người dùng.

0

Git thực sự không thể làm điều đó, hoặc không thể Mercurial, và theo như tôi biết bất kỳ hệ thống SCM hiện đại khác. Lý do là 1) chúng được thiết kế cho mã nguồn và 2) bảo tồn và cập nhật những dấu thời gian siêu dữ liệu tập tin một cách hợp lý khi đối mặt với các nhánh, sáp nhập và các hoạt động SCM khác là không thể. Ngoài ra, tất cả chúng đều có thể đặt thời gian trên các tệp vào thời gian cam kết, đó là hữu ích như mtime cho phần lớn các trường hợp sử dụng. Sử dụng mtimes cũng gây ra rất nhiều churn không cần thiết trong hệ thống SCM (bạn có thể tưởng tượng nếu chúng được lưu trữ tại thời điểm không?) SCMs dựa trên tệp cũ hơn như CVS và thậm chí Visual SourceSafe lưu trữ mtimes, nhưng chúng có rất nhiều điểm yếu khác cho trường hợp sử dụng của bạn chúng không đáng xem xét.

Giải pháp phổ biến được đề xuất cho tất cả các SCM này là tập lệnh móc lưu trữ/cập nhật lưu trữ siêu dữ liệu tệp của bạn (dấu thời gian, quyền, bất kỳ) dưới dạng tệp riêng trong kho hoặc thậm chí là thuộc tính SVN tùy chỉnh. Tập lệnh của bạn cập nhật tệp đó lúc đăng ký và khôi phục siêu dữ liệu khi thanh toán/cập nhật. Sáp nhập trở nên xấu xí bất kể điều gì. Có rất nhiều kịch bản như vậy ra như là mẫu trên internet.

Nếu bạn muốn lưu trữ di động, điều đơn giản nhất để làm có thể chỉ là chữ ký tar + xdelta + SHA1SUM/gpg để "chuỗi" mọi thứ lại với nhau.

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