docs: sharing guide: clarify end-game of "Example 2" stable
authorGreg Ward <greg@gerg.ca>
Tue, 14 Apr 2015 12:55:04 -0400
branchstable
changeset 1263 eb0a1d1d499b
parent 1262 eff1acc2511c
child 1264 33ed6119a0be
docs: sharing guide: clarify end-game of "Example 2" - push to dev-repo, rather than pulling into it (consistent with how we work the multiple developer scenario later) - explicitly demonstrate that public changesets are immutable
docs/sharing.rst
tests/test-sharing.t
--- a/docs/sharing.rst	Sun Jun 15 21:17:09 2014 -0400
+++ b/docs/sharing.rst	Tue Apr 14 12:55:04 2015 -0400
@@ -258,19 +258,28 @@
 
 There is one important step left to do. Because we pushed from
 ``test-repo`` to ``public``, the pushed changeset is in *public* phase
-in those two repositories. But ``dev-repo`` knows nothing of this:
-that changeset is still *draft* there. If we're not careful, we might
+in those two repositories. But ``dev-repo`` has been out-of-the-loop;
+changeset de61 is still *draft* there. If we're not careful, we might
 mutate history in ``dev-repo``, obsoleting a changeset that is already
-public. Let's avoid that situation for now by pulling from
-``test-repo`` down to ``dev-repo``::
+public. Let's avoid that situation for now by pushing up to
+``dev-repo``::
 
-  $ cd ../dev-repo
-  $ hg pull -u
-  [...]
+  $ hg push ../dev-repo
+  pushing to ../dev-repo
+  searching for changes
   no changes found
 
-Even though no *changesets* were pulled, Mercurial still pulled
-obsolescence markers from ``test-repo``.
+Even though no *changesets* were pushed, Mercurial still pushed
+obsolescence markers and phase changes to ``dev-repo``.
+
+A final note: since this fix is now *public*, it is immutable. It's no
+longer possible to amend it::
+
+  $ hg amend -m 'fix bug 37'
+  abort: cannot amend public changesets
+
+This is, after all, the whole point of Mercurial's phases: to prevent
+rewriting history that has already been published.
 
 Sharing with multiple developers: code review
 ---------------------------------------------
--- a/tests/test-sharing.t	Sun Jun 15 21:17:09 2014 -0400
+++ b/tests/test-sharing.t	Tue Apr 14 12:55:04 2015 -0400
@@ -143,23 +143,28 @@
   pushing 4 obsolescence markers (* bytes) (glob)
   4 obsolescence markers added
 
+Now that the fix is public, we cannot amend it any more.
+  $ hg amend -m 'fix bug 37'
+  abort: cannot amend public changesets
+  [255]
+
 Figure SG05
   $ hg -R ../public shortlog -G
   o  1:de6151c48e1c  public  fix bug 37
   |
   o  0:0dc9c9f6ab91  public  create new project
   
-Oops, still have draft changesets in dev-repo.
-  $ cd ../dev-repo
-  $ hg shortlog -r 'draft()'
+Oops, still have draft changesets in dev-repo: push the phase change there.
+  $ hg -R ../dev-repo shortlog -r 'draft()'
   4:de6151c48e1c  draft  fix bug 37
-  $ hg pull -u
-  pulling from $TESTTMP/test-repo
+  $ hg push ../dev-repo
+  pushing to ../dev-repo
   searching for changes
   no changes found
-  pull obsolescence markers
+  pushing 4 obsolescence markers (* bytes) (glob)
   0 obsolescence markers added
-  $ hg shortlog -r 'draft()'
+  [1]
+  $ hg -R ../dev-repo shortlog -r 'draft()'
 
 Sharing with multiple developers: code review