Acabo de pasar varios días posponiendo exactamente esta pregunta. Hay productos de terceros disponibles y muchas secuencias de comandos PERL y Python, pero quería algo simple y un lenguaje con el que estaba familiarizado, así que terminé escribiendo anzuelos en una aplicación de consola C#. Es muy sencillo:
public void Main(string[] args)
{
string repositories = args[0];
string transaction = args[1];
var processStartInfo = new ProcessStartInfo
{
FileName = "svnlook.exe",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
Arguments = String.Format("log -t \"{0}\" \"{1}\"", transaction, repositories)
};
var p = Process.Start(processStartInfo);
var s = p.StandardOutput.ReadToEnd();
p.WaitForExit();
if (s == string.Empty)
{
Console.Error.WriteLine("Message must be provided");
Environment.Exit(1);
}
Environment.Exit(0);
}
Luego, puede invocar esta en pre comprometerse mediante la adición de un archivo de pre-commit.cmd a la carpeta de los ganchos de la cesión temporal con la siguiente línea:
[path]\PreCommit.exe %1 %2
Usted puede considere esta exageración, pero en última instancia son solo unos minutos de codificación. Además, obtiene la ventaja de la suite de idiomas .NET, que en mi humilde opinión es preferible a las alternativas. Expandiré significativamente mis anzuelos y también escribiré pruebas apropiadas contra ellos, ¡algo difícil de hacer con un archivo por lotes de DOS!
Por cierto, el código ha sido adaptado de this post.
Asegúrese de que obtener el archivo de revisión también. Corrige 2x errores –