【问题标题】:git2r::summary() produces different results when called from console and by RStudiogit2r::summary() 从控制台和 RStudio 调用时产生不同的结果
【发布时间】:2017-05-03 21:47:41
【问题描述】:

我正在尝试在git2r 包的帮助下编写一个分析Apache Pig GitHub repository 的R 包。我还使用testthat 包进行单元测试。

我有一个函数,我们称之为compute(),它包含的代码如下:

repo <- repository("C:\normalized\path\to\apache\pig");
allCommits <- commits(repo);
commitSummary <- capture.output(summary(allCommits[[1]]));
print(commitSummary);

commitSummary 是一个重要部分,因为我在它上面运行了几个正则表达式来恢复插入和删除等数据。

问题是,当我从控制台调用compute() 时,它会打印出Output 1

但是当我运行devtools::test() 时从我的单元测试文件中调用compute() 时,它会打印出输出2。 (在我写这个问题的过程中,在多次产生 Output 2 之后,它产生了 Output 3。)

当我从控制台运行此问题中的第一个代码块时,它会再次打印出 Output 1

但是,当我将该代码块复制粘贴到测试文件中时,它会打印出 Output 3

我很困惑。这怎么可能?

我如何确保git2r::summary() 使用我想要的格式?


输出 1

[1] "Commit:  d2de56aad939c7c77324066a6f29cc211e29a077"                                                       
 [2] "Author:  Koji Noguchi <knoguchi@apache.org>"                                                             
 [3] "When:    2016-12-12 23:07:37"                                                                            
 [4] ""                                                                                                        
 [5] "     PIG-5073: Skip e2e Limit_5 test for Tez (knoguchi)"                                                 
 [6] "     "                                                                                                   
 [7] "     "                                                                                                   
 [8] "     git-svn-id: https://svn.apache.org/repos/asf/pig/trunk@1773899 13f79535-47bb-0310-9956-ffa450edef68"
 [9] "     "                                                                                                   
[10] "2 files changed, 18 insertions, 1 deletions"                                                             
[11] "CHANGES.txt                     | -0 + 2  in 1 hunk"                                                     
[12] "test/e2e/pig/tests/nightly.conf | -1 +16  in 2 hunks"                                                    
[13] ""       

输出 2

[d2de56a] 2016-12-12: PIG-5073: Skip e2e Limit_5 test for Tez (knoguchi)

输出 3

[1] "    Length      Class       Mode " "         1 git_commit         S4 "

可能会影响问题清晰度的附加说明

  1. 当我从单元测试文件加载并调用调用compute() 的函数时,它会打印出输出1。从工作目录调用compute() 设置为测试文件夹和完全相同的参数。

  2. 为了让事情变得更加混乱,直到最近 devtools::test() 产生 Output 1,然后切换到 Output 3,然后才确定 Output 2.

  3. CRAN 的 git2r::summary(object, ...) 文档列出了以下参数:

    • object 提交对象。

    • ... 影响生成的摘要的其他参数。

  4. 找不到... 的可接受值。

【问题讨论】:

  • RStudio 可能正在加载与 git2r 不同的 libgit 版本(供自己使用,请记住它的 git 接口也必须针对某些东西构建......),并且可能隐藏 git2r 想要的。我相信命令行。
  • @DirkEddelbuettel 我想这是一个开始。我会调查一下。

标签: r git rstudio testthat


【解决方案1】:

事实证明,可能存在某种与命名空间相关的竞争条件,因为在基础 R(和 probably some other packages)中已经有一个 summary() 函数,这解释了为什么有 3 个不同的输出。

我只是换了一个

summary(commitObject)

进入

git2r::summary(commitObject)

一切似乎又恢复了。

【讨论】:

  • (不过,选择哪个包的summary() 实际上是随机的,我仍然感到惊讶。)
猜你喜欢
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 2018-04-03
  • 1970-01-01
相关资源
最近更新 更多