| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 # This file is part of Adblock Plus <https://adblockplus.org/>, | 1 # This file is part of Adblock Plus <https://adblockplus.org/>, |
| 2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH |
| 3 # | 3 # |
| 4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify |
| 5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as |
| 6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. |
| 7 # | 7 # |
| 8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, |
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 # GNU General Public License for more details. | 11 # GNU General Public License for more details. |
| 12 # | 12 # |
| 13 # You should have received a copy of the GNU General Public License | 13 # You should have received a copy of the GNU General Public License |
| 14 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 14 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| 15 | 15 |
| 16 """A changegroup (or pretxnchangegroup) hook for Trac integration. | 16 """A changegroup (or pretxnchangegroup) hook for Trac integration. |
|
mathias
2019/05/14 09:32:02
Why do you insist on naming the type(s) of hook?
Vasily Kuznetsov
2019/05/14 10:28:59
This is the intended use and I haven't checked if
| |
| 17 | 17 |
| 18 Checks commit messages for issue references and posts comments linking to the | 18 Checks commit messages for issue references and posts comments linking to the |
| 19 commits into referenced issues. | 19 commits into referenced issues. |
| 20 """ | 20 """ |
| 21 | 21 |
| 22 import collections | 22 import collections |
| 23 import posixpath | 23 import posixpath |
| 24 import re | 24 import re |
| 25 import xmlrpclib | 25 import xmlrpclib |
| 26 | 26 |
| 27 from sitescripts.utils import get_config, get_template | 27 from sitescripts.utils import get_config, get_template |
| 28 | 28 |
| 29 | 29 |
| 30 ISSUE_NUMBER_REGEX = re.compile(r'\bissue\s+(\d+)\b', re.I) | 30 ISSUE_NUMBER_REGEX = re.compile(r'\bissue\s+(\d+)\b', re.I) |
|
mathias
2019/05/13 12:23:43
Shouldn't this one include the separating dash? I.
Vasily Kuznetsov
2019/05/13 15:14:15
Yeah I see what you mean, but I'd rather leave it
mathias
2019/05/14 09:32:01
Acknowledged.
| |
| 31 NOISSUE_REGEX = re.compile(r'^noissue\b', re.I) | 31 NOISSUE_REGEX = re.compile(r'^noissue\b', re.I) |
| 32 | 32 |
| 33 | 33 |
| 34 def _format_description(change): | 34 def _format_description(change): |
| 35 lines = change.description().splitlines() | 35 lines = change.description().splitlines() |
| 36 message = lines[0].rstrip() | 36 message = lines[0].rstrip() |
| 37 if len(lines) == 1 or lines[1].strip() == '': | 37 if len(lines) == 1 or lines[1].strip() == '': |
| 38 return message | 38 return message |
| 39 return message.rstrip('.') + '...' | 39 return message.rstrip('.') + '...' |
| 40 | 40 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 83 elif not NOISSUE_REGEX.search(description): | 83 elif not NOISSUE_REGEX.search(description): |
| 84 ui.warn('warning: invalid commit message format in changeset {}\n' | 84 ui.warn('warning: invalid commit message format in changeset {}\n' |
| 85 .format(commit)) | 85 .format(commit)) |
| 86 | 86 |
| 87 repository_name = posixpath.split(repo.url())[1] | 87 repository_name = posixpath.split(repo.url())[1] |
| 88 comments = _generate_comments(repository_name, changes_by_issue) | 88 comments = _generate_comments(repository_name, changes_by_issue) |
| 89 | 89 |
| 90 issue_url_template = get_config().get('hg', 'issue_url_template') | 90 issue_url_template = get_config().get('hg', 'issue_url_template') |
| 91 for issue_id, comment in comments.items(): | 91 for issue_id, comment in comments.items(): |
| 92 issue_url = issue_url_template.format(id=issue_id) | 92 issue_url = issue_url_template.format(id=issue_id) |
| 93 ui.status('updating {}\n'.format(issue_url)) | |
| 93 try: | 94 try: |
| 94 _post_comment(issue_id, comment) | 95 _post_comment(issue_id, comment) |
| 95 ui.status('updating {}\n'.format(issue_url)) | |
|
mathias
2019/05/14 09:32:02
This should not be in the `try` block. It should e
Vasily Kuznetsov
2019/05/14 10:28:59
Makes sense. Done.
| |
| 96 except Exception as exc: | 96 except Exception as exc: |
| 97 ui.warn('warning: failed to update {}\n'.format(issue_url)) | 97 ui.warn('warning: failed to update {}\n'.format(issue_url)) |
| 98 ui.warn('error message: {}\n'.format(exc)) | 98 ui.warn('error message: {}\n'.format(exc)) |
| 99 | |
| 100 # Alias for smooth migration. | |
| 101 changegroup_hook = hook | |
|
mathias
2019/05/14 09:32:01
This should not be necessary at all:
hg@hg-2:
Vasily Kuznetsov
2019/05/14 10:29:00
👍
Done!
| |
| LEFT | RIGHT |