Merging Accounts
################

Sometimes, users create a second account, perhaps because they don't realise
they can change the email address associated with their original account.
And then, once they discover this, they don't want to abandon the history
associated with either account.

The best way forward in this case would be to merge one of their accounts
into the other one, so it looked like the target account had done all the
actions of both. In Bugzilla's :file:`contrib` directory, there is a script
called :file:`merge-users.pl`. While code in this directory is not officially
supported by the Bugzilla team, this script may be useful to you in
solving the above problem.
