SVN Hook
需求
在我们开发游戏,我们之前管理资源的时候,总是遇到不规范提交,比如贴图什么的没有带.meta,代码不是utf-8,什么没加日志,什么之类导致查问题查好久,就想着怎么不然让这些提交,或者提醒他们哪里不规范之类,就想着搞一搞
思路
一些资源我们在unity提交到时候,直接通过unity去检查,然后提醒,但是想着美术不用unity怎么办,或者在unity文件夹外面怎么样,等等一些问题,好像坐在svn好一点,刚好svn也有 pre-comint, post-comit 等等一些hook,脚本,不熟悉这些是什么东西的可以自行查找资料熟悉一下。推荐小乌龟,安装的时候要勾选命令行行工具。
工具
实现
我们用新建一个仓库,或者在原来有仓库找到下面的目录,仓库根目录,有下面几个文件夹,我们进入到hook,先不用关闭
在svn服务端选到管理Hook选项
出现这样一个东东,就是我们上面提到的pre,post等等,我们只要用pre就行了,双击
出来一个这个东西,把下面我的代码复制进去,然后点确定,会在我们的版本库根目录的hook文件夹生成一个pre-commit.cmd,这里是和cmd一样的,有基础的可以自己操作了,后面都是做一些很简单的事情,
通过python检查提交的问题,然后反馈结果码,svn做处理,就是这个思路。
1 | @echo off |
这里就简单的介绍一些基本的svn命令,怎么获取信息,然后处理,后面的东西就需要自己去做处理了。
如果你安装了svn,可以在cmd直接输入svnlook help 可以查看一些svnlook的一些命令操作,我们主要用这个命令,这里我用的是python
1 | command = "svnlook" + " changed -t " + txn + " " + repo |
这里的 txn 和 repo 就是我们在上面的cmd命令里设置的,通过命令行传到python脚本就行了。这个命令是干嘛的呢,这个命令就是我们提交svn里面是增加文件,或者是删除文件和更新文件的列表,我们通过python拿到这个列表,就可以知道是什么操作了。
1 | set REPOS=%1 |
这里还要简单介绍一个几个字符,我这里就是通过这个字符去判断是什么操作,熟练svn的肯定也知道这个是什么操作,不多说了
‘A’ 就是add文件 ‘D’ 就是delete文件 ‘U’就是update文件