2010-11-13 97 views

回答

1

马丁有正确的方式得到一个什么样的文件在修订版本已经改变了名单,我已经upvoted他的答案,而只是为什么你的问题是有点偏离扩大:

在每水银位置有一个包含所有更改的完整副本。如果您打算使用Mercurial部署到您的服务器,那么您必须将所有内容克隆到您的服务器 - 一次。之后,推/拉只会移过服务器尚不具备的(压缩)变更集。

如果你不想拥有服务器上的所有东西,那么你需要为你的部署使用除mercurial以外的东西,也许是从Martin的状态命令提供的东西或从hg archive创建的快照。

就个人而言,我可以在我的服务器上拥有完整的历史记录,只需在服务器上为每个新部署执行hg pull ; hg update即可。它很整洁,高效。

+0

您好Ry4an - 我很清楚Mercurial需要一个完整的副本的变化。我将无法在代码所在的所有服务器上运行mercurial,因此我需要使用FTP/SSH来上传文件,并且上传已更改的文件是相当不错的。我试过了似乎很好运行的归档文件,特别是在Tortoisehg的Repo浏览器中。谢谢! – Industrial 2010-11-13 17:07:49

2

您可以使用模板来hg loghg 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

+0

'hg help status'显示'-0 --print0带有NUL的结束文件名,用于xargs'。 – 2010-11-13 16:20:10

4

您不能传输一些文件 - 您必须始终在本地有一个完整的克隆。所以我建议你先做一次,然后逐步进行修改。

然后,您应该使用hg status来显示文件修改版本的更改名称。您通常使用hg status来查看哪些文件与工作副本父版本相比发生了变化,但是您可以将--rev传递给状态以查看任何两个修订之间的更改!

所以使用

$ hg status --change tip 

看看哪些文件在尖端变更发生了变化。使用

$ hg pull 
$ hg status --rev .:tip 

查看在拉动后执行hg update时将更改哪些文件。假设您与tip位于同一个命名分支上,此更新将带您从当前工作目录父系(表示为.)到tip。否则hg update将带您到当前分支上的最尖端变更集。

+0

另外' - 改变REV列表修改的文件修改' – 2010-11-13 16:21:22

相关问题