mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
9bf6b674a6
Summary: Change the legacy Python graph render to Rust renderer. Reviewed By: DurhamG Differential Revision: D24317802 fbshipit-source-id: 4c3dc3a6dd02b7ebe79596a8e77f4b6b139d2e20
556 lines
17 KiB
Python
556 lines
17 KiB
Python
# coding=utf-8
|
|
|
|
# coding=utf-8
|
|
|
|
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License version 2 or any later version.
|
|
|
|
from __future__ import absolute_import
|
|
|
|
from testutil.dott import feature, sh, shlib, testtmp # noqa: F401
|
|
|
|
|
|
# Set up test environment.
|
|
|
|
|
|
def mkcommit(name):
|
|
open(name, "wb").write(b"%s\n" % name.encode("utf8"))
|
|
sh.hg("ci", "-m", "add %s" % name, "-A", name)
|
|
|
|
|
|
shlib.mkcommit = mkcommit
|
|
|
|
|
|
sh % "enable amend rebase remotenames"
|
|
sh % "setconfig experimental.narrow-heads=True"
|
|
sh % "setconfig visibility.enabled=true mutation.record=true mutation.enabled=true mutation.date='0 0' experimental.evolution= remotenames.rename.default=remote"
|
|
sh % "hg init restack"
|
|
sh % "cd restack"
|
|
|
|
# Note: Repositories populated by `hg debugbuilddag` don't seem to
|
|
# correctly show all commits in the log output. Manually creating the
|
|
# commits results in the expected behavior, so commits are manually
|
|
# created in the test cases below.
|
|
|
|
# Test unsupported flags:
|
|
sh % "hg rebase --restack --rev ." == r"""
|
|
abort: cannot use both --rev and --restack
|
|
[255]"""
|
|
sh % "hg rebase --restack --source ." == r"""
|
|
abort: cannot use both --source and --restack
|
|
[255]"""
|
|
sh % "hg rebase --restack --base ." == r"""
|
|
abort: cannot use both --base and --restack
|
|
[255]"""
|
|
sh % "hg rebase --restack --abort" == r"""
|
|
abort: cannot use both --abort and --restack
|
|
[255]"""
|
|
sh % "hg rebase --restack --continue" == r"""
|
|
abort: cannot use both --continue and --restack
|
|
[255]"""
|
|
sh % "hg rebase --restack --hidden" == r"""
|
|
abort: cannot use both --hidden and --restack
|
|
[255]"""
|
|
|
|
# Test basic case of a single amend in a small stack.
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 2 files removed, 0 files unresolved"
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "showgraph" == r"""
|
|
@ 743396f58c5c add b
|
|
│
|
|
│ o 47d2a3944de8 add d
|
|
│ │
|
|
│ o 4538525df7e2 add c
|
|
│ │
|
|
│ x 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r'''
|
|
rebasing 4538525df7e2 "add c"
|
|
rebasing 47d2a3944de8 "add d"'''
|
|
sh % "showgraph" == r"""
|
|
o 228a9d754739 add d
|
|
│
|
|
o 6d61804ea72c add c
|
|
│
|
|
@ 743396f58c5c add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test multiple amends of same commit.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 1 files removed, 0 files unresolved"
|
|
sh % "showgraph" == r"""
|
|
o 4538525df7e2 add c
|
|
│
|
|
@ 7c3bad9141dc add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend"
|
|
sh % "showgraph" == r"""
|
|
@ af408d76932d add b
|
|
│
|
|
│ o 4538525df7e2 add c
|
|
│ │
|
|
│ x 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == 'rebasing 4538525df7e2 "add c"'
|
|
sh % "showgraph" == r"""
|
|
o e5f1b912c5fa add c
|
|
│
|
|
@ af408d76932d add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test conflict during rebasing.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "mkcommit e"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 3 files removed, 0 files unresolved"
|
|
sh % "echo conflict" > "d"
|
|
sh % "hg add d"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "showgraph" == r"""
|
|
@ e067a66b3532 add b
|
|
│
|
|
│ o 9d206ffc875e add e
|
|
│ │
|
|
│ o 47d2a3944de8 add d
|
|
│ │
|
|
│ o 4538525df7e2 add c
|
|
│ │
|
|
│ x 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r"""
|
|
rebasing 4538525df7e2 "add c"
|
|
rebasing 47d2a3944de8 "add d"
|
|
merging d
|
|
warning: 1 conflicts while merging d! (edit, then use 'hg resolve --mark')
|
|
unresolved conflicts (see hg resolve, then hg rebase --continue)
|
|
[1]"""
|
|
sh % "hg rebase --restack" == r"""
|
|
abort: rebase in progress
|
|
(use 'hg rebase --continue' or 'hg rebase --abort')
|
|
[255]"""
|
|
sh % "echo merged" > "d"
|
|
sh % "hg resolve --mark d" == r"""
|
|
(no more unresolved files)
|
|
continue: hg rebase --continue"""
|
|
sh % "hg rebase --continue" == r'''
|
|
already rebased 4538525df7e2 "add c" as 217450801891
|
|
rebasing 47d2a3944de8 "add d"
|
|
rebasing 9d206ffc875e "add e"'''
|
|
sh % "showgraph" == r"""
|
|
o b706583c96e3 add e
|
|
│
|
|
o e247890f1a49 add d
|
|
│
|
|
o 217450801891 add c
|
|
│
|
|
@ e067a66b3532 add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test finding a stable base commit from within the old stack.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 2 files removed, 0 files unresolved"
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 3" == "3 files updated, 0 files merged, 0 files removed, 0 files unresolved"
|
|
sh % "showgraph" == r"""
|
|
o 743396f58c5c add b
|
|
│
|
|
│ @ 47d2a3944de8 add d
|
|
│ │
|
|
│ o 4538525df7e2 add c
|
|
│ │
|
|
│ x 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r'''
|
|
rebasing 4538525df7e2 "add c"
|
|
rebasing 47d2a3944de8 "add d"'''
|
|
sh % "showgraph" == r"""
|
|
@ 228a9d754739 add d
|
|
│
|
|
o 6d61804ea72c add c
|
|
│
|
|
o 743396f58c5c add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test finding a stable base commit from a new child of the amended commit.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 2 files removed, 0 files unresolved"
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "mkcommit e"
|
|
sh % "showgraph" == r"""
|
|
@ 58e16e5d23eb add e
|
|
│
|
|
o 743396f58c5c add b
|
|
│
|
|
│ o 47d2a3944de8 add d
|
|
│ │
|
|
│ o 4538525df7e2 add c
|
|
│ │
|
|
│ x 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r'''
|
|
rebasing 4538525df7e2 "add c"
|
|
rebasing 47d2a3944de8 "add d"'''
|
|
sh % "showgraph" == r"""
|
|
o 228a9d754739 add d
|
|
│
|
|
o 6d61804ea72c add c
|
|
│
|
|
│ @ 58e16e5d23eb add e
|
|
├─╯
|
|
o 743396f58c5c add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test finding a stable base commit when there are multiple amends and
|
|
# a commit on top of one of the obsolete intermediate commits.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 2 files removed, 0 files unresolved"
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "mkcommit e"
|
|
sh % "hg prev" == r"""
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
[*] add b (glob)"""
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 743396f58c5c are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 5" == "2 files updated, 0 files merged, 0 files removed, 0 files unresolved"
|
|
sh % "showgraph" == r"""
|
|
o af408d76932d add b
|
|
│
|
|
│ @ 58e16e5d23eb add e
|
|
│ │
|
|
│ x 743396f58c5c add b
|
|
├─╯
|
|
│ o 47d2a3944de8 add d
|
|
│ │
|
|
│ o 4538525df7e2 add c
|
|
│ │
|
|
│ x 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r'''
|
|
rebasing 4538525df7e2 "add c"
|
|
rebasing 47d2a3944de8 "add d"
|
|
rebasing 58e16e5d23eb "add e"'''
|
|
sh % "showgraph" == r"""
|
|
@ 2220f78c83d8 add e
|
|
│
|
|
│ o d61d8c7f922c add d
|
|
│ │
|
|
│ o e5f1b912c5fa add c
|
|
├─╯
|
|
o af408d76932d add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test that we start from the bottom of the stack. (Previously, restack would
|
|
# only repair the unstable children closest to the current changeset. This
|
|
# behavior is now incorrect -- restack should always fix the whole stack.)
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 2 files removed, 0 files unresolved"
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 2" == "2 files updated, 0 files merged, 0 files removed, 0 files unresolved"
|
|
sh % "echo c" >> "c"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 4538525df7e2 are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 3" == "2 files updated, 0 files merged, 0 files removed, 0 files unresolved"
|
|
sh % "showgraph" == r"""
|
|
o dd2a887139a3 add c
|
|
│
|
|
│ o 743396f58c5c add b
|
|
│ │
|
|
│ │ @ 47d2a3944de8 add d
|
|
│ │ │
|
|
│ │ x 4538525df7e2 add c
|
|
├───╯
|
|
x │ 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r'''
|
|
rebasing dd2a887139a3 "add c"
|
|
rebasing 47d2a3944de8 "add d"'''
|
|
sh % "showgraph" == r"""
|
|
@ 4e2bc7d6cfea add d
|
|
│
|
|
o afa76d04eaa3 add c
|
|
│
|
|
o 743396f58c5c add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test what happens if there is no base commit found. The command should
|
|
# fix up everything above the current commit, leaving other commits
|
|
# below the current commit alone.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "mkcommit e"
|
|
sh % "hg up 3" == "0 files updated, 0 files merged, 1 files removed, 0 files unresolved"
|
|
sh % "echo d" >> "d"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 47d2a3944de8 are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 0" == "0 files updated, 0 files merged, 3 files removed, 0 files unresolved"
|
|
sh % "mkcommit f"
|
|
sh % "hg up 1" == "1 files updated, 0 files merged, 1 files removed, 0 files unresolved"
|
|
sh % "showgraph" == r"""
|
|
o 79bfbab36011 add f
|
|
│
|
|
│ o f2bf14e1d387 add d
|
|
│ │
|
|
│ │ o 9d206ffc875e add e
|
|
│ │ │
|
|
│ │ x 47d2a3944de8 add d
|
|
│ ├─╯
|
|
│ o 4538525df7e2 add c
|
|
│ │
|
|
│ @ 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == 'rebasing 9d206ffc875e "add e"'
|
|
sh % "showgraph" == r"""
|
|
o a660256c6d2a add e
|
|
│
|
|
│ o 79bfbab36011 add f
|
|
│ │
|
|
o │ f2bf14e1d387 add d
|
|
│ │
|
|
o │ 4538525df7e2 add c
|
|
│ │
|
|
@ │ 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test having an unamended commit.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "hg prev" == r"""
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
[*] add b (glob)"""
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend -m Amended" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend -m Unamended"
|
|
sh % "hg unamend"
|
|
sh % "hg up -C 1" == "1 files updated, 0 files merged, 0 files removed, 0 files unresolved"
|
|
sh % "showgraph" == r"""
|
|
o 173e12a9f067 Amended
|
|
│
|
|
│ o 4538525df7e2 add c
|
|
│ │
|
|
│ @ 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r"""
|
|
rebasing 4538525df7e2 "add c"
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved"""
|
|
sh % "showgraph" == r"""
|
|
o b7aa69de00bb add c
|
|
│
|
|
@ 4d1e27c9f82b Unamended
|
|
│
|
|
│ x 173e12a9f067 Amended
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Revision 2 "add c" is already stable (not orphaned) so restack does nothing:
|
|
|
|
sh % "hg rebase --restack" == "nothing to rebase - empty destination"
|
|
|
|
# Test recursive restacking -- basic case.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 2 files removed, 0 files unresolved"
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 2" == "2 files updated, 0 files merged, 0 files removed, 0 files unresolved"
|
|
sh % "echo c" >> "c"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 4538525df7e2 are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 1 files removed, 0 files unresolved"
|
|
sh % "showgraph" == r"""
|
|
o dd2a887139a3 add c
|
|
│
|
|
│ o 743396f58c5c add b
|
|
│ │
|
|
│ │ o 47d2a3944de8 add d
|
|
│ │ │
|
|
│ │ x 4538525df7e2 add c
|
|
├───╯
|
|
@ │ 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r"""
|
|
rebasing dd2a887139a3 "add c"
|
|
rebasing 47d2a3944de8 "add d"
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved"""
|
|
sh % "showgraph" == r"""
|
|
o 4e2bc7d6cfea add d
|
|
│
|
|
o afa76d04eaa3 add c
|
|
│
|
|
@ 743396f58c5c add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|
|
|
|
# Test recursive restacking -- more complex case. This test is designed to
|
|
# to check for a bug encountered if rebasing is performed naively from the
|
|
# bottom-up wherein obsolescence information for commits further up the
|
|
# stack is lost upon rebasing lower levels.
|
|
sh % "newrepo"
|
|
sh % "mkcommit a"
|
|
sh % "mkcommit b"
|
|
sh % "mkcommit c"
|
|
sh % "mkcommit d"
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 2 files removed, 0 files unresolved"
|
|
sh % "echo b" >> "b"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 7c3bad9141dc are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "mkcommit e"
|
|
sh % "mkcommit f"
|
|
sh % "hg prev" == r"""
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
[*] add e (glob)"""
|
|
sh % "echo e" >> "e"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 58e16e5d23eb are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 2" == "2 files updated, 0 files merged, 1 files removed, 0 files unresolved"
|
|
sh % "echo c" >> "c"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of 4538525df7e2 are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "mkcommit g"
|
|
sh % "mkcommit h"
|
|
sh % "hg prev" == r"""
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
[*] add g (glob)"""
|
|
sh % "echo g" >> "g"
|
|
sh % "hg amend" == r"""
|
|
hint[amend-restack]: descendants of a063c2736716 are left behind - use 'hg restack' to rebase them
|
|
hint[hint-ack]: use 'hg hint --ack amend-restack' to silence these hints"""
|
|
sh % "hg up 1" == "0 files updated, 0 files merged, 2 files removed, 0 files unresolved"
|
|
sh % "showgraph" == r"""
|
|
o 8282a17a7483 add g
|
|
│
|
|
│ o e86422ad5d0e add h
|
|
│ │
|
|
│ x a063c2736716 add g
|
|
├─╯
|
|
o dd2a887139a3 add c
|
|
│
|
|
│ o e429b2ca5d8b add e
|
|
│ │
|
|
│ │ o 849d5cce0019 add f
|
|
│ │ │
|
|
│ │ x 58e16e5d23eb add e
|
|
│ ├─╯
|
|
│ o 743396f58c5c add b
|
|
│ │
|
|
│ │ o 47d2a3944de8 add d
|
|
│ │ │
|
|
│ │ x 4538525df7e2 add c
|
|
├───╯
|
|
@ │ 7c3bad9141dc add b
|
|
├─╯
|
|
o 1f0dee641bb7 add a"""
|
|
sh % "hg rebase --restack" == r"""
|
|
rebasing 849d5cce0019 "add f"
|
|
rebasing dd2a887139a3 "add c"
|
|
rebasing 8282a17a7483 "add g"
|
|
rebasing 47d2a3944de8 "add d"
|
|
rebasing e86422ad5d0e "add h"
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved"""
|
|
sh % "showgraph" == r"""
|
|
o 5bc29b84815f add h
|
|
│
|
|
│ o 4e2bc7d6cfea add d
|
|
│ │
|
|
o │ c7fc06907e30 add g
|
|
├─╯
|
|
o afa76d04eaa3 add c
|
|
│
|
|
│ o 6aaca8e17a00 add f
|
|
│ │
|
|
│ o e429b2ca5d8b add e
|
|
├─╯
|
|
@ 743396f58c5c add b
|
|
│
|
|
o 1f0dee641bb7 add a"""
|