Unity扩展SVN命令

可以直接在unity里右键文件提交和查看提交记录
在这里插入图片描述
顶部菜单栏上回退和更新整个unity工程
在这里插入图片描述
SvnForUnity.CS
记得要放在Editor文件夹下

using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using UnityEditor;
using UnityEngine;
using Debug = UnityEngine.Debug;public class SvnForUnity
{static string SVN_BASE = Application.dataPath.Replace("/", "\\").Remove(Application.dataPath.Replace("/", "\\").Length - 6, 6);/// <summary>/// 调用cmd命令/// </summary>/// <param name="command">cmd命令</param>/// <param name="argument">命令参数</param>private static void ProcessCommand(string command, string argument){ProcessStartInfo start = new ProcessStartInfo(command){Arguments = argument,CreateNoWindow = false,ErrorDialog = true,UseShellExecute = true//明确传入的执行文件类型};if (start.UseShellExecute){start.RedirectStandardOutput = false;start.RedirectStandardError = false;start.RedirectStandardInput = false;}else{start.RedirectStandardOutput = true;start.RedirectStandardError = true;start.RedirectStandardInput = true;start.StandardOutputEncoding = System.Text.Encoding.UTF8;start.StandardErrorEncoding = System.Text.Encoding.UTF8;}Process p = Process.Start(start);p.WaitForExit();p.Close();}static string MetaFile(string str){return str + ".meta";}static string GetSelectFilePath(){var selectAssets = Selection.GetFiltered<Object>(SelectionMode.Assets);if (selectAssets.Length > 0){string selectionPath = string.Empty;for (int i = 0; i < selectAssets.Length; i++){// Debug.Log(AssetDatabase.GetAssetPath(selectAssets[i]));if (AssetDatabase.GetAssetPath(selectAssets[i]) == "Assets"){return SVN_BASE + "Assets" + "\"";}if (i > 0){selectionPath = selectionPath + "*" + SVN_BASE + AssetDatabase.GetAssetPath(selectAssets[i]).Replace("/", "\\");selectionPath = selectionPath + "*" + SVN_BASE + MetaFile(AssetDatabase.GetAssetPath(selectAssets[i])).Replace("/", "\\");}else{selectionPath = SVN_BASE + AssetDatabase.GetAssetPath(selectAssets[i]).Replace("/", "\\");selectionPath = selectionPath + "*" + SVN_BASE + MetaFile(AssetDatabase.GetAssetPath(selectAssets[i])).Replace("/", "\\");}}return selectionPath  + "\"";}return SVN_BASE + "Assets" + "\"";}/// <summary>/// SVN更新/// </summary>[MenuItem("SVN/Update", false, 1)]public static void SvnUpdate(){ProcessCommand("TortoiseProc.exe", "/command:update /path:\"" + SVN_BASE + "Assets" + "\"");}/// <summary>/// SVN提交/// </summary>[MenuItem("Assets/SVN/Commit", false, 2)]public static void SvnCommit(){var selectPath = GetSelectFilePath();ProcessCommand("TortoiseProc.exe", "/command:commit /path:\"" + selectPath);}/// <summary>/// SVN回退/// </summary>[MenuItem("SVN/Revert", false, 3)]public static void SvnRevert(){ProcessCommand("TortoiseProc.exe", "/command:revert /path:\"" + SVN_BASE + "Assets" + "\"");}/// <summary>/// SVN显示信息/// </summary>[MenuItem("Assets/SVN/ShowLog", false, 4)]public static void SvnLog(){var selectPath = GetSelectFilePath();ProcessCommand("TortoiseProc.exe", "/command:log /path:\"" + selectPath);}
}

参考
https://blog.csdn.net/egostudio/article/details/51074814

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Era3D 论文学习

代码地址&#xff1a;https://penghtyx.github.io/Era3D/ 论文地址&#xff1a;https://arxiv.org/abs/2405.11616 解决了什么问题&#xff1f; 尽管多视角内容生成领域取得了显著的进展&#xff0c;但现有的方案仍然面临着相机先验不匹配、效果差、分辨率低等问题&#xff0…

Python 数据爬取理论解读

在信息化时代&#xff0c;数据是最宝贵的资源之一。很多企业和个人都希望能够获取大量的数据来分析趋势、了解市场、预测未来等。Python 作为一门强大的编程语言&#xff0c;其简洁的语法和丰富的库使得数据爬取变得相对容易。本文将从程序员的角度出发&#xff0c;详细探讨 Py…

windows USB 设备驱动开发- 对 MUTT 设备进行 BIOS/UEFI 测试

对 MUTT 设备进行 BIOS/UEFI 测试&#xff0c;BIOS/UEFI 测试验证 USB 启动以及控制器到操作系统的切换。 USB 启动配置 在 USB 2.0 (EHCI) 和 USB 3.0 (xHCI) 控制器上执行这些测试&#xff0c;每种主要 USB 媒体类型 &#xff0c;USB 2.0 BOT、USB 3.0 BOT 和 USB 3.0 UASP…

Oracle物化视图解析

目录 一、物化视图的优点二、物化视图的缺点三、物化视图的类型四、创建物化视图五、刷新物化视图1、手动刷新2、自动刷新&#xff08;1&#xff09;刷新策略&#xff08;2&#xff09;定期刷新&#xff08;3&#xff09;快速刷新3.1、快速刷新过程3.2、快速刷新的优点3.3、使用…

pytorch中的面向对象编程方法

一、__xxx__形式的魔法方法 我们可以经常在python代码片段中看到类的定义&#xff0c;其中第一个被定义的方法往往是__init__&#xff0c;如下所示&#xff1a; class Accumulator: """在n个变量上累加"""def __init__(self, n):self.data […

【Android】ListView和RecyclerView知识总结

文章目录 ListView步骤适配器AdpterArrayAdapterSimpleAdapterBaseAdpter效率问题 RecyclerView具体实现不同布局形式的设置横向滚动瀑布流网格 点击事件 ListView ListView 是 Android 中的一种视图组件&#xff0c;用于显示可滚动的垂直列表。每个列表项都是一个视图对象&…

【JavaScript】前端路由

前端路由是指在前端⻚⾯内部实现⻚⾯之间的跳转&#xff0c;⽽不是像传统的⽹⻚跳转那样在后端进⾏⻚⾯跳转&#xff0c;从后端获取 html 页面。前端路由使⽤浏览器的 history 接⼝&#xff0c;通过改变浏览器的 URL&#xff0c;来更新⻚⾯的视图。 前端路由适合⽤于单⻚⾯应⽤…

Python教程(一):环境搭建及PyCharm安装

目录 引言1. Python简介1.1 编译型语言 VS 解释型语言 2. Python的独特之处3. Python应用全览4. Python版本及区别5. 环境搭建5.1 安装Python&#xff1a; 6. 开发工具&#xff08;IDE&#xff09;6.1 PyCharm安装教程6.2 永久使用教程 7. 编写第一个Hello World结语 引言 在当…

每日一题 LeetCode03 无重复字符的最长字串

1.题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长字串的长度。 2 思路 可以用两个指针, 滑动窗口的思想来做这道题,即定义两个指针.一个left和一个right 并且用一个set容器,一个length , 一个maxlength来记录, 让right往右走,并且用一个set容器来…

探索Prompt的世界

在人工智能&#xff08;AI&#xff09;和自然语言处理&#xff08;NLP&#xff09;的飞速发展中&#xff0c;prompt技术作为一种与语言模型交互的重要方式&#xff0c;正逐步占据中心舞台。为了对prompt这一概念进行全面介绍&#xff0c;我们将从其发展历史、运行原理、调试方式…

如何避免蓝屏?轻量部署,安全和业务连续性才能两不误

自19日起&#xff0c;因CrowdStrike软件更新的错误配置而导致的“微软全球蓝屏”&#xff0c;影响依然在持续。这场被称为“史上最大规模的IT故障”&#xff0c;由于所涉全球企业太多&#xff0c;专家估计“蓝屏”电脑全部恢复正常仍需时日。 尽管 CEO 乔治 库尔茨&#xff08…

2024年自动驾驶SLAM面试题及答案(更新中)

自动驾驶中的SLAM&#xff08;Simultaneous Localization and Mapping&#xff0c;即同步定位与地图构建&#xff09;是关键技术&#xff0c;它能够让车辆在未知环境中进行自主定位和地图建构。秋招来临之际&#xff0c;相信大家都已经在忙碌的准备当中了&#xff0c;尤其是应届…

Oracle星型查询转换解析

目录 一、星型查询转换原理二、配置星型查询转换三、性能考虑四、案例1、数据模型2、创建表和数据3、创建位图索引4、查询优化前5、查询优化后6、检查执行计划 Oracle的星型查询转换&#xff08;Star Query Transformation&#xff09;是Oracle数据库优化器的一个重要特性&…

Go语言入门之错误处理

Go语言入门之错误处理 错误处理是开发中必不可少的一个部分&#xff0c;go中的错误一般有两种&#xff0c;一种为error&#xff0c;一种为panic go语言通常返回一个错误值&#xff0c;然后检查错误值是否为nil&#xff0c;以此判断函数是否执行 1.Error Go使用error接口来表示一…

鸿蒙OpenHarmony Native API【drawing_pen.h】 头文件

drawing_pen.h Overview Related Modules: [Drawing] Description: 文件中定义了与画笔相关的功能函数 Since: 8 Version: 1.0 Summary Enumerations Enumeration NameDescription[OH_Drawing_PenLineCapStyle] { [LINE_FLAT_CAP], [LINE_SQUARE_CAP], [LINE_ROUND_…

Exchange Server 中 Exchange 虚拟目录的默认设置

Exchange Server 2016 和 Exchange Server 2019 在服务器安装过程中自动配置多个 Internet Information Services (IIS) 虚拟目录。 以下部分中的表显示了邮箱服务器上客户端访问 (前端) 服务的设置&#xff0c;以及默认的 IIS 身份验证和安全套接字层 (SSL) 设置。 有时为了调…

聚焦智慧出行,TDengine 与路特斯科技再度携手

在全球汽车行业向电动化和智能化转型的过程中&#xff0c;智能驾驶技术正迅速成为行业的焦点。随着消费者对出行效率、安全性和便利性的需求不断提升&#xff0c;汽车制造商们需要在全球范围内实现低延迟、高质量的数据传输和处理&#xff0c;以提升用户体验。在此背景下&#…

从零开始:神经网络(1)——什么是人工神经网络

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 人工神经网络&#xff08;Artificial Neural Network&#xff0c;简称ANN&#xff09;是一种模仿生物神经网络结构和功…

Android SurfaceFlinger——GraphicBuffer初始化(二十九)

在 SurfaceFlinger 中,GraphicBuffer 是一个关键的数据结构,用于封装和管理图形数据的内存缓冲区。它不仅在 SurfaceFlinger 内部使用,也被其他组件如 GPU 驱动、摄像头服务、视频解码器等广泛利用,以实现高效的数据交换和图形渲染。 一、概述 GraphicBuffer 对象封装了一…

从dev分支合并到master分支

git命令从dev分支合并到master分支 1、拉取dev分支的代码 git checkout dev //切换成本地分支 git pull origin dev //拉取远程开发分支 git add . //暂存到本地仓库 git commit -m //增加备注信息 git push origin dev //推送到远程仓库 git checkout master // 切换到maste…