【问题标题】:Show Git version in R Code在 R 代码中显示 Git 版本
【发布时间】:2015-11-22 12:28:03
【问题描述】:

我使用 Git 作为版本控制(目前是集中式工作流程,但我想转向功能分支或 gitflow 工作流程)。我使用 RStudio/Knitr 编译 PDF 文档,并想知道如何在 PDF 中自动包含当前的 Git 版本 - 如果可行?这样,当有人带着我给他们的文件回来找我时,我知道如何回到代码中的那个点。任何建议将不胜感激,谢谢 - Marie。

编辑:关键字是我想到的,尽管根据这篇文章 (gelato.unsw.edu.au/archives/git/0610/28891.html) 不推荐。对帮助脚本有什么建议吗? – user1420372 刚刚

【问题讨论】:

  • 我不熟悉 R,但git rev-parse --short HEAD 会为您提供上次提交的缩短 SHA1 哈希值,然后您可以查看。我相信从 R 中执行 system("git rev-parse --short HEAD", intern = TRUE) 应该可以解决问题。
  • @WanderNauta 你应该回答这个问题。
  • @hrbrmstr 我没有 R/RStudio/Knitr,所以我无法测试我的离谱主张 - 如果你这样做了,并且它确实有效,请随时添加它作为答案。

标签: r git rstudio knitr


【解决方案1】:

这样做只是为了展示一个简单粗暴的例子。这是@Wanter Nuata 的主意。

这是一个小小的 knitr 文档:

---
output: pdf_document
---

```{r}
print(system("git rev-parse --short HEAD", intern = TRUE))
```

我在一个新创建的本地 git 存储库中拥有。

当我编织成 PDF 时,我得到了这个:

所以你应该能够使用它来为它生成的 git 提交添加水印。

或者,如果您擅长向项目添加另一个包依赖项,则可以使用 git2r 包:

---
output: pdf_document
---

```{r}
library(git2r)

repo <- repository(".")
print(head(repo))
```

这给出了:

【讨论】:

  • 包含system("git --version") 怎么样?
  • 好吧,这给出了实际的git 可执行文件的版本。不知道这有多大帮助。
【解决方案2】:

使用 git2r 包的建议非常好。使用更多功能,您可以隔离实际的 SHA。如果感兴趣,您还可以重新调整用途,例如,作者字段以获取文档标题中的 SHA。

这是 R Markdown 文档:

---
title: "Show Git version in R Code"
output: html_document
date: "`r format(Sys.time(), '%d %B, %Y')`"
author: "SHA: `r git2r::branch_target(git2r::head(git2r::repository(getwd())))`"
---

You could also put the SHA elsewhere, like in a concluding chunk along with session info.

```{r collapse = TRUE}
git2r::branch_target(git2r::head(git2r::repository(getwd())))
## ADD devtools::session_info() or sessionInfo() ??
```

这给了

【讨论】:

  • 如果您需要它来处理标签或分离头,另请参阅devtools:::git_repo_sha1()
  • 当工作目录位于my_repo/my_subdir 而不是my_repo 时,有没有办法让这个答案起作用?
  • 现在是r git2r::branch_target(git2r::repository_head(getwd())),因为head.git_repository() 已被弃用,因为github.com/ropensci/git2r/commit/…
猜你喜欢
  • 2011-08-02
  • 2021-01-04
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
相关资源
最近更新 更多