feat(raw-commit): implement raw file quiet window for ingest
This commit is contained in:
parent
bf657c3708
commit
eed2251c28
1 changed files with 23 additions and 1 deletions
|
|
@ -43,8 +43,30 @@ grep -qxF 'raw/.stfolder' "${vault}/.git/info/exclude" 2>/dev/null || echo 'raw/
|
||||||
|
|
||||||
git add -A -- raw/
|
git add -A -- raw/
|
||||||
git reset -q -- raw/.stignore raw/.stfolder 2>/dev/null || true
|
git reset -q -- raw/.stignore raw/.stfolder 2>/dev/null || true
|
||||||
|
|
||||||
|
# --- Quiet window: only commit raw files that have STOPPED changing. ----------------
|
||||||
|
# While a note is being written (Obsidian autosave -> Syncthing -> here) its mtime stays
|
||||||
|
# fresh; we leave it UNSTAGED so a half-written note never triggers an ingest. A file is
|
||||||
|
# committed only after it has been still for RAW_QUIET_MINUTES. Deletions (nothing on disk)
|
||||||
|
# are stable by definition and pass straight through. Deterministic — no model in the loop.
|
||||||
|
quiet_min="${RAW_QUIET_MINUTES:-2}"
|
||||||
|
held=0
|
||||||
|
while IFS= read -r f; do
|
||||||
|
[[ -z "$f" ]] && continue
|
||||||
|
# Only an existing file can be "hot"; a staged deletion has nothing on disk to settle.
|
||||||
|
if [[ -e "$f" && -n "$(find "$f" -mmin -"$quiet_min" 2>/dev/null)" ]]; then
|
||||||
|
git reset -q -- "$f" 2>/dev/null || true
|
||||||
|
held=$((held+1))
|
||||||
|
fi
|
||||||
|
done < <(git diff --cached --name-only -- raw/)
|
||||||
|
|
||||||
if git diff --cached --quiet; then
|
if git diff --cached --quiet; then
|
||||||
printf '{"status":"noop","genome":"%s"}\n' "$genome"
|
if [[ "$held" -gt 0 ]]; then
|
||||||
|
printf '{"status":"noop","reason":"raw still settling","genome":"%s","held":%d,"quiet_minutes":%d}\n' \
|
||||||
|
"$genome" "$held" "$quiet_min"
|
||||||
|
else
|
||||||
|
printf '{"status":"noop","genome":"%s"}\n' "$genome"
|
||||||
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue