Sau 8 năm tìm kiếm, tôi đã tìm thấy SVNFS của Marco R. Gazzetta (khác với dự án cũ có cùng tên của John Madden [người nào làm những việc khác nhau]). SVNFS này sử dụng svn trong suốt trong các hoạt động r / w:
Thay vì tạo một hệ thống tập tin có phiên bản riêng, tôi đã sử dụng một công cụ tạo phiên bản hiện có, lật đổ và sử dụng nó trong suốt. Ưu điểm là hệ thống tệp này không yêu cầu bạn phải học một công cụ mới, nếu bạn biết lật đổ
Nó được viết bằng Python và sử dụng FUSE:
Bây giờ bạn bắt đầu hệ thống tập tin phiên bản bằng cách gọi tập lệnh đính kèm:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
Một khi mọi thứ đều ổn, bạn sẽ có thể có được một danh sách của cả hai thư mục và thấy rằng nội dung là như nhau.
Bây giờ, nếu bạn tạo (gần như) bất kỳ tệp nào trong một trong hai thư mục, nó cũng sẽ hiển thị ở phía bên kia của hàng rào. Sự khác biệt lớn là nếu bạn tạo một tệp trong thư mục myfiles, nó sẽ tự động được đặt dưới sự kiểm soát phiên bản (điều ngược lại là không đúng).
Trong ví dụ SVNFS sử dụng thư mục riêng cho repo. Mặc dù tôi chưa thử nó. Đối với nhu cầu của tôi, tôi muốn có kho lưu trữ ngay trong thư mục làm việc của mình.
Tôi cũng đã tìm thấy tài liệu tham khảo về khả năng tạo phiên bản của Reiser4 4 năm trước:
Xem Reiser 4. Tập tin là thư mục.
ví dụ: diff -u main.C main.C/r/123
Hoặc để truy cập thuộc tính
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
Có vẻ như tốt nhất là theo mô hình đó, vì một hệ thống tập tin chính đã đi theo lộ trình đó.
-Paul Querna
Nhưng tôi cũng không kiểm tra nó.
Hai năm trước tôi đã đi tìm kiếm thêm, tìm thấy dự án FiST để tạo các hệ thống tệp có thể xếp chồng lên nhau và liên hệ với prof. Erez Zadok của Đại học Stony Brook , người từng là cố vấn / cố vấn cho dự án được gọi là phiên bản từ lâu. Trích dẫn:
http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/
http://www.fsl.cs.sunysb.edu/docs/versionfs-mstribution/versionfs.pdf
cho phép người dùng quản lý các phiên bản của riêng họ một cách dễ dàng và hiệu quả. Versionfs cung cấp chức năng này với không quá 4% chi phí cho khối lượng công việc giống như người dùng thông thường. Versionfs cho phép người dùng chọn cả hai phiên bản được lưu giữ và cách chúng được lưu trữ thông qua các chính sách lưu giữ và chính sách lưu trữ, tương ứng. Người dùng có thể chọn sự đánh đổi giữa không gian và hiệu suất đáp ứng tốt nhất nhu cầu cá nhân của họ: bản sao đầy đủ, bản sao nén hoặc khối deltas. Mặc dù người dùng có thể kiểm soát các phiên bản của họ, quản trị viên có thể thực thi các giá trị tối thiểu và tối đa và cung cấp cho người dùng các mặc định hợp lý.
Ngoài ra, thông qua việc sử dụng libversionfs, các ứng dụng chưa sửa đổi có thể kiểm tra, thao tác và khôi phục các phiên bản. Người dùng có thể chỉ cần chạy các công cụ quen thuộc để truy cập các phiên bản tệp trước đó, thay vì yêu cầu người dùng tìm hiểu các lệnh riêng biệt hoặc yêu cầu quản trị viên hệ thống truy xuất lại hệ thống tệp. Không có libversionfs, các phiên bản trước hoàn toàn bị ẩn khỏi người dùng.
Cuối cùng, Versionfs vượt xa bản sao chép đơn giản được sử dụng bởi các hệ thống trong quá khứ: chúng tôi thực hiện sao chép khi thay đổi. Mặc dù lúc đầu, chúng tôi dự đoán rằng việc so sánh giữa các trang cũ và mới sẽ quá đắt, chúng tôi thấy rằng sự gia tăng thời gian hệ thống được bù đắp nhiều hơn bởi thời gian I / O và CPU giảm đi kèm với việc viết các khối không thay đổi. Khi các chính sách lưu trữ đắt tiền hơn được sử dụng (ví dụ: nén), sao chép khi thay đổi thậm chí còn hữu ích hơn.
Nó có vẻ rất thú vị đối với tôi nhưng liên hệ với những người làm việc trong dự án tiết lộ rằng ngai vàng không phải là nơi được biết đến của mã nguồn. Giáo sư tự nêu trong thư:
Mã của Versionfs hiện đã rất cũ và nó chỉ hoạt động trong kernel 2.4. Nếu bạn vẫn muốn một f / s phiên bản có thể xếp chồng lên nhau, thì người ta sẽ phải viết nó từ đầu - có thể dựa trên Wrafs (xem Wrafs.filesystems.org/).
Vì vậy, không có dự án làm việc ở đây mặc dù khái niệm về các hệ thống tập tin có thể xếp chồng lên nhau có vẻ rất tốt với tôi. Có ai muốn bắt đầu dự án dựa trên các gói của onf không , thông báo cho tôi nhé :)