From b29a6989f9fed7adfdf3a6e62b4d0feb9b0fe3f4 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Mon, 12 Dec 2016 23:31:35 +0100 Subject: [PATCH 1/9] schema: preparer should keep case by default. --- rhodecode/model/validation_schema/preparers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rhodecode/model/validation_schema/preparers.py b/rhodecode/model/validation_schema/preparers.py index 104aee86..7fc22906 100644 --- a/rhodecode/model/validation_schema/preparers.py +++ b/rhodecode/model/validation_schema/preparers.py @@ -31,13 +31,13 @@ def strip_preparer(value): return value -def slugify_preparer(value): +def slugify_preparer(value, keep_case=True): """ Slugify given value to a safe representation for url/id """ from rhodecode.lib.utils import repo_name_slug if value: - value = repo_name_slug(value.lower()) + value = repo_name_slug(value if keep_case else value.lower()) return value From 501b590618f15e81e072670295261e060457a189 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Mon, 12 Dec 2016 20:22:45 +0100 Subject: [PATCH 2/9] system-info: fixed reporting of inodes. --- rhodecode/lib/system_info.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rhodecode/lib/system_info.py b/rhodecode/lib/system_info.py index 1239f717..86552986 100644 --- a/rhodecode/lib/system_info.py +++ b/rhodecode/lib/system_info.py @@ -256,9 +256,8 @@ def storage_inodes(): try: i_stat = os.statvfs(path) - - value['used'] = i_stat.f_ffree - value['free'] = i_stat.f_favail + value['free'] = i_stat.f_ffree + value['used'] = i_stat.f_files-i_stat.f_favail value['total'] = i_stat.f_files value['percent'] = percentage(value['used'], value['total']) except Exception as e: From f3c3db2bf5cced9e494f6c76db3cd07230317f68 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Fri, 16 Dec 2016 16:15:18 +0100 Subject: [PATCH 3/9] api: implemented missing get_repo_refs api backend. Fixes #4677 --- rhodecode/api/tests/test_get_repo_refs.py | 40 +++++++++++++++++++++++ rhodecode/api/views/repo_api.py | 20 ++++++++++-- rhodecode/lib/vcs/backends/base.py | 14 +++++++- 3 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 rhodecode/api/tests/test_get_repo_refs.py diff --git a/rhodecode/api/tests/test_get_repo_refs.py b/rhodecode/api/tests/test_get_repo_refs.py new file mode 100644 index 00000000..1543fe6b --- /dev/null +++ b/rhodecode/api/tests/test_get_repo_refs.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +# Copyright (C) 2010-2016 RhodeCode GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, version 3 +# (only), as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +# This program is dual-licensed. If you wish to learn more about the +# RhodeCode Enterprise Edition, including its added features, Support services, +# and proprietary license terms, please see https://rhodecode.com/licenses/ + + +import pytest + +from rhodecode.model.meta import Session +from rhodecode.model.repo import RepoModel +from rhodecode.model.user import UserModel +from rhodecode.tests import TEST_USER_ADMIN_LOGIN +from rhodecode.api.tests.utils import ( + build_data, api_call, assert_ok, assert_error, expected_permissions) + + +@pytest.mark.usefixtures("testuser_api", "app") +class TestGetRepo(object): + def test_api_get_repo_refs(self, backend, user_util): + repo = backend.create_repo() + id_, params = build_data(self.apikey, 'get_repo_refs', + **{'repoid': repo.repo_name,}) + response = api_call(self.app, params) + expected = repo.scm_instance().refs() + assert_ok(id_, expected, given=response.body) diff --git a/rhodecode/api/views/repo_api.py b/rhodecode/api/views/repo_api.py index f98f76d9..88164141 100644 --- a/rhodecode/api/views/repo_api.py +++ b/rhodecode/api/views/repo_api.py @@ -512,9 +512,23 @@ def get_repo_refs(request, apiuser, repoid): .. code-block:: bash id : - result: [ - TODO... - ] + "result": { + "bookmarks": { + "dev": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "master": "367f590445081d8ec8c2ea0456e73ae1f1c3d6cf" + }, + "branches": { + "default": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "stable": "367f590445081d8ec8c2ea0456e73ae1f1c3d6cf" + }, + "branches_closed": {}, + "tags": { + "tip": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "v4.4.0": "1232313f9e6adac5ce5399c2a891dc1e72b79022", + "v4.4.1": "cbb9f1d329ae5768379cdec55a62ebdd546c4e27", + "v4.4.2": "24ffe44a27fcd1c5b6936144e176b9f6dd2f3a17", + } + } error: null """ diff --git a/rhodecode/lib/vcs/backends/base.py b/rhodecode/lib/vcs/backends/base.py index ea92b77f..e9e869bf 100644 --- a/rhodecode/lib/vcs/backends/base.py +++ b/rhodecode/lib/vcs/backends/base.py @@ -226,7 +226,12 @@ class BaseRepository(object): returns a `dict` with branches, bookmarks, tags, and closed_branches for this repository """ - raise NotImplementedError + return dict( + branches=self.branches, + branches_closed=self.branches_closed, + tags=self.tags, + bookmarks=self.bookmarks + ) @LazyProperty def branches(self): @@ -235,6 +240,13 @@ class BaseRepository(object): """ raise NotImplementedError + @LazyProperty + def tags(self): + """ + A `dict` which maps tags names to commit ids. + """ + raise NotImplementedError + @LazyProperty def size(self): """ From 19722c48af5f3219f61ac61f7ed6acbebe8d12be Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Sun, 18 Dec 2016 22:42:06 +0100 Subject: [PATCH 4/9] docs: updated get_repo_refs api docs --- docs/api/methods/repo-methods.rst | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/api/methods/repo-methods.rst b/docs/api/methods/repo-methods.rst index 6521a8ae..22ee4c18 100644 --- a/docs/api/methods/repo-methods.rst +++ b/docs/api/methods/repo-methods.rst @@ -481,9 +481,23 @@ get_repo_refs .. code-block:: bash id : - result: [ - TODO... - ] + "result": { + "bookmarks": { + "dev": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "master": "367f590445081d8ec8c2ea0456e73ae1f1c3d6cf" + }, + "branches": { + "default": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "stable": "367f590445081d8ec8c2ea0456e73ae1f1c3d6cf" + }, + "branches_closed": {}, + "tags": { + "tip": "5611d30200f4040ba2ab4f3d64e5b06408a02188", + "v4.4.0": "1232313f9e6adac5ce5399c2a891dc1e72b79022", + "v4.4.1": "cbb9f1d329ae5768379cdec55a62ebdd546c4e27", + "v4.4.2": "24ffe44a27fcd1c5b6936144e176b9f6dd2f3a17", + } + } error: null From aa31ed85158932e41029f34325d82ddfe3878f0d Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Sun, 18 Dec 2016 22:42:23 +0100 Subject: [PATCH 5/9] release: Start preparation for 4.5.2 --- .bumpversion.cfg | 2 +- .release.cfg | 9 ++------- rhodecode/VERSION | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 049b8740..9f8d7eb9 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 4.5.1 +current_version = 4.5.2 message = release: Bump version {current_version} to {new_version} [bumpversion:file:rhodecode/VERSION] diff --git a/.release.cfg b/.release.cfg index 79b2abf2..334ce10b 100644 --- a/.release.cfg +++ b/.release.cfg @@ -5,23 +5,18 @@ done = false done = true [task:rc_tools_pinned] -done = true [task:fixes_on_stable] -done = true [task:pip2nix_generated] -done = true [task:changelog_updated] -done = true [task:generate_api_docs] -done = true [release] -state = prepared -version = 4.5.1 +state = in_progress +version = 4.5.2 [task:updated_translation] diff --git a/rhodecode/VERSION b/rhodecode/VERSION index 99523d47..689f7fbd 100644 --- a/rhodecode/VERSION +++ b/rhodecode/VERSION @@ -1 +1 @@ -4.5.1 \ No newline at end of file +4.5.2 \ No newline at end of file From f2c69b9701397a7ee2da9e3c8bd7ac166d75ffdb Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Sun, 18 Dec 2016 22:51:43 +0100 Subject: [PATCH 6/9] docs: added release notes for 4.5.2 --- .release.cfg | 2 + docs/release-notes/release-notes-4.5.2.rst | 46 ++++++++++++++++++++++ docs/release-notes/release-notes.rst | 1 + 3 files changed, 49 insertions(+) create mode 100644 docs/release-notes/release-notes-4.5.2.rst diff --git a/.release.cfg b/.release.cfg index 334ce10b..5f3af568 100644 --- a/.release.cfg +++ b/.release.cfg @@ -5,6 +5,7 @@ done = false done = true [task:rc_tools_pinned] +done = true [task:fixes_on_stable] @@ -13,6 +14,7 @@ done = true [task:changelog_updated] [task:generate_api_docs] +done = true [release] state = in_progress diff --git a/docs/release-notes/release-notes-4.5.2.rst b/docs/release-notes/release-notes-4.5.2.rst new file mode 100644 index 00000000..65563d58 --- /dev/null +++ b/docs/release-notes/release-notes-4.5.2.rst @@ -0,0 +1,46 @@ +|RCE| 4.5.2 |RNS| +----------------- + +Release Date +^^^^^^^^^^^^ + +- 2016-12-19 + + +New Features +^^^^^^^^^^^^ + + + +General +^^^^^^^ + +- Github authentication: no longer require repository permissions when + connecting RhodeCode account with Github login. +- Api: added new function get_repo_refs. This was accidentally exposed in our + documentation as valid function, but wasn't implemented. This function is now + backported from next major release due the documentation issues. + + +Security +^^^^^^^^ + + + +Performance +^^^^^^^^^^^ + + + +Fixes +^^^^^ + +- Api: Fixed a regression in API validation on create_* functions. + Before this fix it always converted given data to lowercase. +- System info: fixed reporting of free inodes as taken. + + +Upgrade notes +^^^^^^^^^^^^^ + + diff --git a/docs/release-notes/release-notes.rst b/docs/release-notes/release-notes.rst index a0f340d7..44eebc8c 100644 --- a/docs/release-notes/release-notes.rst +++ b/docs/release-notes/release-notes.rst @@ -9,6 +9,7 @@ Release Notes .. toctree:: :maxdepth: 1 + release-notes-4.5.2.rst release-notes-4.5.1.rst release-notes-4.5.0.rst release-notes-4.4.2.rst From e8fd3d85052df47b6d085d904d74afb1c3136f6e Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Sun, 18 Dec 2016 22:54:11 +0100 Subject: [PATCH 7/9] release: updated pip2nix output for 4.5.2 --- .release.cfg | 2 ++ pkgs/python-packages.nix | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.release.cfg b/.release.cfg index 5f3af568..0c7ab761 100644 --- a/.release.cfg +++ b/.release.cfg @@ -8,10 +8,12 @@ done = true done = true [task:fixes_on_stable] +done = true [task:pip2nix_generated] [task:changelog_updated] +done = true [task:generate_api_docs] done = true diff --git a/pkgs/python-packages.nix b/pkgs/python-packages.nix index 367dc214..955560f5 100644 --- a/pkgs/python-packages.nix +++ b/pkgs/python-packages.nix @@ -1498,7 +1498,7 @@ }; }; rhodecode-enterprise-ce = super.buildPythonPackage { - name = "rhodecode-enterprise-ce-4.5.1"; + name = "rhodecode-enterprise-ce-4.5.2"; buildInputs = with self; [WebTest configobj cssselect lxml mock pytest pytest-cov pytest-runner pytest-sugar]; doCheck = true; propagatedBuildInputs = with self; [Babel Beaker FormEncode Mako Markdown MarkupSafe MySQL-python Paste PasteDeploy PasteScript Pygments pygments-markdown-lexer Pylons Pyro4 Routes SQLAlchemy Tempita URLObject WebError WebHelpers WebHelpers2 WebOb WebTest Whoosh alembic amqplib anyjson appenlight-client authomatic backport-ipaddress celery channelstream colander decorator deform docutils gevent gunicorn infrae.cache ipython iso8601 kombu msgpack-python packaging psycopg2 py-gfm pycrypto pycurl pyparsing pyramid pyramid-debugtoolbar pyramid-mako pyramid-beaker pysqlite python-dateutil python-ldap python-memcached python-pam recaptcha-client repoze.lru requests simplejson subprocess32 waitress zope.cachedescriptors dogpile.cache dogpile.core psutil py-bcrypt]; From af21dce3996107bfe818c91f820c35caa63a5f10 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Sun, 18 Dec 2016 22:54:12 +0100 Subject: [PATCH 8/9] release: Finish preparation for 4.5.2 --- .release.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.release.cfg b/.release.cfg index 0c7ab761..dd7b6d81 100644 --- a/.release.cfg +++ b/.release.cfg @@ -11,6 +11,7 @@ done = true done = true [task:pip2nix_generated] +done = true [task:changelog_updated] done = true @@ -19,7 +20,7 @@ done = true done = true [release] -state = in_progress +state = prepared version = 4.5.2 [task:updated_translation] From eddfc2802c2a12ca0eab44180b7532f7e6798eff Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Sun, 18 Dec 2016 22:54:12 +0100 Subject: [PATCH 9/9] Added tag v4.5.2 for changeset 416fec799314