aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2010-10-10 21:34:24 +0200
committerMarcin Kuzminski <marcin@python-works.com>2010-10-10 21:34:24 +0200
commit7313d77e309e2fad0de20151fc84337a3fd37b0e (patch)
treeb89848fc21e6b1b1afdddffd6bf6056566107701 /docs
parent838aa4f2ba68ca8b07f753545d15bf65c88f58b3 (diff)
more docs update
Diffstat (limited to 'docs')
-rw-r--r--docs/conf.py2
-rw-r--r--docs/index.rst63
-rw-r--r--docs/installation.rst88
-rw-r--r--docs/setup.rst117
4 files changed, 198 insertions, 72 deletions
diff --git a/docs/conf.py b/docs/conf.py
index 44e5fd50..78c399bc 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -120,7 +120,7 @@ html_theme_path = ['theme']
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+#html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
diff --git a/docs/index.rst b/docs/index.rst
index df06d917..c8ffd54a 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -3,12 +3,18 @@
Welcome to RhodeCode (RhodiumCode) documentation!
=================================================
-``RhodeCode`` is Pylons based repository management and serving for mercurial.
-It's similar to github or bitbucket, but focuses more on closed access restrictions.
+``RhodeCode`` (formerly hg-app) is Pylons based repository management and
+serving for mercurial_. It's similar to github or bitbucket, but it's suppose to run
+as standalone app, it's open source and focuses more on restricted access to repositories
There's no default free access to RhodeCode You have to create an account in order
-to use the application.
+to use the application. It's powered by vcs_ library that we created to handle
+many various version control systems.
-**RhodeCode demo is available at**
+RhodeCode uses `Semantic Versioning <http://semver.org/>`_
+
+
+RhodeCode demo
+--------------
http://hg.python-works.com
@@ -17,18 +23,26 @@ The default access is
- username: demo
- password: demo
-RhodeCode uses `Semantic Versioning <http://semver.org/>`_
+Source code
+-----------
+
+Source code is along with issue tracker is available at
+http://bitbucket.org/marcinkuzminski/rhodecode
-**Features**
+Also a source codes can be obtained from demo rhodecode instance
+http://hg.python-works.com/rhodecode/summary
-- Has it's own middleware to handle mercurial protocol request. Each request can
+Features
+--------
+
+- Has it's own middleware to handle mercurial_ protocol request. Each request can
be logged and authenticated. Runs on threads unlikely to hgweb You can make
multiple pulls/pushes simultaneous
- Full permissions and authentication per project private/read/write/admin.
- One account for web interface and mercurial push/pull/clone.
+ One account for web interface and mercurial_ push/pull/clone.
- Mako templates let's you customize look and feel of application.
- Beautiful diffs, annotations and source codes all colored by pygments.
-- Mercurial branch graph and yui-flot powered graphs with zooming and statistics
+- Mercurial_ branch graph and yui-flot powered graphs with zooming and statistics
- Admin interface with user/permission management. User activity journal logs
pulls, pushes, forks,registrations. Possible to disable built in hooks
- Server side forks, it's possible to fork a project and hack it free without
@@ -37,7 +51,7 @@ RhodeCode uses `Semantic Versioning <http://semver.org/>`_
and build in indexing daemons
(no external search servers required all in one application)
- Rss / atom feeds, gravatar support, download sources as zip/tarballs
-- Async tasks for speed and performance using celery (works without them too)
+- Async tasks for speed and performance using celery_ (works without them too)
- Backup scripts can do backup of whole app and send it over scp to desired
location
- Setup project descriptions and info inside built in db for easy, non
@@ -58,16 +72,24 @@ RhodeCode uses `Semantic Versioning <http://semver.org/>`_
Summary page
-**Incoming**
+Incoming
+--------
-- code review based on hg-review (when it's stable)
-- git support (when vcs can handle it - almost there !)
-- commit based wikis
-- clonning from remote repositories into rhodecode (git/mercurial)
+- code review (probably based on hg-review)
+- git_ support (when vcs_ can handle it - it's almost there !)
+- commit based build in wiki system
+- clone points and cloning from remote repositories into rhodecode (git_ and mercurial_)
+- some cache optimizations
- other cools stuff that i can figure out (or You can help me figure out)
+License
+-------
+
+``rhodecode`` is released under GPL_ license.
+
+
Documentation
-=============
+-------------
**Installation:**
@@ -78,13 +100,18 @@ Documentation
setup
Other topics
-============
+------------
* :ref:`genindex`
* :ref:`search`
+.. _virtualenv: http://pypi.python.org/pypi/virtualenv
.. _python: http://www.python.org/
.. _django: http://www.djangoproject.com/
.. _mercurial: http://mercurial.selenic.com/
.. _subversion: http://subversion.tigris.org/
-.. _git: http://git-scm.com/ \ No newline at end of file
+.. _git: http://git-scm.com/
+.. _celery: http://celeryproject.org/
+.. _Sphinx: http://sphinx.pocoo.org/
+.. _GPL: http://www.gnu.org/licenses/gpl.html
+.. _vcs: http://pypi.python.org/pypi/vcs
diff --git a/docs/installation.rst b/docs/installation.rst
index 4854a3c7..d017dc91 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -6,12 +6,10 @@ Installation
``RhodeCode`` is written entirely in Python, but in order to use it's full
potential there are some third-party requirements. When RhodeCode is used
together with celery You have to install some kind of message broker,
-recommended one is rabbitmq to make the async tasks work.
-For installation instructions You can visit:
-http://ask.github.com/celery/getting-started/index.html.
+recommended one is rabbitmq_ to make the async tasks work.
Of course RhodeCode works in sync mode also, then You don't have to install
-any third party apps. Celery will give You large speed improvement when using
+any third party apps. Celery_ will give You large speed improvement when using
many big repositories. If You plan to use it for 2 or 3 small repositories, it
will work just fine without celery running.
@@ -26,6 +24,9 @@ Requirements for Celery
- preferred is `RabbitMq <http://www.rabbitmq.com/>`_
- possible other is `Redis <http://code.google.com/p/redis/>`_
+For installation instructions You can visit:
+http://ask.github.com/celery/getting-started/index.html
+It's very nice tutorial how to start celery_ with rabbitmq_
Install from Cheese Shop
------------------------
@@ -36,7 +37,7 @@ Easiest way to install ``rhodecode`` is to run::
Or::
- pip install rhodecode
+ pip install rhodecode
If you prefer to install manually simply grab latest release from
http://pypi.python.org/pypi/rhodecode, decompres archive and run::
@@ -44,52 +45,45 @@ http://pypi.python.org/pypi/rhodecode, decompres archive and run::
python setup.py install
-**Setting up the application**
-I recommend to run the RhodeCode in separate virtualenv.
-See http://pypi.python.org/pypi/virtualenv for more details.
+Step by step installation example
+---------------------------------
+
-- run `paster make-config RhodeCode production.ini` make specific application
- config,
-- run `paster setup-app production.ini` makes the database, and propagates it
- with default data, In this step You have to provide admin username and repositories
- location, it can be a new location or with existing ones in that case RhodeCode
- will scann all new found repos and put it into database.
-- run `paster runserver production.ini` runs the server.
+- Assuming You have installed virtualenv_ create one using. The `--no-site-packages`
+ will make sure non of Your system libs are linked with this virtualenv_
+::
-**STEP BY STEP EXAMPLE INSTRUCTION**
+ virtualenv --no-site-packages /var/www/rhodecode-venv
+- this will install new virtualenv_ into `/var/www/rhodecode-venv`.
+- Activate the virtualenv_ by running
-- Assuming You have setup virtualenv create one using
- `virtualenv --no-site-packages /var/www/rhodecode-venv`
- this will install new virtual env into /var/www/rhodecode-venv.
-- Activate the virtualenv by running
- `source activate /var/www/rhodecode-venv/bin/activate`
+::
+
+ source activate /var/www/rhodecode-venv/bin/activate
+
- Make a folder for rhodecode somewhere on the filesystem for example
- /var/www/rhodecode
-- Run easy_install rhodecode, this will install rhodecode together with pylons
+
+::
+
+ mkdir /var/www/rhodecode
+
+
+- Run this command to install rhodecode
+
+::
+
+ easy_install rhodecode
+
+- this will install rhodecode together with pylons
and all other required python libraries
-- Run `paster make-config RhodeCode production.ini` in order to install
- the application config.
-- Run `paster setup-app production.ini` it should create all needed tables
- and an admin account. Also make sure You specify correct path to repositories.
- You can either use a new location of one with already exising ones. RhodeCode
- will simply add all new found repositories to it's database.
-- Remember that the given path for mercurial repositories must be write
- accessible for the application. It's very important since RhodeCode web interface
- will work even without such an access but, when trying to do a push it's eventually
- failed with permission denied.
-- Run `paster serve production.ini`
- the app should be available at the 127.0.0.1:5000
-- Use admin account you created to login.
-- Default permissions on each repository is read, and owner is admin. So remember
- to update these.
-
-- All needed configs are inside rhodecode sources ie. celeryconfig.py,
- development.ini, production.ini You can configure the email, ports, loggers,
- workers from there.
-- For full text search You can either put crontab entry for
- `python /var/www/rhodecode/rhodecode/lib/indexers/daemon.py incremental <path_to_repos>`
- or run indexer from admin panel. This will scann the repos given in the
- application setup or given path for daemon.py and each scann in incremental
- mode will scan only changed files. \ No newline at end of file
+
+
+You can now proceed to :ref:`setup`
+
+.. _virtualenv: http://pypi.python.org/pypi/virtualenv
+.. _python: http://www.python.org/
+.. _mercurial: http://mercurial.selenic.com/
+.. _celery: http://celeryproject.org/
+.. _rabbitmq: http://www.rabbitmq.com/ \ No newline at end of file
diff --git a/docs/setup.rst b/docs/setup.rst
index 1fb4100f..52bacfa4 100644
--- a/docs/setup.rst
+++ b/docs/setup.rst
@@ -4,13 +4,118 @@ Setup
=====
+Setting up the application
+--------------------------
+
+::
+
+ paster make-config RhodeCode production.ini
+
+- This will create `production.ini` config inside the directory
+ this config contain various settings for rhodecode, e.g port, email settings
+ static files, cache and logging.
+
+::
+
+ paster setup-app production.ini`
+
+- This command will create all needed tables and an admin account.
+ When asked for a path You can either use a new location of one with already
+ existing ones. RhodeCode will simply add all new found repositories to
+ it's database. Also make sure You specify correct path to repositories.
+- Remember that the given path for mercurial_ repositories must be write
+ accessible for the application. It's very important since RhodeCode web interface
+ will work even without such an access but, when trying to do a push it'll
+ eventually faile with permission denied errors.
+- Run
+
+::
+
+ paster serve production.ini
+
+- This command runs the rhodecode server the app should be available at the
+ 127.0.0.1:5000. This ip and port is configurable via the production.ini
+ file created in previos step
+- Use admin account you created to login.
+- Default permissions on each repository is read, and owner is admin. So
+ remember to update these.
+
- All needed configs are inside rhodecode sources ie. celeryconfig.py,
development.ini, production.ini You can configure the email, ports, loggers,
workers from there.
-- For full text search You can either put crontab entry for
- `python /var/www/rhodecode/rhodecode/lib/indexers/daemon.py incremental <path_to_repos>`
- or run indexer from admin panel. This will scann the repos given in the
- application setup or given path for daemon.py and each scann in incremental
- mode will scan only changed files.
-TODO: write that ! \ No newline at end of file
+Setting up Whoosh
+-----------------
+
+- For full text search You can either put crontab entry for
+
+::
+
+ python /var/www/rhodecode/rhodecode/lib/indexers/daemon.py incremental <put_here_path_to_repos>
+
+When using incremental mode whoosh will check last modification date of each file
+and add it to reindex if newer file is available. Also indexing daemon checks
+for removed files and removes them from index. Sometime You might want to rebuild
+index from scrach, in admin pannel You can check `build from scratch` flag
+and in standalone daemon You can pass `full` instead on incremental to build
+remove previos index and build new one.
+
+Nginx virtual host example
+--------------------------
+
+Sample config for nginx::
+
+ server {
+ listen 80;
+ server_name hg.myserver.com;
+ access_log /var/log/nginx/rhodecode.access.log;
+ error_log /var/log/nginx/rhodecode.error.log;
+ location / {
+ root /var/www/rhodecode/rhodecode/public/;
+ if (!-f $request_filename){
+ proxy_pass http://127.0.0.1:5000;
+ }
+ #this is important for https !!!
+ proxy_set_header X-Url-Scheme $scheme;
+ include /etc/nginx/proxy.conf;
+ }
+ }
+
+Here's the proxy.conf. It's tunned so it'll not timeout on long
+pushes and also on large pushes::
+
+ proxy_redirect off;
+ proxy_set_header Host $host;
+ proxy_set_header X-Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header Proxy-host $proxy_host;
+ client_max_body_size 400m;
+ client_body_buffer_size 128k;
+ proxy_buffering off;
+ proxy_connect_timeout 3600;
+ proxy_send_timeout 3600;
+ proxy_read_timeout 3600;
+ proxy_buffer_size 8k;
+ proxy_buffers 8 32k;
+ proxy_busy_buffers_size 64k;
+ proxy_temp_file_write_size 64k;
+
+Also when using root path with nginx You might set the static files to false
+in production.ini file::
+
+ [app:main]
+ use = egg:rhodecode
+ full_stack = true
+ static_files = false
+ lang=en
+ cache_dir = %(here)s/data
+
+To not have the statics served by the application.
+
+
+.. _virtualenv: http://pypi.python.org/pypi/virtualenv
+.. _python: http://www.python.org/
+.. _mercurial: http://mercurial.selenic.com/
+.. _celery: http://celeryproject.org/
+.. _rabbitmq: http://www.rabbitmq.com/ \ No newline at end of file