Skip to content

Commit 56b0053

Browse files
committed
🔧 切换到 HTTPS 同步,零配置部署
- 修改同步脚本使用 HTTPS 克隆公开仓库 - 删除 SSH 密钥相关配置和文档 - 实现真正的零配置自动化同步 - 支持开箱即用的 GitHub Actions - 删除 _notes submodule 依赖 - 集成 dg3 仓库内容到 _notes 目录 - 添加自动同步脚本 sync_notes.py - 配置 GitHub Actions 自动化工作流 - 支持自动添加 frontmatter title 字段 - 支持增量同步和自动删除功能
1 parent 92c0c48 commit 56b0053

File tree

546 files changed

+20491
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

546 files changed

+20491
-1
lines changed

.github/workflows/sync-notes.yml

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
name: 同步数字花园笔记
2+
3+
on:
4+
# 手动触发
5+
workflow_dispatch:
6+
7+
# 定时触发 - 每小时检查一次
8+
schedule:
9+
- cron: '0 * * * *'
10+
11+
# 当同步脚本被修改时触发
12+
push:
13+
paths:
14+
- 'sync_notes.py'
15+
- 'requirements.txt'
16+
- '.github/workflows/sync-notes.yml'
17+
18+
jobs:
19+
sync:
20+
runs-on: ubuntu-latest
21+
22+
steps:
23+
- name: 检出当前仓库
24+
uses: actions/checkout@v4
25+
with:
26+
# 需要完整历史以便提交更改
27+
fetch-depth: 0
28+
# 使用 Personal Access Token 以便推送更改
29+
token: ${{ secrets.GITHUB_TOKEN }}
30+
31+
- name: 设置Python环境
32+
uses: actions/setup-python@v4
33+
with:
34+
python-version: '3.11'
35+
36+
- name: 安装依赖
37+
run: |
38+
pip install --upgrade pip
39+
pip install -r requirements.txt
40+
41+
- name: 配置Git
42+
run: |
43+
git config --global user.name 'GitHub Actions Bot'
44+
git config --global user.email '[email protected]'
45+
46+
- name: 检查源仓库是否有更新
47+
id: check_updates
48+
run: |
49+
# 获取源仓库最新提交时间
50+
LATEST_COMMIT=$(git ls-remote https://github.com/oldwinter/dg3.git HEAD | cut -f1)
51+
echo "latest_commit=$LATEST_COMMIT" >> $GITHUB_OUTPUT
52+
53+
# 检查是否有记录的上次同步提交
54+
if [ -f ".last_sync_commit" ]; then
55+
LAST_SYNC=$(cat .last_sync_commit)
56+
echo "last_sync=$LAST_SYNC" >> $GITHUB_OUTPUT
57+
else
58+
echo "last_sync=" >> $GITHUB_OUTPUT
59+
fi
60+
61+
# 比较提交哈希
62+
if [ "$LATEST_COMMIT" != "$LAST_SYNC" ]; then
63+
echo "需要同步"
64+
echo "needs_sync=true" >> $GITHUB_OUTPUT
65+
else
66+
echo "无需同步"
67+
echo "needs_sync=false" >> $GITHUB_OUTPUT
68+
fi
69+
env:
70+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
71+
72+
73+
74+
- name: 执行同步
75+
if: steps.check_updates.outputs.needs_sync == 'true'
76+
run: |
77+
echo "开始同步笔记..."
78+
python sync_notes.py --verbose
79+
80+
# 记录本次同步的提交哈希
81+
echo "${{ steps.check_updates.outputs.latest_commit }}" > .last_sync_commit
82+
83+
- name: 检查是否有变更
84+
if: steps.check_updates.outputs.needs_sync == 'true'
85+
id: check_changes
86+
run: |
87+
git add .
88+
if git diff --cached --quiet; then
89+
echo "has_changes=false" >> $GITHUB_OUTPUT
90+
echo "没有检测到变更"
91+
else
92+
echo "has_changes=true" >> $GITHUB_OUTPUT
93+
echo "检测到变更"
94+
fi
95+
96+
- name: 提交并推送变更
97+
if: steps.check_updates.outputs.needs_sync == 'true' && steps.check_changes.outputs.has_changes == 'true'
98+
run: |
99+
git commit -m "🤖 自动同步笔记从 dg3 仓库
100+
101+
- 同步时间: $(date -u '+%Y-%m-%d %H:%M:%S UTC')
102+
- 源提交: ${{ steps.check_updates.outputs.latest_commit }}
103+
- 同步文件数: $(find _notes -name '*.md' | wc -l)
104+
"
105+
git push
106+
107+
- name: 输出同步结果
108+
run: |
109+
if [ "${{ steps.check_updates.outputs.needs_sync }}" == "true" ]; then
110+
if [ "${{ steps.check_changes.outputs.has_changes }}" == "true" ]; then
111+
echo "✅ 同步完成并推送了变更"
112+
else
113+
echo "✅ 同步完成但没有变更"
114+
fi
115+
else
116+
echo "ℹ️ 源仓库无更新,跳过同步"
117+
fi

SYNC_README.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# 数字花园笔记自动同步
2+
3+
这个系统可以自动从 `https://github.com/oldwinter/dg3.git` 仓库的 `content` 目录同步内容到当前仓库的 `_notes` 目录,并自动处理frontmatter添加title字段。
4+
5+
## 功能特性
6+
7+
- ✅ 自动克隆源仓库获取最新内容
8+
- ✅ 批量处理markdown文件,自动添加title字段到frontmatter
9+
- ✅ 支持JSON和YAML格式的frontmatter
10+
- ✅ 保持现有title字段不变,仅为缺失title的文件添加
11+
- ✅ 自动检测源仓库更新,避免重复同步
12+
- ✅ GitHub Actions自动化工作流
13+
- ✅ 完整的日志记录和错误处理
14+
15+
## 本地使用
16+
17+
### 1. 安装依赖
18+
19+
```bash
20+
pip install -r requirements.txt
21+
```
22+
23+
### 2. 手动执行同步
24+
25+
```bash
26+
# 基本同步
27+
python sync_notes.py
28+
29+
# 详细日志输出
30+
python sync_notes.py --verbose
31+
32+
# 自定义源仓库和目标目录
33+
python sync_notes.py --source https://github.com/your-repo.git --target custom_notes
34+
```
35+
36+
### 3. 脚本参数
37+
38+
- `--source`: 源仓库地址 (默认: `https://github.com/oldwinter/dg3.git`)
39+
- `--target`: 目标目录 (默认: `_notes`)
40+
- `--verbose` / `-v`: 启用详细日志输出
41+
42+
## 自动化部署
43+
44+
### GitHub Actions 配置
45+
46+
本系统包含了完整的 GitHub Actions 工作流配置 (`.github/workflows/sync-notes.yml`),支持:
47+
48+
1. **定时同步**: 每小时自动检查源仓库更新
49+
2. **手动触发**: 在GitHub Actions页面手动运行
50+
3. **代码变更触发**: 当同步脚本或配置文件更改时自动运行
51+
52+
### 配置要求
53+
54+
**🎉 零配置!** 由于源仓库是公开的,无需任何额外配置:
55+
56+
- ✅ 使用 HTTPS 克隆,无需 SSH 密钥
57+
- ✅ GitHub Actions 自动使用内置 GITHUB_TOKEN
58+
- ✅ 开箱即用,推送后立即生效
59+
60+
## 工作原理
61+
62+
### 1. 同步流程
63+
64+
1. **检查更新**: 获取源仓库最新commit hash,与上次同步记录比较
65+
2. **克隆源仓库**: 使用shallow clone减少下载时间
66+
3. **处理文件**:
67+
- 对所有`.md`文件解析frontmatter
68+
- 为缺失title字段的文件从文件名生成title
69+
- 支持JSON和YAML两种frontmatter格式
70+
4. **同步内容**: 将处理后的文件复制到目标目录
71+
5. **提交变更**: 自动提交并推送到当前仓库
72+
73+
### 2. Title生成规则
74+
75+
- 使用文件名(去除扩展名)作为基础title
76+
- 移除特殊前缀字符: `∑»§_` 和数字、日期前缀
77+
- 保持现有title字段不变
78+
- 如果清理后为空,使用原始文件名
79+
80+
### 3. 安全特性
81+
82+
- 使用临时目录,自动清理
83+
- 完整的错误处理和日志记录
84+
- 仅在检测到实际变更时才提交
85+
- 支持增量同步,避免重复工作
86+
87+
## 目录结构
88+
89+
同步后的目录结构会保持源仓库的组织方式:
90+
91+
```
92+
_notes/
93+
├── 📥 Inbox/
94+
├── 🍀 花园导览/
95+
├── 🍀 Garden Tour/
96+
├── Spaces/
97+
├── Sources/
98+
├── Extras/
99+
├── Cards/
100+
├── Calendar/
101+
├── Atlas/
102+
└── 其他文件...
103+
```
104+
105+
## 故障排除
106+
107+
### 常见问题
108+
109+
1. **Python依赖问题**
110+
- 使用 `pip install -r requirements.txt` 安装依赖
111+
- 确保Python版本 >= 3.8
112+
113+
2. **Git权限问题**
114+
- 确保GitHub Token有仓库写入权限
115+
- 检查工作流权限设置
116+
117+
3. **网络连接问题**
118+
- 检查是否能访问 GitHub
119+
- 确认源仓库地址正确
120+
121+
### 调试步骤
122+
123+
1. 查看GitHub Actions运行日志
124+
2. 本地运行 `python sync_notes.py --verbose` 获取详细输出
125+
3. 检查 `.last_sync_commit` 文件内容
126+
4. 验证网络连接和仓库地址
127+
128+
## 定制化
129+
130+
### 修改同步频率
131+
132+
`.github/workflows/sync-notes.yml` 中修改 cron 表达式:
133+
134+
```yaml
135+
schedule:
136+
- cron: '0 */6 * * *' # 每6小时同步一次
137+
```
138+
139+
### 修改Title生成规则
140+
141+
`sync_notes.py` 的 `get_title_from_filename` 方法中自定义规则。
142+
143+
### 添加文件过滤
144+
145+
在 `sync_content` 方法中添加文件过滤逻辑,跳过特定文件或目录。

_notes

Submodule _notes deleted from 15804bb

_notes/AboutTheGarden.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
created: '2022-08-06'
3+
cssclasses: ''
4+
description: 上面这些字段,大多是为了适配第三方发布方案,如hugo和jekyll。
5+
modified: '2024-10-23'
6+
permalink: /AboutTheGarden.md
7+
publish: true
8+
published: '2025-07-08T14:05:33.272+08:00'
9+
tags:
10+
- 本库教程
11+
title: AboutTheGarden
12+
---
13+
hello 👋,我是 oldwinter ❄️,一个云计算工程师,写过几万行代码,带过十几人团队。
14+
15+
这里是一座「全开放式,每日更新」的 [[Spaces/2-Area/数字花园建设与维护/数字花园]],由原子化的 [[Spaces/2-Area/知识管理/卡片笔记]] 编织而成。目前主要在浇灌这几个领域 ⭕:
16+
17+
- [[🍀 花园导览/🧰 本库指南/🧰 本库使用指南]]
18+
- [[🍀 花园导览/🏋 如何保持健康]]
19+
- [[🍀 花园导览/🧀 个人知识管理]]
20+
- [[🍀 花园导览/🔧 如何用好AI工具]]
21+
- [[🍀 花园导览/🗜 效率工具使用]]
22+
23+
既然你诚心诚意地,闯入了我的花园,那我就大发慈悲地,给你一张地图:[[🍀 花园导览/🍀 花园导览\|🍀 花园导览]]
24+
25+
开个玩笑,客官莫怪 😂。虽然有导览,但这绝不是传统的博客,这是我 [[Spaces/2-Area/思维工具与模块/思考的过程容器]],所以可能有很多看起来令人费解的半成品内容,也会颠覆你传统的长文阅读习惯。当您漫步花园时,这里有 2 个不成熟的小建议 💁:
26+
27+
- 尽量通过鼠标悬浮预览进行 [[Cards/上下文]] 不中断的阅读。
28+
- 尽量通过底部 [[Cards/反向链接]] 找回来时的路。
29+
30+
这座数字花园使用 [[Spaces/3-Resource/软件梳理/macos软件/Obsidian]] 写作和发布,且毫无保留地**开源**,这里是 [[README]],这里是项目地址:[GitHub - oldwinter/knowledge-garden](https://github.com/oldwinter/knowledge-garden)
31+
32+
这座花园里,我挖了很多坑 🕳,如果你想敦促我加速填坑,或有一些建议和问题,欢迎来 [Github Discussions](https://github.com/oldwinter/knowledge-garden/discussions)。或直接在下方自带的评论系统留言。如果方便的话,给个 star⭐️ 呗。
33+
34+
最后,如果您发现了令人不适的内容,或我的个人隐私,请告知我,万分感谢 🦀🦀: [email protected]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
created: '2023-03-01'
3+
cssclasses: ''
4+
modified: '2025-07-09'
5+
permalink: /Atlas/Bases/_ About Bases.md
6+
publish: true
7+
published: '2025-07-09T15:03:59.715+08:00'
8+
tags:
9+
- 本库教程
10+
title: About DB folders
11+
---
12+
相比于dataview,可以批量编辑,具备更好的灵活度。且性能非常强,再也不会像dataview一样,偶尔打开某个页面直接卡死,被硬控10秒。
13+
14+
相比于markdown 表格,编辑更方便,但每行数据都需要创建一个md文件,且失去了该文件的反向链接数据。
15+
16+
obsidian最鼓励的用法依旧是link为主,让思维自由的漫步。当频繁地使用base,要警惕一下,失去自由漫步的笔记效果,转而追求这种过度的结构化,并不一定可取。
17+
18+
[[电影管理.base]]这种明显的资源标签特征,使用base管理倒是没有争议的。

_notes/Atlas/Bases/∑ BASE.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
aliases: Bases
3+
created: '2025-05-22'
4+
cssclasses: ''
5+
modified: '2025-06-06'
6+
permalink: /Atlas/Bases/∑ BASE.md
7+
publish: true
8+
published: '2025-07-09T18:42:31.701+08:00'
9+
title: BASE
10+
---
11+
## 模板文件
12+
13+
放到不同文件夹,会有不同表现。
14+
15+
##
16+
17+
18+
[[∑ All Bases.base]]
19+
20+
## 模板汇总
21+
22+
# 分类汇总
23+
24+
##
25+
26+
- [[∑ All Bases.base]]
27+
28+
##
29+
30+
- [[电视剧管理.base]]
31+
- [[电影管理.base]]
32+
- [[微信读书管理.base]]
33+
34+
##
35+
36+
- [[密码管理.base]]
37+
- [[Snippets管理.base]]
38+
- [[prompts管理.base]]
39+
40+
##
41+
42+
- [[全库ob文件.base]]
43+
- [[全库资源文件.base]]
44+
- [[icon list.base]]
45+
- [[canvas管理.base]]
46+
- [[定期回顾和计划review.base]]
47+
- [[todo list.base]]
48+
49+
## 剪藏管理
50+
51+
- [[cubox管理.base]]
52+
- [[webclipping and cubox.base]]
53+
- [[wucai剪藏管理.base]]
54+
55+
## 软件、产品、插件
56+
57+
- [[App软件管理.base]]
58+
- [[好用网站管理.base]]
59+
- [[AI 产品和公司.base]]
60+
- [[Obsidian插件.base]]
61+
- [[vscode插件.base]]
62+
- [[chrome插件.base]]
63+
64+
## PARA
65+
66+
- [[📥 Inbox.base]]
67+
- [[Resources.base]]
68+
- [[Achieve.base]]
69+
- [[Areas.base]]
70+
- [[Projects.base]]
71+
72+
73+
##
74+
75+
[[Cards/base 使用技巧]]

0 commit comments

Comments
 (0)