代码之家  ›  专栏  ›  技术社区  ›  Tyler Collier

以C语言从SharpSvn获取凭据#

  •  2
  • Tyler Collier  · 技术社区  · 15 年前

    我正在编写一些C#代码,以便在一个过程中执行对SVN的多个提交,非常类似于工具svnmucc。到目前为止,我一直在使用SharpSvn与SVN进行其余必要的通信,因此我认为我可以利用它来完成以下任务:

    如何获取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.
    }
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   Bert Huijben    15 年前

    Sharpsvn没有提供Subversion凭据的api。它主要实现libsvn_客户机api,在这个级别上无法访问该数据。

    当subversion库需要凭据时,SharpSvn从subversion库获得回调;在大多数情况下,内置密码存储无法进行身份验证。

    如果您的svnmucc代码也使用Subversion API,则只需插入Subversion预定义的身份验证处理程序即可。。

        2
  •  0
  •   Bert Huijben    11 年前

    虽然另一个答案仍然适用于所有当前版本的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执行操作,则可以使用稍微不同的语法,但这是一般的想法。