Svn

同步兩個本地 SVN 結帳

  • May 25, 2011

快速概述問題。我有一個在 SVN 中的網站,並在 2 個不同的伺服器上簽出以進行負載平衡。這是一個 drupal 站點,除了資產和文件目錄之外的所有內容都在伺服器上本地檢出。

現在在更新時,我必須手動更新兩個本地結帳。(svn up)這很容易出錯,如果我們決定在輪換中添加另一個網路伺服器,則會提供更多成本。

簡而言之:我必須找到一種方法來自動保持 2 個本地結帳同步,所以我只需要在 1 個伺服器上更新,一切都會同步。

我嘗試過的事情:

  • md5 對伺服器 1 上的目錄和通過伺服器 2 上的 SSH(不包括 .svn 目錄)使用 find 命令求和,然後使用 diff 的結果作為參數在伺服器 2 上執行 svn ups。它總是給我不同的相同文件。

SSH $ TARGET “cd " $ SVN_TARGET” && find .-name .svn -prune -o -type f -print0 | xargs -0 md5sum" >> /tmp/server2.sums

cd $SVN_SOURCE && 查找。-name .svn -prune -o -type f -print0 | xargs -0 md5sum >> /tmp/server1.sums

差異 /tmp/server1.sums /tmp/server2.sums | 剪切-d"。" -f2 | xargs -i ssh $TARGET “su www-data -c ‘svn up /dir/to/svn/repo/{} –username "***" –password " **"’”

  • 使用 svn info 然後使用 svn diff 和 head 修訂來給我所有更改的文件。那裡的問題是本地版本 ID 不等於 SVN 伺服器上的頭版本之一,即使它是最新的。

非常感謝任何幫助並為文字牆找藉口:)

每五分鐘執行一個腳本的每台主機上的 crontab 條目怎麼樣?該腳本可以更新 svn 儲存庫並進行任何認為必要的後處理……

或者你可以在 subversion 中有一個 post-commit 鉤子觸發部署到兩個客戶端……

如何在其中一台主機上的 crontab 中執行控製作業,它執行 svn 資訊以確定修訂,然後對該修訂進行 svn 更新,同時在另一台主機上對同一修訂執行 ssh svn 更新?

引用自:https://serverfault.com/questions/273504