{ "info": { "author": "Silvio Ankermann", "author_email": "silvio@booq.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Libraries" ], "description": "# git-annex special remote for GoogleDrive\n\ngit-annex-remote-googledrive adds direct and fast support for Google Drive to git-annex and comes with some awesome new features.\n\n## Features\n\n* [exporttree remotes](https://git-annex.branchable.com/git-annex-export)\n* storing the credentials within the repository\n* using different Google accounts simultaniously (even within the same repository)\n* ... a lot more to come, see [Issues](https://github.com/Lykos153/git-annex-remote-googledrive/issues)\n\n## Installation\n`pip3 install git-annex-remote-googledrive`\n\nFor Arch Linux, there is a package available in the [AUR](https://aur.archlinux.org/packages/git-annex-remote-googledrive)\n\n## Usage\n\n1. Create a git-annex repository ([walkthrough](https://git-annex.branchable.com/walkthrough/))\n2. In the repository, run `git-annex-remote-googledrive setup` and follow the instructions to authenticate with your Google account.\n3. Add a remote for Google Drive. This example:\n\n * Adds a git-annex remote called `google`\n * Uses 50MiB chunks\n * Encrypts all chunks prior to uploading and stores the key within the annex repository\n * Stores your files in a folder/prefix called `git-annex`:\n\n```\ngit annex initremote google type=external externaltype=googledrive prefix=git-annex chunk=50MiB encryption=shared mac=HMACSHA512\n```\nThe initremote command calls out to GPG and can hang if a machine has insufficient entropy. To debug issues, use the `--debug` flag, i.e. `git-annex initremote --debug`.\n\n### Options\nOptions specific to git-annex-remote-googledrive\n* `prefix` - The path to the folder that will be used for the remote. If it doesn't exist, it will be created.\n* `root_id` - Instead of the path, you can specify the ID of a folder. The folder must already exist. This will make it independent from the path and it will always be found by git-annex, no matter where you move it. Can also be used to access shared folders which you haven't added to \"My Drive\".\n* `token` - Path to the file in which the credentials were stored by `git-annex-remote-googledrive setup`. Default: token.json\n* `keep_token` - Set to `yes` if you would like to keep the token file. Otherwise it's removed during initremote. Default: no\n\nGeneral git-annex options\n* `encryption` - One of \"none\", \"hybrid\", \"shared\", or \"pubkey\". See [encryption](https://git-annex.branchable.com/encryption/).\n* `keyid` - Specifies the gpg key to use for encryption.\n* `mac` - The MAC algorithm. See [encryption](https://git-annex.branchable.com/encryption/).\n* `exporttree` - Set to `yes` to make this special remote usable by git-annex-export. It will not be usable as a general-purpose special remote.\n* `chunk` - Enables [chunking](https://git-annex.branchable.com/chunking) when storing large files.\n\n## Using an existing remote (note on repository layout)\n\nIf you're switching from git-annex-remote-rclone or git-annex-remote-gdrive and already using the `nodir` structure, \nit's as simple as typing `git annex enableremote externaltype=googledrive`. If you were using a different structure, you will be notified to run `git-annex-remote-googledrive migrate ` in order to migrate your remote to a `nodir` structure.\n\nIf you have a huge remote and the migration takes very long, you can temporarily use the [bash based git-annex-remote-gdrive](https://github.com/Lykos153/git-annex-remote-gdrive) which can access the files during migration. I might add this functionality to this application as well ([#25](https://github.com/Lykos153/git-annex-remote-googledrive/issues/25)). \n\nI decided not to support other layouts anymore as there is really no reason to have subfolders. Google Drive requires us to traverse the whole path on each file operation, which results in a noticeable performance loss (especially during upload of chunked files). On the other hand, it's perfectly fine to have thousands of files in one Google Drive folder as it doesn't even use a folder structure internally.\n\n## Choosing a Chunk Size\n\nChoose your chunk size based on your needs. By using a chunk size below the maximum file size supported by\nyour cloud storage provider for uploads and downloads, you won't need to worry about running into issues with file size.\nSmaller chunk sizes: leak less information about the size of file size of files in your repository, require less ram,\nand require less data to be re-transmitted when network connectivity is interrupted. Larger chunks require less round\ntrips to and from your cloud provider and may be faster. Additional discussion about chunk size can be found\n[here](https://git-annex.branchable.com/chunking/) and [here](https://github.com/DanielDent/git-annex-remote-rclone/issues/1)\n\n## Issues, Contributing\n\nIf you run into any problems, please check for issues on [GitHub](https://github.com/Lykos153/git-annex-remote-gdrive/issues).\nPlease submit a pull request or create a new issue for problems or potential improvements.\n\n## License\n\nCopyright 2017 Silvio Ankermann. Licensed under the GPLv3.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Lykos153/git-annex-remote-googledrive", "keywords": "git-annex remote googledrive", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "git-annex-remote-googledrive", "package_url": "https://pypi.org/project/git-annex-remote-googledrive/", "platform": "", "project_url": "https://pypi.org/project/git-annex-remote-googledrive/", "project_urls": { "Homepage": "https://github.com/Lykos153/git-annex-remote-googledrive" }, "release_url": "https://pypi.org/project/git-annex-remote-googledrive/0.11.1/", "requires_dist": [ "annexremote", "pydrive", "tenacity" ], "requires_python": "", "summary": "git annex special remote for Google Drive", "version": "0.11.1" }, "last_serial": 4120219, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "a796d99b1eba9840ec1c9b0bdce563a7", "sha256": "b41c9732eb2e2fdf8a007fd15ee77b4184297f8087e7e1fc1b6a54e44183d833" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a796d99b1eba9840ec1c9b0bdce563a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5780, "upload_time": "2018-03-15T16:36:04", "url": "https://files.pythonhosted.org/packages/73/f4/984e3afaa14158d3e492dec0bc9fb06765b7694fee407fec30fb1ecc9aad/git_annex_remote_googledrive-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "768ea06b2a0574762b9e8feb2ae5faa5", "sha256": "47946d2f5177c6a77dd32f5e19c2fd7bec8372f5c37916ddcd5cd5d997919199" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.10.0.tar.gz", "has_sig": false, "md5_digest": "768ea06b2a0574762b9e8feb2ae5faa5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5542, "upload_time": "2018-03-15T16:36:06", "url": "https://files.pythonhosted.org/packages/8f/82/27c9a1b1f1e76b6ee5889019db5ca9af0be289c4c6c6a4b4201a95a79f6c/git-annex-remote-googledrive-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "f33d2c4cb204bb5a477561a4ca9c25b5", "sha256": "e9a1a9455edcf1bb5ee838d11086102b17c8a69271107bee4e66b5d3b431b3b5" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.10.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f33d2c4cb204bb5a477561a4ca9c25b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6249, "upload_time": "2018-03-20T14:02:22", "url": "https://files.pythonhosted.org/packages/f5/93/f081242d2a9f330364c092f754a1f3e4148b54e73c374f2d3da871083126/git_annex_remote_googledrive-0.10.1-py3-none-any.whl" } ], "0.10.1.post1": [ { "comment_text": "", "digests": { "md5": "ab5489417fd821277f6f8057c8fd9437", "sha256": "83e26b5abcfbb647aa44a49240bf2fe8e85936d28d835da40c26afefd825115b" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.10.1.post1.tar.gz", "has_sig": false, "md5_digest": "ab5489417fd821277f6f8057c8fd9437", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24632, "upload_time": "2018-03-20T14:25:54", "url": "https://files.pythonhosted.org/packages/cd/fb/7121094ab766045e794f00f63b816621e1874754c2a5df15c8c6b9bf15e9/git-annex-remote-googledrive-0.10.1.post1.tar.gz" } ], "0.10.1.post2": [ { "comment_text": "", "digests": { "md5": "a5ea900b2e042afc5dbf5b3ae1c7fad1", "sha256": "c53662140015e5078423f72c2b781ad68aae3924faa3c2f9b84ca630141ccc1a" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.10.1.post2.tar.gz", "has_sig": false, "md5_digest": "a5ea900b2e042afc5dbf5b3ae1c7fad1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24631, "upload_time": "2018-03-20T14:38:41", "url": "https://files.pythonhosted.org/packages/9b/6e/6fecfd503c52071ed47ef74d8801683a106b339b547e7f205b707ee91555/git-annex-remote-googledrive-0.10.1.post2.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "2ae85f03e8ea8184091a4450b3915420", "sha256": "55640f1677c41ccb54fb60cfcdfb06affe99808e41f7c65b781f0df66dc62763" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.10.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2ae85f03e8ea8184091a4450b3915420", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9447, "upload_time": "2018-03-21T12:59:11", "url": "https://files.pythonhosted.org/packages/d4/cc/bf5a36ef4a2e6dac8375aab481d03862ee56b2958b37723f2569ef1d9285/git_annex_remote_googledrive-0.10.2-py3-none-any.whl" } ], "0.10.4": [ { "comment_text": "", "digests": { "md5": "c760031970ac5d3c1b4366318c984304", "sha256": "a1dfb8f48d995e9f0d39ed44ba64d0a4d832f8b2e86d80aabaa687127ac14a64" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.10.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c760031970ac5d3c1b4366318c984304", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6743, "upload_time": "2018-04-20T13:42:34", "url": "https://files.pythonhosted.org/packages/f8/ca/c926817874af0b2148cdfcbe7c0bf9302107789e5d1eae847a2f7164c304/git_annex_remote_googledrive-0.10.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2e02bdaa6eda22ef3effa34dc3d991a", "sha256": "12bf06a8cb74d2900e671e8564790d8f1b72746fe6b7520d8089b16d94627297" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.10.4.tar.gz", "has_sig": false, "md5_digest": "b2e02bdaa6eda22ef3effa34dc3d991a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24203, "upload_time": "2018-04-20T13:42:36", "url": "https://files.pythonhosted.org/packages/42/8a/0c0c4b48709015b4f230d5f4f73270b81911efd1c3cee3249ba1e98d02cf/git-annex-remote-googledrive-0.10.4.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "51291e26326254684a47a4ede3376d5c", "sha256": "99761a921cb4f71560b3fa0314786ccb4e7f799acd57bda72d163603506d3d22" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "51291e26326254684a47a4ede3376d5c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8978, "upload_time": "2018-07-31T12:28:41", "url": "https://files.pythonhosted.org/packages/a7/4f/5626e5600ff5b7192267d49ac30d38f2a5ee2fb507bbb1e66ad5864ac9d8/git_annex_remote_googledrive-0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c9bbe3eb36aa9a77a3505906815b081", "sha256": "df8a6ffc74d1e909b13fde92c3773aabae0c30550ef5d3463748cd91201ad19b" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.11.tar.gz", "has_sig": false, "md5_digest": "6c9bbe3eb36aa9a77a3505906815b081", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26876, "upload_time": "2018-07-31T12:28:42", "url": "https://files.pythonhosted.org/packages/04/12/e0fe4f69687dc0b2747cf6a2916f43f554e156bbe4467fdd8b5a90d4371e/git-annex-remote-googledrive-0.11.tar.gz" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "a363d8d3a6e27118e58a4cb3a6054618", "sha256": "727157440f5ab2d4816e2aab730e8c20bffbb7be226d3f13b9e30834de59a665" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.11.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a363d8d3a6e27118e58a4cb3a6054618", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9000, "upload_time": "2018-07-31T13:23:08", "url": "https://files.pythonhosted.org/packages/01/96/16b9e3532adc1e0e586de87f818294b0af32fe5f4fd60b411fe1b67039f0/git_annex_remote_googledrive-0.11.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fe62b902631f036ac8b2cb7f196841e", "sha256": "8d3edcd9cbcf7c7f5617eaacd14f275ed6b5cbafd3e66f4f3a0f75d86b675eed" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.11.1.tar.gz", "has_sig": false, "md5_digest": "6fe62b902631f036ac8b2cb7f196841e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26923, "upload_time": "2018-07-31T13:23:09", "url": "https://files.pythonhosted.org/packages/c5/c3/965d07a559251edabe5c4d4d0f014eb8188999e33b31f4fc3a17837cbcd4/git-annex-remote-googledrive-0.11.1.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "3056eb63ddc056471c1d5d8c7830f779", "sha256": "c7fa8de60e2dd38637510a7b63f6fd6064e31e71e39a9f08ffe549222741c325" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "3056eb63ddc056471c1d5d8c7830f779", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5676, "upload_time": "2018-03-10T20:12:45", "url": "https://files.pythonhosted.org/packages/f1/79/ea28a020a3eac565a8c186d4e28024d9dad5586faa17e9baeda1c307d182/git_annex_remote_googledrive-0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47850f93997e9ef67b3a735562c274c7", "sha256": "4ebabd7ed31754d4f63e9383b984610d1adf4b12b7403ec15a3bb9496a7c4402" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.9.tar.gz", "has_sig": false, "md5_digest": "47850f93997e9ef67b3a735562c274c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5506, "upload_time": "2018-03-10T20:12:47", "url": "https://files.pythonhosted.org/packages/15/f5/592e71a9a2aaedf2f22dac66173b2eb972aa87c4c6cfe1bb23033632975c/git-annex-remote-googledrive-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "9bdab201e2710f1eb6c42114dda45dcf", "sha256": "844a48325ec5443b04a115d01b2a3949c850791f3760a183387d3e56e824f586" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9bdab201e2710f1eb6c42114dda45dcf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5705, "upload_time": "2018-03-10T22:36:04", "url": "https://files.pythonhosted.org/packages/28/e3/243572e2fbba87023b283c276d23a774535be6b73df340f96a3b8069dacc/git_annex_remote_googledrive-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc5a0ddc75507a7821a3d49802a78921", "sha256": "7b3a9c16ed3af667e4b1349d714ac812a57a619804e579330aa62e4e6d157d49" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.9.1.tar.gz", "has_sig": false, "md5_digest": "cc5a0ddc75507a7821a3d49802a78921", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5559, "upload_time": "2018-03-10T22:36:07", "url": "https://files.pythonhosted.org/packages/0c/1b/091317fb30e2d0fec2ef768acdd343759e7376596ea2d4d1cd13bf384a39/git-annex-remote-googledrive-0.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a363d8d3a6e27118e58a4cb3a6054618", "sha256": "727157440f5ab2d4816e2aab730e8c20bffbb7be226d3f13b9e30834de59a665" }, "downloads": -1, "filename": "git_annex_remote_googledrive-0.11.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a363d8d3a6e27118e58a4cb3a6054618", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9000, "upload_time": "2018-07-31T13:23:08", "url": "https://files.pythonhosted.org/packages/01/96/16b9e3532adc1e0e586de87f818294b0af32fe5f4fd60b411fe1b67039f0/git_annex_remote_googledrive-0.11.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fe62b902631f036ac8b2cb7f196841e", "sha256": "8d3edcd9cbcf7c7f5617eaacd14f275ed6b5cbafd3e66f4f3a0f75d86b675eed" }, "downloads": -1, "filename": "git-annex-remote-googledrive-0.11.1.tar.gz", "has_sig": false, "md5_digest": "6fe62b902631f036ac8b2cb7f196841e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26923, "upload_time": "2018-07-31T13:23:09", "url": "https://files.pythonhosted.org/packages/c5/c3/965d07a559251edabe5c4d4d0f014eb8188999e33b31f4fc3a17837cbcd4/git-annex-remote-googledrive-0.11.1.tar.gz" } ] }