in src/view/treeNodes/pullRequestNode.ts [158:241]
private async resolveFileChanges(): Promise<(RemoteFileChangeNode | InMemFileChangeNode)[]> {
if (!this.pullRequestModel.isResolved()) {
return [];
}
const data = await this.pullRequestModel.getFileChangesInfo();
// Merge base is set as part of getPullRequestFileChangesInfo
const mergeBase = this.pullRequestModel.mergeBase;
if (!mergeBase) {
return [];
}
const rawChanges = await parseDiff(data, this._folderReposManager.repository, mergeBase);
return rawChanges.map(change => {
const headCommit = this.pullRequestModel.head!.sha;
const parentFileName = change.status === GitChangeType.RENAME ? change.previousFileName! : change.fileName;
if (change instanceof SlimFileChange) {
return new RemoteFileChangeNode(
this,
this.pullRequestModel,
change.status,
change.fileName,
change.previousFileName,
change.blobUrl,
toPRUri(
vscode.Uri.file(
resolvePath(this._folderReposManager.repository.rootUri, change.fileName),
),
this.pullRequestModel,
change.baseCommit,
headCommit,
change.fileName,
false,
change.status,
),
toPRUri(
vscode.Uri.file(
resolvePath(this._folderReposManager.repository.rootUri, parentFileName),
),
this.pullRequestModel,
change.baseCommit,
headCommit,
change.fileName,
true,
change.status,
),
);
}
console.log(vscode.Uri.file(resolvePath(this._folderReposManager.repository.rootUri, change.fileName)));
const changedItem = new InMemFileChangeNode(
this._folderReposManager,
this,
this.pullRequestModel as (PullRequestModel & IResolvedPullRequestModel),
change,
change.previousFileName,
toPRUri(
vscode.Uri.file(resolvePath(this._folderReposManager.repository.rootUri, change.fileName)),
this.pullRequestModel,
change.baseCommit,
headCommit,
change.fileName,
false,
change.status,
),
toPRUri(
vscode.Uri.file(resolvePath(this._folderReposManager.repository.rootUri, parentFileName)),
this.pullRequestModel,
change.baseCommit,
headCommit,
change.fileName,
true,
change.status,
),
change.isPartial,
change.patch
);
return changedItem;
});
}