Anonymous | Login | Signup for a new account | 2012-09-13 19:33 PDT |
Main | Blog | My View | View Issues | Change Log | Roadmap | IRC Chat | Repositories | Scrum Board |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||||
239 | Source Integration | WebSVN | public | 2012-02-23 05:55 | 2012-02-23 07:00 | ||||||
Reporter | Alain D'EURVEILHER | ||||||||||
Assigned To | |||||||||||
Priority | normal | Severity | major | Reproducibility | always | ||||||
Status | new | Resolution | open | ||||||||
Product Version | 0.16 | ||||||||||
Target Version | Fixed in Version | ||||||||||
Summary | 239: Parenthesis in filename causes incorrect filename stored in the database | ||||||||||
Description | Some of my branches name, tags name, etc.... have a parenthesis, such as for instance "20120113 - 3.1RC2 build(20120113) - Rev 5060". Because of that parenthesis the following regexp in the process_svn_log 'partially fails': # Changed paths } elseif ( 2 == $t_state ) { (...) if ( preg_match( '/^\s+([a-zA-Z])\s+([^\(]+)(?: \(from [^\)]+\))?/', $t_line, $t_matches ) ) { (...) As a consequence, in the related changeset I only got a part of the full path of the modified files, stopping at the character just before the parenthesis. Maybe this part of the code should be reviewed to allow this kind of specification. Maybe if we process the line twice, first by checking if it ends by "(from ...", then with the rest perform the regular expression without the [^\(]. Because anyway, we don't use at all $t_matches[3] matching the (from some/branch:rev) info. | ||||||||||
Tags | No tags attached. | ||||||||||
Attached Files | |||||||||||
![]() |
|
Alain D'EURVEILHER (reporter) 2012-02-23 07:00 |
I would suggest something like the following as a correction: in the file SourceSVN.php, in the function process_svn_log, in the if where state equals 2, i would replace the line: if ( preg_match( '/^\s+([a-zA-Z])\s+([^\(]+)(?: \(from [^\)]+\))?/', $t_line, $t_matches ) ) { by something like: if ( preg_match( '/^.+(\s\(from\s.+\)\s*)$/', $t_line, $t_copy_matches ) ) { $t_line = substr( $t_line, 0, -1*strlen( $t_copy_matches[1] ) ); } if ( preg_match( '/^\s+([a-zA-Z])\s+(.+)/', $t_line, $t_matches ) ) { |
![]() |
|||
Date Modified | Username | Field | Change |
2012-02-23 05:55 | Alain D'EURVEILHER | New Issue | |
2012-02-23 07:00 | Alain D'EURVEILHER | Note Added: 337 |
Copyright © 2000 - 2012 MantisBT Group
Time: 0.1158 seconds. memory usage: 8,318 KB |