[英]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.