Skip to content
Snippets Groups Projects
Unverified Commit 1bacabcb authored by Sergei Zharinov's avatar Sergei Zharinov Committed by GitHub
Browse files

fix(git): Ensure `baseBranch` is checked out before git-based merge (#18687)

parent b7317a23
No related branches found
No related tags found
No related merge requests found
...@@ -66,18 +66,28 @@ describe('workers/repository/update/branch/automerge', () => { ...@@ -66,18 +66,28 @@ describe('workers/repository/update/branch/automerge', () => {
it('returns false if automerge fails', async () => { it('returns false if automerge fails', async () => {
config.automerge = true; config.automerge = true;
config.automergeType = 'branch'; config.automergeType = 'branch';
config.baseBranch = 'test-branch';
platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green); platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
git.mergeBranch.mockImplementationOnce(() => { git.mergeBranch.mockImplementationOnce(() => {
throw new Error('merge error'); throw new Error('merge error');
}); });
expect(await tryBranchAutomerge(config)).toBe('failed');
const res = await tryBranchAutomerge(config);
expect(res).toBe('failed');
expect(git.checkoutBranch).toHaveBeenCalled();
}); });
it('returns true if automerge succeeds', async () => { it('returns true if automerge succeeds', async () => {
config.automerge = true; config.automerge = true;
config.automergeType = 'branch'; config.automergeType = 'branch';
config.baseBranch = 'test-branch';
platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green); platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
expect(await tryBranchAutomerge(config)).toBe('automerged');
const res = await tryBranchAutomerge(config);
expect(res).toBe('automerged');
expect(git.checkoutBranch).toHaveBeenCalledWith('test-branch');
}); });
it('returns true if automerge succeeds (dry-run)', async () => { it('returns true if automerge succeeds (dry-run)', async () => {
......
...@@ -4,7 +4,7 @@ import type { RenovateConfig } from '../../../../config/types'; ...@@ -4,7 +4,7 @@ import type { RenovateConfig } from '../../../../config/types';
import { logger } from '../../../../logger'; import { logger } from '../../../../logger';
import { platform } from '../../../../modules/platform'; import { platform } from '../../../../modules/platform';
import { BranchStatus } from '../../../../types'; import { BranchStatus } from '../../../../types';
import { mergeBranch } from '../../../../util/git'; import { checkoutBranch, mergeBranch } from '../../../../util/git';
import { isScheduledNow } from './schedule'; import { isScheduledNow } from './schedule';
import { resolveBranchStatus } from './status-checks'; import { resolveBranchStatus } from './status-checks';
...@@ -43,6 +43,7 @@ export async function tryBranchAutomerge( ...@@ -43,6 +43,7 @@ export async function tryBranchAutomerge(
// TODO: types (#7154) // TODO: types (#7154)
logger.info(`DRY-RUN: Would automerge branch ${config.branchName!}`); logger.info(`DRY-RUN: Would automerge branch ${config.branchName!}`);
} else { } else {
await checkoutBranch(config.baseBranch!);
await mergeBranch(config.branchName!); await mergeBranch(config.branchName!);
} }
logger.info({ branch: config.branchName }, 'Branch automerged'); logger.info({ branch: config.branchName }, 'Branch automerged');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment