vfsfusepy


Namevfsfusepy JSON
Version 0.4.1 PyPI version JSON
download
home_pagehttps://github.com/nero19960329/VFS-FUSE
SummaryA versioned file system based on FUSE and Git.
upload_time2023-07-10 10:32:46
maintainer
docs_urlNone
authorZhao Wang
requires_python>=3.7
licenseMIT
keywords
VCS
bugtrack_url
requirements GitPython argparse loguru fusepy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![lint workflow](https://github.com/nero19960329/vfs-fuse/actions/workflows/lint.yml/badge.svg)
![integration tests workflow](https://github.com/nero19960329/vfs-fuse/actions/workflows/integration_tests.yml/badge.svg)

# 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": "![lint workflow](https://github.com/nero19960329/vfs-fuse/actions/workflows/lint.yml/badge.svg)\n![integration tests workflow](https://github.com/nero19960329/vfs-fuse/actions/workflows/integration_tests.yml/badge.svg)\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"
}
        
Elapsed time: 0.10154s