RhodeCode 4.10.0 Release: SSH support and workflows improvements

Published on January 02, 2018, by Marcin Kuzminski


Our latest release of RhodeCode 4.10 is out. This is a scheduled release that adds extended SSH support, pull request workflow improvements.
RhodeCode worker process management page, improvements to SVN protocol support.

This release highlights are:

  • Fully integrated SSH support with key management.
  • SVN compatibility and performance improvements.
  • Ported all controllers to Pyramid, with python3 compatible code.

Take a few minutes to update your RhodeCode instance:
rccontrol self-update && rccontrol upgrade '*'

New to RhodeCode? Download the latest RhodeCode 4.10 Series from our website.
Keep reading for full release details.

Full SSH support

RhodeCode partially supported SSH via our 3rd party rhodecode-ssh package. Because of all gathered feedback from current users we decided to add SSH as exchange protocol to the core of our CE edition.
SSH support allows easier integration of existing systems without forcing the HTTP authentication (which we still recommend using over SSH)
Starting from 4.10 release SSH can be enabled from .ini file and we will provide fully supported of it in RhodeCode.
SSH protocol via RhodeCode supports our integration framework.
The web functionality have a set of enterprise features such as global key management, multiple keys per user or key last usage statistics.

You can follow this documentation to enable ssh for your instance.

Performance

We always plan on what can be improved in RhodeCode to provide the best blend of security and performance.
After receiving lots of feedback from our SVN users about HTTP protocol overhead in RhodeCode we decided to optimize this.
That is why we worked on our HTTP communications protocol. In some cases, we've achieved 4x speed improvement when compared to 4.9 release.
We'll continue to work on this in next releases because there are still things we can improve especially with repositories which contain millions of files.

In addition, we also worked on, and improved:

  • diff generation speed
  • goto-switcher
  • reducing the number of SQL queries during most common operations

Pull requests improvements

Our pull-requests are a great way to do code reviews. Now we store and show a merge strategy on them. Currently, a rebase and explicit merge are possible, and in upcoming releases, we'll make that an pick option on each web-based merge.
In addition for Mercurial we added an option to close the branch when merging.

In Addition, we'll now also show if a reviewer was individual or came from user groups added as a part of review rules.
This area will be under constant improvements over next releases, and we plan to add things like more advanced vote rules or improve the flexibility of enforced code review rules.

Permissions summary

Managing instances with 1000s of developers can be sometimes complicated. We improved our permissions summary page to show exact permissions calculation.

Detailed permissions summary

This way you can quickly tell why given user has particular permissions, and what is the inheritance chain. We added also a JSON endpoints for those views so you can, a) export the JSON data quickly, b) using the whitelist
access expose this endpoint to 3rd party auditing department without giving them ANY access to RhodeCode or RhodeCode API. This is the most secure way to expose this data in an automated way to external entities.

Processes page

Starting from this release, RhodeCode will show a list of all current workers used in this machine with CPU and Memory usage. It’s also possible to restart each worker from the web interface.

RhodeCode processes page

You can quickly see any potential zombie processes or memory leaks.

SVN

In this release, we not only worked on SVN performance but also improved protocol compatibility with operations like svn del or svn mkdir. Especially when using TortoiseSVN.
We also added a way to specify a custom mod_dav template inside the .ini file. This way users can highly customize this template and add things like path permissions, or any other custom settings.
One great usage is allowing support for projects as https://github.com/subsyncit/subsyncit,
and it's custom requirement for server setup. Subsyncit is a file sync client that uses a Subversion repo as a backing-store.

Other notable changes

  • Markup: make relative links pin to raw files for images/files as links. Allows building relative MD/RST links that go to rendered content
  • Auth: allow binding the whitelist views to specific auth tokens. This allows to access only specific pages via given auth token. E.g possible to expose raw diff/raw file content only for a specific single token. The new format is viewName@TOKEN in addition a new page with exposed all view names is available under server.name/_admin/permissions/auth_token_access
  • Channelstream: push events with comments on single commits. Users will get live notification for events on single commits too.
  • Integrations: webhook, allow to set a custom header, and to specify username and password.
  • UI: added copy-to-clipboard for commits, file paths, gist/clone urls.

Summary

See the full list of changes in the release notes.

As usual, the update process is a simple one-liner type:
rccontrol self-update && rccontrol upgrade '*'
in the command line interface. Done!

Sincerely yours,
The RhodeCode team.