|
可以在Unity内一键更新,不用再去文件夹点右键提交更新了
using System;using System.Diagnostics;using System.IO;using UnityEditor;using UnityEngine;namespace SVNTool{ public class SvnEditor : EditorWindow { #region Setup private const string Svnkey = "key_svnroot"; private const string SvnName = "TortoiseProc.exe"; private static string s_svnpath = SvnName; [MenuItem("SVN/Setup SVN", priority = 0)] public static void Setup() { GetWindow<SvnEditor>(); } #endregion #region Log [MenuItem("Assets/SVN/", priority = 10)] [MenuItem("Assets/SVN/查看所有提交记录 (Log All) ", priority = 11)] [MenuItem("SVN/", priority = 10)] [MenuItem("SVN/查看所有提交记录 (Log All) ", priority = 11)] public static void SVNLogAll() { SvnCmdProject(EmSVNCmd.Log); } [MenuItem("Assets/SVN/查看提交记录 (Log) ", priority = 1)] public static void SVNLog() { SvnCmdSelect(EmSVNCmd.Log); } #endregion #region Update [MenuItem("Assets/SVN/更新 (Update) ", priority = 2)] public static void SVNUpdate() { SvnCmdSelect(EmSVNCmd.Update); } [MenuItem("Assets/SVN/更新全部 (Update All) ", priority = 12)] [MenuItem("SVN/更新全部 (Update All) ", priority = 12)] public static void SVNUpdateAll() { SvnCmdProject(EmSVNCmd.Update); } #endregion #region Commit [MenuItem("Assets/SVN/提交全部 (Commit All) ", priority = 13)] [MenuItem("SVN/提交全部 (Commit All) ", priority = 13)] public static void SVNCommitAll() { SvnCmdProject(EmSVNCmd.Commit); } [MenuItem("Assets/SVN/提交 (Commit) ", priority = 3)] public static void SVNCommit() { SvnCmdSelect(EmSVNCmd.Commit); } #endregion #region Revert [MenuItem("Assets/SVN/还原 (Revert) ", priority = 4)] public static void SVNRevert() { SvnCmdSelect(EmSVNCmd.Revert); } #endregion #region Clearup [MenuItem("Assets/SVN/ClearUpAll", priority = 5)] [MenuItem("SVN/ClearUpAll", priority = 15)] public static void SVNClearUpAll() { SvnCmdProject(EmSVNCmd.Clearup); } #endregion #region core private static void SvnCmdProject(EmSVNCmd cmd) { var path = Application.dataPath; var project = Directory.GetParent(path); ProcessStart(cmd, project.FullName); } private static void SvnCmdSelect(EmSVNCmd cmd) { var select = Selection.activeObject; var path = AssetDatabase.GetAssetPath(select); ProcessStart(cmd, path); } private static void ProcessStart(EmSVNCmd cmd, string path) {#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN try { var info = new ProcessStartInfo(s_svnpath) { Arguments = string.Format("/command:{0} /path:{1} /closeonend:0", cmd.ToString().ToLower(), path) }; Process.Start(info); } catch (Exception) { Setup(); }#endif } #endregion internal void OnEnable() { s_svnpath = EditorPrefs.GetString(Svnkey); } internal void OnGUI() { EditorGUILayout.LabelField("设置SVN"); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("SVN程序", GUILayout.Width(50)); EditorGUILayout.SelectableLabel(s_svnpath, GUILayout.Width(200)); if (GUILayout.Button("select")) { var path = EditorUtility.OpenFilePanel("请选择TortoiseProc.exe存储位置", "", "exe"); if (string.IsNullOrEmpty(path)) return; s_svnpath = path; EditorPrefs.SetString(Svnkey, s_svnpath); } if (GUILayout.Button("Clear")) { s_svnpath = SvnName; EditorPrefs.SetString(Svnkey, s_svnpath); } EditorGUILayout.EndHorizontal(); } private enum EmSVNCmd { Log, Update, Commit, Revert, Clearup } }} |
|