Tutorial - sharing a change with another person

In TutorialShareChange, we learned how to propagate a [:ChangeSet:changeset] from one [:Repository:repository] to another. There are other ways of sharing changes between repositories and people, one of the most common is through email.

After we have [:Commit:committed] a change, we can [:Export: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:tag], [:RevisionNumber:revision number] or [:ChangeSetID:changeset ID] to tell Mercurial what to export. In our case, we want to export the [:Tip:tip]. Provided we're still in the my-hello-share directory, let's do just that.

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

By default, export just displays the patch, so usually we redirect the output to a file. This file is a [:PatchFile:patch file] in [:UnifiedDiff:unified diff] format, with some extra information that tells Mercurial how to [:Import: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.

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


CategoryTutorial