这单的目标很明确:CI/批量场景里并行跑得多时,默认只保留 10 份命令日志不够用,希望能用环境变量把这个上限调大。
- Issue: pypa/pipx#1570
- PR: pypa/pipx#1715
🔍 分析 (Analyze)
pipx 会为每次命令执行写一份日志(log dir 下的 cmd_*.log / cmd_*_pip_errors.log)。默认保留数量是硬编码的 10,在并发/频繁调用场景下不够灵活。
理想的形态是:默认行为不变,但允许通过环境变量覆盖。
📍 定位 (Locate)
日志文件创建与清理逻辑:
src/pipx/main.py(_setup_log_file)
pipx environment 输出的环境变量列表:
src/pipx/commands/environment.py
🛠️ 执行 (Execute)
做法是最小增量改动:
- 增加
MAX_PIPX_LOGS(默认 10),用于控制清理时的保留数量; - 在
--help文案和pipx environment输出中补齐该变量; - 增加单测,覆盖:
MAX_PIPX_LOGS=42时,清理函数收到的keep_number为 42;MAX_PIPX_LOGS非法值时回退到默认 10。
验证命令(定向):
.venv/bin/python -m pytest --net-pypiserver tests/test_main.py tests/test_environment.py -k "setup_log_file_max_logs or test_cli"
✅ 总结 (Summary)
这种“可配置但默认不变”的小改动通常比较容易被合并:
- 不影响现有用户(默认仍为 10);
- 改动点集中、回归风险低;
- 单测锁定了核心行为,review 成本低。