repositorio - Cómo acceder a la información del archivo en un enganche previo a la confirmación mediante SharpSVN
estructura svn (1)
Puedes hacer esto usando el SvnLookClient
.
Para usar esto, antes que nada necesitas un SvnLookOrigin
. SharpSvn contiene análisis estándar de argumentos que ''sabe'' qué argumentos se pasan a cada tipo de enlace. Esto le da acceso a este SvnLookOrigin
:
SvnHookArguments ha;
if (!SvnHookArguments.ParseHookArguments(args, SvnHookType.PreCommit, false, out ha))
{
Console.Error.WriteLine("Invalid arguments");
Environment.Exit(1);
}
Obtener los archivos modificados y el contenido de esos archivos en función de los argumentos analizados
using (SvnLookClient cl = new SvnLookClient())
{
Collection<SvnChangedEventArgs> changedItems;
cl.GetChanged(ha.LookOrigin, out changedItems);
foreach(var item in changedItems)
{
if(!IsXmlFile(item)) continue;
using(MemoryStream ms = new MemoryStream())
{
cl.Write(ha.LookOrigin, item.Path, stream);
VerifyXMLStream(stream);
}
}
}
Editar : escribe en Console.Error
y Environment.Exit(1)
para informar errores (salir no nulo).
Soy nuevo en SharpSVN y SVN en general. Estoy tratando de implementar un gancho de precompromiso que cuando el usuario confía en un cierto tipo de archivo XML; Voy a tener que interceptar el archivo y analizarlo para asegurarme de que incluyan ciertos elementos antes de permitir el compromiso del archivo.
Dado que parece que SVN presenta dos argumentos; la ruta del repositorio y la transacción; Tendré que usar estos dos elementos para interceptar el archivo. ¿Alguien sabe lo que necesito usar en SharpSVN para obtener información de archivos basada en estos dos parámetros?
Gracias, pulga #