Mercurial: Persona extension
I’ve recently switched (back) from Git to Mercurial. This post isn’t intended to be a recapitulation of pros and cons; both are great tools. Instead I’d like to mention a problem that came up in my workflow and a small extension written to address it.
Here’s the problem: I use Mercurial for both personal and work projects—and different usernames for each. This situation may well be familiar to some:
- You save your work (personal) username in the
uisection of$HOME/.hgrc - For personal (work) repositories you edit the
.hg/hgrcand specify a local username - You often forget to do (2) and end up committing changesets with the wrong username
The persona extension is designed to make this process slightly less of a headache: It provides an easy way to set ui.username on a repository by repository basis.
At its simplest, the extension lets you specify a username for a repository as follows:
# hg persona -n "Firstname Lastname <firstname@some.domain>"
To save repetition, you can configure individual personas in your ~/.hgrc:
[persona]
home = Firstname Lastname <firstname@home.domain>
work = Firstname Lastname <lastname@work.domain>which allows for quick switching in a given repository:
# hg persona -n home
~ Setting username to 'Firstname Lastname <firstname@home.domain>'
# hg persona -n work
~ Setting username to 'Firstname Lastname <lastname@work.domain>'
Finally, you can specify the --persona option to clone:
# hg clone --persona work src dest
To use this extension, clone http://hg.0branch.com/hg-persona and add the following to your ~/.hgrc:
Feedback appreciated!
Update: The following hook is also handy for displaying ui.username info on each commit (allowing you to catch repository-username mismatches early):
comments powered by Disqus