Unity 右键快捷进行SVN操作

2024-08-24 19:32

本文主要是介绍Unity 右键快捷进行SVN操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原因

Unity 项目使用 SVN 进行版本管理,每当需要更新或提交文件的时候,都需要切换到 Windows 资源管理器,进入项目文件夹里面进行 SVN 操作,非常繁琐。

方法

直接集成 SVN 操作到 Unity 里面,在 Project 视图里,实现右键快捷进行 SVN 操作。

这里写图片描述

使用的是 TortoiseSVN 提供的命令行方式,详细参数说明可以查看:https://tortoisesvn.net/docs/release/TortoiseSVN_zh_CN/tsvn-automation.html#tsvn-automation-basics

步骤

新建编辑器脚本文件SVNTool.cs

using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;namespace Tools
{public static class SVNTool{/// <summary>/// SVN更新指定的路径/// 路径示例:Assets/1.png/// </summary>/// <param name="assetPaths"></param>public static void UpdateAtPath(string assetPath){List<string> assetPaths = new List<string>();assetPaths.Add(assetPath);UpdateAtPaths(assetPaths);}/// <summary>/// SVN更新指定的路径/// 路径示例:Assets/1.png/// </summary>/// <param name="assetPaths"></param>public static void UpdateAtPaths(List<string> assetPaths){if (assetPaths.Count == 0){return;}string arg = "/command:update /closeonend:0 /path:\"";for (int i = 0; i < assetPaths.Count; i++){var assetPath = assetPaths[i];if (i != 0){arg += "*";}arg += assetPath;}arg += "\"";SvnCommandRun(arg);}/// <summary>/// SVN提交指定的路径/// 路径示例:Assets/1.png/// </summary>/// <param name="assetPaths"></param>public static void CommitAtPaths(List<string> assetPaths, string logmsg = null){if (assetPaths.Count == 0){return;}string arg = "/command:commit /closeonend:0 /path:\"";for (int i = 0; i < assetPaths.Count; i++){var assetPath = assetPaths[i];if (i != 0){arg += "*";}arg += assetPath;}arg += "\"";if (!string.IsNullOrEmpty(logmsg)){arg += " /logmsg:\"" + logmsg + "\"";}SvnCommandRun(arg);}[MenuItem("Assets/SVN Tool/SVN 更新")]private static void SvnToolUpdate(){List<string> assetPaths = SelectionUtil.GetSelectionAssetPaths();UpdateAtPaths(assetPaths);}[MenuItem("Assets/SVN Tool/SVN 提交...")]private static void SvnToolCommit(){List<string> assetPaths = SelectionUtil.GetSelectionAssetPaths();CommitAtPaths(assetPaths);}[MenuItem("Assets/SVN Tool/显示日志")]private static void SvnToolLog(){List<string> assetPaths = SelectionUtil.GetSelectionAssetPaths();if (assetPaths.Count == 0){return;}// 显示日志,只能对单一资产string arg = "/command:log /closeonend:0 /path:\"";arg += assetPaths[0];arg += "\"";SvnCommandRun(arg);}[MenuItem("Assets/SVN Tool/全部更新", false, 1100)]private static void SvnToolAllUpdate(){// 往上两级,包括数据配置文件string arg = "/command:update /closeonend:0 /path:\"";arg += "..";arg += "\"";SvnCommandRun(arg);}[MenuItem("Assets/SVN Tool/全部日志", false, 1101)]private static void SvnToolAllLog(){// 往上两级,包括数据配置文件string arg = "/command:log /closeonend:0 /path:\"";arg += "..";arg += "\"";SvnCommandRun(arg);}/// <summary>/// SVN命令运行/// </summary>/// <param name="arg"></param>private static void SvnCommandRun(string arg){string workDirectory = Application.dataPath.Remove(Application.dataPath.LastIndexOf("/Assets", StringComparison.Ordinal));System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo{UseShellExecute = false,CreateNoWindow = true,FileName = "TortoiseProc",Arguments = arg,WorkingDirectory = workDirectory});}}
}

新建编辑器脚本文件SelectionUtil.cs

using System;
using System.Collections.Generic;
using UnityEditor;public class SelectionUtil
{/// <summary>/// 得到选中资产路径列表/// </summary>/// <returns></returns>public static List<string> GetSelectionAssetPaths(){List<string> assetPaths = new List<string>();// 这个接口才能取到两列模式时候的文件夹foreach (var guid in Selection.assetGUIDs){if (string.IsNullOrEmpty(guid)){continue;}string path = AssetDatabase.GUIDToAssetPath(guid);if (!string.IsNullOrEmpty(path)){assetPaths.Add(path);}}return assetPaths;}
}

这篇关于Unity 右键快捷进行SVN操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103397

相关文章

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3