hg导出变更集。

5
我希望能够导出 hg 变更集中仅有的已更改文件,以生成补丁。但是我不确定如何做到这一点。我使用 bitbucket 作为托管服务,请问该怎么操作?
感谢!
2个回答

7
hg export命令实际上生成一个补丁(以统一的差异格式),但也包括一些额外的信息,例如作者和提交消息,以防您想要将其与 hg import 一起使用。
如果您只需要从一个changeset生成没有额外信息的补丁,则非常简单:
hg diff -c REV

编辑

由于您只想要在修订版中更改的文件,类似于hg archive,我想出了以下Bourne shell脚本:

#!/bin/sh

mkdir -p $2

for i in $(hg log -r $1 --template '{files}')
do
    mkdir -p $2/$(dirname $i)
    hg cat -r $1 $i >$2/$i
done

该脚本需要传入两个参数:要导出的版本和保存文件的目录。你可以使用类似的脚本,但要使用 hg archive 以及一系列的 -I 参数来实现相同的功能。不过,我认为这个提议的脚本更加直观易懂,至少对我来说是这样的。
注意:当从仓库中移动或删除文件时,该脚本将无法正确工作。

几乎就完成了 - 我不使用差异来制作补丁,可能应该这样做,但从未尝试过。我该如何让hg只给我文件? - danp
2
@danp,试试吧 :-)...导入和导出补丁(作为差异)已经内置于Mercurial中,并且非常容易。 - Mark Tolonen

2
我只使用这个命令:
hg archive -I "set:added() or modified()" -r <rev-number> -t files /path/to/directory/for/export

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接