diff --git a/hgext/rebase.py b/hgext/rebase.py index 60344b83e442659edf21a9ca07d422681ddd215b_aGdleHQvcmViYXNlLnB5..65df60a3f96b673a2fb658bb592c038aad45c104_aGdleHQvcmViYXNlLnB5 100644 --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -193,6 +193,11 @@ rebaseset = repo.revs('(children(ancestor(%r, %d)) & ::%r)::', base, dest, base) + if rebaseset: + root = min(rebaseset) + else: + root = None + if not rebaseset: repo.ui.debug('base is ancestor of destination') result = None @@ -202,6 +207,10 @@ _("can't remove original changesets with" " unrebased descendants"), hint=_('use --keep to keep original changesets')) + elif not keepf and not repo[root].mutable(): + raise util.Abort(_("Can't rebase immutable changeset %s") + % repo[root], + hint=_('see hg help phases for details')) else: result = buildstate(repo, dest, rebaseset, detachf) diff --git a/mercurial/store.py b/mercurial/store.py index 60344b83e442659edf21a9ca07d422681ddd215b_bWVyY3VyaWFsL3N0b3JlLnB5..65df60a3f96b673a2fb658bb592c038aad45c104_bWVyY3VyaWFsL3N0b3JlLnB5 100644 --- a/mercurial/store.py +++ b/mercurial/store.py @@ -409,8 +409,8 @@ self.fncache.rewrite(existing) def copylist(self): - d = ('data dh fncache' - ' 00manifest.d 00manifest.i 00changelog.d 00changelog.i phaseroots') + d = ('data dh fncache phaseroots' + ' 00manifest.d 00manifest.i 00changelog.d 00changelog.i') return (['requires', '00changelog.i'] + ['store/' + f for f in d.split()]) diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1sYXJnZWZpbGVzLnQ=..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1sYXJnZWZpbGVzLnQ= 100644 --- a/tests/test-largefiles.t +++ b/tests/test-largefiles.t @@ -6,6 +6,8 @@ > purge= > rebase= > transplant= + > [phases] + > publish=False > [largefiles] > minsize=2 > patterns=glob:**.dat diff --git a/tests/test-rebase-abort.t b/tests/test-rebase-abort.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtYWJvcnQudA==..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtYWJvcnQudA== 100644 --- a/tests/test-rebase-abort.t +++ b/tests/test-rebase-abort.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-bookmarks.t b/tests/test-rebase-bookmarks.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtYm9va21hcmtzLnQ=..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtYm9va21hcmtzLnQ= 100644 --- a/tests/test-rebase-bookmarks.t +++ b/tests/test-rebase-bookmarks.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' bookmarks: {bookmarks}\n" > EOF diff --git a/tests/test-rebase-cache.t b/tests/test-rebase-cache.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtY2FjaGUudA==..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtY2FjaGUudA== 100644 --- a/tests/test-rebase-cache.t +++ b/tests/test-rebase-cache.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > theads = heads --template "{rev}: '{desc}' {branches}\n" diff --git a/tests/test-rebase-check-restore.t b/tests/test-rebase-check-restore.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtY2hlY2stcmVzdG9yZS50..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtY2hlY2stcmVzdG9yZS50 100644 --- a/tests/test-rebase-check-restore.t +++ b/tests/test-rebase-check-restore.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-collapse.t b/tests/test-rebase-collapse.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtY29sbGFwc2UudA==..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtY29sbGFwc2UudA== 100644 --- a/tests/test-rebase-collapse.t +++ b/tests/test-rebase-collapse.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-conflicts.t b/tests/test-rebase-conflicts.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtY29uZmxpY3RzLnQ=..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtY29uZmxpY3RzLnQ= 100644 --- a/tests/test-rebase-conflicts.t +++ b/tests/test-rebase-conflicts.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-detach.t b/tests/test-rebase-detach.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtZGV0YWNoLnQ=..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtZGV0YWNoLnQ= 100644 --- a/tests/test-rebase-detach.t +++ b/tests/test-rebase-detach.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-interruptions.t b/tests/test-rebase-interruptions.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtaW50ZXJydXB0aW9ucy50..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtaW50ZXJydXB0aW9ucy50 100644 --- a/tests/test-rebase-interruptions.t +++ b/tests/test-rebase-interruptions.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-issue-noparam-single-rev.t b/tests/test-rebase-issue-noparam-single-rev.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtaXNzdWUtbm9wYXJhbS1zaW5nbGUtcmV2LnQ=..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtaXNzdWUtbm9wYXJhbS1zaW5nbGUtcmV2LnQ= 100644 --- a/tests/test-rebase-issue-noparam-single-rev.t +++ b/tests/test-rebase-issue-noparam-single-rev.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-mq-skip.t b/tests/test-rebase-mq-skip.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtbXEtc2tpcC50..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtbXEtc2tpcC50 100644 --- a/tests/test-rebase-mq-skip.t +++ b/tests/test-rebase-mq-skip.t @@ -7,6 +7,9 @@ > rebase= > mq= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' tags: {tags}\n" > EOF diff --git a/tests/test-rebase-named-branches.t b/tests/test-rebase-named-branches.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtbmFtZWQtYnJhbmNoZXMudA==..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtbmFtZWQtYnJhbmNoZXMudA== 100644 --- a/tests/test-rebase-named-branches.t +++ b/tests/test-rebase-named-branches.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-parameters.t b/tests/test-rebase-parameters.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2UtcGFyYW1ldGVycy50..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2UtcGFyYW1ldGVycy50 100644 --- a/tests/test-rebase-parameters.t +++ b/tests/test-rebase-parameters.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF diff --git a/tests/test-rebase-scenario-global.t b/tests/test-rebase-scenario-global.t index 60344b83e442659edf21a9ca07d422681ddd215b_dGVzdHMvdGVzdC1yZWJhc2Utc2NlbmFyaW8tZ2xvYmFsLnQ=..65df60a3f96b673a2fb658bb592c038aad45c104_dGVzdHMvdGVzdC1yZWJhc2Utc2NlbmFyaW8tZ2xvYmFsLnQ= 100644 --- a/tests/test-rebase-scenario-global.t +++ b/tests/test-rebase-scenario-global.t @@ -3,6 +3,9 @@ > graphlog= > rebase= > + > [phases] + > publish=False + > > [alias] > tglog = log -G --template "{rev}: '{desc}' {branches}\n" > EOF @@ -269,6 +272,16 @@ |/ o 0: 'A' + +Check rebasing public changeset + + $ hg pull --config phases.publish=True -q -r 6 . # update phase of 6 + $ hg rebase -d 5 -b 6 + abort: Can't rebase immutable changeset e1c4361dd923 + (see hg help phases for details) + [255] + + $ hg rebase -d 5 -b 6 --keep $ cd .. Test for revset