**成都第必软件工具**(Chengdu DB Software Tool)是一款基于 Tauri + Vue 3 的桌面应用程序,专为开发团队设计的一站式开发环境配置和 Git 协作工具。该应用集成了环境配置、Git 操作、PR 自动提交、项目预览等功能,旨在简化开发流程,提升团队协作效率。
核心业务场景
主要服务于以下业务场景:
1. **新环境快速配置** - 帮助新员工快速搭建开发环境
2. **Git 协作简化** - 降低 Git 操作门槛,减少出错概率
3. **自动化工作流** - 实现从代码修改到 PR 提交的自动化流程
4. **项目预览管理** - 统一管理 Web 和小程序项目的开发预览
提供四个主要功能入口的卡片式导航:
- **环境配置** - 进入环境初始化向导
- **Git 工具** - 直接跳转到分支管理功能
- **自动提交 PR** - 跳转到 PR 创建界面(自动模式)
- **预览功能** - 跳转到 Web 预览功能
**设计特点:**
- 2x2 网格布局,视觉清晰
- 每个卡片配有图标和功能说明
- 根据初始化状态智能导航
- 显示当前工作目录信息
Git 操作中的 SSH 密钥管理
**难点描述:**
- 用户可能没有 SSH 密钥
- Windows 环境 ssh-agent 管理复杂
- 密钥类型多样(RSA/Ed25519)
- Git 命令需要指定正确的密钥文件
**解决方案:**
```rust
// 1. 自动检测和生成密钥
fn pick_ssh_private_key() -> Result {
let home_dir = dirs::home_dir()?;
let ssh_dir = home_dir.join(".ssh");
// 优先使用 Ed25519,回退到 RSA
let ed = ssh_dir.join("id_ed25519");
if ed.exists() {
return Ok(ed.to_string_lossy().replace("\\", "/"));
}
let rsa = ssh_dir.join("id_rsa");
if rsa.exists() {
return Ok(rsa.to_string_lossy().replace("\\", "/"));
}
Err("未找到 SSH 密钥".to_string())
}
// 2. 构建 Git SSH 命令
fn build_git_ssh_command() -> Result {
let key = pick_ssh_private_key()?;
Ok(format!(
"ssh -i \"{}\" -o StrictHostKeyChecking=no -o UserKnownHostsFile=none",
key
))
}
// 3. 在每个 Git 操作中注入 SSH 配置
let ssh_cmd = build_git_ssh_command()?;
let output = Command::new("git")
.env("GIT_SSH_COMMAND", ssh_cmd)
.args(["pull", "--progress"])
.current_dir(&repo_path)
.output()?;
```
**关键优化点:**
- 自动启动 ssh-agent 并添加密钥
- 使用 `GIT_SSH_COMMAND` 环境变量统一配置
- 跨平台路径处理(Windows 反斜杠转换)