diff --git a/src/app/(main)/dev/panel/components/version-control.tsx b/src/app/(main)/dev/panel/components/version-control.tsx index 2fb60bf..4dde285 100644 --- a/src/app/(main)/dev/panel/components/version-control.tsx +++ b/src/app/(main)/dev/panel/components/version-control.tsx @@ -1,4 +1,4 @@ -import { GitBranch, GitCommit as GitCommitIcon, CornerRightUp, RotateCcw, AlertTriangle, RefreshCw, GitCommit } from 'lucide-react' +import { GitBranch, GitCommit as GitCommitIcon, CornerRightUp, RotateCcw, AlertTriangle, RefreshCw, GitCommit, Upload } from 'lucide-react' import { Button } from '@/components/ui/button' import { Separator } from '@/components/ui/separator' import { trpc } from '@/lib/trpc' @@ -73,7 +73,7 @@ export function VersionControl({ isOpen }: { isOpen: boolean }) { const [isLoadingMore, setIsLoadingMore] = React.useState(false) const [commitType, setCommitType] = React.useState<'normal' | 'amend' | null>(null) const [confirmAction, setConfirmAction] = React.useState<{ - type: 'checkout' | 'checkout-branch' | 'revert' | 'reset' + type: 'checkout' | 'checkout-branch' | 'revert' | 'reset' | 'push' commitId?: string message?: string title?: string @@ -191,6 +191,17 @@ export function VersionControl({ isOpen }: { isOpen: boolean }) { }, }) + // 推送远程仓库mutation + const pushToRemoteMutation = trpc.devPanel!.pushToRemote.useMutation({ + onSuccess: (data) => { + toast.success(data.message) + setConfirmAction(null) + }, + onError: (error) => { + toast.error(error.message) + }, + }) + // 处理分支选择(仅用于查看历史,不切换实际分支) const handleBranchChange = (branchName: string | null) => { if (!branchName) return @@ -306,9 +317,21 @@ export function VersionControl({ isOpen }: { isOpen: boolean }) { resetToCommitMutation.mutate({ commitId: confirmAction.commitId }) } break + case 'push': + pushToRemoteMutation.mutate({ branchName: selectedBranch }) + break } } + // 处理推送远程仓库 + const handlePushToRemote = () => { + setConfirmAction({ + type: 'push', + title: '推送到远程仓库', + description: `确定要将分支 "${selectedBranch}" 的最新提交推送到远程仓库吗?`, + }) + } + // 手动刷新所有数据 const handleRefresh = () => { refetchBranches() @@ -357,7 +380,7 @@ export function VersionControl({ isOpen }: { isOpen: boolean }) { - {/* 右半部分:Commit按钮和刷新按钮 */} + {/* 右半部分:Commit按钮、推送按钮和刷新按钮 */}