在Mercurial(hg)中,如果一个;hg push“;发行了什么?

在Mercurial(hg)中,如果一个;hg push“;发行了什么?,mercurial,push,dvcs,Mercurial,Push,Dvcs,我们可以使用 hg outgoing -v 但是文件名都分散在变更集列表中 如果发布了hg push,有没有一种方法可以查看所有文件的列表?我使用的是一个shell扩展,它有一个“同步”视图,允许您在推送文件之前查看传出文件。它还方便进行提交和其他操作。首先,创建一个包含以下内容的文件: changeset = "{files}" file = "{file}\n" 假设您将其命名为out-style.txt并将其放在主目录中。然后您可以发出以下命令: hg -q outgoing --st

我们可以使用

hg outgoing -v
但是文件名都分散在变更集列表中


如果发布了
hg push
,有没有一种方法可以查看所有文件的列表?

我使用的是一个shell扩展,它有一个“同步”视图,允许您在推送文件之前查看传出文件。它还方便进行提交和其他操作。

首先,创建一个包含以下内容的文件:

changeset = "{files}"
file = "{file}\n"
假设您将其命名为out-style.txt并将其放在主目录中。然后您可以发出以下命令:

hg -q outgoing --style ~/out-style.txt | sort -u
我通常使用

hg outgoing -v | grep files
它使列表更短,但不排序。但到目前为止,我还没有遇到过这样一种情况,我想推动这么多(同时检查文件),这是一个问题

[编辑] 要想做你想做的事:

  • 使用
    cut
    删除
    文件:
    零件
  • 对于包含多个接触文件的变更集,请使用
    tr
    将其放在单独的行中
  • 最后,使用
    sort
像这样:

hg outgoing -v |grep files: |cut -c 14- |tr ' ' '\n' |sort -u

你可以把它放在~/outgoingfiles.sh或别的什么东西里,让它很好地准备好。

一个不太受欢迎的功能:
hg status
可以显示任意更改集之间文件状态的更改信息。这可用于获取在修订版
X
Y
之间更改的文件列表:

hg status --rev X:Y
在这种情况下,我们可以使用
hg outgoing
,找到第一个outgoing变更集
X
,然后执行以下操作

hg status --rev X:
查看自修订版
X
以来的文件更改。您可以将其合并到shell中的一行中:

hg status --rev $(hg outgoing -q --template '{node}' -l 1): hg status--rev$(hg outgoing-q--template'{node}'-l1):
一个简单的
hg out
也可以解决这个问题。
它将列出所有已提交但尚未推送的签入。

非常感谢!哇!这不是经常需要的,因为没有标准的方法来列出所有将被推送的文件?我是说,在我们推之前看到这样的东西不是很有用吗?例如,现在,当我执行“hg out-v”时,我看到一个包含20个变更集的列表以及单个文件和文件列表。。。我必须在心里把这些名字组合起来。。。这是一个RubyonRails项目,其中有大量的文件。我想这一切都取决于你的工作方式。每天结束的时候,我都会在有事情发生的时候推。我不需要知道哪些变更集或文件将被推送。同意JWWalker的说法,这并不是你通常关心的事情。但是,如果您真的想更轻松地使用该功能,那么编写它似乎是一个微不足道的扩展。原因是,在SVN时代,在我提交到中央存储库之前,我会区分每个文件,逐行逐字地重新读取我所做的更改,在我真正提交并推送所有生产服务器之前。我的一些同事只是去和首席技术官玩电子游戏,他们实际上得到了更好的绩效评估,即使他们有时破坏了整个系统,因为他们是首席技术官的“好朋友”。顺便说一下,你可以每天都推吗?是每天推送到实时服务器吗?还是先推送到服务器,每隔几天或一两周推送到生产服务器?这种方法的缺点是变更集中的文件名用空格分隔。如果你有任何包含空格的文件名,那么在排序之前无法自动分隔文件名。我的首选方法也是,当我没有被困在控制台中时。我使用的是带雪豹的Macbook Pro。。。看起来Windows的家伙们有很多麻烦,但Mac的家伙们却被命令行卡住了!林健:关于Mercurial图形客户端,请看MacHg:我不知道它是否能显示传出文件的列表。我认为“hg状态”介于工作目录和本地存储库之间,而“hg传出”介于两个存储库之间?是的--99%的时间,您可以使用
hg status
显示工作副本的父版本与工作副本本身之间的差异。但您可以询问任意两个修订之间的文件状态。因此,在上面,我只是简单地使用
hg outgoing
来了解第一个outgoing变更集,然后询问
hg status
来显示该变更集的更改。我不确定这是否真的回答了问题:因为问题涉及更改的文件。