

# VFS-FUSE
A versioned file system based on FUSE and Git, written in Python.
## Description
VFS-FUSE is a file system that tracks every version of files, just like Git. It uses FUSE (Filesystem in Userspace) to create a user-space file system, and uses Git to store and manage file versions.
## Requirements
- Python 3.7 or later
## Installation
### From PyPI
```bash
pip install vfsfusepy
```
### From Source
1. Clone the repository:
```bash
git clone https://github.com/nero19960329/VFS-FUSE.git
```
2. Install dependencies:
```bash
pip install -r requirements.txt
```
## Usage
To use VFS-FUSE, you need to specify the directory of the Git repository and the mount point of the file system:
```bash
vfs-fuse /path/to/git_dir /path/to/mount_point # if installed from PyPI
python vfsfusepy/__main__.py /path/to/git_dir /path/to/mount_point # if installed from source
```
Where:
- `git_dir` is the directory of the Git repository that will be used to store and manage file versions.
- `mount_point` is the directory where the VFS-FUSE file system will be mounted.
Please ensure you have write permissions on both directories.
## Example
Here is an example of how to use VFS-FUSE:
```bash
# Mount the file system
mkdir /data/vfs-root
mkdir /data/vfs-mount
vfs-fuse /data/vfs-root /data/vfs-mount
# Go to the mount point
cd /data/vfs-mount
# Create a new file
echo "Hello, World!" > test.txt
# View the file
cat test.txt
# Rename the file
mv test.txt test2.txt
# Remove the file
rm test2.txt
# Create a new directory
mkdir test_dir
# Rename the directory
mv test_dir test_dir2
# Remove the directory
rm -rf test_dir2
# View the commit history
git log
```
In this example, when you write to test.txt, the file system automatically commits the changes to the Git repository located at `/data/vfs-root`. You can then use standard Git commands to view the commit history and checkout previous versions of the file.
## FAQ
### Why not use Git directly?
`VFS-FUSE` offers automatic git commits for all file changes, creating a real-time version control system. It simplifies the use of git, allowing operations via a standard file system interface. Essentially, it's git made easy for everyday file operations.
### How to solve `raise EnvironmentError('Unable to find libfuse')`?
You need to install the FUSE library. On Ubuntu, you can install it with the following command:
```bash
sudo apt-get update && sudo apt-get install fuse
```
## Contributing
We welcome contributions to this repository! If you would like to contribute code, please take a moment to read our [contribution guidelines](https://github.com/nero19960329/VFS-FUSE/blob/main/CONTRIBUTING.md).
By following these guidelines, you can ensure that your contributions are in line with our coding standards and testing procedures.
We appreciate your interest and look forward to your contributions!
## License
This project is licensed under the terms of the MIT license.
Raw data
{
"_id": null,
"home_page": "https://github.com/nero19960329/VFS-FUSE",
"name": "vfsfusepy",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "",
"author": "Zhao Wang",
"author_email": "wangzhao2013tsinghua@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/57/be/fe32ccfd20dc70363b721b21c6a26d7824db4f52805fd79758f5acf57f31/vfsfusepy-0.4.1.tar.gz",
"platform": null,
"description": "\n\n\n# VFS-FUSE\n\nA versioned file system based on FUSE and Git, written in Python.\n\n## Description\n\nVFS-FUSE is a file system that tracks every version of files, just like Git. It uses FUSE (Filesystem in Userspace) to create a user-space file system, and uses Git to store and manage file versions.\n\n## Requirements\n\n- Python 3.7 or later\n\n## Installation\n\n### From PyPI\n\n```bash\npip install vfsfusepy\n```\n\n### From Source\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/nero19960329/VFS-FUSE.git\n```\n\n2. Install dependencies:\n\n```bash\npip install -r requirements.txt\n```\n\n## Usage\n\nTo use VFS-FUSE, you need to specify the directory of the Git repository and the mount point of the file system:\n\n```bash\nvfs-fuse /path/to/git_dir /path/to/mount_point # if installed from PyPI\n\npython vfsfusepy/__main__.py /path/to/git_dir /path/to/mount_point # if installed from source\n```\n\nWhere:\n\n- `git_dir` is the directory of the Git repository that will be used to store and manage file versions.\n- `mount_point` is the directory where the VFS-FUSE file system will be mounted.\n\nPlease ensure you have write permissions on both directories.\n\n## Example\n\nHere is an example of how to use VFS-FUSE:\n\n```bash\n# Mount the file system\nmkdir /data/vfs-root\nmkdir /data/vfs-mount\nvfs-fuse /data/vfs-root /data/vfs-mount\n\n# Go to the mount point\ncd /data/vfs-mount\n\n# Create a new file\necho \"Hello, World!\" > test.txt\n\n# View the file\ncat test.txt\n\n# Rename the file\nmv test.txt test2.txt\n\n# Remove the file\nrm test2.txt\n\n# Create a new directory\nmkdir test_dir\n\n# Rename the directory\nmv test_dir test_dir2\n\n# Remove the directory\nrm -rf test_dir2\n\n# View the commit history\ngit log\n```\n\nIn this example, when you write to test.txt, the file system automatically commits the changes to the Git repository located at `/data/vfs-root`. You can then use standard Git commands to view the commit history and checkout previous versions of the file.\n\n## FAQ\n\n### Why not use Git directly?\n\n`VFS-FUSE` offers automatic git commits for all file changes, creating a real-time version control system. It simplifies the use of git, allowing operations via a standard file system interface. Essentially, it's git made easy for everyday file operations.\n\n### How to solve `raise EnvironmentError('Unable to find libfuse')`?\n\nYou need to install the FUSE library. On Ubuntu, you can install it with the following command:\n\n```bash\nsudo apt-get update && sudo apt-get install fuse\n```\n\n## Contributing\nWe welcome contributions to this repository! If you would like to contribute code, please take a moment to read our [contribution guidelines](https://github.com/nero19960329/VFS-FUSE/blob/main/CONTRIBUTING.md).\n\nBy following these guidelines, you can ensure that your contributions are in line with our coding standards and testing procedures.\n\nWe appreciate your interest and look forward to your contributions!\n\n## License\n\nThis project is licensed under the terms of the MIT license.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A versioned file system based on FUSE and Git.",
"version": "0.4.1",
"project_urls": {
"Homepage": "https://github.com/nero19960329/VFS-FUSE"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "36b72e49c8d5b239cb676b7ca18755eccb51e0a0e639bc4ef066807ace8bde65",
"md5": "df475b07be0809c20557a624b023d0b3",
"sha256": "74c88daab26190c2986aa319441dc5761ebc48c9e0545b3092b7bc910cf691c7"
},
"downloads": -1,
"filename": "vfsfusepy-0.4.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "df475b07be0809c20557a624b023d0b3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 7188,
"upload_time": "2023-07-10T10:32:45",
"upload_time_iso_8601": "2023-07-10T10:32:45.305853Z",
"url": "https://files.pythonhosted.org/packages/36/b7/2e49c8d5b239cb676b7ca18755eccb51e0a0e639bc4ef066807ace8bde65/vfsfusepy-0.4.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "57befe32ccfd20dc70363b721b21c6a26d7824db4f52805fd79758f5acf57f31",
"md5": "a3d86de60cbbfc251cdd997975502dae",
"sha256": "7d34e7077eb85eff5a80c2af9e06fc9f80ac6b5954c865c2064392769b714bfd"
},
"downloads": -1,
"filename": "vfsfusepy-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "a3d86de60cbbfc251cdd997975502dae",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 7085,
"upload_time": "2023-07-10T10:32:46",
"upload_time_iso_8601": "2023-07-10T10:32:46.840587Z",
"url": "https://files.pythonhosted.org/packages/57/be/fe32ccfd20dc70363b721b21c6a26d7824db4f52805fd79758f5acf57f31/vfsfusepy-0.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-10 10:32:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nero19960329",
"github_project": "VFS-FUSE",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "GitPython",
"specs": []
},
{
"name": "argparse",
"specs": []
},
{
"name": "loguru",
"specs": []
},
{
"name": "fusepy",
"specs": []
}
],
"lcname": "vfsfusepy"
}