我無法理解我如何才能得到我上一次修訂版中更改過的文件,而不是完整的repo,這是通過使用Clone獲得的。這對於例如部署最後更改的文件將是很有幫助的。Mercurial:從修訂版獲取已更改的文件?
我該怎麼辦?
感謝
我無法理解我如何才能得到我上一次修訂版中更改過的文件,而不是完整的repo,這是通過使用Clone獲得的。這對於例如部署最後更改的文件將是很有幫助的。Mercurial:從修訂版獲取已更改的文件?
我該怎麼辦?
感謝
馬丁有正確的方式得到一個什麼樣的文件在修訂版本已經改變了名單,我已經upvoted他的答案,而只是爲什麼你的問題是有點偏離擴大:
在每水銀位置有一個包含所有更改的完整副本。如果您打算使用Mercurial部署到您的服務器,那麼您必須將所有內容克隆到您的服務器 - 一次。之後,推/拉只會移過服務器尚不具備的(壓縮)變更集。
如果你不想擁有服務器上的所有東西,那麼你需要爲你的部署使用除mercurial以外的東西,也許是從Martin的狀態命令提供的東西或從hg archive
創建的快照。
就個人而言,我可以在我的服務器上擁有完整的歷史記錄,只需在服務器上爲每個新部署執行hg pull ; hg update
即可。它很整潔,高效。
您可以使用模板來hg log
或hg tip
得到所有文件名:
hg tip --template '{files}'
或獲得例如所有文件修改/增加/變更由5修改:
hg log -r5 --template '{files}'
你可以閱讀更多有關模板Mercurial: The Definitive Guide, Chapter 11. Customizing the output of Mercurial或簡短的幫助符合HG幫助templating`
如果你想要做的事的文件,例如grep的通過他們:
hg tip --template '{files}' | xargs grep foo
小心這將打破包含空格的文件名!
要處理各種文件名更復雜的東西需要(由於在#mercurial毫克提示):
我們需要爲這個多線樣式假設一個名爲zerosep
文件包含:
changeset = "{files}"
file = "{file}\0"
然後你可以用它來製作文件名並進行處理的\0
分隔列表與xargs -0
:
hg tip --style zerosep | xargs -0 grep foo
信息如何工作可以在:Listing files on multiple lines
'hg help status'顯示'-0 --print0帶有NUL的結束文件名,用於xargs'。 – 2010-11-13 16:20:10
您不能傳輸一些文件 - 您必須始終在本地有一個完整的克隆。所以我建議你先做一次,然後逐步進行修改。
然後,您應該使用hg status
來顯示文件修改版本的更改名稱。您通常使用hg status
來查看哪些文件與工作副本父版本相比發生了變化,但是您可以將--rev
傳遞給狀態以查看任何兩個修訂之間的更改!
所以使用
$ hg status --change tip
看看哪些文件在尖端變更發生了變化。使用
$ hg pull
$ hg status --rev .:tip
查看在拉動後執行hg update
時將更改哪些文件。假設您與tip
位於同一個命名分支上,此更新將帶您從當前工作目錄父系(表示爲.
)到tip
。否則hg update
將帶您到當前分支上的最尖端變更集。
另外' - 改變REV列表修改的文件修改' – 2010-11-13 16:21:22
您好Ry4an - 我很清楚Mercurial需要一個完整的副本的變化。我將無法在代碼所在的所有服務器上運行mercurial,因此我需要使用FTP/SSH來上傳文件,並且上傳已更改的文件是相當不錯的。我試過了似乎很好運行的歸檔文件,特別是在Tortoisehg的Repo瀏覽器中。謝謝! – Industrial 2010-11-13 17:07:49