将R与git和packrat一起使用



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

我的git repo中至少应该包含哪些文件(例如,packrat.lock)?

您可以选择设置一个类似CRAN的外部存储库,其中包含您希望项目可用的包及其版本的源tarball。然而,默认的行为是接下来查看CRAN,正如您在问题中所指出的那样。查看packrat.lock文件,您会发现,对于您在packrat中使用的每个包,都有一个名为source: CRAN的选项(如果您从CRAN下载了该文件)。

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

Package: FooPackage Source: source Version: 0.4-4 Hash: 44foo4036fb68e9foo9027048d28 SourcePath: /Users/MyName/Documents/code/myrepo/RNetica

我有点不清楚你的最后一个问题:What files should I include in my git repo as a minimum (e.g., packrat.lock)?,但我将把它视为a)packrat应该运行哪些文件的组合,以及b)这些文件中的哪些应该提交给git repo。为了回答第一个问题,我在现有的R项目上初始化packrat。

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

因此,我们可以看到packrat/lib*/下的任何东西都不需要提交到您的git repo。这将留下以下3个文件需要提交:

  1. packrat/init.R
  2. packrat/packrat.lock
  3. packrat/packrat.opts

CCD_ 11是通过版本控制系统与他人协作所必需的;它有助于保持你的私人图书馆的同步。packrat.opts允许您为packrat指定不同的项目特定选项。该文件是使用get_optsset_opts自动生成的。将此文件提交到git repo将确保为所有合作者维护您指定的任何选项。要提交到回购的最后一个文件是.Rprofile。此文件告诉R使用专用包库(当R从项目目录启动时)。

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

根据您的问题,您可能需要将packrat/src/文件夹内容提交给您的repo。

最新更新