tests/test-rebase-named-branches.t
author Stefano Tortarolo <stefano.tortarolo@gmail.com>
Wed, 23 Mar 2011 01:14:43 +0100
changeset 13733 4e2690a764c1
child 14118 7fd8e597f99c
permissions -rw-r--r--
rebase: allow for rebasing descendants onto ancestors on different named branches So far we've been denying rebasing descendants onto ancestors, but there are situations in which this kind of operation makes perfect sense to me. Let's say we have made a commit (or more), that belongs to branch 'dev', on top of the named branch 'stable': ... a (stable) - b (dev) but then we realize that b should belong to branch 'stable'. In these cases a rebase means: "move these csets from named branch A to named branch B" and there isn't a valid reason to deny it. This patch basically doesn't block it, if source and destination are on different named branches. The old behaviour still applies for rebases across the same named branch. Can you think of any tricky corner cases in which this new behaviour could lead to problems? (I bet there are tons of them...) By the way, I created a brand new .t because I feel there should be more tests I can't think of at the moment.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13733
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     1
  $ cat >> $HGRCPATH <<EOF
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     2
  > [extensions]
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     3
  > graphlog=
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     4
  > rebase=
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     5
  > 
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     6
  > [alias]
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     7
  > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     8
  > EOF
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     9
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    10
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    11
  $ hg init a
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    12
  $ cd a
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    13
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    14
  $ echo A > A
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    15
  $ hg ci -Am A
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    16
  adding A
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    17
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    18
  $ echo B > B
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    19
  $ hg ci -Am B
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    20
  adding B
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    21
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    22
  $ hg up -q -C 0
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    23
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    24
  $ echo C > C
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    25
  $ hg ci -Am C
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    26
  adding C
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    27
  created new head
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    28
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    29
  $ hg up -q -C 0
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    30
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    31
  $ echo D > D
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    32
  $ hg ci -Am D
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    33
  adding D
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    34
  created new head
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    35
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    36
  $ hg merge -r 2
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    37
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    38
  (branch merge, don't forget to commit)
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    39
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    40
  $ hg ci -m E
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    41
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    42
  $ hg up -q -C 3
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    43
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    44
  $ echo F > F
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    45
  $ hg ci -Am F
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    46
  adding F
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    47
  created new head
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    48
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    49
  $ cd ..
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    50
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    51
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    52
Rebasing descendant onto ancestor across different named branches
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    53
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    54
  $ hg clone -q -u . a a1
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    55
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    56
  $ cd a1
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    57
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    58
  $ hg branch dev
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    59
  marked working directory as branch dev
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    60
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    61
  $ echo x > x
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    62
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    63
  $ hg add x
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    64
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    65
  $ hg ci -m 'extra named branch'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    66
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    67
  $ hg tglog
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    68
  @  6: 'extra named branch' dev
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    69
  |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    70
  o  5: 'F'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    71
  |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    72
  | o  4: 'E'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    73
  |/|
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    74
  o |  3: 'D'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    75
  | |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    76
  | o  2: 'C'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    77
  |/
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    78
  | o  1: 'B'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    79
  |/
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    80
  o  0: 'A'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    81
  
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    82
  $ hg rebase -s 6 -d 5
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    83
  saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob)
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    84
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    85
  $ hg tglog
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    86
  @  6: 'extra named branch'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    87
  |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    88
  o  5: 'F'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    89
  |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    90
  | o  4: 'E'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    91
  |/|
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    92
  o |  3: 'D'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    93
  | |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    94
  | o  2: 'C'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    95
  |/
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    96
  | o  1: 'B'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    97
  |/
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    98
  o  0: 'A'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    99
  
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   100
  $ cd ..
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   101
 
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   102
Rebasing descendant onto ancestor across the same named branches
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   103
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   104
  $ hg clone -q -u . a a2
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   105
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   106
  $ cd a2
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   107
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   108
  $ echo x > x
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   109
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   110
  $ hg add x
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   111
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   112
  $ hg ci -m 'G'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   113
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   114
  $ hg tglog
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   115
  @  6: 'G'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   116
  |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   117
  o  5: 'F'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   118
  |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   119
  | o  4: 'E'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   120
  |/|
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   121
  o |  3: 'D'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   122
  | |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   123
  | o  2: 'C'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   124
  |/
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   125
  | o  1: 'B'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   126
  |/
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   127
  o  0: 'A'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   128
  
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   129
  $ hg rebase -s 6 -d 5
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   130
  abort: source is descendant of destination
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   131
  [255]
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   132
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   133
  $ cd ..
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   134
 
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   135
Rebasing ancestor onto descendant across different named branches
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   136
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   137
  $ hg clone -q -u . a a3
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   138
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   139
  $ cd a3
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   140
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   141
  $ hg branch dev
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   142
  marked working directory as branch dev
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   143
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   144
  $ echo x > x
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   145
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   146
  $ hg add x
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   147
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   148
  $ hg ci -m 'extra named branch'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   149
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   150
  $ hg tglog
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   151
  @  6: 'extra named branch' dev
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   152
  |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   153
  o  5: 'F'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   154
  |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   155
  | o  4: 'E'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   156
  |/|
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   157
  o |  3: 'D'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   158
  | |
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   159
  | o  2: 'C'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   160
  |/
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   161
  | o  1: 'B'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   162
  |/
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   163
  o  0: 'A'
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   164
  
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   165
  $ hg rebase -s 5 -d 6
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   166
  abort: source is ancestor of destination
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   167
  [255]
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   168
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   169
  $ cd ..
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   170
 
4e2690a764c1 rebase: allow for rebasing descendants onto ancestors on different named branches
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   171