diff --git a/.gitignore b/.gitignore index b5b8299..d09b88b 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,8 @@ __pycache__/ # 本地凭据与一次性状态(测试账号密码等),只留在本机,不进版本库。 # 目录说明见 .workbuddy/local/test-accounts.md 的抬头注释。 /.workbuddy/local/ + +# WSL 测试环境的 app.ini 模板:含数据库密码与对象存储密钥,绝不能进版本库。 +# 用法见 dev/sync-wsl.sh(同步时必须排除 conf/app.ini,否则会被 rsync --delete 删掉)。 +/dev/wsl-app.ini +/dev/_*.py diff --git a/dev/sync-wsl.sh b/dev/sync-wsl.sh new file mode 100644 index 0000000..da06532 --- /dev/null +++ b/dev/sync-wsl.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# 把 Windows 侧工作区同步到 WSL 里的测试部署目录。 +# +# 为什么不能直接 rsync --delete:WSL 侧有几份「只存在于目标机」的文件, +# 源目录里没有它们,--delete 会把它们当多余文件删掉: +# - conf/app.ini 本地测试配置(数据库密码、对象存储密钥;模板见 dev/wsl-app.ini) +# 第一次踩这个坑时整份 app.ini 被删,服务器重启后起不来。 +# +# 用法:在仓库根目录执行 +# bash dev/sync-wsl.sh +set -euo pipefail + +SRC="$(cd "$(dirname "$0")/.." && pwd)" +DST=/home/tamakyi/tb/src + +cd "$SRC" +tar -cf - \ + --exclude=.git \ + --exclude=outputs \ + --exclude=.workbuddy \ + . 2>/dev/null | + wsl -d Debian -e bash -c ' + set -e + DST=/home/tamakyi/tb/src + rm -rf /tmp/tbsync && mkdir -p /tmp/tbsync + tar -xf - -C /tmp/tbsync + # 只同步代码与资源,绝不动目标侧的 conf/app.ini + rsync -a --delete --exclude "conf/app.ini" /tmp/tbsync/ "$DST"/ + rm -rf /tmp/tbsync + echo "SYNCED -> $DST" + ' diff --git a/templates/base/footer.html b/templates/base/footer.html index 65e4309..3aee437 100644 --- a/templates/base/footer.html +++ b/templates/base/footer.html @@ -122,5 +122,191 @@ // bfcache 还原时复位按钮 window.addEventListener('pageshow', tbResetSubmitButtons); + +