2008-12-07 64 views
5

我正在处理的项目需要访问用户源代码管理。为此,我们正在封装Perforce API和Subversion API(分别使用P4.NET和SubversionSharp)。是否有一个用于封装多个SCM提供者API的c#库?

我们想支持多达我们可以根据用户的要求和我试着google搜索现有的库,但没有运气。包含多个SCM应用程序的C#库是否存在?

回答

2

您propably搜索Microsoft源代码控制提供者(MSSCCI)。 我知道,Source Safe,Team Foundation Server,Subversion,Evolution(以及其他一些)源代码管理产品都具有此接口。

1

MSSCCI有助于许多源代码控制产品是从Visual Studio直接访问,但不一定是从.NET代码使用。据我所知,没有.NET库抽象化所有源代码控制产品的访问权限,甚至没有超过一个。

这将是有趣的,如果你可以换一个MSSCCI提供商(可能是你必须执行一些C++头)作为.NET程序集。

+0

在VS 2005中SDK是示例如何在C#中实现MSSCCI提供程序。这个SDK是免费下载的。 – TcKs 2008-12-07 21:30:26

1

你能通过DllImport/interop调用MSSCCI吗?

编辑作为事实上,是...

[DllImport(@"C:\Program Files\Microsoft Visual Studio\Common\VSS\win32\SSSCC.DLL")] 
0

我会建议不要使用MSSCCI作为抽象层,作为老牌SCC API由促进结帐签入本金后完全仿照VSS。

大多数较新的源代码控制系统使用更新/合并原则和/或允许更新/合并的组合,并锁定到模拟天生的旧的行为。

如果你想使用.Net的Subversion,你还应该看看新的SharpSvn库,因为它提供了.Net风格api的所有Subversion功能。 (如果你不喜欢,你不必考虑内存管理,apr数组,函数指针等等)。

在大多数情况下,它可以让你使用Subversion的代码上了年纪的绑定需要约1/5。

using(SvnClient client = new SvnClient()) 
{ 
    client.Update(@"C:\My\WorkingCopy"); 

    // Do something to your working copy 
    File.AppendAllText(@"C:\My\WorkingCopy", "\nFile Change\n"); 

    SvnCommitArgs ca = new SvnCommitArgs(); 
    ca.LogMessage = "Line added"; 

    client.Commit(@"C:\My\WorkingCopy", ca); 
} 
相关问题