Removes all valid metadata (.yml files) from the path when they don't have accompanying data (.tsv file). Invalid metadata triggers a warning without removing the metadata file.

Use this function with caution since it will remove all valid metadata files without asking for confirmation. We strongly recommend to use this function on files under version control. See vignette("workflow", package = "git2rdata") for some examples on how to use this.

prune_meta(root = ".", path = NULL, recursive = TRUE, ...)

# S3 method for git_repository
prune_meta(root, path = NULL,
  recursive = TRUE, ..., stage = FALSE)

Arguments

root

The root of a project. Can be a file path or a git-repository. Defaults to the current working directory (".").

path

the directory in which to clean all the data files. The directory is relative to root.

recursive

remove files in subdirectories too.

...

parameters used in some methods

stage

stage the changes after removing the files. Defaults to FALSE.

Value

returns invisibly a vector of removed files names. The paths are relative to root.

See also

Examples

## on file system # create a directory root <- tempfile("git2rdata-") dir.create(root) # store a dataframe as git2rdata object. Capture the result to minimise # screen output junk <- write_vc(iris[1:6, ], "iris", root, sorting = "Sepal.Length") # write a standard tab separate file (non git2rdata object) write.table(iris, file = file.path(root, "standard.tsv"), sep = "\t") # write a YAML file yml <- list( authors = list( "Research Institute for Nature and Forest" = list( href = "https://www.inbo.be/en"))) yaml::write_yaml(yml, file = file.path(root, "_pkgdown.yml")) # list the git2rdata objects list_data(root)
#> [1] "iris"
# list the files list.files(root, recursive = TRUE)
#> [1] "_pkgdown.yml" "iris.tsv" "iris.yml" "standard.tsv"
# remove all .tsv files from valid git2rdata objects rm_data(root, path = ".") # check the removal of the .tsv file list.files(root, recursive = TRUE)
#> [1] "_pkgdown.yml" "iris.yml" "standard.tsv"
list_data(root)
#> character(0)
# remove dangling git2rdata metadata files prune_meta(root, path = ".")
#> Warning: Invalid metadata files found. See ?is_git2rmeta(): #> _pkgdown.yml
# check the removal of the metadata list.files(root, recursive = TRUE)
#> [1] "_pkgdown.yml" "standard.tsv"
list_data(root)
#> character(0)
## on git repo # initialise a git repo using git2r repo_path <- tempfile("git2rdata-repo-") dir.create(repo_path) repo <- git2r::init(repo_path) git2r::config(repo, user.name = "Alice", user.email = "[email protected]") # store a dataframe write_vc(iris[1:6, ], "iris", repo, sorting = "Sepal.Length", stage = TRUE)
#> 09d5bfd6a65e682a4ca030c766348180861568c8 #> "iris.tsv" #> 0d434e56d22a710c99c5b912e8624d52abd41aaf #> "iris.yml"
# check that the dataframe is stored status(repo)
#> Staged changes: #> New: iris.tsv #> New: iris.yml #>
list_data(repo)
#> [1] "iris"
# commit the current version and check the git repo commit(repo, "add iris data", session = TRUE)
#> [c9b6546] 2020-06-02: add iris data
status(repo)
#> working directory clean
# remove the data files from the repo rm_data(repo, path = ".") # check the removal list_data(repo)
#> character(0)
status(repo)
#> Unstaged changes: #> Deleted: iris.tsv #>
# remove dangling metadata prune_meta(repo, path = ".") # check the removal list_data(repo)
#> character(0)
status(repo)
#> Unstaged changes: #> Deleted: iris.tsv #> Deleted: iris.yml #>
# clean up junk <- file.remove( list.files(root, full.names = TRUE, recursive = TRUE), root) junk <- file.remove( rev(list.files(repo_path, full.names = TRUE, recursive = TRUE, include.dirs = TRUE, all.files = TRUE)), repo_path)