hg export changeset

时间:2012-04-28 11:32:04

标签: version-control mercurial

我想导出在hg变更集中更改的文件,以制作补丁 - 但我不知道如何执行此操作。我正在使用bitbucket作为托管服务 - 我该怎么做呢?

谢谢!

2 个答案:

答案 0 :(得分:7)

hg export命令实际上生成一个补丁(采用统一的差异格式),但还包括一些额外的信息,如作者和提交消息,以防您想将其与hg import一起使用。

如果你只是想要一个补丁集,没有额外的信息,那么它就变得如此简单:

hg diff -c REV

修改

由于您只想在修订版中更改文件,我认为是la 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参数。但是,我认为建议的脚本更直观,至少对我而言。

注意:从存储库移动或删除文件时,此脚本无法正常运行。

答案 1 :(得分:2)

我只是使用这个命令:

hg archive -I "set:added() or modified()" -r <rev-number> -t files /path/to/directory/for/export