2011-01-05 22 views

答えて

48

git log > filename.log 

あなたは1行

git log --pretty=oneline >filename.log 

またはあなたはそれsendmailのようなプログラムを経由して電子メールで送信するフォーマットしたいのすべてをしたいように、形式を指定するにはあなたのような何かをする必要があるよう

git log --pretty=email |email-sending-script.sh 

JSON、YAMLやXMLを生成し、それに見えます:

git log --pretty=format:"%h%x09%an%x09%ad%x09%s" 

この要旨(ない鉱山が)完全にJSONで出力をフォーマット: https://gist.github.com/1306223

も参照してください:

+1

これは魅力のように機能しました、ありがとう!将来の読者のために、 "format"で使用されるショートコードへのリンクがあります:http://www.kernel.org/pub/software/scm/git/docs/git-log.html – Andrew

+0

@andrew aww ... link broke ... – Marty

+0

うーん。まあ、私が見つけることができるすべての参照は、同じ壊れたページを指しているので、リダイレクトなしでgitのドキュメントをダウンした人には恥をかかせます。ブー。 – Andrew

10

私はこのようなことをして、リポジトリ内の最後の5つのコミットを表示する最小限のWeb API/javascriptウィジェットを作成しました。

あなたはスクリプト言語の任意の並べ替えからこれをやっている場合は、あなたが本当にあなたがコミットメッセージに実際の引用符をエスケープすることができるように、あなたの引用文字のため"以外のものを使用してJSONを生成したいです。 (あなたがは遅かれ早かれそれらを持っているだろうし、それは、物事を破るためにそれは素晴らしいではありません。)

をだから私は恐ろしいが、そう区切り^@^と、このコマンドラインになってしまいました。

var cmd = 'git log -n5 --branches=* --pretty=format:\'{%n^@^hash^@^:^@^%h^@^,%n^@^author^@^:^@^%an^@^,%n^@^date^@^:^@^%ad^@^,%n^@^email^@^:^@^%aE^@^,%n^@^message^@^:^@^%s^@^,%n^@^commitDate^@^:^@^%ai^@^,%n^@^age^@^:^@^%cr^@^},\''; 

次に(Node.jsの中で)私のHTTPレスポンスボディがthusly git logへのコールのstdoutから構成されています

var out = ("" + stdout).replace(/"/gm, '\\"').replace(/\^@\^/gm, '"'); 
if (out[out.length - 1] == ',') { 
    out = out.substring (0, out.length - 1); 
} 

と結果がで壊れない素敵なJSONです引用符。

+0

コミットメッセージの特殊文字をエスケープするには、書式文字列に '%s'の代わりに'%f'を使用するのが速やかです。 –

+0

FWIW、これを使用するプロジェクトアプローチ[ここにある](https:// github。 –

+0

)ES16のテンプレート文字列を使用してこれを行うことができると言えば、^ @ ^区切り記号とノード文字列の置換を使用する必要はありません。 – Gary

0

見よhttps://github.com/dreamyguy/gitlogg、あなたが必要となり、最後git-log => JSONパーサを!

Gitloggの機能のいくつかは以下のとおりです。

  • は1つのJSONファイルにgit logの複数のリポジトリを解析します。
  • repositoryキー/値
  • files changedinsertionsdeletionsキー/値を導入しました。
  • 導入済みimpactコミットの累積変更(insertions- deletions)を表すキー/値です。
  • subjectのように、ユーザー入力によって許可されるか作成されるすべての値に対して、二重引用符を"サニタイズすると、一重引用符'に変換されます。
  • ほとんどすべてのpretty=format:プレースホルダが利用できます。
  • 利用可能なものをコメントアウト/コメント解除することによって、どのキー/値がJSONに解析されるのかを簡単に含める/除外します。
  • 完全にコメントされたコードを読むのは簡単です。
  • コンソールでのスクリプト実行のフィードバック。
  • エラー処理(リポジトリへのパスを正しく設定する必要があるため)

Success, the JSON was parsed and saved. 成功すると、JSONが解析されて保存されました。

Error 001 エラー001:リポジトリへのパスが存在しません。

Error 002 エラー002:リポジトリへのパスは存在しますが、空です。

関連する問題