Commit 66561978 authored by wenwen.tang's avatar wenwen.tang 😕

docs: 记录 Git 接入、忽略规则与换行策略

- 新增 .workbuddy/memory/2026-10-13.md:远端接入过程、三项取舍、换行踩坑、clone 回环验证
- MEMORY.md 增「版本管理(Git)」节:远端地址、纳入/排除清单、LF 策略与 Dockerfile 约束
parent d635a330
Pipeline #832 canceled with stages
# 2026-10-13 工作日志
## 项目纳入 Git 版本管理
**远端**:`https://git.thiztech.com/accounting/rentos.git`(http 会 301 跳 https)
**首次提交**:`d635a33` —— 143 个文件 / 37,140 行 / 27 MB,分支 `main`,已建立 `origin/main` 跟踪
### 巴特菲拍板的三项取舍
1. **业务数据纳入** —— 台账 `data/tables/rent_parking.json`(85 行 × 36 列)+ 播种 `data/seed/` 一并入库。
今后台账每次改动都可追溯、可回滚,不再只依赖手工快照 `data/_snap/`
2. **`data/config.json` 纳入** —— 含 33 家公司银行账号与登录口令哈希。判定为内网私有仓库可接受:
账号本就印在给租户的通知书上,口令是系统内置默认值(`rentos/auth.py` 即定义处)
3. **`deploy/` 只进必需件** —— Dockerfile + wheels(11M)+ 企微 tgz(5M);
忽略 `_stage/`(构建中间产物 15M)与 `wecom/x/`(tgz 解压产物 11M)
### 忽略规则要点(.gitignore)
- **`data/sessions.json` 必须忽略** —— 内含活跃登录 token
- 运行时状态:`scheduler_state.json` / `send_log.json` / `data/batches/` / `data/attachments/` / `logs/`
- 生成产物:`output/`(例外放行 `output/*.md` 让验收报告归档)、`uploads/`
- 快照与自动备份:`data/_snap/`、`data/tables/.backup/`、`data/tables/retired/.backup/`
- 截图与缓存:`tools/shots*/`、`__pycache__/`、`assets/fonts/_probe.pdf`
### 换行策略(.gitattributes)—— 本轮最实质的坑
- 本机**系统级 `core.autocrlf=true`**(来源 `…/WorkBuddy/resources/vendor/PortableGit/etc/gitconfig`),
且检查发现**项目所有文件原本都是 CRLF**
- 采用 `* text=auto eol=lf`:文本统一以 LF 存储。
**`Dockerfile` 必须 LF** —— 续行符 `\` 若带 `\r` 会被 Linux 构建器解析错误,这是部署侧的真实隐患
- 例外:`*.bat -text`(GBK 编码,保持字节原样)、二进制资源标记 `binary`
- 验证:索引 LF / 工作区 CRLF 时 `git status` 依然干净(走归一化比较),**不会产生假 diff** ——
这点很关键,因为台账会被程序频繁写入
### 一个副作用修复
- `git push -u` 报 `could not lock config file …/PortableGit/etc/gitconfig: File exists`
- 定位:`etc/gitconfig.lock` 是 0 字节残留锁(时间戳正好是推送那一刻);确认无进程持有后清除,
`git fetch` 恢复正常。**该锁会持续干扰后续所有写系统配置的 git 操作**
### 完整性验证(clone 回环)
`git clone` 到临时目录后核对:143 文件、字体 MD5 一致、`start.bat` MD5 逐字节一致(GBK 中文完好)、
`Dockerfile` 为 LF、台账 `git hash-object` 与本地一致(85 行 × 36 列可正常加载)。临时目录已清理。
### 附带发现
`git ls-files` 暴露了 `.租金通知系统-需求确认清单.ref/` 其实是个**目录**(内含 `build.py`),非单文件。
......@@ -195,6 +195,21 @@
(机器人未加入任何群),属正常。
- **注意**:本机和云端各有独立定时器,两边同时跑会重复发送 → 云端当主力,本机用 `start.bat safe`。
## 版本管理(2026-10-13 · Git)
- 远端 `https://git.thiztech.com/accounting/rentos.git`(自建 Gitea;**用 http 会被 301 跳 https**)。
凭据 `wenwen.tang@thizgroup.com` 已存 `credential.helper=store`;分支 `main`;首次提交 `d635a33`
- **纳入**:源码 `rentos/` `web/` `tools/`、模板 `templates/`、样张 `samples/`、字体 `assets/`、
台账 `data/tables/` + 播种 `data/seed/` + `data/config.json`、部署件 `deploy/`(Dockerfile + wheels + 企微 tgz)、
`output/*.md` 验收报告、`.workbuddy/memory/`
- **必须排除**:`data/sessions.json`(**含活跃登录 token**)、`scheduler_state.json`、`send_log.json`、
`data/batches/`、`data/attachments/`、`data/_snap/`、`data/tables/.backup/`、
`output/`(仅放行 `*.md`)、`uploads/`、`logs/`、`deploy/_stage/`、`deploy/wecom/x/`、`tools/shots*/`
- **换行**(`.gitattributes`):`* text=auto eol=lf` —— 文本统一 LF 存储;`*.bat -text` 保持 GBK+CRLF;二进制 `binary`
- 本机系统级 `core.autocrlf=true`(来自 WorkBuddy vendored PortableGit),项目原生文件**全是 CRLF**;
`.gitattributes` 优先级高于 autocrlf,故跨机行为一致
- **Dockerfile 必须 LF** —— 续行符 `\` 带 `\r` 会让 Linux 构建解析错误
- 台账索引 LF / 工作区 CRLF,靠归一化保证 `git status` 干净,**不会假 diff**(程序频繁写台账也不受影响)
## 验证脚本(tools/)
`test_rules.py` `test_scheduler.py` `test_directory.py` `test_rent.py` `test_round5.py`(单元测试,全量 **147 项**)/
`ui_verify.py`(台账+电费录入)/`ui_verify2.py`(设置页+锁定+撤销)/`ui_verify3.py`(自动带入/照明/图片/月度留档)/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment