我一直在使用git,但最近才开始使用packrat。我希望我的存储库是自包含的,但同时我不想包含可用的CRAN包。似乎一旦在带有packrat的项目中打开R,它将尝试使用项目库中的包;如果它们不可用,那么它将尝试从项目库中的src安装;如果它们不可用,它将查看该计算机中安装的库。如果计算机中没有库;它接下来会看CRAN吗?
我应该在git仓库中包含哪些文件(例如,packrat.lock)?
答案 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个文件:
packrat/packrat.lock
packrat/packrat.opts
packrat.lock
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
文件夹内容提交到您的仓库可能就是您所需要的。