教程 - 和别人分享改变

在[ChineseTutorialShareChange:"教程 - 与别的仓库分享改变"]中我们学到如何把[:ChangeSet:变更集]从一个仓库传递到另一个仓库去。有很多其它的方式在人和仓库之间分享改变,其中最常见的一种是通过电子邮件。

我们 ["Commit"] 改变后, 我们可以 ["Export"] 它到一个文件里,并把这个文件作为附件email 给其它人。

我们用 export 命令来 ["Export"] 改变。我们必需提供一个 ["Tag"], [:RevisionNumber:版本号]或 [:ChangeSetID:变更集号] 来告诉 ["Mercurial"] 有什么进入了 ["Export"]。 在我们的这个案例中,我们希望 ["Export"] ["Tip"]。假设我们还在 my-hello-share 这个目录里,让我们做。

$ hg export tip
# HG changeset patch
# User mpm@selenic.com
# Node ID a58809af174d89a3afbbbb48008d34deb30d8574
# Parent  82e55d328c8ca4ee16520036c0aaace03a5beb65
Express great joy at existence of Mercurial

diff -r 82e55d328c8c -r a58809af174d hello.c
--- a/hello.c   Fri Aug 26 08:21:28 2005
+++ b/hello.c   Fri Aug 26 08:26:28 2005
@@ -12,5 +12,6 @@
 int main(int argc, char **argv)
 {
        printf("hello, world!\n");
+       printf("sure am glad I'm using Mercurial!\n");
        return 0;
 }

缺省情况下,["Export"] 只显示补丁,所以我们通常把输出重定向到一个文件中。这个文件是一个 UnifiedDiff 格式的[:PatchFile:补丁]文件,这个文件还带了一些扩展的信息告诉 ["Mercurial"] 如何 ["Import"] 它.

当收件人收到我们的邮件,他们将保存附件并使用 import 命令来把[:ChangeSet:变更集] ["Import"] 到他们的[:Repository:仓库]中去。 (在0.7版本中, ["Mercurial"] 忽略了其中的一些信息,做 import 会引起一合并的问题。)

让我们站在现有的基础上在[:ChineseTutorialMerge:"教程 - 合并改变"]里来学习如何 ["Merge"] 一个改变。