2

Visual Studio 2010 で SharpSVN dll を使用して最新のリビジョン番号を取得しているので、この番号を使用してプロジェクトをバージョン管理できます。以下のコードを試しましたが、次のようなエラーが表示されます。

Can't determine the user's config path

私はそれが何を意味するのかさえ理解していません。私がやりたいことは、svn リンク、ユーザー名やパスワードなどの資格情報を提供し、最新のリビジョン番号を取得することだけです。

これまでに試したコードは次のとおりです。

using(SvnClient client = new SvnClient())
{
    //client.LoadConfiguration(Path.Combine(Path.GetTempPath(), "Svn"), true);
    Collection<SvnLogEventArgs> list;
    client.Authentication.DefaultCredentials = new NetworkCredential("john.locke", "s7y5543a!!");

    SvnLogArgs la = new SvnLogArgs();
    client.GetLog(new Uri("https://100.10.20.12/svn/P2713888/trunk/src/"), la, out list);

    string sRevisionNumber = string.Empty;
    int iRevisionNumber = 0;
    foreach(SvnLogEventArgs a in list)
    {
       if (Convert.ToInt32(a.Revision) > iRevisionNumber)
       {
           iRevisionNumber = Convert.ToInt32(a.Revision);
       }
    }
    RevisionNumber.Text = iRevisionNumber.ToString();
}

リビジョン番号を取得する他の方法も回答として選択できます。

4

1 に答える 1

6

私もこの問題を抱えていました-使用する前に SvnClient のプロパティを検索/設定する必要があります。これが私が最終的に使用したものです。クライアント オブジェクトを単にインスタンス化する代わりに、このメソッドを使用してみてください。config フォルダーがまだ存在しない場合は、自動的に作成されます。

private SvnClient GetClient()
{
    SvnClient client = new SvnClient();

    // Note: Settings creds up here is optional
    // client.Authentication.DefaultCredentials = _creds;

    string configPath = Path.Combine(Path.GetTempPath(), "sharpsvn");
    if (!Directory.Exists(configPath))
    {
        Directory.CreateDirectory(configPath);
    }
    client.LoadConfiguration(configPath, true);

    return client;
}

または、ディレクトリが存在するかどうかを確認するためにファイル IO チェックを最小限に抑えたい場合は、LoadConfiguration を試して、その呼び出しが失敗した場合にのみディレクトリを作成して再割り当てすることができますが、毎回チェックする方が簡単です。

とにかく、次のコードを使用して、場所の最新のリビジョン番号を取得できます。

public long GetLatestRevisionNumber(Uri svnPath)
{
    using (SvnClient client = GetClient())
    {
        SvnInfoEventArgs info;
        client.GetInfo(svnPath, out info);
        return info.LastChangeRevision;
     }
}
于 2013-04-11T13:18:33.520 に答える