TortoiseSVN provides a very handy feature to add live links on your bug IDs in your commit messages connecting back to your bug tracking system. This works with any bug tracking system that has a web interface. (For example, I set up one system to point to a private installation of Jira and another to point to the publicly accessible SourceForge issue tracker.)
No additional effort is required to create these links other than to be sure to put your bug IDs in the log message into the correct format. Furthermore, if you have been using the same standard format previously (without the convenience of links) it is automatically retroactive! Once you or your admin configures Subversion with the "bugtraq" properties, all of your prior entries will also automatically display these links.
TortoiseSVN provides a couple different ways to let you specify the format of your bug ID. I prefer the method that uses regular expressions which, though a bit more complicated, provides much more expressive power. So with this method, the format is defined by a regular expression contained in the "bugtraq:logregex" property of the current folder. If it isn't there, the property is automatically inherited by child folders unless explicitly overridden.
This is different from standard Subversion properties (e.g. "svn:ignore") which must explicitly be attached to each folder in a hierarchy (either manually or by auto-prop rules) to be recognized. The "bugtraq" properties are implicitly inherited--they do not need to be attached unless some descendant wishes to use a different value.
There is actually one reason you might want to propagate the same property value to descendants. If you put a "bugtraq" property on a project root it will apply to the entire project as long as you checkout from the root. If you checkout a portion of your tree below the root, though, the property will not exist.
So Get-IssueTrackerLogPattern traverses up the file tree until it finds the closest ancestor that defines a "bugtraq" property. This is useful, for instance, in case different projects have adopted different formats for recognizing bug IDs. Get-IssueTrackerLogPattern reports the format for a specified file or folder by walking up the tree until it finds the closest parent having the "bugtraq:logregex" pattern defined. If it crawls to the working copy root finding no pattern, it reports "-none-". Use the common -Verbose parameter to see the treewalk.
As the TortoiseSVN documentation indicates, this pattern is used by
the TortoiseSVN project itself:
Quoting the manual, "The first expression picks out 'issues #23, #24 and #25' from the surrounding log message. The second regex extracts plain decimal numbers from the output of the first regex, so it will return '23', '24', and '25' to use as bug IDs."
That is all true, but that pattern will also match "issues #23, #24 and#25" (note the missing space after the "and") and it will *not* match "issues #23, #24, and #25" (i.e. with an additional comma after the penultimate entry). This regex alleviates those issues: