{"id":13857932,"url":"https://github.com/ropensci/piggyback","last_synced_at":"2025-05-15T08:06:12.249Z","repository":{"id":33084975,"uuid":"132979724","full_name":"ropensci/piggyback","owner":"ropensci","description":":package: for using large(r) data files on GitHub","archived":false,"fork":false,"pushed_at":"2025-05-02T15:47:59.000Z","size":1038,"stargazers_count":188,"open_issues_count":3,"forks_count":27,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-13T22:53:07.279Z","etag":null,"topics":["data-store","git-lfs","peer-reviewed","r","r-package","rstats"],"latest_commit_sha":null,"homepage":"https://docs.ropensci.org/piggyback","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ropensci.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null}},"created_at":"2018-05-11T02:38:52.000Z","updated_at":"2025-05-02T15:48:02.000Z","dependencies_parsed_at":"2023-09-21T19:24:31.653Z","dependency_job_id":"e29d6ab6-06d4-4c95-8b91-3fc11e314f98","html_url":"https://github.com/ropensci/piggyback","commit_stats":{"total_commits":313,"total_committers":18,"mean_commits":17.38888888888889,"dds":0.3738019169329073,"last_synced_commit":"da844846355fa40515e009f9875e00ad2e8bf2f1"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fpiggyback","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fpiggyback/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fpiggyback/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci%2Fpiggyback/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci","download_url":"https://codeload.github.com/ropensci/piggyback/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254051342,"owners_count":22006463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-store","git-lfs","peer-reviewed","r","r-package","rstats"],"created_at":"2024-08-05T03:01:51.130Z","updated_at":"2025-05-15T08:06:12.196Z","avatar_url":"https://github.com/ropensci.png","language":"R","funding_links":[],"categories":["R"],"sub_categories":[],"readme":"---\noutput: github_document\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n\n```{r setup, include = FALSE}\nknitr::opts_chunk$set(\n  eval = FALSE,\n  collapse = TRUE,\n  message = FALSE,\n  comment = \"#\u003e\",\n  fig.path = \"man/figures/README-\",\n  out.width = \"100%\"\n)\n```\n\n# piggyback \u003cimg src=\"man/figures/logo.svg\" align=\"right\" alt=\"\" width=\"120\" /\u003e\n\n  \u003c!-- badges: start --\u003e\n\n[![lifecycle](https://img.shields.io/badge/lifecycle-stable-green.svg)](https://lifecycle.r-lib.org/articles/stages.html)\n[![R-CMD-check](https://github.com/ropensci/piggyback/workflows/R-CMD-check/badge.svg)](https://github.com/ropensci/piggyback/actions)\n[![Coverage status](https://codecov.io/gh/ropensci/piggyback/branch/master/graph/badge.svg)](https://app.codecov.io/github/ropensci/piggyback?branch=master)\n[![CRAN status](https://www.r-pkg.org/badges/version/piggyback)](https://cran.r-project.org/package=piggyback)\n[![Peer Review Status](https://badges.ropensci.org/220_status.svg)](https://github.com/ropensci/software-review/issues/220)\n[![DOI](https://zenodo.org/badge/132979724.svg)](https://zenodo.org/badge/latestdoi/132979724)\n[![DOI](http://joss.theoj.org/papers/10.21105/joss.00971/status.svg)](https://doi.org/10.21105/joss.00971)\n  \u003c!-- badges: end --\u003e\n\n`piggyback` provides an R interface for storing files as GitHub release assets,\nwhich is a convenient way for large/binary data files to _piggyback_ onto public \nand private GitHub repositories. This package includes functions for file downloads,\nuploads, and managing releases, which then are passed to the GitHub API. \n\nNo authentication is required to download data from public repositories.\n\n## Installation\nInstall from CRAN via:\n```{r}\ninstall.packages(\"piggyback\")\n```\nYou can install the development version from [GitHub](https://github.com/ropensci/piggyback)\nwith either r-universe or with remotes:\n```{r}\ninstall.packages(\"piggyback\", repos = c('https://ropensci.r-universe.dev', getOption(\"repos\")))\n# install.packages(\"remotes\")\nremotes::install_github(\"ropensci/piggyback\")\n```\n## Usage\nSee [getting started vignette](https://docs.ropensci.org/piggyback/articles/piggyback.html)\nfor a more comprehensive introduction.\n\nDownload data attached to a GitHub release:\n```{r}\nlibrary(piggyback)\npb_download(\"iris2.tsv.gz\", \n            repo = \"cboettig/piggyback-tests\",\n            tag = \"v0.0.1\",\n            dest = tempdir())\n#\u003e ℹ Downloading \"iris2.tsv.gz\"...\n#\u003e |======================================================| 100%\nfs::dir_tree(tempdir())\n#\u003e /tmp/RtmpWxJSZj\n#\u003e └── iris2.tsv.gz\n```\nDownloading from private repos or uploading to any repo requires authentication, \nspecifically a GitHub Personal Access Token (PAT). This can be stored as a\n[gh::gh_token()](https://usethis.r-lib.org/articles/git-credentials.html#get-a-personal-access-token-pat)\nor a GITHUB_PAT environment variable - for more information, see the vignette notes on\n[authentication](https://docs.ropensci.org/piggyback/articles/piggyback.html#authentication).\n\nWe can also upload data to a release. Start by creating a release:\n```{r}\npb_release_create(repo = \"cboettig/piggyback-tests\", tag = \"v0.0.2\")\n#\u003e ✔ Created new release \"v0.0.2\".\n```\nthen upload to it:\n```{r}\nreadr::write_tsv(mtcars, \"mtcars.tsv.gz\")\npb_upload(\"mtcars.tsv.gz\", repo = \"cboettig/piggyback-tests\")\n#\u003e ℹ Uploading to latest release: \"v0.0.2\".\n#\u003e ℹ Uploading mtcars.tsv.gz ...\n#\u003e |===================================================| 100%\n```\n\nFor improved performance, we can also use piggyback files with \n[cloud native](https://docs.ropensci.org/piggyback/articles/cloud_native.html)\nworkflows to query data without downloading it first. \n\n## Motivations\n\nA brief video overview presented as part of Tan Ho's [RStudioConf2022 talk](https://www.youtube.com/watch?v=wzcz4xNGeTI\u0026t=655s):\n\nhttps://github.com/ropensci/piggyback/assets/38083823/a1dff640-1bba-4c06-bad2-feda34f47387\n\n`piggyback` allows you to store data alongside your repository as release assets,\nwhich helps you:\n\n- store files larger than 50MB\n- bypass the 2GB GitHub repo size limit\n\u003c!-- \noriginal URL:\nhttps://angryfrenchman.org/github-s-large-file-storage-is-no-panacea-for-open-source-quite-the-opposite-12c0e16a9a91 \n--\u003e\n- avoid the [downsides](https://archive.is/3D16r) of Git LFS\n- version data flexibly (by creating/uploading to a new release)\n- work with public and private repositories, **for free**\n\nFor more about motivations, see this discussion of\n[alternatives](https://docs.ropensci.org/piggyback/articles/alternatives.html).\n\n## Contributing\n\nPlease note that this project is released with a \n[Contributor Code of Conduct](https://ropensci.org/code-of-conduct/).\nBy participating in this project you agree to abide by its terms.\n\n```{r eval=TRUE, include=FALSE}\ncodemeta::write_codemeta()\n```\n\n[![ropensci_footer](https://ropensci.org/public_images/ropensci_footer.png)](https://ropensci.org)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fropensci%2Fpiggyback","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fropensci%2Fpiggyback","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fropensci%2Fpiggyback/lists"}