diff --git a/hgext/rebase.py b/hgext/rebase.py index c96148346af824cc4b17b6e875e481d6a7638b3b_aGdleHQvcmViYXNlLnB5..e66084ef84497a3fa70507f2b2839a74250f7a38_aGdleHQvcmViYXNlLnB5 100644 --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -15,7 +15,7 @@ ''' from mercurial import hg, util, repair, merge, cmdutil, commands, bookmarks -from mercurial import extensions, patch, scmutil +from mercurial import extensions, patch, scmutil, phases from mercurial.commands import templateopts from mercurial.node import nullrev from mercurial.lock import release @@ -372,6 +372,10 @@ newrev = repo.commit(text=commitmsg, user=ctx.user(), date=ctx.date(), extra=extra, editor=editor) repo.dirstate.setbranch(repo[newrev].branch()) + targetphase = max(ctx.phase(), phases.draft) + # retractboundary doesn't overwrite upper phase inherited from parent + newnode = repo[newrev].node() + phases.retractboundary(repo, targetphase, [newnode]) return newrev except util.Abort: # Invalidate the previous setparents @@ -552,7 +556,13 @@ def abort(repo, originalwd, target, state): 'Restore the repository to its original state' - if set(repo.changelog.descendants(target)) - set(state.values()): + descendants = repo.changelog.descendants + ispublic = lambda r: repo._phaserev[r] == phases.public + if filter(ispublic, descendants(target)): + repo.ui.warn(_("warning: immutable rebased changeset detected, " + "can't abort\n")) + return -1 + elif set(descendants(target)) - set(state.values()): repo.ui.warn(_("warning: new changesets detected on target branch, " "can't abort\n")) return -1 diff --git a/tests/test-rebase-abort.t b/tests/test-rebase-abort.t index c96148346af824cc4b17b6e875e481d6a7638b3b_dGVzdHMvdGVzdC1yZWJhc2UtYWJvcnQudA==..e66084ef84497a3fa70507f2b2839a74250f7a38_dGVzdHMvdGVzdC1yZWJhc2UtYWJvcnQudA== 100644 --- a/tests/test-rebase-abort.t +++ b/tests/test-rebase-abort.t @@ -7,7 +7,7 @@ > publish=False > > [alias] - > tglog = log -G --template "{rev}: '{desc}' {branches}\n" + > tglog = log -G --template "{rev}:{phase} '{desc}' {branches}\n" > EOF @@ -35,4 +35,6 @@ $ mv common.new common $ hg ci -m L2 + $ hg phase --force --secret 2 + $ hg tglog @@ -38,5 +40,3 @@ $ hg tglog - @ 4: 'L2' - | - o 3: 'L1' + @ 4:draft 'L2' | @@ -42,3 +42,5 @@ | - | o 2: 'C3' + o 3:draft 'L1' + | + | o 2:secret 'C3' |/ @@ -44,3 +46,3 @@ |/ - o 1: 'C2' + o 1:draft 'C2' | @@ -46,5 +48,5 @@ | - o 0: 'C1' + o 0:draft 'C1' Conflicting rebase: @@ -63,5 +65,5 @@ rebase aborted $ hg tglog - @ 4: 'L2' + @ 4:draft 'L2' | @@ -67,3 +69,3 @@ | - o 3: 'L1' + o 3:draft 'L1' | @@ -69,3 +71,3 @@ | - | o 2: 'C3' + | o 2:secret 'C3' |/ @@ -71,3 +73,3 @@ |/ - o 1: 'C2' + o 1:draft 'C2' | @@ -73,5 +75,5 @@ | - o 0: 'C1' + o 0:draft 'C1' $ cd .. @@ -104,6 +106,9 @@ $ hg ci -Am C1 adding c + $ hg phase --force --secret 1 + $ hg phase --public 1 + Rebase and abort without generating new changesets: $ hg tglog @@ -107,5 +112,5 @@ Rebase and abort without generating new changesets: $ hg tglog - @ 4: 'C1' + @ 4:draft 'C1' | @@ -111,3 +116,3 @@ | - o 3: 'B bis' + o 3:draft 'B bis' | @@ -113,3 +118,3 @@ | - | o 2: 'C' + | o 2:secret 'C' | | @@ -115,3 +120,3 @@ | | - | o 1: 'B' + | o 1:public 'B' |/ @@ -117,5 +122,5 @@ |/ - o 0: 'A' + o 0:public 'A' $ hg rebase -b 4 -d 2 merging c @@ -125,5 +130,5 @@ [255] $ hg tglog - @ 4: 'C1' + @ 4:draft 'C1' | @@ -129,3 +134,3 @@ | - o 3: 'B bis' + o 3:draft 'B bis' | @@ -131,3 +136,3 @@ | - | @ 2: 'C' + | @ 2:secret 'C' | | @@ -133,3 +138,3 @@ | | - | o 1: 'B' + | o 1:public 'B' |/ @@ -135,7 +140,7 @@ |/ - o 0: 'A' + o 0:public 'A' $ hg rebase -a rebase aborted $ hg tglog @@ -137,7 +142,7 @@ $ hg rebase -a rebase aborted $ hg tglog - @ 4: 'C1' + @ 4:draft 'C1' | @@ -143,3 +148,3 @@ | - o 3: 'B bis' + o 3:draft 'B bis' | @@ -145,3 +150,3 @@ | - | o 2: 'C' + | o 2:secret 'C' | | @@ -147,3 +152,3 @@ | | - | o 1: 'B' + | o 1:public 'B' |/ @@ -149,3 +154,3 @@ |/ - o 0: 'A' + o 0:public 'A' diff --git a/tests/test-rebase-check-restore.t b/tests/test-rebase-check-restore.t index c96148346af824cc4b17b6e875e481d6a7638b3b_dGVzdHMvdGVzdC1yZWJhc2UtY2hlY2stcmVzdG9yZS50..e66084ef84497a3fa70507f2b2839a74250f7a38_dGVzdHMvdGVzdC1yZWJhc2UtY2hlY2stcmVzdG9yZS50 100644 --- a/tests/test-rebase-check-restore.t +++ b/tests/test-rebase-check-restore.t @@ -7,7 +7,7 @@ > publish=False > > [alias] - > tglog = log -G --template "{rev}: '{desc}' {branches}\n" + > tglog = log -G --template "{rev}:{phase} '{desc}' {branches}\n" > EOF @@ -46,7 +46,7 @@ $ cd .. -Rebasing B onto E - check keep: +Rebasing B onto E - check keep: and phases $ hg clone -q -u . a a1 $ cd a1 @@ -50,5 +50,6 @@ $ hg clone -q -u . a a1 $ cd a1 + $ hg phase --force --secret 2 $ hg tglog @@ -53,4 +54,4 @@ $ hg tglog - @ 5: 'F' notdefault + @ 5:draft 'F' notdefault | @@ -56,3 +57,3 @@ | - | o 4: 'E' + | o 4:draft 'E' | | @@ -58,3 +59,3 @@ | | - | o 3: 'D' + | o 3:draft 'D' |/ @@ -60,3 +61,3 @@ |/ - | o 2: 'C' + | o 2:secret 'C' | | @@ -62,3 +63,3 @@ | | - | o 1: 'B' + | o 1:draft 'B' |/ @@ -64,5 +65,5 @@ |/ - o 0: 'A' + o 0:draft 'A' $ hg rebase -s 1 -d 4 --keep merging A @@ -79,5 +80,5 @@ $ hg rebase --continue $ hg tglog - @ 7: 'C' + @ 7:secret 'C' | @@ -83,3 +84,3 @@ | - o 6: 'B' + o 6:draft 'B' | @@ -85,3 +86,3 @@ | - | o 5: 'F' notdefault + | o 5:draft 'F' notdefault | | @@ -87,3 +88,3 @@ | | - o | 4: 'E' + o | 4:draft 'E' | | @@ -89,3 +90,3 @@ | | - o | 3: 'D' + o | 3:draft 'D' |/ @@ -91,3 +92,3 @@ |/ - | o 2: 'C' + | o 2:secret 'C' | | @@ -93,3 +94,3 @@ | | - | o 1: 'B' + | o 1:draft 'B' |/ @@ -95,5 +96,5 @@ |/ - o 0: 'A' + o 0:draft 'A' $ cd .. @@ -102,5 +103,6 @@ $ hg clone -q -u . a a2 $ cd a2 + $ hg phase --force --secret 2 $ hg tglog @@ -105,4 +107,4 @@ $ hg tglog - @ 5: 'F' notdefault + @ 5:draft 'F' notdefault | @@ -108,3 +110,3 @@ | - | o 4: 'E' + | o 4:draft 'E' | | @@ -110,3 +112,3 @@ | | - | o 3: 'D' + | o 3:draft 'D' |/ @@ -112,3 +114,3 @@ |/ - | o 2: 'C' + | o 2:secret 'C' | | @@ -114,3 +116,3 @@ | | - | o 1: 'B' + | o 1:draft 'B' |/ @@ -116,5 +118,5 @@ |/ - o 0: 'A' + o 0:draft 'A' $ hg rebase -s 5 -d 4 --keepbranches merging A @@ -132,5 +134,5 @@ saved backup bundle to $TESTTMP/a2/.hg/strip-backup/*-backup.hg (glob) $ hg tglog - @ 5: 'F' notdefault + @ 5:draft 'F' notdefault | @@ -136,3 +138,3 @@ | - o 4: 'E' + o 4:draft 'E' | @@ -138,3 +140,3 @@ | - o 3: 'D' + o 3:draft 'D' | @@ -140,3 +142,3 @@ | - | o 2: 'C' + | o 2:secret 'C' | | @@ -142,3 +144,3 @@ | | - | o 1: 'B' + | o 1:draft 'B' |/ @@ -144,3 +146,3 @@ |/ - o 0: 'A' + o 0:draft 'A' diff --git a/tests/test-rebase-collapse.t b/tests/test-rebase-collapse.t index c96148346af824cc4b17b6e875e481d6a7638b3b_dGVzdHMvdGVzdC1yZWJhc2UtY29sbGFwc2UudA==..e66084ef84497a3fa70507f2b2839a74250f7a38_dGVzdHMvdGVzdC1yZWJhc2UtY29sbGFwc2UudA== 100644 --- a/tests/test-rebase-collapse.t +++ b/tests/test-rebase-collapse.t @@ -8,6 +8,7 @@ > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" + > tglogp = log -G --template "{rev}:{phase} '{desc}' {branches}\n" > EOF Create repo a: @@ -43,8 +44,9 @@ $ cd .. -Rebasing B onto H: +Rebasing B onto H and collapsing changesets with different phases: + $ hg clone -q -u 3 a a1 $ cd a1 @@ -47,7 +49,9 @@ $ hg clone -q -u 3 a a1 $ cd a1 + $ hg phase --force --secret 3 + $ hg rebase --collapse --keepbranches saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob) @@ -51,8 +55,8 @@ $ hg rebase --collapse --keepbranches saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob) - $ hg tglog - @ 5: 'Collapsed revision + $ hg tglogp + @ 5:secret 'Collapsed revision | * B | * C | * D' @@ -56,5 +60,5 @@ | * B | * C | * D' - o 4: 'H' + o 4:draft 'H' | @@ -60,3 +64,3 @@ | - | o 3: 'G' + | o 3:draft 'G' |/| @@ -62,3 +66,3 @@ |/| - o | 2: 'F' + o | 2:draft 'F' | | @@ -64,3 +68,3 @@ | | - | o 1: 'E' + | o 1:draft 'E' |/ @@ -66,5 +70,5 @@ |/ - o 0: 'A' + o 0:draft 'A' $ hg manifest A @@ -82,6 +86,7 @@ $ hg clone -q -u . a a2 $ cd a2 + $ hg phase --force --secret 6 $ hg rebase --source 4 --collapse saved backup bundle to $TESTTMP/a2/.hg/strip-backup/*-backup.hg (glob) diff --git a/tests/test-rebase-conflicts.t b/tests/test-rebase-conflicts.t index c96148346af824cc4b17b6e875e481d6a7638b3b_dGVzdHMvdGVzdC1yZWJhc2UtY29uZmxpY3RzLnQ=..e66084ef84497a3fa70507f2b2839a74250f7a38_dGVzdHMvdGVzdC1yZWJhc2UtY29uZmxpY3RzLnQ= 100644 --- a/tests/test-rebase-conflicts.t +++ b/tests/test-rebase-conflicts.t @@ -7,7 +7,7 @@ > publish=False > > [alias] - > tglog = log -G --template "{rev}: '{desc}' {branches}\n" + > tglog = log -G --template "{rev}:{phase} '{desc}' {branches}\n" > EOF $ hg init a @@ -37,4 +37,6 @@ $ hg add extra2 $ hg ci -m L3 + $ hg phase --force --secret 4 + $ hg tglog @@ -40,3 +42,3 @@ $ hg tglog - @ 5: 'L3' + @ 5:secret 'L3' | @@ -42,3 +44,3 @@ | - o 4: 'L2' + o 4:secret 'L2' | @@ -44,3 +46,3 @@ | - o 3: 'L1' + o 3:draft 'L1' | @@ -46,3 +48,3 @@ | - | o 2: 'C3' + | o 2:draft 'C3' |/ @@ -48,3 +50,3 @@ |/ - o 1: 'C2' + o 1:draft 'C2' | @@ -50,5 +52,5 @@ | - o 0: 'C1' + o 0:draft 'C1' Try to call --continue: @@ -79,5 +81,5 @@ saved backup bundle to $TESTTMP/a/.hg/strip-backup/*-backup.hg (glob) $ hg tglog - @ 5: 'L3' + @ 5:secret 'L3' | @@ -83,3 +85,3 @@ | - o 4: 'L2' + o 4:secret 'L2' | @@ -85,3 +87,3 @@ | - o 3: 'L1' + o 3:draft 'L1' | @@ -87,3 +89,3 @@ | - o 2: 'C3' + o 2:draft 'C3' | @@ -89,3 +91,3 @@ | - o 1: 'C2' + o 1:draft 'C2' | @@ -91,5 +93,5 @@ | - o 0: 'C1' + o 0:draft 'C1' Check correctness: diff --git a/tests/test-rebase-detach.t b/tests/test-rebase-detach.t index c96148346af824cc4b17b6e875e481d6a7638b3b_dGVzdHMvdGVzdC1yZWJhc2UtZGV0YWNoLnQ=..e66084ef84497a3fa70507f2b2839a74250f7a38_dGVzdHMvdGVzdC1yZWJhc2UtZGV0YWNoLnQ= 100644 --- a/tests/test-rebase-detach.t +++ b/tests/test-rebase-detach.t @@ -47,6 +47,7 @@ |/ o 0: 'A' + $ hg phase --force --secret 3 $ hg rebase --detach -s 3 -d 7 saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob) @@ -50,6 +51,6 @@ $ hg rebase --detach -s 3 -d 7 saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob) - $ hg tglog - @ 7: 'D' + $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" + @ 7:secret 'D' | @@ -55,3 +56,3 @@ | - o 6: 'H' + o 6:draft 'H' | @@ -57,3 +58,3 @@ | - | o 5: 'G' + | o 5:draft 'G' |/| @@ -59,3 +60,3 @@ |/| - o | 4: 'F' + o | 4:draft 'F' | | @@ -61,3 +62,3 @@ | | - | o 3: 'E' + | o 3:draft 'E' |/ @@ -63,3 +64,3 @@ |/ - | o 2: 'C' + | o 2:draft 'C' | | @@ -65,3 +66,3 @@ | | - | o 1: 'B' + | o 1:draft 'B' |/ @@ -67,5 +68,5 @@ |/ - o 0: 'A' + o 0:draft 'A' $ hg manifest A @@ -185,6 +186,7 @@ $ hg clone -q -u . a a4 $ cd a4 + $ hg phase --force --secret 3 $ hg tglog @ 7: 'H' @@ -206,7 +208,7 @@ $ hg rebase --detach --collapse -s 2 -d 7 saved backup bundle to $TESTTMP/a4/.hg/strip-backup/*-backup.hg (glob) - $ hg tglog - @ 6: 'Collapsed revision + $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" + @ 6:secret 'Collapsed revision | * C | * D' @@ -211,4 +213,4 @@ | * C | * D' - o 5: 'H' + o 5:draft 'H' | @@ -214,3 +216,3 @@ | - | o 4: 'G' + | o 4:draft 'G' |/| @@ -216,3 +218,3 @@ |/| - o | 3: 'F' + o | 3:draft 'F' | | @@ -218,3 +220,3 @@ | | - | o 2: 'E' + | o 2:draft 'E' |/ @@ -220,3 +222,3 @@ |/ - | o 1: 'B' + | o 1:draft 'B' |/ @@ -222,5 +224,5 @@ |/ - o 0: 'A' + o 0:draft 'A' $ hg manifest A @@ -360,10 +362,10 @@ $ cd .. -Ensure --continue restores a correct state (issue3046): +Ensure --continue restores a correct state (issue3046) and phase: $ hg clone -q a a7 $ cd a7 $ hg up -q 3 $ echo 'H2' > H $ hg ci -A -m 'H2' adding H @@ -364,9 +366,10 @@ $ hg clone -q a a7 $ cd a7 $ hg up -q 3 $ echo 'H2' > H $ hg ci -A -m 'H2' adding H + $ hg phase --force --secret 8 $ hg rebase -s 8 -d 7 --detach --config ui.merge=internal:fail merging H warning: conflicts during merge. @@ -376,6 +379,6 @@ $ hg resolve --all -t internal:local $ hg rebase -c saved backup bundle to $TESTTMP/a7/.hg/strip-backup/6215fafa5447-backup.hg (glob) - $ hg tglog - @ 8: 'H2' + $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" + @ 8:secret 'H2' | @@ -381,3 +384,3 @@ | - o 7: 'H' + o 7:draft 'H' | @@ -383,3 +386,3 @@ | - | o 6: 'G' + | o 6:draft 'G' |/| @@ -385,3 +388,3 @@ |/| - o | 5: 'F' + o | 5:draft 'F' | | @@ -387,3 +390,3 @@ | | - | o 4: 'E' + | o 4:draft 'E' |/ @@ -389,3 +392,3 @@ |/ - | o 3: 'D' + | o 3:draft 'D' | | @@ -391,3 +394,3 @@ | | - | o 2: 'C' + | o 2:draft 'C' | | @@ -393,3 +396,3 @@ | | - | o 1: 'B' + | o 1:draft 'B' |/ @@ -395,4 +398,4 @@ |/ - o 0: 'A' + o 0:draft 'A' diff --git a/tests/test-rebase-interruptions.t b/tests/test-rebase-interruptions.t index c96148346af824cc4b17b6e875e481d6a7638b3b_dGVzdHMvdGVzdC1yZWJhc2UtaW50ZXJydXB0aW9ucy50..e66084ef84497a3fa70507f2b2839a74250f7a38_dGVzdHMvdGVzdC1yZWJhc2UtaW50ZXJydXB0aW9ucy50 100644 --- a/tests/test-rebase-interruptions.t +++ b/tests/test-rebase-interruptions.t @@ -8,6 +8,7 @@ > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" + > tglogp = log -G --template "{rev}:{phase} '{desc}' {branches}\n" > EOF @@ -71,6 +72,10 @@ $ hg add Extra $ hg ci -m 'Extra' - $ hg tglog - @ 6: 'Extra' +Force this commit onto secret phase + + $ hg phase --force --secret 6 + + $ hg tglogp + @ 6:secret 'Extra' | @@ -76,5 +81,3 @@ | - | o 5: 'B' - | | - | o 4: 'E' + | o 5:draft 'B' | | @@ -80,3 +83,3 @@ | | - | o 3: 'D' + | o 4:draft 'E' | | @@ -82,3 +85,3 @@ | | - o | 2: 'C' + | o 3:draft 'D' | | @@ -84,3 +87,5 @@ | | - o | 1: 'B' + o | 2:draft 'C' + | | + o | 1:draft 'B' |/ @@ -86,5 +91,5 @@ |/ - o 0: 'A' + o 0:draft 'A' Resume the rebasing: @@ -104,6 +109,6 @@ $ hg rebase --continue warning: new changesets detected on source branch, not stripping - $ hg tglog - @ 7: 'C' + $ hg tglogp + @ 7:draft 'C' | @@ -109,3 +114,3 @@ | - | o 6: 'Extra' + | o 6:secret 'Extra' | | @@ -111,3 +116,3 @@ | | - o | 5: 'B' + o | 5:draft 'B' | | @@ -113,3 +118,3 @@ | | - o | 4: 'E' + o | 4:draft 'E' | | @@ -115,3 +120,3 @@ | | - o | 3: 'D' + o | 3:draft 'D' | | @@ -117,3 +122,3 @@ | | - | o 2: 'C' + | o 2:draft 'C' | | @@ -119,3 +124,3 @@ | | - | o 1: 'B' + | o 1:draft 'B' |/ @@ -121,5 +126,5 @@ |/ - o 0: 'A' + o 0:draft 'A' $ cd .. @@ -195,3 +200,68 @@ $ cd .. +Changes during an interruption - abort (again): + + $ hg clone -q -u . a a3 + $ cd a3 + + $ hg tglogp + @ 4:draft 'E' + | + o 3:draft 'D' + | + | o 2:draft 'C' + | | + | o 1:draft 'B' + |/ + o 0:draft 'A' + +Rebasing B onto E: + + $ hg rebase -s 1 -d 4 + merging A + warning: conflicts during merge. + merging A incomplete! (edit conflicts, then use 'hg resolve --mark') + abort: unresolved conflicts (see hg resolve, then hg rebase --continue) + [255] + +Change phase on B and B' + + $ hg up -q -C 5 + $ hg phase --public 1 + $ hg phase --public 5 + $ hg phase --secret -f 2 + + $ hg tglogp + @ 5:public 'B' + | + o 4:public 'E' + | + o 3:public 'D' + | + | o 2:secret 'C' + | | + | o 1:public 'B' + |/ + o 0:public 'A' + +Abort the rebasing: + + $ hg rebase --abort + warning: immutable rebased changeset detected, can't abort + [255] + + $ hg tglogp + @ 5:public 'B' + | + o 4:public 'E' + | + o 3:public 'D' + | + | o 2:secret 'C' + | | + | o 1:public 'B' + |/ + o 0:public 'A' + + $ cd .. diff --git a/tests/test-rebase-scenario-global.t b/tests/test-rebase-scenario-global.t index c96148346af824cc4b17b6e875e481d6a7638b3b_dGVzdHMvdGVzdC1yZWJhc2Utc2NlbmFyaW8tZ2xvYmFsLnQ=..e66084ef84497a3fa70507f2b2839a74250f7a38_dGVzdHMvdGVzdC1yZWJhc2Utc2NlbmFyaW8tZ2xvYmFsLnQ= 100644 --- a/tests/test-rebase-scenario-global.t +++ b/tests/test-rebase-scenario-global.t @@ -282,6 +282,32 @@ [255] $ hg rebase -d 5 -b 6 --keep + +Check rebasing mutable changeset +Source phase greater or equal to destination phase: new changeset get the phase of source: + $ hg rebase -s9 -d0 + saved backup bundle to $TESTTMP/a7/.hg/strip-backup/2b23e52411f4-backup.hg + $ hg log --template "{phase}\n" -r 9 + draft + $ hg rebase -s9 -d1 + saved backup bundle to $TESTTMP/a7/.hg/strip-backup/2cb10d0cfc6c-backup.hg + $ hg log --template "{phase}\n" -r 9 + draft + $ hg phase --force --secret 9 + $ hg rebase -s9 -d0 + saved backup bundle to $TESTTMP/a7/.hg/strip-backup/c5b12b67163a-backup.hg + $ hg log --template "{phase}\n" -r 9 + secret + $ hg rebase -s9 -d1 + saved backup bundle to $TESTTMP/a7/.hg/strip-backup/2a0524f868ac-backup.hg + $ hg log --template "{phase}\n" -r 9 + secret +Source phase lower than destination phase: new changeset get the phase of destination: + $ hg rebase -s7 -d9 + saved backup bundle to $TESTTMP/a7/.hg/strip-backup/c9659aac0000-backup.hg + $ hg log --template "{phase}\n" -r 9 + secret + $ cd .. Test for revset