##// END OF EJS Templates
fix(permissions): fixed security problem with apply-to-children functionality breaking permissions for private repositories...
fix(permissions): fixed security problem with apply-to-children functionality breaking permissions for private repositories fixes: RCCE-141

File last commit:

r5354:68e33808 default
r5550:cb083474 default
Show More
admin-tricks.rst
300 lines | 9.2 KiB | text/x-rst | RstLexer

One-time Admin Tasks

  • :ref:`web-analytics`
  • :ref:`admin-tricks-license`
  • :ref:`announcements`
  • :ref:`md-rst`
  • :ref:`repo-stats`
  • :ref:`server-side-merge`
  • :ref:`remap-rescan`
  • :ref:`custom-hooks`
  • :ref:`clear-repo-cache`
  • :ref:`set-repo-pub`
  • :ref:`ping`

Adding Web Analytics

If you wish to add a Google Analytics, or any other kind of tracker to your |RCE| instance you can add the necessary codes to the header or footer section of each instance using the following steps:

  1. From the |RCE| interface, select :menuselection:`Admin --> Settings --> Global`
  2. To add a tracking code to you instance, enter it in the header or footer section and select Save

Use the example templates in the drop-down menu to set up your configuration.

Licence Key Management

To manage your license key, go to :menuselection:`Admin --> Settings --> License`. On this page you can see the license key details. If you need a new license, or have questions about your current one, contact support@rhodecode.com

Server-wide Announcements

If you need to make a server-wide announcement to all users, you can add a message to be displayed using the following steps:

  1. From the |RCE| interface, select :menuselection:`Admin --> Settings --> Global`
  2. To add a message that will be displayed to all users, select :guilabel:`Server Announcement` from the drop-down menu and change the var message = "TYPE YOUR MESSAGE HERE"; example line.
  3. Select :guilabel:`Save`, and you will see the message once your page refreshes.
Server Wide Announcement

Suppress license warnings or errors

In case you're running on maximum allowed users, RhodeCode will display a warning message on pages that you're close to the license limits. It's often not desired to show that all the time. Here's how you can suppress the license messages.

  1. From the |RCE| interface, select :menuselection:`Admin --> Settings --> Global`
  2. Select :guilabel:`Flash message filtering` from the drop-down menu.
  3. Select :guilabel:`Save`, and you will no longer see the license message once your page refreshes.

Markdown or RST Rendering

|RCE| can use Markdown or reStructured Text in commit message, code review messages, and inline comments. To set the default to either, select your preference from the drop-down menu on the :menuselection:`Admin --> Settings --> Visual` page and select :guilabel:`Save settings`.

Enabling Repository Statistics

To enable |repo| statistics, use the following steps:

  1. From the |RCE| interface, open :menuselection:`Admin --> Repositories` and select :guilabel:`Edit` beside the |repo| for which you wish to enable statistics.
  2. Check the :guilabel:`Enable statistics` box, and select :guilabel:`Save`

Enabling Server-side Merging

To enable server-side merging, use the following steps:

  1. From the |RCE| interface, open :menuselection:`Admin --> Settings --> VCS`
  2. Check the :guilabel:`Server-side merge` box, and select :guilabel:`Save Settings`

If you encounter slow performance with server-side merging enabled, check the speed at which your server is performing actions. When server-side merging is enabled, the following actions occurs on the server.

  • A |pr| is created in the database.
  • A shadow |repo| is created as a working environment for the |pr|.
  • On display, |RCE| checks if the |pr| can be merged.

To check how fast the shadow |repo| creation is occurring on your server, use the following steps:

  1. Log into your server and create a directory in your |repos| folder.
  2. Clone a |repo| that is showing slow performance and time the action.
# One option is to use the time command
$ time hg clone SOURCE_REPO TARGET

Remap and Rescan Repositories

You may want to Remap and rescan the |repos| that |RCE| is managing to ensure the system is always up-to-date. This is useful after importing, deleting, or carrying out general cleaning up operations. To do this use the following steps:

  1. From the |RCE|, open :menuselection:`Admin --> Settings --> Remap and rescan`
  2. Click :guilabel:`Rescan Repositories`

Check the additional options if needed:

  • :guilabel:`Destroy old data`: Useful for purging deleted repository information from the database.
  • :guilabel:`Invalidate cache for all repositories`: Use this to completely remap all |repos|. Useful when importing or migrating |repos| to ensure all new information is picked up.

Adding Custom Hooks

To add custom hooks to your instance, use the following steps:

  1. Open :menuselection:`Admin --> Settings --> Hooks`
  2. Add your custom hook details, you can use a file path to specify custom hook scripts, for example: pretxnchangegroup.example with value python:/path/to/custom_hook.py:my_func_name
  3. Select :guilabel:`Save`

Also, see the RhodeCode Extensions section of the :ref:`rc-tools` guide. RhodeCode Extensions can be used to add additional hooks to your instance and comes with a number of pre-built plugins if you chose to install them.

Clearing |repo| cache

If you need to clear the cache for a particular |repo|, use the following steps:

  1. Open :menuselection:`Admin --> Repositories` and select :guilabel:`Edit` beside the |repo| whose cache you wish to clear.
  2. On the |repo| settings page, go to the :guilabel:`Caches` tab and select :guilabel:`Invalidate repository cache`.

Changing Default Language

To change the default language of a |RCE| instance, change the language code in the :file:`config/_shared/rhodecode.ini` file. To do this, use the following steps.

  1. Open the :file:`rhodecode.ini` file and set the required language code.
## Optional Languages
## en(default), de, fr, it, ja, pl, pt, ru, zh
lang = de
  1. Restart the |RCE| instance and check that the language has been updated.
$ rccontrol restart enterprise-2
Instance "enterprise-2" successfully stopped.
Instance "enterprise-2" successfully started.
../../images/language.png

Setting Repositories to Publish

To automatically promote your local |repos| to public after pushing to |RCE|, enable the :guilabel:`Set repositories as publishing` option on the :menuselection:`Admin --> Settings --> VCS` page.

Note

This option is enabled by default on most |RCE| versions, but if upgrading from a 1.7.x version it could be disabled on upgrade due to inheriting older default settings.

Pinging the |RCE| Server

You can check the IP Address of your |RCE| instance using the following URL: {instance-URL}/_admin/ping.

$ curl https://your.rhodecode.url/_admin/ping
pong[rce-7880] => 203.0.113.23

Unarchiving a repository

Archive operation for the repository is similar as delete. Archive keeps the data for future references but makes the repository read-only. After archiving the repository it shouldn't be modified in any way. This is why repository settings are disabled for an archived repository.

If there's a need for unarchiving a repository for some reasons, the interactive ishell interface should be used.

# Open iShell from the terminal
$ rccontrol ishell enterprise-1/community-1
# Set repository as un-archived
In [1]: repo = Repository.get_by_repo_name('SOME_REPO_NAME')
In [2]: repo.archived = False
In [3]: Session().add(repo);Session().commit()

Bulk change repository owner

Here's how one can change an owner of repository for an user who has been de activated. Settings a new owner can be done via ishell for all repositories that past owner had.

do run this script the interactive ishell interface should be used.

# Open iShell from the terminal
$ rccontrol ishell enterprise-1/community-1
from rhodecode.model.db import User, Repository, Session
from rhodecode.model.permission import PermissionModel

# replace old-owner and new-owner with your exact users
old_owner = User.get_by_username('old-owner')
new_owner = User.get_by_username('new-owner')

# list of users we need to "flush" permissions
affected_user_ids = [new_owner.user_id, old_owner.user_id]

for repo in Repository.get_all_repos(user_id=old_owner.user_id):
    repo.user = new_owner
    Session().add(repo)
    Session().commit()

PermissionModel().trigger_permission_flush(affected_user_ids)