2017-02-04 9 views
4

私はrmarkdownを使って分析レポートを作成していますが、ドキュメントの異なるバージョンと変更を示す「ドキュメントバージョン」セクションが必要です。rmarkdownでgitの履歴を印刷するには?

手動で書き込むのではなく、gitの履歴を使用してマークダウン文書に自動的に挿入することを考えていました(テーブルに書式設定する)。

どうすればいいですか?出来ますか?

+0

私はこの質問が「話題外」である理由を知りません。私はツール、本またはチュートリアルを求めていません:どのツールを使用したいのか分かります(gitとrmarkdown)。私は両方を一緒に働かせる方法を尋ねています。私が得た非常に良い答えは、それを正確に説明し、この質問は他の人にとって役に立つと思う。 – Ben

答えて

3

インストールgit2r、0

> r = repository(".") 
> cs = commits(r) 
> cs[[1]] 
[02cf9a0] 2017-02-02: uses Rcpp attributes instead of inline 

だから今、私はこのレポのすべてのコミットのリストを持っている:は、あなたはもののように行うことができます。ドキュメントへのあなたの望みどおりに、各コミットとフォーマットから情報を得ることができます。

> summary(cs[[1]]) 
Commit: 02cf9a0ff92d3f925b68853374640596530c90b5 
Author: barryrowlingson <[email protected]> 
When: 2017-02-02 23:03:17 

    uses Rcpp attributes instead of inline 

11 files changed, 308 insertions, 151 deletions 
DESCRIPTION   | - 0 + 2 in 2 hunks 
NAMESPACE    | - 0 + 2 in 1 hunk 
R/RcppExports.R  | - 0 + 23 in 1 hunk 
R/auxfunctions.R  | - 1 + 1 in 1 hunk 
R/skewt.r    | - 0 + 3 in 1 hunk 
R/update_params.R  | - 1 + 1 in 1 hunk 
R/update_params_cpp.R | -149 + 4 in 2 hunks 
src/.gitignore  | - 0 + 3 in 1 hunk 
src/RcppExports.cpp | - 0 + 76 in 1 hunk 
src/hello_world.cpp | - 0 + 13 in 1 hunk 
src/update_params.cpp | - 0 +180 in 1 hunk 

時間とコミットメッセージだけが必要な場合は、オブジェクトから取り出すことができます。

> cs[[3]]@message 
[1] "fix imports etc\n" 
> cs[[3]]@[email protected] 
2017-01-20 23:26:20 

スロットを取得するために-notation @使用するよりも、むしろこれらのための適切なアクセス関数があるかどうかはわかりません。あなたのコミットからこのようにデータフレームを作ることができ

...もう少しドキュメントを読んでする必要があります。いいですPOSIXctオブジェクト、日付を変換し

> do.call(rbind,lapply(cs,function(cs){as(cs,"data.frame")})) 

を。データフレームからマークダウンテーブルを作成するのは簡単です!

2

手動pretty=formatをマークダウンするgitのログを変換することができます[1]

git log --reverse --pretty=format:'| %H | %s |' 

ような何かこれが出力されます。このような何か:

| a8d5defb511f1e44ddea21b42aec9b03ee768253 | initial commit | 
| fdd9865e9cf01bd53c4f1dc106ee603b0a730f48 | fix tests | 
| 10b58e8dd9cf0b9bebbb520408f0b342df613627 | add Dockerfile | 
| d039004e8073a20b5d6eab1979c1afa213b78fa3 | update README.md | 

1:https://git-scm.com/docs/pretty-formats

+0

これはいい考えですが、私のrmarkdown文書から呼び出されたものではありません。私はビネットを生成するときに自動的に行うことを願っています – Ben

+0

Rからシェルエスケープと 'system'経由で呼び出す必要があります。 。 – Spacedman

関連する問題