Setelah 8 tahun mencari saya menemukan SVNFS oleh Marco R. Gazzetta (yang berbeda dari proyek yang lebih tua dengan nama yang sama oleh John Madden [yang mana orang melakukan hal yang berbeda]). SVNFS ini menggunakan svn secara transparan dalam operasi r / w:
Alih-alih membuat sistem file yang melakukan versi sendiri, saya menggunakan alat versi yang ada, subversi, dan menjadikannya transparan. Keuntungannya adalah bahwa sistem file ini tidak mengharuskan Anda untuk mempelajari alat baru, jika Anda tahu subversi
Ini ditulis dalam Python dan menggunakan FUSE:
Sekarang Anda memulai sistem file versi dengan menjalankan skrip terlampir:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
Setelah semuanya baik-baik saja, Anda harus bisa mendapatkan daftar dari kedua direktori dan melihat bahwa isinya sama.
Sekarang, jika Anda membuat (hampir) file apa pun di direktori mana pun, itu juga akan muncul di sisi lain pagar. Perbedaan besar adalah bahwa jika Anda membuat file di direktori myfiles, itu akan secara otomatis ditempatkan di bawah kontrol versi (kebalikannya tidak benar).
Dalam contoh ini SVNFS menggunakan direktori terpisah untuk repo. Meskipun saya belum mengujinya. Untuk kebutuhan saya, saya ingin memiliki repositori tepat di direktori kerja saya.
Saya juga telah menemukan referensi untuk kemampuan versi Reiser4 4 tahun yang lalu:
Lihat Reiser 4. File adalah direktori.
misalnya: diff -u main.C main.C/r/123
Atau untuk mengakses properti
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
Tampaknya akan lebih baik untuk mengikuti model itu, karena sistem file utama sudah menempuh rute itu.
-Paul Querna
Tapi saya belum memeriksanya juga.
Dua tahun lalu saya pergi untuk mencari lebih jauh, menemukan proyek FiST untuk menghasilkan sistem file stackable dan menghubungi prof. Erez Zadok dari Stony Brook University yang merupakan penasihat / mentor untuk proyek yang disebut versi sebelumnya . Mengutip:
http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/
http://www.fsl.cs.sunysb.edu/docs/versionfs-msthesis/versionfs.pdf
memungkinkan pengguna untuk mengelola versi mereka sendiri dengan mudah dan efisien. Versionfs menyediakan fungsionalitas ini dengan overhead tidak lebih dari 4% untuk beban kerja seperti pengguna. Versionfs memungkinkan pengguna untuk memilih versi apa yang disimpan dan bagaimana mereka disimpan melalui kebijakan penyimpanan dan kebijakan penyimpanan, masing-masing. Pengguna dapat memilih pertukaran antara ruang dan kinerja yang paling memenuhi kebutuhan masing-masing: salinan lengkap, salinan terkompresi, atau blok delta. Meskipun pengguna dapat mengontrol versinya, administrator dapat menegakkan nilai minimum dan maksimum, dan memberikan default yang masuk akal kepada pengguna.
Selain itu, melalui penggunaan libversionfs, aplikasi yang tidak dimodifikasi dapat memeriksa, memanipulasi, dan memulihkan versi. Pengguna hanya dapat menjalankan alat yang sudah dikenal untuk mengakses versi file sebelumnya, daripada meminta pengguna untuk mempelajari perintah yang terpisah, atau meminta administrator sistem untuk membuat ulang sistem file. Tanpa libversionfs, versi sebelumnya sepenuhnya tersembunyi dari pengguna.
Akhirnya, Versionfs melampaui copy-on-write sederhana yang digunakan oleh sistem sebelumnya: kami menerapkan copy-on-change. Meskipun pada awalnya kami berharap bahwa perbandingan antara halaman lama dan baru akan terlalu mahal, kami menemukan bahwa peningkatan waktu sistem lebih dari diimbangi dengan berkurangnya I / O dan waktu CPU yang terkait dengan penulisan blok yang tidak berubah. Ketika kebijakan penyimpanan yang lebih mahal digunakan (misalnya, kompresi), copy-on-change bahkan lebih bermanfaat.
Tampaknya sangat menarik bagi saya tetapi menghubungi orang-orang yang bekerja pada proyek tersebut mengungkapkan bahwa threre tidak dikenal sebagai tempat dari kode sumbernya. Profesor sendiri menyatakan melalui pos:
Kode Versionfs sudah sangat tua sekarang, dan hanya berfungsi di kernel 2.4. Jika Anda masih menginginkan versi stackable f / s, maka orang harus menulisnya dari awal - mungkin berdasarkan wrapfs (lihat wrapfs.filesystems.org/).
Jadi tidak ada proyek yang berjalan di sini meskipun konsep sistem file stackable tampaknya sangat bagus untuk saya. Adakah yang mau memulai proyek berdasarkan bungkus , beri tahu saya :)