Tutorial - Sharing a Change with another Repository
(This page is part of the Tutorial series. Previous part is TutorialFirstChange, next part is TutorialExport)
In TutorialFirstChange, we created a changeset in the my-hello-new-output repository. Now we want to propagate that change somewhere else.
Following good Mercurial style, let's first clone our original repository.
$ cd .. $ hg clone my-hello my-hello-share updating working directory 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
We can use the tip command to find out what the tip in each repository is. (Remember, the tip is the most recent changeset.) We pass in the -q ("be quiet") option to keep Mercurial from printing a complete description of the tip.
$ cd my-hello-share $ hg -q tip 1:82e55d328c8c $ cd ../my-hello-new-output $ hg -q tip 2:86794f718fb1
As we can see, the tip is different in each. Let's go back to my-hello-share and propagate our new changeset in there. To do this, we use the pull command, which pulls all changesets that are in the other repository, but not yet in this one, into this one.
$ cd ../my-hello-share $ hg pull ../my-hello-new-output pulling from ../my-hello-new-output searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (run 'hg update' to get a working copy)
Unlike other common Mercurial commands, pull is chatty. In this case, the pull has succeeded.
The last line of output is important. By default, Mercurial does not update the working directory after a pull. This means that although the repository now contains the changeset, the file hello.c in the working directory still has its old pre-pull contents.
We can update this file (and any others that were changed during the pull) by following Mercurial's reminder (we use the abbreviation up):
$ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
At this point, we can check and see that my-hello-share and my-hello-new-output have identical contents and revision histories.
To check the repositories are the same, we can go to my-hello-share, and do a
$ hg pull ../my-hello-new-output $ hg push ../my-hello-new-output
If both of these give a 'no changes found', that means the repositories are identical. Or vice versa, using 'my-hello-new-output' instead of 'my-hello-share'.
To share a change with another person, we continue to TutorialExport.