Browse Source

add filter "home-assistant-config-entries"

Home Assistant stores integration credentials in plain text in .storage/core.config_entries (e.g. AVM FRITZ!Box Tools username and password). Replace every non-null data.password with "…" via jq.

Git applies only one filter per path, so the MAC address filter is chained by evaluating its configured clean command instead of duplicating it.

Requires jq >= 1.7, as older versions may reformat floats. Since smudge is a no-op, a checkout restores "…" as password and credentials must be re-entered in Home Assistant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fabian Peter Hammerle 2 weeks ago
parent
commit
005fa8b8a7
1 changed files with 5 additions and 0 deletions
  1. 5 0
      gitconfig

+ 5 - 0
gitconfig

@@ -42,6 +42,11 @@
 [diff "hexdump"]
 	textconv = od -t x1z --
 
+[filter "home-assistant-config-entries"]
+	clean = jq '(.data.entries[].data | select(.password != null) | .password) = \"…\"' | eval \"$(git config --get filter.truncate-mac-address-to-24-bits.clean)\"
+	smudge = cat
+	required = true
+
 [filter "truncate-mac-address-to-24-bits"]
 	clean = sed -E     -e 's/(^|[^[:xdigit:]:])([[:xdigit:]]{2}(:[[:xdigit:]]{2}){2})(:[[:xdigit:]]{2}){3}([^[:xdigit:]:]|$)/\\1\\2:…\\5/g'     -e 's/(-[[:xdigit:]]{4}-40e7-(8e6c|9f6c)-[[:xdigit:]]{6})[[:xdigit:]]{6}([^[:xdigit:]]|$)/\\1…\\3/gI'     -e 's/(:[[:xdigit:]]{0,4}:[[:xdigit:]]{0,2}ff:fe)[[:xdigit:]]{2}:[[:xdigit:]]{1,4}([^[:xdigit:]:]|$)/\\1…\\2/gI'     -e 's/(^|[^[:xdigit:]-])([[:xdigit:]]{6})[[:xdigit:]]{6}([^[:xdigit:]]|$)/\\1\\2…\\3/g'
 	smudge = cat