2010-09-03 28 views
0

我已經設置了我的存儲庫鏡像,它很好地工作,但我最近有一個問題。對SVNSYNC的調用是否應該阻塞或不在提交後鉤子中?

目標存儲庫留下一個未發佈的鎖不知何故 - 從我讀的這可能是由svnsync操作中止造成的,我懷疑這可能是因爲在我的後提交鉤我執行svnsync在阻止模式,而不是通過&將其推入背景。

我這樣做,以便用戶可以確定,如果提交完成,那麼它現在在所有的存儲庫中,但也許它引入了他們擊中取消並停止提交掛鉤的風險?

我找不到明確的指導方針或建議,哪個更好或最佳做法是什麼,或者即使點擊取消可能導致中止後提交掛鉤和從中執行的同步 - 在大多數地方我看到人使用&在後臺啓動同步 - 這是否防止用戶在同步過程中按下取消提交時的鎖定損壞?您如何確保兩個存儲庫真正同步或報告問題?你需要一個單獨的通知機制嗎?

更新:

從上面的兩個選項,我決定選擇了第三;)

我的背景,但在同一時間,我做出了鉤等待它完成調用svnsync的:

svnsync ... & 
wait $! 

我覺得這很好地加入了兩全其美的,但時間會證明效果如何這將是 - 請讓我知道你怎麼想的整個問題,什麼建議,您可能需要分享一下吧。

回答

0

作爲名稱隱含的後提交掛鉤在創建源存儲庫中的完整提交和新修訂後運行。所以問題是:誰應該如何按下「中止」按鈕?另一方面,你爲什麼要做阻塞操作?我會同步例如每15分鐘等等無關的提交...如果你真的是新的另一種方式,Write-Through-Proxy如何? 最重要的問題是爲什麼每次提交都需要這樣的同步?

+0

@khmarbaise:當你使用toolkit時,提交操作似乎在等到提交後的鉤子完成,並且在失敗時顯示輸出 - 即使鉤子執行時已經完成了自己到主倉庫的提交 - 當你按取消時,我認爲是同步可能會中止。 至於爲什麼要進行阻止操作 - 我需要確保兩個存儲庫始終保持同步,因爲它們都被許多客戶端用於生產,並且15分鐘的不同步會破壞我正在構建的系統(它必須是透明鏡像不是過時的鏡像)。 – RnR 2010-09-03 13:17:37

+0

就我所知,您可以停止在服務器上啓動的執行。另一方面,爲什麼你有兩個複製的存儲庫,而不是使用一個? (可以考慮實時複製Wandisco?) – khmarbaise 2010-09-03 14:24:05

+0

像往常一樣 - 它很複雜:) 我使用SVN作爲後臺服務數據到很多機器 - 數據必須版本化,分支等。有網站位於美國和歐洲,目前存儲庫大小約爲70GB,所以在鏡像的另一端確實有助於處理流量;) Wandisco也可能工作得很好,但它不是真正需要的,因爲對單個存儲庫的提交是不是一個問題,只是現在讀本地就足夠了。 – RnR 2010-09-04 19:48:44