Unityメニューから指定したディレクトリ内のファイルを全てコミットする機能を作成しています。
やり方としてはSystem.Diagnostics.Processを使用してシェルスクリプト(Commit.sh)を実行しています
下記のコードの問題としてシェルスクリプト内のコミット処理のみ何故か動作せず、ログ出力でもエラーが表示されないです。
ターミナル上でCommit.shを実行するとコミット処理も含めて全て正常に処理が走ることは確認しています。
Commit.shはUnityプロジェクトのトップ、Assetsと同じ階層に配置しています。
使い方が間違っている、こうするとコミットできるなど、分かる方が居ましたら是非回答をよろしくお願いします。
Unity内のソース↓
// Unityメニューからコミット [MenuItem("Development/Commit")] private static void Commit() { // Commit.shを実行 cmd += "./Commit.sh;"; DoBashCommand(cmd); } // バッシュコマンドの実行 static void DoBashCommand(string cmd) { var p = new System.Diagnostics.Process(); p.StartInfo.FileName = "/bin/bash"; p.StartInfo.Arguments = "-c \" " + cmd + " \""; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.Start(); var output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); p.Close(); // ログ出力 UnityEngine.Debug.Log(output); }
Commit.sh↓
#!/bin/bash cd Assets/Commit svn st | grep '^!' | awk '{print $2}' | xargs svn delete svn st | grep '^?' | awk '{print $2}' | xargs svn add #ここまでは実行できる↑ #----------------------------------------------------------- #Unityから実行させると下記のコミット処理だけ動作しない↓ svn ci -m "なぜかコミットできない"
あなたの回答
tips
プレビュー