C# を使用して SVN の更新を実行しようとしています。これを行ういくつかの方法を知っていますが、どれが最適かはわかりません。
今、私は最善を定義することから始めます: CPU 使用率、帯域幅、または RAM 使用率を気にしない方法を探しています (これを VPS で実行するので、これらは通常すべて重要です。ただし、この例では、ゲーム サーバーがダウンしている間にアクションを実行します)。私は基本的に最速の方法を探しています。IE は、開始から終了までの時間が最も短いものです。
私が知っている方法は次のとおりです。
コンソール アプリケーションから .bat ファイルをプロセスとして実行します。StartParameters を使用してコマンドを実行し、ディレクトリを変更してリポジトリを更新します。アプリケーションの内部で SVN クエリを実行できるライブラリを作成またはダウンロードします。
さて、3 番目の作業がどれほど簡単かはわかりません。私は C# の専門家ではありません。趣味で少し時間があるだけです。これまでの私のコードは次のようになります。
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();
}
}
さらに下に進むと、このコードに TCP サーバーを追加するつもりであることは明らかだと思います。TCP サーバーは、リストされたコマンドをリッスンし、それらに基づいて動作します。私は TCP サーバー アプリケーションを書く練習を十分に行ってきたので、苦労する必要はありませんが、これは特定のことを行う方法の問題を引き起こします。ネットワークを使用している場合は、ライブラリを使用してレポを更新する方が簡単かもしれません。
また、この種のジョブに対してどの SVN クライアントが最も安定していると思いますか? また、それらがすべて同じように安定している場合、どの SVN クライアントがこのアクションを最も速く実行しますか? 参考までに、私は 3 つのファイルのみを更新しようとしています。2 つは小さな XML ドキュメントで、1 つはサイズが約 3 MB の大きなグラフィックス ベースのドキュメントで、すぐに 10 MB を超えるサイズになるため、速度は特に重要です。ゲーム サーバーを実行している場合、ダウンタイムを最小限に抑えたい...
ありがとう