我們有多個站點並且正在使用一個集中式Subversion存儲庫。跨站點管理源代碼
存儲庫很大,網絡帶寬意味着需要幾個小時才能在站點之間獲取源。
你會建議什麼?一種選擇是開始使用Git,但它可能非常昂貴。那麼在主站點仍然有一箇中央SVN存儲庫,並在小站點安裝了git,然後我們可以使用git-svn conduit?
我們有多個站點並且正在使用一個集中式Subversion存儲庫。跨站點管理源代碼
存儲庫很大,網絡帶寬意味着需要幾個小時才能在站點之間獲取源。
你會建議什麼?一種選擇是開始使用Git,但它可能非常昂貴。那麼在主站點仍然有一箇中央SVN存儲庫,並在小站點安裝了git,然後我們可以使用git-svn conduit?
確保您使用的是1.7+版本的Subversion服務器和客戶端。版本1.7引入了一些性能改進,特別是對於http(s)://協議。
git-svn
使用標準的SVN協議,所以它不會去修復與Subversion服務器通信的速度。
但是,由於大多數Git操作都是本地的,所以用戶必須更少地與服務器交互。基本上,在這種情況下只有兩個緩慢的命令:git svn dcommit
和git svn fetch
。
考慮使用SubGit作爲您的SVN存儲庫。 SubGit執行SVN和Git存儲庫之間的服務器端同步,SVN和Git端都保持可寫。
一旦你有installed SubGit和setup Git server你可以使用純粹的Git來拉取和推送更改;在每個git push
SubGit轉換提交到SVN修訂和每個svn commit
它將提交的修訂轉換爲Git提交。
請注意,在這種情況下,您正在使用Git協議,可能會導致顯着的速度提升。
有關SubGit的更多詳細信息,請參閱documentation和comparison with git-svn。
聲明:SubGit是一個商業軟件;我是SubGit開發人員之一。
如果你想堅持純粹的顛覆工具鏈,考慮執行以下操作:
什麼你最終得到的是一個位於中央位置的主存儲庫以及每個站點的只讀鏡像副本。這些網站的用戶將從他們的本地鏡像中退出。
然後,您使用直寫式代理配置這些鏡像,這會將提交推回到主存儲庫。
每次提交後,存儲庫將使用svnsync
將該修訂推送到鏡像。
如果仍然太慢,您可能需要查看WanDisco SVN MultiSite。
您可以試用Multisite Repository Replication與VisualSVN服務器。
多站點存儲庫複製允許您在主站點上安裝主存儲庫,並在其他遠程位置安裝多個從站存儲庫。從站和主站之間的雙向數據複製是透明和自動的,每個從站和一個主站都是可寫的,並且從客戶的角度來看,它們充當常規的Subversion存儲庫。
爲什麼使用git會很貴? – 2013-02-19 10:27:09
@詹姆斯里德,我的意思是改用它可能會更好或者更好。 – yart 2013-02-19 10:40:26
你是什麼意思,「它需要幾個小時才能獲取網站之間的來源」?哪些顛覆命令很慢? – AlexMA 2013-02-19 13:41:25