Unity工具——SVN工具
个人学习笔记,如有错误、疑问、建议,欢迎留言。
声明:本文不得以任何形式进行转载。
前言:在商业的项目中,许多公司会使用SVN
或GIT
等版本控制系统来协作开发,可是在Unity
编辑器中并没有集成SVN
的相关功能,每当我们需要提交或者更新代码时,需要在项目的文件夹中去进行操作,所以写了一个工具来实现在Unity
编辑器中可以直接使用SVN
。
核心原理:
在Windows
中,我们可以通过cmd
启动各种其他应用程序,SVN
也不例外,我们在cmd
中执行这行命令,便可以进行SVN
操作:
TortoiseProc.exe /command:xxxxxxx /path:xxxxxxxxx /closeonend:0
其中,/command:
后为操作的类型(即update
、commit
、revert
);/path:
后为项目的路径。
根据以上原理,我们的工具代码如下:
using System;
using System.Threading;
using System.Diagnostics;
using UnityEngine;
using UnityEditor;/// <summary>
/// Unity SVN工具
/// </summary>
public class SVNTool
{/// <summary>/// svn的GUI程序名/// </summary>private static readonly string SVN_APP_NAME = "TortoiseProc.exe";/// <summary>/// 项目路径,即Assets文件夹/// </summary>private static string projectPath = Application.dataPath;/// <summary>/// cmd命令模板/// </summary>private static string cmdCommandModule = SVN_APP_NAME + " " + "/command:{0} /path:{1} /closeonend:0";/// <summary>/// svn update assets/// </summary>/// update整个Assets文件夹[MenuItem("Tools/SVN Tool/SVN Update All")]public static void UpdateAll(){string cmdCommand = string.Format(cmdCommandModule, "update", projectPath);InvokeCmd(cmdCommand);}/// <summary>/// svn commit assets/// </summary>/// commit整个Assets文件夹[MenuItem("Tools/SVN Tool/SVN Commit All")]public static void CommitAll(){string cmdCommand = string.Format(cmdCommandModule, "commit", projectPath);InvokeCmd(cmdCommand);}/// <summary>/// svn revert assets/// </summary>/// revert整个Assets文件夹[MenuItem("Tools/SVN Tool/SVN Revert All")]public static void RevertAll(){string cmdCommand = string.Format(cmdCommandModule, "revert", projectPath);InvokeCmd(cmdCommand);}/// <summary>/// svn showlog assets/// </summary>/// showLog整个Assets文件夹[MenuItem("Tools/SVN Tool/SVN ShowLog All")]public static void ShowLogAll(){string cmdCommand = string.Format(cmdCommandModule, "log", projectPath);InvokeCmd(cmdCommand);}/// <summary>/// svn update select/// </summary>/// update在Assets界面选中的资源[MenuItem("Assets/SVN Tool/SVN Update")]public static void UpdateSelect(){string cmdCommand = string.Format(cmdCommandModule, "update", GetSVNCommand());InvokeCmd(cmdCommand);}/// <summary>/// svn commit select/// </summary>/// commit在Assets界面选中的资源[MenuItem("Assets/SVN Tool/SVN Commit")]public static void CommitSelect(){string cmdCommand = string.Format(cmdCommandModule, "commit", GetSVNCommand());InvokeCmd(cmdCommand);}/// <summary>/// svn revert select/// </summary>/// revert在Assets界面选中的资源[MenuItem("Assets/SVN Tool/SVN Revert")]public static void RevertSelect(){string cmdCommand = string.Format(cmdCommandModule, "revert", GetSVNCommand());InvokeCmd(cmdCommand);}public static string GetSVNCommand(){string[] selectFilePath = GetSelectFilePath();string temp = string.Empty;for(int i = 0; i < selectFilePath.Length; i++){temp += selectFilePath[i];temp += "*";}return temp;}/// <summary>/// 获取选中的资源的路径/// </summary>/// <returns>选中资源的路径 string[]</returns>public static string[] GetSelectFilePath(){string[] guidArray = Selection.assetGUIDs;string[] selectFilePath = new string[guidArray.Length];for(int i = 0; i < guidArray.Length; i++){selectFilePath[i] = AssetDatabase.GUIDToAssetPath(guidArray[i]);}return selectFilePath;}/// <summary>/// 调用cmd/// </summary>/// <param name="cmdCommand">cmd命令</param>private static void InvokeCmd(string cmdCommand){new Thread(new ThreadStart(() => //新建线程,ThreadStart表示在Thread上执行的方法{try{Process p = new Process(); //新建系统进程//Process中的StartInfo为要传递给Process.Start()方法的属性//设置p.StartInfo属性p.StartInfo.FileName = "cmd.exe"; //要启动的应用程序p.StartInfo.Arguments = "/c " + cmdCommand + "&exit"; //启动应用程序时要使用的一组命令行参数p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动进程(如果是从可执行文件创建进程,应设置为false)p.StartInfo.RedirectStandardInput = true; //指示应用程序的输入是否从StandardInput流中读取的值(StandardInput)p.StartInfo.RedirectStandardOutput = true;p.StartInfo.RedirectStandardError = true;p.StartInfo.CreateNoWindow = true; //不显示程序窗口p.Start(); //启动进程p.WaitForExit(); //等待程序执行完退出进程p.Close(); //关闭进程}catch(Exception e){Console.WriteLine(e.Message);}})).Start();}
}
该工具实现了SVN
的update
、commit
、revert
、showlog
这四个最常用的功能。
补充:
1、除了以上工具中的SVN
命令外,SVN
还有其他几种cmd
命令:checkout
、diff
、add
2、在Visual Studio
中,可直接在拓展中安装VisualSVN for Visual Studio
插件实现SVN
操作。
Unity工具——SVN工具相关推荐
- SVN工具的使用 和在Eclipse中安装GPD插件:(多步审批流,因此选择使用工作流(JBPM)来实现)...
前言 重点解说SVN工具的还原版本号. 1.提交svn之前.要先更新文件.假设更新之后有版本号冲突的话.就线下解决掉冲突,在把该文件标记为已经解决冲突. 正文 使用SVN还原历史版本号 去除掉Ecli ...
- 黑苹果 装SVN工具 cornerstone无法打开解决办法——网卡内建
黑苹果 装SVN工具 cornerstone无法打开解决办法--网卡内建 具体内容,请参照远景帖子:http://bbs.pcbeta.com/viewthread-900017-1-1.html 转 ...
- Unity推出2D工具:不再只是3D引擎
本文来自 GameLook ,转载自觉标明原文出处,以示尊重! 原文:http://www.gamelook.com.cn/2013/08/128864 GameLook报道/2013 Unity全球 ...
- 项目管理实践之版本控制工具SVN在Windows平台下的平台搭建
通过<项目管理实践之版本控制工具SVN>我们知道,在windows平台下,如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Server为 ...
- Unity TileMap 2D 工具基础教程
Unity TileMap 2D 工具基础教程 Unity TileMap 2D 工具基础教程 TileMap 工程创建 Sprite Editor 工具使用 TileMap 功能说明 TilePal ...
- Unity编辑器小工具——文件查重(MD5)
Unity编辑器小工具--文件查重(MD5) 算法思想: 在Unity中,每一个不同资源.文件所生成MD5码是不同的,但是相同文件,路径不同.文件名不同的同一类文件的MD5码是相同的,所以可以通过生成 ...
- java操作svn工具类
依赖包 <dependency><groupId>org.tmatesoft.svnkit</groupId><artifactId>svnkit< ...
- ios Mac下的SVN工具:Cornerstone与Versions和使用subversion管理iOS源代码
原文地址为: ios Mac下的SVN工具:Cornerstone与Versions和使用subversion管理iOS源代码 ios管理代码的方式除了上次介绍的利用ios 自带的git库,还有使用S ...
- Unity游戏开发工具的下载与安装
Unity游戏开发工具 Visual Studio下载 UnityHub的下载 Visual Studio下载 打开网址https://visualstudio.microsoft.com/zh-ha ...
- Unity实用小工具或脚本—以对象方式访问MySql数据库
一.前言 以对象方式处理MySql数据库顾名思义就是可以将每个数据库表作为一个类,没一条数据作为一个对象来进行操作,大致思路和我上一篇文章类似,这里不再赘述.文章后有资源下载地址,所使 ...
最新文章
- Using PyQt first procedure-bupt IPTV client
- 转行python能拿到多少钱_想转行学python过来人提醒大家几点
- 工作301:substring使用
- 三步走!从头开始设计一款游戏
- C# 根据年月日计算星期几
- 旋转矩阵与欧拉角的相互转换及代码
- ijkplayer知识点(1)- ijkplayer 调用流程总览思维导图
- python cpk计算器_Python进行CPK计算
- Flash XSS 漏洞实例
- Hadoop纠删码(Erasure Coding)简介
- 和周杰讨论:DB2连接问题
- python 生成词云
- r5 5500参数 r5 5500有核显吗 锐龙r5 5500相当于i几
- 【论文阅读】Modeling the world from internet photo collections
- 字典、元组、字符串习题
- 数学基础知识总结 —— 11. 什么是泰勒公式与泰勒级数
- 计算机科学的鼻祖,他是现代计算机科学的鼻祖,编程界的上帝
- 人生成功的六匹马(转自喷嚏网的一篇品书)
- 新手问题 Table '库名.表名' doesn't exist
- 15个最佳Flash物理游戏
热门文章
- 四位共阳极数码管显示函数_实验四 共阴数码管静态显示
- VMware12虚拟机中安装win7(安装好的解压版Win7_64-cl1.vmdk)
- 图解机器学习算法(14) | PCA降维算法详解(机器学习通关指南·完结)
- SAXReader解析xml
- matlab指派问题求法,matlab求解指派问题
- 遥控直升机主旋翼设定
- 曾经的百度开源呼叫中心
- c语言九宫格拼图程序,C语言简单游戏编程学习入门之九宫格拼图
- python数据处理分析实训心得总结_python数据分析的总结
- 今日分享|每日领红包最高618,全是无门槛使用!