我有一個項目,我不得不使用ftp作爲將文件部署到活動服務器的一種方式。 我正在linux上開發,所以我一起砍了一個bash腳本,用來備份ftp服務器的內容, 刪除了ftp上的所有文件,並從mercurial存儲庫上傳所有新文件。 (並照顧用戶上傳的文件和文件夾,並進行部署後更改等)從shell腳本增量部署
它運行良好,但項目開始變得足夠大,使部署過程過長。
我想修改腳本來查找哪些文件已經更改,並且只部署修改後的文件。 (備份很好,atm)
我使用的是mercurial作爲VCS,所以我的想法是以某種方式請求兩個修訂版之間的修改文件,迭代修改後的文件, 並上傳每個修改文件,並刪除每個刪除的文件。
我可以使用hg log -vr rev1:rev2
,從輸出中,我可以用grep/sed/etc分割出已更改的文件。
兩個問題:
我聽說過的恐怖故事,解析LS的輸出導致精神錯亂,所以我的猜測是,這同樣適用於這裏, 如果我嘗試解析的hg log
輸出時,變量將經歷分詞和各種變換。
hg log
不告訴我一個文件被修改/添加/刪除。區分修改和刪除的文件將是最不重要的。
那麼,這樣做的正確方法是什麼?我使用yafc作爲ftp客戶端,以防萬一需要,但願意切換。
rq使用'hg status'(不是日誌)在下面給出你的答案。不用擔心使用mercurial解析輸出 - 作者非常小心地將命令的輸出從版本更改爲版本。 這就是說,我是你,我會避免滾動自己的增量更新。只需將所有內容發送到服務器上的新目錄,然後將新的臨時名稱重命名爲舊的,網絡可見的名稱。 – 2010-06-18 17:25:24