devtools :: document的预提交钩子

时间:2017-07-06 13:02:55

标签: r git githooks devtools

我想为adb reverse tcp:8081 tcp:8081 设置预提交挂钩,并希望在devtools::document更改任何内容时失败。我检查了devtools::document来源并返回devtools::document,因此无法有条件地返回退出代码。

invisible()有效时,是否有任何聪明的方法可以阻止提交?

1 个答案:

答案 0 :(得分:1)

使用函数capture.output,我们可以在更改文件时捕获devtools::documents发送的消息:

Writing getScore.Rd

所以我们跑的时候:

results <- capture.output(devtools::document())

更新文档时(对于此示例,我删除了一个.Rd文件,结果如下所示:

> results
[1] "Writing getScore.Rd"

如果没有写入,results为空:

> results
character(0)

我认为很容易从这里开始:)

OP,@ BobJansen创建了以下脚本,该脚本运行上述方法,如果没有编辑文件,则返回status = 0,如果有任何文件,则返回status = 100

#!/usr/bin/Rscript

source("packrat/init.R")

lines <- capture.output(devtools::document(), type = 'output')
if (length(lines) > 0) {
  print(lines)
  q(save = 'no', status = 100)
} else {
  q(save = 'no', status = 0)
}