2011-08-22 31 views
0

我想僅將自發布的修訂版發生更改後的網站文件移至使用SSH或FTP的託管帳戶。主機帳戶是基於Linux的,但安裝了任何版本控制,因此我不能簡單地在那裏進行更新,而且解決方案必須在本地開發機器上運行。部署網站託管帳戶的Mercurial更改

我基本上試圖做什麼http://www.deployhq.com/,但免費。我想發佈更改而無需重新上傳所有內容或手動選擇要移動的文件。因爲我們將使用Linux進行開發,所以我打算簡單地使用一個比較版本並複製每個文件的bash腳本(怎麼樣?用bash不是那麼棒),但是使用web界面的東西會很好。

在此先感謝您的幫助!

+0

如果您知道上次將哪個修訂版推送到生產服務器,您可以執行諸如'hg log -v -r 10:tip'(用正確的修訂版ID替換「10」),並解析'files:輸出中的行,然後上傳顯示在那裏的文件。 – geoffspear

+0

Thanks @Wobble!你能幫我一個腳本,通過ssh複製每個文件,而不必手動執行它? – jmotes

+0

誰擁有Mercurial服務器?你有任何控制倉庫配置?你有沒有想過使用鉤子? – csano

回答

3

這看起來更像是一個rsync的工作,因爲那個目標沒有安裝hg,所以對於hg來說更像是一個工作。

事情是這樣:

rsync -avz /path/to/local/files/ remote_host:/remote/path/ 

這將傳輸的所有文件,遞歸(-r),從... /本地/文件/並將其放置在/遠程/路徑。 -az壓縮並保持文件屬性。

rsync負責僅傳輸已更改的文件。在指定源路徑時務必注意尾部的斜線,它們很重要(請參閱上面的鏈接)。

+0

對不起,我忘了提及 - 託管公司聲稱,即使使用SSH訪問,我也無法執行rsync,因爲它沒有安裝在服務器上。 – jmotes

+0

我還沒有用過rsync,但是託管公司的回覆讓我感到困惑。我想我應該仍然能夠同步到服務器,即使我無法從服務器運行rsync。你能詳細說明這一點嗎? – jmotes

+0

你試過了嗎?我認爲它應該通過ssh工作。如果沒有,請查看錯誤是什麼。 –