| Title | Keyword translation is too conservative |
| Status | closed |
| Priority | essential |
| Assigned user | Nick Barnes |
| Organization | Ravenbrook |
| Description | We translate keywords (items for Perforce job fields of type 'word') by using a hexadecimal escape %xx for characters other than [a-zA-Z0-9(),.?!-]. This is very conservative, and rules out a number of characters commonly used in defect trackers. We also translate the space character ' ' into the underscore character '_'. This has the problem that we do not escape underscores, so underscores in a defect tracker become underscores in Perforce and then translate back to spaces. We need a translator which is (a) bijective, (b) less conservative, and hopefully (c) less obfuscating. |
| Analysis | Experimentation with p4/p4d 2000.2 on swan (Linux) shows that all characters except the following are accepted in 'word' fields: hash (#), double quote ("), semicolon (;), slash (/) and whitespace (sp, ht, nl, vt, np, cr). We could allow all other characters through untranslated, except for an escape character (e.g. '\'). However, ' ' may be common enough to translate to another character (e.g. '_' or '-'). It would be nice if we could have fairly clear translations for space, semicolon, and slash, as these characters are likely to occur in defect tracker fields. Suggestion: ' ' -> '_' '_' -> '\_' '\' -> '\\' ';' -> '\:' '/' -> '\|' '#' -> '\=' '"' -> "\'" c -> '\xab' (hex translation for whitespace) Done this, and moved translator to p4.py as it is p4-specific and not dt-specific. It's a translator class of its own. |
| How found | customer |
| Evidence | dt_teamtrack.translate_keyword_tt_to_p4(), dt_bugzilla.translate_keyword_bz_to_p4(), <URL: http://info.ravenbrook.com/mail/2001/02/06/11-10-20/0.txt> |
| Observed in | 0.5.1 |
| Test procedure | <http://www.ravenbrook.com/project/p4dti/master/test/test_translator.py> |
| Created by | Nick Barnes |
| Created on | 2001-02-06 15:50:57 |
| Last modified by | Gareth Rees |
| Last modified on | 2001-12-10 19:22:17 |
| History | 2001-02-06 NB Created 2001-02-19 GDR Downgraded to optional. |
| Change | Effect | Date | User | Description |
|---|---|---|---|---|
| 8721 | closed | 2001-02-19 16:43:14 | Nick Barnes | Moved keyword translator to p4.py (job000195 for teamtrack). |
| 8720 | open | 2001-02-19 16:30:16 | Nick Barnes | Fix omission in keyword translation. |
| 8718 | open | 2001-02-19 16:17:33 | Nick Barnes | Keyword translation. |