2014-09-25 116 views
1

我有从互联网上采取的预先提交脚本。大多数脚本在不同情况下都会失败。我想预先提交脚本,只有在设置了需要锁定属性时才允许提交。这是Lock-Modify-Unlock模型。SVN需要锁定检查使用预先提交的钩子

我已经在客户端配置中启用了自动道具并添加了* = svn:needs-lock = *属性。

我发现的大部分脚本都在添加新文件的时候检查需要锁定属性。但单独检查并不能解决问题。在下面提到的情况下,我们可以避免锁机制。

1)开发人员可以在编辑期间取消需要锁定属性。 2)属性可以单独取出而不用修改文件。

在上述场景脚本失败。

欢迎任何想法。

回答

1

像下面的东西应该工作。

y的在svnlook changed -t "$TXN" "$REPOS" |grep "^[AU]" | awk -F" " '{print $2}'

做 svnlook的proplist这样-t “$ TXN” “$ REPOS” “$ Y”> /tmp/prop.txt

如果(grep的 - 即“需求-lock” /tmp/prop.txt)

然后

if echo $y | sed 's/^.*\///' | grep -i "\."; 

    then 

    echo OK 

    else 

回声 “不允许锁定夹$ Y”> & 2;

exit 1;

fi 

网络

这将检查该属性是否被施加不上的所有文件/文件夹提交之前。如果您需要从中排除文件夹,则需要添加一个条件来检查其文件夹或文件是否相应。

+0

谢谢,你的帮助真的很感激。很抱歉再次问,我们如何避免提到的目录? – Abin 2014-09-29 07:34:40

+0

阿宾 - 我刚刚在上面做了一个编辑。对不起,我没有更好的方法来检查文件夹。但是,在上面我只是检查,如果一个点(。)存在,它是一个文件,如果没有,它的文件夹。如果你有更好的方法,请在这里发帖。谢谢。 – 2014-09-29 09:44:37

+0

谢谢,但实际上我们确实有点(。)文件夹而且我在某处读到,文件夹总是有斜线(/),而文件名不是。是否可以检查这个?,如果是的话:) – Abin 2014-09-29 09:57:48