我使用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个文件需要提交:
packrat/init.R
packrat/packrat.lock
packrat/packrat.opts
CCD_ 11是通过版本控制系统与他人协作所必需的;它有助于保持你的私人图书馆的同步。packrat.opts
允许您为packrat指定不同的项目特定选项。该文件是使用get_opts
和set_opts
自动生成的。将此文件提交到git repo将确保为所有合作者维护您指定的任何选项。要提交到回购的最后一个文件是.Rprofile
。此文件告诉R使用专用包库(当R从项目目录启动时)。
根据您的需要,您可以选择将源tar球提交到存储库,也可以不提交。如果你不希望它们在git repo中可用,你只需将packrat/src/
添加到.gitignore中即可。但是,这意味着任何访问git repo的人都无法访问包源代码,文件将从CRAN下载,或者从packrat.lock
文件中源代码行指定的任何位置下载。
根据您的问题,您可能需要将packrat/src/
文件夹内容提交给您的repo。