微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在提交后的Subversion钩子中获取项目名称

如何解决在提交后的Subversion钩子中获取项目名称

| 我有一个这样的Subversion存储库:
Repo
    ProjectA
        trunk
        branches
        tags
    ProjectB
        trunk
        branches
        tags
我正在尝试编写仅适用于一个项目的提交后挂钩脚本,但我刚刚了解到它们位于存储库的根目录中。 我得到的仅有的两个参数是“存储库路径”和“修订号”。我有什么方法可以仅针对特定项目执行此脚本吗? 谢谢, 解: 最终的解决方案是这样的:
#!/bin/bash
REPOS=\"$1\"
REV=\"$2\"
if svnlook changed -r $REV $REPOS | grep ProjectA; then
    echo \"do stuff\"
fi
    

解决方法

        是的,使用svnlook获取在已提交修订中修改的文件的列表,然后使用合适的正则表达式对名称进行grep以确定提交后的路径是否在正确的位置包含您的项目名称,如果它确实执行了代码,否则,跳到脚本末尾并返回0。     ,        我来这里的目的是为Windows 2012 Server上的VisualSVN寻找此问题的答案。收集了更多信息之后,这是我为VisualSVN上的Windows批处理文件提交后钩子提供的解决方案,该钩子将PHP脚本加载到开发服务器上,以导致将特定项目部署到该服务器上。 hook命令是一行:
svnlook changed \"%1\" | findstr /L \"ProjectA/trunk/\" && powershell -Command \"Invoke-WebRequest http://192.168.0.177/checkout_on_commit/checkout_on_commit.php -OutFile $ENV:SYSTEMROOT\\Temp\\commit.txt\" || rem
需要rem作为“ no-op”,以防止Tortoise将钩子报告为对其他项目的提交失败。导致项目在Linux服务器上部署的checkout_on_commit.php内容为:
<?php
`date >> checkout.log`;
`svn sw --non-interactive --no-auth-cache --username project_a_readonly --password trytoguess https://svnserver/svn/GroupA/ProjectA/trunk /app/www/ >> checkout.log`;
?>
    ,        在Subversion中不存在像\“ Project \”这样的定义...该定义必须由您完成。这意味着Subversion会在存储库中的更改而不是\“ Project \”基础上执行... 您可以使用诸如存储库和修订号之类的信息来提取所需的信息...您可以简单地通过使用svnlook来提取所需的信息..通过使用适当的参数调用svnlook。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。