mirror of
https://github.com/Microsoft/vscode
synced 2024-10-04 02:14:06 +00:00
SCM - improve merge-base detection (#216823)
This commit is contained in:
parent
f4f94df15e
commit
68ca9a7f4c
|
@ -1502,9 +1502,16 @@ export class Repository {
|
||||||
return parseGitChanges(this.repositoryRoot, gitResult.stdout);
|
return parseGitChanges(this.repositoryRoot, gitResult.stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getMergeBase(ref1: string, ref2: string): Promise<string | undefined> {
|
async getMergeBase(ref1: string, ref2: string, ...refs: string[]): Promise<string | undefined> {
|
||||||
try {
|
try {
|
||||||
const args = ['merge-base', ref1, ref2];
|
const args = ['merge-base'];
|
||||||
|
if (refs.length !== 0) {
|
||||||
|
args.push('--octopus');
|
||||||
|
args.push(...refs);
|
||||||
|
}
|
||||||
|
|
||||||
|
args.push(ref1, ref2);
|
||||||
|
|
||||||
const result = await this.exec(args);
|
const result = await this.exec(args);
|
||||||
|
|
||||||
return result.stdout.trim();
|
return result.stdout.trim();
|
||||||
|
|
|
@ -256,11 +256,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
let refsMergeBase = refNames[0];
|
const refsMergeBase = await this.repository.getMergeBase(refNames[0], refNames[1], ...refNames.slice(2));
|
||||||
for (let index = 1; index < refNames.length; index++) {
|
|
||||||
refsMergeBase = await this.repository.getMergeBase(refsMergeBase, refNames[index]) ?? refsMergeBase;
|
|
||||||
}
|
|
||||||
|
|
||||||
return refsMergeBase;
|
return refsMergeBase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1112,8 +1112,8 @@ export class Repository implements Disposable {
|
||||||
return this.run(Operation.Diff, () => this.repository.diffBetweenShortStat(ref1, ref2));
|
return this.run(Operation.Diff, () => this.repository.diffBetweenShortStat(ref1, ref2));
|
||||||
}
|
}
|
||||||
|
|
||||||
getMergeBase(ref1: string, ref2: string): Promise<string | undefined> {
|
getMergeBase(ref1: string, ref2: string, ...refs: string[]): Promise<string | undefined> {
|
||||||
return this.run(Operation.MergeBase, () => this.repository.getMergeBase(ref1, ref2));
|
return this.run(Operation.MergeBase, () => this.repository.getMergeBase(ref1, ref2, ...refs));
|
||||||
}
|
}
|
||||||
|
|
||||||
async hashObject(data: string): Promise<string> {
|
async hashObject(data: string): Promise<string> {
|
||||||
|
|
Loading…
Reference in a new issue