Skip to main content

Module identity

Module identity 

Source
Available on crate feature vcs-git only.
Expand description

Canonical author identity and bot-author detection.

Backend-agnostic: the git backend resolves a commit signature through .mailmap and hands the canonical (name, email) byte pairs here. The email (lowercased) is the identity key — two commits with the same canonical email count as one author even under differing display names. Raw identities never leave the process; --emit-author-details opts into a SHA-256 hash of the canonical email instead of the plaintext.

The emitted hash is a stable pseudonym, not anonymization. It avoids putting plaintext emails in output/caches and deters casual disclosure, but it is not cryptographically irreversible: an email is low-entropy and enumerable, so an attacker holding a candidate set of emails (commit histories are public) can recover the mapping by hashing each candidate or via a precomputed email→hash table — the same weakness that broke Gravatar’s email hashing. See AuthorId::hashed for the threat model.

Users who need stronger resistance can opt into keyed hashing with a secret AuthorHashKey (--author-hash-key, issue #956): the emitted digest becomes an HMAC the attacker cannot reproduce without the key. See AuthorId::emit_hashed.

Structs§

AuthorHashKey
A secret key for the opt-in keyed author-identity hashing (--author-hash-key, issue #956).
AuthorId
A canonical author identity, keyed by lowercased email.
BotFilter
Matches author identities against a bot-exclusion pattern.