通过c#创建存储库有多难? 如何在Web应用程序中查看源代码文件或差异?
我是否需要挂钩api或是否需要编写所有自定义代码?
答案 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 SubversionSharp和SVN.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的源代码,也许可以得到它的一些想法。
祝你的项目好运,并希望这对一些人有所帮助。