@civilization/dsh-git-workbench 0.4.2 → 0.4.3
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/lib/client.js +55 -107
- package/lib/client.js.map +1 -1
- package/package.json +1 -1
- package/src/client/GitBranchPill.module.css +105 -87
- package/src/client/GitBranchPill.tsx +15 -42
- package/src/client/locales.ts +31 -31
package/lib/client.js
CHANGED
|
@@ -2057,7 +2057,7 @@ window.__ModuleLoader__.load({
|
|
|
2057
2057
|
});
|
|
2058
2058
|
});
|
|
2059
2059
|
// \0dsh-css:src/client/GitBranchPill.module.css.mjs
|
|
2060
|
-
const css = ".J259IW_anchor{min-width:0;font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));display:inline-flex;position:relative}.J259IW_pill{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-bg-
|
|
2060
|
+
const css = ".J259IW_anchor{min-width:0;font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));display:inline-flex;position:relative}.J259IW_pill{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l2,#cbd5e1);border-radius:var(--dsw-radius-sm,6px);background:var(--dsw-alias-interactive-bg-hover,#f1f5f9);max-width:100%;color:var(--dsw-alias-label-primary,#0f172a);font:inherit;font-variant-numeric:tabular-nums;font-size:12px;font-weight:600;line-height:inherit;white-space:nowrap;cursor:pointer;align-items:center;gap:6px;padding:2px 8px;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.J259IW_pill:hover,.J259IW_pill[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-active,#e2e8f0);border-color:var(--dsw-alias-border-l1,#94a3b8);color:var(--dsw-alias-label-primary,#0f172a)}.J259IW_icon{width:14px;height:14px;color:var(--dsw-alias-state-business-primary,#2563eb);flex:none}.J259IW_branchName{text-overflow:ellipsis;white-space:nowrap;max-width:150px;overflow:hidden}.J259IW_badge{border-radius:var(--dsw-radius-xs,3px);color:var(--dsw-alias-label-secondary,#475569);background:#0000000f;align-items:center;padding:0 4px;font-size:11px;font-weight:500;line-height:14px;display:inline-flex}.J259IW_badgeAhead{color:var(--dsw-alias-state-business-primary,#2563eb)}.J259IW_badgeBehind{color:var(--dsw-alias-state-warn-primary,#d97706)}.J259IW_popover{z-index:1100;box-sizing:border-box;background:var(--dsw-alias-bg-overlay,var(--dsw-alias-bg-layer-1,#fff));border:1px solid var(--dsw-alias-border-l1,#e2e8f0);border-radius:var(--dsw-radius-xl,14px);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1,#e2e8f0);width:320px;max-height:480px;color:var(--dsw-alias-label-primary,#0f172a);cursor:default;flex-direction:column;padding:10px;font-size:13px;line-height:18px;animation:.15s cubic-bezier(.16,1,.3,1) J259IW_popoverFadeIn;display:flex;position:fixed;overflow:hidden;box-shadow:0 10px 28px #00000014,0 2px 8px #0000000a}@keyframes J259IW_popoverFadeIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.J259IW_header{border-bottom:.5px solid var(--dsw-alias-border-l2,#e2e8f0);flex-direction:column;gap:8px;padding-bottom:8px;display:flex}.J259IW_searchRow{border-radius:var(--dsw-radius-md,8px);background:var(--dsw-alias-bg-base,#f8fafc);border:1px solid var(--dsw-alias-border-l2,#e2e8f0);align-items:center;gap:6px;padding:6px 10px;display:flex}.J259IW_searchInput{color:var(--dsw-alias-label-primary,#0f172a);background:0 0;border:none;outline:none;flex:1;font-size:13px;line-height:18px}.J259IW_searchInput::placeholder{color:var(--dsw-alias-label-tertiary,#94a3b8)}.J259IW_actionBar{justify-content:space-between;align-items:center;gap:6px;display:flex}.J259IW_toolBtnGroup{align-items:center;gap:4px;display:flex}.J259IW_toolBtn{border-radius:var(--dsw-radius-sm,6px);background:var(--dsw-alias-interactive-bg-hover,#f1f5f9);color:var(--dsw-alias-label-secondary,#475569);cursor:pointer;border:none;justify-content:center;align-items:center;gap:4px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.J259IW_toolBtn:hover{background:var(--dsw-alias-interactive-bg-active,#e2e8f0);color:var(--dsw-alias-label-primary,#0f172a)}.J259IW_toolBtnPrimary{border-radius:var(--dsw-radius-sm,6px);background:var(--dsw-alias-interactive-bg-hover,#f1f5f9);color:var(--dsw-alias-label-primary,#334155);cursor:pointer;border:none;align-items:center;gap:4px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.J259IW_toolBtnPrimary:hover{background:var(--dsw-alias-interactive-bg-active,#e2e8f0);color:var(--dsw-alias-label-primary,#0f172a)}.J259IW_btnIcon{flex:none;width:12px;height:12px}.J259IW_newBranchBox{gap:6px;margin-top:2px;display:flex}.J259IW_newBranchInput{border-radius:var(--dsw-radius-sm,6px);border:1px solid var(--dsw-alias-state-business-primary,#2563eb);background:var(--dsw-alias-bg-base,#f8fafc);color:var(--dsw-alias-label-primary,#0f172a);outline:none;flex:1;padding:5px 10px;font-size:12px}.J259IW_newBranchInput::placeholder{color:var(--dsw-alias-label-tertiary,#94a3b8)}.J259IW_branchList{flex-direction:column;flex:1;gap:2px;padding:4px 0 0;display:flex;overflow-y:auto}.J259IW_groupLabel{color:var(--dsw-alias-label-tertiary,#94a3b8);align-items:center;gap:6px;padding:8px 8px 4px;font-size:12px;font-weight:400;display:flex}.J259IW_branchItem{box-sizing:border-box;border-radius:var(--dsw-radius-sm,8px);width:100%;color:var(--dsw-alias-label-secondary,#334155);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:7px 10px;font-size:13px;font-weight:400;transition:background .12s,color .12s;display:flex}.J259IW_branchItem:hover:not(.J259IW_currentBranch){background:var(--dsw-alias-bg-base,#f8fafc);color:var(--dsw-alias-label-primary,#0f172a)}.J259IW_currentBranch{background:var(--dsw-alias-state-business-muted,#eff6ff)!important;color:var(--dsw-alias-state-business-primary,#2563eb)!important;font-weight:600!important}.J259IW_currentBranch:hover{background:var(--dsw-alias-state-business-muted,#eff6ff)!important}.J259IW_branchItemLeft{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.J259IW_itemIcon{width:14px;height:14px;color:var(--dsw-alias-label-tertiary,#94a3b8);flex:none}.J259IW_currentBranch .J259IW_itemIcon{color:var(--dsw-alias-state-business-primary,#2563eb)}.J259IW_itemText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.J259IW_checkMark{width:15px;height:15px;color:var(--dsw-alias-state-business-primary,#2563eb);flex:none}.J259IW_emptyTip{text-align:center;color:var(--dsw-alias-label-tertiary,#94a3b8);padding:20px 8px;font-size:12px}";
|
|
2061
2061
|
const tagId = "@civilization/dsh-git-workbench/GitBranchPill.module.css";
|
|
2062
2062
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
2063
2063
|
const tag = document.createElement("style");
|
|
@@ -2090,15 +2090,15 @@ window.__ModuleLoader__.load({
|
|
|
2090
2090
|
"pill": "J259IW_pill",
|
|
2091
2091
|
"popover": "J259IW_popover",
|
|
2092
2092
|
"popoverFadeIn": "J259IW_popoverFadeIn",
|
|
2093
|
-
"searchIcon": "J259IW_searchIcon",
|
|
2094
2093
|
"searchInput": "J259IW_searchInput",
|
|
2095
2094
|
"searchRow": "J259IW_searchRow",
|
|
2096
2095
|
"toolBtn": "J259IW_toolBtn",
|
|
2097
|
-
"toolBtnGroup": "J259IW_toolBtnGroup"
|
|
2096
|
+
"toolBtnGroup": "J259IW_toolBtnGroup",
|
|
2097
|
+
"toolBtnPrimary": "J259IW_toolBtnPrimary"
|
|
2098
2098
|
};
|
|
2099
2099
|
// src/client/GitBranchPill.tsx
|
|
2100
2100
|
/**
|
|
2101
|
-
* Status bar Git branch pill and popover branch switcher (
|
|
2101
|
+
* Status bar Git branch pill and popover branch switcher (Clean & Elegant UI).
|
|
2102
2102
|
* Injected into the 'conversation.composer.dock' slot at order: -1.
|
|
2103
2103
|
*/
|
|
2104
2104
|
const MenuSurface = react.default.forwardRef(({ children, className, style, ...rest }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
@@ -2123,45 +2123,22 @@ window.__ModuleLoader__.load({
|
|
|
2123
2123
|
function IconCheckOutlineRegular({ className }) {
|
|
2124
2124
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
2125
2125
|
className,
|
|
2126
|
-
width: "
|
|
2127
|
-
height: "
|
|
2126
|
+
width: "15",
|
|
2127
|
+
height: "15",
|
|
2128
2128
|
viewBox: "0 0 16 16",
|
|
2129
2129
|
fill: "none",
|
|
2130
2130
|
stroke: "currentColor",
|
|
2131
|
-
strokeWidth: "2",
|
|
2131
|
+
strokeWidth: "2.4",
|
|
2132
2132
|
strokeLinecap: "round",
|
|
2133
2133
|
strokeLinejoin: "round",
|
|
2134
2134
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("polyline", { points: "3 8 7 12 13 4" })
|
|
2135
2135
|
});
|
|
2136
2136
|
}
|
|
2137
|
-
function IconPlusOutlineRegular({ className }) {
|
|
2138
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
2139
|
-
className,
|
|
2140
|
-
width: "14",
|
|
2141
|
-
height: "14",
|
|
2142
|
-
viewBox: "0 0 16 16",
|
|
2143
|
-
fill: "none",
|
|
2144
|
-
stroke: "currentColor",
|
|
2145
|
-
strokeWidth: "2",
|
|
2146
|
-
strokeLinecap: "round",
|
|
2147
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
|
|
2148
|
-
x1: "8",
|
|
2149
|
-
y1: "3",
|
|
2150
|
-
x2: "8",
|
|
2151
|
-
y2: "13"
|
|
2152
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
|
|
2153
|
-
x1: "3",
|
|
2154
|
-
y1: "8",
|
|
2155
|
-
x2: "13",
|
|
2156
|
-
y2: "8"
|
|
2157
|
-
})]
|
|
2158
|
-
});
|
|
2159
|
-
}
|
|
2160
2137
|
function IconRefreshOutlineRegular({ className }) {
|
|
2161
2138
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
2162
2139
|
className,
|
|
2163
|
-
width: "
|
|
2164
|
-
height: "
|
|
2140
|
+
width: "13",
|
|
2141
|
+
height: "13",
|
|
2165
2142
|
viewBox: "0 0 16 16",
|
|
2166
2143
|
fill: "none",
|
|
2167
2144
|
stroke: "currentColor",
|
|
@@ -2171,28 +2148,6 @@ window.__ModuleLoader__.load({
|
|
|
2171
2148
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M2.5 8a5.5 5.5 0 1 0 1.6-3.9L2 6" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M2 2v4h4" })]
|
|
2172
2149
|
});
|
|
2173
2150
|
}
|
|
2174
|
-
function IconSearchOutlineRegular({ className }) {
|
|
2175
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
2176
|
-
className,
|
|
2177
|
-
width: "14",
|
|
2178
|
-
height: "14",
|
|
2179
|
-
viewBox: "0 0 16 16",
|
|
2180
|
-
fill: "none",
|
|
2181
|
-
stroke: "currentColor",
|
|
2182
|
-
strokeWidth: "1.8",
|
|
2183
|
-
strokeLinecap: "round",
|
|
2184
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
2185
|
-
cx: "7",
|
|
2186
|
-
cy: "7",
|
|
2187
|
-
r: "4.5"
|
|
2188
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
|
|
2189
|
-
x1: "10.5",
|
|
2190
|
-
y1: "10.5",
|
|
2191
|
-
x2: "14",
|
|
2192
|
-
y2: "14"
|
|
2193
|
-
})]
|
|
2194
|
-
});
|
|
2195
|
-
}
|
|
2196
2151
|
/**
|
|
2197
2152
|
* Git Branch Pill rendered in the Composer Dock.
|
|
2198
2153
|
*/
|
|
@@ -2232,8 +2187,8 @@ window.__ModuleLoader__.load({
|
|
|
2232
2187
|
if (!anchorRef.current) return;
|
|
2233
2188
|
const rect = anchorRef.current.getBoundingClientRect();
|
|
2234
2189
|
setPopoverPos({
|
|
2235
|
-
bottom: window.innerHeight - rect.top +
|
|
2236
|
-
left: Math.max(
|
|
2190
|
+
bottom: window.innerHeight - rect.top + 8,
|
|
2191
|
+
left: Math.max(12, Math.min(rect.left, window.innerWidth - 340))
|
|
2237
2192
|
});
|
|
2238
2193
|
}, []);
|
|
2239
2194
|
const handleToggle = (0, react.useCallback)((e) => {
|
|
@@ -2322,7 +2277,7 @@ window.__ModuleLoader__.load({
|
|
|
2322
2277
|
return q ? branches.remote.filter((b) => b.name.toLowerCase().includes(q)) : branches.remote;
|
|
2323
2278
|
}, [branches?.remote, filter]);
|
|
2324
2279
|
if (status && !status.isRepo) return null;
|
|
2325
|
-
const currentBranchName = status?.branch || "
|
|
2280
|
+
const currentBranchName = status?.branch || "main";
|
|
2326
2281
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
2327
2282
|
ref: anchorRef,
|
|
2328
2283
|
className: GitBranchPill_module_css_default.anchor,
|
|
@@ -2359,9 +2314,9 @@ window.__ModuleLoader__.load({
|
|
|
2359
2314
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2360
2315
|
className: GitBranchPill_module_css_default.header,
|
|
2361
2316
|
children: [
|
|
2362
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
2317
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2363
2318
|
className: GitBranchPill_module_css_default.searchRow,
|
|
2364
|
-
children:
|
|
2319
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
2365
2320
|
autoFocus: true,
|
|
2366
2321
|
className: GitBranchPill_module_css_default.searchInput,
|
|
2367
2322
|
placeholder: "搜索或过滤分支...",
|
|
@@ -2369,25 +2324,23 @@ window.__ModuleLoader__.load({
|
|
|
2369
2324
|
onChange: (e) => {
|
|
2370
2325
|
setFilter(e.target.value);
|
|
2371
2326
|
}
|
|
2372
|
-
})
|
|
2327
|
+
})
|
|
2373
2328
|
}),
|
|
2374
2329
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2375
2330
|
className: GitBranchPill_module_css_default.actionBar,
|
|
2376
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.
|
|
2331
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2377
2332
|
type: "button",
|
|
2378
|
-
className: GitBranchPill_module_css_default.
|
|
2379
|
-
title: "新建分支",
|
|
2333
|
+
className: GitBranchPill_module_css_default.toolBtnPrimary,
|
|
2380
2334
|
onClick: () => {
|
|
2381
2335
|
setCreatingBranch((prev) => !prev);
|
|
2382
2336
|
},
|
|
2383
|
-
children:
|
|
2337
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "+ 新建分支" })
|
|
2384
2338
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2385
2339
|
className: GitBranchPill_module_css_default.toolBtnGroup,
|
|
2386
2340
|
children: [
|
|
2387
2341
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2388
2342
|
type: "button",
|
|
2389
2343
|
className: GitBranchPill_module_css_default.toolBtn,
|
|
2390
|
-
title: "拉取 (Pull)",
|
|
2391
2344
|
onClick: () => {
|
|
2392
2345
|
handlePull();
|
|
2393
2346
|
},
|
|
@@ -2396,7 +2349,6 @@ window.__ModuleLoader__.load({
|
|
|
2396
2349
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2397
2350
|
type: "button",
|
|
2398
2351
|
className: GitBranchPill_module_css_default.toolBtn,
|
|
2399
|
-
title: "推送 (Push)",
|
|
2400
2352
|
onClick: () => {
|
|
2401
2353
|
handlePush();
|
|
2402
2354
|
},
|
|
@@ -2452,33 +2404,29 @@ window.__ModuleLoader__.load({
|
|
|
2452
2404
|
className: GitBranchPill_module_css_default.itemText,
|
|
2453
2405
|
children: b.name
|
|
2454
2406
|
})]
|
|
2455
|
-
}), b.isCurrent
|
|
2456
|
-
className: GitBranchPill_module_css_default.badge,
|
|
2457
|
-
children: ["↑", b.ahead]
|
|
2458
|
-
})]
|
|
2407
|
+
}), b.isCurrent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutlineRegular, { className: GitBranchPill_module_css_default.checkMark })]
|
|
2459
2408
|
}, b.name)),
|
|
2460
2409
|
filteredRemote.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2461
2410
|
className: GitBranchPill_module_css_default.groupLabel,
|
|
2462
|
-
style: { marginTop: "6px" },
|
|
2463
2411
|
children: [
|
|
2464
2412
|
"远程分支 (",
|
|
2465
2413
|
filteredRemote.length,
|
|
2466
2414
|
")"
|
|
2467
2415
|
]
|
|
2468
|
-
}), filteredRemote.map((b) => /* @__PURE__ */ (0, react_jsx_runtime.
|
|
2416
|
+
}), filteredRemote.map((b) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
2469
2417
|
type: "button",
|
|
2470
|
-
className: GitBranchPill_module_css_default.branchItem
|
|
2418
|
+
className: `${GitBranchPill_module_css_default.branchItem} ${b.isCurrent ? GitBranchPill_module_css_default.currentBranch : ""}`,
|
|
2471
2419
|
disabled: switching,
|
|
2472
2420
|
onClick: () => {
|
|
2473
|
-
handleCheckout(b.name);
|
|
2421
|
+
if (!b.isCurrent) handleCheckout(b.name);
|
|
2474
2422
|
},
|
|
2475
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2423
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2476
2424
|
className: GitBranchPill_module_css_default.branchItemLeft,
|
|
2477
2425
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconBranchOutlineRegular, { className: GitBranchPill_module_css_default.itemIcon }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
2478
2426
|
className: GitBranchPill_module_css_default.itemText,
|
|
2479
2427
|
children: b.name
|
|
2480
2428
|
})]
|
|
2481
|
-
})
|
|
2429
|
+
}), b.isCurrent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconCheckOutlineRegular, { className: GitBranchPill_module_css_default.checkMark })]
|
|
2482
2430
|
}, b.name))] }),
|
|
2483
2431
|
filteredLocal.length === 0 && filteredRemote.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
2484
2432
|
className: GitBranchPill_module_css_default.emptyTip,
|
|
@@ -2519,14 +2467,14 @@ window.__ModuleLoader__.load({
|
|
|
2519
2467
|
const NS = "gitView";
|
|
2520
2468
|
const zh = {
|
|
2521
2469
|
"type.label": "Git",
|
|
2522
|
-
"guide.title": "Git
|
|
2523
|
-
"guide.description": "
|
|
2470
|
+
"guide.title": "Git 源代码管理",
|
|
2471
|
+
"guide.description": "查看项目代码变更、分支、提交历史与代码对比",
|
|
2524
2472
|
"shortcut.noSession": "没有激活的会话",
|
|
2525
2473
|
"tabs.changes": "更改",
|
|
2526
2474
|
"tabs.history": "提交历史",
|
|
2527
|
-
"tabs.tree": "
|
|
2528
|
-
"tabs.branches": "
|
|
2529
|
-
"tabs.tags": "
|
|
2475
|
+
"tabs.tree": "提交图谱",
|
|
2476
|
+
"tabs.branches": "分支",
|
|
2477
|
+
"tabs.tags": "标签",
|
|
2530
2478
|
"actions.refresh": "刷新状态",
|
|
2531
2479
|
"actions.viewDiff": "查看差异",
|
|
2532
2480
|
"actions.closeDiff": "收起差异",
|
|
@@ -2540,68 +2488,68 @@ window.__ModuleLoader__.load({
|
|
|
2540
2488
|
"actions.checkout": "检出分支",
|
|
2541
2489
|
"actions.newBranch": "新建分支",
|
|
2542
2490
|
"actions.fetch": "获取远程",
|
|
2543
|
-
"actions.pull": "拉取",
|
|
2544
|
-
"actions.push": "推送",
|
|
2545
|
-
"commit.placeholder": "
|
|
2491
|
+
"actions.pull": "拉取 (Pull)",
|
|
2492
|
+
"actions.push": "推送 (Push)",
|
|
2493
|
+
"commit.placeholder": "提交说明信息 (Ctrl+Enter 提交)...",
|
|
2546
2494
|
"commit.emptyWarning": "请输入提交说明",
|
|
2547
2495
|
"commit.success": "提交成功",
|
|
2548
|
-
"branch.filter": "
|
|
2496
|
+
"branch.filter": "搜索或过滤分支...",
|
|
2549
2497
|
"branch.local": "本地分支",
|
|
2550
2498
|
"branch.remote": "远程分支",
|
|
2551
2499
|
"branch.current": "当前分支",
|
|
2552
|
-
"branch.newPrompt": "
|
|
2500
|
+
"branch.newPrompt": "新分支名称 (按 Enter 创建)...",
|
|
2553
2501
|
"branch.createAndCheckout": "创建并检出",
|
|
2554
2502
|
"tree.author": "作者",
|
|
2555
2503
|
"tree.date": "时间",
|
|
2556
2504
|
"tree.hash": "哈希",
|
|
2557
2505
|
"tree.changedFiles": "变更文件",
|
|
2558
|
-
"tree.selectCommit": "
|
|
2559
|
-
"status.clean": "
|
|
2506
|
+
"tree.selectCommit": "选择一次提交以查看详情与代码差异",
|
|
2507
|
+
"status.clean": "工作区干净,无未提交的更改",
|
|
2560
2508
|
"status.notRepo": "当前工作区不是 Git 仓库",
|
|
2561
|
-
"status.staged": "
|
|
2562
|
-
"status.unstaged": "
|
|
2509
|
+
"status.staged": "暂存的更改",
|
|
2510
|
+
"status.unstaged": "更改",
|
|
2563
2511
|
"status.untracked": "未跟踪文件",
|
|
2564
2512
|
"status.ahead": "领先 {count} 个提交",
|
|
2565
2513
|
"status.behind": "落后 {count} 个提交",
|
|
2566
2514
|
"diff.additions": "+{count}",
|
|
2567
2515
|
"diff.deletions": "-{count}",
|
|
2568
2516
|
"diff.empty": "无内容变动",
|
|
2569
|
-
"tag.filter": "
|
|
2517
|
+
"tag.filter": "过滤标签 (名称、Hash或提交说明)...",
|
|
2570
2518
|
"tag.newPrompt": "新建标签 (Tag)",
|
|
2571
2519
|
"tag.nameLabel": "标签名称",
|
|
2572
|
-
"tag.namePlaceholder": "输入标签名称 (
|
|
2573
|
-
"tag.targetCommitLabel": "目标 Commit Hash (
|
|
2574
|
-
"tag.messageLabel": "
|
|
2575
|
-
"tag.messagePrompt": "
|
|
2520
|
+
"tag.namePlaceholder": "输入标签名称 (如 v1.0.0)...",
|
|
2521
|
+
"tag.targetCommitLabel": "目标 Commit Hash (可选,默认 HEAD)",
|
|
2522
|
+
"tag.messageLabel": "附注说明信息 (可选)",
|
|
2523
|
+
"tag.messagePrompt": "请输入附注说明信息 (可选)...",
|
|
2576
2524
|
"tag.createBtn": "创建标签",
|
|
2577
2525
|
"tag.cancelBtn": "取消",
|
|
2578
2526
|
"tag.locateBtn": "在图谱中定位",
|
|
2579
2527
|
"tag.copyName": "复制标签名",
|
|
2580
2528
|
"tag.deleteBtn": "删除",
|
|
2581
2529
|
"tag.deleteConfirm": "确定要删除标签 \"{name}\" 吗?",
|
|
2582
|
-
"tag.empty": "
|
|
2583
|
-
"tag.annotated": "
|
|
2584
|
-
"tag.locatedNotice": "已定位到标签 \"{name}\"
|
|
2530
|
+
"tag.empty": "未找到任何 Git 标签",
|
|
2531
|
+
"tag.annotated": "含附注",
|
|
2532
|
+
"tag.locatedNotice": "已定位到标签 \"{name}\" 所在提交",
|
|
2585
2533
|
"actions.locate": "定位",
|
|
2586
2534
|
"tree.colGraph": "图谱",
|
|
2587
|
-
"tree.colSubject": "
|
|
2535
|
+
"tree.colSubject": "提交说明与分支引用",
|
|
2588
2536
|
"tree.colAuthor": "作者",
|
|
2589
2537
|
"tree.colTime": "时间",
|
|
2590
2538
|
"tree.colSha": "Commit SHA",
|
|
2591
2539
|
"tree.searchPlaceholder": "搜索提交说明、SHA 或作者...",
|
|
2592
|
-
"tree.filterAll": "
|
|
2593
|
-
"tree.filterMainline": "
|
|
2540
|
+
"tree.filterAll": "全部提交",
|
|
2541
|
+
"tree.filterMainline": "主线分支",
|
|
2594
2542
|
"detail.title": "提交详情 (COMMIT DETAILS)",
|
|
2595
|
-
"detail.references": "
|
|
2596
|
-
"detail.author": "
|
|
2543
|
+
"detail.references": "分支引用 (REFERENCES)",
|
|
2544
|
+
"detail.author": "提交作者 (Author)",
|
|
2597
2545
|
"detail.date": "提交时间 (Date)",
|
|
2598
2546
|
"detail.parent": "父级提交 (Parent)",
|
|
2599
2547
|
"detail.checkout": "检出分支 (Checkout)",
|
|
2600
|
-
"detail.createBranchOrTag": "
|
|
2601
|
-
"footer.showingCount": "
|
|
2548
|
+
"detail.createBranchOrTag": "从此检出分支 / 标签",
|
|
2549
|
+
"footer.showingCount": "显示 {count} 条提交 (共 {total} 条)",
|
|
2602
2550
|
"footer.loadMore": "加载更多",
|
|
2603
|
-
"footer.syncNormal": "
|
|
2604
|
-
"footer.ahead": "
|
|
2551
|
+
"footer.syncNormal": "分支已与远程同步",
|
|
2552
|
+
"footer.ahead": "领先远程 {count} 个提交",
|
|
2605
2553
|
"footer.behind": "落后远程 {count} 个提交"
|
|
2606
2554
|
};
|
|
2607
2555
|
const en = {
|