我刚从他们的遥控器克隆了一个回购。
我构建了该软件,在本地更改了大约4个文件,已提交,现在想要创建一个可以显示它们的补丁。
当我跑步时:
hg diff -U8p abc efg pqr > patch_file
我没有看到我所做的改变。 hg diff
仅将当前文件与上次提交的文件进行比较吗?
如何让它发挥作用?
答案 0 :(得分:3)
针对特定修订diff
的{{1}}工作目录,请使用
REV
要比较两个修订版,请使用
hg diff -r REV
要确定要比较的修订版本,请检查hg diff -r REV1 -r REV2
的输出。如果您要做很多事情并修复基本修订版,请使用
hg log
然后,您可以指定hg tag -r REV whatipulled
作为修订,而不是数字rev id(或哈希)。
要以更丰富的格式导出差异,包括提交评论等,您还可以使用为此目的而设计的以下内容:
whatipulled
还有hg export -r REV
,它会生成一个包含类似信息的二进制文件。
但是如果您要将更改发送回父回购,最好的方法是使用hg bundle -r REV
。它将您的变更集直接传达给父级;你甚至不需要知道哪些变更集需要推动。当然,您必须有权推送到父级回购。
hg push
(如果你从中取出,mercurial应该已经知道路径了,你可以把它留下来。)
如果父级仓库位于bitbucket且您没有pu,则可以在bitbucket上设置自己的帐户,从本地仓库中拉出/推送到该仓库,然后发出“拉取请求”项目回购,要求他们拉你。
以上所有都有控制行为的选项,见。
答案 1 :(得分:2)
来自hg help diff
如果只指定了一个修订版,则将该修订版与工作目录
进行比较
在你的差异-r中你必须使用旧的提示(最新的“不是你的”变更集)并在变异之前更新到提示(你的最新变更集)。
如果您的变更集中修改了某些二进制数据,请不要忘记使用-g选项
hg up & hg diff -r <CSET> -g > some.patch
改进了任何活动变更集的差异,无需手工检测基础变更集(对于单个分支中的线性历史==)
hg diff -r "parent(min(outgoing()))" -r tip
答案 2 :(得分:1)
默认情况下,hg diff
会将当前签出的文件与上次提交进行比较。您可以通过添加选项来更改此选项:
-r REV
将当前签出的文件与特定版本REV
进行比较。-c REV
显示修订版REV
因此,在您的情况下,hg diff -c 123 ...
会为您提供提交123的差异。
答案 3 :(得分:1)
我的猜测是hg outgoing
正是您想要的 - 它将您在本地提交的内容与默认远程服务器上的内容进行比较,并显示这些更改集的列表或-p
提交。
hg diff -r HERE -r THERE
或-r HERE
是默认设置,hg diff -r THERE
我看到你在评论中询问“我怎么知道它有什么”,其中 THERE 是遥控器的最后一个变更集,你可以通过{{1}来得到答案}。如果hg outgoing
显示它会发送更改集66,67和68,那么您希望hg outgoing
将已存在的内容(65)与本地内容(68)进行比较。