Calmer的文章

  • 首页
  • 文章归档
  • 关于页面

  • 搜索
体验游戏 笔记 推荐 工具链 工具使用 小游戏 插件 UI 软件 教程

SVN的使用与搭建(含Unity3D扩展SVNTools)

发表于 2020-04-22 | 分类于 游戏开发 | 0 | 阅读次数 1054

前言

在软件开发中,必不可少的便是版本管理工具,目前我们常用的是:SVN和GIT。

  • SVN:中央版本库
  • GIT:分布式版本库

其实两个版本管理工具没有过于明显的优劣。选择那个都差不多。这里先介绍SVN,因为他简单易用,除了适合程序人员,同样也适合美术和策划等工作人员。


TortoiseSVN客户端使用

  1. 下载TortoiseSVN:本站相关下载连接
    下载好后,一路默认安装即可,安装好,右键任意文件夹,会出现SVN相关的选项。
  2. SVN的常用相关操作
    • 检出(Checkout):与远程服务器版本仓库建立链接,并拉取仓库文件
    • 提交(Commit):提交自己修改的文件
    • 更新(Update):从远程仓库拉取最新的文件到本地
    • 日志(Log):查看提交记录
    • 对比(Diff):对比文件差异
    • 分支(Branches):用于开发过程中进行管理版本

以上相关操作:可以使用右键在指定目录下执行,也可以命令行窗口用相关命令进行。

  1. 扩展Unity编辑器(使用命令执行SVN操作)

将SVNTools.cs放到Unity中Editor目录下,即可在Unity中使用SVN操作了。

using System.IO;
using UnityEditor;
using UnityEngine;

namespace ToolLib
{
    public class SVNTools
    {
        [MenuItem("ToolLib/SVN 对比")]
        public static void DiffProj()
        {
            ExecuteSVNCmd("diff",GetProjPath());
        }

        [MenuItem("ToolLib/SVN 提交")]
        public static void CommitProj()
        {
            ExecuteSVNCmd("commit",GetProjPath());
        }

        [MenuItem("ToolLib/SVN 更新")]
        public static void UpdateProj()
        {
            ExecuteSVNCmd("update",GetProjPath());
        }

        [MenuItem("ToolLib/SVN 日志")]
        public static void ShowProjLog()
        {
            ExecuteSVNCmd("log",GetProjPath());
        }

        [MenuItem("ToolLib/SVN 其他/设置TortoiseProc.exe 路径")]
        public static string AskForTortoiseProcPath()
        {
            var path=EditorUtility.OpenFilePanel("选择 TortoiseProc.exe","c:\\","exe");
            EditorPrefs.SetString("TortoiseProcPath",path);
            return path;
        }

        [MenuItem("Assets/ToolLib/SVN 对比")]
        public static void DiffAssets()
        {
            ExecuteSVNCmd("diff",GetSelectionPath());
        }

        [MenuItem("Assets/ToolLib/SVN 提交")]
        public static void CommitAssets()
        {
            ExecuteSVNCmd("commit",GetSelectionPath());
        }
        [MenuItem("Assets/ToolLib/SVN 更新")]
        public static void UpdateAssets()
        {
            ExecuteSVNCmd("update",GetSelectionPath());
        }
        [MenuItem("Assets/ToolLib/SVN 日志")]
        public static void ShowAssetsLog()
        {
            ExecuteSVNCmd("log",GetSelectionPath());
        }

        static string GetProjPath()
        {
            var dir = new DirectoryInfo(Application.dataPath);
            return dir.Parent.FullName.Replace("","\\");
        }

        static string GetAssetsPath()
        {
            var dir = new DirectoryInfo(Application.dataPath);
            return dir.FullName.Replace("","\\");
        }

        static string GetSelectionPath()
        {
            var path=AssetDatabase.GetAssetPath(Selection.activeObject);
            if(string.IsNullOrEmpty(path))
            {
                path=GetAssetsPath();
            }
            return path;
        }

        static string GetTortoiseProcPath()
        {
            var path=EditorPrefs.GetString("TortoiseProcPath","");
            if(string.IsNullOrEmpty(path))
            {
                return AskForTortoiseProcPath();
            }
            return path;
        }

        static void ExecuteSVNCmd(string cmd,string path)
        {
            var svnProcPath=GetTortoiseProcPath();
            var para = "/command:"+cmd+" /path:\"" + path + "\"";
            System.Diagnostics.Process.Start(svnProcPath,para);
        }

    }
}

建立SVN远程版本仓库

  1. 远程建库
    • 使用阿里云服务器
    • 系统:CentOS
    • 详细链接:https://yq.aliyun.com/articles/162961

  1. 安装
yum install subversion 
  1. 查看版本
svnserve --version
  1. 创建版本仓库
mkdir /var/svn
svnadmin create /var/svn/svnrepos
  1. 配置SVN
    svnserve.conf
anon-access = none #匿名用户可读

auth-access = write #授权用户可写

password-db = passwd #使用哪个文件作为账号文件

authz-db = authz #使用哪个文件作为权限文件

realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

authz 为权限文件
passwd 为添加用户


  1. SVN监听多目录

只需要再根目录配置好相应的authz和passwd文件,将相应的目录的auth和password-db指向对应文件即可实现对目录侦听

常用命令

svnserve -d -r /var/svn/svnrepos   #监听某个目录
killall svnserve     #杀掉svn进程
ps -ef |grep svn     #查看当前svn状态

总结

版本管理工具是一个项目组中所有参与开发人员都应该学会的工具,他就是所有项目参与人员的“后悔药”,就算进行了错误的操作,也能通过其进行快速恢复。

扩展:更适合程序人员的版本管理工具Git使用教程:https://www.liaoxuefeng.com/wiki/896043488029600

  • 本文作者: Calmer
  • 本文链接: https://mytechplayer.com/archives/svn的使用与搭建含unity3d扩展svntools
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
# 工具链
红点树
Unity3D Editor扩展(快速生成自己的UI代码)
  • 文章目录
  • 站点概览
Calmer

Calmer

88 日志
7 分类
10 标签
RSS
Creative Commons
0%
© 2020 — 2025 Calmer
由 Halo 强力驱动
蜀ICP备20010026号-1川公网安备51019002006543
Copyright © 2020-2025 Calmer的文章