git2r::summary() 从控制台和 RStudio 调用时产生不同的结果

git2r::summary() produces different results when called from console and by RStudio

我正在尝试编写一个 R 包,在 git2r 包的帮助下分析 Apache Pig GitHub repository。我还使用 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() 时,它会打印出 Output 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() 的函数时,它会打印出 Output 1。从设置为测试文件夹的工作目录和完全相同的参数调用 compute() 相同。

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

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

    • object The commit object.

    • ... Additional arguments affecting the summary produced.

  5. 无法找到 ... 的可接受值。

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

我每次都换

summary(commitObject)

进入

git2r::summary(commitObject)

一切似乎又恢复正常了。