はじめに
Git、GitLabと続いて、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」にエンコードしてあげたら取れた。
最後に
相変わらず日本語のドキュメントは殆どないので辛かった。
コメント