We are trying to introduce what we hope is a good development practice: every commit must be linked to an issue in issue tracking system. (It's perfectly acceptable to create a new issue in order to satisfy this requirement.)
Our issue tracker (Redmine) and DVCS (Mercurial) integrate well, but we have one problem: what happens if a developer needs to commit something while offline? Currently, Redmine is accessed online, and Mercurial is accessed through TortoiseHG (Windows) or shell (Linux).
I am not aware of any tool (e.g., a Windows desktop client, commercial or free) that allows to use Redmine offline (to create issues, not just view them). We wouldn't even mind copying Redmine database to each developer's machine, but then sync'ing the databases wouldn't be easy.
What should we do? I can see the following options:
Switch away from Redmine to an issue tracker that has offline support. [I don't think Trac is that much better]
Hack together some solution to create issues in Redmine offline. [not sure how, without causing rather than solving problems]
Give up on the idea that commits must always refer to an existing issue. [but it seemed like such a good idea]
Retrocatively link commits with issues. [this requires that the developers write the description of each issue in a temporary location, later copy them to Redmine, and then manually link the new issue with the commit; inefficient and error-prone]
Prohibit offline commits (thus, prohibiting working offline). [seems silly, given how DVCS was selected primarily to allow offline work]
What would be your recommendation?