8 yıl sonra arama buldum SVNFS tarafından Marco R. Gazzetta (aynı isimde eski projesinden farklı olan John Madden [biri farklı şeyler yapar]). Bu SVNFS kullanımları svn r / işlemleri ağırlık şeffaf:
Kendi sürümlemesini yapan bir dosya sistemi oluşturmak yerine, var olan bir sürümleme aracını, alt sürümünü kullandım ve kullanımını şeffaf hale getirdim. Avantajı, alt dosya biliyorsanız, bu dosya sisteminin yeni bir araç öğrenmenizi gerektirmemesidir
Python ile yazılmış ve FUSE kullanıyor:
Şimdi, ekli komut dosyasını çağırarak sürüm dosya sistemini başlatın:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
Her şey yolunda olduğunda, her iki dizinin bir listesini alabilmeniz ve içeriğin aynı olduğunu görebilmeniz gerekir.
Şimdi, herhangi bir dizinde (neredeyse) herhangi bir dosya oluşturursanız, çitin diğer tarafında da görünecektir. En büyük fark, myfiles dizininde bir dosya oluşturduğunuzda, dosyanın otomatik olarak sürüm kontrolü altına yerleştirilmesidir (tersi doğru değildir).
Örnekte SVNFS , repo için ayrı bir dizin kullanır. Test etmeme rağmen. İhtiyaçlarım için çalışma bölümümde depoya sahip olmak istiyorum.
Ayrıca 4 yıl önce Reiser4'ün sürüm yeteneklerine de başvurdum :
Bkz. Reiser 4. Dosyalar dizinlerdir.
Örneğin: diff -u main.C main.C/r/123
Veya mülklere erişmek için
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
Bu modeli takip etmek en iyisi gibi görünüyor, çünkü büyük bir dosya sistemi zaten bu yola gidiyor.
Paul Querna
Ama ben de kontrol etmedim.
İki yıl önce daha fazla araştırmaya gittim, istiflenebilir dosya sistemleri oluşturmak için FiST projesi buldum ve prof. Erez Zadok ait Stony Brook Üniversitesi danışmanı / Mentor Proje denilen içindi versionfs uzun zaman önce. Alıntı yapmak:
http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/
http://www.fsl.cs.sunysb.edu/docs/versionfs-msthesis/versionfs.pdf
kullanıcıların kendi sürümlerini kolay ve verimli bir şekilde yönetmelerini sağlar. Versionfs, bu işlevselliği tipik kullanıcı benzeri iş yükleri için% 4'ten fazla ek yük olmadan sağlar. Versionfs, kullanıcıların hem tutma sürümleri hem de saklama politikaları aracılığıyla sırasıyla hangi sürümlerin saklanacağını ve nasıl saklanacağını seçmelerine olanak tanır. Kullanıcılar, kendi ihtiyaçlarını en iyi karşılayan alan ve performans arasındaki dengeyi seçebilir: tam kopyalar, sıkıştırılmış kopyalar veya deltaları engelle. Kullanıcılar sürümlerini kontrol edebilse de, yönetici minimum ve maksimum değerleri zorlayabilir ve kullanıcılara mantıklı varsayılan değerler sunabilir.
Ayrıca, libversionfs kullanarak, değiştirilmemiş uygulamalar sürümleri inceleyebilir, değiştirebilir ve kurtarabilir. Kullanıcılar, kullanıcılardan ayrı komutlar öğrenmelerini istemek yerine önceki dosya sürümlerine erişmek için tanıdık araçları çalıştırabilir veya sistem yöneticisinden bir dosya sistemini yeniden yüklemelerini isteyebilir. Libversionfs olmadan, önceki sürümler kullanıcılardan tamamen gizlenir.
Son olarak, Versionfs, geçmiş sistemler tarafından kullanılan basit bir yazarak kopyalamanın ötesine geçer: Değişiklik üzerine kopyalamayı uygularız. İlk başta eski ve yeni sayfalar arasındaki karşılaştırmanın çok pahalı olmasını beklememize rağmen, sistem süresindeki artışın değişmemiş blok yazma ile ilişkili azaltılmış G / Ç ve CPU süresinden daha fazla dengelendiğini bulduk. Daha pahalı depolama ilkeleri kullanıldığında (örn. Sıkıştırma), değişiklik üzerine kopyalama daha da yararlıdır.
Benim için çok ilginç görünüyordu, ancak projede çalışan adamlarla iletişime geçmek, kaynak kodunun bilinen bir yeri olmadığını ortaya çıkardı. Profesör postada şöyle dedi:
Versionfs kodu artık çok eskidir ve yalnızca çekirdek 2.4'te çalışmıştır. Hala istiflenebilir bir sürüm f / s istiyorsanız, bunu sıfırdan yazmak gerekir - muhtemelen wrapflere dayanır (bkz. Wrapfs.filesystems.org/).
İstiflenebilir dosya sistemleri kavramı benim için çok hoş görünse de burada çalışan bir proje yok. Herkes projeye başlamak istiyorum onf wrapfs , bana haber verin :)