Skip to content

Commit a456781

Browse files
committed
Much better perf for large commits.
1 parent 8a64dda commit a456781

7 files changed

Lines changed: 658 additions & 48 deletions

File tree

electron/git-state.cjs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
// @ts-check
22

33
const { parseStatus, validateRepositoryPath } = require('./git-state/common.cjs');
4-
const { listRepositoryHistory, readCommitState } = require('./git-state/commit.cjs');
4+
const {
5+
listRepositoryHistory,
6+
readCommitSectionContent,
7+
readCommitState,
8+
} = require('./git-state/commit.cjs');
59
const {
610
normalizeGitHubReviewComment,
711
normalizePullRequestComment,
@@ -11,13 +15,14 @@ const {
1115
submitPullRequestReview,
1216
} = require('./git-state/pull-request.cjs');
1317
const {
14-
readDiffSectionContent,
18+
readDiffSectionContent: readWorkingTreeDiffSectionContent,
1519
readGitIdentity,
1620
readRepositoryChangeSignature,
1721
readWorkingTreeState,
1822
} = require('./git-state/working-tree.cjs');
1923

2024
/**
25+
* @typedef {import('../src/types.ts').DiffSectionContentRequest} DiffSectionContentRequest
2126
* @typedef {import('../src/types.ts').RepositoryState} RepositoryState
2227
* @typedef {import('../src/types.ts').ReviewSource} ReviewSource
2328
*/
@@ -30,6 +35,14 @@ const readRepositoryState = async (launchPath, source = { type: 'working-tree' }
3035
? readCommitState(launchPath, source.ref)
3136
: readWorkingTreeState(launchPath);
3237

38+
/** @param {string} launchPath @param {DiffSectionContentRequest} request */
39+
const readDiffSectionContent = async (launchPath, request) =>
40+
request.kind === 'commit' || request.source?.type === 'commit'
41+
? readCommitSectionContent(launchPath, request.source?.ref || 'HEAD', request.path, {
42+
force: request.force,
43+
})
44+
: readWorkingTreeDiffSectionContent(launchPath, request);
45+
3346
module.exports = {
3447
listRepositoryHistory,
3548
normalizeGitHubReviewComment,

0 commit comments

Comments
 (0)