zen-gitsync 2.15.28 → 2.15.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/ui/public/assets/{AppVersionBadge-CUO099sE.js → AppVersionBadge-MPPQqL7V.js} +2 -2
- package/src/ui/public/assets/{BranchSelector-DMxUc9HU.js → BranchSelector-Ctq99M1X.js} +1 -1
- package/src/ui/public/assets/{CommitForm-CKyV3ggx.js → CommitForm-yXk9nk_A.js} +1 -1
- package/src/ui/public/assets/{CommonDialog-BpWM7_Re.js → CommonDialog-Dcnbu_Wk.js} +1 -1
- package/src/ui/public/assets/{EditorView-a3s6LVOs.js → EditorView-DD8_CA7i.js} +0 -0
- package/src/ui/public/assets/{FlowExecutionViewer-DGoNQ5Fn.js → FlowExecutionViewer-B5oIqw89.js} +1 -1
- package/src/ui/public/assets/{FlowOrchestrationWorkspace-DnOEJHE4.js → FlowOrchestrationWorkspace-cYHpXJ8K.js} +1 -1
- package/src/ui/public/assets/{LogList-CYSsXcC9.js → LogList-C_Hv2acT.js} +1 -1
- package/src/ui/public/assets/{MindmapView-nEMaAGwo.js → MindmapView-CrbORzwT.js} +1 -1
- package/src/ui/public/assets/{MonitorView-BbJ_H7iz.js → MonitorView-D8faN1A5.js} +1 -1
- package/src/ui/public/assets/{ProjectStartupButton-CCiy2je-.js → ProjectStartupButton-CAAsmjvK.js} +1 -1
- package/src/ui/public/assets/{RemoteRepoCard-D8PWonfb.js → RemoteRepoCard-DspT0BDy.js} +1 -1
- package/src/ui/public/assets/{SourceMapView-CpOxsRxc.js → SourceMapView-ChVXErpw.js} +1 -1
- package/src/ui/public/assets/{SvgIcon-B1a3t2jD.js → SvgIcon-Bv1x5mnR.js} +1 -1
- package/src/ui/public/assets/{UserInputNode-BfpbwTCM.js → UserInputNode-B6xPuHIP.js} +1 -1
- package/src/ui/public/assets/{WorkbenchView-CzO3vbZ3.js → WorkbenchView-IIUWicLU.js} +1 -1
- package/src/ui/public/assets/_plugin-vue_export-helper-DKKtrzpc.js +15 -0
- package/src/ui/public/assets/{configStore-I4V72XeB.js → configStore-w8uC-_kt.js} +1 -1
- package/src/ui/public/assets/index-IlElRGyK.css +1 -0
- package/src/ui/public/assets/{index-CyITqHxH.js → index-Z9yhmAQK.js} +10 -10
- package/src/ui/public/index.html +6 -6
- package/src/ui/server/routes/gitOps.js +44 -0
- package/src/ui/public/assets/_plugin-vue_export-helper-DBBWeTlf.js +0 -15
- package/src/ui/public/assets/index-K6zqo5Mq.css +0 -1
package/src/ui/public/index.html
CHANGED
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
11
11
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
12
12
|
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-Z9yhmAQK.js"></script>
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-DAXXjFlN.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/element-plus-BAcS68uS.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/monaco-BvgtFLbw.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/vendor-BteTDIoK.js">
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/SvgIcon-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/CommonDialog-
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-DKKtrzpc.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/SvgIcon-Bv1x5mnR.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/CommonDialog-Dcnbu_Wk.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/assets/socket-io-BC2cap_-.js">
|
|
22
|
-
<link rel="modulepreload" crossorigin href="/assets/configStore-
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/configStore-w8uC-_kt.js">
|
|
23
23
|
<link rel="modulepreload" crossorigin href="/assets/vue-flow-CtZ_ZWKZ.js">
|
|
24
24
|
<link rel="stylesheet" crossorigin href="/assets/element-plus-CQrjg9us.css">
|
|
25
25
|
<link rel="stylesheet" crossorigin href="/assets/monaco-B2lPvkrc.css">
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<link rel="stylesheet" crossorigin href="/assets/SvgIcon-BQ6bR7l0.css">
|
|
28
28
|
<link rel="stylesheet" crossorigin href="/assets/CommonDialog-Cyh3xu0p.css">
|
|
29
29
|
<link rel="stylesheet" crossorigin href="/assets/vue-flow-CavUTEzp.css">
|
|
30
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
30
|
+
<link rel="stylesheet" crossorigin href="/assets/index-IlElRGyK.css">
|
|
31
31
|
</head>
|
|
32
32
|
<body>
|
|
33
33
|
<div id="app"></div>
|
|
@@ -190,6 +190,19 @@ export function registerGitOpsRoutes({
|
|
|
190
190
|
// 推送更改
|
|
191
191
|
app.post('/api/push', async (req, res) => {
|
|
192
192
|
try {
|
|
193
|
+
// 防御性检查:空仓库直接返回明确错误,避免 git push 报
|
|
194
|
+
// "src refspec master does not match any" 让用户摸不着头脑。
|
|
195
|
+
const headCheck = await execGitCommand(
|
|
196
|
+
['rev-parse', '--verify', 'HEAD'],
|
|
197
|
+
{ ignoreError: true, log: false }
|
|
198
|
+
);
|
|
199
|
+
if (!headCheck.stdout || !headCheck.stdout.trim()) {
|
|
200
|
+
return res.status(400).json({
|
|
201
|
+
success: false,
|
|
202
|
+
error: '当前仓库没有任何提交,请先在左侧暂存并提交至少一个文件后再推送。',
|
|
203
|
+
errorCode: 'EMPTY_REPO'
|
|
204
|
+
});
|
|
205
|
+
}
|
|
193
206
|
const { stdout } = await execGitCommand(['push']);
|
|
194
207
|
|
|
195
208
|
// 推送成功后,设置推送状态标记
|
|
@@ -213,6 +226,21 @@ export function registerGitOpsRoutes({
|
|
|
213
226
|
if (!branch || typeof branch !== 'string') {
|
|
214
227
|
return res.status(400).json({ success: false, error: '缺少 branch 参数' });
|
|
215
228
|
}
|
|
229
|
+
// 防御性检查:空仓库(没有任何 commit)直接返回明确错误,
|
|
230
|
+
// 避免 git push -u 报 "src refspec master does not match any" 让用户摸不着头脑。
|
|
231
|
+
// git rev-parse --verify HEAD 在空仓库下返回非零退出 → execGitCommand 用 ignoreError
|
|
232
|
+
// 吞掉异常并 resolve({stdout:''}),用空 stdout 判定空仓库。
|
|
233
|
+
const headCheck = await execGitCommand(
|
|
234
|
+
['rev-parse', '--verify', 'HEAD'],
|
|
235
|
+
{ ignoreError: true, log: false }
|
|
236
|
+
);
|
|
237
|
+
if (!headCheck.stdout || !headCheck.stdout.trim()) {
|
|
238
|
+
return res.status(400).json({
|
|
239
|
+
success: false,
|
|
240
|
+
error: '当前仓库没有任何提交,请先在左侧暂存并提交至少一个文件后再推送。',
|
|
241
|
+
errorCode: 'EMPTY_REPO'
|
|
242
|
+
});
|
|
243
|
+
}
|
|
216
244
|
const { stdout } = await execGitCommand(['push', '-u', 'origin', branch]);
|
|
217
245
|
setRecentPushStatus({
|
|
218
246
|
justPushed: true,
|
|
@@ -289,6 +317,22 @@ export function registerGitOpsRoutes({
|
|
|
289
317
|
workDir = value || process.cwd();
|
|
290
318
|
}
|
|
291
319
|
|
|
320
|
+
// 防御性检查:空仓库直接返回 EMPTY_REPO,避免 git push 报
|
|
321
|
+
// "src refspec master does not match any" 走完整个 spawn 流程。
|
|
322
|
+
// 注意:SSE 通道一旦 flushHeaders 就无法再发普通 JSON,只能继续用 SSE 协议。
|
|
323
|
+
const headCheck = await execGitCommand(
|
|
324
|
+
['rev-parse', '--verify', 'HEAD'],
|
|
325
|
+
{ ignoreError: true, log: false }
|
|
326
|
+
);
|
|
327
|
+
if (!headCheck.stdout || !headCheck.stdout.trim()) {
|
|
328
|
+
sendProgress({
|
|
329
|
+
type: 'error',
|
|
330
|
+
error: '当前仓库没有任何提交,请先在左侧暂存并提交至少一个文件后再推送。',
|
|
331
|
+
errorCode: 'EMPTY_REPO'
|
|
332
|
+
});
|
|
333
|
+
return res.end();
|
|
334
|
+
}
|
|
335
|
+
|
|
292
336
|
logger.info('开始推送,工作目录:', workDir);
|
|
293
337
|
|
|
294
338
|
// 记录开始时间
|