[user] name = Fabian Peter Hammerle email = fabian@hammerle.me signingkey = 8D2902FE7DF47DDEDA2802F9456B9A0399A5DA2F [core] excludesfile = ~/.config/git/gitignore # hooksPath = ~/.config/git/hooks [interactive] singleKey = true [init] defaultBranch = main [status] branch = true short = true showUntrackedFiles = normal [grep] lineNumber = true [diff] tool = vimdiff [diff "cat"] textconv = cat [diff "csv-to-yaml"] textconv = csv-to-yaml [diff "db_dump"] textconv = db_dump [diff "gpg-show-keys"] textconv = gpg --show-keys --with-subkey-fingerprint --with-keygrip -- [diff "gpg-verify"] textconv = gpg --verify --output=- 2>&1 -- [diff "hexdump"] textconv = od -t x1z -- [filter "home-assistant-analytics"] clean = jq '.data.submission_identifier |= if . != null then \"…\" else . end' smudge = cat required = true [filter "home-assistant-auth"] clean = jq '.data.refresh_tokens |= if . != null then \"…\" else . end' smudge = cat required = true [filter "home-assistant-backup"] clean = "jq 'reduce ([\"data\", \"backups\"], [\"data\", \"config\", \"last_attempted_automatic_backup\"], [\"data\", \"config\", \"last_completed_automatic_backup\"], [\"data\", \"config\", \"create_backup\", \"password\"]) as $p (.; if getpath($p) != null then setpath($p; \"…\") else . end)'" smudge = cat required = true [filter "home-assistant-config-entries"] clean = "jq '(.data.entries[].data |= with_entries(if (.key | IN(\"password\", \"access_token\", \"noise_psk\", \"token\", \"webhook_id\")) and .value != null then .value = \"…\" else . end)) | (.data.entries[].unique_id |= if . != null then sub(\"^(?
io[.]homeassistant[.]companion[.]android-[[:xdigit:]]{2})[[:xdigit:]]{14}$\"; \"\\(.p)…\") else . end) | ((.data.entries[] | select(.data.app_id == \"io.homeassistant.companion.android\") | .data.device_id) |= if . != null then sub(\"^(?
[[:xdigit:]]{2})[[:xdigit:]]{14}$\"; \"\\(.p)…\") else . end) | ((.data.entries[] | select(.domain == \"samsungtv\") | .unique_id) |= if . != null then sub(\"^(?
[[:xdigit:]]{2})[[:xdigit:]]{6}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}$\"; \"\\(.p)…\") else . end) | ((.data.entries[] | (select(.domain == \"dlna_dmr\") | .unique_id, .data.device_id), (.discovery_keys[]?[]? | select(.domain == \"ssdp\") | .key) | strings) |= sub(\"^(?
uuid:)[[:xdigit:]]{8}-[[:xdigit:]]{4}-(?!(?i:40e7-(?:8e6c|9f6c))-)(? [0-9]+:).+$\"; \"\\(.p)…\") else . end) | if .unique_id != null then .unique_id |= sub(\"^(? [0-9]+:).+$\"; \"\\(.p)…\") else . end)) | ((.data.entries[] | select(.domain == \"mqtt\" and ((.data.broker // \"\") | endswith(\".thethings.network\"))) | .data.username) |= if . != null then sub(\"^(? [^@]{3})[^@]+(?=@)\"; \"\\(.p)…\") else . end) | ((.data.entries[] | select(.domain == \"mqtt\" and ((.data.broker // \"\") | endswith(\".thethings.network\"))) | .subentries[]?.data.components[]?) |= with_entries(if (.key | endswith(\"_topic\")) and (.value | type) == \"string\" then .value |= (sub(\"^(? v3/[^@/]{3})[^@/]+(?=@)\"; \"\\(.p)…\") | sub(\"(? /devices/eui-[[:xdigit:]]{6})[[:xdigit:]]{10}(?=/|$)\"; \"\\(.p)…\")) else . end))' | eval \"$(git config --get filter.truncate-mac-address-to-24-bits.clean)\" | eval \"$(git config --get filter.truncate-dyness-battery-serial-numbers.clean)\""
smudge = cat
required = true
[filter "home-assistant-device-registry"]
required = true
clean = "jq '(.data.devices[] |= if .manufacturer == \"Victron Energy BV\" then (.name, .serial_number) |= if . != null then sub(\"(? HQ[0-9]{4}[[:alnum:]])[[:alnum:]]{4}(?=[^[:alnum:]]|$)\"; \"\\(.p)…\") else . end elif .manufacturer == \"Valetudo\" then .configuration_url |= if . != null then sub(\"(? ://valetudo-[[:alnum:]]{2})[[:alnum:]]+\"; \"\\(.p)…\") else . end else . end) | ((.data.devices[] | select(.manufacturer != \"Victron Energy BV\" and .serial_number != null) | .serial_number) |= if length > 6 then .[:6] + \"…\" else . end) | ((.data.devices[]?, .data.deleted_devices[]?) | .identifiers[]? | select(.[1] != null)) |= if .[0] == \"mobile_app\" then .[1] |= sub(\"^(? [[:xdigit:]]{2})[[:xdigit:]]{14}$\"; \"\\(.p)…\") elif .[0] == \"matter\" then .[1] |= (sub(\"^(? deviceid_[[:xdigit:]]{6})[[:xdigit:]]{10}(?=-)\"; \"\\(.p)…\") | sub(\"^(? serial_[[:xdigit:]]{6})[[:xdigit:]]+$\"; \"\\(.p)…\")) elif .[0] == \"samsungtv\" then .[1] |= sub(\"^(? [[:xdigit:]]{2})[[:xdigit:]]{6}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}$\"; \"\\(.p)…\") elif .[0] == \"ftms\" then .[1] |= if length > 6 then .[:6] + \"…\" else . end else . end | ((.data.devices[]?, .data.deleted_devices[]?) | .connections[]? | select(.[0] == \"upnp\") | .[1] | strings) |= sub(\"^(? uuid:)[[:xdigit:]]{8}-[[:xdigit:]]{4}-(?!(?i:40e7-(?:8e6c|9f6c))-)(? [[:xdigit:]]{6})[[:xdigit:]]{10}(?=-[[:xdigit:]]{16}-)\"; \"\\(.p)…\") elif .platform == \"samsungtv\" then .unique_id |= sub(\"^(? [[:xdigit:]]{2})[[:xdigit:]]{6}(-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}$\"; \"\\(.p)…\") elif .platform == \"mobile_app\" then (.unique_id |= (sub(\"^[[:xdigit:]]{64}(?=_)\"; \"…\") | sub(\"^(? [[:xdigit:]]{2})[[:xdigit:]]{14}$\"; \"\\(.p)…\"))) | if .previous_unique_id != null then .previous_unique_id |= (sub(\"^[[:xdigit:]]{64}(?=_)\"; \"…\") | sub(\"^(? [[:xdigit:]]{2})[[:xdigit:]]{14}$\"; \"\\(.p)…\")) else . end elif .platform == \"ftms\" then .unique_id |= sub(\"^(? [[:alnum:]]{6})[[:alnum:]]+(?=-)\"; \"\\(.p)…\") elif .platform == \"dlna_dmr\" then .unique_id |= sub(\"^(? uuid:)[[:xdigit:]]{8}-[[:xdigit:]]{4}-(?!(?i:40e7-(?:8e6c|9f6c))-)(?