Git - improve handling of first commit (#224165)

This commit is contained in:
Ladislau Szomoru
2024-07-29 11:01:34 +02:00
committed by GitHub
parent 819eba7049
commit 9c9ef6614b
4 changed files with 42 additions and 24 deletions

View File

@@ -146,13 +146,9 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
try {
// Get the common ancestor commit, and commits
const [mergeBaseCommit, commits] = await Promise.all([
this.repository.getCommit(options.limit.id),
this.repository.log({ range: `${options.limit.id}..`, refNames, shortStats: true })
]);
// Add common ancestor commit
commits.push(mergeBaseCommit);
const commit = await this.repository.getCommit(options.limit.id);
const commitParentId = commit.parents.length > 0 ? commit.parents[0] : await this.repository.getEmptyTree();
const commits = await this.repository.log({ range: `${commitParentId}..`, refNames, shortStats: true });
await ensureEmojis();
@@ -180,24 +176,18 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
}
async provideHistoryItemSummary(historyItemId: string, historyItemParentId: string | undefined): Promise<SourceControlHistoryItem> {
if (!historyItemParentId) {
const commit = await this.repository.getCommit(historyItemId);
historyItemParentId = commit.parents.length > 0 ? commit.parents[0] : `${historyItemId}^`;
}
historyItemParentId = historyItemParentId ?? await this.repository.getEmptyTree();
const allChanges = await this.repository.diffBetweenShortStat(historyItemParentId, historyItemId);
return { id: historyItemId, parentIds: [historyItemParentId], message: '', statistics: allChanges };
}
async provideHistoryItemChanges(historyItemId: string, historyItemParentId: string | undefined): Promise<SourceControlHistoryItemChange[]> {
if (!historyItemParentId) {
const commit = await this.repository.getCommit(historyItemId);
historyItemParentId = commit.parents.length > 0 ? commit.parents[0] : `${historyItemId}^`;
}
historyItemParentId = historyItemParentId ?? await this.repository.getEmptyTree();
const historyItemChangesUri: Uri[] = [];
const historyItemChanges: SourceControlHistoryItemChange[] = [];
const changes = await this.repository.diffBetween(historyItemParentId, historyItemId);
const changes = await this.repository.diffTrees(historyItemParentId, historyItemId);
for (const change of changes) {
const historyItemUri = change.uri.with({