C#でSharpSvnから資格情報を取得します。
-
20-09-2019 - |
質問
私は多くのツールsvnmuccのように、1回のパスでSVNに複数のコミットを実行するために、いくつかのC#のコードを書いています。これまでのところ私はSVNとの必要な通信の残りの部分を行うためにSharpSvnを使用してきたので、私は、私は次のことを達成するために、それを活用することができます考えています:
私はSharpSvnで使用される資格情報(ユーザー名、パスワード)を取得できますか?
私はこのような何かをしたいと思います:
using (SvnClient svnClient = new SvnClient())
{
SomeFictitiousCredentialsClass credentials = svnClient.Authentication.FictitiousGetCachedCredentialsMethod();
// Call my code that performs svnmucc-like work here, passing username and password
// obtained from 'credentials' variable.
}
解決
SharpsvnはあなたのSubversionからの資格情報を提供するAPIを持っていません。これは、主にlibsvn_client APIを実装し、このレベルでは、このデータへのアクセスがない。
SharpSvnは、これらの資格情報を必要とSubversionのライブラリからのコールバックを取得します。ほとんどの場合、組み込みのパスワード・ストアは、認証に失敗した後ます。
あなたのsvnmuccコードもSubversionのAPIを使用している場合は、あなただけの転覆事前に定義された認証ハンドラをプラグインすることができます..
SharpSvn自体はまだsvnmuccをサポートしていません。 (そこSharpSvnにこれを追加するのが好き誰かについていくつかの話でしたが、私はこれについてのニュースを持っていない最近)
他のヒント
他の答えはまだSharpSvnのすべての現在のバージョンに対して有効ですが、SvnMuccサポートはちょうどSharpSvnの開発コードで上陸しました。だから、すぐに.NETからの操作のようなSvnMuccを行うことが可能になります。
using SharpSvn;
SvnCommitResult cr;
using (SvnMultiCommandClient mucc = new SvnMultiCommandClient("http://my-repos/svn/"))
{
mucc.CreateDirectory("trunk");
mucc.CreateDirectory("branches");
mucc.CreateDirectory("tags");
mucc.CreateDirectory("trunk/src");
mucc.SetProperty("", "svn:auto-props", "*.cs = svn:eol-style=native");
mucc.SetProperty("", "svn:global-ignores", "bin obj");
mucc.Commit(out cr); // Commit r1
}
using (SvnClient client = new SvnClient())
{
client.CheckOut("http://my-repos/svn/", @"C:\wc");
}
がありますが、既存のSvnClientからの操作を実行したい場合は利用可能わずかに異なる構文は次のとおりであるが、これは一般的な考え方です。