Unity实现SVN的提交、更新、清理工具

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属性的返回值。

猜你喜欢

转载自blog.csdn.net/u010020342/article/details/126796686
今日推荐