Show More
@@ -0,0 +1,47 b'' | |||||
|
1 | |RCE| 4.16.1 |RNS| | |||
|
2 | ------------------ | |||
|
3 | ||||
|
4 | Release Date | |||
|
5 | ^^^^^^^^^^^^ | |||
|
6 | ||||
|
7 | - 2019-03-07 | |||
|
8 | ||||
|
9 | ||||
|
10 | New Features | |||
|
11 | ^^^^^^^^^^^^ | |||
|
12 | ||||
|
13 | ||||
|
14 | ||||
|
15 | General | |||
|
16 | ^^^^^^^ | |||
|
17 | ||||
|
18 | - Docs: added missing reference for the user bookmarks feature. | |||
|
19 | ||||
|
20 | ||||
|
21 | Security | |||
|
22 | ^^^^^^^^ | |||
|
23 | ||||
|
24 | - Comments: prevent from allowing to resolve TODO comments across projects. In certain | |||
|
25 | conditions users could resolve TODOs not belonging to the same project. | |||
|
26 | ||||
|
27 | ||||
|
28 | Performance | |||
|
29 | ^^^^^^^^^^^ | |||
|
30 | ||||
|
31 | ||||
|
32 | ||||
|
33 | Fixes | |||
|
34 | ^^^^^ | |||
|
35 | ||||
|
36 | - Downloads: fixed archive links from file tree view. | |||
|
37 | - Markdown: fixed sanitization of checkbox extensions that removed "checked" attribute. | |||
|
38 | - Upgrade: fixed upgrades from older versions of RhodeCode. | |||
|
39 | - Pull Requests: handle non-ascii branches from short branch selector via URL. | |||
|
40 | - Hooks: fixed again unicode problems with new pull request link generator. | |||
|
41 | ||||
|
42 | ||||
|
43 | ||||
|
44 | Upgrade notes | |||
|
45 | ^^^^^^^^^^^^^ | |||
|
46 | ||||
|
47 | - Scheduled release addressing problems in 4.16.X releases. |
@@ -50,3 +50,4 b' 4b34ce0d2c3c10510626b3b65044939bb7a2cddf' | |||||
50 | 14502561d22e6b70613674cd675ae9a604b7989f v4.15.1 |
|
50 | 14502561d22e6b70613674cd675ae9a604b7989f v4.15.1 | |
51 | 4aaa40b605b01af78a9f6882eca561c54b525ef0 v4.15.2 |
|
51 | 4aaa40b605b01af78a9f6882eca561c54b525ef0 v4.15.2 | |
52 | 797744642eca86640ed20bef2cd77445780abaec v4.16.0 |
|
52 | 797744642eca86640ed20bef2cd77445780abaec v4.16.0 | |
|
53 | 6c3452c7c25ed35ff269690929e11960ed6ad7d3 v4.16.1 |
@@ -9,6 +9,7 b' Release Notes' | |||||
9 | .. toctree:: |
|
9 | .. toctree:: | |
10 | :maxdepth: 1 |
|
10 | :maxdepth: 1 | |
11 |
|
11 | |||
|
12 | release-notes-4.16.1.rst | |||
12 | release-notes-4.16.0.rst |
|
13 | release-notes-4.16.0.rst | |
13 | release-notes-4.15.2.rst |
|
14 | release-notes-4.15.2.rst | |
14 | release-notes-4.15.1.rst |
|
15 | release-notes-4.15.1.rst |
@@ -70,7 +70,7 b' markdown_attrs = {' | |||||
70 | "abbr": ["title"], |
|
70 | "abbr": ["title"], | |
71 | "acronym": ["title"], |
|
71 | "acronym": ["title"], | |
72 | "pre": ["lang"], |
|
72 | "pre": ["lang"], | |
73 | "input": ["type", "disabled"] |
|
73 | "input": ["type", "disabled", "checked"] | |
74 | } |
|
74 | } | |
75 |
|
75 | |||
76 | standard_styles = [ |
|
76 | standard_styles = [ |
@@ -270,7 +270,7 b' def post_push(extras):' | |||||
270 | # make lock is a tri state False, True, None. We only release lock on False |
|
270 | # make lock is a tri state False, True, None. We only release lock on False | |
271 | if extras.make_lock is False and not is_shadow_repo(extras): |
|
271 | if extras.make_lock is False and not is_shadow_repo(extras): | |
272 | Repository.unlock(Repository.get_by_repo_name(extras.repository)) |
|
272 | Repository.unlock(Repository.get_by_repo_name(extras.repository)) | |
273 |
msg = 'Released lock on repo ` |
|
273 | msg = 'Released lock on repo `{}`\n'.format(safe_str(extras.repository)) | |
274 | output += msg |
|
274 | output += msg | |
275 |
|
275 | |||
276 | if extras.locked_by[0]: |
|
276 | if extras.locked_by[0]: | |
@@ -284,8 +284,8 b' def post_push(extras):' | |||||
284 | output += _http_ret.title |
|
284 | output += _http_ret.title | |
285 |
|
285 | |||
286 | if extras.new_refs: |
|
286 | if extras.new_refs: | |
287 | tmpl = extras.server_url + '/' + extras.repository + \ |
|
287 | tmpl = '{}/{}/pull-request/new?{{ref_type}}={{ref_name}}'.format( | |
288 | "/pull-request/new?{ref_type}={ref_name}" |
|
288 | safe_str(extras.server_url), safe_str(extras.repository)) | |
289 |
|
289 | |||
290 | for branch_name in extras.new_refs['branches']: |
|
290 | for branch_name in extras.new_refs['branches']: | |
291 | output += 'RhodeCode: open pull request link: {}\n'.format( |
|
291 | output += 'RhodeCode: open pull request link: {}\n'.format( |
@@ -18,26 +18,11 b'' | |||||
18 | # RhodeCode Enterprise Edition, including its added features, Support services, |
|
18 | # RhodeCode Enterprise Edition, including its added features, Support services, | |
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ |
|
19 | # and proprietary license terms, please see https://rhodecode.com/licenses/ | |
20 |
|
20 | |||
21 | import re |
|
|||
22 |
|
||||
23 | import markdown |
|
21 | import markdown | |
24 |
|
22 | |||
25 | from mdx_gfm import GithubFlavoredMarkdownExtension # pragma: no cover |
|
23 | from mdx_gfm import GithubFlavoredMarkdownExtension # pragma: no cover | |
26 |
|
24 | |||
27 |
|
25 | |||
28 | class FlavoredCheckboxPostprocessor(markdown.postprocessors.Postprocessor): |
|
|||
29 | """ |
|
|||
30 | Adds `flavored_checkbox_list` class to list of checkboxes |
|
|||
31 | """ |
|
|||
32 |
|
||||
33 | pattern = re.compile(r'^([*-]) \[([ x])\]') |
|
|||
34 |
|
||||
35 | def run(self, html): |
|
|||
36 | before = '<ul>\n<li><input type="checkbox"' |
|
|||
37 | after = '<ul class="flavored_checkbox_list">\n<li><input type="checkbox"' |
|
|||
38 | return html.replace(before, after) |
|
|||
39 |
|
||||
40 |
|
||||
41 | # Global Vars |
|
26 | # Global Vars | |
42 | URLIZE_RE = '(%s)' % '|'.join([ |
|
27 | URLIZE_RE = '(%s)' % '|'.join([ | |
43 | r'<(?:f|ht)tps?://[^>]*>', |
|
28 | r'<(?:f|ht)tps?://[^>]*>', |
@@ -26,7 +26,8 b' log = logging.getLogger(__name__)' | |||||
26 |
|
26 | |||
27 |
|
27 | |||
28 | class UpgradeDb(BasePasterCommand): |
|
28 | class UpgradeDb(BasePasterCommand): | |
29 | """Command used for paster to upgrade our database to newer version |
|
29 | """ | |
|
30 | Command used for paster to upgrade our database to newer version | |||
30 | """ |
|
31 | """ | |
31 |
|
32 | |||
32 | max_args = 1 |
|
33 | max_args = 1 | |
@@ -41,7 +42,7 b' class UpgradeDb(BasePasterCommand):' | |||||
41 | def command(self): |
|
42 | def command(self): | |
42 | from rhodecode.lib.rc_commands import upgrade_db |
|
43 | from rhodecode.lib.rc_commands import upgrade_db | |
43 | upgrade_db.command( |
|
44 | upgrade_db.command( | |
44 | self.path_to_ini_file, self.options.__dict__.get('force_ask')) |
|
45 | self.path_to_ini_file, self.options.__dict__.get('force_ask'), None) | |
45 |
|
46 | |||
46 | def update_parser(self): |
|
47 | def update_parser(self): | |
47 | self.parser.add_option('--sql', |
|
48 | self.parser.add_option('--sql', |
@@ -1420,8 +1420,8 b' class PullRequestModel(BaseModel):' | |||||
1420 | _ = translator or get_current_request().translate |
|
1420 | _ = translator or get_current_request().translate | |
1421 |
|
1421 | |||
1422 | commit_id = safe_str(commit_id) if commit_id else None |
|
1422 | commit_id = safe_str(commit_id) if commit_id else None | |
1423 |
branch = safe_ |
|
1423 | branch = safe_unicode(branch) if branch else None | |
1424 |
bookmark = safe_ |
|
1424 | bookmark = safe_unicode(bookmark) if bookmark else None | |
1425 |
|
1425 | |||
1426 | selected = None |
|
1426 | selected = None | |
1427 |
|
1427 | |||
@@ -1439,10 +1439,11 b' class PullRequestModel(BaseModel):' | |||||
1439 | ) |
|
1439 | ) | |
1440 |
|
1440 | |||
1441 | groups = [] |
|
1441 | groups = [] | |
|
1442 | ||||
1442 | for group_key, ref_list, group_name, match in sources: |
|
1443 | for group_key, ref_list, group_name, match in sources: | |
1443 | group_refs = [] |
|
1444 | group_refs = [] | |
1444 | for ref_name, ref_id in ref_list: |
|
1445 | for ref_name, ref_id in ref_list: | |
1445 |
ref_key = ' |
|
1446 | ref_key = u'{}:{}:{}'.format(group_key, ref_name, ref_id) | |
1446 | group_refs.append((ref_key, ref_name)) |
|
1447 | group_refs.append((ref_key, ref_name)) | |
1447 |
|
1448 | |||
1448 | if not selected: |
|
1449 | if not selected: | |
@@ -1456,11 +1457,11 b' class PullRequestModel(BaseModel):' | |||||
1456 | ref = commit_id or branch or bookmark |
|
1457 | ref = commit_id or branch or bookmark | |
1457 | if ref: |
|
1458 | if ref: | |
1458 | raise CommitDoesNotExistError( |
|
1459 | raise CommitDoesNotExistError( | |
1459 |
'No commit refs could be found matching: |
|
1460 | u'No commit refs could be found matching: {}'.format(ref)) | |
1460 | elif repo.DEFAULT_BRANCH_NAME in repo.branches: |
|
1461 | elif repo.DEFAULT_BRANCH_NAME in repo.branches: | |
1461 |
selected = 'branch: |
|
1462 | selected = u'branch:{}:{}'.format( | |
1462 | repo.DEFAULT_BRANCH_NAME, |
|
1463 | safe_unicode(repo.DEFAULT_BRANCH_NAME), | |
1463 | repo.branches[repo.DEFAULT_BRANCH_NAME] |
|
1464 | safe_unicode(repo.branches[repo.DEFAULT_BRANCH_NAME]) | |
1464 | ) |
|
1465 | ) | |
1465 | elif repo.commit_ids: |
|
1466 | elif repo.commit_ids: | |
1466 | # make the user select in this case |
|
1467 | # make the user select in this case |
@@ -30,7 +30,7 b'' | |||||
30 | % if c.enable_downloads: |
|
30 | % if c.enable_downloads: | |
31 | <% at_path = '{}.zip'.format(request.GET.get('at') or c.commit.raw_id[:6]) %> |
|
31 | <% at_path = '{}.zip'.format(request.GET.get('at') or c.commit.raw_id[:6]) %> | |
32 | <div title="${_('Download tree at {}').format(at_path)}" class="btn btn-default new-file"> |
|
32 | <div title="${_('Download tree at {}').format(at_path)}" class="btn btn-default new-file"> | |
33 |
<a href="${h.route_path('repo_archivefile',repo_name=c.repo_name, fname= |
|
33 | <a href="${h.route_path('repo_archivefile',repo_name=c.repo_name, fname='{}.zip'.format(c.commit.raw_id))}"> | |
34 | ${_('Download tree at {}').format(at_path)} |
|
34 | ${_('Download tree at {}').format(at_path)} | |
35 | </a> |
|
35 | </a> | |
36 | </div> |
|
36 | </div> |
General Comments 0
You need to be logged in to leave comments.
Login now