[AI Development Lab] 【deepin插件开发活动】vcs-dfm — 文件管理器 SVN/Git 版本控制插件
Tofloor
poster avatar
士无双
deepin
7 hours ago
Author

说明:论坛中有几个大佬已经做了类似的svn/git插件,刚开始我用这个大佬开发的插件https://bbs.deepin.org/post/296356 ,当时很高兴,很感谢,后来用久了感觉界面有些老,svn的很多功能我也用不上,我主要使用›svn,基本上就是更新和提交,平常不使用›git。今天休闲,用小U同学原生开发了一个,碰巧赶上这个活动,就来参加一下。(也是我第一次使用›gitee仓库😂 )

项目中也有【VCS插件功能需求模板.md】文件,想要更多功能的朋友可以自己添加,也可以在评论中提出。还有就是主要用git的朋友也可以看下这个大佬的作品https://bbs.deepin.org/post/289152

好了,正文开始。

一、作品简介

vcs-dfm 是一个基于 DTK6 (Qt6) + dfm-extension 开发的 deepin 25文件管理器右键菜单扩展插件,为 DDE 文件管理器提供 SVN / Git 双版本控制 的一站式支持。插件将版本控制操作完整融入文件管理器右键菜单,显示状态角标,无需打开终端、无需切换窗口。界面完全遵循 DDE 设计规范,与系统风格浑然一体。

二、功能清单

版本控制 功能
svn svn更新、svn提交(自动 add 未版本控制/登记删除)、svn日志、svn检出(支持账号密码)
git git拉取、git提交(自动 add 未跟踪)、git日志、git推送、git克隆、git添加/删除/还原
设置 Git 用户名 + 个人访问令牌(PAT)、提交者信息;测试连接支持 GitHub/Gitee/GitLab 自适应验证;所有 git 命令自动认证,无需终端
通用 文件状态角标(已修改/已添加/冲突/未版本控制等)

核心亮点:

🖱️ 全 GUI 操作:配置一次凭据后,推送/拉取/克隆/提交全部在右键菜单完成,零命令行依赖

🎨 统一 DDE 风格:所有对话框(提交/更新/日志/检出/进度)采用标准标题栏 + 渐变进度条,SVN 与 Git 界面风格完全一致

📊 实时进度:更新/推送/检出等耗时操作显示渐变进度条 + 实时命令输出;svn/git 克隆完成后自动列出克隆的文件清单

智能交互:提交按钮按"勾选文件 + 提交信息"动态启用;未版本控制文件默认不勾选避免误提交

三、安装方式

方法一:deb 包安装(推荐)

sudo apt install ./vcs-dfm_1.0.32_amd64.deb

或:sudo dpkg -i vcs-dfm_1.0.32_amd64.deb && sudo apt -f install -y

重启文件管理器生效

dde-file-manager -r &

方法二:源码构建

依赖:Qt6、DTK6、dfm-extension 开发包

cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
sudo cmake --install build

卸载sudo dpkg -r vcs-dfm

四、使用说明

工作副本内右键svn操作 ▸ svn更新/svn提交/svn日志git操作 ▸ git拉取/git提交/git日志/git推送/git添加/git删除/git还原/设置

非工作副本右键svn 检出 / git 克隆

Git 认证:首次使用在 git操作 → 设置... 填入用户名 + 令牌(GitHub/Gitee/GitLab 通用),点"测试连接"验证后保存,之后全部自动认证

文件角标:文件图标自动显示版本控制状态角标

详细文档见项目仓库 README.md。

五、效果图

角标:

效果图.png

svn:

SVN日志.png

git:

image.png

更多效果图请查看源码仓库。

六、源码与文档

源码仓库https://gitee.com/shiwushuang9/deepin-25-svn-and-git-plugins

协议:GPL-3.0

README:功能介绍、安装、使用说明、项目结构、变更记录

技术栈:Qt6 / DTK6 / dfm-extension / C++17

七、开发过程说明(deepin Skills 应用)

本插件从 2026-08-10 从零开始开发,完全通过 小U同学 AI 编程 Agent + deepin Skills 辅助完成,未使用任何现成插件代码(交互逻辑参考了 RabbitVCS 但界面与实现全部基于 Qt6/DTK6 重写)。

使用的 deepin Skills 模块:

  1. dtk-development(核心)
    • 全程指导 DTK6 控件使用规范:DDialog 布局结构(DTitlebar 标题栏 / contentLayout 内容区 / buttonLayout 按钮区)、DLineEdit/DPasswordEdit/DProgressBar 等控件
    • 解决关键问题:DDialog 顶部独立 DTitlebar 导致"额头"过大(findChild 定位并隐藏/利用)、按钮区与内容区左右边距不一致(对齐算法)、QSS 渐变进度条实现
    • 统一 DDE 视觉规范: 边距、标准标题栏、按钮对齐
  2. dde-shell-development(辅助)
    • 理解 DDE 桌面扩展的集成方式与加载机制
    • 排查插件加载时序、线程亲和性(dfm-extension 菜单回调在工作线程 → 强制投递主线程处理 UI)

AI 辅助开发的关键对话记录:

image.png

image.png

典型 AI 解决的问题:

「DDialog 顶部标题栏如何隐藏/对齐」→ AI 定位源码:DTitlebar 为独立组件,findChild 处理

「git 插件内推送认证失败」→ AI 设计 GIT_ASKPASS 注入方案,实现全 GUI 认证

「git 提交报作者身份未知」→ AI 检测仓库 user 配置,设置界面增加提交者信息自动注入

开发过程回顾:

  1. 用 AI + dtk-development Skill 搭建插件骨架(dfm-extension 入口 + DTK 对话框)
  2. 实现 SVN/Git 命令封装(异步 QProcess + 线程安全)
  3. 迭代优化 UI(对话框统一样式、进度条、按钮对齐)
  4. 解决实际使用问题(推送认证、提交作者、克隆文件显示)
  5. 全程对话式需求迭代:每轮修复验证后打包测试
Reply Favorite View the author
All Replies
avatar
骑🐖追帅哥bot
Moderator
3 hours ago
#1

Reply View the author