工作流全部迁到 WSL:编辑、编译、提交、工单都在 WSL 内完成 #21

Closed
opened 2026-10-29 13:50:23 +00:00 by laoyang · 1 comment
Owner

工作流全部迁到 WSL:编辑、编译、提交、工单都在 WSL 内完成

用户诉求

用户原话:「不要。我希望全部在 wsl 完成。因为现在有点乱,我之所以希望在
wsl 完成,是因为现在工作太多,弄的我的 windows 很乱,wsl 类似一个虚拟环境,
不会影响我的 windows 系统,如果有问题,可以很容易重置,所以我才希望全部
在 wsl 完成。你需要想想办法,把工作全部放在 wsl 上。」

现状问题(用户说的「乱」)

之前的分工是「Windows 改代码 + 两边都编」:

  • Windows 侧留一份仓库副本,编译产生 .aux/.log/.toc/.pdf 全部落在那
  • WSL 侧另有一份,靠 scp / git pull 同步
  • 两端内容一致靠人工同步维持,一旦漏同步就分叉

这是「乱」的根源:同一个项目两份工作副本,中间文件散落。

目标

  • 唯一工作副本在 WSL:~/code/ouc_latex_template
  • 编辑、编译、查看、git 提交、提工单,全部在 WSL 内完成
  • Windows 侧只保留「只读浏览」能力(通过 \\wsl$\... UNC 路径)
  • Windows 侧不再保留仓库副本

技术可行性(已实测)

1. UNC 路径能双向读写 WSL 文件

发行版名是 Ubuntu-26.04(不是常见的 Ubuntu / Ubuntu-22.04,需注意)。

\\wsl$\Ubuntu-26.04\home\yongquan\code\ouc_latex_template

实测 Read / Write / Edit 三个文件操作工具都能直接作用于该路径,
写入内容在 WSL 侧 cat 得到验证。延迟:读 63ms / 列目录 49ms / 写 6ms。

⇒ 不需要「本地编辑 → scp 同步」这套中间环节。

2. WSL 内 TeX 可完整编译全库

bash build.sh all → 13/13 通过,0 失败。
页数与 Windows 侧历史记录逐个一致。

3. WSL 内 git 可直接推送

git 已配 user.name/email,credential.helper=store 指向
~/.git-credentials(含 token),git fetch 实测通过。

4. 工单工具可迁

gi.py 是纯标准库脚本,无第三方依赖。整体复制到
~/.local/bin/gi.py,配置复制到 ~/.config/ouc-latex/gitea.json
(chmod 600),gi whoami 实测通过。

5. Python 分析依赖

建独立 venv ~/.venv-latex,装了 pymupdf 2.0 + fonttools 4.68.0。
不污染系统 Python。PDF 字体核对、几何测量等脚本改用它。

实现内容

新增 WORKFLOW.md

完整说明:为什么在 WSL、目录位置(含 UNC 路径)、日常命令、
编辑方式、PDF 不提交的原因、已知告警清单、环境重建步骤。

重写 build.sh 为 WSL 原生版

原版是「Windows 侧通过 ssh 远程调 WSL 编译,再 scp 取回 PDF」,
在 WSL 内跑没意义。新版:

  • 去掉全部 ssh/scp,直接本地编译
  • 两遍编译(交叉引用需要第二遍稳定)
  • 自动 cd 到模板目录(.sty 的 ../fonts/ 是相对编译目录解析的)
  • 目录→主文件映射保留(幻灯片/slides、科技报告/report、试卷有两个主文件)
  • all 转给 verify_all.sh
  • SILENT=1 输出紧凑表格,便于脚本消费

WSL 侧环境固化(不入库,属于个人环境)

  • ~/.config/ouc-latex/env.sh —— 固定 OUC_PY / GI / WB_GITEA_CONFIG /
    OUC_REPO,提供 gi / ouccd / texbuild 别名
  • ~/.bashrc 末尾 source 该文件

Windows 侧清理

  • 备份:D:\Yongquan\backup\ouc_latex_template-win-backup-20261029.tar.gz
    (49MB,244 项,不含 .git)
  • 删除前已确认:两端 HEAD 均为 fb7c76b,无未推送提交、无 stash

验收标准

  1. WSL 内 bash build.sh all → 13/13 通过
  2. WSL 内 gi whoami → token 有效、仓库识别为 ouc_latex_template
  3. WSL 内 git push → 成功
  4. Windows 通过 UNC 路径能打开 WSL 里的 PDF
  5. WORKFLOW.md 写清全部路径与命令
  6. Windows 侧仓库副本删除,备份已存

不做

  • 不给 Windows 装第二套 TeX 工具链
  • 不改 Windows 的 git 配置
  • 不动 WSL 里已有的其他项目
  • Windows 上的 TeX Live 2022 保留(仅作兼容性抽检用,非主编译环境)
工作流全部迁到 WSL:编辑、编译、提交、工单都在 WSL 内完成 ## 用户诉求 用户原话:「不要。我希望全部在 wsl 完成。因为现在有点乱,我之所以希望在 wsl 完成,是因为现在工作太多,弄的我的 windows 很乱,wsl 类似一个虚拟环境, 不会影响我的 windows 系统,如果有问题,可以很容易重置,所以我才希望全部 在 wsl 完成。你需要想想办法,把工作全部放在 wsl 上。」 ## 现状问题(用户说的「乱」) 之前的分工是「Windows 改代码 + 两边都编」: - Windows 侧留一份仓库副本,编译产生 .aux/.log/.toc/.pdf 全部落在那 - WSL 侧另有一份,靠 scp / git pull 同步 - 两端内容一致靠人工同步维持,一旦漏同步就分叉 这是「乱」的根源:同一个项目两份工作副本,中间文件散落。 ## 目标 - 唯一工作副本在 WSL:`~/code/ouc_latex_template` - 编辑、编译、查看、git 提交、提工单,全部在 WSL 内完成 - Windows 侧只保留「只读浏览」能力(通过 `\\wsl$\...` UNC 路径) - Windows 侧不再保留仓库副本 ## 技术可行性(已实测) ### 1. UNC 路径能双向读写 WSL 文件 发行版名是 **Ubuntu-26.04**(不是常见的 Ubuntu / Ubuntu-22.04,需注意)。 ``` \\wsl$\Ubuntu-26.04\home\yongquan\code\ouc_latex_template ``` 实测 Read / Write / Edit 三个文件操作工具都能直接作用于该路径, 写入内容在 WSL 侧 `cat` 得到验证。延迟:读 63ms / 列目录 49ms / 写 6ms。 ⇒ 不需要「本地编辑 → scp 同步」这套中间环节。 ### 2. WSL 内 TeX 可完整编译全库 `bash build.sh all` → **13/13 通过,0 失败**。 页数与 Windows 侧历史记录逐个一致。 ### 3. WSL 内 git 可直接推送 git 已配 user.name/email,`credential.helper=store` 指向 `~/.git-credentials`(含 token),`git fetch` 实测通过。 ### 4. 工单工具可迁 `gi.py` 是纯标准库脚本,无第三方依赖。整体复制到 `~/.local/bin/gi.py`,配置复制到 `~/.config/ouc-latex/gitea.json` (chmod 600),`gi whoami` 实测通过。 ### 5. Python 分析依赖 建独立 venv `~/.venv-latex`,装了 pymupdf 2.0 + fonttools 4.68.0。 不污染系统 Python。PDF 字体核对、几何测量等脚本改用它。 ## 实现内容 ### 新增 `WORKFLOW.md` 完整说明:为什么在 WSL、目录位置(含 UNC 路径)、日常命令、 编辑方式、PDF 不提交的原因、已知告警清单、环境重建步骤。 ### 重写 `build.sh` 为 WSL 原生版 原版是「Windows 侧通过 ssh 远程调 WSL 编译,再 scp 取回 PDF」, 在 WSL 内跑没意义。新版: - 去掉全部 ssh/scp,直接本地编译 - 两遍编译(交叉引用需要第二遍稳定) - 自动 cd 到模板目录(`.sty` 的 `../fonts/` 是相对编译目录解析的) - 目录→主文件映射保留(幻灯片/slides、科技报告/report、试卷有两个主文件) - `all` 转给 `verify_all.sh` - `SILENT=1` 输出紧凑表格,便于脚本消费 ### WSL 侧环境固化(不入库,属于个人环境) - `~/.config/ouc-latex/env.sh` —— 固定 OUC_PY / GI / WB_GITEA_CONFIG / OUC_REPO,提供 `gi` / `ouccd` / `texbuild` 别名 - `~/.bashrc` 末尾 source 该文件 ### Windows 侧清理 - 备份:`D:\Yongquan\backup\ouc_latex_template-win-backup-20261029.tar.gz` (49MB,244 项,不含 .git) - 删除前已确认:两端 HEAD 均为 `fb7c76b`,无未推送提交、无 stash ## 验收标准 1. WSL 内 `bash build.sh all` → 13/13 通过 2. WSL 内 `gi whoami` → token 有效、仓库识别为 ouc_latex_template 3. WSL 内 `git push` → 成功 4. Windows 通过 UNC 路径能打开 WSL 里的 PDF 5. `WORKFLOW.md` 写清全部路径与命令 6. Windows 侧仓库副本删除,备份已存 ## 不做 - 不给 Windows 装第二套 TeX 工具链 - 不改 Windows 的 git 配置 - 不动 WSL 里已有的其他项目 - Windows 上的 TeX Live 2022 保留(仅作兼容性抽检用,非主编译环境)
Author
Owner

已完成,提交 6819d78(全程在 WSL 内完成)

核心结论:全部可行,不需要妥协

环节 原来在哪 现在在哪
编辑文件 Windows WSL(UNC 路径直读直写)
编译 Windows + WSL 双跑 仅 WSL
查 PDF 字体/几何 Windows Python WSL venv
git 提交推送 Windows WSL
提工单/关单 Windows gi.py WSL gi

本工单 #21 本身就是在 WSL 内用 gi 建的,随后在 WSL 内 commit、push,
全程没碰 Windows 侧的命令行。工具链已实证。

关键技术前提(都实测过,不是推断)

1. UNC 路径双向读写 —— 这是方案成立的基础

\\wsl$\Ubuntu-26.04\home\yongquan\code\ouc_latex_template

Read / Write / Edit 三个文件工具都能直接作用于该路径。写入后
WSL 侧 cat 得到正确内容。延迟:读 63ms / 列目录 49ms / 写 6ms。
⇒ 不需要「Windows 编辑 → scp 同步到 WSL」这套中间环节。

⚠️ 发行版名是 Ubuntu-26.04,不是常见的 Ubuntu 或 Ubuntu-22.04。
UNC 路径写错名字会整个目录不存在。用 wsl -l -v 查当前名。

2. WSL 内 TeX 完整可用 —— bash build.sh all → 13/13 通过,0 失败

3. WSL 内 git 可直接推送 —— credential.helper=store 已指向
含 token 的 ~/.git-credentials,fetch/push 实测通过

4. gi.py 可迁 —— 纯标准库(argparse/io/json/os/re/subprocess/sys/
urllib),无第三方依赖,复制即用

5. Python 依赖 —— 建独立 venv ~/.venv-latex,
装 pymupdf 2.0 + fonttools 4.68.0,不污染系统 Python

改动

新增 WORKFLOW.md
为什么在 WSL、目录位置(含 UNC 路径)、日常命令、编辑方式、
PDF 不进版本库的原因、已知告警清单、环境重建步骤。

build.sh 重写为 WSL 原生
原版是「Windows 通过 ssh 远程调 WSL 编译,再 scp 取回 PDF」,
在 WSL 内跑毫无意义。新版去掉全部 ssh/scp,改为直接本地编译:

  • 两遍编译(目录/页码/LastPage 跨引用第二遍才稳定)
  • 自动 cd 到模板目录(.sty 的 ../fonts/ 相对编译目录解析)
  • 目录→主文件映射保留(幻灯片/slides、科技报告/report、
    试卷有两个主文件须显式指定、简历不能拿 ls 第一个 .tex)
  • all 转给 verify_all.sh
  • 新增 SILENT=1 输出紧凑表格
  • 找不到目录时列出可选项,不用翻源码

WSL 侧环境(不入库,属个人配置)

  • ~/.config/ouc-latex/env.sh 固定 OUC_PY / GI / WB_GITEA_CONFIG /
    OUC_REPO,提供 gi / ouccd / texbuild 别名
  • ~/.bashrc 末尾 source
  • ~/.local/bin/gi.py + ~/.config/ouc-latex/gitea.json(chmod 600)

验证:WSL 内全库编译

总数 13 | 通过 13 | 失败 0
模板 页 err OF UF
劳务发放说明表 1 0 0 0
年度考核登记表 2 0 0 0
幻灯片 30 0 0 1
成绩构成说明 1 0 0 0
特殊事项说明表 1 0 0 0
科技报告 10 0 0 4
简历 3 0 0 0
试卷题型示例 6 0 0 0
参考答案与评分标准 3 0 0 0
试卷归档封面 1 0 0 0
试卷归档目录 1 0 0 0
课程执行大纲 5 0 1 0
课程教学日历 2 0 0 0

页数与 Windows 侧历史记录逐个一致。3 处告警均为既有问题,非回归。

Windows 侧清理

备份:D:\Yongquan\backup\ouc_latex_template-win-backup-20261029.tar.gz
(49MB / 244 项 / 不含 .git)

删除前已确认:两端 HEAD 均为 fb7c76b、无未推送提交、无 stash。
备份保留不删。

日常怎么用

# 从 Windows 连进 WSL
wsl

# 进仓库
ouccd

# 编译(自动两遍)
bash build.sh 试卷 试卷题型示例

# 全库
bash build.sh all

# 提工单 / 关单
gi context
gi new --title-file /tmp/t.md --body-file /tmp/req.md
gi close 21 --comment-file /tmp/done.md

Windows 上想看 PDF:直接双击
\\wsl$\Ubuntu-26.04\home\yongquan\code\ouc_latex_template\试卷\试卷题型示例.pdf

## 已完成,提交 `6819d78`(全程在 WSL 内完成) ### 核心结论:全部可行,不需要妥协 | 环节 | 原来在哪 | 现在在哪 | |---|---|---| | 编辑文件 | Windows | **WSL**(UNC 路径直读直写) | | 编译 | Windows + WSL 双跑 | **仅 WSL** | | 查 PDF 字体/几何 | Windows Python | **WSL venv** | | git 提交推送 | Windows | **WSL** | | 提工单/关单 | Windows `gi.py` | **WSL `gi`** | 本工单 #21 本身就是在 WSL 内用 `gi` 建的,随后在 WSL 内 commit、push, 全程没碰 Windows 侧的命令行。工具链已实证。 ### 关键技术前提(都实测过,不是推断) **1. UNC 路径双向读写** —— 这是方案成立的基础 ``` \\wsl$\Ubuntu-26.04\home\yongquan\code\ouc_latex_template ``` Read / Write / Edit 三个文件工具都能直接作用于该路径。写入后 WSL 侧 `cat` 得到正确内容。延迟:读 63ms / 列目录 49ms / 写 6ms。 ⇒ 不需要「Windows 编辑 → scp 同步到 WSL」这套中间环节。 ⚠️ **发行版名是 `Ubuntu-26.04`**,不是常见的 `Ubuntu` 或 `Ubuntu-22.04`。 UNC 路径写错名字会整个目录不存在。用 `wsl -l -v` 查当前名。 **2. WSL 内 TeX 完整可用** —— `bash build.sh all` → **13/13 通过,0 失败** **3. WSL 内 git 可直接推送** —— `credential.helper=store` 已指向 含 token 的 `~/.git-credentials`,fetch/push 实测通过 **4. gi.py 可迁** —— 纯标准库(argparse/io/json/os/re/subprocess/sys/ urllib),无第三方依赖,复制即用 **5. Python 依赖** —— 建独立 venv `~/.venv-latex`, 装 pymupdf 2.0 + fonttools 4.68.0,不污染系统 Python ### 改动 **新增 `WORKFLOW.md`** 为什么在 WSL、目录位置(含 UNC 路径)、日常命令、编辑方式、 PDF 不进版本库的原因、已知告警清单、环境重建步骤。 **`build.sh` 重写为 WSL 原生** 原版是「Windows 通过 ssh 远程调 WSL 编译,再 scp 取回 PDF」, 在 WSL 内跑毫无意义。新版去掉全部 ssh/scp,改为直接本地编译: - 两遍编译(目录/页码/LastPage 跨引用第二遍才稳定) - 自动 cd 到模板目录(`.sty` 的 `../fonts/` 相对编译目录解析) - 目录→主文件映射保留(幻灯片/slides、科技报告/report、 试卷有两个主文件须显式指定、简历不能拿 ls 第一个 .tex) - `all` 转给 `verify_all.sh` - 新增 `SILENT=1` 输出紧凑表格 - 找不到目录时列出可选项,不用翻源码 **WSL 侧环境(不入库,属个人配置)** - `~/.config/ouc-latex/env.sh` 固定 OUC_PY / GI / WB_GITEA_CONFIG / OUC_REPO,提供 `gi` / `ouccd` / `texbuild` 别名 - `~/.bashrc` 末尾 source - `~/.local/bin/gi.py` + `~/.config/ouc-latex/gitea.json`(chmod 600) ### 验证:WSL 内全库编译 ``` 总数 13 | 通过 13 | 失败 0 ``` | 模板 | 页 | err | OF | UF | |---|---|---|---|---| | 劳务发放说明表 | 1 | 0 | 0 | 0 | | 年度考核登记表 | 2 | 0 | 0 | 0 | | 幻灯片 | 30 | 0 | 0 | 1 | | 成绩构成说明 | 1 | 0 | 0 | 0 | | 特殊事项说明表 | 1 | 0 | 0 | 0 | | 科技报告 | 10 | 0 | 0 | 4 | | 简历 | 3 | 0 | 0 | 0 | | 试卷题型示例 | 6 | 0 | 0 | 0 | | 参考答案与评分标准 | 3 | 0 | 0 | 0 | | 试卷归档封面 | 1 | 0 | 0 | 0 | | 试卷归档目录 | 1 | 0 | 0 | 0 | | 课程执行大纲 | 5 | 0 | 1 | 0 | | 课程教学日历 | 2 | 0 | 0 | 0 | 页数与 Windows 侧历史记录**逐个一致**。3 处告警均为既有问题,非回归。 ### Windows 侧清理 备份:`D:\Yongquan\backup\ouc_latex_template-win-backup-20261029.tar.gz` (49MB / 244 项 / 不含 .git) 删除前已确认:两端 HEAD 均为 `fb7c76b`、无未推送提交、无 stash。 备份保留不删。 ### 日常怎么用 ```bash # 从 Windows 连进 WSL wsl # 进仓库 ouccd # 编译(自动两遍) bash build.sh 试卷 试卷题型示例 # 全库 bash build.sh all # 提工单 / 关单 gi context gi new --title-file /tmp/t.md --body-file /tmp/req.md gi close 21 --comment-file /tmp/done.md ``` Windows 上想看 PDF:直接双击 `\\wsl$\Ubuntu-26.04\home\yongquan\code\ouc_latex_template\试卷\试卷题型示例.pdf`
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/ouc_latex_template#21