前言
在软件开发中,必不可少的便是版本管理工具,目前我们常用的是:SVN和GIT。
- SVN:中央版本库
- GIT:分布式版本库
其实两个版本管理工具没有过于明显的优劣。选择那个都差不多。这里先介绍SVN,因为他简单易用,除了适合程序人员,同样也适合美术和策划等工作人员。
TortoiseSVN客户端使用
- 下载TortoiseSVN:本站相关下载连接
下载好后,一路默认安装即可,安装好,右键任意文件夹,会出现SVN相关的选项。 - SVN的常用相关操作
- 检出(Checkout):与远程服务器版本仓库建立链接,并拉取仓库文件
- 提交(Commit):提交自己修改的文件
- 更新(Update):从远程仓库拉取最新的文件到本地
- 日志(Log):查看提交记录
- 对比(Diff):对比文件差异
- 分支(Branches):用于开发过程中进行管理版本
以上相关操作:可以使用右键在指定目录下执行,也可以命令行窗口用相关命令进行。
- 扩展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远程版本仓库
- 远程建库
- 使用阿里云服务器
- 系统:CentOS
- 详细链接:https://yq.aliyun.com/articles/162961
- 安装
yum install subversion
- 查看版本
svnserve --version
- 创建版本仓库
mkdir /var/svn
svnadmin create /var/svn/svnrepos
- 配置SVN
svnserve.conf
anon-access = none #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
authz 为权限文件
passwd 为添加用户
- 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