使用R与git和packrat

时间:2016-03-23 19:56:49

标签: r packrat

我一直在使用git,但最近才开始使用packrat。我希望我的存储库是自包含的,但同时我不想包含可用的CRAN包。似乎一旦在带有packrat的项目中打开R,它将尝试使用项目库中的包;如果它们不可用,那么它将尝试从项目库中的src安装;如果它们不可用,它将查看该计算机中安装的库。如果计算机中没有库;它接下来会看CRAN吗?

我应该在git仓库中包含哪些文件(例如,packrat.lock)?

1 个答案:

答案 0 :(得分:32)

您可以选择设置一个类似于CRAN的外部存储库,其中包含您要为项目提供的软件包及其版本的源代码。但是,默认行为是接下来查看CRAN,正如您在问题中确定的那样。查看packrat.lock文件,您将看到对于您在packrat中使用的每个包,有一个名为Package: FooPackage Source: source Version: 0.4-4 Hash: 44foo4036fb68e9foo9027048d28 SourcePath: /Users/MyName/Documents/code/myrepo/RNetica 的选项(如果您已经从CRAN下载了该文件,那就是)。

当您拥有本地存储的包源文件时,所述包的锁定内容将更改为以下内容:

What files should I include in my git repo as a minimum (e.g., packrat.lock)?

我对你的最后一个问题有点不清楚:packrat::init()但是我将把它作为a)packrat运行时应该出现哪些文件的组合,以及b)哪一个这些文件应该提交给git-repo。为了回答第一个问题,我举例说明了对现有R项目的初始化。

当您运行PackageName/packrat/时,会发生两件重要的事情(其中包括): 1.所有packrat脚手架,包括源代码tarball等都是在packrat/lib*/下创建的。 2. packrat/lib*/已添加到.gitignore文件中。

因此,我们可以看到packrat/init.R下的任何内容都不需要提交给你的git-repo。这将保留以下3个文件:

  1. packrat/packrat.lock
  2. packrat/packrat.opts
  3. packrat.lock
  4. 通过版本控制系统与其他人协作需要

    packrat.opts;它有助于保持私有库同步。 get_opts允许您为packrat指定不同的项目特定选项。该文件是使用set_opts.Rprofile自动生成的。将此文件提交到git-repo将确保为所有协作者维护您指定的任何选项。要提交给仓库的最终文件是packrat/src/。该文件告诉R使用私有包库(当从项目目录启动R时)。

    根据您的需要,您可以选择将源tar球提交到存储库。如果您不想在git-repo中使用它们,只需将packrat.lock添加到.gitignore即可。但是,这意味着访问git-repo的任何人都无法访问软件包源代码,文件将从CRAN下载,或者从packrat/src/文件中的源代码行所在的任何地方下载。

    从您的问题来看,听起来好像将resources :messages, concerns: :commentable 文件夹内容提交到您的仓库可能就是您所需要的。