はじめに
CI/CD的なツール(Windowsツール)が作成したかったので、色々と調査。
今回はLibGit2Sharpを使って、特定ファイルのコミット履歴をC#で取得してみました。
LibGit2Sharpを使う
LibGit2はGitリポジトリを操作するためのライブラリで、Git公式は以下のように説明している。
Libgit2は、他のプログラムへの依存性のないGitの実装であり、プログラムから使いやすいAPIを提供することにフォーカスしています。
https://git-scm.com/
LibGit2SharpはLibGit2のC#向けバインディングで、LibGit2の全ての機能を提供するとのこと。
Nugetの検索に「LibGit2Sharp」と打てば出てくるのでインストールする。
特定ファイルの最新コミットを取得する
以下のようにして、リポジトリを取得する。
using LibGit2Sharp; LibGit2Sharp.Repository repo = new LibGit2Sharp.Repository("リポジトリパス");
特定ファイルの最新コミットは、以下のようにして取得できる。
LibGit2Sharp.Commit commit = repo.Commits.QueryBy("ファイルパス").Take(1).First().Commit;
参考までに、コミット内の情報は以下のようにして取得できる。
string message = commit.Message; DateTime datetime = commit.Author.When.DateTime; string author = commit.Committer.Name;
その他色々
リポジトリ内のブランチ情報一覧(及びブランチ情報)は以下のようにして取得できる。
LibGit2Sharp.BranchCollection branches = repo.Branches;
foreach(LibGit2Sharp.Branch branch in branches){ //省略 }
ブランチ内のコミットは以下のようにして取得できる。
LibGit2Sharp.ICommitLog commits = branch.Commits;
最後に
LibGit2Sharpの使い方を解説するサイトがほぼないので、結構気合で調べないといけない。
今回はGitからデータを集めただけだが、GitPush等の操作もできるっぽい。
コメント