在asp.net Web应用程序中连接到SVN

时间:2009-11-17 17:25:45

标签: c# svn

通过c#创建存储库有多难? 如何在Web应用程序中查看源代码文件或差异?

我是否需要挂钩api或是否需要编写所有自定义代码?

6 个答案:

答案 0 :(得分:4)

SharpSVN为您提供完整的API。它不是那么容易使用,并且通常很慢,除非你缓存你得到的项目。

  

SharpSvn是绑定的   .Net 2.0的Subversion客户端API   包含在一组中的应用程序   xcopy-deployable dll。着名的用户   这个api是(在这个时候):

     
      
  • AnkhSVN 2.X - Visual Studio 2005和2008的Subversion支持
  •   
  • 适用于Visual Studio的CollabNet Desktop
  •   
  • SharpDevelop(#develop)
  •   
  • MonoDevelop的
  •   
  • SVN监视器
  •   
  • 许多其他项目......
  •   

这是我从大约50%获得的ASP.NET项目中的示例,它显示了存储库中的所有项目:

using (SvnClient client = new SvnClient())
{
    client.LoadConfiguration(Server.MapPath("/"));
    SvnUriTarget target = new SvnUriTarget("http://wush.net/svn/yourusername/", SvnRevision.Head);
    SvnListArgs args = new SvnListArgs();

    Collection<SvnListEventArgs> svnList = new Collection<SvnListEventArgs>();
    client.Authentication.DefaultCredentials = new NetworkCredential("username", "password);
    args.Depth = SvnDepth.Children;
    client.GetList(target, args, out svnList);

    foreach (var item in svnList)
    {
        // display the list  
    }

}

答案 1 :(得分:1)

嗯,SVN项目没有为C#(或.NET框架)提供任何直接支持 - 因为.NET并不是真正的跨平台。有C绑定,我最近遇到了一个开源的C#绑定项目。您可能需要查看Subersion Sharp。它似乎支持您感兴趣的大部分内容。

以下是该网站的引用:

  

SubversionSharp是一个C#包装器,完全覆盖了Subversion SCM的客户端API。提供对Subversion API的轻松访问,而不会影响功能。该库是在任何.NET托管软件中轻松集成Subversion存储库的起点。 Subversion的这些C#绑定是为了便携性和性能而编写的。该库现在可用于Mono / Linux和.NET / Windows环境。

实际上,很可能你会对the SVN.NET branch感兴趣,因为它支持.NET 2.0,而SubervsionSharp则不支持。当然,如果您使用更新版本的.NET 3.0 / 3.5进行开发,您应该能够获取源代码并将其编译为针对较新版本。

前几天我为了类似的目的而对此进行了调查,但由于其他高优先级的工作,我有点被绕道而行......

答案 2 :(得分:1)

Subversion客户端API SubversionSharpSVN.net有几个C#接口。但是,服务器api涵盖了repos的创建。您可能只是执行该部分,然后通过API处理其余部分

答案 3 :(得分:1)

SharpSVN看起来像是最活跃的API之一,另外两个--SubversionSharp和SVN.NET--几个月没有改变(我认为他们已经“合并”了一些,前者肯定是出)。

它还具有来自CollabNet的优势,使其成为最“官方”,并且可能是可靠的。

如果你想要支持多个平台,使用Mono,你将不得不检查,一年前它不是完全可移植的,特别是关于身份验证回调。

答案 4 :(得分:1)

我编写了广泛使用svn的.net应用程序,可以说你根本不需要绑定。

它们更难使用并且不是最新版本 - 几乎每隔几个月出现一个新的svn版本,很难赶上。当它们最终出现时,重新分配新版本的绑定也更加困难。

大多数情况下,调用svn.exe和svnadmin.exe就足够了。两者都是非交互式工具,只要您提供所需的所有参数,您就可以了。

如果您不必执行大量svn操作,请转到命令行工具 - 从.NET应用程序/网站调用它们。

另一个优点是您不必处理x86 / x64问题 - 如果您使用绑定,则必须确保svn dll,程序和OS匹配的组合。

答案 5 :(得分:0)

DotNetSvn是另一个试图在.net中为Subversion创建包装器的项目。如果你想看看其他项目是如何创建自己的包装器的,你可以看一下TortoiseSVN的源代码,也许可以得到它的一些想法。

祝你的项目好运,并希望这对一些人有所帮助。