[英]How to listen to server(express) sent event from client(vue) instantly
[英]How to listen to svn commit event on working directory on developer/client machine?
我需要编写一个node.js程序,只要开发人员将代码检入svn,它就会以某种方式触发。 这将更新工作目录中的文件。 开发人员可以在Mac OS X和Windows上工作。 该程序需要在两台计算机上运行。
有没有办法我可以以某种方式听svn客户的提交? 是否有允许插件/扩展的svk sdk? 是否可以查看.svn隐藏目录(svn为自己创建的隐藏目录)进行更改? 如果是这样,如何通过查看此目录来知道文件已提交?
起初我以为可以使用挂接,但是挂接在托管svn的计算机上运行,它们主要用于管理任务,例如发送电子邮件警报或启动构建
首先,您需要了解,如果不连接服务器,就无法知道服务器上是否发生了更新。 因此,您不能仅通过查看本地文件夹来完成此操作,因为这不是svn的工作方式。
以下是实现您想要的解决方法。 在服务器上,编写一个“提交后”钩子,该钩子从文本文件中获取一个计数器,对其进行递增并写回。 将此文本文件存放在客户可以下载的位置。 我假设这将在“ http://www.example.com/commit-id.txt”上。 然后,在客户端上,使用Shell脚本来监视此文本文件的更改并执行所需的操作。 例如,使用Windows Powershell,这可能会如下工作。 对于Mac,您需要使用其他外壳程序,但我确信可以轻松移植此脚本。
function get-current-commit-id {
trap [Exception] {
# Make sure the script doesn't freak out when server is down or connection
$commitid
return
}
# The rand.next() ensures by brute force that the text file is not cached
[int] $clnt.DownloadString("http://www.example.com/commit-id.txt?q="+$rand.next())
}
$clnt = new-object System.Net.WebClient
$commitid = get-current-commit-id
while( 1 ){
$commitidnew = get-current-commit-id
if( $commitidnew -ne $rsid ){
Write-Output "Commit occured on server"
### execute desired action here
### perhaps you'll also want to run "svn up"
$commitid = $rsidnew
}
### check for new update every 10 seconds
sleep 10
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.