【忘備録】SharpSvnでSVNの情報にアクセスする【C#】

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

はじめに

GitGitLabと続いて、SVNの情報にC#からアクセスしてみました。

AnkhSVNでも利用されているSharpSvnというライブラリがあったので、これを使ってみました。

コミット情報を取得する

Nugetで「SharpSVN」を検索して、インストール。

次のようにして、SVN接続用クライアントを作成する。

using SharpSvn;
SvnClient client = new SvnClient();

次のようにして、IDとPWの認証情報をクライアントに追加する。

client.Authentication.Clear();
client.Authentication.DefaultCredentials = new NetworkCredential(ユーザーID,パスワード);

sslサーバーの場合、上記の認証方法だと「SvnRepositoryIOException」のエラーが返ってきたりする。sslサーバーの場合は、次のようにする。

client.Authentication.ForceCredentials(ユーザID, パスワード);
client.Authentication.SslServerTrustHandlers += delegate (object sender, SharpSvn.Security.SvnSslServerTrustEventArgs e)
{
    e.AcceptedFailures = e.Failures;
    e.Save = true;
};

次のようにして、ファイルに対するログ情報一覧(及びログ情報)を取得する。

Uri uri = new Uri("ファイルパス");
client.GetLog(uri, new SvnLogArgs(), out logs);
foreach (SvnLogEventArgs log in logs){
//省略
}

ログ情報は次のようにして取得できる。

string message = RecentLog.LogMessage;
DateTime time = RecentLog.Time;
string author = RecentLog.Author;

気になった点

「#」がエンコードされないので、名前に「#」を含むファイルデータが取れないっぽい。「#」だけ「%23」にエンコードしてあげたら取れた。

最後に

相変わらず日本語のドキュメントは殆どないので辛かった。

コメント

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