Unity SVN更新提交小工具

news2024/12/28 17:56:12

Unity SVN更新提交小工具

  • 前言
  • 使用说明
    • 必要前提
    • 源码
    • 参数说明
  • 感谢

前言

Unity开发时每次都要到文件夹中操作SVN,做了一个小工具能够在Editor中直接操作。
Editor中直接操作SVN

使用说明

必要前提

前提是要安装好SVN,在文件夹右键能够看到安装的SVN
确认安装SVN

源码

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

/// <summary>
/// 每次打开文件夹操作太麻烦,所以GUI比较方便
/// </summary>
public class SVNHelper : EditorWindow
{
    [MenuItem("SVN Helper/自信更新 CertainUpdate", false, 1)]
    static void SVNCertainUpdate()
    {
        ProcessCommand("TortoiseProc.exe", " /command:update /path:" + SVNProjectPath + " /closeonend:3");
    }

    /// <summary>
    /// 提交当前项目的SVN
    /// </summary>
    [MenuItem("SVN Helper/提交 Commit")]
    static void SVNCommit()
    {
        List<string> pathList = new List<string>();
        string basePath = SVNProjectPath + "/Assets";
        pathList.Add(basePath);
        //pathList.Add(SVNProjectPath + "/ProjectSettings");
        string commitPath = string.Join("*", pathList.ToArray());
        ProcessCommand("TortoiseProc.exe", "/command:commit /path:" + commitPath);
    }

    [MenuItem("SVN Helper/更新 Update")]
    static void SVNUpdate()
    {
        ProcessCommand("TortoiseProc.exe", "/command:update /path:" + SVNProjectPath + " /closeonend:0");
    }

    [MenuItem("SVN Helper/清理 CleanUp")]
    static void SVNCleanUp()
    {
        ProcessCommand("TortoiseProc.exe", "/command:cleanup /path:" + SVNProjectPath);
    }

    [MenuItem("SVN Helper/记录 Log")]
    static void SVNLog()
    {
        ProcessCommand("TortoiseProc.exe", "/command:log /path:" + SVNProjectPath);
    }

    /// <summary>
    /// 当前项目路径
    /// </summary>
    static string SVNProjectPath
    {
        get
        {
            System.IO.DirectoryInfo parent = System.IO.Directory.GetParent(Application.dataPath);
            return parent.ToString();
        }
    }

    public static void ProcessCommand(string command, string argument)
    {
        // 创建进程启动信息对象
        System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(command);
        // 设置进程启动参数
        info.Arguments = argument;
        info.CreateNoWindow = false;
        info.ErrorDialog = true;
        info.UseShellExecute = true;

        // 如果使用shell执行,则不重定向标准输入、输出和错误
        if (info.UseShellExecute)
        {
            info.RedirectStandardOutput = false;
            info.RedirectStandardError = false;
            info.RedirectStandardInput = false;
        }
        else
        {
            info.RedirectStandardOutput = true;
            info.RedirectStandardError = true;
            info.RedirectStandardInput = true;
            info.StandardOutputEncoding = System.Text.UTF8Encoding.UTF8;
            info.StandardErrorEncoding = System.Text.UTF8Encoding.UTF8;
        }
        // 启动进程
        System.Diagnostics.Process process = System.Diagnostics.Process.Start(info);

        if (!info.UseShellExecute)
        {
            Debug.Log(process.StandardOutput);
            Debug.Log(process.StandardError);
        }
        // 等待进程退出并关闭进程
        process.WaitForExit();
        process.Close();
    }
}

参数说明

命令说明
:about显示关于对话框。如果没有给命令也会显示。
:log打开日志对话框,/path 指定了显示日志的文件或目录,另外还有三个选项可以设置: /startrev:xxx、/endrev:xxx和/strict
:checkout打开检出对话框,/path指定了目标路径,而/url制定了检出的URL。
:import打开导入对话框,/path 指定了数据导入路径。
:update将工作副本的/path更新到HEAD,如果给定参数/rev,就会弹出一个对话框询问用户需要更新到哪个修订版本。为了防止指定修订版本号/rev:1234的对话框,需要选项/nonrecursive和/ignoreexternals。
:commit打开提交对话框,/path 指定了目标路径或需要提交的文件列表,你也可以使用参数 /logmsg 给提交窗口传递预定义的日志信息,或者你不希望将日志传递给命令行,你也可以使用/logmsgfile:path,path 指向了保存日志信息的文件。为了预先填入bug的ID(如果你设置了集成bug追踪属性),你可以使用/bugid:"the bug id here"完成这个任务。
:add将/path的文件添加到版本控制。
:revert恢复工作副本的本地修改,/path说明恢复哪些条目。
:cleanup清理中断和终止的操作,将工作副本的/path解锁。
:resolve将/path指定文件的冲突标示为解决,如果给定/noquestion,解决不会向用户确认操作。
:repocreate在/path创建一个版本库。
:switch打开选项对话框。/path 指定目标目录。
:export将/path的工作副本导出到另一个目录,如果/path指向另一个未版本控制目录,对话框会询问要导出到/path的URL。
:mergeOpens合并对话框。/path指定目标目录。对于合并修订范围,可以使用以下选项:/fromurl:URL、/revrange:string。对于合并两个存储库树,可以使用以下选项:/fromurl:URL、/tourl:URL、/fromrev:xxx和/torev:xxx。这些预先填充合并对话框中的相关字段。
:mergeall打开“全部合并”对话框。/path指定目标目录。
:copy打开分支/标记对话框。/path是要从中分支/标记的工作副本。/url是目标url。您还可以指定/logmsg开关将预定义的日志消息传递到分支/标记对话框。或者,如果您不想在命令行上传递日志消息,请使用/logmsgfile:path,其中path指向包含日志消息的文件。
:settings打开设置对话框。
:remove从版本控制里移除/path中的文件。
:rename重命名/path的文件,会在对话框中询问新文件,为了防止一个步骤中询问相似文件,传递/noquestion。
:diff启动TortoiseSVN设置中指定的外部差异程序。/path指定第一个文件。如果设置了选项/path2,则diffprogram将使用这两个文件启动。如果省略/path2,则在/path中的文件与其BASE之间进行差异。要明确设置愿景编号,请使用/startrev:xxx和/endrev:xxx。如果设置了/chint而未设置/path2,则通过首先将给定的修订归咎于文件来进行差异处理。
:showcompare根据要比较的URL和修订,这要么显示一个统一的diff(如果设置了unified选项),要么显示具有已更改文件列表的对话框,或者如果URL指向文件,则启动这两个文件的diff查看器。必须指定选项url1、url2、revision1和revision2。选项pegreview、ignorecentry、责备和统一是可选的。
:conflicteditor使用/path中冲突文件的正确文件启动TortoiseSVN设置中指定的冲突编辑器。
:relocate打开重定位对话框,/path指定了重定位的工作副本路径。
:help打开帮助文件
:repostatus打开为修改检出对话框,/path 指定了工作副本目录。
:repobrowser启动存储库浏览器对话框,指向/path中给定的工作副本的URL,或者/path直接指向URL。另外一个选项/rev:xxx可用于指定存储库浏览器应显示的修订版。如果省略/rev:xxx,则默认为HEAD。如果/path指向URL,/projectpropertiespath:path/to/wc指定读取和使用项目属性的路径。
:ignore将/path中的对象加入到忽略列表,也就是将这些文件添加到 svn:ignore 属性。
:blame为 /path 选项指定的文件打开追溯对话框。如果设置了 /startrev 和 /endrev 选项,不会显示询问追溯范围对话框,直接使用这些选项中的版本号。如果设置了 /line:nnn 选项,TortoiseBlame 会显示指定行数。也支持 /ignoreeol,/ignorespaces 和 /ignoreallspaces 选项。
:cat将/path指定的工作副本或URL的文件保存到/savepath:path,修订版本号在/revision:xxx,这样可以得到特定修订版本的文件。
:createpatch创建/path下的补丁文件。
:revisiongraph显示/path目录下的版本变化图。
:lock锁定/path中给定目录中的一个文件或所有文件。将显示“锁定”对话框,以便用户可以为锁定输入注释。
:unlock解锁/path中给定目录中的一个文件或所有文件。
:rebuildiconcache重建窗口图标缓存。仅在窗口图标损坏的情况下使用此选项。这样做的一个副作用(无法避免)是桌面上的图标被重新排列。要取消显示消息框,请通过/noquestion。
:properties显示 /path 给出的路径之属性对话框。

感谢

【unity拓展】在unity3d中集成SVN命令(非cmd方式而是打开svn界面方式)

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

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

相关文章

音效出众设计时尚,内置AI功能,sanag塞那Z50上手

现在蓝牙耳机已经成为人们生活中不可或缺的一部分了&#xff0c;像是在上班、坐车的时候&#xff0c;既可以享受自己的音乐空间&#xff0c;又不会吵到别人&#xff0c;看书、做题还是运动的时候&#xff0c;也可以保证长时间使用耳朵卫生、舒适度。正因为庞大的市场需求&#…

软件测试作业‖pytest+po+csv+html报告+cookie+selenium

软件测试作业‖pytestpocsvhtml报告cookieselenium 先用本地部署的系统试了下 或者UFT自动化测试里诺图书管理系统软件测试 # &#xff0c;#测试报告# #性能测试#&#xff0c;#测试用例#&#xff0c; #自动化测试# Selenium 的 Web自动化测试基本要求和注意事项 1.请使用ch…

Mysql的四大引擎,账号管理,数据库的建立

数据库存储引擎查看 Support字段说明 default的为默认引擎 YES表示可以使用 NO表示不能使用 命令 SHOW ENGINES 四大引擎 MEMORY 使用场景&#xff1a;由于易失性&#xff0c;可以用于存储在分析中产生的中间表 特点 所有的数据都保存在内存中&#xff0c;一旦服务器重启&…

专访 | STIF2023第四届国际科创节访第七在线CEO赵嘉程

12月15日&#xff0c;在STIF2023第四届国际科创节暨数服会上&#xff0c;第七在线获得年度数智化创新典范奖&#xff0c;第七在线CEO赵嘉程在颁奖典礼现场接受了媒体专访。 主持人&#xff1a;赵总&#xff0c;您好&#xff0c;欢迎您接受我们的专访&#xff0c;首先我们特别想…

Uniapp使用wx.getFuzzyLocation()方法,没有超过日调用次数,报错:“此key每日调用已达到上限”

前言&#xff1a; 最近在进行一个小程序项目开发的时候&#xff0c;使用wx.getFuzzyLocation()方法&#xff0c;没有超过日调用次数&#xff0c;但是却出现了报错&#xff1a;“此key每日调用已达到上限”。 解决方案&#xff1a; 打开腾讯位置服务 - 立足生态&#xff0c;连…

macos下php 5.6 7.0 7.4 8.0 8.3 8.4全版本PHP开发环境安装方法

在macos中如果使用brew 官方默认的core tap 只可以安装官方最新的稳定版PHP, 如果想要安装 php 5.6 或者 php 8.4版本的PHP就需要使用第三方的tap , 这里分享一个比较全面的brew tap shivammathur/php 这个tap里面包含了从php5.6到最新版php8.4的所有可用最新版本PHP, 而且是同…

全面解析 Postman 网页版的使用,提升你的 API 调试技能!

使用Postman网页版详细介绍 Postman是一款流行的API开发工具&#xff0c;可以帮助开发者优化工作流程。除了客户端&#xff0c;Postman还支持网页版访问&#xff0c;让用户能够从任何网页浏览器中访问该工具。在本篇文章中&#xff0c;我们将详细介绍如何使用Postman的网页版。…

Python for与while循环的介绍和对应练习题的巩固

for循环 重复执行同一段代码就是循环 循环列表 for val in list_name: list_num [1,2,3,4,5,6,7,8,9] for i in list_num:print(i)代码执行顺序 从上往下依次执行 遍历 通过某种顺序把某种集合所有元素都访问一遍 list_food{"火锅","烧烤","张…

SQL必知必会笔记(5~8章)

第五章 高级数据过滤 本章示例表为transcript成绩表&#xff0c;数据库软件选用SQLITE3&#xff0c;具体如下 1、高级过滤也是通过where条件子句实现&#xff0c;辅以and、or、in、not进行实现 2、and语句&#xff1a;and连接的多个条件为与的关系&#xff0c;例如 SELECT * FR…

进阶学习——Linux系统磁盘管理与文件系统

目录 一、磁盘 1.认识磁盘 2.分区 2.1MBR&#xff08;Master Boot Record&#xff09;——主引导记录 2.2GPT分区 2.3磁盘分区结构 3.文件系统 3.1文件系统组成 3.1.1XFS ext4 3.1.2swap 3.1.3FAT16、FAT32 3.1.4NTFS&#xff08;xfs&#xff09; 3.1.5EXT4 3…

uniapp中组件库丰富的Switch 开关选择器使用方法

目录 #平台差异说明 #基础使用 #加载中 #禁用switch #自定义尺寸 #自定义颜色 #自定义样式 #异步控制 API #Switch Props #Switch Event 选择开关用于在打开和关闭状态之间进行切换。 #平台差异说明 App&#xff08;vue&#xff09;App&#xff08;nvue&#xff0…

【每日一题】466. 统计重复个数-2024.1.2

题目&#xff1a; 466. 统计重复个数 定义 str [s, n] 表示 str 由 n 个字符串 s 连接构成。 例如&#xff0c;str ["abc", 3] "abcabcabc" 。 如果可以从 s2 中删除某些字符使其变为 s1&#xff0c;则称字符串 s1 可以从字符串 s2 获得。 例如&…

JavaSE语法之十五:异常(超全!!!)

文章目录 一、异常的概念与体系1. 异常的概念2. 异常的体系结构3. 异常的分类 二、异常的处理方式1. 防御式编程&#xff08;1&#xff09;LBYL 事前防御型&#xff08;2&#xff09;EAFP 时候认错型 2. 异常的抛出3. 异常的捕获&#xff08;1&#xff09;异常声明的 throws&am…

ASP.Net实现海鲜添加(三层架构,异常处理)

演示功能&#xff1a; 点击启动生成页面 点击添加跳转新界面 此处设置文本框多行 点击Button添加 步骤&#xff1a; 1、建文件 下图是三层架构列表&#xff0c;Models里面有模拟数据库中列的类&#xff0c;DAL中有DBHelper和service,BLL中有BllManager文件用于ui界面直接调用…

【愚公系列】2023年12月 HarmonyOS应用开发者高级认证(完美答案)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

MFC编程技巧与范例详解01

目录 1、MFC概述 &#xff08;1&#xff09;、MFC为什么不用C语言使用C &#xff08;2&#xff09;、MFC的开发模型文档-视图模型 &#xff08;3&#xff09;、一个完善的MFC程序应该包括 &#xff08;4&#xff09;、MFC常用的类 2、MFC的特性 &#xff08;1&#xff09…

AndroidStudio导入程序、项目(教程)

目录 1. 首先解压压缩包&#xff0c;转为文件夹 2. 打开解压好的项目文件夹&#xff0c;删除.gradle和.idea这两个文件 3. 修改bulid.gradle文件&#xff0c;将gradle的版本型号改成自己的 (1) 传统结构 (2) 简洁结构 4. 打开android stdio软件&#xff0c;导入已经修改好…

test ui-02-UI 测试组件之 Appium 入门介绍

Appium简介 正如主页所述&#xff0c;Appium的目标是支持许多不同平台&#xff08;移动、Web、桌面等&#xff09;的UI自动化。 不仅如此&#xff0c;它还旨在支持用不同语言&#xff08;JS、Java、Python等&#xff09;编写的自动化代码。 将所有这些功能组合到一个程序中是…

LabVIEW开发滚筒洗衣机动态监测系统

LabVIEW软件在滚筒洗衣机的动态监测和分析中扮演着关键角色。本案例展示了如何利用LabVIEW开发的系统来优化洗衣机的性能和可靠性。 首先&#xff0c;在建立洗衣机的动力学模型基础上&#xff0c;利用LabVIEW进行了关键零部件的动态优化设计。通过LabVIEW的高级计算和模拟功能…

华清远见作业第二十天——IO(第三天)

思维导图&#xff1a; 使用标准IO完成两个文件的拷贝 代码&#xff1a; #include<stdio.h> #include<string.h> #include<stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main(int argc, const char *…