หลังจาก 8 ปีของการค้นหาฉันพบSVNFSโดยMarco R. Gazzetta (ซึ่งแตกต่างจากโครงการเก่าที่มีชื่อเดียวกันโดยJohn Madden [สิ่งที่ทำสิ่งที่แตกต่างกัน)) SVNFSนี้ใช้svnโปร่งใสในการดำเนินงาน r / w:
แทนที่จะสร้างระบบไฟล์ที่ใช้การกำหนดเวอร์ชันของตนเองฉันใช้เครื่องมือกำหนดเวอร์ชันที่มีอยู่การโค่นล้มและทำให้การใช้งานโปร่งใส ข้อดีคือระบบไฟล์นี้ไม่ต้องการให้คุณเรียนรู้เครื่องมือใหม่หากคุณรู้ว่าการโค่นล้ม
มันเขียนใน Python และใช้ FUSE:
ตอนนี้คุณเริ่มต้นระบบไฟล์การกำหนดเวอร์ชันโดยเรียกใช้สคริปต์ที่แนบมา:
python svnfs.py -o svnroot=/home/marco/svnfiles /home/marco/myfiles
เมื่อทุกอย่างเรียบร้อยแล้วคุณควรจะสามารถรับรายชื่อของทั้งสองไดเรกทอรีและดูว่าเนื้อหาเหมือนกัน
ตอนนี้ถ้าคุณสร้าง (เกือบ) ไฟล์ใด ๆ ในไดเรกทอรีใดไฟล์หนึ่งมันจะปรากฏขึ้นที่อีกด้านหนึ่งของรั้วเช่นกัน ความแตกต่างใหญ่คือถ้าคุณสร้างไฟล์ในไดเรกทอรี myfiles มันจะถูกวางโดยอัตโนมัติภายใต้การควบคุมเวอร์ชัน (ตรงกันข้ามไม่เป็นความจริง)
ในตัวอย่างSVNFSใช้ไดเรกทอรีแยกต่างหากสำหรับ repo แม้ว่าฉันจะไม่ได้ทำการทดสอบ สำหรับความต้องการของฉันฉันต้องการที่จะมีพื้นที่เก็บข้อมูลใน dir ทำงานของฉัน
ฉันยังได้พบการอ้างอิงถึงความสามารถในการกำหนดเวอร์ชันของReiser4 4 ปีที่ผ่านมา:
ดู Reiser 4. ไฟล์คือไดเร็กตอรี่
เช่น: diff -u main.C main.C/r/123
หรือเพื่อเข้าถึงคุณสมบัติ
cat main.C/p/svn-eolstyle
echo "foobar" > main.C/p/my-property
ดูเหมือนว่าจะเป็นการดีที่สุดที่จะติดตามรุ่นนั้นเนื่องจากระบบไฟล์สำคัญกำลังไปตามเส้นทางนั้นแล้ว
-Paul Querna
แต่ฉันยังไม่ได้ตรวจสอบ
สองปีที่แล้วฉันไปค้นหาเพิ่มเติมพบโครงการFiSTสำหรับการสร้างระบบไฟล์แบบซ้อนได้และติดต่อศ. Erez ZadokจากStony Brook Universityซึ่งเป็นที่ปรึกษา / ที่ปรึกษาโครงการที่เรียกว่าversionfsนานมาแล้ว พิเศษ:
http://www.fsl.cs.sunysb.edu/docs/versionfs-fast04/
http://www.fsl.cs.sunysb.edu/docs/versionfs-msthesis/versionfs.pdf
ช่วยให้ผู้ใช้สามารถจัดการเวอร์ชันของตนเองได้อย่างง่ายดายและมีประสิทธิภาพ Versionfs ให้ฟังก์ชันนี้โดยมีค่าใช้จ่ายไม่เกิน 4% สำหรับปริมาณงานที่เหมือนผู้ใช้ทั่วไป Versionfs ช่วยให้ผู้ใช้สามารถเลือกได้ว่าจะเก็บรุ่นใดและวิธีการจัดเก็บผ่านนโยบายการเก็บรักษาและนโยบายการเก็บรักษาตามลำดับ ผู้ใช้สามารถเลือกการแลกเปลี่ยนระหว่างพื้นที่และประสิทธิภาพที่ตรงกับความต้องการของตนเองได้ดีที่สุด: สำเนาเต็ม, สำเนาที่บีบอัดหรือบล็อกเดลตา แม้ว่าผู้ใช้สามารถควบคุมเวอร์ชันของพวกเขา แต่ผู้ดูแลระบบสามารถบังคับใช้ค่าต่ำสุดและสูงสุดและให้ผู้ใช้เริ่มต้นที่เหมาะสม
นอกจากนี้ผ่านการใช้ libversionfs แอปพลิเคชันที่ไม่ได้แก้ไขสามารถตรวจสอบจัดการและกู้คืนเวอร์ชันได้ ผู้ใช้สามารถใช้เครื่องมือที่คุ้นเคยเพื่อเข้าถึงเวอร์ชันไฟล์ก่อนหน้าแทนที่จะต้องการให้ผู้ใช้เรียนรู้คำสั่งแยกต่างหากหรือขอให้ผู้ดูแลระบบทำการติดตั้งระบบไฟล์อีกครั้ง หากไม่มี libversionfs เวอร์ชั่นก่อนหน้าจะถูกซ่อนจากผู้ใช้อย่างสมบูรณ์
ในที่สุด Versionfs เป็นมากกว่าการคัดลอก - เขียน - เรียบง่ายที่ใช้โดยระบบที่ผ่านมา: เราใช้การคัดลอกเมื่อเปลี่ยน แม้ว่าในตอนแรกเราคาดว่าการเปรียบเทียบระหว่างหน้าเก่ากับหน้าใหม่จะแพงเกินไปเราพบว่าเวลาของระบบที่เพิ่มขึ้นนั้นมากกว่าการชดเชยด้วย I / O และเวลา CPU ที่ลดลงซึ่งเกี่ยวข้องกับการเขียนบล็อกที่ไม่เปลี่ยนแปลง เมื่อใช้นโยบายการเก็บข้อมูลที่แพงกว่า (เช่นการบีบอัด) การคัดลอกเมื่อเปลี่ยนจะมีประโยชน์มากกว่า
ดูเหมือนว่าจะน่าสนใจมากสำหรับฉัน แต่การติดต่อกับคนที่ทำงานในโครงการเปิดเผยว่า threre ไม่เป็นที่รู้จักของซอร์สโค้ดของมัน ศาสตราจารย์ระบุไว้ในจดหมาย:
รหัสของ Versionfs เก่ามากและใช้งานได้ในเคอร์เนล 2.4 เท่านั้น หากคุณยังต้องการเวอร์ชั่น f / s ที่วางซ้อนได้คุณจะต้องเขียนตั้งแต่เริ่มต้น - อาจเป็นไปตาม wrapfs (ดูที่ wrapfs.filesystems.org/)
ดังนั้นจึงไม่มีโครงการทำงานที่นี่แม้ว่าแนวคิดของระบบไฟล์แบบเรียงซ้อนได้ดูเหมือนว่าดีมากสำหรับฉัน ทุกคนต้องการที่จะเริ่มโครงการตาม onf wrapfsแจ้งให้ฉันทราบ :)