511 In the user guide, we saw examples of *orphan* changesets, which are |
511 In the user guide, we saw examples of *orphan* changesets, which are |
512 the most common type of unstable changeset. (Recall that a |
512 the most common type of unstable changeset. (Recall that a |
513 non-obsolete changeset with obsolete ancestors is an orphan.) |
513 non-obsolete changeset with obsolete ancestors is an orphan.) |
514 |
514 |
515 Two other types of instability can happen: *content-divergent* and |
515 Two other types of instability can happen: *content-divergent* and |
516 *bumped* changesets. Both are more likely with shared mutable |
516 *phase-divergent* changesets. Both are more likely with shared mutable |
517 history, especially mutable history shared by multiple developers. |
517 history, especially mutable history shared by multiple developers. |
518 |
518 |
519 Setting up |
519 Setting up |
520 ========== |
520 ========== |
521 |
521 |
684 Figure 7 shows what just happened to Bob's repository: changeset |
684 Figure 7 shows what just happened to Bob's repository: changeset |
685 2:e011 is now public, so it can't be obsolete. When that changeset was |
685 2:e011 is now public, so it can't be obsolete. When that changeset was |
686 obsolete, it made perfect sense for it to have a successor, namely |
686 obsolete, it made perfect sense for it to have a successor, namely |
687 Bob's amendment of Alice's fix (changeset 4:fe88). But it's illogical |
687 Bob's amendment of Alice's fix (changeset 4:fe88). But it's illogical |
688 for a public changeset to have a successor, so 4:fe88 is unstable: |
688 for a public changeset to have a successor, so 4:fe88 is unstable: |
689 it has become *bumped*. |
689 it has become *phase-divergent*. |
690 |
690 |
691 [figure SG07: 2:e011 now public not obsolete, 4:fe88 now bumped] |
691 [figure SG07: 2:e011 now public not obsolete, 4:fe88 now phase-divergent] |
692 |
692 |
693 As usual when there's trouble in your repository, the solution is to |
693 As usual when there's trouble in your repository, the solution is to |
694 evolve it:: |
694 evolve it:: |
695 |
695 |
696 $ hg evolve --all |
696 $ hg evolve --all |
697 |
697 |
698 Figure 8 illustrates Bob's repository after evolving away the bumped |
698 Figure 8 illustrates Bob's repository after evolving away the phase-divergent |
699 changeset. Ignoring the obsolete changesets, Bob now has a nice, |
699 changeset. Ignoring the obsolete changesets, Bob now has a nice, |
700 clean, simple history. His amendment of Alice's bug fix lives on, as |
700 clean, simple history. His amendment of Alice's bug fix lives on, as |
701 changeset 5:227d—albeit with a software-generated commit message. (Bob |
701 changeset 5:227d—albeit with a software-generated commit message. (Bob |
702 should probably amend that changeset to improve the commit message.) |
702 should probably amend that changeset to improve the commit message.) |
703 But the important thing is that his repository no longer has any |
703 But the important thing is that his repository no longer has any |
704 unstable changesets, thanks to ``evolve``. |
704 unstable changesets, thanks to ``evolve``. |
705 |
705 |
706 [figure SG08: 5:227d is new, formerly bumped changeset 4:fe88 now hidden] |
706 [figure SG08: 5:227d is new, formerly phase-divergent changeset 4:fe88 now hidden] |
707 |
707 |
708 Conclusion |
708 Conclusion |
709 ---------- |
709 ---------- |
710 |
710 |
711 Mutable history is a powerful tool. Like a sharp knife, an experienced |
711 Mutable history is a powerful tool. Like a sharp knife, an experienced |