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

相关文章

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os