# Git Cloud Large File Storage
Git LFS for large files that need cloud storage.
## Setup
### AWS S3
1. [Install AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
2. Create an [S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) and
[AWS access keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html#gs-get-keys).
3. Put the access keys in `~/.aws/credentials` as described [here](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).
Note, the profile used by gclfs is `gclfs`. This can be overridden in `gclfs.config`. See example below.
4. Add bucket name to `gclfs.config`.
Example credentials file:
```ini
# ~/.aws/credentials
[default]
aws_access_key_id=AKIAASSFODNN7EXAMPLE
aws_secret_access_key=wJalrP0dnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[gclfs]
aws_access_key_id=BTIAIOSFODNN7EXAMPLE
aws_secret_access_key=xyalrXUghdEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```
Example config file with overridden profile name:
```ini
# gclfs.config
[s3]
bucket=my-awesome-bucket
profile=default
```
## Usage
### Tracking
To track files with a specific extension that will be uploaded to cloud storage, run `gcl track *.<file_extension>`
For example, to track wav files:
`gcl track "*.wav"`
This adds the extension to `.gitattributes`. When pushing to remote repo, this will sync all wav files to S3.
**Important**: To keep the large files from getting committed to the git repo, you still have to add them to
`.gitignore`.
### Commands
Your normal git commands work here and a remote git repo should be setup as usual
(with `git init` and `git remote add`, etc.).
## Example
`gcl init` (initialize repo)
`gcl track "*.wav"` (track wav files)
`gcl add .` (add files to commit)
`gcl status` (get repo status)
`gcl commit -m "init commit"` (commit changes)
`gcl remote add origin git@github.com:me/my-awesome-project` (add remote repo)
`gcl push` (push git repo and sync files with cloud)
`gcl fetch` (fetch changes)
`gcl pull` (pull remote changes and sync files with cloud)
## Limitations
Currently, only AWS S3 is supported.
## License
See the [LICENSE](LICENSE.md) file for license rights and limitations (MIT).
Raw data
{
"_id": null,
"home_page": "https://github.com/mjlabe/gclfs",
"name": "gclfs",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6, <4",
"maintainer_email": "",
"keywords": "GIT,LFS,CLOUD,STORAGE,AWS,S3",
"author": "Marc LaBelle",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/60/a9/9546e6cbce5f3e8665a8580dad8a7b5f026b54238a078ee34733b445b189/gclfs-0.1.1.tar.gz",
"platform": null,
"description": "# Git Cloud Large File Storage\n\nGit LFS for large files that need cloud storage.\n\n## Setup\n\n### AWS S3\n\n1. [Install AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).\n2. Create an [S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) and \n[AWS access keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html#gs-get-keys).\n3. Put the access keys in `~/.aws/credentials` as described [here](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). \nNote, the profile used by gclfs is `gclfs`. This can be overridden in `gclfs.config`. See example below.\n4. Add bucket name to `gclfs.config`.\n\nExample credentials file:\n\n```ini\n# ~/.aws/credentials\n[default]\naws_access_key_id=AKIAASSFODNN7EXAMPLE\naws_secret_access_key=wJalrP0dnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\n\n[gclfs]\naws_access_key_id=BTIAIOSFODNN7EXAMPLE\naws_secret_access_key=xyalrXUghdEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\n```\n\nExample config file with overridden profile name:\n```ini\n# gclfs.config\n[s3]\nbucket=my-awesome-bucket\nprofile=default\n```\n\n## Usage\n\n### Tracking\n\nTo track files with a specific extension that will be uploaded to cloud storage, run `gcl track *.<file_extension>`\n\nFor example, to track wav files:\n\n`gcl track \"*.wav\"`\n\nThis adds the extension to `.gitattributes`. When pushing to remote repo, this will sync all wav files to S3.\n\n**Important**: To keep the large files from getting committed to the git repo, you still have to add them to \n`.gitignore`.\n\n### Commands\n\nYour normal git commands work here and a remote git repo should be setup as usual \n(with `git init` and `git remote add`, etc.).\n\n## Example\n\n`gcl init` (initialize repo)\n\n`gcl track \"*.wav\"` (track wav files)\n\n`gcl add .` (add files to commit)\n\n`gcl status` (get repo status)\n\n`gcl commit -m \"init commit\"` (commit changes)\n\n`gcl remote add origin git@github.com:me/my-awesome-project` (add remote repo)\n\n`gcl push` (push git repo and sync files with cloud)\n\n`gcl fetch` (fetch changes)\n\n`gcl pull` (pull remote changes and sync files with cloud)\n\n## Limitations\n\nCurrently, only AWS S3 is supported.\n\n## License\n\nSee the [LICENSE](LICENSE.md) file for license rights and limitations (MIT).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Git LFS for large files that need cloud storage.",
"version": "0.1.1",
"split_keywords": [
"git",
"lfs",
"cloud",
"storage",
"aws",
"s3"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5e3582252c0806ac30398dfd6b1b446d907180d4f79cce48366488d80d2ba515",
"md5": "270be043cf48685c9443ff2467a03fda",
"sha256": "20e0b5ecc24483fdbb31de427fe703207c43df1279ef0af4a5fe8a6f2984ba10"
},
"downloads": -1,
"filename": "gclfs-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "270be043cf48685c9443ff2467a03fda",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6, <4",
"size": 7193,
"upload_time": "2023-03-27T23:24:02",
"upload_time_iso_8601": "2023-03-27T23:24:02.734011Z",
"url": "https://files.pythonhosted.org/packages/5e/35/82252c0806ac30398dfd6b1b446d907180d4f79cce48366488d80d2ba515/gclfs-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "60a99546e6cbce5f3e8665a8580dad8a7b5f026b54238a078ee34733b445b189",
"md5": "d975b6f8be0e68aededbd4c824046ebf",
"sha256": "c3eb8f0657e1a3b656fc35df3378b4e37528675e90d938162fb66ffd147cf403"
},
"downloads": -1,
"filename": "gclfs-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "d975b6f8be0e68aededbd4c824046ebf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6, <4",
"size": 5704,
"upload_time": "2023-03-27T23:24:04",
"upload_time_iso_8601": "2023-03-27T23:24:04.413298Z",
"url": "https://files.pythonhosted.org/packages/60/a9/9546e6cbce5f3e8665a8580dad8a7b5f026b54238a078ee34733b445b189/gclfs-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-27 23:24:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "mjlabe",
"github_project": "gclfs",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "gclfs"
}