Unity Editor 编辑器扩展 十四 将TortoiseSVN的基础操作内嵌Unity

15 篇文章 7 订阅

集成svn同步工具,非常好用

这里写图片描述

/* 
 * 将TortoiseSVN的基础操作内嵌Unity 
 * 这里只是举了几个简单的例子 
 * 具体命令可参见TortoiseSVN的help功能 
 *  
 */  

using UnityEngine;  
using UnityEditor;  
using System.Diagnostics;  

public class UnitySVN  
{  
    private const string COMMIT = "commit";  
    private const string UPDATE = "update";  

    private const string SVN_COMMIT = "Assets/SVN/Commit";  
    private const string SVN_COMMIT_ALL = "Assets/SVN/CommitAll";  
    private const string SVN_UPDATE = "Assets/SVN/Update";  
    private const string SVN_UPDATE_ALL = "Assets/SVN/UpdateAll";  

    /// <summary>  
    /// 创建一个SVN的cmd命令  
    /// </summary>  
    /// <param name="command">命令(可在help里边查看)</param>  
    /// <param name="path">命令激活路径</param>  
    public static void SVNCommand(string command, string path)  
    {  
        //closeonend 2 表示假设提交没错,会自动关闭提交界面返回原工程,详细描述可在  
        //TortoiseSVN/help/TortoiseSVN/Automating TortoiseSVN里查看  
        string c = "/c tortoiseproc.exe /command:{0} /path:\"{1}\" /closeonend 2";  
        c = string.Format(c, command, path);  
        ProcessStartInfo info = new ProcessStartInfo("cmd.exe", c);  
        info.WindowStyle = ProcessWindowStyle.Hidden;  
        Process.Start(info);  
    }  
    /// <summary>  
    /// 提交选中内容  
    /// </summary>  
    [MenuItem(SVN_COMMIT)]  
    public static void SVNCommit()  
    {  
        SVNCommand(COMMIT, GetSelectedObjectPath());  
    }  
    /// <summary>  
    /// 提交全部Assets文件夹内容  
    /// </summary>  
    [MenuItem(SVN_COMMIT_ALL)]  
    public static void SVNCommitAll()  
    {  
        SVNCommand(COMMIT, Application.dataPath);  
    }  
    /// <summary>  
    /// 更新选中内容  
    /// </summary>  
    [MenuItem(SVN_UPDATE)]  
    public static void SVNUpdate()  
    {  
        SVNCommand(UPDATE, GetSelectedObjectPath());  
    }  
    /// <summary>  
    /// 更新全部内容  
    /// </summary>  
    [MenuItem(SVN_UPDATE_ALL)]  
    public static void SVNUpdateAll()  
    {  
        SVNCommand(UPDATE, Application.dataPath);  
    }  

    /// <summary>  
    /// 获取全部选中物体的路径  
    /// 包括meta文件  
    /// </summary>  
    /// <returns></returns>  
    private static string GetSelectedObjectPath()  
    {  
        string path = string.Empty;  

        for (int i = 0; i < Selection.objects.Length; i++)  
        {  
            path += AssetsPathToFilePath(AssetDatabase.GetAssetPath(Selection.objects[i]));  
            //路径分隔符  
            path += "*";  
            //meta文件  
            path += AssetsPathToFilePath(AssetDatabase.GetAssetPath(Selection.objects[i])) + ".meta";  
            //路径分隔符  
            path += "*";  
        }  

        return path;  
    }  
    /// <summary>  
    /// 将Assets路径转换为File路径  
    /// </summary>  
    /// <param name="path">Assets/Editor/...</param>  
    /// <returns></returns>  
    public static string AssetsPathToFilePath(string path)  
    {  
        string m_path = Application.dataPath;  
        m_path = m_path.Substring(0, m_path.Length - 6);  
        m_path += path;  

        return m_path;  
    }  

}  
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值