|
8 | 8 |
|
9 | 9 | import {GithubConfig} from '../../utils/config.js'; |
10 | 10 | import {AuthenticatedGitClient} from '../../utils/git/authenticated-git-client.js'; |
| 11 | +import {getCurrentMergeMode} from '../../utils/git/repository-merge-mode.js'; |
11 | 12 | import {ReleaseConfig} from '../config/index.js'; |
12 | 13 | import {ActiveReleaseTrains} from '../versioning/active-release-trains.js'; |
13 | 14 | import {NpmCommand} from '../versioning/npm-command.js'; |
@@ -50,6 +51,7 @@ export class ReleaseTool { |
50 | 51 | const nextBranchName = getNextBranchName(this._github); |
51 | 52 |
|
52 | 53 | if ( |
| 54 | + !(await this._verifyInReleaseMergeMode()) || |
53 | 55 | !(await this._verifyNoUncommittedChanges()) || |
54 | 56 | !(await this._verifyRunningFromNextBranch(nextBranchName)) || |
55 | 57 | !(await this._verifyNoShallowRepository()) || |
@@ -144,6 +146,21 @@ export class ReleaseTool { |
144 | 146 | return true; |
145 | 147 | } |
146 | 148 |
|
| 149 | + /** |
| 150 | + * Verifies that there are no uncommitted changes in the project. |
| 151 | + * @returns a boolean indicating success or failure. |
| 152 | + */ |
| 153 | + private async _verifyInReleaseMergeMode(): Promise<boolean> { |
| 154 | + const mode = await getCurrentMergeMode(); |
| 155 | + if (mode !== 'release') { |
| 156 | + Log.error(` ✘ The repository merge-mode is set to ${mode} but must be set to release`); |
| 157 | + Log.error(' prior to publishing releases. You can set merge-mode for release using:'); |
| 158 | + Log.error(' ng-dev caretaker merge-mode release'); |
| 159 | + return false; |
| 160 | + } |
| 161 | + return true; |
| 162 | + } |
| 163 | + |
147 | 164 | /** |
148 | 165 | * Verifies that the local repository is not configured as shallow. |
149 | 166 | * @returns a boolean indicating success or failure. |
|
0 commit comments