Svnlook使用浅谈(配置svn上传必须添加备注和删除权限)

    在配置svn上传必须添加备注和删除权限前,我先隆重介绍下今天用到的svn命令svnlooksvnlook是检验Subversion版本库不同方面的命令行工具,不会对版本库有任何修改,只是查看包括作者信息、文件内容、更改历史、文件大小、属性等当然它有自己的独特语法

(1)语法格式:svnlook REPOS_PATH [ARGS & OPTIONS ...]其中,`REPOS_PATH` 是指向Subversion版本库的路径。

(2)查看svnlook版本:svnlook --version

(3)svnlook全局参数:如:–no-diff-deleted:不要输出删除文件造成的差异

我们大多数情况下是用到svnlook子命令配置svn上传必须添加备注和删除权限时,我们用到的子命令主要是:svnlook log、svnlook author、svnlook changed(具体说明见附录),话不多说,上操作步骤:

一、配置svn上传必须添加备注和删除权限

1、打开SVN版本库服务器SVN服务器端

2、右键点击项目,选择所有任务,选择Manage hooks

 3、点击Hooks选项卡,选中Pre-commit hook

 

4、点击下方的edit按钮

5、在弹出框中输入“svn上传必须添加备注和删除权限”代码:

@echo off
setlocal
set Repos=%1
set TXN=%2
rem 设置允许对版本库中的文件做删除操作的人员账号,中间用空格隔开
set SCM=lixing

rem 保证输入10个字符,用来限制日志的字数,可按实际需求增加“点”数,若错误则执行:err_bak
svnlook log %REPOS% -t %TXN% | findstr ".........." > nul 
if %errorlevel% gtr 0 goto :err_bak

rem 过滤空格字符,可根据实际添加“空格数”
svnlook log
%REPOS% -t %TXN% | findstr /ic:" " > nul
if %errorlevel% gtr 0 goto :allow

rem 备注信息验证通过后,验证人员对文件的操作权限
:allow
svnlook author
-t "%TXN%" "%Repos%" | findstr "%SCM%"
IF
%ERRORLEVEL% gtr 0 goto :check exit 0

rem 删除文件验证 :check svnlook changed
-t "%TXN%" "%Repos%" | findstr "^D"
if %ERRORLEVEL% == 0 goto :err pause exit 0

rem 不能删除文件提示
:err
echo 您无法删除文件,请获取删除权限
1>&2
pause
exit
1

rem
备注未添加的提示信息
:err_bak
echo 请填写本次文件提交任何变更的日志信息,最少5个汉字。
1>&2
echo
*******************禁止无意义字符或空格数据***************** 1>&2
goto :exit 1

6、点击窗口下方的ok按钮,再点击父窗口的确定按钮即完成了设置。

注意:我这里已经将svn的安装地址设置到电脑的环境变量中,所以没有指定svn安装路径

二、svn上传必须添加备注和删除权限

很简单,删除Pre-commit hook中添加的代码信息,确定即可。

 

温馨小提示:我用的是UI操作界面设置,当然也可以通过编写脚本直接完成,若通过脚本,只需将“svn上传必须添加备注和删除权限”的代码复制粘贴到txt中,并重新命名txt文件为:pre-commit.cmd,然后将文件放到项目仓库的hook路径下,例如:“D:\Repositories\test\hooks”(“D:\Repositories\test\”为我的test项目路径)。

 

 

附录:svnlook子命令介绍

1. svnlook author: 输出指定修订版本或事务的作者。

如,`svnlook author REPOS_PATH`,可以添加 `-r` 或 `-t` 参数指定版本或事务。

2.svnlook cat: 输出版本库中指定文件的内容。

`svnlook cat REPOS_PATH FILE_PATH`,同样支持 `-r` 和 `-t` 参数。

 3. svnlook changed: 列出修订版本或事务中的改动路径。`svnlook changed REPOS_PATH`,可以加上 `-r`, `-t` 参数,以及 `--copy-info` 显示复制操作详情。

 4. svnlook date: 输出修订版本或事务的时间戳。

如, `svnlook date REPOS_PATH`,同样接受 `-r` 和 `-t` 参数。

 5. svnlook diff: 显示文件和属性的差异,以GNU样式输出。`svnlook diff REPOS_PATH`,可添加 `-r` 或 `-t` 参数。

 6. svnlook dirs-changed: 列出修改(属性或子文件)的目录。

 7. svnlook filesize: 输出文件大小。`svnlook filesize REPOS_PATH PATH_IN_REPOS`。

 8. svnlook help: 提供子命令的帮助信息。

 9. svnlook history: 输出路径的历史记录,默认为根目录。

 10. svnlook info: 输出修订版本或事务的作者、时间戳、日志信息大小和日志信息。

 11. svnlook lock: 查看文件或目录的锁定信息。

 12. svnlook log: 打印日志信息。

 13. svnlook propget: 获取指定路径的属性值。

 14. svnlook proplist: 列出指定路径的属性列表。

 15. svnlook tree: 输出版本库的目录结构。

 16. svnlook uuid: 显示版本库的UUID,这是版本库的全局唯一标识符。

 17. svnlook youngest: 输出版本库的最新修订版本号。

posted @ 2024-09-30 11:55  阳光宝贝-沐沐  阅读(65)  评论(0编辑  收藏  举报