Tutorial - sharing a change with another person

In TutorialShareChange, we learned how to propagate a ChangeSet from one repository to another.

["Mercurial"] provides several ways of sharing changes between people, but one of the most common is through email.

After we have ["Commit"]ted a change, we can ["Export"] it to a file, and email the file as an attachment to someone else.

To ["Export"] a change, we use the export command. We must provide a ["Tag"], RevisionNumber or ChangeSetID to tell ["Mercurial"] what to ["Export"]. In our case, we want to ["Export"] the ["Tip"]. By default, ["Export"] just displays the patch, so we redirect the output to a file.

At this point, we should still be in the my-hello-share directory.

# 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;
 }

This file is a PatchFile in UnifiedDiff format, with some extra information that tells ["Mercurial"] how to ["Import"] it.

When the recipient receives our email, they will save the attachment and use the import command to ["Import"] the ChangeSet into their ["Repository"]. (As of version 0.6c, ["Mercurial"] ignores some of this information on import making imports that involve merges problematic.)

Let's put ourselves in the position of that recipient, and learn how to ["Merge"] a change, in TutorialMerge.