场景 1:每次前端更新后都要找到指定项目文件夹更新 svn 才能测试,所以在 untiyEditor 中写了个 SVN update 工具。
场景 2:开发人员经常说之前提的 BUG 现在又没有了,希望能在 bug 单中写入 svn 版本号,所以每次提 BUG 还得手动记录 svn version ,干脆把这个也一起做了。
效果图:

public class GMPanel:EditorWindow
{
      GMPanel()
      {
        GetSvnVersion();
      }


        [MenuItem("QA/GM面板")]
        public static void OpenWindow()
       {
                  EditorWindow.GetWindow(typeof(GMPanel));
        }

        void OnGUI()
        {
                    this.titleContent = new GUIContent("GM面板");
                    //显示svn版本号
                    GUILayout.Label("当前SVN版本号:" + svnVersion);

                     if (GUILayout.Button("SVN Update", GUILayout.Width(100), GUILayout.Height(30)))
                    {
                            //执行svn update
                              RunCmd("TortoiseProc.exe /command:update /path:\"../\" /closeonend:0");
                             GetSvnVersion();

                      }
        }

   //操作cmd命令行
    private static string RunCmd(string command)
    {
        Process p = new Process();
        p.StartInfo.FileName = "cmd.exe";           //确定程序名
        p.StartInfo.Arguments = "/c " + command;    //确定程式命令行
        p.StartInfo.UseShellExecute = false;        //Shell的使用
        p.StartInfo.RedirectStandardInput = true;   //重定向输入
        p.StartInfo.RedirectStandardOutput = true; //重定向输出
        p.StartInfo.RedirectStandardError = true;   //重定向输出错误
        p.StartInfo.CreateNoWindow = true;          //设置置不显示示窗口
        p.Start();
        return p.StandardOutput.ReadToEnd();        //输出出流取得命令行结果果       
    }

    //得到svnVersion 
    void GetSvnVersion()
    {
        RunCmd("svn info");
        string svninfo = RunCmd("svn info");
        string[] strArray = svninfo.Split('\n');
        svnVersion = strArray[6].Split(':')[1];
    }
}

注:环境变量中必须配置了 svn


↙↙↙阅读原文可查看相关链接,并与作者交流