Tocmai am petrecut câteva zile amânând exact această întrebare. Există produse terțe disponibile și o mulțime de scripturi PERL și Python, dar am vrut ceva simplu și o limbă pe care am fost familiarizată cu așa a ajuns până la scrierea de cârlige într-o aplicație consola C #. E foarte direct înainte:
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);
}
Apoi, puteți invoca acest lucru pe pre-comiterea prin adăugarea unui fișier pre-commit.cmd în folderul de cârlige al repo-ului cu următoarea linie:
[path]\PreCommit.exe %1 %2
Puteți lua în considerare această depășire, dar în cele din urmă este doar câteva minute de codificare. Mai mult, beneficiați de avantajul suitei de limbi .NET, care IMHO este mult mai preferabilă decât alternativele. Voi extinde în mod semnificativ cârligele și voi scrie și teste adecvate împotriva lor? bit greu pentru a face acest lucru cu un fișier DOS lot!
BTW, codul a fost adaptat din această postare .