Skip to content

Commit

Permalink
Refactor getChangesSinceMergeBase() code
Browse files Browse the repository at this point in the history
  • Loading branch information
dorny committed Mar 9, 2021
1 parent 0c0d1a8 commit a301a0a
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 39 deletions.
36 changes: 16 additions & 20 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3873,29 +3873,25 @@ async function getChangesSinceMergeBase(base, initialFetchDepth) {
let noMergeBase = false;
core.startGroup(`Searching for merge-base ${baseRef}...${exports.HEAD}`);
try {
let init = true;
let lastCommitCount = await getCommitCount();
let depth = Math.max(lastCommitCount * 2, initialFetchDepth);
while (!(await hasMergeBase())) {
if (init) {
await exec_1.default('git', ['fetch', `--depth=${depth}`, 'origin', base, exports.HEAD]);
init = false;
}
else {
if (!(await hasMergeBase())) {
await exec_1.default('git', ['fetch', `--depth=${initialFetchDepth}`, 'origin', base, exports.HEAD]);
let depth = initialFetchDepth;
let lastCommitCount = await getCommitCount();
while (!(await hasMergeBase())) {
depth = Math.min(depth * 2, Number.MAX_SAFE_INTEGER);
await exec_1.default('git', ['fetch', `--deepen=${depth}`, 'origin', base, exports.HEAD]);
}
const commitCount = await getCommitCount();
if (commitCount === lastCommitCount) {
core.info('No more commits were fetched');
core.info('Last attempt will be to fetch full history');
await exec_1.default('git', ['fetch']);
if (!(await hasMergeBase())) {
noMergeBase = true;
const commitCount = await getCommitCount();
if (commitCount === lastCommitCount) {
core.info('No more commits were fetched');
core.info('Last attempt will be to fetch full history');
await exec_1.default('git', ['fetch']);
if (!(await hasMergeBase())) {
noMergeBase = true;
}
break;
}
break;
lastCommitCount = commitCount;
}
depth = Math.min(depth * 2, Number.MAX_SAFE_INTEGER);
lastCommitCount = commitCount;
}
}
finally {
Expand Down
35 changes: 16 additions & 19 deletions src/git.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,28 +64,25 @@ export async function getChangesSinceMergeBase(base: string, initialFetchDepth:
let noMergeBase = false
core.startGroup(`Searching for merge-base ${baseRef}...${HEAD}`)
try {
let init = true
let lastCommitCount = await getCommitCount()
let depth = Math.max(lastCommitCount * 2, initialFetchDepth)
while (!(await hasMergeBase())) {
if (init) {
await exec('git', ['fetch', `--depth=${depth}`, 'origin', base, HEAD])
init = false
} else {
if (!(await hasMergeBase())) {
await exec('git', ['fetch', `--depth=${initialFetchDepth}`, 'origin', base, HEAD])
let depth = initialFetchDepth
let lastCommitCount = await getCommitCount()
while (!(await hasMergeBase())) {
depth = Math.min(depth * 2, Number.MAX_SAFE_INTEGER)
await exec('git', ['fetch', `--deepen=${depth}`, 'origin', base, HEAD])
}
const commitCount = await getCommitCount()
if (commitCount === lastCommitCount) {
core.info('No more commits were fetched')
core.info('Last attempt will be to fetch full history')
await exec('git', ['fetch'])
if (!(await hasMergeBase())) {
noMergeBase = true
const commitCount = await getCommitCount()
if (commitCount === lastCommitCount) {
core.info('No more commits were fetched')
core.info('Last attempt will be to fetch full history')
await exec('git', ['fetch'])
if (!(await hasMergeBase())) {
noMergeBase = true
}
break
}
break
lastCommitCount = commitCount
}
depth = Math.min(depth * 2, Number.MAX_SAFE_INTEGER)
lastCommitCount = commitCount
}
} finally {
core.endGroup()
Expand Down

0 comments on commit a301a0a

Please sign in to comment.