首页  >> 配置管理  >> CVS/SVN
Hooks里面对锁的控制
作者 go2cxg   查看 1563   发表时间 2008/8/14 16:57  【论坛浏览】
SubversionHooks提供了很好的触发机制kgoy
领导给了需求,要求锁管理如下。kgoy
1.kgoy
任何人不能窃取锁。kgoy
pre-commit里面设置kgoy
获得锁的拥有者kgoy
@echo offkgoy
setlocalkgoy
set REPOS=%1kgoy
set PATH=%2kgoy
set USER=%3kgoy
set PDIR=C:\WINDOWS\system32kgoy
set SDIR=D:\SCM_Program\Subversion\binkgoy
kgoy
%SDIR%\svnlook.exe lock %REPOS% %PATH% |%PDIR%\sed.exe -n "2p"|%PDIR%\cut.exe -d ":" -f 2|%PDIR%\sed.exe "s/^ //g" > d:\temp\Unlock_Temp.txt&&for /f "tokens=*" %%i in (d:\temp\Unlock_Temp.txt) dokgoy
set OwnerUser=%%i&&del d:\temp\Unlock_Temp.txt
kgoy
kgoy
if "%OwnerUser%"=="" exit 0 为空 说明没有锁定kgoy
ifkgoy
%OwnerUser% == %USER% exit 0
说明是自己锁定的
kgoy
ifkgoy
%OwnerUser% NEQ %USER% GOTO err
其他人锁定 退出
kgoy
kgoy
:errkgoy
echo %PATH%已经被%OwnerUser%锁定,你无权窃锁,请通知管理员. 1>&2kgoy
exit /B 1kgoy
kgoy
kgoy
kgoy
抛砖引玉 大家可以自由发挥kgoy
kgoy
[ 本帖最后由 go2cxg 于 2008-8-17 11:54 编辑 ]

序号 评论者 共有评论 12   【论坛浏览】  【发表评论】 评论时间
1 千寻 很实用的需求,昨天发的,我咋没看到这个贴呢. 2008/8/15 14:06
2 ice_deng 公司使用SVN,也在为锁定的事情而烦恼,谢谢LZ,
再请问下,这个是在linux下面的吧.如果是在WIN下面呢?
在客户端用GET LOCK是否可以锁定呢?
目前公司遇到的问题,GET LOCK锁定后,有小部份文件,无法进行锁定.在解锁的时候,又有小部份文件无法解锁.请问为什么呢?
2008/8/21 23:28
3 go2cxg 1.我这个就是在windows下面运行的.
2.在客户端用svn lock进行锁定
按道理来说 是可以的 解锁和锁定
但是也出现过类似的情况
本地的锁信息和服务器端的锁信息无法同步
2008/8/22 09:31
4 qunsheng_83 回复 地毯 的帖子
出现部分问价无法锁定、无法解锁的情况以及本地的锁信息和服务器端的锁信息无法同步,是如何解决的?
2008/8/22 10:09
5 go2cxg 这个是比较麻烦的问题
往往是前一天锁定的信息
第二天本地的.svn锁的信息就没有了
文件标志左下角的小锁没有了
正在想办法解决
2008/8/22 10:37
6 qunsheng_83 在锁了之后,本地和服务器还做了其他的操作么?是不是其他的操作影响了.svn的信息同步?
不明白,期待小光的进一步挖掘
2008/8/22 11:05
7 maoalice 这个钩子真的启作用吗?有谁试用过,我这里用不了啊。从程序看,好像只是告诉你有人锁定了,不能提交,但是仍然可以break lock 破坏锁,而执行下一步阿? 钩子中的sed.exe,cut.exe 是什么程序,在C:\WINDOWS\system32中没有看到这两个程序。 2008/8/28 12:53
8 go2cxg 1.我这里只是写了大概的步骤
需要自己去组织语言和代码
2.已经实现了
3.sed cut都是UNIX下面的程序 需要去找WIN32版的程序 拷贝到本地.
可以安装cygwin
2008/8/28 13:01
9 maoalice 能否提供一个完整的钩子脚本,是pre-commit.bat,还是pre-lock.bat,pre-unlock.bat。我觉得需要有一个pre-unlock.bat才可以真正阻止别人解锁,否则应该仍然可以steal lock吧,我用的是tortoisesvn 客户端。谢谢! 2008/8/28 15:09
10 go2cxg 我上面已经写的很清楚啦
自己修改下即可了~
直接给你就没有任何意义了~
2008/8/28 16:31
 共有评论数 12  每页显示 10
页码 1/2  |<  <<   1 2   >>  >|