[software development] 为文件管理器开发了一个图形化git插件
Tofloor
poster avatar
夜夜笙歌free
deepin
2025-07-07 15:26
Author

本来是想基于文件管理器的插件接口套壳调用 rabbitvcs 来实现 git、svn 插件,不过 deepin v25 的仓库没有 rabbitvcs,于是就用 AI 快速写了个文管的 git 插件,这个插件大部分代码都是 AI 生成的。

如果使用 deepin v25,可以自行下载deb包安装:https://github.com/Johnson-zs/dde-file-manager-vcs-plugin/releases/tag/0.7.3,如果使用的是其他版本,那么文件管理器是依赖 Qt5 构建的,可以自行阅读 README,clone 代码安装依赖进行编译,自测是能打包成功的。

由于代码量已经达到2w+,存在一些bug是必然的,并且架构上也应该参考 rabbitvcs 做成多进程的架构,但是没时间搞,当前版本也可以将就用一下。

以下是简介:

DDE文件管理器版本控制工具

本项目目的是为了为DDE文件管理器开发版本控制工具插件,当前仅开发了Git插件,为深度桌面环境(DDE)的文件管理器提供完整的Git集成功能。

🌟 功能特性

📊 智能状态可视化

  • 文件状态角标:实时显示文件的Git状态
    • 🟢 正常版本(已提交)
    • 🔵 本地修改(已暂存)
    • 🟡 本地修改(未暂存)
    • ➕ 新增文件
    • ➖ 已删除文件
    • ⚠️ 冲突文件
    • 📁 目录状态汇总

🖱️ 全面的右键菜单集成

单文件操作

对选中的文件可进行以下操作(根据文件状态智能启用/禁用):

  • Git Add - 将文件添加到暂存区
  • Git Remove - 从版本控制中移除文件
  • Git Revert - 还原文件到最后提交状态
  • Git Log... - 查看文件的提交历史
  • Git Blame... - 查看文件的逐行作者信息
  • Git Diff... - 查看文件差异
  • Git Stash File - 暂存单个文件的更改

多文件批量操作

  • Git Add Selected - 批量添加选中文件
  • Git Remove Selected - 批量移除选中文件
  • Git Revert Selected - 批量还原选中文件

仓库级操作

在Git仓库目录的空白区域右键可进行以下操作:

基础操作:

  • Git Status... - 查看仓库状态概览
  • Git Log... - 查看完整的仓库提交历史
  • Git Commit... - 提交暂存的更改

分支管理:

  • Git Checkout... - 切换分支或标签(支持创建新分支)
  • Git Branch Comparison... - 比较不同分支的差异

同步操作:

  • Git Pull... - 高级拉取对话框(支持多种策略)
  • Git Push... - 高级推送对话框(支持强制推送、标签等)
  • Git Remote Manager... - 远程仓库管理

高级功能:

  • Git Stash - 快速创建stash
  • Git Stash Manager... - 完整的stash管理界面

🖥️ 交互界面

Git Log 查看器

采用现代化三栏布局设计:

  • 左侧提交列表:
    • 图形化分支展示
    • 提交信息、作者、日期
    • 远程状态指示(领先/落后/同步)
    • 无限滚动加载
  • 右上提交详情:
    • 完整的提交信息和元数据
    • 提交统计信息
    • 作者和时间信息
  • 右下文件差异:
    • 语法高亮的diff视图
    • 文件变更统计
    • 支持文件预览

高级功能:

  • 搜索:实时搜索提交消息、作者、哈希
  • 分支过滤:可搜索的分支选择器
  • 右键菜单:丰富的上下文操作
  • 浏览器集成:支持在浏览器中打开commit(GitHub/GitLab等)

Git Commit 对话框

提交界面:

  • 智能文件管理:
    • 分离显示暂存区和工作区文件
    • 支持文件的暂存/取消暂存操作
    • 文件状态图标和统计信息
  • 提交消息编辑:
    • 多行文本输入支持
    • 提交消息模板
    • 实时字符计数
  • 高级选项:
    • Amend模式(修改最后一次提交)
    • Allow Empty(允许空提交)
    • 文件预览功能

Git Status 对话框

全面的仓库状态管理:

  • 状态概览:显示暂存、修改、未跟踪文件统计
  • 文件操作:支持暂存、取消暂存、重置、提交等操作
  • 差异预览:实时显示选中文件的差异
  • 批量操作:支持多文件选择和批量处理

Git Push/Pull 对话框

同步操作界面:

Push对话框:

  • 仓库状态概览:显示未推送提交和远程状态
  • 高级选项:强制推送、推送标签、设置上游等
  • 安全机制:Force with lease、预演模式
  • 提交预览:显示即将推送的提交列表

Pull对话框:

  • 拉取策略选择:merge、rebase、fast-forward
  • 远程分支选择:支持多远程仓库
  • 高级选项:自动stash、prune、预演模式
  • 冲突处理:智能冲突检测和处理建议

Git Checkout 对话框

分支切换界面:

  • 标签页设计:
    • 分支标签页:本地和远程分支,当前分支高亮
    • 标签标签页:所有Git标签
  • 新建分支:支持在checkout时创建新分支
  • 搜索功能:可搜索的分支/标签选择器
  • 安全检查:自动检测未提交更改并提供stash选项

Git Stash 管理器

stash管理功能:

  • Stash列表:显示所有stash及其信息
  • 内容预览:实时显示stash的差异内容
  • 全面操作:Apply、Apply & Keep、Delete、Create Branch
  • 右键菜单:丰富的上下文操作
  • 键盘快捷键:提高操作效率

Git Blame 对话框

GitHub风格的blame界面:

  • 逐行显示:每行代码的作者、时间和提交信息
  • 颜色编码:不同提交使用不同颜色区分
  • 交互功能:点击提交哈希查看详细信息
  • 右键菜单:支持查看提交详情等操作

Git 远程仓库管理器

远程仓库管理:

  • 远程列表:显示所有配置的远程仓库
  • 连接测试:实时测试远程仓库连接状态
  • CRUD操作:添加、删除、重命名、修改URL
  • 批量操作:支持多个远程仓库的批量管理

Git 文件预览对话框

在文件item上按下空格键,可进行文件查看功能:

  • 多模式预览:支持文本、Markdown等格式
  • 历史版本:查看文件在特定提交时的内容
  • 语法高亮:代码文件的语法高亮显示
  • 差异对比:与当前版本的差异对比
Reply Favorite View the author
All Replies
ThinkYoung
deepin
2025-07-07 15:28
#1

kissing_heart

Reply View the author
tacat
deepin
2025-07-07 15:33
#2

哇,这很实用

Reply View the author
redeagle
deepin
2025-07-07 15:45
#3

有想法 ok

Reply View the author
lxltyw
deepin
2025-07-07 15:51
#4

需要一个SVN的,公司文档用的SVN管理,大佬快开发下

Reply View the author
zccrs
deepin
2025-07-07 16:17
#5
lxltyw

需要一个SVN的,公司文档用的SVN管理,大佬快开发下

自己搞呀,他都说是ai写的了,你也可以用ai学习这个项目后修改为svn的版本

Reply View the author
wlly-lzh
deepin
2025-07-07 17:24
#6

牛逼,666.

Reply View the author
linngc
deepin
2025-07-07 17:25
#7

非常实用,持续关注ing

Reply View the author
HualetWang
deepin
2025-07-07 18:12
#8

牛!没图没真相?

Reply View the author
夜夜笙歌free
deepin
2025-07-07 19:31
#9
HualetWang

牛!没图没真相?

pc端能看到图

Reply View the author
一粒
deepin
2025-07-09 13:25
#10

能利用AI写2w行代码而且成功跑起来也太厉害了吧 QAQ

Reply View the author
夜夜笙歌free
deepin
2025-07-09 14:06
#11
一粒

能利用AI写2w行代码而且成功跑起来也太厉害了吧 QAQ

只要任务拆分的足够细和独立,再多都能写

Reply View the author
一粒
deepin
2025-07-10 13:07
#12
夜夜笙歌free

只要任务拆分的足够细和独立,再多都能写

您用的哪家ai呀,有什么ai协作技巧吗?

Reply View the author
夜夜笙歌free
deepin
2025-07-10 13:09
#13
一粒

您用的哪家ai呀,有什么ai协作技巧吗?

cursor+claude4模型,使用 RIPER-5 规则的模式进行开发,先让AI理解需求,编写task文档,然后再根据task文档开发

Reply View the author
NoahLiu
deepin
2025-07-14 14:02
#14

agree

Reply View the author