2008-12-07 11 views
5

El proyecto en el que estoy trabajando requiere acceso al control de origen de los usuarios. Para hacer esto, estamos ajustando la API de Perforce y la API de Subversion (usando P4.NET y SubversionSharp respectivamente).¿Hay una biblioteca C# para ajustar múltiples API de proveedor de SCM?

Nos gustaría apoyar a todos los que podamos en función de los requisitos del usuario y he intentado buscar en Google una biblioteca existente, pero no tuve suerte. ¿Existe una biblioteca C# que envuelve múltiples aplicaciones SCM?

Respuesta

2

Es probable que busque el proveedor de control de código fuente de Microsoft (MSSCCI). Lo sé, los productos de control de origen Source Safe, Team Foundation Server, Subversion, Evolution, (y algunos otros) tienen esta interfaz implementada.

1

MSSCCI ayudaría a que muchos productos de control de origen sean accesibles directamente desde Visual Studio, pero no necesariamente utilizables desde el código .NET. Que yo sepa, no existe una biblioteca .NET que abstraiga el acceso a todos los productos de control de origen, ni siquiera a más de uno.

Sería interesante si pudiera envolver un proveedor MSSCCI (probablemente tiene que implementar algunos encabezados C++) como un ensamblado .NET.

+0

En VS 2005 SDK se muestra cómo implementar el proveedor MSSCCI en C#. Este SDK se puede descargar gratis. – TcKs

+0

Este no es un ejemplo de proveedor de MSSCCI, sino una nueva implementación de paquete de SCC de estilo. (Dichos paquetes no se ejecutan fuera de VSS, sino que permiten una integración mucho mejor en VS en sí misma que la antigua API de MSSCCI: ya no hay requisitos de checkout-checkin) –

1

¿Puede invocar MSSCCI a través de DllImport/interop?

Editar como una cuestión de hecho, sí ...

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

Yo recomendaría no usar MSSCCI como capa de abstracción, como la API SCC estilo antiguo está totalmente modelada después que el director checkout-checkin promovido por VSS.

La mayoría de los sistemas de control de fuente más nuevos usan el principio de actualización/fusión y/o permiten una combinación de actualización/combinación y bloqueo para imitar el comportamiento anterior.

Si desea utilizar Subversion desde .Net también debe consultar la nueva biblioteca SharpSvn, ya que le proporciona toda la potencia de Subversion en una api de estilo .Net. (No tiene que pensar en la administración de la memoria, matrices apr, punteros de función, etc., si no le gusta).

En la mayoría de los casos, le permite usar Subversion con aproximadamente 1/5 del código que necesitan los enlaces anteriores.

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); 
} 
Cuestiones relacionadas