SVNTool类
废话不多说,直接上代码。
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class SVNTools
{
[MenuItem("Tool/SVN/Commit")]
public static void SVNCommit()
{
ProcessCommand("TortoiseProc.exe", "/command:commit /path:" + SVNProjectPath);
}
[MenuItem("Tool/SVN/Update")]
public static void SVNUpdate()
{
ProcessCommand("TortoiseProc.exe", "/command:update /path:" + SVNProjectPath + " /closeonend:1");
}
[MenuItem("Tool/SVN/CleanUp")]
static void SVNCleanUp()
{
ProcessCommand("TortoiseProc.exe", "/command:cleanup /path:" + SVNProjectPath);
}
[MenuItem("Tool/SVN/Log")]
static void SVNLog()
{
ProcessCommand("TortoiseProc.exe", "/command:log /path:" + SVNProjectPath);
}
/// <summary>
/// 获取当前项目路径当做SVN本地路径
/// </summary>
static string SVNProjectPath
{
get
{
System.IO.DirectoryInfo parent = System.IO.Directory.GetParent(Application.dataPath);
return parent.ToString();
}
}
/// <summary>
/// 通过Unity进程类调用SVN
/// </summary>
/// <param name="command">需要执行的名称</param>
/// <param name="argument">参数</param>
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();
}
}
说明:
-
脚本可以放入Editor文件夹,在UnityEditor菜单栏中会Tool/SVN目录下选择方法执行对应的操作。
-
工具类通过C# Process调用TortoiseProc.exe方法传递参数实现提交、更新、清理和显示Log操作。需要将SVN加入系统环境变量,否则调用不成功。
-
工具类直接将当前项目的路径当做SVN更新的本地路径,如果需要更改只需修改SVNProjectPath属性的返回值。