[GH-ISSUE #799] [feat] Feature: 支持将当前工作区所有笔记一键同步到远程 Git 仓库 #594

Closed
opened 2026-03-02 03:40:43 +03:00 by kerem · 1 comment
Owner

Originally created by @xianggau on GitHub (Dec 17, 2025).
Original GitHub issue: https://github.com/codexu/note-gen/issues/799

描述你的建议

功能需求概述

当前 NoteGen 在使用 Git / Gitea 等作为同步后端时,文章(Markdown)同步是以单篇为粒度的:

  • 需要在文章底部点击同步按钮,或者
  • 依赖自动同步在编辑后逐篇上传

对于已经存在于本地工作区里的大量 Markdown 文件,想要「第一次全部上传到远程同步仓库」时,需要一篇一篇手动触发同步,操作成本比较高。

希望增加一个「一键上传当前工作区所有笔记到远程 Git 仓库」的功能,用于首次迁移 / 批量补齐远程数据。


当前行为(Current Behavior)

以 Gitea 为例(其他 Git 平台逻辑类似):

  • 已设置工作区目录后,NoteGen 能正确显示该目录下的 Markdown 文件列表。
  • 已在设置中配置:
    • primaryBackupMethod = gitea
    • Gitea 实例地址、Access Token、自定义同步仓库名等,并通过了仓库检测。
  • 使用 NoteGen 的同步功能时:
    • 标题栏的「上传全部」可以一次性上传:
      • 标签(.data/tags.json
      • 记录 / 聊天数据
      • 配置(.settings/store.json.data/settings.json
    • 但文章正文的同步逻辑在 core/article/custom-footer/sync.tsx 中是「按当前 activeFilePath 同步」:
      • 需要单篇打开文章并触发同步,才会将对应的 Markdown 文件上传到远程仓库。
      • 没有一个入口可以对当前工作区里所有文章批量执行这个同步逻辑。

结果是:

  • 即使工作区里已经有很多本地 Markdown 文件,它们也不会自动出现在远程同步仓库中;
  • 用户需要逐篇打开并同步,或者手动触发自动同步,才能把这些文件一点点推到远端。

期望行为(Expected Behavior)

希望增加一个批量文章同步能力,例如:

  • 在标题栏同步菜单或设置页面中增加一个按钮:
    • 「上传当前工作区所有文章到同步仓库」
  • 功能行为:
    • 扫描当前工作区下符合 NoteGen 识别规则的所有 Markdown 文件(例如与记录关联的 activeFilePath 列表,或工作区内的 .md 文件)。
    • 根据当前 primaryBackupMethod(Github/Gitee/Gitlab/Gitea):
      • 对每个文件复用现有的单篇同步逻辑:
        • 如果远程不存在,则创建新文件;
        • 如果远程存在,则根据 sha 进行更新。
    • 允许在批量同步过程中展示进度 / 简单结果(成功/失败数量)。

这样可以方便用户在以下场景中使用:

  • 首次将本地已有大量 Markdown 笔记迁移到 NoteGen + Git 同步体系下;
  • 在更换同步仓库 / 重置远程仓库后,需要重新推送本地全部内容。

可能的实现思路(Suggestions)

仅作为参考,具体以项目设计为准:

  • 复用 core/article/custom-footer/sync.tsx 中单篇同步的实现:
    • 对多个 activeFilePath 进行循环调用;
    • 或者在工作区层面构建一份需要同步的本地文件列表。
  • 根据现有的 primaryBackupMethod 自动选择对应的上传函数:
    • GitHub:uploadGithubFile
    • Gitee:uploadGiteeFile
    • Gitlab:uploadGitlabFile
    • Gitea:uploadGiteaFile
  • 可以增加一些保护选项,例如:
    • 只上传当前工作区中「已在 NoteGen 中存在记录」的文件;
    • 允许用户选择「仅上传新增文件」或「全部覆盖(按 sha 更新)」;
    • 批量同步时限制并发数,避免一次性 API 请求过多。

环境信息(Environment)

  • 平台:macOS
  • 同步后端:Gitea(自建实例)
  • NoteGen:本地构建的桌面端(Tauri)
  • 已开启工作区功能,文件在客户端列表中可以正常显示
Originally created by @xianggau on GitHub (Dec 17, 2025). Original GitHub issue: https://github.com/codexu/note-gen/issues/799 ### 描述你的建议 ### 功能需求概述 当前 NoteGen 在使用 Git / Gitea 等作为同步后端时,文章(Markdown)同步是**以单篇为粒度**的: - 需要在文章底部点击同步按钮,或者 - 依赖自动同步在编辑后逐篇上传 对于已经存在于本地工作区里的大量 Markdown 文件,想要「第一次全部上传到远程同步仓库」时,需要一篇一篇手动触发同步,操作成本比较高。 希望增加一个「一键上传当前工作区所有笔记到远程 Git 仓库」的功能,用于首次迁移 / 批量补齐远程数据。 --- ### 当前行为(Current Behavior) 以 Gitea 为例(其他 Git 平台逻辑类似): - 已设置工作区目录后,NoteGen 能正确显示该目录下的 Markdown 文件列表。 - 已在设置中配置: - `primaryBackupMethod = gitea` - Gitea 实例地址、Access Token、自定义同步仓库名等,并通过了仓库检测。 - 使用 NoteGen 的同步功能时: - 标题栏的「上传全部」可以一次性上传: - 标签(`.data/tags.json`) - 记录 / 聊天数据 - 配置(`.settings/store.json` 或 `.data/settings.json`) - 但文章正文的同步逻辑在 `core/article/custom-footer/sync.tsx` 中是「按当前 `activeFilePath` 同步」: - 需要单篇打开文章并触发同步,才会将对应的 Markdown 文件上传到远程仓库。 - 没有一个入口可以对当前工作区里所有文章批量执行这个同步逻辑。 结果是: - 即使工作区里已经有很多本地 Markdown 文件,它们也不会自动出现在远程同步仓库中; - 用户需要逐篇打开并同步,或者手动触发自动同步,才能把这些文件一点点推到远端。 --- ### 期望行为(Expected Behavior) 希望增加一个**批量文章同步**能力,例如: - 在标题栏同步菜单或设置页面中增加一个按钮: - 「上传当前工作区所有文章到同步仓库」 - 功能行为: - 扫描当前工作区下符合 NoteGen 识别规则的所有 Markdown 文件(例如与记录关联的 `activeFilePath` 列表,或工作区内的 `.md` 文件)。 - 根据当前 `primaryBackupMethod`(Github/Gitee/Gitlab/Gitea): - 对每个文件复用现有的单篇同步逻辑: - 如果远程不存在,则创建新文件; - 如果远程存在,则根据 `sha` 进行更新。 - 允许在批量同步过程中展示进度 / 简单结果(成功/失败数量)。 这样可以方便用户在以下场景中使用: - 首次将本地已有大量 Markdown 笔记迁移到 NoteGen + Git 同步体系下; - 在更换同步仓库 / 重置远程仓库后,需要重新推送本地全部内容。 --- ### 可能的实现思路(Suggestions) 仅作为参考,具体以项目设计为准: - 复用 `core/article/custom-footer/sync.tsx` 中单篇同步的实现: - 对多个 `activeFilePath` 进行循环调用; - 或者在工作区层面构建一份需要同步的本地文件列表。 - 根据现有的 `primaryBackupMethod` 自动选择对应的上传函数: - GitHub:`uploadGithubFile` - Gitee:`uploadGiteeFile` - Gitlab:`uploadGitlabFile` - Gitea:`uploadGiteaFile` - 可以增加一些保护选项,例如: - 只上传当前工作区中「已在 NoteGen 中存在记录」的文件; - 允许用户选择「仅上传新增文件」或「全部覆盖(按 sha 更新)」; - 批量同步时限制并发数,避免一次性 API 请求过多。 --- ### 环境信息(Environment) - 平台:macOS - 同步后端:Gitea(自建实例) - NoteGen:本地构建的桌面端(Tauri) - 已开启工作区功能,文件在客户端列表中可以正常显示
kerem closed this issue 2026-03-02 03:40:43 +03:00
Author
Owner

@codexu commented on GitHub (Jan 19, 2026):

现在可以在文件夹右键点击同步进行整个文件夹的同步

<!-- gh-comment-id:3767360156 --> @codexu commented on GitHub (Jan 19, 2026): 现在可以在文件夹右键点击同步进行整个文件夹的同步
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/note-gen#594
No description provided.