##// END OF EJS Templates
pull-requests: security, check for permissions on exposure of repo-refs
pull-requests: security, check for permissions on exposure of repo-refs

File last commit:

r1707:4b0fc208 default
r2251:4ded942f stable
Show More
vcs-server.rst
324 lines | 10.1 KiB | text/x-rst | RstLexer

VCS Server Management

The VCS Server handles |RCM| backend functionality. You need to configure a VCS Server to run with a |RCM| instance. If you do not, you will be missing the connection between |RCM| and its |repos|. This will cause error messages on the web interface. You can run your setup in the following configurations, currently the best performance is one of following:

  • One VCS Server per |RCM| instance.
  • One VCS Server handling multiple instances.

Important

If your server locale settings are not correctly configured, |RCE| and the VCS Server can run into issues. See this Ask Ubuntu post which explains the problem and gives a solution.

For more information, see the following sections:

  • :ref:`install-vcs`
  • :ref:`config-vcs`
  • :ref:`vcs-server-options`
  • :ref:`vcs-server-versions`
  • :ref:`vcs-server-maintain`
  • :ref:`vcs-server-config-file`
  • :ref:`svn-http`

VCS Server Installation

To install a VCS Server, see :ref:`Installing a VCS server <control:install-vcsserver>`.

Hooking |RCE| to its VCS Server

To configure a |RCE| instance to use a VCS server, see :ref:`Configuring the VCS Server connection <control:manually-vcsserver-ini>`.

|RCE| VCS Server Options

The following list shows the available options on the |RCM| side of the connection to the VCS Server. The settings are configured per instance in the :file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.

##################
### VCS CONFIG ###
##################
# set this line to match your VCS Server
vcs.server = 127.0.0.1:10004
# Set to False to disable the VCS Server
vcs.server.enable = True
vcs.backends = hg, git, svn
vcs.connection_timeout = 3600

VCS Server Versions

An updated version of the VCS Server is released with each |RCE| version. Use the VCS Server number that matches with the |RCE| version to pair the appropriate ones together. For |RCE| versions pre 3.3.0, VCS Server 1.X.Y works with |RCE| 3.X.Y, for example:

  • VCS Server 1.0.0 works with |RCE| 3.0.0
  • VCS Server 1.2.2 works with |RCE| 3.2.2

For |RCE| versions post 3.3.0, the VCS Server and |RCE| version numbers match, for example:

  • VCS Server |release| works with |RCE| |release|

VCS Server Memory Optimization

To configure the VCS server to manage the cache efficiently, you need to configure the following options in the :file:`/home/{user}/.rccontrol/{vcsserver-id}/vcsserver.ini` file. Once configured, restart the VCS Server.

To clear the cache completely, you can restart the VCS Server.

Important

While the VCS Server handles a restart gracefully on the web interface, it will drop connections during push/pull requests. So it is recommended you only perform this when there is very little traffic on the instance.

Use the following example to restart your VCS Server, for full details see the :ref:`RhodeCode Control CLI <control:rcc-cli>`.

$ rccontrol status
- NAME: vcsserver-1
- STATUS: RUNNING
  logs:/home/ubuntu/.rccontrol/vcsserver-1/vcsserver.log
- VERSION: 4.7.2 VCSServer
- URL: http://127.0.0.1:10008
- CONFIG: /home/ubuntu/.rccontrol/vcsserver-1/vcsserver.ini

$ rccontrol restart vcsserver-1
Instance "vcsserver-1" successfully stopped.
Instance "vcsserver-1" successfully started.

VCS Server Configuration

You can configure settings for multiple VCS Servers on your system using their individual configuration files. Use the following properties inside the configuration file to set up your system. The default location is :file:`home/{user}/.rccontrol/{vcsserver-id}/vcsserver.ini`. For a more detailed explanation of the logger levers, see :ref:`debug-mode`.

Note

After making changes, you need to restart your VCS Server to pick them up.

################################################################################
# RhodeCode VCSServer with HTTP Backend - configuration                        #
#                                                                              #
################################################################################


[server:main]
## COMMON ##
host = 127.0.0.1
port = 10002

##########################
## GUNICORN WSGI SERVER ##
##########################
## run with gunicorn --log-config vcsserver.ini --paste vcsserver.ini
use = egg:gunicorn#main
## Sets the number of process workers. Recommended
## value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers
workers = 3
## process name
proc_name = rhodecode_vcsserver
## type of worker class, one of sync, gevent
## recommended for bigger setup is using of of other than sync one
worker_class = sync
## The maximum number of simultaneous clients. Valid only for Gevent
#worker_connections = 10
## max number of requests that worker will handle before being gracefully
## restarted, could prevent memory leaks
max_requests = 1000
max_requests_jitter = 30
## amount of time a worker can spend with handling a request before it
## gets killed and restarted. Set to 6hrs
timeout = 21600

[app:main]
use = egg:rhodecode-vcsserver

pyramid.default_locale_name = en
pyramid.includes =

## default locale used by VCS systems
locale = en_US.UTF-8

# cache regions, please don't change
beaker.cache.regions = repo_object
beaker.cache.repo_object.type = memorylru
beaker.cache.repo_object.max_items = 100
# cache auto-expires after N seconds
beaker.cache.repo_object.expire = 300
beaker.cache.repo_object.enabled = true


################################
### LOGGING CONFIGURATION   ####
################################
[loggers]
keys = root, vcsserver, beaker

[handlers]
keys = console

[formatters]
keys = generic

#############
## LOGGERS ##
#############
[logger_root]
level = NOTSET
handlers = console

[logger_vcsserver]
level = DEBUG
handlers =
qualname = vcsserver
propagate = 1

[logger_beaker]
level = DEBUG
handlers =
qualname = beaker
propagate = 1


##############
## HANDLERS ##
##############

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = DEBUG
formatter = generic

################
## FORMATTERS ##
################

[formatter_generic]
format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %Y-%m-%d %H:%M:%S