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

Unity3D开发小贴士(十六)SVN插件 这是针对Windows下的TortoiseSVN的插件,其他平台或软件的插件,以后可能会补上(也可能不补,看缘分吧)。 using UnityEngine; using System.Diagnostics; using UnityEditor; #if UNITY_EDITOR_WIN public static class TortoiseSVN { const string S 阅读详情

先看看最终效果:




原理是unity通过调用命令行工具执行命令,执行时传递对应参数,文章后面会列出常用的svn命令~~~~~

首先,先在unity封装好调用命令行工具的函数,传命令和参数即可进行调用。

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;
		
		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();
	}
然后,调用对应的命令和参数。
[MenuItem("SVN/Commit",false,1)]
	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/Update",false,2)]
	static void SVNUpdate(){
		ProcessCommand ("TortoiseProc.exe", "/command:update /path:" + SVNProjectPath + " /closeonend:0");
	}
	
	[MenuItem("SVN/", false, 3)]
	static void Breaker () { }
	
	[MenuItem("SVN/CleanUp",false,4)]
	static void SVNCleanUp(){
		ProcessCommand ("TortoiseProc.exe", "/command:cleanup /path:" + SVNProjectPath);
	}
	
	[MenuItem("SVN/Log",false,5)]
	static void SVNLog(){
		ProcessCommand ("TortoiseProc.exe", "/command:log /path:" + SVNProjectPath);
	}

	static string SVNProjectPath{
		get{
			System.IO.DirectoryInfo parent = System.IO.Directory.GetParent(Application.dataPath);
			return parent.ToString();
		}
	}



以下是常用的命令:

TortoiseSVN是一个GUI客户端,这个自动化指导为你展示了让TortoiseSVN对话框显示并收集客户输入,如果你希望编写不需要输入的脚本,你应该使用官方的Subversion命令行客户端。
TortoiseSVN的GUI程序叫做TortoiseProc.exe。所有的命令通过参数/command:asdf指定,其中asdf是必须的命令名(命令名详见”表 1. 有效命令及选项列表“)。大多数此类命令至少需要一个路径参数,使用/path:"some\path"指定。在下面的命令表格中,命令引用的是/command:asdf参数,余下的代表了/path:"some\path"参数。
因为一些命令需要一个目标路径的列表(例如提交一些特定的文件),/path参数可以接收多个路径,使用*分割。
TortoiseSVN 使用临时文件在 shell 扩展和主程序之间传递多个参数。从 TortoiseSVN 1.5.0 开始,废弃/notempfile参数,不再需要增加此参数。
The progress dialog which is used for commits, updates and many more commands usually stays open after the command has finished until the user presses theOK button. This can be changed by checking the corresponding option in the settings dialog. But using that setting will close the progress dialog, no matter if you start the command from your batch file or from the TortoiseSVN context menu.
To specify a different location of the configuration file, use the parameter /configdir:"path\to\config\directory". This will override the default path, including any registry setting.
如果想在进度对话框执行完毕后自动关闭,而又不必设置永久性的参数,可以传递/closeonend参数。
/closeonend:0 不自动关闭对话框
/closeonend:1 如果没发生错误则自动关闭对话框
/closeonend:2 如果没发生错误和冲突则自动关闭对话框
/closeonend:3如果没有错误、冲突和合并,会自动关闭

下面的列表列出了所有可以使用TortoiseProc.exe访问的命令,就像上面的描述,必须使用/command:asdf的形式,在列表中,因为节省空间的关系省略了/command的前缀。

表 1.有效命令及选项列表
命令和描述
: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 the merge dialog. The /path specifies the target directory. For merging a revision range, the following options are available:/fromurl:URL, /revrange:string. For merging two repository trees, the following options are available: /fromurl:URL, /tourl:URL, /fromrev:xxx and/torev:xxx. These pre-fill the relevant fields in the merge dialog. 
:mergeall Opens the merge all dialog. The /path specifies the target directory. 
:copy Brings up the branch/tag dialog. The /path is the working copy to branch/tag from. And the /url is the target URL. You can also specify the/logmsg switch to pass a predefined log message to the branch/tag dialog. Or, if you don't want to pass the log message on the commandline, use /logmsgfile:path, where path points to a file containing the log message. 
:settings 打开设置对话框。 
:remove 从版本控制里移除/path中的文件。 
:rename 重命名/path的文件,会在对话框中询问新文件,为了防止一个步骤中询问相似文件,传递/noquestion。 
:diff Starts the external diff program specified in the TortoiseSVN settings. The /path specifies the first file. If the option /path2 is set, then the diffprogram is started with those two files. If /path2 is omitted, then the diff is done between the file in /path and its BASE. To explicitly set therevision numbers use /startrev:xxx and /endrev:xxx. If/blame is set and /path2 is not set, then the diff is done by first blaming the files with thegiven revisions. 
:showcompare Depending on the URLs and revisions to compare, this either shows a unified diff (if the option unified is set), a dialog with a list offiles thathave changed or if the URLs point to files starts the diff viewer for those two files.
The options url1, url2, revision1 and revision2 must be specified. The options pegrevision, ignoreancestry, blame and unified are optional.
:conflicteditor Starts the conflict editor specified in the TortoiseSVN settings with the correct files for the conflicted file in /path. 
:relocate 打开重定位对话框,/path指定了重定位的工作副本路径。 
:help 打开帮助文件 
:repostatus打开为修改检出对话框,/path 指定了工作副本目录。 
:repobrowser Starts the repository browser dialog, pointing to the URL of the working copy given in /path or /path points directly to an URL. An additional option /rev:xxx can be used to specify the revision which the repository browser should show. If the /rev:xxx is omitted, it defaults to HEAD. If /path points to an URL, the /projectpropertiespath:path/to/wcspecifies the path from where to read and use the project properties. 
: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 Locks a file or all files in a directory given in /path. The 'lock' dialog is shown so the user can enter a comment for the lock. 
:unlock Unlocks a file or all files in a directory given in /path. 
:rebuildiconcache Rebuilds the windows icon cache. Only use this in case the windows icons are corrupted. A side effect of this (which can't beavoided) is that the icons on the desktop get rearranged. To suppress the message box, pass /noquestion. 
:properties 显示 /path 给出的路径之属性对话框。

使用示例(which should be entered on one line):

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"test log message" /closeonend:0

TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0

TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                 /startrev:50 /endrev:60 /closeonend:0


C#使用System.Diagnostics.Process获取进程信息,unity打包后却失效! 然而,这个转换过程并不包括所有.NET框架的API,特别是那些与操作系统进程管理相关的API。也就是说,如果一定要使用Process类,只能把出包方法改为Mono了,如果一定要用IL2CPP出包,只能在平台端去获取进程信息了。要在Unity中使用Mono后端,你可以在项目的构建设置中选择Mono作为脚本后端。Mono是一个开源的.NET框架实现,它提供了更完整的.NET API支持,包括。不过,请注意,使用Mono后端可能会影响游戏的性能,因此你应该在性能需求和功能需求之间做出权衡。 阅读详情

相关推荐

Unity Svn 小工具

在Unity中快速使用svn的小工具。 从此不用只是在打开文件夹后去做svn操作,而可以在unity环境下点击文件右键直接操作svn。

使用SVN对Unity进行版本控制

先吐个槽。关于这个国内各种简单到家的文章让人搞不懂,而且场景合并,prefab合并等关键问题都说没法解决,其实本质就是因为它们都是二进制文件,所以SVN没法对其合并,但事实上Unity是支持把这些文件都强制使用文本的!后面会提到。另外本人英文能力有限,渣翻译。虽说是翻译,但其实没照搬。 正文: 对于任何项目来说版本控制都是至关重要的,但对于Unity来说是个头疼的问题。现在Unity的最新版是

menuconfig的专栏 6568

WS2812呼吸灯效果实战:用STM32的PWM+DMA实现流畅渐变(附完整代码)

本文详细介绍了如何使用STM32的PWM+DMA技术实现WS2812呼吸灯效果,提供完整的代码示例和调试技巧。通过PWM波形编码和DMA传输机制,解决了传统IO模拟控制方式的高CPU占用问题,实现了流畅的LED渐变效果,适用于各种嵌入式开发场景。

weixin_30566063的博客 450

Unity 获取不同路径下SVN版本号

Which SVN Branch? Committed to a WRONG branch! Working on a wrong branch is one of the occasional mistakes if your project has multiple branches. I had made this mistake several times before I cre...

居安思危,游戏人生。 883

别再乱拖了!Godot 4.x 场景编辑器的7个隐藏操作技巧(附快捷键清单)

本文揭示了Godot 4.x场景编辑器的7个隐藏操作技巧,包括智能对齐、轴心点应用、多节点批量操作等,帮助开发者提升游戏开发效率。特别介绍了坐标系切换和自定义快捷键等实用功能,适用于处理复杂场景和团队协作。

weixin_29534421的博客 351

Zabbix Trigger actions访问出现500

本篇博客详细介绍了Zabbix访问'Trigger actions'出现的错误状况,访问界面出现500,并提供了解决方案。

格子的博客 559

unity SVN工具 CMD命令

使用快捷键 ctrl+shift+q 上传 Ctrl+shift+w 更新 目标目录:Asset、ProjectSetting #if UNITY_EDITOR using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class SVNControl : MonoBehaviour { public static string EXE = "Tor

wanfping123的博客 278

华为OD机试 - 去除多余空格(Python/JS/C/C++ 2024 E卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。条件约束:输入为两行字符串:第一行:待去除多余空格的文本,用例保证如果有单引号,则单引号成对出现,且单引号可能有多对。 第二

学Java,找哪吒 1210

Unity学习笔记--如何在Unity运行cmd?并且在Unity中利用cmd操作svn(例如生成svn--diff文件)

Unity学习笔记--如何在Unity运行cmd?并且在Unity中利用cmd操作svn(例如生成svn--diff文件)

游戏码农一枚,不定时分享技术文章~ 2102

【Python办公】剪贴板记录工具(记录文本 + 图片防重复)

本文介绍了一个用Python开发的剪贴板记录工具,能够自动记录复制过的文本和图片内容。该工具使用tkinter构建GUI界面,通过后台线程实时监控剪贴板变化,具有文本记录、图片保存(自动去重)功能。核心代码采用pyperclip访问剪贴板,PIL处理图片,hashlib计算图片哈希值实现去重。运行程序后,文本内容直接显示在界面,图片保存为PNG文件并记录路径。工具还提供清空历史记录功能,适合日常办公中需要追踪剪贴板历史的使用场景。

weixin_42636075的博客 231

使用ESP32设计嵌入式蓝牙游戏手柄

通过使用ESP32开发板和相关的库,我们可以设计和实现嵌入式蓝牙游戏手柄。连接到该设备后,您可以使用控制器模块的按钮和摇杆等元件来模拟游戏手柄的输入。根据您使用的具体模块和引脚分配,连接按钮和摇杆等控制元件到ESP32的GPIO引脚。ESP32是一款功能强大的微控制器,集成了Wi-Fi和蓝牙功能,非常适合用于开发物联网和嵌入式应用。请注意,本文仅提供了一个基于ESP32的嵌入式蓝牙游戏手柄设计示例,具体实现可能因硬件和需求而有所不同。确保开发板正确连接到计算机,并选择正确的开发板和端口。

CodeMaven的博客 1633

Unity版本控制之SVN的使用

一、SVN简介与安装 SVN是一种版本控制系统,我们现在使用的TortoiseSVN是一种SVN版本控制的客户端程序。TortoiseSVN客户端安装包可以在公司服务器上找到下载,也可以从官网下载,官方下载地址为:https://tortoisesvn.net/downloads.html,根据自己电脑上的系统类型,选择下载32-bit或者64-bit的安装包即可。双击下载下来的安装程序默认安装即可。 如何检查某台电脑上是否已经安装了SVN客户端了呢? 首先打开电脑的文件资源管理器(可以任意找到一个文件夹双

他在试图用代码书写这个世界,字里行间温柔尽显。勿忘初心,努力做有价值的技术文章。 3608

精通 Android NDK/JNI:从入门到精通实战与面试精粹

在Android开发中,

郑伟强dev的专栏 133

UnityHub卡在加载界面?深度排查与解决方案全解析

在软件开发中,项目配置读取与版本管理是保障开发环境稳定运行的基础环节。其核心原理在于解析项目元数据文件,并与本地已安装的编辑器版本进行匹配关联。这一过程的技术价值在于确保开发工具能准确识别并加载项目,避免因环境不一致导致的编译错误或功能异常。在实际应用场景中,UnityHub作为Unity项目的统一管理入口,常因缓存文件损坏、路径权限或网络环境等因素,在打开项目时出现界面卡顿、加载失败等问题。针对此类工程实践中的常见故障,本文聚焦于UnityHub卡在加载界面的现象,系统梳理了从项目元数据(如Library

weixin_34355559的博客 1194

【某音电商】protobuf聊天协议逆向

某音电商私信、聊天消息protobuf协议逆向分析与解析

吴秋霖的博客 2307

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Unity编辑器面板全空崩溃:从缓存清理到资产恢复的完整解决方案

在游戏开发中,引擎编辑器崩溃是开发者常遇到的挑战,其背后往往涉及状态管理、缓存机制与资产索引等核心计算机科学概念。当编辑器因内部状态错乱或缓存文件损坏而无法正确加载项目数据时,便会表现为界面面板全空,这本质上是数据读取与视图渲染流程的中断。从技术价值看,理解并修复此类问题不仅能保障开发效率,更是深入掌握引擎工作原理、构建健壮工作流的契机。在应用场景上,无论是独立开发者还是团队协作,规范的资产管理、版本控制策略与系统化的故障排查流程都至关重要。本文聚焦Unity开发中编辑器“失忆”导致面板全空的典型故障,通过

weixin_34198881的博客 614

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

so-vits-svc 三大 F0 预测器实测:Crepe、RMVPE、FCPE 怎么选

换完音高音总劈、画出来的 F0 曲线像锯齿?问题多半出在 F0(基频,即音高)提取环节,也就是 VC 基频提取这一步。so-vits-svc 的预处理链路内置了 Crepe、RMVPE、FCPE 三个深度学习 F0 预测器,下面按仓库源码和实测数据直接给结论。 ## 30秒选型速查:先抄答案 | 你的情况 | 推荐方案 | 一句话理由 | |---|---|---| | 第一次训练,不想调参

gitblog_00073的博客 93

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

PICO Neo3 VR性能优化:Unity URP+Vulkan+SPM全栈调优指南

VR渲染性能优化本质是软硬协同的系统工程,核心在于理解图形API(如Vulkan)与硬件驱动的约束关系。Vulkan并非简单切换的渲染后端,而是要求开发者适配其内存模型、扩展支持与着色器语义;Single Pass Multiview(SPM)也非一键开启的加速开关,而需重构Shader逻辑、矩阵管理与Render Pass流程。在PICO Neo3这类基于Adreno 630+Android 8.1+定制Vulkan驱动的设备上,URP默认配置常因Descriptor限制、UBO对齐异常、Surface

weixin_33836874的博客 325

[Unity]Mac调用SVN更新

其实之前有过一篇关于SVN更新的,但那是在Windows上的,Windows上bat之后也没有用,用的是小乌龟工具。用了一年多没啥大问题。现在来写Mac的主要是本人在用Mac的SVN更新的时候,有点累,一直用命令行更新,写烦了cd xxx,然后svn update,再接着svn revert --depth=infinity .这些命令。 也用过一些SVN工具,M...

学习之路 1121

Unity中C#如何执行cmd命令(System.Diagnostics.Process的使用)

在Unity中,我们可能需要自己写Editor工具。有时候我们可能还需要执行外部指令或者脚本(比如python脚本),这个时候,就需要用c#的System.Diagnostics.Process这个类了。 命名空间 usingSystem.Diagnostics; Process.Star()的构造方法 名称 说明 Process.Start () 启动(或重用)此...

linxinfa的专栏 1万+

Unity面板监听处理

using System.Diagnostics; using System.IO; using UnityEditor; using UnityEngine; internal class SelectionHelper { [InitializeOnLoadMethod] private static void Start() { //在Hierarchy面板按空格键相当于开关GameObject EditorApplication.hierarchyWindowItemOnG

qq_40833062的博客 843

TortoiseSVN 直接调用命令行cleanup和update

由于网络原因,总会出现time out 或者 如下错误: Error: ra_serf: The server sent a truncated HTTP response body.   每次右键cleanup太麻烦,因此选择用命令行执行 TortoiseProc.exe /command:cleanup /path:"C:\worksapce\svn\test项目" /nodlg /c...

琪花亿草 6984

使用SVN进行Unity3d版本管理总结

使用Unity3D也有一段时间了,由于团队一直使用SVN进行版本管理,现总结一下: (1) Unity3D的二进制资源必须加锁进行版本控制,因为它没办法merge; (2) Unity3D自己产生的C#工程相关文件,包括VS产生或者Mono产生的,都不需要归入版本控制; (3) 在新加入项时,Unity3D会产生一个同名的.meta文件,这个文件记录了此项一个唯一的64位的gui

programmerboymxd的专栏 9875

Unity3d SVN版本控制 详细讲解和原理

Unity SVN小团队合作 ——braveyoung(绿灯伴书影) @2013.8.16 Inthis post we are going to highlight what needs to be committed to SVN and alsoabout the workflow of a small team (5-6) people using Unity (free). 在这一

HDS--By 4181

[Unity] TortoiseSVN 的 CheckOut 未响应的解决记录

假设我们都知道,拉库的第一步就是 CheckOut,然后我们却在这一步卡住了 因为还没有显示输入用户名和密码的界面,所以卡住并不是用户权限的问题。更可能的是,网络连接的问题。 解决办法就是修复,或者直接换网络连接…… 因为我实习第一天,尝试了三种方式:公司电脑有线连接,我的电脑的有线连接和无线连接网络,都无法 CheckOut 之后,不得已换了一根网线;然后用公司电脑有线连接还是不行,但是用我自己的笔记本电脑有线连接就可以 CheckOut 了,简直是玄学…… 确实,我并没有能力深究它,但是这折磨得我没脾气

PriceCheap的博客 3923

SVN如何checkout(校验)项目代码

SVN的checkout命令,简称svn co,是将SVN服务器的上的项目文件下载到本地目录,尤其是我们第一次从SVN上拉取版本和分支的时候会经常用到 工具/原料 SVN客户端 方法/步骤 进入你想要拉取的本地文件夹目录,点击鼠标右键,选择“SVN Checkout”

qq_34360219的博客 2566
上一篇: 【unity拓展】Unity3d通过Tiled2Unity批量导入Tile地图到unity
下一篇: Unity3d平台预编译
鱼蛋-Felix
鱼蛋-Felix 领域专家: 游戏开发技术领域 领域专家: 游戏开发技术领域
博客等级 码龄12年 3585粉丝 168原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼蛋-Felix

如果对你有用,可以请我喝杯可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值