This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Use different commit username per directory tree.

With this extension you may commit as John Smith <john.smith@serious.com> in repositories below ~/work, and as Johny <fastjohny@fantasy.net> in code under ~/hobby - and set this rule once, in ~/.hgrc.

1   Example

Install the extension as described below.

Write in your ~/.hgrc:

[extensions]
mercurial_dynamic_username =

[dynamic_username]
work.location = ~/work
work.username = John Smith <john.smith@serious.com>
hobby.location = ~/hobby ~/blogging
hobby.username = Johny <fastjohny@fantasy.net>

and just commit. In any repository placed below ~/work you will commit as John Smith, in repos below ~/hobby as Johny, elsewhere default setting (username from [ui]) will be used.

2   Configuration syntax

All settings are defined in [dynamic_username] section, and have the following form:

«somelabel».location = «list of directory names»
«somelabel».username = «username used there»

Labels are used only to join pairs of those settings together.

Directory names specified in .location are space or colon separated, and can be quoted. Repository matches the rule if it belongs to the directory tree(s) specified here. Tildas (~/.. and ~john/...) are properly expanded.

Usernames have the same syntax as standard username.

Defining .location without paired .username asks extension to revert to standard username, for example:

[ui]
username = Jake <jake@loose.net>

[dynamic_username]
work.location = ~/work
work.username = John Smith <john.smith@serious.com>
open.location = ~/work/open-source

will commit as John Smith in ~/work/libs/veryimportant, but will revert to default Jake in ~/work/open-source/libshared.

3   Match priority

If more than one location matches repository, longest one is used (like in the open-source example above). Longest is selected using actual canonical path after tilda expansion (~/work/sth is longer than /home/littlejohny/work).

Dynamic usernames currently always win against [ui]-section username, even if the latter is defined in per-repository .hg/hgrc. I would gladly give priority to the latter, but I have no idea how to detect that without re-parsing the configuration.

4   Testing configuration

You can test your configuration by callling:

hg showconfig ui.username

(results should vary depending on the current working directory). Handy way to compare:

hg --cwd ~/work/libs/acme  showconfig ui.username
hg --cwd ~/hobby/blogging  showconfig ui.username

5   Installation

5.1   Linux/Unix (from PyPI)

If you have working pip or easy_install:

pip install --user mercurial_dynamic_username

or maybe:

sudo pip install mercurial_dynamic_username

(or use easy_install instead of pip). Then activate by:

[extensions]
mercurial_dynamic_username =

To upgrade, repeat the same command with --upgrade option, for example:

pip install --user --upgrade mercurial_dynamic_username

5.2   Linux/Unix (from source)

If you don’t have pip, or wish to follow development more closely:

  • clone both this repository and mercurial_extension_utils and put them in the same directory, for example:

    cd ~/sources
    hg clone https://bitbucket.org/Mekk/mercurial-extension_utils/
    hg clone https://bitbucket.org/Mekk/mercurial-dynamic_username/
    
  • update to newest tags,

  • activate by:

    [extensions]
    mercurial_dynamic_username = ~/sources/mercurial-dynamic_username/mercurial_dynamic_username.py
    

To upgrade, pull and update.

Note that directory names matter. See mercurial_extension_utils for longer description of this kind of installation.

5.3   Windows

If you have any Python installed, you may install with pip:

pip install mercurial_dynamic_username

Still, as Mercurial (whether taken from TortoiseHg, or own package) uses it’s own bundled Python, you must activate by specifying the path:

[extensions]
mercurial_dynamic_username = C:/Python27/Lib/site-packages/mercurial_dynamic_username.py
;; Or wherever pip installed it

To upgrade to new version:

pip --upgrade mercurial_dynamic_username

If you don’t have any Python, clone repositories:

cd c:\hgplugins
hg clone https://bitbucket.org/Mekk/mercurial-extension_utils/
hg clone https://bitbucket.org/Mekk/mercurial-dynamic_username/

update to tagged versions and activate by path:

[extensions]
mercurial_dynamic_username = C:/hgplugins/mercurial-dynamic_username/mercurial_dynamic_username.py
;; Or wherever you cloned

See mercurial_extension_utils documentation for more details on Windows installation.

Note

Directory names matter. If mercurial_dynamic_username.py can’t find mercurial_extension_utils.py in system path, it looks for it in its own directory, in ../mercurial_extension_utils, and in ../extension_utils.

7   Development, bug reports, enhancement suggestions

Development is tracked on BitBucket, see http://bitbucket.org/Mekk/mercurial-dynamic_username/

Use BitBucket issue tracker for bug reports and enhancement suggestions.

8   Additional notes

Information about this extension is also available on Mercurial Wiki: http://mercurial.selenic.com/wiki/DynamicUsernameExtension

Check also other Mercurial extensions I wrote.

Release History

Release History

1.0.3

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.8.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.8.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.7.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.6.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
mercurial_dynamic_username-1.0.3.tar.gz (6.4 kB) Copy SHA256 Checksum SHA256 Source Nov 13, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting