【忘備録】LibGit2Sharpで特定ファイルの最新コミットを取得する【C#】

スポンサーリンク
スポンサーリンク

はじめに

CI/CD的なツール(Windowsツール)が作成したかったので、色々と調査。

今回はLibGit2Sharpを使って、特定ファイルのコミット履歴をC#で取得してみました。

LibGit2Sharpを使う

LibGit2はGitリポジトリを操作するためのライブラリで、Git公式は以下のように説明している。

Libgit2は、他のプログラムへの依存性のないGitの実装であり、プログラムから使いやすいAPIを提供することにフォーカスしています。

https://git-scm.com/

LibGit2SharpはLibGit2のC#向けバインディングで、LibGit2の全ての機能を提供するとのこと。

Nugetの検索に「LibGit2Sharp」と打てば出てくるのでインストールする。

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等の操作もできるっぽい。

コメント

タイトルとURLをコピーしました