2015-08-27 15 views
6

Używam Git jako formantu wersji (obecnie scentralizowanego przepływu pracy, ale chciałbym przejść do gałęzi funkcji lub przepływu pracy gitflow). Używam RStudio/Knitr do kompilowania dokumentów PDF i chciałbym wiedzieć, w jaki sposób mogę automatycznie włączyć obecną wersję Git do pliku PDF - jeśli to działa? W ten sposób, gdy ktoś wróci do mnie z dokumentem, który im podałem, wiem, jak wrócić do tego punktu w kodzie. Wszelkie sugestie będą mile widziane, dziękuję - Marie.Pokaż wersję Git w kodzie R

Edycja: Słowa kluczowe to to, co miałem na myśli, chociaż zgodnie z tym postem (gelato.unsw.edu.au/archives/git/0610/28891.html) niezalecane. Czy są jakieś zalecenia dotyczące skryptów pomocniczych? - user1420372 już teraz

+3

nie jestem zaznajomiony z R, ale 'git rev-analizowania --short będzie HEAD' dostać jesteś skrócony skrót SHA1 ostatniego zatwierdzenia, który można następnie wyewidencjonować. Wierzę, że robi 'system (" git rev-parse --short HEAD ", intern = TRUE)' od R powinien załatwić sprawę. –

+0

@WanderNauta powinieneś dokonać tej odpowiedzi. – hrbrmstr

+0

@hrbrmstr Nie mam R/RStudio/Knitr, więc nie mam sposobu, aby przetestować moje oburzające roszczenia - jeśli tak, i to rzeczywiście działa, nie krępuj się dodać go jako odpowiedź. –

Odpowiedz

7

Robimy to tylko po to, aby przedstawić przykład zupy do orzechów. To był pomysł Wantera Nuaty.

Oto drobny knitr doc:

--- 
output: pdf_document 
--- 

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

że mam w świeżo utworzonego lokalnego repo git.

Kiedy drutach PDF uzyskać to:

enter image description here

więc powinieneś być w stanie korzystać z tego za znak wodny git commit był generowany.

Alternatywnie, jeśli jesteś dobry z dodaniem kolejnego uzależnienia pakiet do swoich projektów, można skorzystać z pakietu git2r:

--- 
output: pdf_document 
--- 

```{r} 
library(git2r) 

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

co daje:

enter image description here

+1

co z włączeniem 'system (" git --version ")'? – SabDeM

+1

cóż, to daje wersję rzeczywistego pliku 'git'. nie jestem pewien, jak to jest pomocne. – hrbrmstr

4

Sugestia używać pakiet git2r jest naprawdę dobry. Dzięki kilku dodatkowym funkcjom możesz wyizolować rzeczywisty SHA. Możesz również zmienić przeznaczenie, np. Pole Autor, aby uzyskać SHA w nagłówku dokumentu, jeśli jest to interesujące.

Oto dokument 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() ?? 
``` 

Który daje

enter image description here

+0

Zobacz także ['devtools ::: git_repo_sha1()'] (https://github.com/hadley/devtools/blob/f0d1c7ed3d7f30d559b62eb0060135589824c687/R/git.R#L6-L17) jeśli potrzebujesz go do pracy z tagami lub odłączone głowy. – krlmlr

+0

Czy istnieje sposób, aby uzyskać tę odpowiedź do pracy, gdy katalog roboczy jest na 'my_repo/my_subdir' zamiast w' my_repo'? –

Powiązane problemy