web-dev-qa-db-ja.com

マージのリストをGithub Webサイトからブランチに取得することは可能ですかOR API?

私たちのワークフローでは、マスターブランチへの「直接」コミットは行われません。マスターブランチはプルリクエストからのみマージを受け取ります。

それぞれのマージは、masterブランチに追加された新しい機能と考えることができます。

時間の経過とともに製品に追加された機能のブロックを視覚化する方法として、マスターへのマージのリストを取得したいと思います。

GitまたはGithub APIはこのクエリを公開しますか、それとも生のコミットを解析する必要がありますか?

33
andy

次のスクリプトを使用します。

_git log --merges --first-parent master \
        --pretty=format:"%h %<(10,trunc)%aN %C(white)%<(15)%ar%Creset %C(red bold)%<(15)%D%Creset %s"
_

各引数の説明:

  • _--merges_:「マージ」コミットのみ(2つ以上の親);
  • _--first-parent master_:masterに適用されるマージのみ。これにより、誰かがmasterをブランチにマージしたエントリが削除されます。
  • _--pretty-format_:次のフォーマットを適用します:
    • _%h_:短いハッシュのコミット;
    • %<(10,trunc)%aN:10文字で切り捨てられた作成者名。
    • %<(15)%ar:相対コミット時間。15文字になるように埋め込まれます。
    • %<(15)%D:タグ名。15文字になるように埋め込まれます。
    • _%s_:コミットメッセージの最初の行。

結果はかなり満足です:

terminal image of the command output

31
Fábio Batista

Gitはこのような機能をgit logコマンドで公開します。このコマンドは、親のコミットの数に応じてレンダリングされたコミットをフィルタリングするいくつかのスイッチを受け入れます。

それらの1つはあなたの要求に合うでしょう:

  • -mergesマージコミットのみを出力します。これは--min-parents=2とまったく同じです。

以下は、LibGit2SharpプロジェクトのvNextブランチから到達可能なマージコミット(つまり、複数の親を持つコミット)を示しています。

$ git log vNext --merges --oneline
090b2de Merge pull request #348 from jamill/credential_callback_fix
0332c35 Merge pull request #260 from ben/great-renaming
3191c1b Merge pull request #239 from ben/libgit2-upgrade-81eecc3
1d544e8 Merge branch 'vNext'
238d259 Merge remote-tracking branch 'Origin/master'

更新

GitHub APIを介して同じ出力を利用することは可能ですが、多少複雑になります。

これには、ブランチからすべてのコミットを取得するが必要であり、フィルターをかけながら(すべてのコミットメタデータを取得するために)すべての結果をページ分割親ノードを1つだけ公開するもの。

開始点として、次のURLはvNextブランチの最新の30のコミットを示しています。

14
nulltoken