chore: 补记本机两个仓库/环境坑(Git Bash 缺 cat、.gitignore 的 /_* 规则)
提交多行 message 时用 git commit -F <文件>,不要用 $(cat <<EOF) —— 本机没装 cat, git 会因此认为消息为空并 abort。 根目录以 _ 开头的文件被 .gitignore 的 /_* 静默忽略:临时脚本因此不会污染 git status, 但放错名字的正经文件也会被吞掉。
This commit is contained in:
1 parent
f8e093c98f
commit
450655bebf
1 file changed
+10
-1
@@ -104,10 +104,19 @@ TUI 是纯客户端,同时开放 HTTP + SSE 接口给 AI/脚本调用(服务
|
||||
- Windows 上**文件句柄还开着就 `os.remove()` 会失败**(PermissionError / WinError 32);
|
||||
若被 `except OSError` 吞掉就是静默不生效(`clear_pid_file` 曾因此永远删不掉 pid 文件)。
|
||||
一律"先读完 → 关掉句柄 → 再删"。
|
||||
- Bash 的 coreutils 残缺(`ls`/`head`/`tail`/`grep` 缺失),**不要用管道**,会整条命令失败;
|
||||
- Bash 的 coreutils 残缺(`ls`/`head`/`tail`/`grep`/**`cat`** 缺失),**不要用管道**,会整条命令失败;
|
||||
查看/删除文件一律写 Python 脚本。跑测试也一样:`cd /d/SimpleFarm && uv run python -m unittest ... 2>&1`
|
||||
必须**整条无管道**(`| tail -40` 会让命令直接 127 退出,看起来像"没输出")。
|
||||
PowerShell 跑原生命令的 `*>` 重定向会写成 UTF-16 + 中文乱码,**别用它读输出**。
|
||||
- **写多行 git commit message 不要用 `git commit -m "$(cat <<'EOF' ... EOF)"`**:本机没有 `cat`,
|
||||
会报 `cat: command not found` 然后 git 以为消息为空直接 `Aborting commit due to empty commit message`
|
||||
(此时 `git add -A` 已经成功,暂存区是好的)。正确做法:把消息写进一个文件
|
||||
(用 Write 工具,再 `read_bytes().replace(b"\r\n", b"\n")` 归一化成 LF,避免 CRLF 混进消息),
|
||||
然后 `git commit -F <文件>`,最后删掉它。**注意顺序**:先 `git add -A` 再建消息文件,
|
||||
这样消息文件不会进暂存区(而且见下条,它本来也会被忽略)。
|
||||
- `.gitignore` 里有 **`/_*`**(根目录下划线开头的文件全部忽略):好处是临时补丁脚本
|
||||
(`_splice_app.py`、`_commit_msg.txt` 之类)默认就不会污染 `git status`,跑完删不删都不碍事;
|
||||
代价是**放在根目录、以 `_` 开头的正经文件也会被静默忽略**,要提交就换名字或放子目录。
|
||||
- 环境设了 `HTTP_PROXY` 但没有 `no_proxy`:任何本机 HTTP 访问都要走 `farm/net.py` 的
|
||||
`open_url()`(回环直连),否则会拿到 502 并误判为"服务器没起来"。
|
||||
- Windows 下守护进程的 pid 必须由**服务进程自己**写(见 `farm/server/__main__.py`),
|
||||
|
||||
Reference in new issue
Block a user