2013-02-24 85 views
1

我刚刚从远程克隆了一个回购。本地提交后的差异

我构建的软件,更改了约4个文件,承诺他们在本地,现在想创建一个补丁,我可以显示他们。

当我运行:

hg diff -U8p abc efg pqr > patch_file 

我没有看到我所做的更改。 hg diff只会将当前文件与上次提交的文件进行比较吗?

我如何得到这个工作?

+2

为什么不使用捆绑,如果双方是水银,而不是差异? – 2013-02-24 14:20:25

+0

@LazyBadger:我不知道这一点。是的我可以。但是他们的网站提到了这种方法 – batman 2013-02-24 16:31:27

回答

3
  1. diff针对特定版本REV工作目录,使用

    hg diff -r REV 
    
  2. 要互相比较两个版本,使用

    hg diff -r REV1 -r REV2 
    
  3. 要弄清楚哪些修订比较,检查hg log的输出。如果你会做这个有很多和基础版本是固定的,给它一个名称(例如,whatipulled)与

    hg tag -r REV whatipulled 
    

    然后,您可以指定whatipulled作为修订,而不是数字转速ID (或散列)。

  4. 要导出的diff更丰富的格式,包括提交评论等,你还可以使用其目的是为了这个目的如下:

    hg export -r REV 
    
  5. 还有hg bundle -r REV,其产生的二进制文件具有类似的信息。

  6. 但是,如果你发送更改回母公司回购,最好的方法是使用hg push。它将您的变更集直接传达给家长;你甚至不需要知道哪些变更需要推送。当然,你必须有权推到父母回购。

    hg push [ parent_repo_url ] 
    

    (如果你很拽,善变应该已经知道的路径,你可以离开它)。

  7. 如果父回购是在bitbucket上,并且您没有pu,则可以在bitbucket上设置您自己的帐户,从本地回购库中拉出/推送该帐户,然后发出“拉请求”给项目回购,要求他们从你那里拉。

以上所有都有控制其行为的选项,请参阅。

0

默认情况下,hg diff将当前检出的文件与上次提交进行比较。您可以通过添加选项更改此:

  • -r REV当前签出的文件与特定修订REV进行比较。
  • -c REV显示了修订版本的情况下做出REV

所以变化hg diff -c 123 ...会给你的差异。如果只指定一个版本,那么提交123

+0

如果我需要将它与最初克隆的回购进行比较,该怎么办?我做了任何改变之前的一个。该版本的“REV”是什么? – batman 2013-02-24 12:50:59

2

hg help diff

该修订版与工作目录

在diff的-r中,必须先使用旧的提示(最新的“不是你的”变更集),并在差异化之前更新到提示(最新的变更集)。

如果一些二进制数据是在您的变更修改,不要忘记使用-g选项

hg up & hg diff -r <CSET> -g > some.patch

改进DIFF任何主动变更,没有手的工作检测基地变更(线性在单分支历史==)

hg diff -r "parent(min(outgoing()))" -r tip

1

我的猜测是,hg outgoing是你想要什么 - 它比较您在本地有犯了什么默认远程服务器上有什么,并向您显示这些更改集的列表或-p提交。

但是,这样做会分别显示每个变更集。如果你想看到所有组合的变化,你必须做hg diff -r HERE -r THERE或因为-r HERE是默认的,hg diff -r THERE

我看到你问了注释“我怎么知道有什么”,其中其中是最后一个远程变更集,您可以通过执行hg outgoing来获得答案。如果hg outgoing显示它会发送变更集66,67和68,那么您想要做hg diff -r 65来比较已有的(65)和本地的(68)。

+0

使用revset(直接在diff中)会更聪明。在线性历史记录的情况下,revset将为“父(min(outgoing()))” – 2013-02-24 20:10:48

+0

良好的呼叫。你应该改变你的答案。 – 2013-02-25 03:40:20