La forma más rápida de ejecutar actualizaciones SVN en C # .NET

Estoy intentando ejecutar una actualización de SVN usando C #. Conozco algunas forms de hacerlo, pero no sé cuál es la mejor.

Ahora, comenzaré definiendo lo mejor: estoy buscando un método que no se preocupe por el uso de la CPU, el ancho de banda o el uso de RAM (lo ejecutaré en un VPS, por lo que estos son todos críticos normalmente, pero en este caso, ejecutaré la acción mientras mi server esté desactivado). Básicamente estoy buscando el método más rápido. IE el que toma el menor time de principio a fin.

Los methods que conozco son:

Ejecutar un file .bat como un process desde mi aplicación de console. Ejecute un command usando los parameters de inicio para cambiar el directory y actualizar el repository. Cree o descargue una biblioteca que me permita ejecutar consultas SVN internamente en mi aplicación.

Ahora, no sé qué tan fácil es hacer el tercero, y no soy un experto con C #, solo un aficionado con un poco de time libre. Mi código hasta ahora se ve así:

class ServerLoader { public static Process TFS = new Process(); static void Main(string[] args) { Console.WriteLine("Welcome to XtrmJosh's control centre for TFS Console."); // Function generate processes Init(); // Function begin process RunServer(); string userInput = Console.ReadLine(); if (userInput == "r,0") { StopServer(); Init(); RunServer(); } else if (userInput == "s,0") { StopServer(); } else if (userInput == "st,0") { Init(); RunServer(); } else if (userInput == "u,0") { StopServer(); UpdateSVN(); RunServer(); } } static void UpdateSVN() { } static void Init() { //Initialise the TFS process Console.WriteLine("Initialising Process"); TFS.StartInfo.FileName = "tfs.exe"; Console.WriteLine("Preventing window creation"); TFS.StartInfo.CreateNoWindow = true; Console.WriteLine("Redirecting Output"); TFS.StartInfo.RedirectStandardOutput = true; Console.WriteLine("Stopping shell execution"); TFS.StartInfo.UseShellExecute = false; } static void RunServer() { Console.WriteLine("Running Server"); TFS.Start(); } static void StopServer() { Console.WriteLine("Closing Process"); TFS.Close(); Console.WriteLine("Releasing Resources"); TFS.Dispose(); } } 

Más adelante, creo que es bastante evidente que tengo la intención de agregar un server TCP a este código, que escuchará los commands listdos y actuará sobre ellos. He tenido mucha práctica escribiendo aplicaciones de server TCP, así que no debería tener problemas con eso, pero esto plantea problemas sobre cómo hacer ciertas cosas y, por supuesto, puede ser útil saber que voy a establecer una networking de todos modos, así que si estoy trabajando en una networking, puede ser más simple usar una biblioteca para actualizar el repository.

También expondré esto, ¿cuál cliente de SVN crees que es el más estable para este tipo de trabajo, y si todos son igualmente estables, qué acción hará más rápido? Para su información solo estoy actualizando 3 files, 2 son pequeños documentos XML, 1 es un gran documento basado en charts de alnetworkingedor de 3MB de tamaño, y pronto crecerá a más de 10MB, por lo que la velocidad es crucial, especialmente cuando estoy ejecutando un server de juego, quiero time de inactividad mínimo si es posible …

Gracias