#
# This is the gitdm configuration file for QEMU.
#
# It is to be used with LWN's git dataminer tool for generating
# reports about development activity in the QEMU repo. The LWN gitdm
# tool can be found at:
#
#   git://git.lwn.net/gitdm.git
#
# A run to generate a report for the last year of activity would be
#
#   git log --numstat --since "Last Year" | gitdm -n -l 10
#

# EmailAliases lets us cope with developers who use more
# than one address or have changed addresses. This duplicates some of
# the information in the existing .mailmap but in a slightly different
# form.
#
EmailAliases contrib/gitdm/aliases

#
# EmailMap does the main work of mapping addresses onto
# employers.
#
EmailMap contrib/gitdm/domain-map

#
# Use GroupMap to map a file full of addresses to the
# same employer. This is used for people that don't post from easily
# identifiable corporate emails.
#

GroupMap contrib/gitdm/group-map-redhat Red Hat
GroupMap contrib/gitdm/group-map-wavecomp Wave Computing
GroupMap contrib/gitdm/group-map-cadence Cadence Design Systems
GroupMap contrib/gitdm/group-map-codeweavers CodeWeavers
GroupMap contrib/gitdm/group-map-ibm IBM
GroupMap contrib/gitdm/group-map-janustech Janus Technologies

# Also group together our prolific individual contributors
# and those working under academic auspices
GroupMap contrib/gitdm/group-map-individuals (None)
GroupMap contrib/gitdm/group-map-academics Academics (various)

#
#
# Use FileTypeMap to map a file types to file names using regular
# regular expressions.
#
FileTypeMap contrib/gitdm/filetypes.txt
