Skip to content

Commit 9212e3f

Browse files
committed
feat: empty commits
1 parent 49f3aaf commit 9212e3f

File tree

4 files changed

+74
-15
lines changed

4 files changed

+74
-15
lines changed

src/git/GitChangeMonitor.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ export const useGitChangeMonitor = createSingletonComposable(() => {
1616

1717
fsWatcher.onDidChange(onGitChange)
1818
fsWatcher.onDidCreate(onGitChange)
19-
fsWatcher.onDidDelete(onGitChange)
2019

2120
async function getGetInstance() {
2221
try {

src/git/index.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,28 @@ export const useGitService = createSingletonComposable(() => {
7272
logArgs.push(`--max-count=${pageSize}`)
7373
}
7474

75-
const logResult = await git.log(logArgs) as ExtendedLogResult
75+
let logResult: ExtendedLogResult
76+
try {
77+
logResult = await git.log(logArgs) as ExtendedLogResult
78+
}
79+
catch (error: any) {
80+
// 检查是否为 sha 不存在的错误
81+
const msg = String(error?.message || error)
82+
if (msg.includes('bad revision') || msg.includes('unknown revision') || msg.includes('fatal:')) {
83+
// 返回空结果,避免 loading 卡死
84+
return {
85+
operations: [],
86+
branches: [],
87+
logResult: {
88+
all: [],
89+
total: 0,
90+
latest: null,
91+
} as ExtendedLogResult,
92+
}
93+
}
94+
logger.error('Error getting git history:', error)
95+
throw error
96+
}
7697

7798
// 简化的提交处理
7899
const branchSet = new Set<string>()

src/views/history/App.vue

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { computed, onMounted, ref, watch } from 'vue'
33
44
import CommitTable from './components/CommitTable/index.vue'
5+
import Empty from './components/Empty.vue'
56
67
import { CHANNEL, WEBVIEW_CHANNEL } from '@/constant'
78
@@ -89,18 +90,16 @@ function clearFilter() {
8990
applyFilter(true)
9091
}
9192
92-
// 加载更多数据(无限滚动)
9393
function loadMoreData() {
9494
if (isLoading.value || !hasMoreData.value)
9595
return
9696
9797
currentPage.value++
98-
applyFilter(false) // 不重置页面,加载下一页
98+
applyFilter(false)
9999
}
100100
101-
// 监听分支选择变化(保留分支选择的实时更新)
102-
watch(selectedBranch, () => {
103-
applyFilter(true) // 分支变化时重置页面
101+
watch(() => selectedBranch.value, () => {
102+
applyFilter(true)
104103
})
105104
106105
// Handle messages from extension
@@ -213,14 +212,19 @@ const hasActiveFilter = computed(() => {
213212
</div>
214213
</div>
215214

216-
<CommitTable
217-
v-model="selectedCommitHashes"
218-
:commits="transformedCommits"
219-
:graph-data="commits?.operations || []"
220-
:has-more-data="hasMoreData"
221-
:on-load-more="loadMoreData"
222-
class="git-graph-container"
223-
/>
215+
<template v-if="!isLoading && transformedCommits.length === 0">
216+
<Empty class="git-graph-container" />
217+
</template>
218+
<template v-else>
219+
<CommitTable
220+
v-model="selectedCommitHashes"
221+
:commits="transformedCommits"
222+
:graph-data="commits?.operations || []"
223+
:has-more-data="hasMoreData"
224+
:on-load-more="loadMoreData"
225+
class="git-graph-container"
226+
/>
227+
</template>
224228

225229
<div v-if="error" class="error">
226230
{{ error }}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<script setup lang="ts">
2+
// 无需逻辑
3+
</script>
4+
5+
<template>
6+
<div class="empty-container">
7+
<div class="empty-text">
8+
Not Found
9+
</div>
10+
</div>
11+
</template>
12+
13+
<style scoped>
14+
.empty-container {
15+
display: flex;
16+
flex-direction: column;
17+
align-items: center;
18+
justify-content: center;
19+
height: 100%;
20+
color: var(--vscode-descriptionForeground, #888);
21+
padding: 32px 0;
22+
}
23+
.empty-illustration {
24+
margin-bottom: 16px;
25+
}
26+
.empty-text {
27+
font-size: 16px;
28+
font-weight: 500;
29+
margin-bottom: 4px;
30+
}
31+
.empty-sub {
32+
font-size: 13px;
33+
color: var(--vscode-descriptionForeground, #aaa);
34+
}
35+
</style>

0 commit comments

Comments
 (0)